{"version":3,"file":"component---src-pages-products-demand-360-lite-js-823de8472ef9f3a22f71.js","mappings":"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","sources":["webpack://parrot-analytics-gatsby/./node_modules/cookie/index.js","webpack://parrot-analytics-gatsby/./src/components/button.js","webpack://parrot-analytics-gatsby/./src/components/img.js","webpack://parrot-analytics-gatsby/./src/components/manual-more-link.js","webpack://parrot-analytics-gatsby/./src/components/switch.js","webpack://parrot-analytics-gatsby/./src/components/plan-price.js","webpack://parrot-analytics-gatsby/./src/components/product-group-card.js","webpack://parrot-analytics-gatsby/./src/images/icons/check-green-bullet.svg","webpack://parrot-analytics-gatsby/./src/images/icons/check-purple-bullet.svg","webpack://parrot-analytics-gatsby/./src/components/product-profile.js","webpack://parrot-analytics-gatsby/./src/components/section-background.js","webpack://parrot-analytics-gatsby/./src/components/sections/article-showcase.js","webpack://parrot-analytics-gatsby/./src/components/sections/demand360-avatar-cards.js","webpack://parrot-analytics-gatsby/./src/components/sections/featured-video.js","webpack://parrot-analytics-gatsby/./src/components/sections/light-slant.js","webpack://parrot-analytics-gatsby/./src/components/sections/video-modal.js","webpack://parrot-analytics-gatsby/./src/components/vertical-line.js","webpack://parrot-analytics-gatsby/./src/components/sections/coupon-banner.js","webpack://parrot-analytics-gatsby/./src/images/icons/play.svg","webpack://parrot-analytics-gatsby/./src/components/sections/monitor-subscribe.js","webpack://parrot-analytics-gatsby/./src/components/sections/monitor-video.js","webpack://parrot-analytics-gatsby/./src/components/monitor-cta2.js","webpack://parrot-analytics-gatsby/./src/components/demand_sample.js","webpack://parrot-analytics-gatsby/./src/images/icons/demand_sample/show.svg","webpack://parrot-analytics-gatsby/./src/images/icons/demand_sample/genre.svg","webpack://parrot-analytics-gatsby/./src/images/icons/demand_sample/rank.svg","webpack://parrot-analytics-gatsby/./src/components/sections/demand360-lite-highlights.js","webpack://parrot-analytics-gatsby/./src/images/icons/check-grey.svg","webpack://parrot-analytics-gatsby/./src/images/icons/earth.png","webpack://parrot-analytics-gatsby/./src/components/sections/demand360-lite-product-profiles.js","webpack://parrot-analytics-gatsby/./src/components/sections/demand360-lite-additional-benefits.js","webpack://parrot-analytics-gatsby/./src/pages/products/demand360/lite.js","webpack://parrot-analytics-gatsby/./src/utils/html-from-solution.js","webpack://parrot-analytics-gatsby/./src/utils/images.js","webpack://parrot-analytics-gatsby/./src/utils/is-browser.js","webpack://parrot-analytics-gatsby/./src/utils/products.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_Symbol.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_arrayMap.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_baseGetTag.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_basePropertyOf.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_baseToString.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_escapeHtmlChar.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_freeGlobal.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_getRawTag.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_objectToString.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/_root.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/escape.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/isArray.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/isObjectLike.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/isSymbol.js","webpack://parrot-analytics-gatsby/./node_modules/lodash/toString.js","webpack://parrot-analytics-gatsby/./node_modules/universal-cookie/es6/utils.js","webpack://parrot-analytics-gatsby/./node_modules/universal-cookie/es6/Cookies.js","webpack://parrot-analytics-gatsby/./node_modules/react-cookie/es6/Cookies.js","webpack://parrot-analytics-gatsby/./node_modules/react-cookie/es6/CookiesContext.js","webpack://parrot-analytics-gatsby/./node_modules/react-cookie/es6/useCookies.js","webpack://parrot-analytics-gatsby/./node_modules/react-cookie/es6/utils.js","webpack://parrot-analytics-gatsby/./node_modules/react-intersection-observer-hook/dist/react-intersection-observer-hook.esm.js","webpack://parrot-analytics-gatsby/./src/images/bg/waves.jpg","webpack://parrot-analytics-gatsby/./src/images/logos/demand360-lite-product-regular.png","webpack://parrot-analytics-gatsby/./src/images/logos/demand360-lite-product.png","webpack://parrot-analytics-gatsby/./node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","webpack://parrot-analytics-gatsby/./node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs"],"sourcesContent":["/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","import React, { useState } from \"react\"\nimport { navigate } from \"@reach/router\"\nimport tw, { styled } from \"twin.macro\"\nimport { motion } from \"framer-motion\"\n\nconst Styles = styled.div`\n ${tw`inline-block relative overflow-visible`}\n --button-color: #05c56b;\n\n button {\n ${tw`rounded uppercase font-display text-white relative w-full`}\n font-size: 18px;\n line-height: 14px;\n padding: 1.25rem;\n z-index: 2;\n -webkit-appearance: none;\n appearance: none;\n transition: all 100ms;\n\n /* default color is green */\n background: linear-gradient(180deg, #05c56b 0%, #00933e 100%);\n &:hover {\n background: linear-gradient(0deg, #05c56b 0%, #00933e 100%);\n }\n\n &:active {\n transform: scale(0.9);\n background-color: rgba(0, 0, 0, 0.2);\n background: linear-gradient(180deg, #05c56bcc 0%, #00933ecc 100%);\n }\n\n &:focus {\n outline: 0;\n }\n }\n\n &.small {\n button {\n font-size: 14px;\n line-height: 12px;\n padding: 1rem;\n }\n }\n\n &.flat {\n button {\n background: #333333;\n }\n --button-color: #333333;\n }\n\n &.blue {\n --button-color: #3498db;\n button {\n background: linear-gradient(180deg, #3498db 0%, #006aa9 100%);\n\n &:hover {\n background: linear-gradient(0deg, #3498db 0%, #006aa9 100%);\n }\n }\n\n &.glow {\n button {\n box-shadow: 0 0 4px 0 rgba(0, 106, 169, 0.51);\n }\n }\n }\n\n &.purple {\n --button-color: #7c43c9;\n button {\n background: linear-gradient(180deg, #7c43c9 0%, #481397 100%);\n\n &:hover {\n background: linear-gradient(0deg, #7c43c9 0%, #481397 100%);\n }\n }\n\n &.glow {\n button {\n box-shadow: 4px 4px 15px 0 rgba(124, 67, 201, 0.5);\n }\n }\n }\n\n &.red {\n --button-color: #e3284c;\n button {\n background: linear-gradient(180deg, #e3284c 0%, #aa0024 100%);\n\n &:hover {\n background: linear-gradient(0deg, #e3284c 0%, #aa0024 100%);\n }\n }\n\n &.glow {\n button {\n box-shadow: 4px 4px 15px 0 rgba(227, 40, 76, 0.5);\n }\n }\n }\n\n &.yellow {\n --button-color: #c69724;\n button {\n background: linear-gradient(180deg, #c69724 0.06%, #876718 100%);\n\n &:hover {\n background: linear-gradient(0deg, #c69724 0.06%, #876718 100%);\n }\n }\n }\n\n &.transparent {\n --button-color: rgba(0, 0, 0, 0);\n button {\n background: rgba(0, 0, 0, 0);\n }\n\n &:hover {\n color: #e6e6e6;\n }\n }\n\n &.semi-transparent {\n --button-color: rgba(0, 0, 0, 0.3);\n button {\n background: rgba(0, 0, 0, 0.4);\n }\n\n box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1), 0px 1px 1px rgba(0, 0, 0, 0.1),\n 0px 2px 2px rgba(0, 0, 0, 0.1), 0px 4px 4px rgba(0, 0, 0, 0.1),\n 0px 8px 8px rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n\n &:hover {\n color: #e6e6e6;\n }\n }\n\n .bubble {\n border-radius: 999px;\n border: 1px solid var(--button-color);\n position: absolute;\n opacity: 0;\n\n &.filled {\n background-color: var(--button-color);\n }\n }\n\n &.secondary {\n button {\n ${tw`font-bold text-springgreen-secondary`}\n\n background: linear-gradient(\n 180deg,\n rgba(255, 255, 255, 0.14) 0%,\n rgba(255, 255, 255, 0.1) 100%\n );\n backdrop-filter: blur(2px);\n border-radius: 5px;\n\n &:hover {\n background: linear-gradient(\n 0deg,\n rgba(255, 255, 255, 0.14) 0%,\n rgba(255, 255, 255, 0.1) 100%\n );\n }\n }\n\n &.white-text {\n button {\n ${tw`text-white`}\n }\n }\n\n &.red-text {\n button {\n ${tw`text-neonred-primary`}\n }\n }\n\n &.monitor {\n height: 54px;\n\n button {\n padding: 1.0rem 1.25rem;\n box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1),\n 0px 1px 1px rgba(0, 0, 0, 0.1), 0px 2px 2px rgba(0, 0, 0, 0.1),\n 0px 4px 4px rgba(0, 0, 0, 0.1), 0px 8px 8px rgba(0, 0, 0, 0.1);\n }\n }\n }\n`\n\nconst Button = ({ children, onClick, to, className, ...rest }) => {\n const [active, setActive] = useState(false)\n const internal = /^\\/(?!\\/)/.test(to)\n const scroll = /^#/.test(to)\n function click() {\n if (!active) {\n setActive(true)\n setTimeout(function () {\n setActive(false)\n }, 500)\n }\n if (onClick) {\n onClick()\n } else {\n if (to) {\n if (internal) {\n navigate(to)\n } else if (scroll) {\n document.querySelector(to).scrollIntoView({\n behavior: \"smooth\",\n })\n } else {\n window.location.href = to\n }\n }\n }\n }\n const bubbles = Array.from({ length: 15 }, (v, i) => i)\n const transition = { duration: 0.5, ease: \"easeInOut\" }\n\n function rand(from, to) {\n return Math.round(Math.random() * (to - from) + from)\n }\n\n return (\n \n {bubbles.map((b, idx) => {\n const diameter = rand(5, 10)\n return (\n \n )\n })}\n \n {bubbles.map((b, idx) => {\n const diameter = rand(5, 10)\n return (\n \n )\n })}\n \n )\n}\n\nexport default Button\n","import React from \"react\"\nimport { styled } from \"twin.macro\"\n\nconst StyledPicture = styled.picture`\n ${(props) => (props.customCSS ? props.customCSS : \"\")}\n`\n\nconst StyledImg = styled.img`\n ${(props) => (props.customCSS ? props.customCSS : \"\")}\n`\n\nexport default ({ src, className = \"\" }) => {\n if (src.mimeType && src.handle) {\n const webp = `${process.env.GATSBY_ASSETS_BASE_URL}no_metadata/output=format:webp/cache=expiry:max/${src.handle}`\n return (\n \n \n \n {src.alt\n \n )\n } else {\n return (\n \n )\n }\n}\n","import React, { useEffect } from \"react\"\nimport tw, { styled, theme } from \"twin.macro\"\nimport { motion, useAnimation } from \"framer-motion\"\n\nimport IconRightArrow from \"images/icons/right-arrow.inline.svg\"\n\nconst Style = styled.div`\n .main {\n ${tw`flex flex-row items-center`}\n\n overflow: visible;\n }\n\n .frame {\n ${tw`flex flex-row items-center font-display`}\n border: 1px solid rgba(0,0,0,0);\n border-radius: 2px;\n padding: 3px;\n margin-left: 7px;\n position: relative;\n\n &.profile {\n }\n }\n\n .caption {\n ${tw`uppercase relative`}\n\n font-weight: 700;\n font-size: 13px;\n line-height: 1;\n opacity: 0;\n color: #ffffff;\n top: 1px;\n\n &.profile {\n font-size: 16.5px;\n }\n }\n\n .arrow {\n margin-left: 10px;\n\n svg {\n height: 18px;\n width: 18px;\n\n path {\n fill: rgba(255, 255, 255, 0.5);\n }\n\n &.active {\n height: 10px;\n width: 10px;\n\n path {\n fill: #a88124;\n }\n }\n }\n\n &.profile {\n path {\n fill: #a88124;\n }\n\n svg {\n height: 33px;\n width: 28px;\n\n &.active {\n height: 13px;\n width: 13px;\n }\n }\n }\n }\n`\n\nconst BASE_FRAME_VARIANTS = {\n init: {\n left: -10,\n width: 30,\n backgroundColor: theme`colors.transparent`,\n borderColor: theme`colors.transparent`,\n },\n hover: {\n left: 0,\n width: 82,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n borderColor: theme`colors.yellow.light`,\n borderRadius: \"1.88008px\",\n },\n}\n\nconst BASE_CAPTION_VARIANTS = {\n init: { opacity: 0, scale: 0.4, width: 0 },\n hover: { opacity: 1, scale: 1, width: 55 },\n}\n\nconst BASE_ARROW_VARIANTS = {\n init: { height: 18, width: 18, marginBottom: 0 },\n hover: { height: 10, width: 10, marginBottom: 1 },\n}\n\nconst frameVariants = {\n card: BASE_FRAME_VARIANTS,\n profile: {\n init: {\n ...BASE_FRAME_VARIANTS.init,\n width: 40,\n },\n hover: {\n ...BASE_FRAME_VARIANTS.hover,\n width: 75,\n },\n },\n}\n\nconst captionVariants = {\n card: BASE_CAPTION_VARIANTS,\n profile: {\n init: BASE_CAPTION_VARIANTS.init,\n hover: {\n ...BASE_CAPTION_VARIANTS.hover,\n width: 45,\n },\n },\n}\n\nconst arrowVariants = {\n card: BASE_ARROW_VARIANTS,\n profile: {\n init: {\n ...BASE_ARROW_VARIANTS.init,\n height: 33,\n width: 28,\n },\n hover: {\n ...BASE_ARROW_VARIANTS.hover,\n height: 13,\n width: 13,\n },\n },\n}\n\nconst labels = {\n card: \"Explore\",\n profile: \"More\",\n}\n\nconst Children = styled.div`\n span {\n font-size: 20px !important;\n }\n`\n\nconst ManualMoreLink = ({\n children,\n className = \"\",\n active,\n type = \"card\",\n}) => {\n const controls = useAnimation()\n\n useEffect(() => {\n if (active) {\n controls.start(\"hover\")\n } else {\n controls.start(\"init\")\n }\n\n return controls.stop\n }, [active])\n\n return (\n \n )\n}\n\nexport default ManualMoreLink\n","import React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { motion } from \"framer-motion\"\n\nconst Toggle = styled(motion.div)`\n height: 24px;\n width: 24px;\n border-radius: 5px;\n position: relative;\n top: 4px;\n background: linear-gradient(180deg, #f1f1f1 0%, #ffffff 100%);\n`\n\nconst Switch = ({ onFlip, initial = true, className }) => {\n const [isOn, switchState] = useState(initial)\n\n const flip = () => {\n switchState(!isOn)\n onFlip && onFlip()\n }\n\n const transition = {\n type: \"tween\",\n duration: 0.2,\n }\n\n useEffect(() => {\n switchState(initial)\n }, [initial])\n\n return (\n \n \n \n )\n}\n\nexport default Switch\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport Switch from \"components/switch\"\nimport CouponContext from \"context/coupon-context\"\n\nconst Styles = styled.div`\n ${tw`flex flex-wrap flex-grow items-center justify-between pt-3 m:pt-0`}\n\n &.light {\n ${tw`text-grey-10`}\n }\n\n &.dark {\n ${tw`text-white`}\n }\n\n .price {\n ${tw`font-display`}\n font-size: 44px;\n line-height: 44px;\n text-align: center;\n }\n\n .price-desc {\n ${tw`font-display`}\n font-size: 11.9px;\n line-height: 18px;\n }\n\n .price-period {\n ${tw`font-body text-center`}\n font-size: 12px;\n line-height: 20px;\n padding-top: 5px;\n width: 80px;\n }\n\n .switch {\n width: 100%;\n }\n\n .divided {\n ${tw`border-r-2`}\n\n border-color: #4b4b4b;\n }\n\n @media (min-width: 720px) {\n &.large {\n ${tw`justify-center`}\n .switch {\n padding-left: 32px;\n padding-right: 32px;\n transform: scale(1.4);\n width: auto;\n }\n .price {\n font-size: 51.8px;\n }\n .price-desc {\n font-size: 14px;\n }\n .price-period {\n font-size: 15px;\n min-width: 100px;\n }\n }\n }\n`\n\nconst PlanPrice = ({\n onPlanChange,\n divided = false,\n light = false,\n large = false,\n ...rest\n }) => {\n\n const graphqlQuery = graphql`\n {\n gcms {\n websiteSetting(where: { name: \"Monitor pricing plans\" }) {\n jsonValue\n }\n }\n allPricePlan {\n nodes {\n nickname\n amount\n amount_decimal\n id\n interval\n monthly\n yearly\n }\n }\n }\n `;\n\n const data = useStaticQuery(graphqlQuery)\n const planSettings = data.gcms.websiteSetting.jsonValue\n const planData = data?.allPricePlan?.nodes ?? []\n const maxPlanPrice = planData.reduce(\n (acc, cur) => Math.max(acc, cur.yearly),\n 0\n )\n const [plans, setPlans] = useState(null)\n const [plan, setPlan] = useState(null)\n const [yearly, setYearly] = useState(planSettings.default === \"yearly\")\n const [bestPlanId, setBestPlanId] = useState(null)\n const couponContext = useContext(CouponContext)\n\n function flip() {\n setYearly(!yearly)\n onPlanChange && onPlanChange(yearly ? \"yearly\" : \"monthly\")\n setPlan(plans.find((p) => p.id !== plan.id))\n }\n\n useEffect(() => {\n async function fetchData() {\n const coupon = await couponContext.getCoupon()\n if (coupon) {\n //Update plan prices with coupon discount\n const newPlans = planData.map((p) => {\n const newPlan = Object.assign({}, p)\n if (!newPlan.discountApplied) {\n newPlan.monthly = couponContext.applyCoupon(p, \"month\") * 100\n newPlan.yearly = couponContext.applyCoupon(p, \"year\") * 100\n newPlan.discountApplied = true\n }\n return newPlan\n })\n setPlans(newPlans)\n // Flip switch to plan the coupon applies to\n if (coupon?.metadata?.plan_applicable) {\n const selectedPlan = newPlans.find((p) =>\n couponContext.couponApplies(p)\n )\n if (selectedPlan) {\n setPlan(selectedPlan)\n setYearly(selectedPlan.interval === \"year\")\n }\n }\n } else {\n setPlans(planData)\n }\n }\n\n fetchData()\n }, [couponContext, planSettings])\n\n useEffect(() => {\n if (plans && plans.length > 0) {\n // Save which plan is the best deal\n const bestPlan = plans.reduce(\n (best, plan) => (!best || plan.yearly < best.yearly ? plan : best),\n null\n )\n setBestPlanId(bestPlan.id)\n // Set a selected plan based on CMS settings (or the first one)\n if (planSettings.default) {\n setPlan(\n plans.find(\n (p) =>\n p.nickname.toLowerCase() === planSettings.default.toLowerCase()\n )\n )\n onPlanChange && onPlanChange(planSettings.default)\n } else {\n setPlan(plans[0])\n }\n }\n }, [plans])\n\n if (plan) {\n return (\n \n \n
\n ${Math.round(plan.monthly / 100)}\n
\n
\n USD per month\n
\n \n \n
\n \n
\n
\n {plan &&\n `Pay ${plan.interval.toLowerCase()}ly ${\n plan.id === bestPlanId\n ? ` (Save ${Math.round(\n (1 - plan.yearly / maxPlanPrice) * 100\n )}%)`\n : \"\"\n }`}\n
\n \n \n )\n } else {\n return <>\n }\n}\n\nexport default PlanPrice\n","import React, { useState } from \"react\"\nimport { Link } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport ManualMoreLink from \"components/manual-more-link\"\nimport { brandRules } from \"utils/brand\"\nimport GreenCheckBullet from \"images/icons/check-green-bullet.svg\"\nimport PurpleCheckBullet from \"images/icons/check-purple-bullet.svg\"\nimport { getProductPath } from \"utils/products\"\n\nconst Styles = styled.div`\n ${tw`relative`}\n\n &.mobile-only {\n ${tw`l:hidden`}\n }\n\n border-radius: 8px;\n\n &.maxi-card {\n ${tw`hidden l:block col-span-3`}\n\n height: 400px;\n\n .title {\n top: 38px;\n }\n\n .text {\n ${tw`absolute text-white text-base leading-none top-24 left-5`}\n\n line-height: 175%;\n width: 483px;\n list-style: none;\n\n li {\n ${tw`mt-3 ml-7 pl-3`}\n\n list-style-image: url(${GreenCheckBullet});\n }\n\n li > div {\n display: inline;\n }\n }\n\n .image {\n ${tw`absolute top-8 right-5 overflow-hidden`}\n\n height: 363px;\n\n img {\n ${tw`rounded-none`}\n\n width: 633px;\n }\n }\n\n &.purple-bullet {\n .text {\n li {\n list-style-image: url(${PurpleCheckBullet});\n }\n }\n }\n }\n\n .title {\n ${tw`absolute text-white font-display capitalize leading-none`}\n\n font-size: 23px;\n text-shadow: 4px 4px 4px rgba(0, 0, 0, 0.18);\n left: 17px;\n top: 10px;\n\n @media (min-width: 640px) {\n font-size: 26px;\n left: 20px;\n top: 17px;\n }\n }\n\n .image {\n img {\n border-radius: 5px;\n }\n }\n`\n\nconst OuterBorder = styled(Link)`\n & > div {\n ${tw`h-full bg-cover bg-top`}\n\n border-radius: 5px;\n background-image: ${(props) => (props.bg ? `url(${props.bg})` : \"\")};\n }\n\n @media (min-width: 640px) {\n ${tw`p-1 block overflow-hidden border relative h-full`}\n\n border-color: rgba(255, 255, 255, 0);\n transition: all 0.2s;\n border-radius: 8px;\n\n &:hover,\n &.active {\n ${tw`border-yellow-light`}\n }\n }\n`\n\nconst ProductGroupCard = ({ cardInfo, className = \"\" }) => {\n const [hovered, setHovered] = useState(false)\n\n const url = getProductPath(cardInfo.path || cardInfo.linkUrl)\n\n return (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={className}\n >\n \n
\n
\n \n \n \n
\n {className.includes(\"maxi-card\") && (\n
\n )}\n
\n \n
\n \n \n \n )\n}\n\nexport default ProductGroupCard\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMCAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS40Nzg1IDEuMjI2MzlDMTguOTE3NCAwLjgyNDE2NSAxOC4xMzY2IDAuOTUyODggMTcuNzM0MyAxLjUxMzg5TDYuMDM4NDcgMTcuODIwNkwyLjEzNDMgMTMuOTEzMUMxLjgxODU3IDEzLjU5NzIgMS4zNTgzIDEzLjQ3MzcgMC45MjY4NjggMTMuNTg5MkMwLjQ5NTQzOSAxMy43MDQ3IDAuMTU4Mzk2IDE0LjA0MTYgMC4wNDI3MDExIDE0LjQ3M0MtMC4wNzI5OTQzIDE0LjkwNDMgMC4wNTAyMzQyIDE1LjM2NDcgMC4zNjU5NjggMTUuNjgwNkw1LjMxMTggMjAuNjI1NkM1LjU3NDQ3IDIwLjg3ODMgNS45MzMwMyAyMS4wMDYxIDYuMjk2MzUgMjAuOTc2NEM2LjY1OTY3IDIwLjk0NjggNi45OTI3NiAyMC43NjI2IDcuMjEwOTcgMjAuNDcwNkwxOS43NjYgMi45NzA1NUMyMC4xNjgyIDIuNDA5NTIgMjAuMDM5NSAxLjYyODY1IDE5LjQ3ODUgMS4yMjYzOVoiIGZpbGw9IiM2OEY4QTAiLz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMCAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS40Nzg1IDAuNzIxNTAzQzE4LjkxNzQgMC4zMTkyODIgMTguMTM2NiAwLjQ0Nzk5NyAxNy43MzQzIDEuMDA5TDYuMDM4NDcgMTcuMzE1N0wyLjEzNDMgMTMuNDA4MkMxLjgxODU3IDEzLjA5MjMgMS4zNTgzIDEyLjk2ODggMC45MjY4NjggMTMuMDg0M0MwLjQ5NTQzOSAxMy4xOTk4IDAuMTU4Mzk2IDEzLjUzNjcgMC4wNDI3MDExIDEzLjk2ODFDLTAuMDcyOTk0MyAxNC4zOTk1IDAuMDUwMjM0MiAxNC44NTk4IDAuMzY1OTY4IDE1LjE3NTdMNS4zMTE4IDIwLjEyMDdDNS41NzQ0NyAyMC4zNzM0IDUuOTMzMDMgMjAuNTAxMiA2LjI5NjM1IDIwLjQ3MTZDNi42NTk2NyAyMC40NDE5IDYuOTkyNzYgMjAuMjU3NyA3LjIxMDk3IDE5Ljk2NTdMMTkuNzY2IDIuNDY1NjdDMjAuMTY4MiAxLjkwNDYzIDIwLjAzOTUgMS4xMjM3NyAxOS40Nzg1IDAuNzIxNTAzWiIgZmlsbD0iI0IwNzBGRCIvPgo8L3N2Zz4K\"","import React, { useState, useContext, useEffect } from \"react\"\n// eslint-disable-next-line no-unused-vars\nimport { PageFragment } from \"components/fragments\"\nimport tw, { styled } from \"twin.macro\"\nimport { useTrackVisibility } from \"react-intersection-observer-hook\"\nimport { escape } from \"lodash\"\n\nimport { Profile, Title, Body } from \"components/industry-profiles-large\"\nimport ButtonLE from \"components/button-le\"\nimport { getProductId } from \"utils/products\"\nimport ConditionalLink from \"components/conditional-link\"\nimport ManualMoreLink from \"components/manual-more-link\"\nimport { getProductPath } from \"utils/products\"\nimport ActiveRouteContext from \"context/active-route-context\"\nimport { htmlFromSolution } from \"utils/html-from-solution\"\n\nconst Dot = styled.div`\n position: absolute;\n height: 12px;\n width: 12px;\n left: calc(50% - 6px);\n margin-left: 0px;\n margin-top: 20px;\n border-radius: 50%;\n background-color: ${({ color }) => color || \"white\"};\n`\n\nfunction buttonGradient(page) {\n const { buttonStart, buttonEnd } = page.extraData?.colors || {}\n\n return buttonStart && buttonEnd ? [buttonStart, buttonEnd] : null\n}\n\nfunction buildBody(page) {\n const { body, solutionsProduct } = page\n\n if (!solutionsProduct) {\n return body?.html || \"\"\n }\n\n return htmlFromSolution(solutionsProduct)\n}\n\nconst ProductProfile = ({ page, link = false, productGroup = false }) => {\n\n const [hovered, setHovered] = useState(false)\n\n const { setSection, resetSection } = useContext(ActiveRouteContext)\n\n const [ref, { isVisible }] = useTrackVisibility({ threshold: 1 })\n\n const linkTo = link ? getProductPath(page.path) : null\n\n const sectionId = getProductId(page)\n\n const body = buildBody(page)\n\n useEffect(() => {\n if (isVisible) {\n setSection(sectionId)\n }\n }, [isVisible, sectionId])\n\n useEffect(() => {\n return resetSection\n }, [])\n\n return (\n \n
\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n \n
\n
\n \n
\n
\n {linkTo && (\n \n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n to={linkTo}\n >\n \n {page.headerTitle || page.title}\n \n \n \n )}\n {!linkTo && (\n \n {page.headerTitle || page.title}\n \n )}\n ${body}
`,\n }}\n className=\"product\"\n />\n {linkTo && (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n Find Out More\n \n \n )}\n {page.title === 'Content Valuation' && (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n Find Out More\n \n \n )}\n {page.title === 'Streaming Metrics' && (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n Find Out More\n \n \n )}\n {productGroup && !(page.title === 'Streaming Metrics' || page.title === 'Content Valuation') && (\n \n Contact Us\n \n )}\n \n \n )\n}\n\nexport default ProductProfile\n","import React from \"react\"\nimport tw, { styled } from \"twin.macro\"\n\nconst SectionStyles = styled.div`\n ${tw`relative`}\n opacity: 0.99;\n ${({ color }) => `background-color: ${color};`}\n\n &:before {\n ${tw`absolute top-0 left-0 w-full h-full`}\n\n content: \"\";\n background: ${({ bg }) => `url(${bg})`};\n background-repeat: repeat-y;\n background-size: 100% auto;\n background-color: transparent;\n background-position: center;\n opacity: ${({ opacity }) => opacity || \"0.2\"};\n z-index: -1;\n\n @media (max-width: 640px) {\n background-size: 250%;\n background-position: 30% 50%;\n }\n }\n\n &.demand360-ad {\n :before {\n @media (max-width: 640px) {\n background-position: top;\n }\n }\n }\n\n &.home {\n .centered-container {\n ${tw`pb-12 l:pb-48`}\n }\n }\n\n &.demand360-ad-measurement {\n &:before {\n background-repeat: \"no-repeat\";\n background-size: \"cover\";\n }\n\n .centered-container {\n ${tw`pb-16`}\n }\n }\n`\n\nconst Gradient = styled.div`\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 1) 0%,\n rgba(0, 0, 0, 0) 16rem\n );\n\n &.page-404 {\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.5) 0%,\n rgba(0, 0, 0, 0) 25%,\n rgba(0, 0, 0, 0) 75%,\n rgba(0, 0, 0, 0.5) 100%\n );\n }\n\n &.measurement {\n background: none;\n }\n`\n\nconst SectionBackground = ({\n bg,\n children,\n className,\n gradientClass,\n ...props\n}) => {\n return (\n \n {children}\n \n )\n}\n\nexport default SectionBackground\n","import React from \"react\"\nimport tw, { styled } from \"twin.macro\"\n\nimport InsightsCard from \"components/insights-card\"\n\nconst Insights = styled.div`\n ${tw`py-20 mx-auto max-w-s m:max-w-m l:max-w-l`}\n\n &.titleless {\n ${tw`pt-12`}\n }\n\n &.newsroom {\n ${tw`pt-20 pb-32 m:pt-40 l:pt-44 m:pb-48 l:pb-44`}\n }\n`\n\nconst InsightsTitle = styled.h2`\n ${tw`py-8 w-full font-display font-bold text-grey-10 text-center`}\n font-size: 30px;\n @media (min-width: 640px) {\n font-size: 45px;\n line-height: 53px;\n }\n @media (min-width: 1024px) {\n font-size: 50px;\n line-height: 56px;\n }\n\n &.newsroom {\n ${tw`pt-0`}\n }\n`\n\nconst ArticleShowcase = ({\n articles,\n title = \"Required Reading\",\n wide = false,\n className = \"\",\n}) => {\n return (\n \n {title !== null && (\n {title}\n )}\n
\n {articles.map((post, idx) => (\n \n ))}\n
\n
\n )\n}\n\nexport default ArticleShowcase\n","import React from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport { getProducts } from \"utils/products\"\nimport ProductGroupCard from \"components/product-group-card\"\n\nconst Styles = styled.div`\n ${tw`w-full flex flex-col items-center justify-center l:grid l:grid-cols-3\n gap-y-8 gap-x-5 mx-auto max-w-s m:max-w-m l:max-w-l`}\n`\n\nexport default () => {\n const query = graphql`\n query ProductAvatars {\n gcms {\n pages(\n where: {\n path_in: [\n \"/products/tv-demand\"\n \"/products/talent-demand\"\n \"/products/movie-demand\"\n ]\n }\n orderBy: order_ASC\n ) {\n ...PageData\n }\n }\n }\n `\n\n const data = useStaticQuery(query)\n\n const pages = getProducts(data.gcms.pages)\n\n return (\n \n {pages.map((page) => (\n \n ))}\n \n )\n}\n","import React from \"react\"\nimport tw, { styled } from \"twin.macro\"\n\nimport YouTube from \"components/youtube.js\"\nimport Tag from \"components/tag\"\n\nconst Title = styled.h3`\n ${tw`font-display text-center m:text-left text-white py-2`}\n font-size: 30px;\n line-height: 35px;\n @media (min-width: 640px) {\n font-size: 45px;\n line-height: 53px;\n }\n @media (min-width: 1024px) {\n font-size: 50px;\n line-height: 56px;\n }\n`\n\nconst Body = styled.div`\n ${tw`font-body text-white py-2`}\n font-size: 15px;\n line-height: 27px;\n`\n\nexport default ({ video }) => {\n if (!!video) {\n return (\n
\n
\n {video.label}\n {video.title}\n {video.body && (\n \n )}\n
\n
\n {video.youtubeId && (\n \n )}\n
\n
\n )\n } else {\n return <>\n }\n}\n","import React from \"react\"\nimport tw, { styled } from 'twin.macro'\n\nconst LightSlant = styled.div`\n ${tw`-mt-16`}\n position: relative;\n\n &::before {\n ${tw`bg-grey-95`}\n content: \"\";\n position: absolute;\n top: 0px;\n left: 0;\n width: 100%;\n height: ${props => (props.height ? props.height : \"calc(100% + 100px)\")};\n clip-path: polygon(0% 10px, 100% 0%, 100% calc(100% - 10px), 0% 100%);\n @media (min-width: 640px) {\n clip-path: polygon(0% 45px, 100% 0%, 100% calc(100% - 45px), 0% 100%);\n }\n }\n\n & > div {\n position: relative;\n z-index: 1;\n }\n`\nconst LightSlantedSection = ({ children, ...rest }) => (\n \n
{children}
\n
\n)\n\nexport default LightSlantedSection\n","import React, { useEffect, useState } from \"react\"\nimport { useLocation } from \"@reach/router\"\nimport tw, { styled } from \"twin.macro\"\n\nimport Modal from \"components/modal\"\nimport YouTube from \"components/youtube.js\"\n\nconst StyleContainer = styled.div`\n ${tw`mx-auto m:max-w-m l:max-w-l flex flex-col items-center relative`}\n\n z-index: 1;\n\n .video {\n ${tw`w-full text-center flex flex-col items-center px-2`}\n\n .video-preview {\n ${tw`border-2 border-white border-opacity-10`}\n\n border-radius: 10px;\n }\n\n .gradient {\n ${tw`block`}\n\n border-radius: 8px;\n left: 2px;\n top: 2px;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.8) 0%,\n rgba(0, 0, 0, 0) 100%\n );\n }\n }\n`\n\nconst VideoModal = ({\n className = \"\",\n data = {},\n autoplayHash = \"\",\n ...params\n}) => {\n const [modal, setModal] = useState(false)\n const location = useLocation()\n\n useEffect(() => {\n // Open modal if hash matches provided id\n if (\n autoplayHash !== \"\" &&\n location.hash.length > 0 &&\n location.hash === `#${autoplayHash}`\n ) {\n setModal(true)\n }\n }, [location])\n\n let previewImage, previewVideo\n\n const { videoModalId: videoId, previewImageHandle, previewVideoHandle } = data\n const mediaBase = process.env.GATSBY_ASSETS_BASE_URL\n\n if (previewImageHandle) {\n previewImage = `${mediaBase}auto_image/resize=width:1200/compress/${previewImageHandle}`\n }\n\n if (previewVideoHandle) {\n previewVideo = `${mediaBase}${previewVideoHandle}`\n }\n\n if (!videoId) {\n return null\n }\n\n return (\n \n
\n \n
\n {modal && (\n setModal(false)}>\n
\n \n
\n
\n )}\n
\n )\n}\n\nexport default VideoModal\n","import React from \"react\"\n\nimport tw, { styled } from \"twin.macro\"\n\nconst VerticalLine = styled.div`\n ${tw`hidden l:block`}\n background: linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.27) 5%, rgba(255,255,255,0.27) 95%, rgba(255,255,255,0) 100%);\n position: absolute;\n left: 50%;\n margin-left: -44px;\n top: 0px;\n width: 1px;\n bottom: 1000px;\n\n &.products {\n left: calc(50% - (100% / 24));\n bottom: 0;\n margin-left: 0;\n }\n\n &.newsroom {\n ${tw`m:block bottom-0 ml-0`}\n\n background: linear-gradient(\n 180deg,\n rgba(135, 135, 135, 1) 0%,\n rgba(135, 135, 135, 1) 95%,\n rgba(135, 135, 135, 0) 100%\n );\n\n left: -26px;\n }\n`\n\nexport default VerticalLine\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { Link, graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport CouponContext from \"context/coupon-context\"\n\nconst Style = styled.div`\n ${tw`flex flex-col items-center pt-16 m:pb-8 m:pt-32 m:-mb-32 font-body text-white text-center max-w-s mx-auto m:max-w-m l:max-w-l`}\n position: relative;\n z-index: 2;\n\n h2 {\n ${tw`font-display font-bold text-springgreen-light border-springgreen-light mb-6`}\n font-size: 30px;\n line-height: 1.5;\n letter-spacing: normal;\n text-align: center;\n @media (min-width: 720px) {\n font-size: 40px;\n }\n }\n\n .copy {\n ${tw`l:w-2/3`}\n font-size: 16px;\n max-width: 90%;\n text-align: center;\n @media (min-width: 720px) {\n font-size: 20px;\n }\n }\n\n a {\n ${tw`text-springgreen-light`}\n\n &:hover {\n text-decoration: undeline;\n }\n }\n\n .partner-logo {\n ${tw`flex flex-col items-center justify-center mb-8`}\n border-radius: 5px;\n box-shadow: 4px 4px 15px 0 rgba(129, 129, 129, 0.15);\n background-color: #ffffff;\n height: 126px;\n padding: 20px;\n width: 334px;\n max-width: 90%;\n\n img {\n max-width: 100%;\n max-height: 100%;\n }\n }\n`\n\nconst CouponBanner = () => {\n const [couponValid, setCouponValid] = useState(false)\n const [partner, setPartner] = useState(null)\n const [loading, setLoading] = useState(true)\n const context = useContext(CouponContext)\n const {\n gcms: { partners },\n } = useStaticQuery(graphql`\n {\n gcms {\n partners {\n id\n name\n logo {\n url\n }\n }\n }\n }\n `)\n\n useEffect(() => {\n let ignore = false\n async function fetchData() {\n const coupon = await context.getCoupon()\n if (coupon) {\n setCouponValid(coupon?.valid === true)\n }\n const partnerId = coupon?.metadata?.partner_id || context.partnerId\n if (partnerId) {\n const partner = partners.find((p) => p.id == partnerId)\n setPartner(partner)\n }\n setLoading(false)\n }\n fetchData()\n return () => {\n ignore = true\n }\n }, [context])\n\n if (context.coupon || context.partnerId) {\n if (loading) {\n return (\n \n )\n } else {\n if (partner) {\n return (\n \n )\n } else if (couponValid) {\n return (\n \n )\n } else {\n return null\n }\n }\n } else {\n return null\n }\n}\n\nexport default CouponBanner\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAxOSAyMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjYzODUgMjEuODQwNkwxNy44NzI4IDExLjkxOTFDMTguNTYwNyAxMS40OTkzIDE4LjU2MDcgMTAuNTAxMyAxNy44NzI4IDEwLjA4MDRMMS42Mzg1IDAuMTYwMDUyQzAuOTIwNDQ1IC0wLjI3OTE3OCAwIDAuMjM3NTY0IDAgMS4wNzgzNFYyMC45MjEyQzAgMjEuNzYyIDAuOTIwNDQ1IDIyLjI3ODcgMS42Mzg1IDIxLjg0MDZaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","import React, { useState } from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport { brandBlock, brandRules } from \"utils/brand\"\nimport Button from \"components/button\"\nimport PlanPrice from \"components/plan-price\"\nimport PlayIcon from \"images/icons/play.svg\"\nimport Modal from \"components/modal\"\nimport YouTube from \"components/youtube.js\"\n\nconst MonitorSubscribeStyle = styled.div`\n ${tw`flex flex-col items-center overflow-visible -mx-2 text-white`}\n\n .header {\n ${tw`w-full l:w-3/4 text-center flex flex-col items-center px-2 pb-10 text-grey-65`}\n\n font-size: 15px;\n line-height: 24px;\n @media (min-width: 640px) {\n font-size: 22px;\n line-height: 33px;\n }\n }\n\n h2 {\n ${tw`font-display font-bold`}\n text-align: center;\n font-size: 30px;\n line-height: 39px;\n @media (min-width: 640px) {\n font-size: 60px;\n line-height: 79px;\n }\n }\n\n .main {\n ${tw`overflow-hidden text-white flex flex-wrap justify-between p-8 w-full`}\n background: linear-gradient(180deg, #2c2c2c 0%, #191919 100%);\n border-radius: 5px;\n\n .copy {\n ${tw`text-white font-body`}\n font-size: 15px;\n letter-spacing: 0;\n line-height: 1.8;\n max-width: 720px;\n padding-bottom: 16px;\n\n h3 {\n ${tw`font-display font-bold`}\n font-size: 21px;\n line-height: 1.43;\n }\n\n .footer {\n margin-top: 30px;\n p {\n ${tw`text-grey-45`}\n }\n a {\n ${tw`font-display`}\n text-decoration: underline;\n text-underline-offset: 6px;\n }\n }\n }\n\n .price {\n max-width: auto;\n @media (min-width: 1200px) {\n max-width: 120px;\n }\n }\n\n .cta {\n max-width: 240px;\n }\n }\n`\n\nconst MonitorSubscribe = ({ header = false, faq = false, video = false }) => {\n const [modal, setModal] = useState(false)\n\n const data = useStaticQuery(graphql`\n query {\n gcms {\n content: contentBlocks(\n where: { identifier: \"demand360-lite-subscription-cta\" }\n first: 1\n orderBy: order_ASC\n ) {\n title\n headerContent {\n html\n }\n mainContent {\n html\n }\n callToAction\n linkUrl\n extraData\n }\n }\n }\n `)\n\n if (data.gcms.content?.length < 1) {\n return <>\n }\n\n const content = brandBlock(data.gcms.content[0])\n\n content.mainContent.html = data.gcms.content[0].mainContent.html\n\n const videoAvailable =\n content.extraData?.videoCTA && content.extraData?.youTubeID\n\n return (\n \n {header && (\n <>\n

\n \n \n )}\n
\n \n
\n \n
\n
\n \n {(faq || !videoAvailable) && (\n \n {content.extraData.faqCTA}\n \n )}\n {videoAvailable && video && (\n setModal(true)}\n className=\"my-3 w-full secondary white-text monitor\"\n >\n
\n \n {content.extraData.videoCTA}\n
\n \n )}\n
\n
\n {videoAvailable && modal && (\n setModal(false)}>\n
\n \n
\n
\n )}\n \n )\n}\n\nexport default MonitorSubscribe\n","import React from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport { brandBlock, brandRules } from \"utils/brand\"\nimport VideoModal from \"./video-modal\"\n\nconst StyleContainer = styled.div`\n ${tw`flex flex-col items-center overflow-visible -mx-2 text-white`}\n\n .header {\n ${tw`w-full text-center flex flex-col items-center px-2 pb-10`}\n\n p {\n color: #bfbfbf;\n }\n\n .copy {\n ${tw`l:w-3/4`}\n }\n\n & > img {\n ${tw`py-8`}\n }\n }\n\n p {\n ${tw`text-white font-body`}\n font-size: 15px;\n line-height: 24px;\n @media (min-width: 640px) {\n font-size: 17px;\n line-height: 27px;\n }\n }\n\n h2 {\n ${tw`font-display font-bold`}\n text-align: center;\n font-size: 30px;\n line-height: 39px;\n @media (min-width: 640px) {\n font-size: 60px;\n line-height: 79px;\n }\n }\n`\n\nconst MonitorVideo = () => {\n const data = useStaticQuery(graphql`\n query {\n gcms {\n content: contentBlocks(\n where: { identifier: \"demand360-lite-video-section\" }\n first: 1\n orderBy: order_ASC\n ) {\n icon {\n url\n altText\n }\n title\n mainContent {\n html\n }\n headerContent {\n html\n }\n callToAction\n linkUrl\n extraData\n }\n }\n }\n `)\n\n const content = brandBlock(data.gcms.content?.[0])\n\n return (\n
\n \n
\n {content.icon && (\n {content?.icon?.altText}\n )}\n

\n \n \n

\n
\n
\n )\n}\n\nexport default MonitorVideo\n","import React, { useEffect, useState } from \"react\"\nimport tw, { styled } from \"twin.macro\"\nimport { graphql, useStaticQuery } from \"gatsby\"\n\nimport Button from \"components/button\"\nimport PlayIcon from \"images/icons/play.svg\"\nimport Modal from \"components/modal\"\nimport YouTube from \"components/youtube.js\"\nimport ParrotImg from \"components/img\"\nimport Logo from \"images/logos/demand360-lite-product.png\"\nimport LogoRegular from \"images/logos/demand360-lite-product-regular.png\"\nimport PlanPrice from \"components/plan-price\"\nimport { brandBlock } from \"utils/brand\"\n\nconst MonitorCTAStyles = styled.div`\n ${tw`font-body text-white overflow-hidden`}\n z-index: 1;\n\n & > .main {\n ${tw`py-32`}\n\n font-size: 14px;\n line-height: 23px;\n\n @media (min-width: 640px) {\n font-size: 22px;\n line-height: 33px;\n }\n }\n\n .cw {\n ${tw`mx-auto max-w-s m:max-w-m l:max-w-l font-bold`}\n }\n\n .header-wrapper {\n ${tw`mx-auto l:max-w-l font-bold relative`}\n\n picture.hero img,\n img.hero {\n ${tw`absolute`}\n\n width: 100%;\n top: 510px;\n\n @media (min-width: 400px) {\n top: 500px;\n }\n\n @media (min-width: 640px) {\n top: 0;\n width: auto;\n height: 500px;\n left: 50%;\n }\n\n @media (min-width: 750px) {\n height: 655px;\n }\n\n @media (min-width: 850px) {\n height: 755px;\n }\n\n @media (min-width: 1200px) {\n height: 970px;\n }\n }\n\n .header {\n ${tw`m:pl-8 l:pl-0`}\n\n font-size: 15px;\n line-height: 1.6;\n text-align: center;\n\n height: 750px;\n\n @media (min-width: 400px) {\n height: 763px;\n }\n\n @media (min-width: 640px) {\n height: 565px;\n text-align: left;\n }\n\n @media (min-width: 1200px) {\n height: 612px;\n font-size: 18px;\n }\n\n .logo {\n width: 351px;\n\n @media (min-width: 640px) {\n width: 335px;\n margin-top: 30px;\n }\n\n @media (min-width: 1200px) {\n width: 488px;\n }\n }\n }\n }\n\n .transparent img {\n margin-top: -3px;\n margin-left: 5px;\n }\n\n h2 {\n ${tw`font-extrabold`}\n font-size: 38px;\n line-height: 38px;\n padding-top: 30px;\n padding-bottom: 18px;\n text-align: center;\n @media (min-width: 640px) {\n line-height: 1.13;\n text-align: left;\n }\n @media (min-width: 1200px) {\n font-size: 65px;\n line-height: 1.13;\n text-align: left;\n }\n }\n\n .plan-price {\n ${tw`h-24 l:h-32`}\n\n background: linear-gradient(180deg, #3e3d3c 0%, #191919 100%);\n box-shadow: 4px 4px 15px rgba(0, 0, 0, 0.1477);\n border-radius: 5px;\n\n .price {\n ${tw`text-springgreen-light font-body w-full m:w-7/12 font-bold`}\n max-width: auto;\n @media (min-width: 1200px) {\n max-width: 200px;\n }\n }\n }\n\n .cta {\n .button {\n height: 14px;\n }\n }\n`\n\nconst LogosSlider = styled.div`\n ${tw`relative w-full`}\n height: 87.5px;\n margin: auto;\n overflow: hidden;\n\n @keyframes scroll {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(calc(-167px * ${(props) => props.quantity}));\n }\n }\n\n .logos-track {\n animation: scroll ${(props) => props.quantity * 3}s linear infinite;\n display: flex;\n width: calc(167px * ${(props) => props.quantity});\n }\n\n .logo {\n ${tw`flex flex-col items-center justify-center`}\n flex-grow: 0;\n flex-shrink: 0;\n height: 87.5px;\n padding-left: 8.5px;\n padding-right: 8.5px;\n width: 167px;\n\n img {\n display: block;\n height: 87.5px;\n width: 150px;\n padding: 0;\n }\n }\n`\n\nconst MonitorCTA = ({ content, logos, playVideo, onPlayVideo }) => {\n const [logosData, setLogosData] = useState([])\n\n const data = useStaticQuery(graphql`\n query {\n gcms {\n content: contentBlocks(\n where: { identifier: \"demand360-lite-subscription-cta\" }\n first: 1\n orderBy: order_ASC\n ) {\n title\n headerContent {\n html\n }\n mainContent {\n html\n }\n callToAction\n linkUrl\n }\n }\n }\n `)\n\n const contentCTA = brandBlock(data.gcms.content[0])\n\n useEffect(() => {\n if (logos.logos) {\n const newLogos = logos.logos.map((l, idx) => {\n return { order: idx, gen: 0, ...l }\n })\n setLogosData(newLogos)\n }\n }, [logos])\n\n return (\n \n
\n
\n
\n \n
\n {content.featuredImage && (\n \n )}\n
\n {logosData.length > 0 && (\n
\n
\n {logos.heading}\n
\n \n
\n {[0, 1].map((i) => {\n return logosData.map((l) => (\n \n {l.altText}\n
\n ))\n })}\n
\n \n
\n )}\n \n {content.extraData?.YouTubeID && (\n onPlayVideo(false)}>\n
\n \n
\n
\n )}\n
\n )\n}\n\nexport default MonitorCTA\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { Link, graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\nimport { motion, AnimatePresence } from \"framer-motion\"\n\nimport GeoContext from \"context/geo-context\"\nimport Button from \"components/button\"\nimport IconGenre from \"images/icons/demand_sample/genre.svg\"\nimport IconRank from \"images/icons/demand_sample/rank.svg\"\nimport IconShow from \"images/icons/demand_sample/show.svg\"\nimport { posterUrl } from \"utils/images\"\n\nconst Styles = styled.div`\n ${tw`font-body text-white`}\n\n h2 {\n ${tw`py-8 m:pb-16`}\n font-size: 24px;\n line-height: 1.3;\n text-align: center;\n @media (min-width: 640px) {\n font-size: 35px;\n }\n }\n\n .sample {\n overflow: hidden;\n position: relative;\n background-image: linear-gradient(\n 0deg,\n rgba(144, 19, 254, 0.5) 0%,\n rgba(0, 0, 0, 0) 66%\n );\n @media (min-width: 640px) {\n background-image: linear-gradient(\n 90deg,\n rgba(144, 19, 254, 1) 0%,\n rgba(0, 0, 0, 0) 66%\n );\n height: 300px;\n }\n\n .cta {\n ${tw`flex flex-row items-center justify-center p-2 m:p-8`}\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n font-size: 24px;\n line-height: 2;\n text-align: center;\n backdrop-filter: blur(1px);\n background-color: rgba(0, 0, 0, 0.9);\n z-index: 2;\n @media (min-width: 640px) {\n font-size: 35px;\n }\n\n a {\n ${tw`text-springgreen`}\n }\n }\n\n .show {\n ${tw`flex flex-col m:flex-row m:flex-wrap l:flex-nowrap items-center justify-center m:justify-between`}\n }\n\n .preloader {\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n width: 0;\n opacity: 0;\n }\n\n .cover {\n ${tw`flex-grow-0 flex-shrink-0 relative`}\n width: 200px;\n height: 300px;\n\n img {\n box-shadow: 0 4px 7px 0 rgba(0, 0, 0, 0.5);\n height: 100%;\n position: absolute;\n width: 100%;\n }\n }\n\n .caption {\n ${tw`flex flex-col items-start justify-center py-6 l:py-0`}\n font-size: 22px;\n line-height: 1.57;\n letter-spacing: normal;\n padding-left: 20px;\n padding-right: 20px;\n max-width: 500px;\n @media (min-width: 640px) {\n font-size: 27px;\n }\n @media (min-width: 1200px) {\n font-size: 30px;\n max-width: 100%;\n padding-left: 28px;\n padding-right: 28px;\n }\n\n .data {\n ${tw`text-yellow font-display`}\n }\n }\n\n .details {\n ${tw`flex flex-col justify-between flex-shrink-0 m:hidden flex-wrap l:flex px-2 l:px-0`}\n font-size: 15px;\n height: 100%;\n padding-bottom: 0.5rem;\n position: relative;\n @media (min-width: 1200px) {\n padding-top: 1rem;\n padding-bottom: 1rem;\n width: 330px;\n font-size: 18px;\n }\n\n .line {\n border-left: 1px solid white;\n top: 0;\n left: 22px;\n height: 100%;\n position: absolute;\n width: 1px;\n @media (min-width: 640px) {\n display: none;\n }\n @media (min-width: 1200px) {\n display: block;\n left: 22px;\n }\n }\n\n .detail {\n ${tw`relative py-2 flex flex-row items-center`}\n z-index: 1;\n\n .icon {\n ${tw`flex-shrink-0 flex-grow-0 flex flex-col items-center`}\n margin-right: 5px;\n height: 30px;\n width: 30px;\n @media (min-width: 1200px) {\n margin-right: 10px;\n height: 45px;\n width: 45px;\n }\n\n img {\n height: 100%;\n width: 100%;\n }\n }\n\n .flag {\n ${tw`flex-shrink-0 flex-grow-0 flex flex-col items-center justify-center`}\n background-color: #6303b7;\n border-radius: 9999px;\n margin-right: 5px;\n height: 30px;\n width: 30px;\n @media (min-width: 1200px) {\n margin-right: 10px;\n height: 45px;\n width: 45px;\n }\n\n div {\n ${tw`flex-shrink-0 flex-grow-0 flex flex-col items-center justify-center`}\n border-radius: 9999px;\n filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.5));\n height: 20px;\n width: 20px;\n @media (min-width: 1200px) {\n height: 30px;\n width: 30px;\n }\n overflow: hidden;\n }\n\n img {\n height: 20px;\n min-width: 28px;\n @media (min-width: 1200px) {\n height: 30px;\n width: 42px;\n }\n }\n }\n\n .label {\n ${tw`text-yellow inline-block flex-shrink-0 flex-grow-0`}\n width: 85px;\n }\n\n .data {\n max-height: 54px;\n overflow: hidden;\n }\n }\n }\n }\n`\n\nconst DemandSample = ({ onPlayVideo, secondaryCtaClick }) => {\n const data = useStaticQuery(graphql`\n {\n demandSampleJson {\n markets {\n country_iso\n country_name\n market_name\n slug\n titles {\n genre\n slug\n title\n genre_rank\n parrot_id\n }\n }\n }\n gcms {\n websiteSetting(where: { name: \"Measurement page localization\" }) {\n jsonValue\n }\n }\n }\n `)\n const { markets } = data.demandSampleJson\n const { jsonValue: settings } = data.gcms.websiteSetting\n const [market, setMarket] = useState(null)\n const [show, setShow] = useState(null)\n const [showIdx, setShowIdx] = useState(0)\n const [showCTA, setShowCTA] = useState(false)\n const geoContext = useContext(GeoContext)\n const animVariants = {\n shown: {\n opacity: 1,\n },\n hidden: {\n opacity: 0,\n },\n }\n\n function switchMarket(market) {\n setMarket(market)\n setShow(market.titles[0])\n }\n\n function refreshShow(e) {\n e && e.preventDefault()\n if (market) {\n if (showIdx < market.titles.length) {\n setShow(market.titles[showIdx])\n setShowIdx(showIdx + 1)\n setShowCTA(false)\n } else {\n setShowCTA(true)\n }\n }\n }\n\n function callVideo(e) {\n e && e.preventDefault()\n onPlayVideo && onPlayVideo()\n }\n\n useEffect(() => refreshShow(), [market])\n\n useEffect(() => {\n async function loadMarket() {\n const defaultMarket =\n markets.find((m) => m.country_iso === settings.default) || markets[0]\n const geo = await geoContext.get()\n if (geo && geo.code) {\n const selectedMarket = markets.find((m) => m.country_iso === geo.code)\n if (selectedMarket) {\n switchMarket(selectedMarket)\n } else {\n switchMarket(defaultMarket)\n }\n } else {\n switchMarket(defaultMarket)\n }\n }\n if (markets) {\n loadMarket()\n }\n }, [markets])\n\n const titleLen = 50\n let shortTitle = show?.title || \"\"\n if (shortTitle.length > titleLen) {\n //trim the string to the maximum length\n shortTitle = shortTitle.substr(0, titleLen)\n\n //re-trim if we are in the middle of a word and\n shortTitle = shortTitle.substr(\n 0,\n Math.min(shortTitle.length, shortTitle.lastIndexOf(\" \"))\n )\n shortTitle = shortTitle + \"...\"\n }\n\n if (!markets || markets[0].country_iso === \"\") {\n return null\n } else {\n return (\n \n
\n

\n \n DEMAND360LITE\n {\" \"}\n in action: Real-time insights for{\" \"}\n \n {market && market.market_name}\n \n

\n
\n \n {!!show && (\n
\n posterUrl(t.parrot_id, \"EXTRA_LARGE_DPR_2\"))\n .join(\",\"),\n }}\n />\n
\n \n
\n
\n \n \n Over the last 30 days,{\" \"}\n \n \n {shortTitle}{\" \"}\n \n \n {\" \"}\n was the{\" \"}\n \n \n #{show.genre_rank}{\" \"}\n \n \n most in-demand{\" \"}\n \n \n {show.genre}{\" \"}\n \n \n TV show in{\" \"}\n \n \n {market.market_name}.\n \n \n
\n \n
\n
\n\n
\n \n \n \n
\n \"\"\n
\n
TV Show:
\n
{shortTitle}
\n \n \n
\n \"\"\n
\n
Genre:
\n
{show.genre}
\n \n \n
\n \"\"\n
\n
Rank:
\n
#{show.genre_rank}
\n \n \n
\n
\n \n
\n
\n
Market:
\n
{market.country_name}
\n \n \n
\n
\n )}\n {showCTA && (\n \n
\n Did you enjoy your free insights?{\" \"}\n Sign up now to{\" \"}\n \n DEMAND360LITE\n {\" \"}\n or watch our product{\" \"}\n \n demo video\n \n .\n
\n \n )}\n
\n
\n
\n
\n )\n }\n}\n\nexport default DemandSample\n","export default \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ1IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHdpZHRoPSI0NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGZpbHRlciBpZD0iYSIgaGVpZ2h0PSIyMzEuNiUiIHdpZHRoPSIxOTIuMyUiIHg9Ii00Ni4yJSIgeT0iLTYzLjIlIj48ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIi8+PGZlR2F1c3NpYW5CbHVyIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSIgc3RkRGV2aWF0aW9uPSIyIi8+PGZlQ29sb3JNYXRyaXggaW49InNoYWRvd0JsdXJPdXRlcjEiIHJlc3VsdD0ic2hhZG93TWF0cml4T3V0ZXIxIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjUgMCIvPjxmZU1lcmdlPjxmZU1lcmdlTm9kZSBpbj0ic2hhZG93TWF0cml4T3V0ZXIxIi8+PGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIi8+PC9mZU1lcmdlPjwvZmlsdGVyPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48cGF0aCBkPSJtMCAuMDQ1NzUzNjZoMjUuOTg4MTczMnYxNi41Mzc1ODUzNGgtMjUuOTg4MTczMnoiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvbWFzaz48bWFzayBpZD0iYyIgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibS4xMjk1NTYxLjA2ODgzNjU5aDE1LjU4MTI5Mjd2MS4xOTk0NTYwOWgtMTUuNTgxMjkyN3oiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvbWFzaz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgY3g9IjIyLjUiIGN5PSIyMi41IiBmaWxsPSIjNjMwM2I3IiByPSIyMi41Ii8+PGcgZmlsbD0iI2ZmZiIgZmlsdGVyPSJ1cmwoI2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMCAxMykiPjxwYXRoIGQ9Im0xNi40OTM4MjkzIDguNTM5NjM2NTljLTEuODI4NTYxLTEuMDUyNjgyOTMtMy42NTcxMjItMi4xMDUwNDg3OS01LjQ4NjMxNzEtMy4xNTYxNDYzNS0uMzg4NDE0Ni0uMjIzMjE5NTEtLjYwNzUxMjItLjA5MjkwMjQ0LS42MDc4MjkzLjM2MTE0NjM1LS4wMDEyNjgzIDEuMDUyNjgyOTItLjAwMDMxNyAyLjEwNTA0ODc4LS4wMDAzMTcgMy4xNTc3MzE3IDAgMS4wNDQxMjE5NS0uMDAwNjM0MiAyLjA4ODI0MzkxIDAgMy4xMzI2ODI5MS4wMDAzMTcuNDY4LjIxNzgyOTIuNTk5NTg1NC42MTg2MDk3LjM2OTM5MDMgMS44Mjk4MjkzLTEuMDUwNzgwNSAzLjY1OTAyNDQtMi4xMDI1MTIyIDUuNDg2OTUxMi0zLjE1NTUxMjIzLjM4MDQ4NzgtLjIxOTQxNDY0LjM3NTQxNDctLjQ4NjcwNzMyLS4wMTEwOTc1LS43MDkyOTI2OCIvPjxwYXRoIGQ9Im0yNC45NTI2MTIyIDE1LjIzMDA3MDdjMCAuMzM4LS4wMDA2MzQyLjMzOC0uMzQ1OTI2OC4zMzgtMy44NzMzNjU5LjAwMDMxNzEtNy43NDY3MzE3LjAwMDMxNzEtMTEuNjIwMDk3Ni4wMDAzMTcxLTMuODczMzY1ODUgMC03Ljc0NjczMTcgMC0xMS42MjA0MTQ2My0uMDAwMzE3MS0uMzMwMzkwMjQgMC0uMzMxMzQxNDYtLjAwMDMxNy0uMzMxMzQxNDYtLjMyNzIxOTUgMC00LjYxNzUzNjYgMC05LjIzNTM5MDIyIDAtMTMuODUyOTI2ODEgMC0uMzI1OTUxMjIuMDAwOTUxMjItLjMyNjI2ODI5LjMzMzU2MDk3LS4zMjYyNjgyOWgyMy4yNDAxOTUxMmMuMzQzMzkwMiAwIC4zNDQwMjQ0LjAwMDMxNzA3LjM0NDAyNDQuMzQwODUzNjZ6bS0yNC45NTI3MDczMiAxLjM1MzI2ODNoMjUuOTg4MjY4MzJ2LTE2LjUzNzU4NTM0aC0yNS45ODgyNjgzMnoiIG1hc2s9InVybCgjYikiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLjI3MTM4MykiLz48cGF0aCBkPSJtMTUuMTExMjYzNCAxLjI2ODMyNDM5aC0xNC4zODE4MDQ4NmMtLjMzMTM0MTQ3IDAtLjU5OTkwMjQ0LS4yNjg1NjA5Ny0uNTk5OTAyNDQtLjU5OTkwMjQ0IDAtLjMzMTM0MTQ2LjI2ODU2MDk3LS41OTk1ODUzNi41OTk5MDI0NC0uNTk5NTg1MzZoMTQuMzgxODA0ODZjLjMzMTAyNDQgMCAuNTk5NTg1NC4yNjgyNDM5LjU5OTU4NTQuNTk5NTg1MzYgMCAuMzMxMzQxNDctLjI2ODU2MS41OTk5MDI0NC0uNTk5NTg1NC41OTk5MDI0NCIgbWFzaz0idXJsKCNjKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wNzMxNzEgMTcuNzEwNDA3KSIvPjwvZz48L2c+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ1IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHdpZHRoPSI0NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGZpbHRlciBpZD0iYSIgaGVpZ2h0PSIxODAuNiUiIHdpZHRoPSIxOTYlIiB4PSItNDglIiB5PSItMzguNyUiPjxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiLz48ZmVHYXVzc2lhbkJsdXIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIiBzdGREZXZpYXRpb249IjIiLz48ZmVDb2xvck1hdHJpeCBpbj0ic2hhZG93Qmx1ck91dGVyMSIgcmVzdWx0PSJzaGFkb3dNYXRyaXhPdXRlcjEiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuNSAwIi8+PGZlTWVyZ2U+PGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiLz48ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiLz48L2ZlTWVyZ2U+PC9maWx0ZXI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Im0uMDYxMzE5NjkuMjUxNDg2NDloMjQuOTE3MDQyNDF2MjkuODE2MDgxMTFoLTI0LjkxNzA0MjQxeiIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9tYXNrPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGNpcmNsZSBjeD0iMjIuNSIgY3k9IjIyLjUiIGZpbGw9IiM2MzAzYjciIHI9IjIyLjUiLz48ZyBmaWxsPSIjZmZmIiBmaWx0ZXI9InVybCgjYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwIDgpIj48cGF0aCBkPSJtOC4wOTE3NTY3NiAxNy41NTgyNzdjLjUyMzY0ODY1IDEuMjg1NDczIDEuMDg0NDU5NDYgMi40NTg0NDYgMS45NjY4OTE4NCAzLjQzNDEyMTYgMS40NzYwMTM2IDEuNjMxNzU2OCAzLjQzMzQ0NiAxLjk0MjU2NzYgNS4xMjcwMjcxLjQxNjU1NDEgMS4xNTY3NTY3LTEuMDQyMjI5NyAxLjc3NDY2MjEtMi40MDkxMjE2IDIuNDEyNS0zLjg1MjcwMjctMy4xNzQzMjQzIDEuMTI2MzUxNC02LjMzMzEwODEgMS4xMjgzNzg0LTkuNTA2NDE4OTQuMDAyMDI3bTQuNjgwMDY3NTQgNS45OTY5NTk1Yy0xLjY5MDg3ODQtLjAyMDYwODEtMi45MzM3ODM3Ni0uOTQ4NjQ4Ny0zLjk0MDg3ODM1LTIuMjMzNzgzOC0uOTkxODkxOS0xLjI2NjU1NDEtMS42NjM4NTEzNi0yLjcxNTg3ODQtMi4xNzgwNDA1NC00LjIzNjgyNDMtLjIzNzgzNzg0LS43MDQwNTQxLS4wMTExNDg2NS0xLjAwOTc5NzMuNzEyNS0uODcyOTczLjgwNDcyOTczLjE1MTY4OTIgMS41OTMyNDMyNC4zODk4NjQ5IDIuMzkwMjAyNy41ODQ3OTczIDEuODExNDg2NDkuNDQzOTE4OSAzLjYyMzMxMDc5LjU3MTI4MzggNS40NjcyMjk2OS4xNDU2MDgxLjk1OTc5NzMtLjIyMTI4MzggMS45MTY1NTQxLS40NDg2NDg2IDIuODY5NTk0Ni0uNjk3NjM1MS4yODU4MTA4LS4wNzQzMjQzLjYyMTI4MzgtLjE4NzgzNzkuODgwMDY3Ni4wOTc5NzI5LjI1NjQxODkuMjgzNzgzOC4xMjI5NzMuNTg4NTEzNi4wMTU4Nzg0Ljg4MjQzMjUtLjUwOTEyMTYgMS4zOTYyODM4LTEuMTM0MTIxNiAyLjczNDc5NzMtMi4wMTU4Nzg0IDMuOTM4ODUxMy0uODA5Nzk3MyAxLjEwNTQwNTQtMS44MzQ3OTczIDEuOTIxMjgzOC0zLjE3NTMzNzggMi4zMDMzNzg0LS4zMjYwMTM2LjA5MzI0MzMtLjY1NTA2NzYuMDM5MTg5Mi0xLjAyNTMzNzkuMDg4MTc1NyIvPjxwYXRoIGQ9Im00LjYyMDg0NDU5IDEwLjUwMzQ0NTljLjcxNzkwNTQxLS43Nzg3MTYxNyAxLjQ0NzI5NzMtMS41MjA2MDgwNiAyLjM3MjI5NzMtMi4wMzgxNzU2MyAxLjA3NzM2NDg3LS42MDIwMjcwMyAyLjExNDE4OTE5LS40Njk1OTQ1OSAzLjA5NDU5NDYxLjIxNjU1NDA1LjM4ODg1MTMuMjcyNjM1MTQuNzM1ODEwOC42MDU0MDU0MSAxLjA5OTY2MjEuOTEzNTEzNTIuMjM1NDczLjE5OTY2MjE2LjIzOTE4OTIuNDEzODUxMzYtLjA4MjQzMjQuNDYyNDk5OTYtMi4xMTkyNTY3NC4zMjA5NDYtNC4yMzY4MjQzMS42ODEwODExLTYuMzk1MjcwMjUuNTUxNjg5Mi0uMDEyMTYyMTctLjAwMDY3NTYtLjAyMjYzNTE0LS4wMjU2NzU2LS4wODg4NTEzNi0uMTA2MDgxMSIvPjxwYXRoIGQ9Im0yMS4xMjg4NTE0IDEwLjU4NDI5MDVjLS44MDEwMTM2LjEwMzA0MDYtMS40OTM1ODExLjA4NjE0ODctMi4xNzcwMjcxLjAyMjk3My0xLjQwNDM5MTktLjEyOTM5MTktMi44MDkxMjE2LS4yNjIxNjIxLTQuMTk4MzEwOC0uNTE2NTU0LS4xNjExNDg2LS4wMjkzOTE5LS4zNTM3MTYyLS4wMTUyMDI3LS40MTA0NzMtLjIwODc4MzgyLS4wNTEwMTM1LS4xNzQzMjQzMy4xMTMxNzU3LS4yNTE2ODkxOS4yMjIyOTczLS4zNDM5MTg5Mi40ODg1MTM2LS40MTIxNjIxNy45NTYwODExLS44MzMxMDgxMSAxLjUzNzUtMS4xNDE4OTE5Ljg1NTA2NzYtLjQ1NDM5MTg5IDEuNjUwNjc1Ny0uMzgxNDE4OTEgMi40NjUyMDI3LjAyMDk0NTk1IDEuMDAyMzY0OS40OTUyNzAyNyAxLjc0ODk4NjUgMS4yODgxNzU2OCAyLjU2MDgxMDkgMi4xNjcyMjk2OSIvPjxwYXRoIGQ9Im0yMi43OTM2NDg2IDE0LjE5MDMzNzhjLS41MjMzMTA4IDMuMTI3MDI3MS0xLjYwMzM3ODMgNi4wNzYzNTE0LTMuMzUzNzE2MiA4LjczNTQ3My0xLjYzMTc1NjcgMi40Nzk3Mjk3LTMuNjU1MDY3NSA0LjU0NTYwODEtNi40ODM3ODM4IDUuNjc5MzkxOS0uMTQ5NjYyMS4wNjAxMzUxLS4yOTM1ODEuMTA0MDU0MS0uNDM2MTQ4Ni4xMzI0MzI0LS4xNDI5MDU0LS4wMjgzNzgzLS4yODY4MjQzLS4wNzIyOTczLS40MzY0ODY1LS4xMzI0MzI0LTIuODI4NzE2Mi0xLjEzMzc4MzgtNC44NTIwMjcwMS0zLjE5OTY2MjItNi40ODQxMjE2MS01LjY3OTM5MTktMS43NS0yLjY1OTEyMTYtMi44MzAwNjc1Ny01LjYwODQ0NTktMy4zNTMzNzgzOC04LjczNTQ3My0uNDE1MjAyNy0yLjQ4MTQxODktLjU5MTU1NDA1LTQuODM5ODY0ODMtLjc2OTI1Njc1LTcuNjg3NDk5OTYuMDkxNTU0MDUtMS43NzkzOTE4OSAxLjAxMTQ4NjQ4LTIuNDM3ODM3ODQgMS45NTc0MzI0My0yLjk0NzI5NzMgMS45NzA5NDU5NS0xLjA2MTgyNDMyIDQuMDI4MDQwNTQtMS43MjM2NDg2NSA2LjI1MzM3ODM4LTEuOTI4Mzc4MzguOTQ0NTk0NjMtLjA4NjgyNDMyIDEuODg3ODM3ODMtLjEzODg1MTM1IDIuODMyNDMyNDMtLjE1NDM5MTg5Ljk0NDI1NjguMDE1NTQwNTQgMS44ODc4Mzc4LjA2NzU2NzU3IDIuODMyNDMyNC4xNTQzOTE4OSAyLjIyNTMzNzkuMjA0NzI5NzMgNC4yODIwOTQ2Ljg2NjU1NDA2IDYuMjUzMDQwNiAxLjkyODM3ODM4Ljk0NTk0NTkuNTA5NDU5NDYgMS44NjU4Nzg0IDEuMTY3OTA1NDEgMS45NTc0MzI0IDIuOTQ3Mjk3My0uMTc3MzY0OSAyLjg0NzYzNTEzLS4zNTQwNTQgNS4yMDYwODEwNi0uNzY5MjU2OCA3LjY4NzQ5OTk2bTIuMTc3MzY0OS03Ljc5NDU5NDU2Yy0uMDcyOTczLTEuNDY4OTE4OTItLjU4Mzc4MzgtMi4zOTgzMTA4MS0xLjY1NTQwNTQtMy4yMTU4NzgzOC0xLjY2NjU1NC0xLjI3MTk1OTQ1LTMuNTU0NzI5Ny0yLjAxNDUyNzAyLTUuNTk2MjgzOC0yLjQ0OTY2MjE2LS44ODM3ODM4LS4xODgxNzU2Ny0xLjc3NTMzNzgtLjI5MjkwNTQtMi42NjYyMTYyLS40MDQ3Mjk3My0uMTg0MTIxNi0uMDIyOTcyOTctMS4zNDIyMjk3LS4wNjQ4NjQ4Ni0yLjUzMzEwODEtLjA3Mzk4NjQ4LTEuMTkxMjE2Mi4wMDkxMjE2Mi0yLjM0ODk4NjUuMDUxMDEzNTEtMi41MzM0NDU5NS4wNzM5ODY0OC0uODkwODc4MzcuMTExODI0MzMtMS43ODI0MzI0My4yMTY1NTQwNi0yLjY2NjIxNjIxLjQwNDcyOTczLTIuMDQxODkxODkuNDM1MTM1MTQtMy45Mjk3Mjk3MyAxLjE3NzcwMjcxLTUuNTk2MjgzNzkgMi40NDk2NjIxNi0xLjA3MTYyMTYyLjgxNzU2NzU3LTEuNTgyMDk0NTkgMS43NDY5NTk0Ni0xLjY1NTQwNTQgMy4yMTU4NzgzOC0uMDM0NDU5NDYuNjkzOTE4OTIuMDU5Nzk3MyAxLjI3ODM3ODM4LjEzMjc3MDI3IDIuMTc4Mzc4MzguMjI4Mzc4MzggMi44MTA4MTA3OC40NzgwNDA1NCA1LjA5NDI1Njc4IDEuMTk2MjgzNzggNy44MTM4NTEzOC41NDM5MTg5MiAyLjA2MDgxMDggMS4yOTA4NzgzOCA0LjA2ODI0MzIgMi4zMjUgNS45MzE0MTg5IDEuNjM3MTYyMTYgMi45NDkzMjQzIDMuNzg4NTEzNTIgNS4zODM0NDU5IDYuNzc1Njc1NyA2Ljk1Ljg2NTIwMjcuNDU0MDU0IDEuNDY0MTg5Mi43MjA2MDgxIDIuMDIxNjIxNi43OTgzMTA4LjU1NzA5NDYtLjA3NzcwMjcgMS4xNTYwODExLS4zNDQyNTY4IDIuMDIxMjgzOC0uNzk4MzEwOCAyLjk4NzUtMS41NjY1NTQxIDUuMTM4NTEzNS00LjAwMDY3NTcgNi43NzU2NzU3LTYuOTUgMS4wMzQxMjE2LTEuODYzMTc1NyAxLjc4MDc0MzItMy44NzA2MDgxIDIuMzI1LTUuOTMxNDE4OS43MTgyNDMyLTIuNzE5NTk0Ni45NjgyNDMyLTUuMDAzMDQwNiAxLjE5NjYyMTYtNy44MTM4NTEzOC4wNzI5NzMtLjkuMTY2ODkxOS0xLjQ4NDQ1OTQ2LjEzMjQzMjQtMi4xNzgzNzgzOCIgbWFzaz0idXJsKCNiKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAuMDg2NDE5KSIvPjwvZz48L2c+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ1IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHdpZHRoPSI0NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGZpbHRlciBpZD0iYSIgaGVpZ2h0PSIyMTMlIiB3aWR0aD0iMTgzLjklIiB4PSItNDEuOSUiIHk9Ii01Ni41JSI+PGZlT2Zmc2V0IGR4PSIwIiBkeT0iMiIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSIvPjxmZUdhdXNzaWFuQmx1ciBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiIHN0ZERldmlhdGlvbj0iMiIvPjxmZUNvbG9yTWF0cml4IGluPSJzaGFkb3dCbHVyT3V0ZXIxIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC41IDAiLz48ZmVNZXJnZT48ZmVNZXJnZU5vZGUgaW49InNoYWRvd01hdHJpeE91dGVyMSIvPjxmZU1lcmdlTm9kZSBpbj0iU291cmNlR3JhcGhpYyIvPjwvZmVNZXJnZT48L2ZpbHRlcj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgY3g9IjIyLjUiIGN5PSIyMi41IiBmaWxsPSIjNjMwM2I3IiByPSIyMi41Ii8+PGcgZmlsdGVyPSJ1cmwoI2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3IDExKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAuNSkiPjxnIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgaGVpZ2h0PSIyMS43NTgyNDIiIHJ4PSIyIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iLjgiIHdpZHRoPSIzMC44MzU1NDQiLz48cGF0aCBkPSJtMCAzLjkyODU3MTQzaDMwLjIxODgzMjkiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuNSIvPjxwYXRoIGQ9Im02Ljc4MzgxOTYzIDIuMTE1Mzg0NjJoMTUuNDE3NzcxODciIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuOCIvPjxwYXRoIGQ9Im00LjkzMzY4NyAyLjExNTM4NDYyaC0uNjE2NzEwODciIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuOCIvPjxwYXRoIGQ9Im0yLjQ2Njg0MzUgMi4xMTUzODQ2MmgtLjYxNjcxMDg3IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iLjgiLz48cGF0aCBkPSJtMy4wODM1NTQzOCAxOS4zNDA2NTkzYzIuNzE2MjQzMDQgMCAzLjQ1NDEwMTY2LTQuODM5ODQ3IDUuNTMzNTYzMDktNC44Mzk4NDdzMi40ODE1NDg0MyAyLjgwODk1NzkgNC40MDc0NjE3MyAyLjgwODk1NzljMS45MjU5MTM0IDAgMi40MTQ4NjQ4LTYuMTY0NDE1OCA0LjU0MTgxNjQtNi4xNjQ0MTU4IDIuMTI2OTUxNCAwIDIuMDg0OTg1IDMuMzU2OTAwNSA0Ljc0MjU5MyAzLjM1NjkwMDVzMi43MjE4Mjk3LTcuODUzOTAzMjUgNi4wNTk3MTE3LTcuODUzOTAzMjUiIHN0cm9rZT0iIzliOWI5YiIgc3Ryb2tlLXdpZHRoPSIuOCIvPjxwYXRoIGQ9Im04LjAxNzI0MTM4IDEyLjA4NzkxMjF2LTIuMDk1MTkyNzNjMC0uMTc4MDUwOS0uMTY1MzE1MTUtLjMyMjM4OTctLjM2OTI0MTc2LS4zMjIzODk3aC0zLjU3ODQ5MjYxYy0uMjAzOTI2NTcgMC0uMzY5MjQxNzYuMTQ0MzM4OC0uMzY5MjQxNzYuMzIyMzg5N3YxLjE3NTU3MzUzYzAgLjE3ODA1MDkuMTY1MzE1MTkuMzIyMzg5Ny4zNjkyNDE3Ni4zMjIzODk3aDIuOTk2MjIwMDd6IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iLjgiLz48cGF0aCBkPSJtMTcuMjY3OTA0NSA5LjA2NTkzNDA3di0yLjYxODk5MDljMC0uMjIyNTYzNjItLjE2NTMxNTEtLjQwMjk4NzEzLS4zNjkyNDE3LS40MDI5ODcxM2gtMy41Nzg0OTI3Yy0uMjAzOTI2NSAwLS4zNjkyNDE3LjE4MDQyMzUxLS4zNjkyNDE3LjQwMjk4NzEzdjEuNDY5NDY2ODljMCAuMjIyNTYzNjcuMTY1MzE1Mi40MDI5ODcxMy4zNjkyNDE3LjQwMjk4NzEzaDIuOTk2MjIwMXoiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuOCIvPjwvZz48ZWxsaXBzZSBjeD0iMi4xNTg0ODgiIGN5PSIxOS42NDI4NTciIGZpbGw9IiM5YjliOWIiIHJ4PSIxIiByeT0iMSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii41IiB0cmFuc2Zvcm09Im1hdHJpeCgwIC0xIDEgMCAtMTcuNDg0MzY5IDIxLjgwMTM0NSkiLz48ZWxsaXBzZSBjeD0iOC4zMjU1OTciIGN5PSIxNC4yMDMyOTciIGZpbGw9IiM5YjliOWIiIHJ4PSIxIiByeT0iMSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii41IiB0cmFuc2Zvcm09Im1hdHJpeCgwIC0xIDEgMCAtNS44Nzc3IDIyLjUyODg5NCkiLz48ZWxsaXBzZSBjeD0iMTMuMjU5Mjg0IiBjeT0iMTcuMjI1Mjc1IiBmaWxsPSIjOWI5YjliIiByeD0iMSIgcnk9IjEiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuNSIgdHJhbnNmb3JtPSJtYXRyaXgoMCAtMSAxIDAgLTMuOTY1OTkxIDMwLjQ4NDU1OSkiLz48ZWxsaXBzZSBjeD0iMTcuNTc2MjYiIGN5PSIxMS4xODEzMTkiIGZpbGw9IiM5YjliOWIiIHJ4PSIxIiByeT0iMSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii41IiB0cmFuc2Zvcm09Im1hdHJpeCgwIC0xIDEgMCA2LjM5NDk0MSAyOC43NTc1NzkpIi8+PGVsbGlwc2UgY3g9IjI4LjA2MDM0NSIgY3k9IjYuMzQ2MTU0IiBmaWxsPSIjOWI5YjliIiByeD0iMSIgcnk9IjEiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIuNSIgdHJhbnNmb3JtPSJtYXRyaXgoMCAtMSAxIDAgMjEuNzE0MTkxIDM0LjQwNjQ5OSkiLz48L2c+PC9nPjwvZz48L3N2Zz4=\"","import React, { Fragment } from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport ButtonLE from \"components/button-le\"\nimport Logo from \"images/logos/demand360-lite-product.png\"\nimport { getProductId, getLiteProducts } from \"utils/products\"\nimport Check from \"images/icons/check-grey.svg\"\nimport Earth from \"images/icons/earth.png\"\n\nconst Styles = styled.div`\n ${tw`flex flex-col mx-auto max-w-s m:max-w-m l:max-w-l`}\n\n .header {\n ${tw`text-center flex flex-col items-center`}\n\n h1 {\n ${tw`text-white font-extrabold text-2xl l:text-5xl leading-relaxed l:leading-relaxed`}\n }\n\n div {\n ${tw`text-grey-65 l:w-3/5 text-lg l:text-xl leading-relaxed l:leading-relaxed`}\n }\n\n img {\n ${tw`mt-12`}\n\n width: 511px;\n }\n }\n\n .pages {\n ${tw`mt-0 l:mt-16 w-full flex flex-col l:grid l:grid-cols-3 l:auto-rows-auto gap-x-5`}\n\n & > div {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n }\n\n .top {\n ${tw`mt-16 l:mt-0`}\n\n & > div {\n background: rgba(0, 0, 0, 0.15);\n }\n\n border-radius: 5px 5px 0 0;\n\n .image {\n ${tw`relative`}\n\n .title {\n ${tw`absolute text-white font-extrabold capitalize leading-none`}\n\n font-size: 23px;\n text-shadow: 4px 4px 4px rgba(0, 0, 0, 0.18);\n left: 17px;\n top: 10px;\n\n @media (min-width: 640px) {\n font-size: 26px;\n left: 20px;\n top: 17px;\n }\n }\n\n img {\n border-radius: 5px;\n }\n }\n\n .access {\n ${tw`flex flex-row items-baseline justify-center text-grey-65 uppercase py-3 space-x-2`}\n\n img {\n height: 16px;\n width: 16px;\n }\n }\n }\n\n .highlights {\n ${tw`flex flex-col text-base leading-normal text-white space-y-16 py-10`}\n\n .highlight {\n ${tw`flex flex-row items-center px-5 space-x-5`}\n }\n }\n\n .actions {\n ${tw`px-5 py-4 l:pt-0 l:pb-8 flex items-center l:items-start justify-center l:justify-start`}\n\n border-radius: 0 0 5px 5px;\n }\n }\n`\n\nconst Icon = styled.img`\n ${tw`inline-block flex-shrink-0`}\n\n width: 36px;\n`\n\nexport default () => {\n const query = graphql`\n query LitePages {\n gcms {\n pages(where: { path_contains: \"/lite/\" }, orderBy: order_ASC) {\n ...PageData\n }\n contentBlocks(where: { identifier: \"demand360-lite-highlights\" }) {\n title\n headerContent {\n html\n }\n }\n }\n }\n `\n\n const data = useStaticQuery(query)\n const { contentBlocks } = data.gcms\n const pages = getLiteProducts(data.gcms.pages)\n const { title, headerContent } = contentBlocks[0] || {}\n\n const withHighlights = pages.filter(\n (page) => page.extraData?.highlights?.length > 0\n )\n\n return (\n \n
\n

{title}

\n \n \n
\n\n
\n {withHighlights.map((page) => (\n \n
\n
\n {page.description && (\n
\n {page.description}\n {page.extraData?.titleSuffix && (\n \n  {page.extraData?.titleSuffix}\n \n )}\n
\n )}\n \n
\n
\n \n {page.extraData.access}\n
\n
\n
\n {page.extraData.highlights.map(({ icon, text }, i) => (\n
\n \n
{text}
\n
\n ))}\n
\n
\n \n Find out more\n \n
\n
\n ))}\n
\n
\n )\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMjMuMzc0MTYxMy4yODEwMzg0MWMtLjY3MzI0MjUtLjQ4MjY2NTI0LTEuNjEwMjg2LS4zMjgyMDc1Mi0yLjA5My4zNDVsLTE0LjAzNTAwMDA1IDE5LjU2Nzk5OTk5LTQuNjg1LTQuNjg5Yy0uMzc4ODgwMTUtLjM3OTA1ODgtLjkzMTIwNTMyLS41MjcxOTM0LTEuNDQ4OTE5OTUtLjM4ODYwMy0uNTE3NzE0NjMuMTM4NTkwNS0uOTIyMTY1NTYuNTQyODUwOC0xLjA2MTAwMDAyIDEuMDYwNS0uMTM4ODM0NDYuNTE3NjQ5My4wMDkwMzk4IDEuMDcwMDQ0Mi4zODc5MTk5NyAxLjQ0OTEwM2w1LjkzNSA1LjkzNGMuMzE1MjAxNDEuMzAzMzA3Ni43NDU0NzI5OS40NTY2NTggMS4xODE0NTYxMy40MjEwNzUzLjQzNTk4MzEzLS4wMzU1ODI2LjgzNTY5NDkyLS4yNTY2NzE5IDEuMDk3NTQzODctLjYwNzA3NTNsMTUuMDY2MDAwMDUtMjAuOTk5OTk5OTljLjQ4MjY2NTItLjY3MzI0MjQ5LjMyODIwNzUtMS42MTAyODU5OC0uMzQ1LTIuMDkzeiIgZmlsbD0iI2IzYjNiMyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\"","export default \"data:image/png;base64,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\"","import React from \"react\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n// eslint-disable-next-line no-unused-vars\nimport { PageFragment } from \"components/fragments\"\nimport tw, { styled } from 'twin.macro'\n\nimport ProductProfile from \"components/product-profile\";\nimport VerticalLine from \"components/vertical-line\";\nimport { brandBlock } from \"utils/brand\";\nimport { getProductId, getLiteProducts } from \"utils/products\"\nimport Logo from \"images/logos/demand360-lite-product.png\";\n\nconst LiteProduct = styled.div`\n ${tw`flex flex-col`}\n\n .header {\n ${tw`text-center l:w-11/12`}\n\n img {\n ${tw`mx-auto`}\n\n height: 16px;\n\n @media (min-width: 640px) {\n height: 30px;\n }\n }\n\n h1 {\n ${tw`py-2 w-full font-display font-bold text-white leading-loose`}\n\n font-size: 35px;\n\n @media (min-width: 640px) {\n font-size: 45px;\n }\n\n @media (min-width: 1024px) {\n font-size: 60px;\n }\n }\n\n h2 {\n ${tw`font-display leading-loose text-yellow`}\n font-size: 22px;\n }\n\n p {\n ${tw`text-grey-65 leading-loose l:w-11/12 mx-auto`}\n font-size: 18px;\n }\n }\n`\n\nfunction mapContentBlock(content, page) {\n content = brandBlock(content);\n\n return {\n id: content.id,\n heroImage: content.featuredImage,\n extraData: page.extraData,\n title: content.title,\n body: content.mainContent,\n };\n}\n\nexport default () => {\n const query = graphql`\n query LiteProductProfiles {\n gcms {\n pages(where: { path_contains: \"/lite/\" }, orderBy: order_ASC) {\n ...PageData\n }\n }\n }\n `;\n\n const data = useStaticQuery(query);\n\n const pages = getLiteProducts(data.gcms.pages);\n\n return (\n <>\n {pages.map((page) => {\n page = brandBlock(page);\n return (\n \n
\n \"\"\n \n
\n\n
\n \n\n {page.contentBlocks.map(feature => (\n \n ))}\n
\n\n
\n )\n })}\n \n );\n}\n","import React, { Fragment } from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport tw, { styled } from \"twin.macro\"\n\nimport { brandBlock } from \"utils/brand\"\n\nconst Styles = styled.div`\n ${tw`flex flex-col items-center overflow-visible -mx-2 text-white`}\n\n font-size: 18px;\n line-height: 30px;\n @media (min-width: 640px) {\n font-size: 22px;\n line-height: 33px;\n }\n\n h2 {\n ${tw`font-display font-bold`}\n text-align: center;\n font-size: 30px;\n line-height: 39px;\n @media (min-width: 640px) {\n font-size: 60px;\n line-height: 79px;\n }\n }\n\n .description {\n ${tw`w-full l:w-3/4 text-center text-grey-65`}\n }\n\n .items {\n ${tw`flex flex-col justify-center l:grid l:grid-cols-3\n gap-y-10 gap-x-5 mt-16 text-center`}\n\n .item {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n border-radius: 10px;\n\n .image {\n height: 229px;\n\n img {\n ${tw`w-full object-cover object-top`}\n\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n height: 229px;\n }\n }\n\n .content {\n ${tw`pt-4 pb-8 px-4`}\n\n font-size: 15px;\n line-height: 24px;\n @media (min-width: 640px) {\n font-size: 16px;\n line-height: 28px;\n }\n\n h5 {\n ${tw`text-springgreen-light font-display font-bold mb-2 px-12`}\n\n @media (min-width: 640px) {\n font-size: 27px;\n line-height: 40px;\n }\n }\n }\n }\n }\n`\n\nexport default () => {\n const query = graphql`\n query AdditionalBenefits {\n gcms {\n contentBlocks(\n where: { identifier: \"demand360-lite-additional-benefits\" }\n ) {\n title\n headerContent {\n html\n }\n extraData\n }\n }\n }\n `\n\n const data = useStaticQuery(query)\n const benefits = brandBlock(data.gcms.contentBlocks[0])\n\n if (!benefits) {\n return null\n }\n\n return (\n \n

{benefits.title}

\n \n
\n {benefits.extraData?.items.map((item, i) => (\n
\n
\n \n
\n
\n
{item.title}
\n

{item.content}

\n
\n
\n ))}\n
\n
\n )\n}\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { graphql } from \"gatsby\"\n// eslint-disable-next-line no-unused-vars\nimport { PageFragment } from \"components/fragments\"\nimport { useCookies } from \"react-cookie\"\nimport tw, { theme, styled } from \"twin.macro\"\n\nimport CouponContext from \"context/coupon-context\"\nimport isBrowser from \"utils/is-browser\"\nimport { brandBlock } from \"utils/brand\"\nimport Layout from \"components/layout\"\nimport SEO from \"components/seo\"\nimport CouponBanner from \"components/sections/coupon-banner\"\nimport LightSlantedSection from \"components/sections/light-slant\"\nimport ArticleShowcase from \"components/sections/article-showcase\"\nimport MonitorSubscribe from \"components/sections/monitor-subscribe\"\nimport MonitorVideo from \"components/sections/monitor-video\"\nimport MonitorCTA from \"components/monitor-cta2\"\nimport DemandSample from \"components/demand_sample\"\nimport Demand360AvatarCards from \"components/sections/demand360-avatar-cards\"\nimport Button from \"components/button\"\nimport Demand360LiteHighlights from \"components/sections/demand360-lite-highlights\"\nimport Demand360LiteProductProfiles from \"components/sections/demand360-lite-product-profiles\"\nimport Demand360LiteAdditionalBenefits from \"components/sections/demand360-lite-additional-benefits\"\nimport SectionBackground from \"components/section-background\"\nimport FeaturedVideo from \"components/sections/featured-video\"\nimport BgWaves from \"images/bg/waves.jpg\"\nimport FeaturedPressCarousel from \"components/featured-press-carousel\"\n\nimport { getSharePreviewUrls } from \"utils/share-preview\"\n\nconst ContentBlock = styled.div`\n ${tw`flex flex-wrap items-center overflow-visible -mx-2 text-white font-body`}\n\n .uvp-header {\n ${tw`w-full text-center flex flex-col items-center px-2 m:pt-32 pb-12`}\n\n h2 {\n ${tw`font-display font-bold`}\n text-align: center;\n font-size: 30px;\n line-height: 39px;\n @media (min-width: 640px) {\n font-size: 60px;\n line-height: 79px;\n }\n }\n\n h3 {\n ${tw`font-body`}\n text-align: center;\n font-size: 20px;\n line-height: 24px;\n @media (min-width: 640px) {\n font-size: 30px;\n line-height: 30px;\n margin-top: 10px;\n }\n }\n\n > div {\n ${tw`l:w-8/12`}\n }\n\n .info a {\n width: 15px;\n height: 15px;\n display: inline-block;\n overflow: hidden;\n font-size: 0;\n background-image: url(${`${process.env.GATSBY_ASSETS_BASE_URL}SRA59X5sRGqRHj9qAFIj`});\n background-repeat: no-repeat;\n background-size: contain;\n }\n\n p {\n color: #bfbfbf;\n font-size: 17px;\n line-height: 27px;\n text-align: center;\n }\n\n img {\n ${tw`py-8`}\n }\n }\n\n .bullets {\n ${tw`font-body text-white`}\n font-size: 14px;\n line-height: 1.36;\n @media (min-width: 640px) {\n font-size: 22px;\n }\n\n ul {\n ${tw`list-disc list-outside`}\n padding-left: 1.5rem;\n }\n\n li {\n padding-bottom: 0.5rem;\n padding-top: 0.5rem;\n }\n }\n\n .demand-report {\n h3 {\n padding-top: 10px;\n }\n }\n`\n\nconst GreenSlant = styled.div`\n ${tw`font-body text-white overflow-hidden`}\n filter: drop-shadow(0px 2px 0px ${theme`colors.springgreen.light`});\n margin-bottom: -45px;\n position: relative;\n z-index: 1;\n\n & > .main {\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.51) 0%,\n rgba(0, 0, 0, 0) 75.56%\n )\n ${({ background }) => (background ? `, url(${background})` : \"\")};\n background-color: #110120;\n background-position: bottom;\n background-size: cover;\n background-repeat: no-repeat;\n clip-path: polygon(0 0, 100% 0, 100% calc(100% - 45px), 0% 100%);\n position: relative;\n }\n`\n\nconst Demand360Full = styled.div`\n ${tw`mx-auto max-w-s m:max-w-m l:max-w-l mt-8 l:mt-24`}\n\n .header {\n ${tw`text-white flex flex-col items-center text-center mb-8 l:mb-20`}\n\n h1 {\n ${tw`font-extrabold text-2xl leading-relaxed l:text-5xl l:leading-relaxed`}\n }\n\n h5 {\n ${tw`text-lg leading-relaxed l:text-xl l:leading-relaxed`}\n }\n\n button {\n ${tw`w-full`}\n\n @media (min-width: 640px) {\n width: 270px;\n }\n }\n }\n`\n\nconst Demand360Lite = ({ data }) => {\n const queryString = isBrowser ? window.location.search : null\n const [playVideo, setPlayVideo] = useState(false)\n const [ready, setReady] = useState(false)\n const [reportMarket, setReportMarket] = useState(null)\n const [showDemandReport, setShowDemandReport] = useState(false)\n const context = useContext(CouponContext)\n const [_, setCookie] = useCookies([\"article\"])\n\n const { gcms } = data\n const { page, markets, gtvdr, headerLogos, demand360 } = gcms\n\n const headerCta = page.contentBlocks.find(\n (b) => b.identifier === \"demand360-lite-header-cta\"\n )\n const demandReport = brandBlock(\n page.contentBlocks.find((b) => b.identifier === \"global-tv-demand-report\")\n )\n const fullProductsAd = brandBlock(\n page.contentBlocks.find(\n (b) => b.identifier === \"demand360-lite-full-products-ad\"\n )\n )\n\n const { featuredVideo } = demand360\n\n const [reportImage, setReportImage] = useState(\n demandReport?.featuredImage?.url\n )\n\n useEffect(() => {\n if (\n showDemandReport &&\n gtvdr?.insightsArticles &&\n gtvdr?.insightsArticles[0] &&\n gtvdr?.insightsArticles[0].id\n ) {\n setCookie(\"article\", gtvdr?.insightsArticles[0].id, { path: \"/\" })\n }\n }, [showDemandReport])\n\n useEffect(() => {\n async function loadCoupon() {\n await context.getCoupon()\n setReady(true)\n }\n\n if (queryString === null) {\n setReady(true)\n } else {\n const urlParams = new URLSearchParams(queryString)\n const coupon = urlParams.get(\"coupon\")\n if (coupon?.length > 0) {\n loadCoupon(coupon)\n } else {\n setReady(true)\n }\n }\n }, [context, queryString, setReady])\n\n useEffect(() => {\n const urlParams = new URLSearchParams(queryString)\n const buy = urlParams.get(\"buy\")\n if (buy) {\n const isoCode = buy.substring(6).toUpperCase()\n const market = markets.find((m) => m.isoCode === isoCode)\n if (market) {\n if ([\"GB\", \"US\"].includes(market.isoCode)) {\n market.name = `the ${market.name}`\n }\n setReportMarket(market)\n if (\n demandReport?.extraData?.reportImages &&\n demandReport.extraData.reportImages[market.isoCode]\n )\n setReportImage(demandReport.extraData.reportImages[market.isoCode])\n } else if (demandReport?.extraData?.reportImages?.ROW) {\n demandReport.countryImage = demandReport.extraData.reportImages.ROW\n }\n setShowDemandReport(true)\n }\n }, [])\n\n return (\n \n {!!page && (\n \n )}\n\n \n
\n \n {demandReport && showDemandReport && (\n
\n \n \n
\n {reportImage && (\n
\n \n {!!reportMarket && (\n
\n
\n \n
\n {demandReport?.extraData?.featuredImageCaption && (\n
\n \n
\n )}\n
\n )}\n
\n )}\n {demandReport?.mainContent?.html && (\n
\n \n
\n )}\n
\n
\n
\n )}\n {headerCta && (\n setPlayVideo(playing)}\n />\n )}\n
\n
\n\n \n
\n setPlayVideo(true)} />\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n \n\n
\n \n
\n\n
\n \n
\n\n {fullProductsAd && (\n \n
\n

{fullProductsAd.title}

\n \n
\n \n {fullProductsAd.callToAction}\n \n \n
\n
\n \n
\n )}\n\n {featuredVideo && (\n
\n \n
\n )}\n\n {page?.featuredPressArticles?.length > 0 && (\n
\n \n
\n )}\n
\n
\n\n {page?.articleShowcase?.length > 0 && (\n \n \n \n )}\n
\n )\n}\n\nexport default Demand360Lite\n\nexport const query = graphql`\n query {\n gcms {\n page(where: { path: \"/products/demand360/lite\" }) {\n ...PageData\n }\n demand360: page(where: { path: \"/products/demand360\" }) {\n ...PageData\n }\n headerLogos: featuredLogosClients(\n where: { id: \"ckh9bpgiifjk00957jd3z2xrd\" }\n ) {\n heading\n headingColor {\n hex\n }\n logos {\n url\n altText\n }\n }\n markets {\n isoCode\n name\n }\n gtvdr: insightsArticleSeries(where: { id: \"ck7q3ytepse7r09980nxcjes3\" }) {\n insightsArticles(orderBy: publishingDate_DESC, first: 1) {\n id\n }\n }\n }\n }\n`\n","import { escape } from \"lodash\"\n\nexport function htmlFromSolution(solutionObj) {\n return htmlTitle(solutionObj) + htmlFeatures(solutionObj)\n}\n\nexport function htmlTitle(solutionObj) {\n const { description } = solutionObj\n\n return `

${escape(description)}

`\n}\n\nexport function htmlFeatures(solutionObj) {\n const { features } = solutionObj\n\n const list = features?.list\n .map(({ text }) => `
  • ${escape(text)}
  • `)\n .join(\"\")\n\n return `\n

    ${escape(features.title)}

    \n
      ${list}
    \n`\n}\n","export function posterUrl(parrotId, size = \"EXTRA_LARGE\") {\n const templateUrl =\n process.env.GATSBY_POSTER_URL_TEMPLATE ||\n \"https://cdn-fastly.parrotanalytics.com/images/poster-hyphen/{{parrotId}}.jpg?class={{size}}\"\n\n return templateUrl.replace(\"{{parrotId}}\", parrotId).replace(\"{{size}}\", size)\n}\n\nexport function backgroundUrl(parrotId, size = \"LARGE\") {\n const templateUrl =\n process.env.GATSBY_BACKGROUND_URL_TEMPLATE ||\n \"https://cdn-fastly.parrotanalytics.com/images/background-hyphen/{{parrotId}}.jpg?class={{size}}\"\n\n return templateUrl.replace(\"{{parrotId}}\", parrotId).replace(\"{{size}}\", size)\n}\n","const isBrowser = typeof window !== \"undefined\"\n\nexport default isBrowser\n","function getProductId(page) {\n return page.path?.split(\"/\").pop() || page.id\n}\n\nfunction getProducts(pages) {\n return pages\n}\n\nfunction getLiteProducts(pages) {\n return pages\n}\n\nfunction getProductPath(path, addTrailingSlash = true) {\n let fullPath = path\n\n if (!fullPath.endsWith(\"/\") && addTrailingSlash) {\n fullPath += \"/\"\n }\n\n return fullPath\n}\n\nmodule.exports = { getProductId, getProducts, getLiteProducts, getProductPath }\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from 'universal-cookie';\r\nexport default Cookies;\r\n","import * as React from 'react';\r\nimport Cookies from './Cookies';\r\nvar CookiesContext = React.createContext(new Cookies());\r\nexport var Provider = CookiesContext.Provider, Consumer = CookiesContext.Consumer;\r\nexport default CookiesContext;\r\n","import { useContext, useLayoutEffect, useState, useRef, useMemo } from 'react';\r\nimport CookiesContext from './CookiesContext';\r\nimport { isInBrowser } from './utils';\r\nexport default function useCookies(dependencies) {\r\n var cookies = useContext(CookiesContext);\r\n if (!cookies) {\r\n throw new Error('Missing ');\r\n }\r\n var initialCookies = cookies.getAll();\r\n var _a = useState(initialCookies), allCookies = _a[0], setCookies = _a[1];\r\n var previousCookiesRef = useRef(allCookies);\r\n if (isInBrowser()) {\r\n useLayoutEffect(function () {\r\n function onChange() {\r\n var newCookies = cookies.getAll();\r\n if (shouldUpdate(dependencies || null, newCookies, previousCookiesRef.current)) {\r\n setCookies(newCookies);\r\n }\r\n previousCookiesRef.current = newCookies;\r\n }\r\n cookies.addChangeListener(onChange);\r\n return function () {\r\n cookies.removeChangeListener(onChange);\r\n };\r\n }, [cookies]);\r\n }\r\n var setCookie = useMemo(function () { return cookies.set.bind(cookies); }, [cookies]);\r\n var removeCookie = useMemo(function () { return cookies.remove.bind(cookies); }, [cookies]);\r\n return [allCookies, setCookie, removeCookie];\r\n}\r\nfunction shouldUpdate(dependencies, newCookies, oldCookies) {\r\n if (!dependencies) {\r\n return true;\r\n }\r\n for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {\r\n var dependency = dependencies_1[_i];\r\n if (newCookies[dependency] !== oldCookies[dependency]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n","export function isInBrowser() {\r\n return (typeof window !== 'undefined' &&\r\n typeof window.document !== 'undefined' &&\r\n typeof window.document.createElement !== 'undefined');\r\n}\r\n","import { useRef, useState, useCallback } from 'react';\n\nfunction createObserverCache() {\n var cachesByRoot = new Map();\n\n function getObserver(_ref) {\n var root = _ref.root,\n rootMargin = _ref.rootMargin,\n threshold = _ref.threshold;\n var cacheByRoot = cachesByRoot.get(root);\n\n if (!cacheByRoot) {\n cacheByRoot = new Map();\n cachesByRoot.set(root, cacheByRoot);\n }\n\n var cacheKey = JSON.stringify({\n rootMargin: rootMargin,\n threshold: threshold\n });\n var cachedObserver = cacheByRoot.get(cacheKey);\n\n if (!cachedObserver) {\n var entryCallbacks = new Map();\n var observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var callback = entryCallbacks.get(entry.target);\n callback == null ? void 0 : callback(entry);\n });\n }, {\n root: root,\n rootMargin: rootMargin,\n threshold: threshold\n });\n cachedObserver = {\n observer: observer,\n entryCallbacks: entryCallbacks\n };\n cacheByRoot.set(cacheKey, cachedObserver);\n }\n\n return {\n observe: function observe(node, callback) {\n var _cachedObserver, _cachedObserver2;\n\n (_cachedObserver = cachedObserver) == null ? void 0 : _cachedObserver.entryCallbacks.set(node, callback);\n (_cachedObserver2 = cachedObserver) == null ? void 0 : _cachedObserver2.observer.observe(node);\n },\n unobserve: function unobserve(node) {\n var _cachedObserver3, _cachedObserver4;\n\n (_cachedObserver3 = cachedObserver) == null ? void 0 : _cachedObserver3.entryCallbacks[\"delete\"](node);\n (_cachedObserver4 = cachedObserver) == null ? void 0 : _cachedObserver4.observer.unobserve(node);\n }\n };\n }\n\n return {\n getObserver: getObserver\n };\n}\n\nvar DEFAULT_ROOT_MARGIN = '0px';\nvar DEFAULT_THRESHOLD = [0];\nvar observerCache = /*#__PURE__*/createObserverCache(); // For more info:\n// https://developers.google.com/web/updates/2016/04/intersectionobserver\n// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n\nfunction useIntersectionObserver(args) {\n var _args$rootMargin, _args$threshold;\n\n var rootMargin = (_args$rootMargin = args == null ? void 0 : args.rootMargin) != null ? _args$rootMargin : DEFAULT_ROOT_MARGIN;\n var threshold = (_args$threshold = args == null ? void 0 : args.threshold) != null ? _args$threshold : DEFAULT_THRESHOLD;\n var nodeRef = useRef(null);\n var rootRef = useRef(null);\n var observerRef = useRef(null);\n\n var _useState = useState(),\n entry = _useState[0],\n setEntry = _useState[1];\n\n var observe = useCallback(function () {\n var node = nodeRef.current;\n\n if (!node) {\n setEntry(undefined);\n return;\n }\n\n var observer = observerCache.getObserver({\n root: rootRef.current,\n rootMargin: rootMargin,\n threshold: threshold\n });\n observer.observe(node, function (observedEntry) {\n setEntry(observedEntry);\n });\n observerRef.current = observer;\n }, [rootMargin, threshold]);\n var unobserve = useCallback(function () {\n var currentObserver = observerRef.current;\n var node = nodeRef.current;\n\n if (node) {\n currentObserver == null ? void 0 : currentObserver.unobserve(node);\n }\n\n observerRef.current = null;\n }, []); // React will call the ref callback with the DOM element when the component mounts,\n // and call it with null when it unmounts.\n // So, we don't need an useEffect etc to unobserve nodes.\n // When nodeRef.current is null, it will be unobserved and observe function\n // won't do anything.\n\n var refCallback = useCallback(function (node) {\n unobserve();\n nodeRef.current = node;\n observe();\n }, [observe, unobserve]);\n var rootRefCallback = useCallback(function (rootNode) {\n unobserve();\n rootRef.current = rootNode;\n observe();\n }, [observe, unobserve]);\n return [refCallback, {\n entry: entry,\n rootRef: rootRefCallback\n }];\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction useTrackVisibility(args) {\n var _result$entry;\n\n var _useIntersectionObser = useIntersectionObserver(args),\n ref = _useIntersectionObser[0],\n result = _useIntersectionObser[1];\n\n var isVisible = Boolean((_result$entry = result.entry) == null ? void 0 : _result$entry.isIntersecting);\n\n var _useState = useState(isVisible),\n wasEverVisible = _useState[0],\n setWasEverVisible = _useState[1];\n\n if (isVisible && !wasEverVisible) {\n setWasEverVisible(true);\n }\n\n return [ref, _extends({}, result, {\n isVisible: isVisible,\n wasEverVisible: wasEverVisible\n })];\n}\n\nexport { useIntersectionObserver, useTrackVisibility };\n//# sourceMappingURL=react-intersection-observer-hook.esm.js.map\n","export default __webpack_public_path__ + \"static/waves-8780a8314ba4bdc8f0dc27ed9333cc0b.jpg\";","export default __webpack_public_path__ + \"static/demand360-lite-product-regular-8be27182aeb56a4589704c15808c3d2b.png\";","export default __webpack_public_path__ + \"static/demand360-lite-product-8ee677e21ebd3b38979626e20da9b7d6.png\";","import { invariant } from 'hey-listen';\nimport { stopAnimation, animateVisualElement } from '../../render/utils/animation.mjs';\nimport { setValues } from '../../render/utils/setters.mjs';\n\n/**\n * @public\n */\nfunction animationControls() {\n /**\n * Track whether the host component has mounted.\n */\n let hasMounted = false;\n /**\n * Pending animations that are started before a component is mounted.\n * TODO: Remove this as animations should only run in effects\n */\n const pendingAnimations = [];\n /**\n * A collection of linked component animation controls.\n */\n const subscribers = new Set();\n const controls = {\n subscribe(visualElement) {\n subscribers.add(visualElement);\n return () => void subscribers.delete(visualElement);\n },\n start(definition, transitionOverride) {\n /**\n * TODO: We only perform this hasMounted check because in Framer we used to\n * encourage the ability to start an animation within the render phase. This\n * isn't behaviour concurrent-safe so when we make Framer concurrent-safe\n * we can ditch this.\n */\n if (hasMounted) {\n const animations = [];\n subscribers.forEach((visualElement) => {\n animations.push(animateVisualElement(visualElement, definition, {\n transitionOverride,\n }));\n });\n return Promise.all(animations);\n }\n else {\n return new Promise((resolve) => {\n pendingAnimations.push({\n animation: [definition, transitionOverride],\n resolve,\n });\n });\n }\n },\n set(definition) {\n invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return subscribers.forEach((visualElement) => {\n setValues(visualElement, definition);\n });\n },\n stop() {\n subscribers.forEach((visualElement) => {\n stopAnimation(visualElement);\n });\n },\n mount() {\n hasMounted = true;\n pendingAnimations.forEach(({ animation, resolve }) => {\n controls.start(...animation).then(resolve);\n });\n return () => {\n hasMounted = false;\n controls.stop();\n };\n },\n };\n return controls;\n}\n\nexport { animationControls };\n","import { animationControls } from './animation-controls.mjs';\nimport { useEffect } from 'react';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return \n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n const controls = useConstant(animationControls);\n useEffect(controls.mount, []);\n return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n"],"names":["exports","str","options","TypeError","obj","opt","pairs","split","dec","decode","i","length","pair","index","indexOf","key","substring","trim","undefined","val","slice","tryDecode","name","enc","encode","fieldContentRegExp","test","value","maxAge","isNaN","isFinite","Math","floor","domain","path","expires","toUTCString","httpOnly","secure","sameSite","toLowerCase","decodeURIComponent","encodeURIComponent","e","Styles","styled","div","withConfig","displayName","componentId","_ref","children","onClick","to","className","rest","active","setActive","useState","internal","scroll","bubbles","Array","from","v","transition","duration","ease","rand","round","random","React","map","b","idx","diameter","motion","style","height","width","animate","variants","static","left","top","scale","opacity","Object","assign","setTimeout","navigate","document","querySelector","scrollIntoView","behavior","window","location","href","StyledPicture","picture","props","customCSS","StyledImg","img","src","mimeType","handle","webp","process","customCss","srcSet","type","url","alt","Style","BASE_FRAME_VARIANTS","init","backgroundColor","borderColor","hover","borderRadius","BASE_CAPTION_VARIANTS","BASE_ARROW_VARIANTS","marginBottom","frameVariants","card","profile","captionVariants","arrowVariants","labels","Children","controls","useAnimation","useEffect","start","stop","initial","marginTop","IconRightArrow","Toggle","onFlip","isOn","switchState","position","cursor","onTap","flip","off","background","on","x","boxShadow","_data$allPricePlan$no","_data$allPricePlan","onPlanChange","divided","light","large","data","useStaticQuery","planSettings","gcms","websiteSetting","jsonValue","planData","allPricePlan","nodes","maxPlanPrice","reduce","acc","cur","max","yearly","plans","setPlans","plan","setPlan","setYearly","default","bestPlanId","setBestPlanId","couponContext","useContext","CouponContext","async","coupon","getCoupon","_coupon$metadata","newPlans","p","newPlan","discountApplied","monthly","applyCoupon","metadata","plan_applicable","selectedPlan","find","couponApplies","interval","fetchData","bestPlan","best","id","nickname","Switch","OuterBorder","Link","bg","_cardInfo$icon","_cardInfo$mainContent","cardInfo","hovered","setHovered","getProductPath","linkUrl","onMouseEnter","onMouseLeave","icon","ManualMoreLink","dangerouslySetInnerHTML","__html","brandRules","headerTitle","title","includes","mainContent","html","featuredImage","Dot","color","buttonGradient","page","_page$extraData","buttonStart","buttonEnd","extraData","colors","_ref2","_page$extraData2","_page$extraData2$colo","link","productGroup","setSection","resetSection","ActiveRouteContext","ref","isVisible","useTrackVisibility","threshold","linkTo","sectionId","getProductId","body","solutionsProduct","htmlFromSolution","buildBody","Profile","ConditionalLink","heroImage","dot","Title","Body","ButtonLE","gradient","SectionStyles","_ref3","Gradient","_ref4","gradientClass","Insights","InsightsTitle","h2","articles","wide","post","InsightsCard","pages","getProducts","ProductGroupCard","h3","video","_video$imagePreview","Tag","label","youtubeId","YouTube","videoId","preview","imagePreview","LightSlant","StyleContainer","autoplayHash","params","modal","setModal","useLocation","previewImage","previewVideo","hash","videoModalId","previewImageHandle","previewVideoHandle","mediaBase","videoPreview","Modal","onClose","autoplay","fixAspectRatio","VerticalLine","CouponBanner","couponValid","setCouponValid","partner","setPartner","loading","setLoading","context","partners","_partner$logo","ignore","valid","partnerId","partner_id","logo","MonitorSubscribeStyle","_data$gcms$content","_content$extraData","_content$extraData2","_content$headerConten","_content$mainContent","header","faq","content","brandBlock","videoAvailable","videoCTA","youTubeID","headerContent","PlanPrice","Button","callToAction","faqLink","faqCTA","PlayIcon","MonitorVideo","_content$icon","altText","VideoModal","MonitorCTAStyles","LogosSlider","quantity","logos","playVideo","onPlayVideo","logosData","setLogosData","contentCTA","newLogos","l","order","gen","Logo","LogoRegular","VideoCTA","ParrotImg","heading","YouTubeID","secondaryCtaClick","markets","demandSampleJson","settings","market","setMarket","show","setShow","showIdx","setShowIdx","showCTA","setShowCTA","geoContext","GeoContext","animVariants","shown","hidden","switchMarket","titles","refreshShow","preventDefault","defaultMarket","m","country_iso","geo","get","code","loadMarket","shortTitle","substr","min","lastIndexOf","market_name","AnimatePresence","exitBeforeEnter","backgroundImage","t","posterUrl","parrot_id","join","exit","staggerChildren","span","genre_rank","genre","ul","li","country_name","Icon","contentBlocks","getLiteProducts","withHighlights","filter","_page$extraData$highl","highlights","_page$extraData3","Fragment","description","titleSuffix","access","text","LiteProduct","mapContentBlock","feature","ProductProfile","_benefits$extraData","benefits","items","item","image","ContentBlock","GreenSlant","Demand360Full","_demandReport$feature","_headerCta$icon","_demandReport$headerC","_demandReport$feature2","_demandReport$extraDa4","_demandReport$mainCon","_page$featuredPressAr","_page$articleShowcase","queryString","isBrowser","search","setPlayVideo","ready","setReady","reportMarket","setReportMarket","showDemandReport","setShowDemandReport","_","setCookie","useCookies","gtvdr","headerLogos","demand360","headerCta","identifier","demandReport","fullProductsAd","featuredVideo","reportImage","setReportImage","insightsArticles","URLSearchParams","loadCoupon","buy","_demandReport$extraDa2","_demandReport$extraDa3","isoCode","toUpperCase","_demandReport$extraDa","reportImages","ROW","countryImage","Layout","SEO","sharePreviewUrls","getSharePreviewUrls","featuredImageCaption","replace","MonitorCTA","playing","SectionBackground","BgWaves","DemandSample","Demand360LiteHighlights","Demand360LiteAdditionalBenefits","MonitorSubscribe","Demand360LiteProductProfiles","Demand360AvatarCards","FeaturedVideo","featuredPressArticles","FeaturedPressCarousel","articleShowcase","LightSlantedSection","ArticleShowcase","solutionObj","htmlTitle","htmlFeatures","_escape","features","list","parrotId","size","GATSBY_POSTER_URL_TEMPLATE","backgroundUrl","GATSBY_BACKGROUND_URL_TEMPLATE","module","_page$path","pop","addTrailingSlash","fullPath","endsWith","Symbol","array","iteratee","result","getRawTag","objectToString","symToStringTag","toStringTag","object","arrayMap","isArray","isSymbol","symbolProto","prototype","symbolToString","toString","baseToString","call","escapeHtmlChar","basePropertyOf","freeGlobal","g","objectProto","hasOwnProperty","nativeObjectToString","isOwn","tag","unmasked","freeSelf","self","root","Function","reUnescapedHtml","reHasUnescapedHtml","RegExp","source","string","baseGetTag","isObjectLike","readCookie","cleanValue","cleanupCookieValue","doNotParse","isParsingCookie","JSON","parse","__assign","s","n","arguments","apply","this","Cookies","cookies","_this","changeListeners","HAS_DOCUMENT_COOKIE","cookie","parseCookies","Promise","catch","_updateBrowserValues","parseOptions","_emitChange","getAll","name_1","set","_a","stringify","remove","finalOptions","Date","addChangeListener","callback","push","removeChangeListener","splice","CookiesContext","Provider","Consumer","dependencies","Error","initialCookies","allCookies","setCookies","previousCookiesRef","useRef","createElement","useLayoutEffect","onChange","newCookies","oldCookies","_i","dependencies_1","dependency","shouldUpdate","current","useMemo","bind","createObserverCache","cachesByRoot","Map","getObserver","rootMargin","cacheByRoot","cacheKey","cachedObserver","entryCallbacks","observer","IntersectionObserver","entries","forEach","entry","target","observe","node","_cachedObserver","_cachedObserver2","unobserve","_cachedObserver3","_cachedObserver4","DEFAULT_ROOT_MARGIN","DEFAULT_THRESHOLD","observerCache","_extends","args","_result$entry","_useIntersectionObser","_args$rootMargin","_args$threshold","nodeRef","rootRef","observerRef","_useState","setEntry","useCallback","observedEntry","currentObserver","rootNode","useIntersectionObserver","Boolean","isIntersecting","wasEverVisible","setWasEverVisible","animationControls","hasMounted","pendingAnimations","subscribers","Set","subscribe","visualElement","add","delete","definition","transitionOverride","animations","all","resolve","animation","mount","then"],"sourceRoot":""}