{"version":3,"file":"main.98af282e23ae42862992.bundle.mjs","mappings":"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","sources":["webpack://socialUX/./consts.js","webpack://socialUX/./context.js","webpack://socialUX/./context/eventBus.js","webpack://socialUX/./context/intersectionObserverProvider.js","webpack://socialUX/./elementChangeListener.js","webpack://socialUX/./views/assemblerSlideshowLoader.js","webpack://socialUX/./views/hamburgerMenu.js","webpack://socialUX/./views/products/loader.js","webpack://socialUX/./views/keepReading/loader.js","webpack://socialUX/./views/liveBlog/loader.js","webpack://socialUX/./views/userBehavior/loader.js","webpack://socialUX/./views/mediaLazyLoad/lazyFacebook.js","webpack://socialUX/./views/mediaLazyLoad/lazyIframe.js","webpack://socialUX/./utils/getMaxWidthAndHeight.js","webpack://socialUX/./views/mediaLazyLoad/lazyImage.js","webpack://socialUX/./views/mediaLazyLoad/utils.js","webpack://socialUX/./views/mediaLazyLoad/lazyInstagram.js","webpack://socialUX/./views/mediaLazyLoad/lazyReddit.js","webpack://socialUX/./views/mediaLazyLoad/lazyTwitter.js","webpack://socialUX/./views/mediaLazyLoad/lazyTikTok.js","webpack://socialUX/./views/mediaLazyLoad/lazyBrightcove.js","webpack://socialUX/./views/mediaLazyLoad/viewportStyle.js","webpack://socialUX/./views/mediaLazyLoad/lazyImgur.js","webpack://socialUX/./views/loginSignup/loader.js","webpack://socialUX/./views/nativeTalks/loader.js","webpack://socialUX/./views/scrollTriggerLoader.js","webpack://socialUX/./views/doubleStickyLoader.js","webpack://socialUX/./views/searchForm.js","webpack://socialUX/./stats/ga4Stats.js","webpack://socialUX/./stats/nativeStats.js","webpack://socialUX/./utils/postJsonData.js","webpack://socialUX/./utils/postStatus.js","webpack://socialUX/./stats/parselyStats.js","webpack://socialUX/./stats/metadata.js","webpack://socialUX/./stats/statsTracker.js","webpack://socialUX/./stats/index.js","webpack://socialUX/./views/subscriptionFormLoader.js","webpack://socialUX/./views/tabs/loader.js","webpack://socialUX/./views/videoPlayerLoader.js","webpack://socialUX/./views/uplynk/loader.js","webpack://socialUX/./views/assemblerUpDownVoting/loader.js","webpack://socialUX/./views/followButton/loader.js","webpack://socialUX/./views/likeButton/loader.js","webpack://socialUX/./views/folders/foldersButton/loader.js","webpack://socialUX/./views/folders/foldersPostManager/loader.js","webpack://socialUX/./views/mediaLazyLoad/lazyScript.js","webpack://socialUX/./utils/createIdleQueue.js","webpack://socialUX/./lib/sliderLoader.js","webpack://socialUX/./utils/onPageIdle.js","webpack://socialUX/./utils/loadFontFace.js","webpack://socialUX/./adLoader/index.js","webpack://socialUX/./app.js","webpack://socialUX/./views/scrollParticleIntoView.js","webpack://socialUX/./views/mediaLazyLoad/index.js","webpack://socialUX/./views/stickyHeader.js","webpack://socialUX/./views/shares/postShares.js","webpack://socialUX/./views/pageFetch/loader.js","webpack://socialUX/./views/shares/bodyImageSharesLoader.js","webpack://socialUX/./views/changeUrlOnScrollLoader.js","webpack://socialUX/./views/floatingElementsLoader.js","webpack://socialUX/./views/gdprCookieAcceptHandler.js","webpack://socialUX/./stats/resumableTimer.js","webpack://socialUX/./stdlib/index.js","webpack://socialUX/./ldDebugger/loader.js","webpack://socialUX/./index.js","webpack://socialUX/./legacyMain.js","webpack://socialUX/./lib/core/functional/call.js","webpack://socialUX/./lib/core/functional/curry.js","webpack://socialUX/./lib/core/functional/fromNullable.js","webpack://socialUX/./lib/core/functional/noop.js","webpack://socialUX/./lib/core/functional/partial.js","webpack://socialUX/./lib/core/functional/pipe.js","webpack://socialUX/./lib/core/functional/thunk.js","webpack://socialUX/./renderer/loadRenderer.js","webpack://socialUX/./transport/fullBootstrap.js","webpack://socialUX/./transport/utils.js","webpack://socialUX/./upgradeToLoggedInLoader.js","webpack://socialUX/./utils/callbackRunner.js","webpack://socialUX/./utils/connectionHandler.js","webpack://socialUX/./utils/createIdleScrollListener.js","webpack://socialUX/./utils/createSmartIntersector.js","webpack://socialUX/./utils/getDevice.js","webpack://socialUX/./utils/htmlDecode.js","webpack://socialUX/./utils/idleCallback.js","webpack://socialUX/./utils/initClickHandler.js","webpack://socialUX/./utils/loadContextData.js","webpack://socialUX/./utils/loadExternalResource.js","webpack://socialUX/./utils/loadExternalScript.js","webpack://socialUX/./utils/loadExternalStylesheet.js","webpack://socialUX/./utils/loadModuleOnElement.js","webpack://socialUX/./utils/loadModuleOnScroll.js","webpack://socialUX/./utils/moduleLoader.js","webpack://socialUX/./utils/onPostLcp.js","webpack://socialUX/./utils/raiseNotification.js","webpack://socialUX/./utils/simpleQueue.js","webpack://socialUX/./utils/spawnTask.js","webpack://socialUX/./utils/translateParamsToObject.js","webpack://socialUX/./views/informer/loader.js","webpack://socialUX/./views/liveBlog/postParticleLoader.js","webpack://socialUX/./views/mediaLazyLoad/_mediaPool.js","webpack://socialUX/./views/mediaLazyLoad/jwplayer/loader.js","webpack://socialUX/./views/shares/common.js","webpack://socialUX/./node_modules/web-vitals/dist/web-vitals.js"],"sourcesContent":["export const URL_CHANGE_EVENT = \"url:change\";\nexport const URL_SCROLLED_EVENT = \"url:scrolled\";\nexport const PAGE_LOAD_EVENT = \"page:loaded\";\nexport const READ_ARTICLE_EVENT = \"read-article:click\";\nexport const POST_SHARED_EVENT = \"post:shared\";\n","import eventBus from \"./context/eventBus\";\nimport intersectionObserverProvider from \"./context/intersectionObserverProvider\";\nimport translateParamsToObject from \"./utils/translateParamsToObject\";\n\nlet CONTEXT = null;\n\nexport default function getContext() {\n    if (CONTEXT == null) {\n        CONTEXT = {\n            intersectionObserverProvider,\n            eventBus,\n            settings: window.REBELMOUSE_BOOTSTRAP_DATA,\n            pathParams: translateParamsToObject(window.location.search),\n        };\n    }\n\n    return CONTEXT;\n}\n","const handlersByEvent = {};\n\nfunction publish(event, data) {\n    const subscribers = handlersByEvent[event] || [];\n    subscribers.forEach(subscriber => {\n        subscriber(data);\n    });\n}\n\nfunction subscribe(event, handler) {\n    handlersByEvent[event] = handlersByEvent[event] || [];\n    handlersByEvent[event].push(handler);\n}\n\nexport default {\n    subscribe,\n    publish\n};\n","import elementChangeListener from \"../elementChangeListener\";\n\nfunction addTask(task) {\n    task._reportedIntersections = task._reportedIntersections || 0;\n    task.threshold = task.threshold || 0;\n    task.finished = task.finished || new Set([]);\n\n    function handleNonIntersection(entry) {\n        if (task.onNonIntersect) {\n            task.onNonIntersect(entry);\n        }\n        const { target } = entry;\n\n        if (task.onBellowViewport || task.onAboveViewport) {\n            const { top } = target.getBoundingClientRect();\n            if (top < 0 && task.onAboveViewport) {\n                task.onAboveViewport(target);\n            }\n\n            if (top >= 0 && task.onBellowViewport) {\n                task.onBellowViewport(target);\n            }\n        }\n    }\n\n    function reportIntersection(entry) {\n        const { target } = entry;\n\n        if (!entry.isIntersecting) {\n            handleNonIntersection(entry);\n            return null;\n        }\n\n        if (task.firstOnly && task._reportedIntersections > 0) {\n            return null;\n        }\n\n        task._reportedIntersections++;\n\n        if (task.firstOnly) {\n            task.observer.disconnect();\n            task.mutationObserver.disconnect();\n        } else if (task.oneTime) {\n            task.observer.unobserve(target);\n            task.finished.add(target);\n        }\n\n        if (task.onIntersect) {\n            task.onIntersect(entry);\n        }\n    }\n\n    function entriesHandler(entries) {\n        entries.forEach(reportIntersection);\n    }\n\n    const rootMargin = task.rootMargin || `0px 0px ${task.threshold}px 0px`;\n    task.observer = new IntersectionObserver(task.entriesHandler || entriesHandler, {\n        rootMargin,\n    });\n\n    if (task.selector) {\n        task.mutationObserver = elementChangeListener(task.selector, (node) => {\n            if (!task.finished.has(node)) {\n                task.onAppear && task.onAppear(node);\n                task.observer.observe(node);\n            }\n        });\n    }\n\n    if (task.rawNodes) {\n        task.rawNodes.forEach((element) => {\n            task.observer.observe(element);\n        });\n    }\n\n    return [task.observer, task.mutationObserver];\n}\n\nexport default {\n    addTask,\n};\n","import { waitUntilOpen } from \"./utils/spawnTask.js\";\n\nconst SELECTOR_MAP = new Map();\nlet MUTATION_OBSERVER = null;\nlet MUTATION_TIMER;\n\nfunction getMutationObserver() {\n    if (MUTATION_OBSERVER === null) {\n        MUTATION_OBSERVER = new MutationObserver(onMutationCallback);\n    }\n\n    return MUTATION_OBSERVER;\n}\n\nfunction removeState(selector, state) {\n    const states = SELECTOR_MAP.get(selector);\n    if (!states) {\n        return;\n    }\n\n    states.delete(state);\n\n    if (states.size === 0) {\n        SELECTOR_MAP.delete(selector);\n    }\n\n    if (SELECTOR_MAP.size === 0) {\n        getMutationObserver().disconnect();\n    }\n}\n\nfunction runSafeCallback(callback, node) {\n    function execute() {\n        callback(node);\n    }\n\n    waitUntilOpen().then(execute).catch(console.error);\n}\n\nfunction propagateNodeToSelector(selector, node) {\n    function propagator(state, _state, _set) {\n        const { oneTime, initializedNodes, callback, target } = state;\n\n        if (target && !target.contains(node)) {\n            return;\n        }\n\n        if (initializedNodes.has(node)) {\n            return;\n        }\n\n        runSafeCallback(callback, node);\n\n        if (oneTime) {\n            removeState(selector, state);\n            return;\n        }\n\n        initializedNodes.add(node);\n    }\n\n    return propagator;\n}\n\nfunction onEachSelector(states, selector, _map) {\n    function handleNode(node) {\n        states.forEach(propagateNodeToSelector(selector, node));\n    }\n\n    const nodes = document.querySelectorAll(selector);\n    nodes.forEach(handleNode);\n}\n\nfunction onMutationCallback() {\n    if (MUTATION_TIMER) {\n        clearTimeout(MUTATION_TIMER);\n    }\n\n    function onceUpdatesAreDone() {\n        MUTATION_TIMER = null;\n        clearTimeout(MUTATION_TIMER);\n        SELECTOR_MAP.forEach(onEachSelector);\n    }\n\n    MUTATION_TIMER = setTimeout(onceUpdatesAreDone, 2);\n}\n\nfunction addToObserver(selector, state) {\n    if (!SELECTOR_MAP.has(selector)) {\n        SELECTOR_MAP.set(selector, new Set());\n    }\n\n    const states = SELECTOR_MAP.get(selector);\n    states.add(state);\n\n    const mutationObserver = getMutationObserver();\n\n    if (SELECTOR_MAP.size === 1) {\n        mutationObserver.observe(document.body, {\n            childList: true,\n            subtree: true,\n        });\n    }\n}\n\nexport default function createElementChangeListener(selector, callback, oneTime, target) {\n    const initializedNodes = new Set([]);\n\n    const state = {\n        oneTime,\n        initializedNodes,\n        callback,\n        target,\n    };\n\n    let reported = false;\n\n    const root = target || document;\n\n    root.querySelectorAll(selector).forEach((node) => {\n        if (oneTime && reported) {\n            return;\n        }\n        reported = true;\n        runSafeCallback(callback, node);\n        initializedNodes.add(node);\n    });\n\n    function disconnect() {\n        removeState(selector, state);\n    }\n\n    if (!oneTime || !reported) {\n        addToObserver(selector, state);\n    }\n\n    return {\n        disconnect,\n        observe() {\n            throw new Error(\"Unallowed use of internal mutation observer\");\n        },\n        takeRecords() {\n            return getMutationObserver().takeRecords();\n        },\n    };\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst slideshowSelector = \".listicle-slideshow\";\nconst fullscreenSlideshowSelector = \".js--fullscreen-preview\";\nconst paginationSelector = \".js-listicle-switch-page\";\nconst votingSelector = \".listicle-voting\";\n\nconst slideshowLoader = () => import(\"./assemblerSlideshow\");\nconst fullScreenSlideshowLoader = () => import(\"./assemblerFullScreenSlideshow\");\nconst paginationLoader = () => import(\"./assemblerPagination\");\nconst votingLoader = () => import(\"./assemblerVoting\");\n\nexport default function assemblerSlideshowLoader(context) {\n    loadModuleOnElement(slideshowSelector, slideshowLoader, context);\n    loadModuleOnElement(fullscreenSlideshowSelector, fullScreenSlideshowLoader, context);\n    loadModuleOnElement(paginationSelector, paginationLoader, context);\n    loadModuleOnElement(votingSelector, votingLoader, context);\n\n    return context;\n}\n","import createElementChangeListener from \"../elementChangeListener\";\n\nconst MENU_OPENED_CLASS = \"menu-opened\";\nconst HAMBURGER_SELECTOR = \".rebelbar__menu-toggle\";\nconst MENU_OVERLAYSELECTOR = \".menu-overlay\";\n\nfunction toggleMenu() {\n    document.body.classList.toggle(MENU_OPENED_CLASS);\n}\n\nfunction onHamburgerToggler(el) {\n    el.addEventListener(\"click\", toggleMenu);\n}\n\nfunction removeMenu() {\n    document.body.classList.remove(MENU_OPENED_CLASS);\n}\n\nexport default function initHamburgerMenu(context) {\n    createElementChangeListener(HAMBURGER_SELECTOR, onHamburgerToggler);\n    const menuOverlay = document.querySelector(MENU_OVERLAYSELECTOR);\n    if (menuOverlay) {\n        menuOverlay.addEventListener(\"click\", removeMenu);\n    }\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\n\nexport default function initProductsLoader(context) {\n    loadModuleOnElement('img[usemap ^=\"#image-map-\"]', loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\n\nexport default function keepReadingLoader(context) {\n    loadModuleOnElement(\".js-keep-reading\", loader, context, true);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst moduleLoader = () => import(\"./section\");\n\nexport default function loader(context) {\n    loadModuleOnElement(\".live-section-update\", moduleLoader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst moduleLoader = () => import(\"./userBehaviorContent\");\n\nexport default function loader(context) {\n    loadModuleOnElement(\".rm-user-behavior-script\", moduleLoader, context);\n    return context;\n}","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        function onLoad() {\n            mediaPool.release(resourceID);\n        }\n        const node = entry.target;\n        window.FB.XFBML.parse(node.parentElement, onLoad);\n    }\n\n    mediaPool.request(1500).then(onFreeSlot);\n}\n\nfunction onDependencyLoad() {\n    const bootstrap = window.REBELMOUSE_BOOTSTRAP_DATA;\n    window.FB.init({\n        appId: bootstrap.fbId,\n        version: bootstrap.fbAppVersion,\n        status: true,\n        cookie: true,\n    });\n}\n\nexport default function loadLazyFacebook(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        onDependencyLoad,\n        initialThreshold: 500,\n        selector: \".fb-post, .fb-page, .fb-video, .fb-comments, .fb-like\",\n        dependencySrc: \"https://connect.facebook.net/en_US/sdk.js\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        function onLoad() {\n            mediaPool.release(resourceID);\n        }\n        const { target } = entry;\n        target.addEventListener(\"load\", onLoad);\n        const { runnerSrc } = target.dataset;\n        if (runnerSrc) {\n            target.src = runnerSrc;\n            delete target.dataset.runnerSrc;\n        }\n    }\n\n    mediaPool.request(1500).then(onFreeSlot);\n}\n\nexport default function loadLazyIFrames(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        selector: \"iframe[data-runner-src]\",\n        initialThreshold: 500,\n    });\n}\n","const possibleContainers = [\n    \".rm-container-resized\",\n    \".rebellt-item\",\n    \".body-description\",\n    \"article\",\n];\n\nexport function findAppropiateParent(element) {\n    function testSelector(foundElement, selector) {\n        if (foundElement) {\n            return foundElement;\n        }\n\n        const elementToTest = element.closest(selector);\n\n        if (!elementToTest) {\n            return null;\n        }\n\n        if (elementToTest.dataset && elementToTest.dataset.rmCalcWidth) {\n            return elementToTest;\n        }\n\n        const elWidth = elementToTest.offsetWidth;\n\n        if (elWidth > 0) {\n            elementToTest.dataset.rmCalcWidth = elWidth;\n            return elementToTest;\n        } else {\n            return null;\n        }\n    }\n\n    return possibleContainers.reduce(testSelector, null);\n}\n\nexport default function getMaxWidthAndHeight(width, height, containerWidth, containerHeight) {\n    if (containerWidth > width) {\n        return { maxWidth: width, maxHeight: height };\n    }\n\n    let maxWidth = containerWidth;\n    let maxHeight = parseInt((maxWidth * height) / width, 10);\n    if (containerHeight && maxHeight > containerHeight) {\n        maxHeight = containerHeight;\n        maxWidth = parseInt((maxHeight * width) / height, 10);\n    }\n    return { maxWidth, maxHeight };\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport { getConnectionType } from \"../../utils/connectionHandler\";\nimport translateParamsToObject from \"../../utils/translateParamsToObject\";\nimport {\n    default as getMaxWidthAndHeight,\n    findAppropiateParent,\n} from \"../../utils/getMaxWidthAndHeight\";\nimport createElementChangeListener from \"../../elementChangeListener\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction pairToQueryParam([key, value]) {\n    return `${key}=${value}`;\n}\n\nfunction objectToQS(obj) {\n    return `?${Object.entries(obj).map(pairToQueryParam).join(\"&\")}`;\n}\n\nconst qualityToConnectionMap = {\n    \"4g\": window.REBELMOUSE_BOOTSTRAP_DATA.engine.image_quality_level || 80,\n    \"2g\": 60,\n    \"slow-2g\": 60,\n    \"3g\": 75,\n};\n\nfunction getPixelDensity() {\n    let devicePixelRatio = window.devicePixelRatio ? parseInt(window.devicePixelRatio, 10) : 1;\n    if (undefined !== window.REBELMOUSE_BOOTSTRAP_DATA.engine.override_device_pixel_ratio) {\n        devicePixelRatio = parseInt(window.REBELMOUSE_BOOTSTRAP_DATA.engine.override_device_pixel_ratio, 10);\n    }\n    return Math.min(3, Math.max(devicePixelRatio, 1));\n}\n\nfunction getAppropiateQuality() {\n    return qualityToConnectionMap[getConnectionType()];\n}\n\nfunction getImageParam(paramName, element, queryParams) {\n    let value = queryParams[paramName];\n    const param = element.getAttribute(paramName);\n    if (param && !isNaN(param)) {\n        value = param;\n    } else if (\"dataset\" in element && paramName in element.dataset) {\n        value = element.dataset[paramName];\n    }\n    return value && parseInt(value, 10);\n}\n\nfunction getOptimizedSrc(ogSrc, element, containerWidth, containerHeight) {\n    const maxContainerWidth = parseInt(containerWidth, 10);\n    const maxContainerHeight = containerHeight ? parseInt(containerHeight, 10) : null;\n    const src = new URL(ogSrc);\n    const queryParams = translateParamsToObject(src.search);\n\n    const elWidth = getImageParam(\"width\", element, queryParams);\n    const elHeight = getImageParam(\"height\", element, queryParams);\n\n    const { maxWidth, maxHeight } = getMaxWidthAndHeight(\n        elWidth,\n        elHeight,\n        maxContainerWidth,\n        maxContainerHeight\n    );\n\n    const scale = getPixelDensity();\n    const params = { ...queryParams, quality: getAppropiateQuality() };\n\n    if (\"coordinates\" in queryParams && \"height\" in queryParams) {\n        params.coordinates = queryParams.coordinates;\n        params.height = parseInt(maxHeight * scale);\n    }\n\n    if (\"width\" in queryParams) {\n        params.width = parseInt(maxWidth * scale);\n    }\n\n    if (Object.keys(params).length > 1) {\n        const queryString = objectToQS(params);\n        src.search = queryString;\n        return src.href;\n    } else {\n        return null;\n    }\n}\n\nfunction readjustImages(element) {\n    const closestContainer = findAppropiateParent(element);\n\n    if (!closestContainer) {\n        return;\n    }\n    const imageSrc = getOptimizedSrc(\n        element.dataset.runnerSrc,\n        element,\n        closestContainer.dataset.rmCalcWidth || closestContainer.offsetWidth\n    );\n\n    if (imageSrc) {\n        element.dataset.runnerSrc = imageSrc;\n        element.dataset.adjustedSrc = true;\n    }\n}\n\nfunction releasePool(resourceID) {\n    return function onLoad() {\n        mediaPool.release(resourceID);\n    };\n}\n\nfunction lazyImageHandler(entry) {\n    function onFreeSlot(resourceID) {\n        const node = entry.target;\n        if (!node.dataset.adjustedSrc) {\n            readjustImages(node);\n        }\n        const url = node.dataset.runnerSrc;\n        const onLoad = releasePool(resourceID);\n        node.addEventListener(\"load\", onLoad);\n        node.src = url;\n        node.removeAttribute(\"data-runner-src\");\n        node.removeAttribute(\"type\");\n    }\n\n    mediaPool.request(1000).then(onFreeSlot);\n}\n\nfunction backgroundImageHandler(entry) {\n    function onFreeSlot(resourceID) {\n        const node = entry.target;\n        let url = node.dataset.runnerImgHd;\n\n        if (window.REBELMOUSE_BOOTSTRAP_DATA.engine.lazyLoadShortcodeImages) {\n            const imageSrc = getOptimizedSrc(url, node, node.offsetWidth, node.offsetHeight);\n            if (imageSrc) {\n                url = imageSrc;\n            }\n        }\n\n        const onLoad = releasePool(resourceID);\n        const img = new Image();\n        img.addEventListener(\"load\", onLoad);\n        img.src = url;\n        node.style.backgroundImage = `url(${url})`;\n    }\n\n    mediaPool.request(1000).then(onFreeSlot);\n}\n\nconst treshholdCalculator = {\n    \"4g\": function on4G() {\n        return 300;\n    },\n    \"3g\": function on3G() {\n        return 700;\n    },\n    \"2g\": function on2G() {\n        return 900;\n    },\n    \"slow-2g\": function onSlow2G() {\n        return 900;\n    },\n};\n\nexport default function loadLazyImages(intersectionObserverProvider) {\n    if (window.REBELMOUSE_BOOTSTRAP_DATA.engine.lazyLoadShortcodeImages) {\n        createElementChangeListener(\"img[data-runner-src]\", readjustImages);\n    }\n\n    createSmartIntersector(intersectionObserverProvider, {\n        treshholdCalculator,\n        initialThreshold: 50,\n        selector: \"img[data-runner-src]\",\n        onIntersect: lazyImageHandler,\n    });\n\n    createSmartIntersector(intersectionObserverProvider, {\n        treshholdCalculator,\n        initialThreshold: 50,\n        selector: \"[data-runner-img-hd]\",\n        onIntersect: backgroundImageHandler,\n    });\n}\n","export function controlSpacer(embed, container) {\n    if (!container || !embed) {\n        return false;\n    }\n\n    const { bottom: embedBottom, height: embedHeight } = embed.getBoundingClientRect();\n    const { bottom: containerBottom, height: containerHeight } = container.getBoundingClientRect();\n\n    if (embedBottom < 0 && containerBottom < 0) {\n        return true;\n    }\n\n    if (embedHeight > containerHeight + 10) {\n        container.classList.add(\"rm-off\");\n        return false;\n    } else {\n        return true;\n    }\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst instagramClass = \"instagram-media\";\nconst lazyInstagramClass = \"lazy-instagram-media\";\n\nconst activeIGRequests = [];\nlet oldHandler;\n\nfunction releaseIGResource(frame) {\n    const igEmbed = document.getElementById(frame.frameId);\n    igEmbed.addEventListener(\"load\", function () {\n        const container = igEmbed.closest(\".rm-embed-container.rm-loading\");\n        if (container) {\n            container.classList.remove(\"rm-loading\");\n            container.classList.add(\"rm-loaded\");\n            setTimeout(() => {\n                controlSpacer(igEmbed, container);\n            }, 500);\n        }\n    });\n\n    if (oldHandler) {\n        oldHandler(frame);\n    }\n    const resourceID = activeIGRequests.shift();\n    if (resourceID) {\n        mediaPool.release(resourceID);\n    }\n}\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        entry.target.classList.add(instagramClass);\n        entry.target.classList.remove(lazyInstagramClass);\n        window.instgrm.Embeds.process();\n        activeIGRequests.push(resourceID);\n    }\n    mediaPool.request(1700).then(onFreeSlot);\n}\n\nfunction invalidate(element) {\n    element.classList.remove(instagramClass);\n    element.classList.add(lazyInstagramClass);\n}\n\nfunction beforeDependencyLoad() {\n    document.querySelectorAll(\"blockquote.instagram-media\").forEach(invalidate);\n}\n\nexport default function loadLazyInstagram(intersectionObserverProvider) {\n    if (window.__igEmbedLoaded) {\n        oldHandler = window.__igEmbedLoaded;\n    }\n    window.__igEmbedLoaded = releaseIGResource;\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        beforeDependencyLoad,\n        onAppear: invalidate,\n        initialThreshold: 300,\n        selector: \"blockquote.instagram-media,blockquote.lazy-instagram-media\",\n        dependencySrc: \"https://www.instagram.com/embed.js\",\n    });\n}\n","import createSmartIntersector from '../../utils/createSmartIntersector';\n\nfunction onIntersect(){}\n\nexport default function loadLazyReddit(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        initialThreshold: 500,\n        dependencySrc: \"https://embed.redditmedia.com/widgets/platform.js\",\n        selector: \"blockquote.reddit-card\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst activeTwitterRequests = [];\n\nfunction releaseTweetResource(event) {\n    const resourceID = activeTwitterRequests.shift();\n    if (resourceID) {\n        mediaPool.release(resourceID);\n    }\n    const container = event.target.closest(\".rm-embed-container.rm-loading\");\n    if (container) {\n        container.classList.remove(\"rm-loading\");\n        container.classList.add(\"rm-loaded\");\n        if (controlSpacer(event.target, container)) {\n            const iframe = event.target.querySelector(\"iframe\");\n            iframe.style.height = `${container.getBoundingClientRect().height}px`;\n        }\n    }\n}\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        let tweet = entry.target;\n\n        if (tweet.matches(\".rm-embed-twitter\")) {\n            tweet = tweet.querySelector(\"blockquote.twitter-custom-tweet\");\n        }\n\n        if (tweet.dataset.loading) {\n            mediaPool.release(resourceID);\n            return;\n        }\n\n        if (!tweet.dataset.twitterTweetId) {\n            tweet.dataset.twitterTweetId = tweet.dataset.lazyTweetId;\n        }\n\n        tweet.dataset.loading = true;\n\n        activeTwitterRequests.push(resourceID);\n        tweet.classList.add(\"twitter-tweet\");\n        window.twttr.widgets.load(tweet.parentElement);\n    }\n\n    mediaPool.request(1200).then(onFreeSlot);\n}\n\nfunction onDependencyLoad() {\n    twttr.ready(function onTwitterReady() {\n        twttr.events.bind(\"rendered\", releaseTweetResource);\n    });\n}\n\nfunction invalidate(element) {\n    element.classList.remove(\"twitter-tweet\");\n    element.dataset.lazyTweetId = element.dataset.twitterTweetId;\n    delete element.dataset.twitterTweetId;\n}\n\nfunction beforeDependencyLoad() {\n    document.querySelectorAll(\"blockquote.twitter-custom-tweet\").forEach(invalidate);\n}\n\nexport default function loadLazyTwitter(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        onDependencyLoad,\n        beforeDependencyLoad,\n        selector: \".rm-embed-twitter,blockquote.twitter-custom-tweet\",\n        dependencySrc: \"https://platform.twitter.com/widgets.js\",\n        initialThreshold: 400,\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst TIKTOK_CLASS = \"tiktok-embed\";\nconst LAZY_TIKTOK_CLASS = \"tiktok_lazy_shortcode\";\n\nfunction waitForMilis(miliseconds) {\n    function resolver(resolve) {\n        setTimeout(resolve, miliseconds);\n    }\n\n    return new Promise(resolver);\n}\n\nasync function getTiktokLib(attemps) {\n    console.log(attemps);\n    if (attemps < 0) {\n        return false;\n    }\n\n    if (window.tiktokEmbed && \"lib\" in window.tiktokEmbed) {\n        return window.tiktokEmbed.lib;\n    }\n\n    await waitForMilis(100);\n\n    return getTiktokLib(--attemps);\n}\n\nfunction onIntersect(entry) {\n    const { target } = entry;\n\n    async function onFreeSlot(resourceID) {\n        function releaseTiktokResource() {\n            mediaPool.release(resourceID);\n        }\n\n        function handleGracefulLoad() {\n            const container = target.closest(\".rm-embed-container.rm-loading\");\n            if (!container) {\n                return;\n            }\n            container.classList.remove(\"rm-loading\");\n            container.classList.add(\"rm-loaded\");\n            setTimeout(() => {\n                controlSpacer(target, container);\n            }, 1500);\n        }\n\n        const tiktokLib = await getTiktokLib(50);\n        target.classList.add(TIKTOK_CLASS);\n        target.classList.remove(LAZY_TIKTOK_CLASS);\n\n        if (tiktokLib) {\n            tiktokLib.render([target]).then(releaseTiktokResource).then(handleGracefulLoad);\n        } else {\n            releaseTiktokResource();\n        }\n    }\n    mediaPool.request(1700).then(onFreeSlot);\n}\n\nexport default function loadLazyReddit(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        initialThreshold: 400,\n        selector: \".tiktok_lazy_shortcode\",\n        dependencySrc: \"https://www.tiktok.com/embed.js\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\r\nimport loadExternalScript from \"../../utils/loadExternalScript\";\r\nimport * as mediaPool from \"./_mediaPool\";\r\n\r\nfunction makeScriptUrl(account, player) {\r\n    return `https://players.brightcove.net/${account}/${player}_default/index.min.js`;\r\n}\r\n\r\nfunction onIntersect(entry) {\r\n    const { target } = entry;\r\n    const { account, player } = target.dataset;\r\n\r\n    const scriptUrl = makeScriptUrl(account, player);\r\n\r\n    function onFreeSlot(resourceID) {\r\n        function release() {\r\n            mediaPool.release(resourceID);\r\n        }\r\n\r\n        function onScriptLoad() {\r\n            const player = bc(target);\r\n            player.on(\"loadedmetadata\", release);\r\n        }\r\n\r\n        loadExternalScript(scriptUrl, onScriptLoad);\r\n    }\r\n\r\n    mediaPool.request(1500).then(onFreeSlot);\r\n}\r\n\r\nexport default function lazyBrightcove(intersectionObserverProvider) {\r\n    createSmartIntersector(intersectionObserverProvider, {\r\n        onIntersect,\r\n        initialThreshold: 500,\r\n        dependencySrc: \"https://embed.redditmedia.com/widgets/platform.js\",\r\n        selector: \".rm-embed-brightcove video-js\",\r\n    });\r\n}\r\n","function onIntersect(_entry) {\n    const lazyStyle = document.querySelector(`script.lazy-style`);\n    if (!lazyStyle) {\n        return;\n    }\n    const style = document.createElement(\"style\");\n    style.type = \"text/css\";\n    style.classList.add(\"lazy-style\");\n    style.textContent = lazyStyle.textContent;\n    document.head.appendChild(style);\n    lazyStyle.remove();\n}\n\nexport default function viewportStyle(intersectionObserverProvider) {\n    intersectionObserverProvider.addTask({\n        onIntersect,\n        threshold: 500,\n        selector: \".viewport-css-anchor\",\n        firstOnly: true,\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction onIntersect(entry) {\n    function onFreeSlot() {\n        const embed = entry.target;\n        const container = embed.closest(\".rm-embed-container.rm-loading\");\n        if (container) {\n            container.classList.remove(\"rm-loading\");\n            container.classList.add(\"rm-loaded\");\n        }\n\n        if (!embed.dataset.id) {\n            embed.classList.add(\"imgur-embed-pub\");\n            embed.dataset.id = embed.dataset.lazyId;\n        }\n\n        if (\"createIframe\" in window.imgurEmbed) {\n            //Their library works in a weird way, while at this point of the script\n            //we've already loaded the imgurEmbed library, the createIframe\n            //function is added later, what's why we need this if statement\n            window.imgurEmbed.createIframe(embed.parentElement);\n        }\n    }\n\n    mediaPool.request(2000).then(onFreeSlot);\n}\n\nfunction invalidate(element) {\n    element.classList.remove(\"imgur-embed-pub\");\n    element.dataset.lazyId = element.dataset.id;\n    delete element.dataset.id;\n}\n\nfunction beforeDependencyLoad() {\n    document.querySelectorAll(\"blockquote.imgur-custom-embed-pub\").forEach(invalidate);\n}\n\nexport default function loadLazyImgur(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        beforeDependencyLoad,\n        selector: \"blockquote.imgur-custom-embed-pub\",\n        dependencySrc: \"https://s.imgur.com/min/embed.js\",\n        initialThreshold: 400,\n    });\n}\n","import createElementChangeListener from \"../../elementChangeListener\";\n\nconst v1Loader = () => import(\"./view\");\nconst v2Loader = () => import(\"./v2\");\n\nfunction loadSignupBoxOnElement(context, element) {\n    let loader;\n    if (element.children.length) {\n        loader = v2Loader;\n    } else {\n        loader = v1Loader;\n    }\n    loader().then((module) => module.default(context, element));\n}\n\nexport default function loginSignupLoader(context) {\n    function onElement(element) {\n        loadSignupBoxOnElement(context, element);\n    }\n\n    createElementChangeListener(\".login-signup-wrapper\", onElement);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./nativeTalk\");\n\nexport default function nativeTalkLoader(context) {\n    loadModuleOnElement(\".community-native-wrp\", loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst selector = \".js-scroll-trigger[data-toggle-class], .js-scroll-trigger[data-triggers]\";\nconst loader = () => import(\"./scrollTrigger\");\n\nexport default function scrollTriggerLoader(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\r\n\r\nconst selector = \".rm-top-sticky\";\r\n\r\nconst loader = () => import(\"./doubleSticky\");\r\n\r\nexport function showFlexibleSticky(stickyElement) {\r\n    loader().then(function onModule(module) {\r\n        module.showFlexibleSticky(stickyElement);\r\n    });\r\n}\r\n\r\nexport default function doubleStickyLoader(context) {\r\n    loadModuleOnElement(selector, loader, context);\r\n    return context;\r\n}\r\n","const ENTER_KEY = 13;\nconst SEARCH_OPENED_CLASS = \"show-search\";\n\nexport default function searchForm(context) {\n    const searchToggle = document.querySelector(\".search-form__open\");\n    const searchForm = document.querySelector(\".search-form\");\n\n    if (searchForm && searchToggle) {\n        searchToggle.addEventListener(\"click\", () => {\n            searchForm.classList.toggle(SEARCH_OPENED_CLASS);\n        });\n    }\n\n    document.addEventListener(\"keypress\", event => {\n        if (\n            event.keyCode === ENTER_KEY &&\n            document.body.classList.contains(SEARCH_OPENED_CLASS)\n        ) {\n            document.querySelector(\".search-form > form\").submit();\n        }\n    });\n\n    return context;\n}\n","export default { trackPageView, trackEvent, trackPostCardClick, trackPostShare };\n\nexport function waitForGtag(callback) {\n  if (typeof window.gtag === \"function\") {\n    callback(window.gtag);\n  } else {\n    setTimeout(() => {\n      waitForGtag(callback);\n    }, 100);\n  }\n}\n\nfunction trackGtagCall(customDimensions, callback) {\n  waitForGtag((gtag) => {\n    const dimensionsData = customDimensions\n      ? buildCustomDimensions(customDimensions)\n      : {};\n\n    callback(gtag, \"event\", \"send\", dimensionsData);\n  });\n}\n\nfunction trackPageView({ url, customDimensions, headline, id }) {\n  const titleElement = document.querySelector(`[elid=\"${id}\"] .headline`);\n\n  const params = {\n    page_title: titleElement ? titleElement.innerText : headline,\n    page_location: url,\n  };\n\n  trackGtagCall(customDimensions, (gtag, event, send, additionalInfo) =>\n    gtag(event, \"page_view\", { ...params, ...additionalInfo })\n  );\n}\n\nfunction trackEvent({ eventType, action, customDimensions }) {\n  trackGtagCall(customDimensions, (gtag, event, send, params) =>\n    gtag(event, action, { event_category: eventType, ...params })\n  );\n}\n\nfunction trackPostCardClick(context) {\n    trackEvent({\n        ...context,\n        eventType: 'post_interaction',\n        action: 'post_card_click',\n    });\n}\n\nfunction trackPostShare({ customDimensions, provider }) {\n    trackGtagCall(\n        customDimensions,\n        (gtag, event) => gtag(\n            event,\n            'share',\n            {\n                method: provider,\n                content_type: 'post',\n            }\n        )\n    )\n    trackEvent({\n        customDimensions,\n        eventType: 'share_click-post',\n        action: 'click-post',\n    });\n}\n\nfunction buildCustomDimensions(customDimensionsConfig) {\n  return Object.entries(customDimensionsConfig).reduce((acc, [iden, value]) => {\n    return { ...acc, ...{ [`dimension${iden}`]: value.toString() } };\n  }, {});\n}\n","import getDevice from \"../utils/getDevice\";\nimport postJsonData from \"../utils/postJsonData\";\n\nconst ENDPOINT_EXCEPTIONS = {\n    \"page-view\": \"user\",\n};\n\nconst SHORT_FULL_NAME_MAP = {\n    dp: \"post\",\n    pp: \"post\",\n    fp: \"section\",\n    sp: \"section\",\n    tp: \"tag\",\n};\n\nconst MAX_POST_RM_BEHAVIOR_LOCAL_STORAGE = 50;\nconst MAX_DAYS_RM_BEHAVIOR_LOCAL_STORAGE = 30;\n\nfunction getPageTypeName(shortName) {\n    return SHORT_FULL_NAME_MAP[shortName] || \"public\";\n}\n\nfunction getPageTypeFromResourceId() {\n    const [resource] = window.REBELMOUSE_BOOTSTRAP_DATA.resourceId.split(\"_\");\n    return getPageTypeName(resource);\n}\n\nfunction makeBaseParams() {\n    const device = getDevice();\n    const siteId = window.REBELMOUSE_BOOTSTRAP_DATA.site.id;\n    const roarId = window.REBELMOUSE_BOOTSTRAP_DATA.runner.id;\n    return {\n        site_id: siteId,\n        roar_id: roarId,\n        client: device !== \"tablet\" ? device : \"other\",\n        referrer: document.referrer,\n    };\n}\n\nfunction makeSimpleBaseParams(){\n    const site_id = window.REBELMOUSE_BOOTSTRAP_DATA.site.id;\n    return { site_id };\n}\n\nfunction sendStats(action, params, isSplitTesting) {\n    const statsVersion = 1;\n    const statsFormat = \"json\";\n\n    const requestParams = isSplitTesting ? {...makeSimpleBaseParams(), ...params} : {...makeBaseParams(), ...params};\n\n    const query = {\n        event: action,\n        version: statsVersion,\n        format: statsFormat,\n        data: JSON.stringify(requestParams),\n    };\n\n    const prefix = isSplitTesting ? \"split-testing\" : ENDPOINT_EXCEPTIONS[action] || \"pages\";\n    const paramsStr = new URLSearchParams(query).toString();\n\n    const statsUrl = `https://${prefix}-stats.rbl.ms/spacer.gif?${Date.now()}&${paramsStr}`;\n    const pageViewUrl = `https://pages-stats.rbl.ms/spacer.gif?${Date.now()}&${paramsStr}`;\n\n    fetch(statsUrl);\n    if(isSplitTesting && 'post-page-view' == action){\n        fetch(pageViewUrl);\n    }\n}\n\nfunction addSplitTestingParams(params, splitTesting) {\n    const {\n        current: { campaign_id, hypothesis_id },\n    } = splitTesting;\n    return { ...params, campaign_id, hypothesis_id };\n}\n\nfunction checkIfPostHasSplitTesting(post) {\n    return post && post.split_testing && post.split_testing.current;\n}\n\n\nfunction trackPageView(data) {\n    const { post, id } = data;\n    const pageType = getPageTypeFromResourceId();\n    const bootstrapData = window.REBELMOUSE_BOOTSTRAP_DATA;\n\n    let params;\n    let isSplitTesting = false;\n\n    if (post) {\n        params = {\n            post_id: data.id,\n            provider_id: post.providerId,\n            sections: post.sections,\n            buckets: post.buckets,\n            authors: post.authors,\n        };\n\n        isSplitTesting = checkIfPostHasSplitTesting(post);\n\n        if (isSplitTesting) {\n            params = addSplitTestingParams(params, post.split_testing);\n        }\n    }\n    // @NOTE: community/author pages also have \"fp\" resourceId\n    else if (pageType === \"section\" && !bootstrapData.site.isCommunitySite) {\n        const sectionId = bootstrapData.section.id || 0; // @NOTE: 0 is for the home/frontpage (fp)\n        params = {\n            section_id: sectionId,\n            sections: [sectionId],\n        };\n    }\n    else if (pageType === \"tag\") {\n        const tagSlug = bootstrapData.tag.slug;\n        params = {\n            tag: tagSlug,\n            sections: [],\n        };\n    }\n    else {\n        params = {\n            sections: [],\n        };\n    }\n\n    const action = isSplitTesting || `${pageType}-page-view`;\n    sendStats(action, params, isSplitTesting);\n}\n\nfunction trackTimeOnPage({ timeMarker }) {\n    sendStats(`${getPageTypeFromResourceId()}-page-view-duration`, {\n        duration: timeMarker,\n    });\n}\n\nfunction getUserTrackingId() {\n    const trackingId = localStorage.getItem(\"userTrackingId\");\n    const prevLoggedStatus = localStorage.getItem(\"userTrackingLoggedStatus\") === \"true\";\n    if (trackingId && prevLoggedStatus === window.REBELMOUSE_BOOTSTRAP_DATA.isUserLoggedIn) {\n        return Promise.resolve(trackingId);\n    }\n    const newVisitorData = {\n        user_tracking_id: null,\n        last_page_view_timestamp: null,\n        user_type: \"casual\",\n    };\n\n    return postJsonData(\n        `${window.REBELMOUSE_BASE_SSL_DOMAIN}/core/users/tracking/`,\n        newVisitorData\n    ).then((data) => {\n        const { user_tracking_id } = data;\n        localStorage.setItem(\"userTrackingId\", user_tracking_id);\n        localStorage.setItem(\n            \"userTrackingLoggedStatus\",\n            window.REBELMOUSE_BOOTSTRAP_DATA.isUserLoggedIn\n        );\n        return user_tracking_id;\n    });\n}\n\nfunction cleanUpOtherUserData(currentUserId) {\n    const keysToRemove = Object.keys(localStorage)\n        .filter(function(key) {\n            return key.startsWith('history-') && key !== 'history-' + currentUserId;\n        });\n\n    if (keysToRemove) {\n        keysToRemove.forEach(function(key) {\n            localStorage.removeItem(key);\n        });\n    }\n}\n\nfunction storePostHistory(userId, id){\n    const userHistoryKey = `history-${userId}`;\n    const userHistory = localStorage.getItem(userHistoryKey);\n    const visitedPosts = userHistory ? JSON.parse(userHistory) : [];\n    const idNotStored = !visitedPosts.some(entry => entry.id === id);\n    \n    if(id && idNotStored){\n        const timestamp = new Date().getTime();\n        visitedPosts.push({ id, timestamp });\n\n        const daysToTimestamp = 24 * 60 * 60 * 1000\n        const expirationTime = new Date().getTime() - (MAX_DAYS_RM_BEHAVIOR_LOCAL_STORAGE * daysToTimestamp);\n        const filteredPosts = visitedPosts.filter(entry => entry.timestamp > expirationTime);\n\n        if (filteredPosts.length > MAX_POST_RM_BEHAVIOR_LOCAL_STORAGE) {\n            filteredPosts.splice(0, filteredPosts.length - MAX_POST_RM_BEHAVIOR_LOCAL_STORAGE);\n        }\n\n        localStorage.setItem(userHistoryKey, JSON.stringify(filteredPosts));\n    }\n\n    cleanUpOtherUserData(userId);\n}\n\nfunction trackUser() {\n    const mainPost = window.REBELMOUSE_BOOTSTRAP_DATA.post;\n    getUserTrackingId().then((trackingId) => {\n        storePostHistory(trackingId, mainPost.id);\n        const data = {\n            user_tracking_id: trackingId,\n        };\n\n        if (Object.keys(mainPost).length > 0) {\n            data.post_id = mainPost.id;\n            data.sections = mainPost.sections;\n            data.tags = mainPost.tags;\n        }\n        sendStats(\"page-view\", data);\n    });\n}\n\nfunction trackPostCardClick({ id, post }) {\n    const params = {\n        post_id: id,\n        provider_id: post.providerId,\n        sections: post.sections,\n    };\n\n    const isSplitTesting = checkIfPostHasSplitTesting(post);\n\n    if (isSplitTesting) {\n        sendStats(\"post-card-click\", addSplitTestingParams(params, post.split_testing), true);\n    } else {\n        sendStats(\"post-card-click\", params);\n    }\n}\n\nfunction trackPostCardView({ id, post }) {\n    const params = {\n        site_id: window.REBELMOUSE_BOOTSTRAP_DATA.site.id,\n        roar_id: window.REBELMOUSE_BOOTSTRAP_DATA.runner.id,\n        sections: post.sections,\n        posts:[{\n            post_id: id,\n            provider_id: post.providerId,\n            authors: post.auhtors,\n        }]\n    };\n\n    sendStats(\"batch-post-card-view\", params);\n}\n\nfunction batchPostCardView(posts) {\n    sendStats(\"batch-post-card-view\", { posts }, true);\n}\n\nexport default {\n    trackPageView,\n    trackTimeOnPage,\n    trackUser,\n    trackPostCardClick,\n    trackPostCardView,\n    batchPostCardView\n};\n","export default function postJsonData(url, data) {\n    return fetch(url, {\n        method: \"POST\",\n        body: JSON.stringify(data),\n    }).then((resp) => resp.json());\n}\n","const STATUS_ADMIN = 0;\r\nconst STATUS_COMMUNITY = 1;\r\nconst STATUS_FEATURED = 2;\r\n\r\nconst PUBLISHED_POST_STATUSES = [STATUS_ADMIN, STATUS_COMMUNITY, STATUS_FEATURED];\r\n\r\nexport function isPostPublished(post) {\r\n    const { status } = post;\r\n    return PUBLISHED_POST_STATUSES.includes(parseInt(status, 10));\r\n}\r\n","import { isPostPublished } from \"../utils/postStatus\";\n\nfunction customNameReducer(acc, [key, value]) {\n    acc[`_${key}`] = value;\n    return acc;\n}\n\nfunction customizeNames(obj) {\n    if (typeof obj !== \"object\") {\n        return {};\n    }\n\n    return Object.entries(obj).reduce(customNameReducer, {});\n}\n\nconst IEEE_SPECTRUM_SITE_ID = 20265424;\n\nconst SPECIAL_LOGIC = {\n    //IEEE spectrum\n    [IEEE_SPECTRUM_SITE_ID]() {\n        window.PARSELY.updateDefaults({\n            data: {\n                level: window.REBELMOUSE_BOOTSTRAP_DATA.isUserLoggedIn\n                    ? localStorage.getItem(\"userMembershipStatus\")\n                        ? localStorage.getItem(\"userMembershipStatus\")\n                        : \"anonymous\"\n                    : \"anonymous\",\n            },\n        });\n    },\n};\n\nfunction shouldSendParselyStats() {\n    const isParselyReady =\n        window.PARSELY &&\n        window.PARSELY.beacon &&\n        typeof window.PARSELY.beacon.trackPageView === \"function\";\n\n    const isPostPage = Object.keys(window.REBELMOUSE_BOOTSTRAP_DATA.post).length > 0;\n    const isPublishedPostPage =\n        isPostPage && isPostPublished(window.REBELMOUSE_BOOTSTRAP_DATA.post);\n\n    return isParselyReady && (!isPostPage || isPublishedPostPage);\n}\n\nfunction sendStats(data, pageInfo) {\n    if (!shouldSendParselyStats()) {\n        return;\n    }\n\n    if (window.REBELMOUSE_BOOTSTRAP_DATA.site.id in SPECIAL_LOGIC) {\n        SPECIAL_LOGIC[window.REBELMOUSE_BOOTSTRAP_DATA.site.id]();\n    }\n\n    const url = (pageInfo && pageInfo.url) || document.URL;\n    const urlref = (pageInfo && pageInfo.previousUrl) || document.referrer;\n\n    window.PARSELY.beacon.trackPageView({\n        ...data,\n        url,\n        urlref,\n    });\n}\n\nfunction trackPageView(pageInfo) {\n    sendStats({ js: 1 }, pageInfo);\n}\n\nfunction trackCustomEvent(action, data) {\n    sendStats({\n        action,\n        data: customizeNames(data),\n    });\n}\n\nfunction trackPageLoad(data) {\n    trackCustomEvent(\"_pageLoad\", data);\n}\n\nfunction trackPostMouseOver(data) {\n    trackCustomEvent(\"_post_mouse_over\", data);\n}\n\nfunction trackTimeOnPage({ timeMarker }) {\n    trackCustomEvent(\"_page-view-duration\", timeMarker);\n}\n\nfunction trackPostCardClick(data) {\n    trackCustomEvent(\"_post_card_click\", data);\n}\n\nexport default {\n    trackPageView,\n    trackPageLoad,\n    trackPostMouseOver,\n    trackTimeOnPage,\n    trackPostCardClick,\n};\n","import curry from \"../lib/core/functional/curry\";\r\n\r\nconst fieldUpdater = curry(function fieldUpdater(selector, elementField, dataField, data) {\r\n    if (!data[dataField]) {\r\n        return;\r\n    }\r\n\r\n    const element = document.querySelector(selector);\r\n    if (element) {\r\n        element[elementField] = data[dataField];\r\n    }\r\n});\r\n\r\nconst updateTitle = fieldUpdater(\"title\", \"textContent\", \"headline\");\r\nconst updateCanonical = fieldUpdater('link[rel=\"canonical\"]', \"href\", \"url\");\r\n\r\nexport default function updateMetaData(data) {\r\n    updateTitle(data);\r\n    updateCanonical(data);\r\n}\r\n","import ga4Stats from \"./ga4Stats\";\nimport nativeStats from \"./nativeStats\";\nimport parselyStats from \"./parselyStats\";\nimport loadContextData from \"../utils/loadContextData\";\nimport updateMetaData from \"./metadata\";\n\nconst providers = [nativeStats, ga4Stats, parselyStats];\n\nfunction getPostContext(post) {\n  const id = post.getAttribute(\"elid\");\n  return { id, ...loadContextData(`.post-context-${id}`) };\n}\n\nexport default {\n  trackPageView(pageData) {\n    const postContext = loadContextData(`.post-context-${pageData.id}`);\n    const data = { ...pageData, ...postContext };\n    updateMetaData(data);\n    providers.forEach((provider) => {\n      provider.trackPageView({...data});\n    });\n  },\n  trackPageLoad(pageData) {\n    const postContext = loadContextData(`.post-context-${pageData.id}`);\n    nativeStats.trackPageView({ ...pageData, ...postContext });\n    parselyStats.trackPageLoad({ ...pageData, ...postContext });\n  },\n  trackTimeOnPage(timeMarker) {\n    nativeStats.trackTimeOnPage({ timeMarker });\n    parselyStats.trackTimeOnPage({ timeMarker });\n  },\n  trackUser(pageData) {\n    nativeStats.trackUser({ ...pageData });\n  },\n  trackPostCardClick(post) {\n    providers.forEach(provider => {\n      provider.trackPostCardClick(getPostContext(post));\n    });\n  },\n  trackEvent(pageData) {\n    const postContext = loadContextData(`.post-context-${pageData.id}`);\n    ga4Stats.trackEvent({ ...pageData, ...postContext });\n  },\n  trackSocialShare(data) {\n    const postContext = loadContextData(`.post-context-${data.id}`);\n    ga4Stats.trackPostShare({ ...postContext, ...data });\n  },\n  batchPostCardView(data) {\n    nativeStats.batchPostCardView(data);\n  },\n  trackPostCardView(post){\n    nativeStats.trackPostCardView(getPostContext(post));\n  },\n};\n","import StatsTracker from \"./statsTracker\";\nimport createElementChangeListener from \"../elementChangeListener\";\nimport createTimer from \"./resumableTimer\";\nimport {\n  PAGE_LOAD_EVENT,\n  READ_ARTICLE_EVENT,\n  URL_CHANGE_EVENT,\n  POST_SHARED_EVENT,\n} from \"../consts\";\n\nfunction checkForDuplicatedPosts(post){\n  const postId = post.getAttribute(\"elid\");\n  return SPLIT_TESTED_POSTS.some(splitedPost => splitedPost.post_id === postId);\n}\n\nfunction trackPostCardClick(post) {\n  function onLinkClick(event){\n    const currentTarget = event.currentTarget;\n    const isTargetBlank = currentTarget.getAttribute(\"target\") === \"_blank\";\n    const isPagination = currentTarget.classList.contains(\n      \"js-listicle-switch-page\"\n    );\n\n    if (!isTargetBlank) {\n      event.preventDefault();\n    }\n    setTimeout(() => StatsTracker.trackPostCardClick(post), 0);\n    if (!isTargetBlank && !isPagination) {\n      // @NOTE: check if we redirect on the same path ignore it\n      if(event.metaKey || event.ctrlKey){\n        window.open(currentTarget.href)\n      }\n      else {\n        document.location.href = currentTarget.href;\n      }\n    }\n  }\n\n  function forEachLink(link){\n    if (!/^(https?:)?\\/\\/\\w+/.exec(link.href) || link.classList.contains('rm-stats-tracked')) {\n      return;\n    }\n    link.classList.add('rm-stats-tracked');\n    link.addEventListener(\"click\", onLinkClick);\n  }\n\n\n  post.querySelectorAll(\"a[href]:not(.rm-stats-tracked)\").forEach(forEachLink);\n}\n\nfunction trackPostCardView(post){\n  function onCardVisible(){\n    if (!SPLIT_TESTED_POSTS.length || (SPLIT_TESTED_POSTS.length && !checkForDuplicatedPosts(post))) {\n      StatsTracker.trackPostCardView(post);\n    }\n  }\n\n  function isCardVisible(postCard){\n      if (postCard.isIntersecting) {\n        onCardVisible();\n      }\n  };\n\n  const options = {\n    root: null,\n    rootMargin: '0px',\n    threshold: 0.8,\n  };\n\n  function callback (entries, observer) {\n    entries.forEach(isCardVisible);\n  };\n\n  const observer = new IntersectionObserver(callback, options);\n\n  function forEachCard(postCard){\n    if(postCard.classList.contains('rm-stats-tracked')){\n      return\n    }\n    postCard.classList.add('rm-stats-tracked');\n        observer.observe(postCard);\n   }\n\n  post.querySelectorAll(\"article:not(.rm-stats-tracked)\").forEach(forEachCard);\n}\n\nfunction initPostsTracker() {\n  createElementChangeListener(\"[elid]\", (post) => {\n    trackPostCardClick(post);\n    trackPostCardView(post);\n  });\n}\n\nfunction initTimeOnPageTracker() {\n  const maxTotalDuration = 30 * 60 * 1000;\n  const reportTimeFrames = [1, 2, 5, 10, 20, 30].map((frame) => frame * 1000);\n\n  const timer = createTimer(\n    StatsTracker.trackTimeOnPage,\n    reportTimeFrames,\n    maxTotalDuration\n  );\n\n  timer.start();\n\n  document.addEventListener(\"visibilitychange\", () => {\n    if (document.visibilityState === \"visible\") {\n      timer.start();\n    } else {\n      timer.pause();\n    }\n  });\n}\n\nfunction initUrlChangeListeners(context) {\n  const { eventBus } = context;\n  let initialPageUrl = \"\";\n\n  eventBus.subscribe(READ_ARTICLE_EVENT, (data) => {\n    if (data.trackPageView) {\n      StatsTracker.trackPageView(data);\n    } else {\n      StatsTracker.trackEvent({\n        ...data,\n        eventType: \"keep_reading\",\n        action: \"view_more\",\n      });\n    }\n  });\n\n  eventBus.subscribe(PAGE_LOAD_EVENT, (data) => {\n    StatsTracker.trackPageLoad(data, true);\n    StatsTracker.trackUser(data);\n    initialPageUrl = data.url;\n  });\n\n  eventBus.subscribe(URL_CHANGE_EVENT, (data) => {\n    if (data.url !== initialPageUrl && data.trackPageView) {\n      data.previousUrl = initialPageUrl;\n      StatsTracker.trackPageView(data);\n      initialPageUrl = data.url;\n    }\n  });\n}\n\nfunction initPostsShareListener({ eventBus, settings }) {\n  eventBus.subscribe(POST_SHARED_EVENT, (data) => {\n    StatsTracker.trackSocialShare({\n      provider: data.provider,\n      id: settings.post.id,\n    });\n  })\n}\n\nconst SPLIT_TESTED_POSTS = [];\n\nfunction onSplitTestedPost(scriptElement) {\n  const contextData = JSON.parse(scriptElement.text);\n  if (\"current\" in contextData.post.split_testing) {\n    const { campaign_id, hypothesis_id } = contextData.post.split_testing.current;\n    SPLIT_TESTED_POSTS.push({\n      post_id: parseInt(scriptElement.closest(\"article[elid]\").getAttribute(\"elid\"), 10),\n      campaign_id: campaign_id,\n      hypothesis_id: hypothesis_id,\n    });\n  }\n}\n\nfunction fireBatchPostCardView(event) {\n  if (\n    SPLIT_TESTED_POSTS.length > 0 &&\n    (event.type === \"pagehide\" || document.visibilityState === \"hidden\")\n  ) {\n    StatsTracker.batchPostCardView(SPLIT_TESTED_POSTS);\n    SPLIT_TESTED_POSTS.length = 0;\n  }\n}\n\nfunction initBatchPostCardView() {\n  createElementChangeListener(\"script.post-context-split-testing\", onSplitTestedPost);\n  window.addEventListener(\"visibilitychange\", fireBatchPostCardView, { passive: true });\n  window.addEventListener(\"pagehide\", fireBatchPostCardView, { passive: true });\n}\n\nexport default function statsProvider(context) {\n  initUrlChangeListeners(context);\n  initPostsTracker();\n  initTimeOnPageTracker();\n  initPostsShareListener(context);\n  initBatchPostCardView(context);\n  return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./subscriptionForm\");\n\nexport default function subscriptionFormLoader(context) {\n    loadModuleOnElement(\".get-alerts\", loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\n\nexport default function pageFetchLoader(context) {\n    loadModuleOnElement(\".tabs\", loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./videoPlayer\");\n\nexport default function videoLoader(context) {\n    loadModuleOnElement(\".js-show-video\", loader, context);\n    return context;\n}\n","import createElementChangeListener from \"../../elementChangeListener\";\n\nfunction onUplynkElementChange(node) {\n    node.addEventListener('click', function handler() {\n        node.removeEventListener(\"click\", handler, false);\n        node.removeChild(node.firstElementChild);\n        if (window.REBELMOUSE_BOOTSTRAP_DATA.engine.defaultVideoPlayer === 'theo') {\n            import(\"../theoplayer/module\").then((module) => module.default(node));\n        }\n    } , false);\n}\n\nexport default function uplynkLoader(context) {\n    createElementChangeListener(\".uplynk-container\", onUplynkElementChange, false);\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\nconst selector = \".rebellt-item.has_voting\";\n\nexport default function assemblerUpDownVotingLoader(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\r\n\r\nconst loader = () => import(\"./renderer\");\r\nconst selector = \".follow-button\";\r\n\r\nexport default function loadFollowButton(context) {\r\n    loadModuleOnElement(selector, loader, context);\r\n    return context;\r\n}\r\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\r\n\r\nconst loader = () => import(\"./renderer\");\r\nconst selector = \".like-button\";\r\n\r\nexport default function loadFollowButton(context) {\r\n    loadModuleOnElement(selector, loader, context);\r\n    return context;\r\n}\r\n","import loadModuleOnElement from \"../../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./renderer\");\nconst selector = \".rm-folders-button\";\n\nexport default function loadFollowButton(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./renderer\");\nconst selector = \".rm-folders-manage-posts article[elid]\";\n\nexport default function loadFollowButton(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import createElementChangeListener from \"../../elementChangeListener\";\n\nfunction loadScript(script) {\n    const node = document.createElement(\"script\");\n    const source = script.getAttribute(\"data-src\");\n    if (source) {\n        node.src = source;\n    } else {\n        node.text = script.text;\n    }\n    script.replaceWith(node);\n}\n\nexport default function loadLazyScripts() {\n    const selector = `[type=\"text/lazy-javascript\"]`;\n    createElementChangeListener(selector, loadScript);\n}\n","import curry from \"../lib/core/functional/curry\";\r\nimport { requestIdleCallback } from \"./idleCallback\";\r\n\r\nconst MIN_THREAD_IDLE_TIME = 1;\r\nconst CALLBACK_INDEX = 0;\r\nconst REMAINING_INDEX = 3;\r\n\r\nexport function _updateTask([fun, ogTimeout, startDate, _remaining], now) {\r\n    let newStartDate = startDate || now;\r\n    let newTimeout = ogTimeout;\r\n    if (newStartDate) {\r\n        const diff = now - newStartDate;\r\n        newTimeout = Math.max(1, ogTimeout - diff);\r\n    }\r\n    return [fun, ogTimeout, newStartDate, newTimeout];\r\n}\r\n\r\nfunction runCallback(callback) {\r\n    try {\r\n        callback();\r\n    } catch (e) {\r\n        console.error(\"Error in user code\", e);\r\n        console.error(callback);\r\n    }\r\n}\r\n\r\nfunction createIdleQueue(onDone) {\r\n    const queue = [];\r\n\r\n    function enQueue(next) {\r\n        const updatedTask = _updateTask(next, Date.now());\r\n        requestIdleCallback(callbackRunner(updatedTask), { timeout: updatedTask[REMAINING_INDEX] });\r\n    }\r\n\r\n    const callbackRunner = curry((next, idleDeadline) => {\r\n        let runningTask = next;\r\n\r\n        if (idleDeadline.timeRemaining() >= MIN_THREAD_IDLE_TIME) {\r\n            do {\r\n                runCallback(runningTask[CALLBACK_INDEX]);\r\n                queue.shift();\r\n                runningTask = queue[0];\r\n            } while (idleDeadline.timeRemaining() >= MIN_THREAD_IDLE_TIME && runningTask);\r\n            runQueue(runningTask);\r\n        } else if (idleDeadline.didTimeout) {\r\n            runCallback(runningTask[CALLBACK_INDEX]);\r\n            queue.shift();\r\n            runQueue(queue[0]);\r\n        } else {\r\n            enQueue(runningTask);\r\n        }\r\n    });\r\n\r\n    function runQueue(nextInLine) {\r\n        if (nextInLine) {\r\n            enQueue(nextInLine);\r\n        } else {\r\n            onDone();\r\n        }\r\n    }\r\n\r\n    function pushTask(fun, timeout) {\r\n        queue.push([fun, timeout]);\r\n        if (queue.length === 1) {\r\n            runQueue(queue[0]);\r\n        }\r\n    }\r\n\r\n    return {\r\n        pushTask,\r\n    };\r\n}\r\n\r\nexport default createIdleQueue;\r\n","export default function rebelSlider(config) {\n    import(\"./slider\").then((module) => {\n        module.default(config);\n    });\n}\n","import callbackRunner from \"./callbackRunner\";\nimport { requestIdleCallback } from \"./idleCallback.js\";\n\nconst PAGE_IDLE_TIME = 2500;\nconst timeoutOptions = { timeout: 600 };\n\nconst { add, run } = callbackRunner(boot, true);\nlet isPageReady = false;\n\nfunction boot() {\n    document.readyState !== \"complete\" ? window.addEventListener(\"load\", onLoad) : onLoad();\n}\n\nfunction onIdle(idleDeadline) {\n    const timeRemaining = idleDeadline.timeRemaining();\n    if (timeRemaining > 49 || idleDeadline.didTimeout) {\n        run();\n    } else {\n        requestIdleCallback(onIdle, timeoutOptions);\n    }\n}\n\nfunction waitForIdle() {\n    requestIdleCallback(onIdle, timeoutOptions);\n}\n\nfunction onLoad() {\n    isPageReady = true;\n    setTimeout(waitForIdle, PAGE_IDLE_TIME);\n}\n\nexport default function onPageIdle(callback) {\n    if (isPageReady) {\n        callback();\n        return;\n    }\n\n    add(callback);\n}\n","import intersectionObserverProvider from \"../context/intersectionObserverProvider\";\nimport onPageIdle from \"./onPageIdle\";\n\nfunction hasLoaded(src) {\n    return localStorage.getItem(`rmFont-${src}`) === \"1\";\n}\n\nfunction storeLoadedFont(src) {\n    localStorage.setItem(`rmFont-${src}`, \"1\");\n}\n\nfunction signalLoad(font) {\n    const className = `rm-fl-${font.family.toLowerCase().replace(/ /g, \"_\")}-${font.weight}`;\n    document.body.classList.add(className);\n}\n\nfunction addFont(font) {\n    document.fonts.add(font);\n    signalLoad(font);\n}\n\nfunction loadFont(name, src, { weight, style, unicodeRange }) {\n    return function triggerLoad() {\n        const fonts = weight.split(\",\").map(function fontFaceFactory(fontWeight) {\n            return new FontFace(name, `url(${src})`, {\n                style,\n                unicodeRange,\n                display: \"swap\",\n                weight: fontWeight,\n            });\n        });\n\n        fonts[0].load().then(function onFontloaded() {\n            storeLoadedFont(src);\n            fonts.forEach(addFont);\n        });\n    };\n}\n\nexport default function loadFontFace(name, src, { selector, ...args }) {\n    const fontLoader = loadFont(name, src, args);\n\n    if (selector) {\n        intersectionObserverProvider.addTask({\n            selector,\n            firstOnly: true,\n            oneTime: true,\n            threshold: 200,\n            onIntersect: fontLoader,\n        });\n    } else if (hasLoaded(src)) {\n        fontLoader();\n    } else {\n        onPageIdle(fontLoader);\n    }\n}\n","import noop from \"../lib/core/functional/noop\";\r\nimport thunk from \"../lib/core/functional/thunk\";\r\nimport curry from \"../lib/core/functional/curry\";\r\nimport pipe from \"../lib/core/functional/pipe\";\r\nimport call from \"../lib/core/functional/call\";\r\n\r\nimport intersectionObserverProvider from \"../context/intersectionObserverProvider\";\r\n\r\nimport onPostLcp from \"../utils/onPostLcp\";\r\nimport {\r\n    getConnectionType,\r\n    listenToConnectionChanges,\r\n    stopListening,\r\n} from \"../utils/connectionHandler\";\r\nimport loadExternalScript from \"../utils/loadExternalScript\";\r\nimport { requestIdleCallback, cancelIdleCallback } from \"../utils/idleCallback.js\";\r\n\r\nlet scrollTimeoutId;\r\nlet idleCallbackId;\r\nconst idleCallbacks = new Set();\r\nconst callbackRunner = call();\r\n\r\nconst loadDeps = thunk(function loadDeps(props, state) {\r\n    const { dependencies } = props;\r\n    const allDeps = dependencies.length;\r\n    let loaded = 0;\r\n\r\n    function onDepLoaded() {\r\n        loaded++;\r\n        if (loaded === allDeps) {\r\n            startAdLifeCycle(props, state);\r\n        }\r\n    }\r\n\r\n    function onEachDep(dep) {\r\n        loadExternalScript(dep, onDepLoaded);\r\n    }\r\n\r\n    if (allDeps > 0) {\r\n        dependencies.forEach(onEachDep);\r\n    } else {\r\n        startAdLifeCycle(props, state);\r\n    }\r\n});\r\n\r\nconst idleHandler = curry(function idleHandler(removeFromSet, addToSet, element) {\r\n    removeFromSet.delete(element);\r\n    addToSet.add(element);\r\n});\r\n\r\nconst nonIdleHandler = curry(function nonIdleHandler(handler, element) {\r\n    handler(element);\r\n});\r\n\r\nconst initiateStaticElement = curry(function initiateStaticElement(displayer, element) {\r\n    markAsStaticElement(element);\r\n    displayer(element);\r\n});\r\n\r\nexport default function init(context) {\r\n    window.RM_AD_LOADER.forEach(processAdRequest);\r\n    upgradeObject();\r\n    return context;\r\n}\r\n\r\nfunction upgradeObject() {\r\n    window.RM_AD_LOADER = { push: processAdRequest };\r\n}\r\n\r\nfunction processAdRequest(props) {\r\n    const { onInit } = props;\r\n    const state = onInit.call(window);\r\n    onPostLcp(loadDeps(props, state));\r\n}\r\n\r\nfunction startAdLifeCycle(props, state) {\r\n    const {\r\n        options,\r\n        staticSelectors = [],\r\n        dynamicSelectors = [],\r\n        disableIdleLoader,\r\n        disableVisibilityWatcher,\r\n    } = props;\r\n    const {\r\n        displayOnElement,\r\n        refreshOnElement,\r\n        destroyOnElement,\r\n        onDependanciesLoaded,\r\n    } = getCallbacks(props);\r\n\r\n    let connectionChangeCallback;\r\n    let refreshRate;\r\n    let intervalId;\r\n    let timeoutId;\r\n    let intersectHandler;\r\n    let nonIntersectHandler;\r\n    let onIterationEnd;\r\n    let userOptions;\r\n    let lastRefresh = Date.now();\r\n\r\n    let previousObsevers = [];\r\n    let staticElements = [];\r\n    let setOptions = saveOptions;\r\n\r\n    const elementsToDestroy = new Set();\r\n    const elementsToRefresh = new Set();\r\n    const elementsToDisplay = new Set();\r\n    const observerSelector = dynamicSelectors.join(\",\");\r\n\r\n    const displayIdleHandler = idleHandler(elementsToDestroy, elementsToDisplay);\r\n    const displayNonIdleHandler = nonIdleHandler(displayElement);\r\n\r\n    const destroyIdleHandler = idleHandler(elementsToDisplay, elementsToDestroy);\r\n    const destroyNonIdleHandler = nonIdleHandler(destroyElement);\r\n\r\n    if (disableIdleLoader) {\r\n        intersectHandler = displayNonIdleHandler;\r\n        nonIntersectHandler = destroyNonIdleHandler;\r\n        onIterationEnd = noop;\r\n    } else {\r\n        intersectHandler = displayIdleHandler;\r\n        nonIntersectHandler = destroyIdleHandler;\r\n        onIterationEnd = waitForIdle;\r\n    }\r\n\r\n    if (staticSelectors.length) {\r\n        setOptions = pipe(saveOptions, setUpAdRefresh);\r\n        staticElements = Array.from(document.querySelectorAll(staticSelectors.join(\",\")));\r\n    }\r\n\r\n    if (observerSelector) {\r\n        setOptions = pipe(saveOptions, setUpAdRefresh, setUpIntersectionObserver);\r\n    }\r\n\r\n    onDependanciesLoaded(state, setOptions);\r\n    setOptions(options || {});\r\n    staticElements.forEach(initiateStaticElement(displayElement));\r\n\r\n    function saveOptions(options) {\r\n        userOptions = options;\r\n    }\r\n\r\n    function displayElement(element) {\r\n        elementsToRefresh.add(element);\r\n        element.dataset.rmLastViewed = Date.now();\r\n        element.dataset.initiated = true;\r\n        displayOnElement(element, state, setOptions);\r\n    }\r\n\r\n    function refreshElement(element) {\r\n        if (Date.now() - parseInt(element.dataset.rmLastViewed, 10) < refreshRate) {\r\n            return;\r\n        }\r\n\r\n        element.dataset.rmLastViewed = Date.now();\r\n        element.dataset.refreshCount = element.dataset.refreshCount\r\n            ? parseInt(element.dataset.refreshCount, 10) + 1\r\n            : 1;\r\n        refreshOnElement(element, state, setOptions);\r\n    }\r\n\r\n    function destroyElement(element) {\r\n        destroyOnElement(element, state, setOptions);\r\n    }\r\n\r\n    function setUpIntersectionObserver() {\r\n        previousObsevers.forEach(disconnect);\r\n        previousObsevers = intersectionObserverProvider.addTask({\r\n            onNonIntersect,\r\n            onIntersect,\r\n            entriesHandler,\r\n            selector: observerSelector,\r\n            threshold: getThreshold(),\r\n        });\r\n    }\r\n\r\n    function setUpAdRefresh() {\r\n        const { refreshTimeout } = userOptions;\r\n        if (!refreshTimeout || refreshTimeout === refreshRate) {\r\n            return;\r\n        }\r\n\r\n        refreshRate = refreshTimeout;\r\n        startInterval(refreshTimeout);\r\n    }\r\n\r\n    function startInterval() {\r\n        clearInterval(intervalId);\r\n        intervalId = setInterval(triggerRefresh, refreshRate);\r\n    }\r\n\r\n    function triggerRefresh() {\r\n        waitForIdle(iterateRefreshElements);\r\n    }\r\n\r\n    function iterateRefreshElements() {\r\n        lastRefresh = Date.now();\r\n        elementsToRefresh.forEach(refreshElement);\r\n    }\r\n\r\n    function getThreshold() {\r\n        const { threshold } = userOptions;\r\n\r\n        if (connectionChangeCallback) {\r\n            stopListening(connectionChangeCallback);\r\n        }\r\n\r\n        if (!isNaN(threshold)) {\r\n            connectionChangeCallback = null;\r\n            return threshold;\r\n        }\r\n        let ogConnectionType = getConnectionType();\r\n\r\n        connectionChangeCallback = function onConnectionChanged(newType) {\r\n            if (ogConnectionType !== newType) {\r\n                setOptions(userOptions);\r\n            }\r\n        };\r\n        listenToConnectionChanges(connectionChangeCallback);\r\n        const currentThreshold = threshold[ogConnectionType];\r\n        return currentThreshold;\r\n    }\r\n\r\n    function entriesHandler(entries) {\r\n        entries.forEach(onEntry);\r\n        onIterationEnd(executeIdleCallbacks);\r\n    }\r\n\r\n    function onEntry(entry) {\r\n        if (entry.isIntersecting) {\r\n            onIntersect(entry, intersectHandler);\r\n        } else {\r\n            onNonIntersect(entry, nonIntersectHandler);\r\n        }\r\n    }\r\n\r\n    function onIntersect(entry, handler) {\r\n        const element = entry.target;\r\n        handler(element);\r\n    }\r\n\r\n    function onNonIntersect(entry, handler) {\r\n        const element = entry.target;\r\n        if (!element.dataset.initiated) {\r\n            return;\r\n        }\r\n        elementsToRefresh.delete(element);\r\n        handler(element);\r\n    }\r\n\r\n    function executeIdleCallbacks() {\r\n        iterateAndClearSet(elementsToDisplay, displayElement);\r\n        iterateAndClearSet(elementsToDestroy, destroyElement);\r\n    }\r\n\r\n    if (!disableVisibilityWatcher) {\r\n        function onVisibilityChange() {\r\n            if (!refreshRate) {\r\n                return;\r\n            }\r\n\r\n            if (document.visibilityState === \"visible\") {\r\n                startInterval();\r\n                const timeSinceLastRefresh = Date.now() - lastRefresh;\r\n                if (timeSinceLastRefresh >= refreshRate) {\r\n                    triggerRefresh();\r\n                } else {\r\n                    const difference = refreshRate - timeSinceLastRefresh;\r\n                    if (difference <= refreshRate / 4) {\r\n                        timeoutId = setTimeout(triggerRefresh, difference);\r\n                    }\r\n                }\r\n            } else {\r\n                clearTimeout(timeoutId);\r\n                clearInterval(intervalId);\r\n            }\r\n        }\r\n\r\n        document.addEventListener(\"visibilitychange\", onVisibilityChange);\r\n    }\r\n}\r\n\r\nfunction waitForIdle(callback) {\r\n    idleCallbacks.add(callback);\r\n    clearTimeout(scrollTimeoutId);\r\n    cancelIdleCallback(idleCallbackId);\r\n    scrollTimeoutId = setTimeout(waitForIdleMainThread, 64);\r\n}\r\n\r\nfunction waitForIdleMainThread() {\r\n    idleCallbackId = requestIdleCallback(runIdleCallbacks, { timeout: 100 });\r\n}\r\n\r\nfunction runIdleCallbacks() {\r\n    idleCallbacks.forEach(callbackRunner);\r\n    idleCallbacks.clear();\r\n}\r\n\r\nfunction getCallbacks(props) {\r\n    const {\r\n        displayOnElement = noop,\r\n        refreshOnElement = noop,\r\n        destroyOnElement = noop,\r\n        onDependanciesLoaded = noop,\r\n    } = props;\r\n\r\n    return {\r\n        displayOnElement: displayOnElement.bind(window),\r\n        refreshOnElement: refreshOnElement.bind(window),\r\n        destroyOnElement: destroyOnElement.bind(window),\r\n        onDependanciesLoaded: onDependanciesLoaded.bind(window),\r\n    };\r\n}\r\n\r\nfunction disconnect(observer) {\r\n    observer.disconnect();\r\n}\r\n\r\nfunction markAsStaticElement(element) {\r\n    element.dataset.isStatic = 1;\r\n}\r\n\r\nfunction iterateAndClearSet(set, callback) {\r\n    set.forEach(callback);\r\n    set.clear();\r\n}\r\n","import { PAGE_LOAD_EVENT, POST_SHARED_EVENT, URL_CHANGE_EVENT, URL_SCROLLED_EVENT } from \"./consts\";\n\nimport assemblerSlideshowLoader from \"./views/assemblerSlideshowLoader\";\nimport bodyImageSharesLoader from \"./views/shares/bodyImageSharesLoader\";\nimport changeUrlOnScrollLoader from \"./views/changeUrlOnScrollLoader\";\nimport floatingElementsLoader from \"./views/floatingElementsLoader\";\nimport initHamburgerMenu from \"./views/hamburgerMenu\";\nimport initProductsLoader from \"./views/products/loader\";\nimport keepReadingLoader from \"./views/keepReading/loader\";\nimport liveBlogLoader from \"./views/liveBlog/loader\";\nimport livePostParticleLoader from \"./views/liveBlog/postParticleLoader\";\nimport userBehaviorLoader from \"./views/userBehavior/loader\";\nimport loadLazyMedia from \"./views/mediaLazyLoad\";\nimport loginSignupLoader from \"./views/loginSignup/loader\";\nimport nativeTalksLoader from \"./views/nativeTalks/loader\";\nimport pageFetchLoader from \"./views/pageFetch/loader\";\nimport pipe from \"./lib/core/functional/pipe\";\nimport noop from \"./lib/core/functional/noop\";\nimport postShares from \"./views/shares/postShares\";\nimport scrollParticleIntoView from \"./views/scrollParticleIntoView\";\nimport scrollTriggerLoader from \"./views/scrollTriggerLoader\";\nimport doubleStickyLoader from \"./views/doubleStickyLoader\";\nimport searchForm from \"./views/searchForm\";\nimport statsProvider from \"./stats\";\nimport stickyHeader from \"./views/stickyHeader\";\nimport subscriptionFormLoader from \"./views/subscriptionFormLoader\";\nimport tabsLoader from \"./views/tabs/loader\";\nimport videoPlayerLoader from \"./views/videoPlayerLoader\";\nimport uplynkLoader from \"./views/uplynk/loader\";\nimport assemblerUpDownVotingLoader from \"./views/assemblerUpDownVoting/loader\";\nimport gdprCookieAcceptHandler from \"./views/gdprCookieAcceptHandler.js\";\nimport followButtonLoader from \"./views/followButton/loader\";\nimport likeButtonLoader from \"./views/likeButton/loader\";\nimport foldersButtonLoader from \"./views/folders/foldersButton/loader\";\nimport foldersPostManagerLoader from \"./views/folders/foldersPostManager/loader\";\nimport loadLegacyLazyScripts from \"./views/mediaLazyLoad/lazyScript\";\nimport onPostLcp from \"./utils/onPostLcp.js\";\nimport createIdleQueue from \"./utils/createIdleQueue\";\nimport upgradeToLoggedInExperience from \"./upgradeToLoggedInLoader\";\nimport moduleLoader from \"./utils/moduleLoader\";\nimport initStdLib from \"./stdlib\";\nimport initAdLoader from \"./adLoader\";\nimport loadLdDebugger from \"./ldDebugger/loader\";\n\nconst HIGH_PRIORITY_TASK_TIMEOUT = 200;\nconst LOW_PRIORITY_TASK_TIMEOUT = 700;\n\nfunction triggerLoaded(context) {\n    let eventData = { url: location.href };\n    if (context.settings.post) {\n        eventData[\"id\"] = context.settings.post.id;\n    }\n    context.eventBus.publish(PAGE_LOAD_EVENT, eventData);\n\n    return context;\n}\n\nfunction urlEventListener(context) {\n    const eventMap = {\n        [URL_CHANGE_EVENT]: [\n            \"rebelmouse.urlChange\",\n            (data) => {\n                window.history.replaceState({}, data.headline || \"\", data.url);\n            },\n        ],\n        [URL_SCROLLED_EVENT]: [\"rebelmouse.urlScrolled\"],\n        [POST_SHARED_EVENT]: [\"rebelmouse.postShared\"],\n    };\n\n    Object.keys(eventMap).forEach((busName) => {\n        const eventData = eventMap[busName];\n        context.eventBus.subscribe(busName, (detail) => {\n            const [eventName, eventAction] = eventData;\n            const customEvent = new CustomEvent(eventName, { detail });\n            document.dispatchEvent(customEvent);\n            if (eventAction) {\n                eventAction(detail);\n            }\n        });\n    });\n\n    return context;\n}\n\nfunction addTaskToQueue(queue, timeout) {\n    return function onTask(task) {\n        return queue.pushTask(task, timeout);\n    };\n}\n\nfunction loadUnparsedQueue(tasksQueue, queueName, queueSelector, timeout) {\n    return function processQueue() {\n        const queueElement = document.querySelector(queueSelector);\n\n        if (queueElement && queueElement.textContent) {\n            const parsedJavascript = document.createElement(\"script\");\n            parsedJavascript.textContent = queueElement.textContent;\n            document.head.appendChild(parsedJavascript);\n            queueElement.remove();\n        }\n\n        if (queueName && queueName.length) {\n            queueName.forEach(addTaskToQueue(tasksQueue, timeout));\n            queueName.length = 0;\n        }\n    };\n}\n\nfunction prepareLowPriorityQueues(tasksQueue, queue) {\n    return function onPageIdle() {\n        queue.forEach(addTaskToQueue(tasksQueue, LOW_PRIORITY_TASK_TIMEOUT));\n    };\n}\n\nfunction initIdleQueue(tasksQ, lowerPriorityTasksQ, lowestPriorityTaskQ, activePriorityQueue) {\n    const tasksQueue = createIdleQueue(noop);\n    return function startIdleQueue(context) {\n        tasksQ.forEach(addTaskToQueue(tasksQueue, HIGH_PRIORITY_TASK_TIMEOUT));\n\n        const activeQueueLoader = loadUnparsedQueue(\n            tasksQueue,\n            activePriorityQueue,\n            \"script#user-javascript-active\",\n            HIGH_PRIORITY_TASK_TIMEOUT\n        );\n\n        const lowestQueueLoader = loadUnparsedQueue(\n            tasksQueue,\n            lowestPriorityTaskQ,\n            \"script#user-javascript-lowest\",\n            LOW_PRIORITY_TASK_TIMEOUT\n        );\n        lowerPriorityTasksQ.push(lowestQueueLoader);\n        lowestPriorityTaskQ.push(loadLegacyLazyScripts);\n\n        const handlePriorityQueues = pipe(\n            activeQueueLoader,\n            prepareLowPriorityQueues(tasksQueue, lowerPriorityTasksQ)\n        );\n\n        onPostLcp(handlePriorityQueues);\n        return context;\n    };\n}\n\nwindow.REBELMOUSE_INIT_IDLE_QUEUE = initIdleQueue;\n\nconst moduleList = [\n    scrollParticleIntoView,\n    initHamburgerMenu,\n    loadLazyMedia,\n    stickyHeader,\n    searchForm,\n    postShares,\n    keepReadingLoader,\n    pageFetchLoader,\n    bodyImageSharesLoader,\n    doubleStickyLoader,\n    scrollTriggerLoader,\n    changeUrlOnScrollLoader,\n    assemblerSlideshowLoader,\n    floatingElementsLoader,\n    liveBlogLoader,\n    subscriptionFormLoader,\n    videoPlayerLoader,\n    uplynkLoader,\n    nativeTalksLoader,\n    livePostParticleLoader,\n    userBehaviorLoader,\n    loginSignupLoader,\n    tabsLoader,\n    initProductsLoader,\n    assemblerUpDownVotingLoader,\n    gdprCookieAcceptHandler,\n    followButtonLoader,\n    likeButtonLoader,\n    foldersButtonLoader,\n    foldersPostManagerLoader,\n];\n\nconst bootQueue = initIdleQueue(\n    window.REBELMOUSE_TASKS_QUEUE,\n    window.REBELMOUSE_LOW_TASKS_QUEUE,\n    window.REBELMOUSE_LOWEST_TASKS_QUEUE,\n    window.REBELMOUSE_ACTIVE_TASKS_QUEUE\n);\n\nconst startApp = pipe(\n    statsProvider,\n    triggerLoaded,\n    urlEventListener,\n    initStdLib,\n    initAdLoader,\n    bootQueue,\n    moduleLoader(moduleList),\n    upgradeToLoggedInExperience,\n    loadLdDebugger\n);\n\nexport default startApp;\n","export default function scrollParticleIntoView(context) {\n    window.addEventListener(\"load\", () => {\n        const selector = `[data-href=\"https://${location.host}${location.pathname}\"]`;\n        const elementToScroll = document.querySelector(selector);\n        if (elementToScroll) {\n            elementToScroll.scrollIntoView({block: 'nearest'});\n        }\n    });\n    return context;\n}\n","import loadLazyFacebook from \"./lazyFacebook\";\nimport loadLazyIFrames from \"./lazyIframe\";\nimport loadLazyImages from \"./lazyImage\";\nimport loadLazyInstagram from \"./lazyInstagram\";\nimport loadLazyReddit from \"./lazyReddit\";\nimport loadLazyTwitter from \"./lazyTwitter\";\nimport loadLazyTikTok from \"./lazyTikTok\";\nimport loadLazyBrightcove from \"./lazyBrightcove\";\nimport loadModuleOnScroll from \"../../utils/loadModuleOnScroll\";\nimport viewportStyle from \"./viewportStyle\";\nimport loadLazyImgur from \"./lazyImgur\";\nimport loadLazyJWPlayer from \"./jwplayer/loader\";\n\nexport default function loadLazyMedia(context) {\n    loadLazyJWPlayer(context);\n    loadLazyImages(context.intersectionObserverProvider);\n    loadLazyIFrames(context.intersectionObserverProvider);\n    loadLazyInstagram(context.intersectionObserverProvider);\n    loadLazyFacebook(context.intersectionObserverProvider);\n    loadLazyReddit(context.intersectionObserverProvider);\n    loadLazyTwitter(context.intersectionObserverProvider);\n    loadLazyTikTok(context.intersectionObserverProvider);\n    loadLazyBrightcove(context.intersectionObserverProvider);\n    viewportStyle(context.intersectionObserverProvider);\n    loadLazyImgur(context.intersectionObserverProvider);\n\n    loadModuleOnScroll(() => {\n        import(\"./lazyStyle\").then((module) => {\n            module.default();\n        });\n    });\n\n    return context;\n}\n","import loadModuleOnScroll from \"../utils/loadModuleOnScroll\";\nimport createIdleScrollListener from \"../utils/createIdleScrollListener\";\n\nconst TOGGLE_CLASS_NAME = \"with-fixed-header\";\n\nfunction positionOnScroll(triggerNode) {\n    return createIdleScrollListener(() => {\n        const { toggleClass } = triggerNode.dataset;\n        if (triggerNode.getBoundingClientRect().top <= 0) {\n            document.body.classList.add(toggleClass);\n        } else {\n            document.body.classList.remove(toggleClass);\n        }\n    });\n}\n\nexport default function stickyElement(context) {\n    loadModuleOnScroll(() => {\n        const stickyHeader = document.querySelector(`[data-toggle-class=${TOGGLE_CLASS_NAME}]`);\n\n        if (stickyHeader) {\n            document.addEventListener(\"scroll\", positionOnScroll(stickyHeader), { passive: true });\n        }\n    });\n\n    return context;\n}\n","import { openPopup } from \"./common\";\nimport { POST_SHARED_EVENT } from \"../../consts\";\nimport createElementChangeListener from \"../../elementChangeListener\";\nimport raiseNotification from \"../../utils/raiseNotification\";\n\nconst selector = \".share-panel a\";\n\nfunction popupHandler(el, eventBus) {\n    el.addEventListener(\"click\", (event) => {\n        const { currentTarget } = event;\n        const { trackShare } = currentTarget.dataset;\n        const href = currentTarget.href;\n        if ( trackShare != \"Email\" && trackShare != \"Sms\" ) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n        openPopup(\n            href,\n            (trackShare || \"\").toLowerCase()\n        );\n        eventBus.publish(POST_SHARED_EVENT, {\n            url: href,\n            provider: (trackShare || \"\").toLowerCase()\n        });\n        return false;\n    }, true);\n}\n\nfunction copyTextHandler(el) {\n    el.href = \"javascript:void(0)\";\n    el.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n        navigator.clipboard.writeText(\n            event.currentTarget.dataset.clipboardText\n        );\n        raiseNotification(\"copied to clipboard\", \"success\");\n    });\n}\n\nfunction plusButtonHandler(el) {\n    const buttonsList = el.parentElement.children;\n    let found = false;\n    const hideButtonList = Array.from(buttonsList).reduce((acc, button) => {\n        found && acc.push(button);\n        found = found || button === el;\n        return acc;\n    }, []);\n\n    hideButtonList.forEach((button) => (button.style.display = \"none\"));\n\n    el.addEventListener(\"click\", (event) => {\n        event.currentTarget.remove();\n        hideButtonList.forEach(\n            (button) => (button.style.display = \"inline-block\")\n        );\n    });\n}\n\nfunction initShareButtonFactory(el, eventBus) {\n    if (el.dataset.clipboardText) {\n        return copyTextHandler(el);\n    } else if (el.classList.contains(\"share-plus\")) {\n        return plusButtonHandler(el);\n    } else {\n        return popupHandler(el, eventBus);\n    }\n}\n\nexport default function postShares(context) {\n    createElementChangeListener(selector, (el) => {\n        initShareButtonFactory(el, context.eventBus)\n    });\n    return context;\n}\n","import loadModuleOnScroll from \"../../utils/loadModuleOnScroll\";\nimport onPostLcp from \"../../utils/onPostLcp\";\n\nexport default function pageFetchLoader(context) {\n    function onModule(module) {\n        module.default(context);\n    }\n\n    loadModuleOnScroll(() => {\n        import(\"./module\").then(onModule);\n    });\n\n    onPostLcp(() => {\n        import(\"./postLcp\").then(onModule);\n    });\n\n    return context;\n}\n","import loadModuleOnScroll from \"../../utils/loadModuleOnScroll\";\n\nexport default function bodyImageSharesLoader(context) {\n    loadModuleOnScroll(() => {\n        import(\"./bodyImageShares\").then((module) => module.default(context.settings));\n    });\n    return context;\n}\n","import loadModuleOnScroll from \"../utils/loadModuleOnScroll\";\n\nexport default function changeUrlOnScrollLoader(context) {\n    loadModuleOnScroll(() => {\n        import(\"./changeUrlOnScroll\").then((module) => {\n            module.default(context);\n        });\n    });\n    return context;\n}\n","import loadModuleOnScroll from \"../utils/loadModuleOnScroll\";\n\nexport default function floatingElementsLoader(context) {\n    loadModuleOnScroll(() => {\n        const floatingElements = document.querySelectorAll(\".js-hidden-panel\");\n        if (floatingElements.length) {\n            import(\"./floatingElements\").then((module) => {\n                module.default(floatingElements);\n            });\n        }\n    });\n    return context;\n}\n","import createElementChangeListener from \"../elementChangeListener\";\n\nexport default function gdprCookieAcceptHandler(context) {\n    if (window.localStorage.getItem(\"gdpr-cookie\")) return context;\n\n    createElementChangeListener(\".gdpr-cookie\", (el) => {\n        el.classList.remove(\"hidden\");\n    });\n\n    createElementChangeListener(\".gdpr-cookie-accept\", (el) => {\n        el.addEventListener(\"click\", () => {\n            window.localStorage.setItem(\"gdpr-cookie\", \"accepted\");\n            document.querySelectorAll(\".gdpr-cookie\").forEach(node => {\n                node.classList.add(\"hidden\");\n            })\n        })\n    });\n\n    return context;\n}\n","export default function createTimer(callback, delayList, maxTotalDuration) {\n    const timerCreationTime = +new Date();\n    let timerId;\n    let startTime = 0;\n    let remaining = delayList[0];\n\n    const stop = () => {\n        clearTimeout(timerId);\n    };\n\n    const pause = () => {\n        stop();\n        remaining -= new Date() - startTime;\n    };\n\n    const start = step => {\n        startTime = +new Date();\n        timerId = setTimeout(() => {\n            step = step || 0;\n            if (startTime - timerCreationTime > maxTotalDuration) {\n                return;\n            }\n\n            callback(remaining);\n            step += 1;\n            remaining = delayList[step] || delayList[delayList.length - 1];\n            start(step);\n        }, remaining);\n    };\n\n    return {\n        start,\n        pause,\n        stop\n    };\n}\n","import getDevice from \"../utils/getDevice\";\r\nimport loadContextData from \"../utils/loadContextData\";\r\nimport { initClickHandler } from \"../utils/initClickHandler\";\r\nimport htmlDecode from \"../utils/htmlDecode\";\r\nimport * as postStatus from \"../utils/postStatus\";\r\nimport createElementChangeListener from \"../elementChangeListener\";\r\nimport createSmartIntersector from \"../utils/createSmartIntersector\";\r\nimport rebelSlider from \"../lib/sliderLoader\";\r\nimport loadExternalScript from \"../utils/loadExternalScript\";\r\nimport loadExternalStylesheet from \"../utils/loadExternalStylesheet\";\r\nimport loadFontFace from \"../utils/loadFontFace\";\r\nimport { showFlexibleSticky } from \"../views/doubleStickyLoader\";\r\nimport showInformer from \"../views/informer/loader\";\r\nimport getRenderer from \"../renderer/loadRenderer\";\r\nimport fullBootstrap from \"../transport/fullBootstrap\";\r\nimport partial from \"../lib/core/functional/partial\";\r\nimport raiseNotification from \"../utils/raiseNotification\";\r\nimport { spawnTask, runAsTasks } from \"../utils/spawnTask.js\";\r\n\r\nexport default function initStdLib(context) {\r\n    window.REBELMOUSE_STDLIB = {\r\n        context,\r\n        getDevice,\r\n        loadContextData,\r\n        initClickHandler,\r\n        htmlDecode,\r\n        createElementChangeListener,\r\n        spawnTask,\r\n        runAsTasks,\r\n        createSmartIntersector: partial(\r\n            createSmartIntersector,\r\n            context.intersectionObserverProvider\r\n        ),\r\n        rebelSlider,\r\n        loadExternalScript,\r\n        loadExternalStylesheet,\r\n        loadFontFace,\r\n        getRenderer,\r\n        postStatus,\r\n        raiseNotification,\r\n        onElementInViewport: context.intersectionObserverProvider.addTask,\r\n        widgetControl: {\r\n            doubleSticky: { showFlexibleSticky },\r\n        },\r\n        showInformer: (config) => {\r\n            showInformer(context, config);\r\n        },\r\n        getBootstrap: () => fullBootstrap(context),\r\n    };\r\n    return context;\r\n}\r\n","export default function loadLdDebugger(context) {\n    const queryParams = new URLSearchParams(document.location.search);\n    if (queryParams.has(\"debugld\")) {\n        const value = queryParams.get(\"debugld\");\n        if (value) {\n            import(\"./index.js\").then((module) => module.default(context, value.split(\",\")));\n        }\n    }\n}\n","__webpack_public_path__ = window.REBELMOUSE_BASE_ASSETS_URL;\n\nimport startApp from \"./app\";\nimport getContext from \"./context\";\n\nexport default function onDomReady() {\n    startApp(getContext());\n}\n","import onDomReady from \"./index\";\n\nvar neededPolyfills = 0;\n\nfunction loadApp() {\n    if (document.readyState !== \"loading\") {\n        onDomReady();\n    } else {\n        window.addEventListener(\"DOMContentLoaded\", onDomReady);\n    }\n}\n\nfunction onPolyfillLoad() {\n    neededPolyfills--;\n    if (neededPolyfills === 0) {\n        loadApp();\n    }\n}\n\nfunction existsOrPolyfill(api, file) {\n    if (api) {\n        return;\n    }\n    neededPolyfills++;\n    var script = document.createElement(\"script\");\n    script.src = `${window.REBELMOUSE_BASE_SSL_DOMAIN}/static/polyfills/${file}.js`;\n    script.addEventListener(\"load\", onPolyfillLoad);\n    document.head.appendChild(script);\n}\n\nexistsOrPolyfill(window.requestAnimationFrame, \"requestAnimationFrame\");\nexistsOrPolyfill(window.MutationObserver, \"mutationobserver-polyfill\");\nexistsOrPolyfill(window.IntersectionObserver, \"intersection-observer\");\nexistsOrPolyfill(typeof URL === \"function\", \"url-polyfill\");\nexistsOrPolyfill(window.URLSearchParams, \"urlsearchparams-polyfill\");\nexistsOrPolyfill(window.Array.from, \"arrayfrom-polyfill\");\nexistsOrPolyfill(window.Array.prototype.find, \"find-polyfill\");\nexistsOrPolyfill(Element.prototype.replaceWith, \"replace-with-polyfill\");\nexistsOrPolyfill(\"content\" in document.createElement(\"template\"), \"template-v2\");\nexistsOrPolyfill(window.NodeList.prototype.forEach, \"polyfill-ie11-nodelist-foreach\");\nexistsOrPolyfill(typeof window.CustomEvent === \"function\", \"event-polyfill\");\nexistsOrPolyfill(Element.prototype.closest && Element.prototype.matches, \"closest-polyfill\");\nexistsOrPolyfill(Object.values, \"object-values-polyfill\");\nexistsOrPolyfill(Object.entries, \"entries-polyfill\");\nexistsOrPolyfill(Object.fromEntries, \"fromEntries-polyfill\");\nexistsOrPolyfill(Element.prototype.remove, \"remove-polyfill\");\nexistsOrPolyfill(\"classList\" in Element.prototype, \"classList-polyfill\");\nexistsOrPolyfill(window.Promise, \"promise-polyfill\");\nexistsOrPolyfill(window.fetch, \"fetch-polyfill-v3\");\nexistsOrPolyfill(Array.prototype.flatMap, \"flatMap-polyfill\");\nexistsOrPolyfill(Array.prototype.includes, \"includes-polyfills\");\n\nif (neededPolyfills === 0) {\n    loadApp();\n}\n","export default function call(...args) {\n    return function callFunction(fun) {\n        return fun.call(null, ...args);\n    };\n}\n","export default function curry(fun) {\n    const expectedArguments = fun.length;\n\n    return function curried(...args) {\n        if (args.length === expectedArguments) return fun.call(null, ...args);\n        return fun.bind(null, ...args);\n    };\n}\n","const fromNullable = (thing) =>\n    new Promise((res, rej) => (thing === null || thing === undefined ? rej(thing) : res(thing)));\n\nexport default fromNullable;\n","export default function () {}\r\n","export default function partial(fun, ...args) {\r\n    return function (...moreArgs) {\r\n        return fun.apply(null, args.concat(moreArgs));\r\n    };\r\n}\r\n","export default function pipe(...functions) {\n    return (value) => {\n        return functions.reduce((currentValue, currentFunction) => {\n            return currentFunction(currentValue);\n        }, value);\n    };\n}\n","export default function thunk(fun) {\r\n    return function recieveArguments(...args) {\r\n        return function call() {\r\n            return fun.apply(null, args);\r\n        };\r\n    };\r\n}\r\n","export default function loadRenderer() {\r\n    return import(\"./renderer\").then((module) => module.default());\r\n}\r\n","import fromNullable from \"../lib/core/functional/fromNullable\";\nimport thunk from \"../lib/core/functional/thunk\";\n\nimport { retrieveJsonRequest } from \"./utils\";\n\nlet bootstrap;\n\nconst fetchFullBootstrap = thunk((bootstrapUrl) => retrieveJsonRequest(bootstrapUrl));\n\nfunction getStoredBootstrap() {\n    return fromNullable(bootstrap);\n}\n\nfunction cacheBootstrap(loadedBootstrap) {\n    bootstrap = loadedBootstrap;\n    return bootstrap;\n}\n\nexport default function fullBootstrap(context) {\n    return getStoredBootstrap()\n        .catch(fetchFullBootstrap(context.settings.fullBootstrapUrl))\n        .then(cacheBootstrap);\n}\n","import curry from \"../lib/core/functional/curry\";\n\nfunction sendFetch(url, options) {\n    const [fetchUrl, fetchOptions] = prepareSSLRequest(url, options);\n    return fetch(fetchUrl, fetchOptions).then(jsonHandler).catch(handleFetchError);\n}\n\nexport function sendRawRequest(url, method, body) {\n    const options = {\n        method,\n        body,\n    };\n    return sendFetch(url, options);\n}\n\nexport function sendXHRRequest(url, method, body) {\n    const options = {\n        method,\n        body,\n        headers: { ...HEADER_XMLHTTPREQUEST },\n    };\n    return sendFetch(url, options);\n}\n\nexport function sendJsonRequest(url, method, body) {\n    const options = {\n        method,\n        body: JSON.stringify(body),\n        headers: { ...HEADER_CONTENT_JSON },\n    };\n    return sendFetch(url, options);\n}\n\nexport function retrieveJsonRequest(url, method) {\n    return sendFetch(url, { method: method || \"GET\" });\n}\n\nconst prepareSSLRequest = (url, userOptions) => {\n    const options = { ...userOptions } || {};\n    const baseSSLDomain = window.REBELMOUSE_BASE_SSL_DOMAIN;\n    url = (baseSSLDomain || \"https://\" + location.host) + url;\n    options.credentials = \"include\";\n    return [url, options];\n};\n\nconst HEADER_XMLHTTPREQUEST = {\n    \"X-Requested-With\": \"XMLHttpRequest\",\n};\n\nconst HEADER_CONTENT_JSON = {\n    Accept: \"application/json\",\n    \"Content-Type\": \"application/json\",\n};\n\nconst DEFAULT_ERROR = { message: \"It wasn't possible to fulfil this request\" };\n\nfunction isObject(maybeObject) {\n    return maybeObject && typeof maybeObject === \"object\";\n}\n\nconst rejectEvaluators = [\n    (_rawRes, res) => (res === false ? { ...DEFAULT_ERROR } : false),\n    (rawRes, res) => (!rawRes.ok ? res : false),\n    (_rawRes, res) => (isObject(res) && \"error\" in res ? { ...res, message: res.error } : false),\n    (_rawRes, res) => (isObject(res) && \"message\" in res && \"code\" in res ? res : false),\n    (_rawRes, res) =>\n        isObject(res) && \"errors\" in res && res.errors && Array.isArray(res.errors.email)\n            ? { ...res, message: res.errors.email[0] }\n            : false,\n];\n\nconst resolveEvaluators = [(_rawRes, res) => (res === true ? {} : false), (_rawRes, res) => res];\n\nfunction evaluatePipeline(rawRes, res, evaluators) {\n    let transformedResponse;\n    evaluators.some((fun) => {\n        try {\n            transformedResponse = fun(rawRes, res);\n        } catch {\n            transformedResponse = false;\n        }\n        return transformedResponse;\n    });\n    return transformedResponse;\n}\n\nconst handleJsonResponse = curry((rawResponse, response) => {\n    const rejectResponse = evaluatePipeline(rawResponse, response, rejectEvaluators);\n    if (rejectResponse) {\n        throw rejectResponse;\n    }\n\n    return evaluatePipeline(rawResponse, response, resolveEvaluators);\n});\n\nconst coerceResponseToJson = curry((rawResponse, textResponse) => {\n    let readableResponse;\n    try {\n        readableResponse = JSON.parse(textResponse);\n    } catch {\n        if (rawResponse.ok) {\n            return { message: textResponse };\n        } else {\n            return { error: textResponse };\n        }\n    }\n    return readableResponse;\n});\n\nfunction jsonHandler(response) {\n    return response.text().then(coerceResponseToJson(response)).then(handleJsonResponse(response));\n}\n\nconst NETWORK_ERROR = { message: \"There was a network error, please try again\" };\n\nfunction handleFetchError(error) {\n    if (error instanceof TypeError) {\n        throw NETWORK_ERROR;\n    }\n\n    throw error;\n}\n","import noop from \"./lib/core/functional/noop\";\r\n\r\nconst error = new Error(\"User is not logged in\");\r\nconst waiters = [];\r\nconst listeners = [];\r\n\r\nfunction upgrade(context) {\r\n    if (context.settings.isUserLoggedIn) {\r\n        import(\"./upgradeToLoggedIn\").then((module) => module.default(context, waiters, listeners));\r\n    }\r\n}\r\n\r\nexport function doUpgradeToLoggedIn(context) {\r\n    if (context.settings.isUserLoggedIn) {\r\n        return context;\r\n    }\r\n    context.settings.isUserLoggedIn = true;\r\n    upgrade(context);\r\n    return context;\r\n}\r\n\r\nexport default function upgradeToLoggedInExperienceLoader(context) {\r\n    context.refreshUserInfo = noop;\r\n    context.getUserInfo = () =>\r\n        new Promise((resolve, reject) => {\r\n            if (context.settings.isUserLoggedIn) {\r\n                waiters.push([resolve, reject]);\r\n            } else {\r\n                reject(error);\r\n            }\r\n        });\r\n\r\n    context.listenForUserInfo = (cb) => {\r\n        listeners.push(cb);\r\n        if (!context.settings.isUserLoggedIn) {\r\n            cb(error, null);\r\n        }\r\n    };\r\n\r\n    upgrade(context);\r\n\r\n    return context;\r\n}\r\n","import call from \"../lib/core/functional/call\";\r\nconst runCallback = call();\r\n\r\nexport default function createCallbackRunner(boot, autoTriggerAfterRun) {\r\n    const callbacks = [];\r\n    let ran = false;\r\n\r\n    function add(callback) {\r\n        if (autoTriggerAfterRun && ran) {\r\n            callback();\r\n            return;\r\n        }\r\n\r\n        callbacks.push(callback);\r\n        if (callbacks.length == 1) {\r\n            boot();\r\n        }\r\n    }\r\n\r\n    function run() {\r\n        ran = true;\r\n        callbacks.forEach(runCallback);\r\n        callbacks.length = 0;\r\n    }\r\n\r\n    function hasRun() {\r\n        return ran;\r\n    }\r\n\r\n    return { add, run, hasRun };\r\n}\r\n","const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\r\nconst knownConnections = [\"4g\", \"3g\", \"2g\", \"slow-2g\"];\r\nconst listenerMap = {};\r\nlet listeners = [];\r\n\r\nfunction normalizeConnection(connection) {\r\n    if (knownConnections.includes(connection)) {\r\n        return connection;\r\n    } else {\r\n        return \"4g\";\r\n    }\r\n}\r\n\r\nfunction runCallbacks([callback, once]) {\r\n    callback(normalizeConnection(connection.effectiveType));\r\n    return !once;\r\n}\r\n\r\nfunction onConnectionInfoChanged() {\r\n    listeners = listeners.filter(runCallbacks);\r\n}\r\n\r\nfunction startListeningChanges() {\r\n    connection.addEventListener(\"change\", onConnectionInfoChanged);\r\n}\r\n\r\nexport function getConnectionType() {\r\n    return connection ? normalizeConnection(connection.effectiveType) : \"4g\";\r\n}\r\n\r\nexport function stopListening(callback) {\r\n    if (!(callback in listenerMap)) {\r\n        return;\r\n    }\r\n\r\n    const callbackObject = listenerMap[callback];\r\n    delete listenerMap[callback];\r\n    const index = listeners.indexOf(callbackObject);\r\n    listeners.splice(index, 1);\r\n    if (listeners.length === 0) {\r\n        connection.removeEventListener(\"change\", onConnectionInfoChanged);\r\n    }\r\n}\r\n\r\nexport function listenToConnectionChanges(callback, once) {\r\n    if (!connection) {\r\n        return;\r\n    }\r\n\r\n    const callbackObject = [callback, once || false];\r\n    listeners.push(callbackObject);\r\n    listenerMap[callback] = callbackObject;\r\n    if (listeners.length === 1) {\r\n        startListeningChanges();\r\n    }\r\n}\r\n","export default function createIdleScrollListener(callback) {\n    let ticking = false;\n\n    const runCallback = () => {\n        callback();\n        ticking = false;\n    };\n\n    return function onScrollIdle() {\n        if (ticking) {\n            return;\n        }\n        ticking = true;\n        setTimeout(runCallback, 1);\n    };\n}\n","import curry from \"../lib/core/functional/curry\";\nimport thunk from \"../lib/core/functional/thunk\";\nimport createElementChangeListener from \"../elementChangeListener\";\n\nimport { listenToConnectionChanges, getConnectionType } from \"./connectionHandler\";\nimport loadModuleOnScroll from \"./loadModuleOnScroll\";\nimport loadExternalScript from \"./loadExternalScript\";\n\nconst noop = () => {};\nconst defaultTreshholdCalculator = {\n    \"4g\": function on4G() {\n        return Math.max(window.innerHeight * 1.5, 700);\n    },\n    \"3g\": function on3G() {\n        return Math.max(window.innerHeight * 2, 900);\n    },\n    \"2g\": function on2G() {\n        return window.innerHeight * 3;\n    },\n    \"slow-2g\": function onSlow2G() {\n        return window.innerHeight * 3;\n    },\n};\n\nexport default function createSmartIntersector(\n    intersectionObserverProvider,\n    {\n        dependencySrc,\n        selector,\n        onIntersect,\n        onAppear,\n        beforeDependencyLoad = noop,\n        onDependencyLoad = noop,\n        oneTime = true,\n        initialThreshold = 500,\n        thresholdCalculator = {},\n    }\n) {\n    const intersectorContext = createIntersectorContext({\n        dependencySrc,\n        onDependencyLoad,\n        beforeDependencyLoad,\n    });\n    const onIntersectCallback = createIntersectorCallback(intersectorContext, onIntersect);\n\n    const realTreshholdCalculator = {\n        ...defaultTreshholdCalculator,\n        ...thresholdCalculator,\n    };\n    const passiveObservers = observerCreator(\n        intersectionObserverProvider,\n        initialThreshold,\n        selector,\n        onIntersectCallback,\n        onAppear,\n        oneTime\n    );\n    const onScroll = createActiveObservers(\n        passiveObservers,\n        initialThreshold,\n        realTreshholdCalculator,\n        intersectionObserverProvider,\n        selector,\n        onIntersectCallback,\n        onAppear,\n        oneTime\n    );\n\n    loadModuleOnScroll(onScroll);\n\n    if (dependencySrc) {\n        loadModuleOnScroll(eagerDependencyLoader(intersectorContext, selector));\n    }\n}\n\nfunction createActiveObservers(\n    previousObservers,\n    previousTreshhold,\n    treshholdCalculator,\n    intersectionObserverProvider,\n    selector,\n    onIntersectCallback,\n    onAppear,\n    oneTime\n) {\n    return function onChange() {\n        const newThreshold = getActiveUserThreshold(treshholdCalculator);\n\n        let changedObservers = previousObservers;\n        if (newThreshold !== previousTreshhold) {\n            previousObservers.observers.flatMap(flattenObserver).forEach(disconnectObserver);\n            changedObservers = observerCreator(\n                intersectionObserverProvider,\n                newThreshold,\n                selector,\n                onIntersectCallback,\n                onAppear,\n                oneTime,\n                previousObservers.task\n            );\n        }\n\n        const nextChange = createActiveObservers(\n            changedObservers,\n            newThreshold,\n            treshholdCalculator,\n            intersectionObserverProvider,\n            selector,\n            onIntersectCallback,\n            onAppear,\n            oneTime\n        );\n\n        listenToConnectionChanges(nextChange, true);\n    };\n}\n\nfunction flattenObserver(observer) {\n    return observer;\n}\n\nfunction disconnectObserver(observer) {\n    observer.disconnect();\n}\n\nfunction getActiveUserThreshold(treshholdCalculator) {\n    return treshholdCalculator[getConnectionType()]();\n}\n\nfunction createIntersectorCallback(intersectorContext, onIntersect) {\n    if (intersectorContext.needsDependency) {\n        return createDependencyIntersectorLoader(intersectorContext, onIntersect);\n    }\n    return onIntersect;\n}\n\nconst createDependencyIntersectorLoader = curry((intersectorContext, onIntersect, entry) => {\n    if (intersectorContext.hasLoadedDependency) {\n        onIntersect(entry);\n        return;\n    }\n\n    function onDependencyLoad() {\n        onIntersect(entry);\n    }\n\n    const dependencyLoader = createDependencyLoader(intersectorContext, onDependencyLoad);\n    dependencyLoader();\n});\n\nfunction observerCreator(\n    intersectionObserverProvider,\n    threshold,\n    selector,\n    onIntersect,\n    onAppear,\n    oneTime,\n    previousState = {}\n) {\n    const task = {\n        ...previousState,\n        selector,\n        threshold,\n        onAppear,\n        oneTime,\n        onIntersect,\n    };\n\n    return { task, observers: intersectionObserverProvider.addTask(task) };\n}\n\nfunction createIntersectorContext({ dependencySrc, onDependencyLoad, beforeDependencyLoad }) {\n    let called = false;\n    let beforeCalled = false;\n    return {\n        dependencySrc,\n        onDependencyLoad() {\n            if (!called) {\n                called = true;\n                onDependencyLoad();\n            }\n        },\n        beforeDependencyLoad() {\n            if (!beforeCalled) {\n                beforeCalled = true;\n                beforeDependencyLoad();\n            }\n        },\n        needsDependency: dependencySrc != undefined,\n        hasLoadedDependency: dependencySrc == undefined,\n    };\n}\n\nconst eagerDependencyLoader = thunk((intersectorContext, selector) => {\n    if (!intersectorContext.needsDependency || intersectorContext.hasLoadedDependency) {\n        return;\n    }\n\n    createElementChangeListener(\n        selector,\n        createDependencyLoader(intersectorContext, intersectorContext.onDependencyLoad),\n        true\n    );\n});\n\nconst createDependencyLoader = thunk((intersectorContext, callback) => {\n    intersectorContext.beforeDependencyLoad();\n    loadExternalScript(intersectorContext.dependencySrc, function onLoad() {\n        intersectorContext.hasLoadedDependency = true;\n        intersectorContext.onDependencyLoad();\n        callback();\n    });\n});\n","const userAgent = navigator.userAgent;\nexport default function getDevice() {\n    return /Android|webOS|iPhone|iPod|BlackBerry/i.test(userAgent)\n        ? \"mobile\"\n        : /iPad/i.test(userAgent)\n        ? \"tablet\"\n        : \"desktop\";\n}\n","const domParser = new DOMParser();\n\nexport default function htmlDecode(htmlString) {\n    const doc = domParser.parseFromString(htmlString, \"text/html\");\n    return doc.documentElement.childNodes[1].innerHTML;\n}\n","export const requestIdleCallback =\r\n    window.requestIdleCallback ||\r\n    function requestIdleCallbackPolyfill(cb) {\r\n        return setTimeout(function triggerIdleCallback() {\r\n            cb({\r\n                didTimeout: false,\r\n                timeRemaining: function timeRemainingPolyfill() {\r\n                    return 50;\r\n                },\r\n            });\r\n        }, 1);\r\n    };\r\n\r\nexport const cancelIdleCallback =\r\n    window.cancelIdleCallback ||\r\n    function cancelIdleCallbackPolyfill(id) {\r\n        clearTimeout(id);\r\n    };\r\n","export function initClickHandler(button, action) {\n    button.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n        action(event);\n    });\n}\n\nexport function initClickHandlerAll(buttons, action) {\n    buttons.forEach((button) => initClickHandler(button, action));\n}\n","const loadedContexts = {};\n\nexport default function loadContextData(selector, baseElement) {\n    if (loadedContexts[selector]) {\n        return loadedContexts[selector];\n    } else {\n        const parent = baseElement || document;\n        const contextElement = parent.querySelector(selector);\n        return (loadedContexts[selector] = contextElement ? JSON.parse(contextElement.text) : {});\n    }\n}\n","import curry from \"../lib/core/functional/curry\";\nimport thunk from \"../lib/core/functional/thunk\";\n\nimport createQueue from \"./simpleQueue\";\nimport { listenToConnectionChanges } from \"./connectionHandler\";\n\nconst DEFAULT_LIMITS = {\n    \"4g\": 5,\n    \"3g\": 3,\n    \"2g\": 2,\n    \"slow-2g\": 2,\n};\n\nconst COMPOSED_LIMITS = {\n    ...DEFAULT_LIMITS,\n    ...(window.RM_EXT_DL_LIMIT || {}),\n};\n\nconst { request, release, changeSettings, onEmpty } = createQueue(COMPOSED_LIMITS[\"4g\"]);\n\nconst loadedResources = {};\nconst loadWaiters = {};\n\nconst connectionMap = {\n    \"4g\": () => changeSettings(COMPOSED_LIMITS[\"4g\"]),\n    \"slow-2g\": () => changeSettings(COMPOSED_LIMITS[\"slow-2g\"]),\n    \"2g\": () => changeSettings(COMPOSED_LIMITS[\"2g\"]),\n    \"3g\": () => changeSettings(COMPOSED_LIMITS[\"3g\"]),\n};\n\nonEmpty(function onDoneLoadingResources() {\n    const event = new CustomEvent(\"externalresourcesqueue:finished\");\n    window.dispatchEvent(event);\n});\n\nlistenToConnectionChanges(function onConnectionInfoChanged(effectiveType) {\n    (connectionMap[effectiveType] || connectionMap[\"4g\"])();\n});\n\nconst createLoadCallback = curry(function createLoadCallback(resourceID, callback, event) {\n    if (resourceID) {\n        release(resourceID);\n    }\n    callback(event);\n});\n\nconst loadElement = curry((element, callback, resourceID) => {\n    element.addEventListener(\"load\", createLoadCallback(resourceID, callback));\n    element.addEventListener(\"error\", createLoadCallback(resourceID, callback));\n    document.head.insertBefore(element, document.head.firstChild);\n});\n\nfunction hasLoaded(selector) {\n    return localStorage.getItem(`rmEx-${selector}`) === \"1\";\n}\n\nfunction storeLoadedResource(selector) {\n    loadedResources[selector] = true;\n    localStorage.setItem(`rmEx-${selector}`, \"1\");\n}\n\nconst runCallback = curry(function runCallback(selector, callbackIndex, callbackPair) {\n    const callback = callbackPair[callbackIndex];\n\n    if (!callback) {\n        console.log(`Callback for index ${callbackIndex} not found in pair.`);\n        return;\n    }\n\n    try {\n        callback();\n    } catch (error) {\n        console.error(`Error on user JS after loading ${selector}`);\n        console.error(error);\n        console.error(callback);\n    }\n});\n\nconst runQueue = thunk((selector, event) => {\n    if (event instanceof ErrorEvent || event.type === \"error\") {\n        loadWaiters[selector].forEach(runCallback(selector, 1));\n    } else {\n        storeLoadedResource(selector);\n        loadWaiters[selector].forEach(runCallback(selector, 0));\n    }\n    loadWaiters[selector].length = 0;\n});\n\nconst makeCallback = curry((selector, event) => {\n    setTimeout(runQueue(selector, event), 1);\n});\n\nexport default function loadExternalResource(selector, element, callback, onError) {\n    const callbackPair = [callback, onError];\n\n    if (selector in loadedResources) {\n        runCallback(selector, 0, callbackPair);\n        return;\n    }\n\n    if (selector in loadWaiters) {\n        loadWaiters[selector].push(callbackPair);\n        return;\n    }\n\n    const existingResource = document.querySelector(selector);\n    if (existingResource) {\n        storeLoadedResource(selector);\n        runCallback(selector, 0, callbackPair);\n        return;\n    }\n\n    loadWaiters[selector] = [callbackPair];\n\n    const load = loadElement(element, makeCallback(selector));\n\n    if (hasLoaded(selector)) {\n        load(false);\n    } else {\n        request().then(load);\n    }\n}\n","import noop from \"../lib/core/functional/noop.js\";\n\nimport loadExternalResource from \"./loadExternalResource\";\n\nfunction isFbHack(src) {\n    try {\n        const url = new URL(src);\n        return url.host === \"connect.facebook.net\";\n    } catch (error) {\n        return false;\n    }\n}\n\nfunction loadTag(src, callback, onError) {\n    const selector = `script[src=\"${src}\"]`;\n    const element = document.createElement(\"script\");\n    element.src = src;\n    element.async = true;\n    loadExternalResource(selector, element, callback, onError || noop);\n}\n\nconst BACKUP_INSTAGRAM =\n    \"https://s3.amazonaws.com/roar-assets-auto.rbl.ms/shared/instagram/embed.js\";\n\nexport default function loadExternalScript(src, callback, onError) {\n    if (isFbHack(src)) {\n        function onIgReady() {\n            loadTag(src, callback, onError);\n        }\n\n        loadExternalScript(\"https://www.instagram.com/embed.js\", onIgReady);\n        return;\n    }\n\n    if (src === \"https://www.instagram.com/embed.js\") {\n        loadTag(BACKUP_INSTAGRAM, callback, noop);\n        return;\n    }\n\n    loadTag(src, callback, onError);\n}\n","import noop from \"../lib/core/functional/noop.js\";\n\nimport loadExternalResource from \"./loadExternalResource\";\n\nexport default function loadExternalStylesheet(href, callback, onError) {\n    const selector = `stylesheet[href=\"${href}\"]`;\n    const element = document.createElement(\"link\");\n    element.href = href;\n    element.rel = \"stylesheet\";\n    loadExternalResource(selector, element, callback, onError || noop);\n}\n","import createElementChangeListener from \"../elementChangeListener\";\r\n\r\nexport default function loadModuleOnElement(selector, moduleLoader, context, oneTime) {\r\n    createElementChangeListener(\r\n        selector,\r\n        (element) => {\r\n            moduleLoader().then((module) => {\r\n                module.default(context, element);\r\n            });\r\n        },\r\n        oneTime\r\n    );\r\n}\r\n","import callbackRunner from \"./callbackRunner\";\n\nconst { add, run } = callbackRunner(boot);\n\nfunction boot() {\n    window.addEventListener(\"scroll\", onScroll, { passive: true });\n}\n\nfunction onScroll() {\n    window.removeEventListener(\"scroll\", onScroll);\n    setTimeout(run, 0);\n}\n\nexport default function loadModuleOnScroll(callback) {\n    add(callback);\n}\n","import curry from \"../lib/core/functional/curry\";\r\n\r\nconst moduleLoader = curry(function moduleLoader(moduleList, context) {\r\n    moduleList.map((module) =>\r\n        module.then ? module.then((m) => m.default(context)) : module(context)\r\n    );\r\n    return context;\r\n});\r\n\r\nexport default moduleLoader;\r\n","import { onLCP } from \"web-vitals\";\r\nimport noop from \"../lib/core/functional/noop\";\r\nimport callbackRunner from \"./callbackRunner\";\r\nimport { requestIdleCallback, cancelIdleCallback } from \"./idleCallback.js\";\r\n\r\nconst USER_ACTIVITY_EVENTS = [\"scroll\", \"click\", \"keydown\"];\r\nconst MAGIC_TIMEOUT = 4001;\r\nconst IDEAL_LCP = 2001; //Magic number based on the LCP we have on our optimied sites\r\nconst REQUIRED_LCP_ELEMENTS = 2;\r\nconst LCP_ELEMENT_SELECTOR = \".rm-lcp-element\";\r\nconst ACCEPTABLE_SCREEN_AREA = window.innerWidth * window.innerHeight * 0.2;\r\n\r\nconst { add, run, hasRun } = callbackRunner(noop, true);\r\n\r\nfunction shouldEnablePostLcp() {\r\n    const params = new URLSearchParams(document.location.search);\r\n    if (params.has(\"sleepy_time\")) {\r\n        return false;\r\n    }\r\n\r\n    const userAgent = navigator.userAgent;\r\n    if (userAgent.indexOf(\"Lighthouse\") >= 0) {\r\n        return false;\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\nlet timeoutId;\r\nlet idleCallbackId;\r\nlet foundLcps = 0;\r\n\r\nconst mainThreadTime = 14;\r\nconst canUsePostLcp = shouldEnablePostLcp();\r\n\r\nfunction canUseLcp() {\r\n    return (\r\n        \"PerformanceObserver\" in window &&\r\n        PerformanceObserver.supportedEntryTypes &&\r\n        PerformanceObserver.supportedEntryTypes.includes(\"largest-contentful-paint\")\r\n    );\r\n}\r\n\r\nfunction onPostLcpReady(_event) {\r\n    if (hasRun()) {\r\n        return;\r\n    }\r\n    run();\r\n    cancelIdleCallback(idleCallbackId);\r\n    clearTimeout(timeoutId);\r\n    USER_ACTIVITY_EVENTS.forEach(unbindEvent);\r\n}\r\n\r\nfunction bindEvent(eventName) {\r\n    window.addEventListener(eventName, onPostLcpReady, { passive: true });\r\n}\r\n\r\nfunction unbindEvent(eventName) {\r\n    window.removeEventListener(eventName, onPostLcpReady);\r\n}\r\n\r\nfunction onIdle(idleDeadline) {\r\n    const timeRemaining = idleDeadline.timeRemaining();\r\n    if (timeRemaining > mainThreadTime) {\r\n        onPostLcpReady();\r\n    } else {\r\n        idleCallbackId = requestIdleCallback(onIdle);\r\n    }\r\n}\r\n\r\nfunction prepareIdleCallback() {\r\n    cancelIdleCallback(idleCallbackId);\r\n    idleCallbackId = requestIdleCallback(onIdle);\r\n}\r\n\r\nfunction isSelectedLcpElement(element) {\r\n    if (!element) {\r\n        return false;\r\n    }\r\n\r\n    if (\"matches\" in element && element.matches(LCP_ELEMENT_SELECTOR)) {\r\n        return true;\r\n    }\r\n\r\n    if (\"closest\" in element && !!element.closest(LCP_ELEMENT_SELECTOR)) {\r\n        return true;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\nfunction waitForIdle(event) {\r\n    clearTimeout(timeoutId);\r\n    if (hasRun()) {\r\n        return;\r\n    }\r\n\r\n    const { entries } = event;\r\n    const lastEntry = entries[entries.length - 1];\r\n    foundLcps++;\r\n    if (\r\n        foundLcps >= REQUIRED_LCP_ELEMENTS ||\r\n        lastEntry.url ||\r\n        lastEntry.size > ACCEPTABLE_SCREEN_AREA ||\r\n        isSelectedLcpElement(lastEntry.element)\r\n    ) {\r\n        prepareIdleCallback();\r\n    } else {\r\n        timeoutId = setTimeout(prepareIdleCallback, MAGIC_TIMEOUT);\r\n    }\r\n}\r\n\r\nfunction setUpPostLcpListener() {\r\n    USER_ACTIVITY_EVENTS.forEach(bindEvent);\r\n    if (canUseLcp()) {\r\n        onLCP(waitForIdle, { reportAllChanges: true });\r\n    } else {\r\n        setTimeout(prepareIdleCallback, IDEAL_LCP);\r\n    }\r\n}\r\n\r\nsetUpPostLcpListener();\r\nexport default function onPostLcp(callback) {\r\n    if (canUsePostLcp) {\r\n        add(callback);\r\n    }\r\n}\r\n","/**\n * @param {string} message\n * @param {'success' | 'error' | 'notice'} type\n * @param {number} [timeout]\n */\nexport default function raiseNotification(message, type, timeout) {\n    let notificationList = document.querySelector(\"#notification\");\n    let notificationListItem = document.createElement(\"li\");\n\n    if (!notificationList) {\n        notificationList = document.createElement(\"ul\");\n        notificationList.setAttribute(\"id\", \"notification\");\n        notificationList.classList.add(\"notification\");\n        document.body.prepend(notificationList);\n    }\n\n    type = type || \"\";\n    timeout = timeout || 5000;\n\n    notificationListItem.innerText = message;\n    notificationListItem.classList.add(type);\n    notificationList.append(notificationListItem);\n    notificationList.style.display = \"block\";\n\n    setTimeout(() => {\n        notificationList.removeChild(notificationListItem);\n    }, timeout);\n}\n","import curry from \"../lib/core/functional/curry\";\n\nconst freeResourceFinder = ([_resourceID, isActive]) => !isActive;\n\nexport default function createQueue(startLimit) {\n    const usedResources = {};\n    const queue = [];\n    let onQueueEmpty = () => {};\n    let maxSlots = startLimit;\n    let activeRequests = 0;\n\n    const addToPromiseQueue = curry((timeout, resolve, reject) => {\n        queue.push([resolve, reject, timeout]);\n    });\n\n    function findFreeResource(newestResource) {\n        if (!newestResource in usedResources || !usedResources[newestResource]) {\n            return newestResource;\n        }\n\n        return Object.entries(usedResources).find(freeResourceFinder)[0];\n    }\n\n    function release(resourceID) {\n        if (!usedResources[resourceID]) {\n            return;\n        }\n        activeRequests--;\n        usedResources[resourceID] = false;\n        next();\n    }\n\n    const dispatchResource = curry((timeout, resolve, _reject) => {\n        activeRequests++;\n        const resourceID = findFreeResource(activeRequests);\n        usedResources[resourceID] = true;\n        resolve(resourceID);\n        if (timeout) {\n            function releaseOnTimeout() {\n                release(resourceID);\n            }\n\n            setTimeout(releaseOnTimeout, timeout);\n        }\n    });\n\n    function next() {\n        const nextInLine = queue.shift();\n        if (nextInLine) {\n            const [resolve, _, timeout] = nextInLine;\n            const dispatcher = dispatchResource(timeout);\n            dispatcher(resolve);\n        } else {\n            onQueueEmpty();\n        }\n    }\n\n    function request(timeout) {\n        if (activeRequests < maxSlots) {\n            return new Promise(dispatchResource(timeout));\n        }\n        return new Promise(addToPromiseQueue(timeout));\n    }\n\n    function changeSettings(newLimit) {\n        maxSlots = newLimit;\n    }\n\n    function onEmpty(cb) {\n        onQueueEmpty = cb;\n    }\n\n    return { release, request, changeSettings, onEmpty };\n}\n","function handleAsNewTask(resolve) {\n    setTimeout(resolve, 0);\n}\n\nexport function spawnTask() {\n    return new Promise(handleAsNewTask);\n}\n\nfunction isInputPending() {\n    if (navigator && \"scheduling\" in navigator && \"isInputPending\" in navigator.scheduling) {\n        return navigator.scheduling.isInputPending();\n    }\n\n    return false;\n}\n\nexport async function waitUntilOpen() {\n    if (isInputPending()) {\n        await spawnTask();\n        return waitUntilOpen();\n    }\n\n    return true;\n}\n\nexport async function runAsTasks(...tasks) {\n    let deadline = performance.now() + 50;\n\n    while (tasks.length > 0) {\n        if (isInputPending() || performance.now() >= deadline) {\n            await spawnTask();\n            deadline = performance.now() + 50;\n            continue;\n        }\n\n        const task = tasks.shift();\n        await task();\n    }\n}\n","const mapSplit = (el) => el.split(\"=\");\nconst paramsReducer = (acc, [k, v]) => {\n    acc[k] = v;\n    return acc;\n};\n\nexport default function translateParamsToObject(getParams) {\n    return getParams.substr(1).split(\"&\").map(mapSplit).reduce(paramsReducer, {});\n}\n","export function loadInformerAsModule(context) {\r\n    return import(\"./renderer\").then((module) => module.renderAsModule(context));\r\n}\r\n\r\nexport default function loadInformer(context, config) {\r\n    import(\"./renderer\").then((module) => module.default(context, config));\r\n    return context;\r\n}\r\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./post\");\n\nexport default function postParticleLoader(context) {\n    loadModuleOnElement(\".live-updates-wrapper\", loader, context);\n    return context;\n}\n","import createQueue from \"../../utils/simpleQueue\";\nimport { listenToConnectionChanges } from \"../../utils/connectionHandler\";\n\nconst queue = createQueue(9);\n\nconst connectionMap = {\n    \"4g\": () => queue.changeSettings(15),\n    \"slow-2g\": () => queue.changeSettings(3),\n    \"2g\": () => queue.changeSettings(3),\n    \"3g\": () => queue.changeSettings(6),\n};\n\nlistenToConnectionChanges(function onConnectionInfoChanged(effectiveType) {\n    (connectionMap[effectiveType] || connectionMap[\"4g\"])();\n});\n\nqueue.onEmpty(function onMediaQueueEmpty() {\n    const event = new CustomEvent(\"mediaqueue:finished\");\n    window.dispatchEvent(event);\n});\n\nexport const release = queue.release;\nexport const request = queue.request;\n","import loadModuleOnElement from \"../../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./lazyJWPlayer\");\nexport const selector = \".rm-lazy-jwplayer-media\";\n\nexport default function loadFollowButton(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","const popupDimension = {\n    twitter: [450, 240],\n    pinterest: [750, 546],\n    default: [550, 425]\n};\n\nexport function openPopup(link, provider) {\n    if(link) {\n        const [width, height] = popupDimension[provider] || popupDimension.default;\n        const left = Math.max((window.innerWidth - width) / 2, 0);\n        const top = Math.max((window.innerHeight - height) / 2, 0);\n        const winSpec = `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes`;\n        if (link.substr(0, 4) !== 'tel:' && link.substr(0, 7) !== 'mailto:' && link.substr(0, 4) !== 'sms:') {\n            return window.open(link, \"_blank\", winSpec);\n        }\n    }\n}\n","var e,n,t,r,i,a=-1,o=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(a=n.timeStamp,e(n))}),!0)},c=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0]},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";return a>=0?r=\"back-forward-cache\":t&&(r=document.prerendering||u()>0?\"prerender\":t.type.replace(/_/g,\"-\")),{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v3-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){n(e.getEntries())}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n){var t=function t(r){\"pagehide\"!==r.type&&\"hidden\"!==document.visibilityState||(e(r),n&&(removeEventListener(\"visibilitychange\",t,!0),removeEventListener(\"pagehide\",t,!0)))};addEventListener(\"visibilitychange\",t,!0),addEventListener(\"pagehide\",t,!0)},l=function(e,n,t,r){var i,a;return function(o){n.value>=0&&(o||r)&&((a=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=a,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},p=-1,v=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},m=function(){d((function(e){var n=e.timeStamp;p=n}),!0)},h=function(){return p<0&&(p=v(),m(),o((function(){setTimeout((function(){p=v(),m()}),0)}))),{get firstHiddenTime(){return p}}},g=function(e,n){n=n||{};var t,r=[1800,3e3],i=h(),a=f(\"FCP\"),c=function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(p&&p.disconnect(),e.startTime<i.firstHiddenTime&&(a.value=e.startTime-u(),a.entries.push(e),t(!0)))}))},d=window.performance&&window.performance.getEntriesByName&&window.performance.getEntriesByName(\"first-contentful-paint\")[0],p=d?null:s(\"paint\",c);(d||p)&&(t=l(e,a,r,n.reportAllChanges),d&&c([d]),o((function(i){a=f(\"FCP\"),t=l(e,a,r,n.reportAllChanges),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,t(!0)}))}))})))},y=!1,T=-1,E=function(e,n){n=n||{};var t=[.1,.25];y||(g((function(e){T=e.value})),y=!0);var r,i=function(n){T>-1&&e(n)},a=f(\"CLS\",0),c=0,u=[],p=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=u[0],t=u[u.length-1];c&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(c+=e.value,u.push(e)):(c=e.value,u=[e]),c>a.value&&(a.value=c,a.entries=u,r())}}))},v=s(\"layout-shift\",p);v&&(r=l(i,a,t,n.reportAllChanges),d((function(){p(v.takeRecords()),r(!0)})),o((function(){c=0,T=-1,a=f(\"CLS\",0),r=l(i,a,t,n.reportAllChanges)})))},w={passive:!0,capture:!0},C=new Date,L=function(r,i){e||(e=i,n=r,t=new Date,A(removeEventListener),S())},S=function(){if(n>=0&&n<t-C){var i={entryType:\"first-input\",name:e.type,target:e.target,cancelable:e.cancelable,startTime:e.timeStamp,processingStart:e.timeStamp+n};r.forEach((function(e){e(i)})),r=[]}},b=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){L(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,w),removeEventListener(\"pointercancel\",r,w)};addEventListener(\"pointerup\",t,w),addEventListener(\"pointercancel\",r,w)}(n,e):L(n,e)}},A=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,b,w)}))},F=function(t,i){i=i||{};var a,c=[100,300],u=h(),p=f(\"FID\"),v=function(e){e.startTime<u.firstHiddenTime&&(p.value=e.processingStart-e.startTime,p.entries.push(e),a(!0))},m=function(e){e.forEach(v)},g=s(\"first-input\",m);a=l(t,p,c,i.reportAllChanges),g&&d((function(){m(g.takeRecords()),g.disconnect()}),!0),g&&o((function(){var o;p=f(\"FID\"),a=l(t,p,c,i.reportAllChanges),r=[],n=-1,e=null,A(addEventListener),o=v,r.push(o),S()}))},I=0,P=1/0,k=0,M=function(e){e.forEach((function(e){e.interactionId&&(P=Math.min(P,e.interactionId),k=Math.max(k,e.interactionId),I=k?(k-P)/7+1:0)}))},B=function(){return i?I:performance.interactionCount||0},D=function(){\"interactionCount\"in performance||i||(i=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},N=0,R=function(){return B()-N},q=[],x={},H=function(e){var n=q[q.length-1],t=x[e.interactionId];if(t||q.length<10||e.duration>n.latency){if(t)t.entries.push(e),t.latency=Math.max(t.latency,e.duration);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x[r.id]=r,q.push(r)}q.sort((function(e,n){return n.latency-e.latency})),q.splice(10).forEach((function(e){delete x[e.id]}))}},O=function(e,n){n=n||{};var t=[200,500];D();var r,i=f(\"INP\"),a=function(e){e.forEach((function(e){(e.interactionId&&H(e),\"first-input\"===e.entryType)&&(!q.some((function(n){return n.entries.some((function(n){return e.duration===n.duration&&e.startTime===n.startTime}))}))&&H(e))}));var n,t=(n=Math.min(q.length-1,Math.floor(R()/50)),q[n]);t&&t.latency!==i.value&&(i.value=t.latency,i.entries=t.entries,r())},c=s(\"event\",a,{durationThreshold:n.durationThreshold||40});r=l(e,i,t,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),d((function(){a(c.takeRecords()),i.value<0&&R()>0&&(i.value=0,i.entries=[]),r(!0)})),o((function(){q=[],N=B(),i=f(\"INP\"),r=l(e,i,t,n.reportAllChanges)})))},j={},_=function(e,n){n=n||{};var t,r=[2500,4e3],i=h(),a=f(\"LCP\"),c=function(e){var n=e[e.length-1];if(n){var r=n.startTime-u();r<i.firstHiddenTime&&(a.value=r,a.entries=[n],t())}},p=s(\"largest-contentful-paint\",c);if(p){t=l(e,a,r,n.reportAllChanges);var v=function(){j[a.id]||(c(p.takeRecords()),p.disconnect(),j[a.id]=!0,t(!0))};[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,v,{once:!0,capture:!0})})),d(v,!0),o((function(i){a=f(\"LCP\"),t=l(e,a,r,n.reportAllChanges),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,j[a.id]=!0,t(!0)}))}))}))}},z=function e(n){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e(n)}),!0):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},G=function(e,n){n=n||{};var t=[800,1800],r=f(\"TTFB\"),i=l(e,r,t,n.reportAllChanges);z((function(){var a=c();if(a){if(r.value=Math.max(a.responseStart-u(),0),r.value<0||r.value>performance.now())return;r.entries=[a],i(!0),o((function(){r=f(\"TTFB\",0),(i=l(e,r,t,n.reportAllChanges))(!0)}))}}))};export{E as getCLS,g as getFCP,F as getFID,O as getINP,_ as getLCP,G as getTTFB,E as onCLS,g as onFCP,F as onFID,O as onINP,_ as onLCP,G as onTTFB};\n"],"names":["URL_CHANGE_EVENT","URL_SCROLLED_EVENT","PAGE_LOAD_EVENT","READ_ARTICLE_EVENT","POST_SHARED_EVENT","CONTEXT","getContext","intersectionObserverProvider","eventBus","settings","window","REBELMOUSE_BOOTSTRAP_DATA","pathParams","location","search","handlersByEvent","subscribe","event","handler","push","publish","data","forEach","subscriber","addTask","task","reportIntersection","entry","target","isIntersecting","firstOnly","_reportedIntersections","observer","disconnect","mutationObserver","oneTime","unobserve","finished","add","onIntersect","onNonIntersect","onBellowViewport","onAboveViewport","top","getBoundingClientRect","handleNonIntersection","threshold","Set","rootMargin","IntersectionObserver","entriesHandler","entries","selector","node","has","onAppear","observe","rawNodes","element","SELECTOR_MAP","Map","MUTATION_TIMER","MUTATION_OBSERVER","getMutationObserver","MutationObserver","onMutationCallback","removeState","state","states","get","delete","size","runSafeCallback","callback","then","catch","console","error","onEachSelector","_map","document","querySelectorAll","_state","_set","initializedNodes","contains","propagateNodeToSelector","clearTimeout","setTimeout","createElementChangeListener","reported","set","body","childList","subtree","addToObserver","Error","takeRecords","slideshowLoader","fullScreenSlideshowLoader","paginationLoader","votingLoader","MENU_OPENED_CLASS","toggleMenu","classList","toggle","onHamburgerToggler","el","addEventListener","removeMenu","remove","loader","moduleLoader","resourceID","FB","XFBML","parse","parentElement","onDependencyLoad","bootstrap","init","appId","fbId","version","fbAppVersion","status","cookie","runnerSrc","dataset","src","possibleContainers","pairToQueryParam","key","value","qualityToConnectionMap","engine","image_quality_level","getImageParam","paramName","queryParams","param","getAttribute","isNaN","parseInt","getOptimizedSrc","ogSrc","containerWidth","containerHeight","maxContainerWidth","maxContainerHeight","URL","translateParamsToObject","elWidth","elHeight","maxWidth","maxHeight","width","height","getMaxWidthAndHeight","scale","devicePixelRatio","undefined","override_device_pixel_ratio","Math","min","max","getPixelDensity","params","quality","coordinates","Object","keys","length","queryString","obj","map","join","href","readjustImages","closestContainer","reduce","foundElement","elementToTest","closest","rmCalcWidth","offsetWidth","findAppropiateParent","imageSrc","adjustedSrc","releasePool","lazyImageHandler","url","onLoad","removeAttribute","backgroundImageHandler","runnerImgHd","lazyLoadShortcodeImages","offsetHeight","img","Image","style","backgroundImage","treshholdCalculator","controlSpacer","embed","container","bottom","embedBottom","embedHeight","containerBottom","instagramClass","lazyInstagramClass","activeIGRequests","oldHandler","releaseIGResource","frame","igEmbed","getElementById","frameId","shift","instgrm","Embeds","process","invalidate","beforeDependencyLoad","activeTwitterRequests","releaseTweetResource","querySelector","tweet","matches","loading","twitterTweetId","lazyTweetId","twttr","widgets","load","ready","events","bind","async","getTiktokLib","attemps","log","tiktokEmbed","lib","Promise","resolve","releaseTiktokResource","tiktokLib","render","account","player","scriptUrl","makeScriptUrl","release","loadExternalScript","bc","on","_entry","lazyStyle","createElement","type","textContent","head","appendChild","id","lazyId","imgurEmbed","createIframe","v1Loader","v2Loader","showFlexibleSticky","stickyElement","module","SEARCH_OPENED_CLASS","trackPageView","customDimensions","headline","titleElement","page_title","innerText","page_location","trackGtagCall","gtag","send","additionalInfo","trackEvent","trackPostCardClick","context","eventType","action","trackPostShare","provider","method","content_type","waitForGtag","dimensionsData","customDimensionsConfig","acc","iden","toString","event_category","ENDPOINT_EXCEPTIONS","SHORT_FULL_NAME_MAP","dp","pp","fp","sp","tp","getPageTypeFromResourceId","resource","resourceId","split","makeBaseParams","device","getDevice","site_id","site","roar_id","runner","client","referrer","sendStats","isSplitTesting","requestParams","query","format","JSON","stringify","prefix","paramsStr","URLSearchParams","statsUrl","Date","now","pageViewUrl","fetch","addSplitTestingParams","splitTesting","current","campaign_id","hypothesis_id","checkIfPostHasSplitTesting","post","split_testing","pageType","bootstrapData","post_id","provider_id","providerId","sections","buckets","authors","isCommunitySite","tag","slug","sectionId","section","section_id","trackTimeOnPage","timeMarker","duration","trackUser","mainPost","trackingId","localStorage","getItem","prevLoggedStatus","isUserLoggedIn","REBELMOUSE_BASE_SSL_DOMAIN","user_tracking_id","last_page_view_timestamp","user_type","resp","json","setItem","getUserTrackingId","userId","userHistoryKey","userHistory","visitedPosts","idNotStored","some","timestamp","getTime","daysToTimestamp","expirationTime","filteredPosts","filter","splice","currentUserId","keysToRemove","startsWith","removeItem","cleanUpOtherUserData","storePostHistory","tags","trackPostCardView","posts","auhtors","batchPostCardView","PUBLISHED_POST_STATUSES","isPostPublished","includes","customNameReducer","SPECIAL_LOGIC","PARSELY","updateDefaults","level","pageInfo","isParselyReady","beacon","isPostPage","isPublishedPostPage","shouldSendParselyStats","urlref","previousUrl","trackCustomEvent","js","trackPageLoad","trackPostMouseOver","fieldUpdater","curry","elementField","dataField","updateTitle","updateCanonical","providers","nativeStats","ga4Stats","parselyStats","getPostContext","loadContextData","pageData","postContext","updateMetaData","trackSocialShare","isCardVisible","postCard","SPLIT_TESTED_POSTS","postId","splitedPost","checkForDuplicatedPosts","root","onSplitTestedPost","scriptElement","contextData","text","fireBatchPostCardView","visibilityState","onUplynkElementChange","removeEventListener","removeChild","firstElementChild","defaultVideoPlayer","default","loadScript","script","source","replaceWith","loadLazyScripts","runCallback","e","rebelSlider","config","timeoutOptions","timeout","run","callbackRunner","readyState","isPageReady","onIdle","idleDeadline","timeRemaining","didTimeout","waitForIdle","addFont","font","fonts","className","family","toLowerCase","replace","weight","signalLoad","loadFontFace","name","args","fontLoader","unicodeRange","fontWeight","FontFace","display","storeLoadedFont","loadFont","hasLoaded","scrollTimeoutId","idleCallbackId","idleCallbacks","call","loadDeps","thunk","props","dependencies","allDeps","loaded","onDepLoaded","startAdLifeCycle","dep","idleHandler","removeFromSet","addToSet","nonIdleHandler","initiateStaticElement","displayer","isStatic","markAsStaticElement","processAdRequest","onInit","onPostLcp","options","staticSelectors","dynamicSelectors","disableIdleLoader","disableVisibilityWatcher","displayOnElement","refreshOnElement","destroyOnElement","onDependanciesLoaded","noop","getCallbacks","connectionChangeCallback","refreshRate","intervalId","timeoutId","intersectHandler","nonIntersectHandler","onIterationEnd","userOptions","lastRefresh","previousObsevers","staticElements","setOptions","saveOptions","elementsToDestroy","elementsToRefresh","elementsToDisplay","observerSelector","displayIdleHandler","displayNonIdleHandler","displayElement","destroyIdleHandler","destroyNonIdleHandler","destroyElement","rmLastViewed","initiated","refreshElement","refreshCount","setUpAdRefresh","refreshTimeout","startInterval","clearInterval","setInterval","triggerRefresh","iterateRefreshElements","getThreshold","ogConnectionType","newType","onEntry","executeIdleCallbacks","iterateAndClearSet","pipe","Array","from","onVisibilityChange","timeSinceLastRefresh","difference","waitForIdleMainThread","runIdleCallbacks","clear","addTaskToQueue","queue","pushTask","loadUnparsedQueue","tasksQueue","queueName","queueSelector","queueElement","parsedJavascript","initIdleQueue","tasksQ","lowerPriorityTasksQ","lowestPriorityTaskQ","activePriorityQueue","onDone","enQueue","next","updatedTask","fun","ogTimeout","startDate","_remaining","newStartDate","newTimeout","diff","_updateTask","runningTask","runQueue","nextInLine","activeQueueLoader","lowestQueueLoader","handlePriorityQueues","prepareLowPriorityQueues","REBELMOUSE_INIT_IDLE_QUEUE","moduleList","host","pathname","elementToScroll","scrollIntoView","block","menuOverlay","createSmartIntersector","initialThreshold","loadLazyImages","loadLazyIFrames","__igEmbedLoaded","dependencySrc","loadLazyInstagram","loadLazyFacebook","loadLazyReddit","loadLazyTwitter","viewportStyle","loadLazyImgur","loadModuleOnScroll","stickyHeader","triggerNode","createIdleScrollListener","toggleClass","passive","searchToggle","searchForm","keyCode","submit","clipboardText","preventDefault","navigator","clipboard","writeText","currentTarget","raiseNotification","copyTextHandler","buttonsList","children","found","hideButtonList","button","plusButtonHandler","trackShare","stopPropagation","popupHandler","initShareButtonFactory","loadModuleOnElement","onModule","floatingElements","loadSignupBoxOnElement","bootQueue","REBELMOUSE_TASKS_QUEUE","REBELMOUSE_LOW_TASKS_QUEUE","REBELMOUSE_LOWEST_TASKS_QUEUE","REBELMOUSE_ACTIVE_TASKS_QUEUE","startApp","initialPageUrl","initUrlChangeListeners","onLinkClick","isTargetBlank","isPagination","metaKey","ctrlKey","open","link","exec","reportTimeFrames","timer","delayList","maxTotalDuration","timerCreationTime","timerId","startTime","remaining","stop","start","step","pause","createTimer","initTimeOnPageTracker","initPostsShareListener","eventData","eventMap","history","replaceState","busName","detail","eventName","eventAction","customEvent","CustomEvent","dispatchEvent","REBELMOUSE_STDLIB","initClickHandler","htmlDecode","spawnTask","runAsTasks","partial","loadExternalStylesheet","getRenderer","postStatus","onElementInViewport","widgetControl","doubleSticky","showInformer","getBootstrap","fullBootstrap","RM_AD_LOADER","onDomReady","REBELMOUSE_BASE_ASSETS_URL","neededPolyfills","loadApp","onPolyfillLoad","existsOrPolyfill","api","file","requestAnimationFrame","prototype","find","Element","NodeList","values","fromEntries","flatMap","expectedArguments","thing","res","rej","moreArgs","apply","concat","functions","currentValue","currentFunction","loadRenderer","fetchFullBootstrap","bootstrapUrl","cacheBootstrap","loadedBootstrap","fullBootstrapUrl","sendFetch","fetchUrl","fetchOptions","prepareSSLRequest","jsonHandler","handleFetchError","sendRawRequest","sendXHRRequest","headers","HEADER_XMLHTTPREQUEST","sendJsonRequest","HEADER_CONTENT_JSON","retrieveJsonRequest","credentials","Accept","DEFAULT_ERROR","message","isObject","maybeObject","rejectEvaluators","_rawRes","rawRes","ok","errors","isArray","email","resolveEvaluators","evaluatePipeline","evaluators","transformedResponse","handleJsonResponse","rawResponse","response","rejectResponse","coerceResponseToJson","textResponse","readableResponse","NETWORK_ERROR","TypeError","waiters","listeners","upgrade","doUpgradeToLoggedIn","upgradeToLoggedInExperienceLoader","refreshUserInfo","getUserInfo","reject","listenForUserInfo","cb","createCallbackRunner","boot","autoTriggerAfterRun","callbacks","ran","hasRun","connection","mozConnection","webkitConnection","knownConnections","listenerMap","normalizeConnection","runCallbacks","once","effectiveType","onConnectionInfoChanged","getConnectionType","stopListening","callbackObject","index","indexOf","listenToConnectionChanges","ticking","defaultTreshholdCalculator","innerHeight","thresholdCalculator","intersectorContext","called","beforeCalled","needsDependency","hasLoadedDependency","createIntersectorContext","onIntersectCallback","createDependencyIntersectorLoader","createIntersectorCallback","realTreshholdCalculator","onScroll","createActiveObservers","observerCreator","eagerDependencyLoader","previousObservers","previousTreshhold","newThreshold","getActiveUserThreshold","changedObservers","observers","flattenObserver","disconnectObserver","nextChange","createDependencyLoader","dependencyLoader","previousState","userAgent","test","domParser","DOMParser","htmlString","parseFromString","documentElement","childNodes","innerHTML","requestIdleCallback","cancelIdleCallback","initClickHandlerAll","buttons","loadedContexts","baseElement","contextElement","COMPOSED_LIMITS","RM_EXT_DL_LIMIT","request","changeSettings","onEmpty","loadedResources","loadWaiters","connectionMap","createLoadCallback","loadElement","insertBefore","firstChild","storeLoadedResource","callbackIndex","callbackPair","ErrorEvent","makeCallback","loadExternalResource","onError","loadTag","BACKUP_INSTAGRAM","isFbHack","onIgReady","rel","m","USER_ACTIVITY_EVENTS","LCP_ELEMENT_SELECTOR","ACCEPTABLE_SCREEN_AREA","innerWidth","foundLcps","mainThreadTime","canUsePostLcp","onPostLcpReady","_event","unbindEvent","prepareIdleCallback","PerformanceObserver","supportedEntryTypes","lastEntry","reportAllChanges","notificationList","notificationListItem","setAttribute","prepend","append","freeResourceFinder","_resourceID","isActive","createQueue","startLimit","usedResources","onQueueEmpty","maxSlots","activeRequests","addToPromiseQueue","_","dispatchResource","dispatcher","_reject","newestResource","releaseOnTimeout","newLimit","handleAsNewTask","isInputPending","scheduling","waitUntilOpen","tasks","deadline","performance","mapSplit","paramsReducer","k","v","getParams","substr","loadInformerAsModule","renderAsModule","loadInformer","postParticleLoader","loadFollowButton","popupDimension","twitter","pinterest","openPopup","winSpec","i","a","o","n","persisted","timeStamp","c","getEntriesByType","u","activationStart","f","t","r","prerendering","rating","delta","floor","random","navigationType","s","getEntries","assign","buffered","d","l","p","h","firstHiddenTime","g","getEntriesByName","y","T","E","hadRecentInput","I","P","M","interactionId","B","interactionCount","D","durationThreshold","N","R","q","x","H","latency","sort","O","entryType","j","capture"],"sourceRoot":""}