20 best-selling products on Amazon in 2021


With 2021 coming to a close, we’re revisiting the products our readers couldn’t get enough of over the past year. The last 12 months saw readers shopping for items to help them sleep more soundly, clean more efficiently and seriously up their selfie game. From ring lights to alarm clocks, check out the 20 products on Amazon Underscored readers loved most in 2021.

Swedish Dish Cloths, Pack of 10

These durable and eco-friendly Swedish dishcloths were our most popular product of the year. Each ultra-absorbent cloth is made from cellulose and cotton and, unlike wasteful paper towels, can be reused up to 100 times. You can even give it a spin in the washing machine whenever it needs a refresh.

LifeStraw Personal Water FilterLifeStraw Personal Water Filter

Whether you’re a camping aficionado or just like to be prepared, it never hurts to have a LifeStraw on hand. The wildly popular personal water filter, which boasts 65,000 five-star ratings, removes 99.999% of bacteria, water-borne parasites and microplastics.

Mavogel Cotton Sleep Eye MaskMavogel Cotton Sleep Eye Mask

Mavogel makes the best sleep mask you can buy. We love its comfortable design, soft fabric and ability to legitimately block out all (seriously, all) light. It’s also an absolute steal at under $10.

Goshi Exfoliating Shower TowelGoshi Exfoliating Shower Towel

Toss your old loofah in the trash and pick up Goshi’s beloved shower towel instead. Its exfoliating weave gently buffs away dry skin and lathers like a dream.

Apple Airpods ProApple Airpods Pro

The AirPods Pro offer stellar sound, active noise cancellation and seamless syncing with other Apple products, making them a no-brainer for anyone already in the Apple ecosystem.

TubShroom Ultra Bath Tub Drain ProtectorTubShroom Ultra Bath Tub Drain Protector

The humble TubShroom vows to catch each and every hair before it can cause icky drain clogs. The stainless steel design is simple to clean and each TubShroom comes with multiple adapters to fit nearly any drain.

Anker Powerline II USB-C to Lightning CableAnker Powerline II USB-C to Lightning Cable

The Anker Powerline II is our favorite Lightning cable of the year. It has everything you want in a cable — a sturdy yet flexible build, steady connection and MFi certification — at a fantastic price point to boot.

Jall Wooden Digital Alarm ClockJall Wooden Digital Alarm Clock

Make mornings a little more pleasant with Jall’s excellent digital clock, which scored the top spot in our alarm clock testing. We especially appreciate its easy setup and how sleek it looks on the nightstand.

Wyze Smart ScaleWyze Smart Scale

Wyze’s scale gauges 11 different metrics in addition to weight, including BMI, body fat percentage and muscle mass. Our tester praised its accuracy and elegant looks, and also found Wyze’s app easy to use.

Chamberlain MyQ Smart Garage ControlChamberlain MyQ Smart Garage Control

The Chamberlain myQ is an excellent addition to your smart home. Not only does it let you control your garage door from anywhere, but you can also set your door to automatically close at the same time each night and send you alerts for any door-related activity when you’re away.

Cleverfy Aromatherapy Shower SteamersCleverfy Aromatherapy Shower Steamers

Pop one of these steamers in the corner of your shower and turn on the hot water to transform your bathroom into your own private spa. The set comes with six shower bombs in scents like relaxing lavender, invigorating peppermint and refreshing grapefruit.

Emart 10-Inch Selfie Ring LightEmart 10-Inch Selfie Ring Light

Emart makes the best ring light around. With three light modes, 11 brightness levels and an included tripod, it has everything you need to add an ultra-flattering glow to your selfies and Zoom calls.

T-fal Hard Anodized Titanium Nonstick 12-Inch PanT-fal Hard Anodized Titanium Nonstick 12-Inch Pan

We love T-fal’s pan, especially its even heating, nonstick surface and deep profile that let you tackle anything from frying eggs to simmering stews. It’s oven-safe up to 400 degrees Fahrenheit and also features a heat-resistant silicone handle so you can comfortably move it to and from the stovetop.

Oxo Good Grips 3-in-1 Avocado SlicerOxo Good Grips 3-in-1 Avocado Slicer

This nifty three-in-one tool lets you prep perfect avocados with less cleanup: The serrated blade cuts the fruit in half, the pitter pops out the seeds and the fan blade slices each half into seven pieces in a single swipe.

Lifewit Large Capacity Clothes Storage Bag OrganizerLifewit Large Capacity Clothes Storage Bag Organizer

With their huge capacity, reinforced handles, two-way zippers and protective fabric, these storage bags are a must for stashing blankets, towels and off-season clothes. (We’ve got out more great home organization products for you here.)

Command Mop and Broom Grippers ($13.32; amazon.com)

Command Mop and Broom GrippersCommand Mop and Broom Grippers

These handy grippers can turn any wall into vertical broom storage space — no tools required. A set comes with two grippers (each of which holds up to 4 pounds) and four no-damage hanging strips.

Coleman SkinSmart DEET-Free Insect Repellent SprayColeman SkinSmart DEET-Free Insect Repellent Spray

Coleman’s DEET-free aerosole scored top marks in our testing of insect repellent sprays, thanks to its quick-dry finish and non-greasy feel.

Kona Safe/Clean BBQ Grill BrushKona Safe/Clean BBQ Grill Brush

Whether you’re lucky enough to live in a warm climate year-round or simply dreaming of next summer, keep your grill in tip-top shape with the best grill brush around. Kona’s bristle-free design prevents metal pieces from breaking off while cleaning and its extra-long handle makes it easier to clean the grill while still hot.

Whellen Selfie Ring LightWhellen Selfie Ring Light

If you need something more portable than our top ring light pick, the Whellen ring light is your best bet. The rechargeable light clips directly to your laptop or phone without scratching your screen and offers three flattering lighting modes.

EarFun Air True Wireless EarbudsEarFun Air True Wireless Earbuds

EarFun Air are hands-down the best wireless earbuds you can buy for under $100. Their sound is comparable to Apple’s AirPods and they also feature an impressive battery life.

(function(){
function addScript({ async, defer, name, src, ucStates, id, data }) {
try {
if (src && typeof src === ‘string’) {
if (ucStates && ucStates.length) {
WM.UserConsent.addScript({ src, async, defer }, ucStates);
} else {
const script = document.createElement(‘script’);
script.src = src;
script.dataset.uid = name;
script.async = async;
script.defer = defer;
script.onload = () => {window.dispatchEvent(new CustomEvent(name+’.loaded’));};
if (id) {
script.id = id;
}
if (data && typeof data === ‘object’) {
Object.keys(data).forEach(key => script.dataset[key] = data[key]);
}
document.head.appendChild(script);
}
}
} catch(e) {
console.error(‘ExternalScripts: error adding script “‘ + name + ‘”‘, e);
}
};
//snippet: user-consent
window.WM=window.WM||{},function(e,o){“use strict”;var n;”function”!=typeof e.CustomEvent&&((n=function(e,n){var t;return n=n||{bubbles:!1,cancelable:!1,detail:void 0},(t=o.createEvent(“CustomEvent”)).initCustomEvent(e,n.bubbles,n.cancelable,n.detail),t}).prototype=e.Event.prototype,e.CustomEvent=n,”function”!==e.Event&&(e.Event=n))}(window,document),window.WM.UserConsent=window.WM.UserConsent||function(y,C){“use strict”;var f,k=””,v={},I=!1,m=[],b=0,h=null,E=null,S=””,T={},A=””,D=””,O=””,x=!1,P=!1,w=!1,n=!1,L=””,t=”3.1.15″,M=null,G=!1,R=!1,U=!1,_=null,W=””,B={addtlConsentCookie:”OTAdditionalConsentString”,brand:””,categories:{req:”required”,ven:”vendor”,p1:”data-store”,p2:”ads-contextual”,p3:”ads-person-prof”,p4:”ads-person”,p5:”content-person-prof”,p6:”content-person”,p7:”measure-ads”,p8:”measure-content”,p9:”measure-market”,p10:”product-develop”,sp1:”product-security”,sp2:”deliver-content”,f1:”combine-data”,f2:”link-devices”,f3:”id-devices”,sf1:”geolocate”,sf2:”scan-devices”},ccCookie:”countryCode”,compatCategories:{“ads-general”:[“ads-contextual”,”ads-person”,”measure-ads”],”ads-vendor”:[“vendor”,”ads-contextual”,”ads-person”,”measure-ads”],”behavior-general”:[“content-person”],”behavior-vendor”:[“vendor”,”content-person”],functional:[“vendor”,”data-store”,”content-person-prof”,”content-person”],performance:[“measure-content”,”measure-market”,”product-develop”],”perf-general”:[“measure-content”,”measure-market”,”product-develop”],”perf-vendor”:[“vendor”,”measure-content”,”measure-market”,”product-develop”],”person-general”:[“ads-person-prof”,”content-person-prof”],”person-vendor”:[“vendor”,”ads-person-prof”,”content-person-prof”],”social-vendor”:[“vendor”],”storage-general”:[“data-store”],”storage-vendor”:[“vendor”,”data-store”],targeting:[“vendor”,”ads-contextual”,”ads-person-prof”,”ads-person”,”measure-ads”]},confirmCookie:”OptanonAlertBoxClosed”,consentChangeAction:null,consentChangeActionDelay:1e3,consentCookie:”OptanonConsent”,consentDefaults:{required:!0,vendor:!0,”data-store”:!0,”ads-contextual”:!0,”ads-person”:!0,”ads-person-prof”:!0,”content-person”:!0,”content-person-prof”:!0,”measure-ads”:!0,”measure-content”:!0,”measure-market”:!0,”product-develop”:!0,”product-security”:!0,”deliver-content”:!0,”combine-data”:!0,”link-devices”:!0,”id-devices”:!0,geolocate:!0,”scan-devices”:!0},consentExpireIn:1,consentLinkTitle:””,controlCookie:”OptanonControl”,cookieSameSite:”Lax”,cookieSecure:!1,enableDebug:!1,enableGPC:!0,enableTransitionCheck:!0,enableWebViewCheck:!0,gdprApplies:!1,gdprIabCookie:”eupubconsent-v2″,gdprIabIsGlobal:!1,gdprIabMaxPurposes:10,gdprIabMaxSpecialFeats:2,gdprIabPolicy:2,geoUsedByOneTrust:!0,languageFromBrowser:!0,privacyCenterLinkTitle:””,psmAppId:””,psmEnv:”prod”,regionChangeAction:null,regions:[{id:”ccpa”,compatCodes:{adv:[“ven”],bbv:[“ven”],fc:[“ven”],pfv:[“ven”],pzv:[“ven”],sav:[“ven”],smv:[“ven”],tc:[“ven”]},compatTransition:{cond:!1,new:”ven”,old:”pzv”},consentExpireIn:3,consentGpcDefaults:{vendor:!1},consentImpliedDefaults:{required:!0,”data-store”:!0,”ads-contextual”:!0,”ads-person”:!0,”ads-person-prof”:!0,”content-person”:!0,”content-person-prof”:!0,”measure-ads”:!0,”measure-content”:!0,”measure-market”:!0,”product-develop”:!0,”product-security”:!0,”deliver-content”:!0,”combine-data”:!0,”link-devices”:!0,”id-devices”:!0,geolocate:!0,”scan-devices”:!0},consentLinkTitle:”Do Not Sell My Personal Information”,geoMatch:[“US”,”PR”,”VI”,”UM”,””]},{id:”gdpr”,compatCodes:{ad:[“p2″,”p4″,”p7”],adv:[“p2″,”p4″,”p7”],bb:[“p6”],bbv:[“p6”],fc:[“p1″,”p5″,”p6”],pf:[“p8″,”p9″,”p10”],pfv:[“p8″,”p9″,”p10”],pz:[“p3″,”p5”],pzv:[“p3″,”p5”],sa:[“p1”],sav:[“p1”],tc:[“p2″,”p3″,”p4″,”p7″]},consentDefaults:{required:!0,vendor:!0,”data-store”:!1,”ads-contextual”:!1,”ads-person-prof”:!1,”ads-person”:!1,”content-person-prof”:!1,”content-person”:!1,”measure-ads”:!1,”measure-content”:!1,”measure-market”:!1,”product-develop”:!1,”product-security”:!0,”deliver-content”:!0,”combine-data”:!1,”link-devices”:!1,”id-devices”:!1,geolocate:!1,”scan-devices”:!1},consentImpliedDefaults:{required:!0,vendor:!0,”product-security”:!0,”deliver-content”:!0,”combine-data”:!0,”link-devices”:!0,”id-devices”:!0},consentLinkTitle:”Manage Cookies+”,gdprApplies:!0,geoMatch:[“GB”,”DE”,”FR”,”IT”,”ES”,”PL”,”RO”,”NL”,”BE”,”GR”,”CZ”,”PT”,”SE”,”HU”,”AT”,”BG”,”DK”,”FI”,”SK”,”IE”,”HR”,”LT”,”SI”,”LV”,”EE”,”CY”,”LU”,”MT”,”NO”,”IS”,”LI”]},{id:”global”,geoMatch:[“*”]}],reloadOnConsentChange:!0,reloadOnConsentReduction:!1,scCookie:”stateCode”,setPageClass:!0,useIAB:!0,uspApiCookieName:”usprivacy”,uspApiExplicitNotice:!0,uspApiIsLspa:!1};function N(e){var n=Array.prototype.slice.call(arguments);n[0]=”[WMUC]”+(0===A.length?””:” (“+A+”)”)+”:”,(“error”===e?console.error:console.log).apply(console,n)}function d(e){return!!Number(e)}function p(e){return parseInt(e,2)||0}function l(e){return 100*p(e)}function g(e){for(var n=”A”.charCodeAt(),t=e.match(/.{6}/g),o=””,r=0;r<t.length;r++)o+=String.fromCharCode(p(t[r])+n);return o}function z(e){for(var n=e.split(""),t={},o=0;o<n.length;o++)d(n[o])&&(t[o+1]=!0);return t}function V(e){var n,t,o,r,s,i,a=[];if("string"!=typeof e)return N("error","Invalid TC string specified"),a;for(o=e.split("."),r=0;r<o.length;r++){for(n=function(e){if("function"==typeof y.atob)try{return atob(e.replace(/_/g,"/").replace(/-/g,"+"))}catch(e){N("error","Failed to decode TC string")}return""}(o[r]),s=0,i="";s<n.length;s++)t=n.charCodeAt(s).toString(2),i+="00000000".slice(0,8-t.length)+t;a.push(i)}return 2!==p(a[0].slice(0,6))?(N("error","Unsupported TC string version"),[]):a}function F(e){for(var t=0,i=function(n,e,t,o){function r(){if(o.pubRestrictionEntry&&o.rangeEntry)for(var e in o.rangeEntry)Object.prototype.hasOwnProperty.call(o.rangeEntry,e)&&(o.pubRestrictionEntry[e]=(o.pubRestrictionEntry[e]||[]).concat(o.rangeEntry[e]));o.numPubRestrictions&&(o.numPubRestrictions–,n.push({key:"purposeId",size:6},{key:"restrictionType",size:2},{key:"numEntries",size:12}))}function s(){o.numEntries?(o.numEntries–,n.push({key:"isRange",size:1,decoder:d},{key:"startVendorId",size:16})):r()}function i(){return!o.purposeId||[{purpose:o.purposeId,isAllowed:0!==o.restrictionType,isConsentRequired:1===o.restrictionType,isLegitimateInterestRequired:2===o.restrictionType}]}if("isRangeEncoding"===e.key)n.push(t?{key:"numEntries",size:12}:{key:"bitField",size:o.maxVendorId,decoder:z});else if("numEntries"===e.key)o.rangeEntry={},s();else if("isRange"===e.key)t&&n.push({key:"endVendorId",size:16});else if("startVendorId"===e.key)o.isRange||(o.rangeEntry[t]=i(),s());else if("endVendorId"===e.key){for(var a=o.startVendorId;a<=o.endVendorId;a+=1)o.rangeEntry[a]=i();s()}else"numCustomPurposes"===e.key?n.push({key:"customPurposeConsents",size:o.numCustomPurposes,decoder:z},{key:"customPurposeLegitimateInterests",size:o.numCustomPurposes,decoder:z}):"numPubRestrictions"===e.key&&(o.pubRestrictionEntry={},r())},a=function(e){return e.pubRestrictionEntry||e.rangeEntry||e.bitField||e},c=function(e,n){n=n.slice(t,t+e.size);return t+=e.size,(e.decoder||p)(n)},n=function(e,n){for(var t,o,r={},s=0;s<e.queue.length;s++)o=function(e,n){var t,o,r,s={};if(!e.queue)return c(e,n);for(t=0;t<e.queue.length;t+=1)o=e.queue[t],r=c(o,n),s[o.key]=r,i(e.queue,o,r,s);return a(s)}(t=e.queue[s],n),r[t.key]=o,i(e.queue,t,o,r);return a(r)},o=V(e),r=function(e){for(var n=[{key:"purposeConsents",size:24,decoder:z},{key:"purposeLegitimateInterests",size:24,decoder:z}],t=[{key:"version",size:6},{key:"created",size:36,decoder:l},{key:"lastUpdated",size:36,decoder:l},{key:"cmpId",size:12},{key:"cmpVersion",size:12},{key:"consentScreen",size:6},{key:"consentLanguage",size:12,decoder:g},{key:"vendorListVersion",size:12},{key:"policyVersion",size:6},{key:"isServiceSpecified",size:1,decoder:d},{key:"useNonStandardStacks",size:1,decoder:d},{key:"specialFeatureOptins",size:12,decoder:z}].concat(n).concat({key:"purposeOneTreatment",size:1,decoder:d},{key:"publisherCountryCode",size:12,decoder:g}),o=[].concat([{size:3}]).concat(n).concat({key:"numCustomPurposes",size:6}),r=[{key:"core",queue:t}],s=1;s<e.length;s++)3===p(e[s].slice(0,3))&&r.push({key:"publisherTC",queue:o});return r}(o),s={},u=0;u<r.length;u++)s[r[u].key]=n(r[u],o[u]),t=0;return s}function q(e){e=new RegExp("(^|;) *"+e+" *= *([^;]+)"),e=C.cookie.match(e);return e?e.pop():null}function o(e,n,t){e&&(C.cookie=e+"="+("string"==typeof n?n:"")+"; Domain="+((t=t||{}).domain||v.cookieDomain)+"; Path="+(t.path||"/")+(t.maxage?"; Max-Age="+t.maxage:t.expires?"; Expires="+t.expires:"")+(t.secure?"; Secure":"")+(t.samesite?"; SameSite="+t.samesite:""))}function j(e){for(var n=0,t={},n=0;n<f.length;n++)t[f[n]]=e[f[n]];return t}function J(e,n){var t=0;if(n)for(e=e||{},t=0;t<f.length;t++)"boolean"==typeof n[f[t]]&&(e[f[t]]=n[f[t]]);return e}function H(){var e,n,t,o,r,s,i,a,c,u,d,p,l=[],g=[],C=q(v.consentCookie),f=!1,m=!1,b=!1;if(C&&-1!==C.indexOf("&groups=")||!0===v.useExternalConsent||(I=!1,E=null),!0===v.useExternalConsent&&(C="groups="+encodeURIComponent(y.OTExternalConsent.groups)),(R=!1)===I?(d=j(v.consentDefaults),(m=!0)===v.enableGPC&&v.consentGpcDefaults&&navigator.globalPrivacyControl&&(d=J(d,v.consentGpcDefaults),R=!0)):!0!==v.useExternalConsent&&v.gdprApplies&&v.useIAB&&v.gdprIabCookie&&(d=function(e,n){var t,o,r,s,i,a=null;if("string"==typeof e&&0!==e.length)if(!0===v.useExternalConsent&&y.OTExternalConsent.tcString?(L=y.OTExternalConsent.tcString,s=r="external consent",k=y.OTExternalConsent.addtlConsent||""):(L=q(e),r="""+e+'" cookie',s="""+n+'" cookie',null===(k="string"==typeof n&&0!==n.length?q(n):"")&&(k="")),L)if((i=F(L))&&i.core&&i.core.policyVersion===v.gdprIabPolicy&&i.core.purposeConsents){for(v.debug&&N("debug","Processed TC string from "+r+": ",i),a=j(v.consentImpliedDefaults),i.core.purposeLegitimateInterests=i.core.purposeLegitimateInterests||{},i.core.specialFeatureOptins=i.core.specialFeatureOptins||{},t=1;t<=v.gdprIabMaxPurposes;t++)a[o=v.categories["p"+t.toString(10)]]="boolean"==typeof i.core.purposeConsents[t]?i.core.purposeConsents[t]:"boolean"==typeof i.core.purposeLegitimateInterests[t]?i.core.purposeLegitimateInterests[t]:"boolean"==typeof v.consentImpliedDefaults[o]&&v.consentImpliedDefaults[o];for(t=1;t<=v.gdprIabMaxSpecialFeats;t++)a[o=v.categories["sf"+t.toString(10)]]="boolean"==typeof i.core.specialFeatureOptins[t]?i.core.specialFeatureOptins[t]:"boolean"==typeof v.consentImpliedDefaults[o]&&v.consentImpliedDefaults[o];0!==k.length&&-1===k.search(/^d+~[d.]*$/)&&(N("error","Error: Invalid AC string in "+s+"."),k="")}else N("error","Error: Invalid TC string in "+r+"."),k=L="";else k=L="";return a}(v.gdprIabCookie,v.addtlConsentCookie))?m=!0:d=J(j(v.consentDefaults),v.consentImpliedDefaults),C)for(s=C.split("&"),r=0;r<s.length;r++)if(u=s[r])if(u=(p=u.split("="))[0],p=p[1],!1===m&&"groups"===u&&p){for(a=decodeURIComponent(p).split(","),c=0;c<a.length;c++)o=(i=a[c].split(":"))[0].toLowerCase(),i="1"===i[1],o&&(v.categories[o]?(d[v.categories[o]]=i,"req"!==o&&(f=!0)):(v.compatTransition&&v.compatTransition.old===o&&v.compatTransition.cond===i&&(b=!0),v.compatCodes[o]&&(l.push(o),g.push(i))));if(!1===f&&0<l.length)for(G=!0,c=0;c<l.length;c++)for(t=v.compatCodes[l[c]],n=0;n<t.length;n++)(e=v.categories[t[n]])&&(d[e]=g[c]);else!0===b&&d[v.categories[v.compatTransition.new]]!==v.compatTransition.cond&&(d[v.categories[v.compatTransition.new]]=v.compatTransition.cond)}else"version"===u&&p?S=p:"isIABGlobal"===u&&(x="true"===p);return d}function e(){return j(h)}function r(){return P}function Y(){return!1===P}function s(){return"ccpa"===v.regId}function u(){return null!==h}function i(e,n){var t,o,r,s,i=!0,a="iab-"+v.regId,c="not ready";if(u()&&e)for(e=Array.isArray(e)?e:[e],s=0;s<e.length&&!0===i;s++)if((c=e[s])&&"required"!==c)if("iab"===c||c===a){if(v.useIAB&&(!n||!n.ignoreIAB))break}else if("boolean"==typeof h[c]&&!1===h[c])i=!1;else if(v.compatCategories[c])for(r=v.compatCategories[c],t=0;t<r.length;t++)if(o=r[t],"boolean"==typeof h[o]&&!1===h[o]){i=!1;break}return v.debug&&((n=n||{}).name=n.name||n.id||"unnamed",m.push({ts:new Date,act:n.cact||"CHK",desc:n.name,res:i,note:!i&&c||""}),N("debug",!0===i?"Check for consent ["+(e&&e.join(",")||"empty")+'] ALLOWS "'+n.name+'"'+("ADD"===n.cact?", script added":""):"Check for consent ["+(e&&e.join(",")||"empty")+'] REJECTS "'+n.name+'"'+("ADD"===n.cact?", script NOT added":""))),i}function Z(){var e=s()?!0===U?(h.vendor?y.WM.CDP.ccpaShareData():y.WM.CDP.ccpaDoNotShare(),y.WM.CDP.getUSPString()):"1"+(v.uspApiExplicitNotice?"Y":"N")+(h.vendor?"N":"Y")+(v.uspApiIsLspa?"Y":"N"):"1—";return Y()&&e!==W&&(W=e,!1===U&&null===_&&o(v.uspApiCookieName,e,{domain:v.cookieDomain,path:"/",samesite:v.cookieSameSite,secure:v.cookieSecure}),v.debug&&N("debug","USP string updated: ",e)),W}function K(){y.location.reload()}function $(e){var n;return!y.frames[e]&&(C.body?((n=C.createElement("iframe")).style.cssText="display:none",n.name=e,C.body.appendChild(n)):setTimeout($.bind(y,e),5),!0)}function Q(e){for(var n=null,t=y;t;t=t.parent){try{if(t.frames&&t.frames[e]){n=t;break}}catch(e){}if(t===y.top)break}return n}function X(e){y.addEventListener?y.addEventListener("message",e,!1):y.attachEvent("onmessage",e)}function ee(e){var n;T=e||{ccpaTCS:W,consentInteractions:b,consentTime:E,consentVersion:S,countryCode:D,region:v.regId,stateCode:O,userConsentVersion:t},Y()&&o(v.controlCookie,"ccc="+T.countryCode+"&csc="+T.stateCode+"&cic="+T.consentInteractions+"&otvers="+T.consentVersion+"&pctm="+(T.consentTime&&encodeURIComponent(T.consentTime.toISOString())||"0")+"&reg="+T.region+"&ustcs="+encodeURIComponent(T.ccpaTCS)+"&vers="+T.userConsentVersion,{domain:v.cookieDomain,expires:(e=v.consentExpireIn,(n=n?new Date(n):new Date).setUTCFullYear(n.getUTCFullYear()+e),n.toUTCString()),path:"/",samesite:v.cookieSameSite,secure:v.cookieSecure})}function ne(){var e=null,n=q(v.confirmCookie);return"string"==typeof n&&0!==n.length&&(e=new Date(n),!1===y.isNaN(e.valueOf()))?e:null}function a(){var e,n,t=ne(),o=!1,r=0<y.WM.UserConsent_wrapproc?new Date(y.WM.UserConsent_wrapproc):null,s=I,i=E,a=!1;for(y.WM.UserConsent_wrapproc=0,t&&(null===E||E<t)&&(I=!0,E=t),n=H(),e=0;eE.getTime()+v.consentChangeActionDelay+1e3)&&(E=r),r=h,h=n,Z(),ee(),!0===o){if(!0===v.debug)try{m.push({ts:new Date,act:”CHG”,desc:JSON.stringify(n),res:v.reloadOnConsentChange||v.reloadOnConsentReduction&&a,note:”function”==typeof v.consentChangeAction?”change function”:””})}catch(e){N(“error”,”Failed to track consent change: “,e)}if(“function”==typeof v.consentChangeAction&&v.consentChangeAction(j(h),v.regId,S,r),C.dispatchEvent(new CustomEvent(“userConsentChanged”,{bubbles:!1,cancelable:!1,detail:{region:v.regId,time:E,old:r,new:j(h),usp:W,tcf:L,acf:k}})),!0===v.reloadOnConsentChange||!0===a&&!0===v.reloadOnConsentReduction)setTimeout(K,100);else if(Y())try{y.sessionStorage.setItem(“_ucWMCons”,JSON.stringify({consentState:h,consentTime:E,consentVersion:S,iabIsGlobal:x})),y.postMessage(“_ucWMConsReset”,”*”)}catch(e){N(“error”,”Failed to update session storage and notify children of consent change: “,e)}}}else E=i,(!T.region||!T.consentVersion&&S||!T.userConsentVersion||T.userConsentVersion<"3.1.1")&&ee()}function c(e){var n,t,o,r,s,i,a,c,u,d,p=C.getElementsByTagName("head")[0],l=C.createElement("script"),g=null;if(null===h){if(null!==(s=Q("_usrConWM"))){A=y.name||"child";try{r=JSON.parse(y.sessionStorage.getItem("_ucWMConf"))}catch(e){r=null,N("error","Failed to parse parent frame consent settings.")}if("object"==typeof r&&null!==r){e.countryCode=r.countryCode,e.cookieDomain=r.cookieDomain,e.cookieSameSite=r.cookieSameSite,e.cookieSecure=r.cookieSecure,e.domId=r.domId,e.languageFromBrowser=!!r.langFromBrowser,e.enableDebug=!!r.enableDebug,e.enableGPC=!!r.enableGPC,e.regId=r.regId,e.stateCode=r.stateCode,e.src=r.src;try{i=JSON.parse(y.sessionStorage.getItem("_ucWMCons"))}catch(e){i=null,N("error","Failed to parse parent frame consent state.")}"object"==typeof i&&null!==i&&(h=i.consentState,E=i.consentTime,S=i.consentVersion,e.gdprIabIsGlobal=!!i.iabIsGlobal,P=!0),!1===r.parentReload&&X(function(e){var n;if("_ucWMConsReset"===e.data){try{n=y.sessionStorage.getItem("_ucWMCons")}catch(e){n=null}"object"==typeof n&&null!==n&&(e=function(e,n){var t=0;if(e&&n)for(t=0;t<f.length;t++)if(!0===e[f[t]]&&!0!==n[f[t]])return!0;return!1}(h,n.consentState),h=n.consentState,E=n.consentTime,S=n.consentVersion,Z(),(!0===v.reloadOnConsentChange||!0===e&&!0===v.reloadOnConsentReduction)&&setTimeout(K,100))}})}}if(!(e&&e.src&&e.domId&&e.cookieDomain))throw new Error("Invalid config passed to user-consent!");if(v.cookieDomain=e.cookieDomain,v.cookieSameSite=e.cookieSameSite||B.cookieSameSite,v.cookieSecure=("boolean"==typeof e.cookieSecure?e:B).cookieSecure,v.debug=!(!console||!e.enableDebug&&-1===y.location.search.search(/[?&]wmuc_debug=[1t]/)),v.enableGPC=("boolean"==typeof e.enableGPC?e:B).enableGPC,"object"==typeof y.GetExternalConsent&&null!==y.GetExternalConsent&&"function"==typeof y.GetExternalConsent.oneTrustCookie){try{t=JSON.parse(y.GetExternalConsent.oneTrustCookie())}catch(e){t=null}"object"==typeof t&&null!==t&&t.consentedDate&&(t.tcString||t.groups)&&(y.OTExternalConsent=t),"function"==typeof y.GetExternalConsent.countryCode&&y.GetExternalConsent.countryCode()&&(y.ExternalConsentGeo={countryCode:y.GetExternalConsent.countryCode(),stateCode:y.GetExternalConsent.stateCode()||""})}for(("boolean"==typeof e.enableWebViewCheck?e:B).enableWebViewCheck&&"object"==typeof y.OTExternalConsent&&null!==y.OTExternalConsent&&y.OTExternalConsent.consentedDate?(v.useExternalConsent=!0,v.debug&&N("debug","Reading consent from external consent data: ",y.OTExternalConsent)):v.useExternalConsent=!1,v.geoUsedByOneTrust=("boolean"==typeof e.geoUsedByOneTrust?e:B).geoUsedByOneTrust,!0===Y()&&!0===v.debug&&-1!==y.location.search.search(/[?&]wmuc_cc=[A-Za-z]{2}/)?N("debug","Set debug CC to: ",D=y.location.search.match(/[?&]wmuc_cc=([A-Za-z]{2})/)[1].toUpperCase()):D=v.useExternalConsent&&"object"==typeof y.ExternalConsentGeo&&"string"==typeof y.ExternalConsentGeo.countryCode&&2===y.ExternalConsentGeo.countryCode.length?y.ExternalConsentGeo.countryCode.toUpperCase():"string"==typeof e.countryCode&&2===e.countryCode.length?e.countryCode.toUpperCase():(i=q(e.ccCookie||"countryCode"))&&2===i.length?i.toUpperCase():(N("error","User-Consent unable to determine country, missing or invalid cookies!"),"US"),v.debug&&-1!==y.location.search.search(/[?&]wmuc_sc=[A-Za-z]{2}/)?N("debug","Set debug SC to: ",O=y.location.search.match(/[?&]wmuc_sc=([A-Za-z]{2})/)[1].toUpperCase()):v.useExternalConsent&&"object"==typeof y.ExternalConsentGeo&&"string"==typeof y.ExternalConsentGeo.stateCode&&2===y.ExternalConsentGeo.stateCode.length?O=y.ExternalConsentGeo.stateCode.toUpperCase():"string"==typeof e.stateCode&&2===e.stateCode.length?O=e.stateCode.toUpperCase():(i=q(e.scCookie||"stateCode"))&&2===i.length?O=i.toUpperCase():v.debug&&N("debug","User-Consent unable to determine state, leaving unset."),!0===Y()&&!0===v.geoUsedByOneTrust&&!1===w&&(y.OneTrust=y.OneTrust||{},y.OneTrust.geolocationResponse={countryCode:D,stateCode:O},i=function(e){!1===w?(w=!0,y.OneTrust=y.OneTrust||{},y.OneTrust.geolocationResponse={countryCode:D,stateCode:O},y.OneTrustStub&&"function"==typeof y.OneTrustStub.setGeoLocation&&y.OneTrustStub.setGeoLocation(D,O),v.debug&&N("debug","Set OneTrust geo-location.")):"function"==typeof y.OptanonWrapper&&y.OptanonWrapper()},y.addEventListener?y.addEventListener("consent.onetrust",i,!1):y.attachEvent("consent.onetrust",i)),v.categories=e.categories||B.categories,v.regions=e.regions||B.regions,v.consentChangeAction=e.consentChangeAction||B.consentChangeAction,v.consentChangeActionDelay=e.consentChangeActionDelay||B.consentChangeActionDelay,v.controlCookie=e.controlCookie||B.controlCookie,v.brand=e.brand||B.brand||"",v.psmAppId=e.psmAppId||B.psmAppId||"",v.psmEnv=e.psmEnv||B.psmEnv||"prod",v.languageFromBrowser=("boolean"==typeof e.languageFromBrowser?e:B).languageFromBrowser,v.regionChangeAction=e.regionChangeAction||B.regionChangeAction,v.reloadOnConsentChange=("boolean"==typeof e.reloadOnConsentChange?e:B).reloadOnConsentChange,v.reloadOnConsentReduction=("boolean"==typeof e.reloadOnConsentReduction?e:B).reloadOnConsentReduction,n=Object.keys(v.categories),f=[],o=0;o<n.length;o++)f.push(v.categories[n[o]]);for(o=0;o<v.regions.length;o++)if(!0===Y()&&function(e){for(var n=0;n<e.length;n++)if(D===e[n].toUpperCase()||"*"===e[n])return 1}(v.regions[o].geoMatch)||!0===P&&v.regions[o].id===e.regId){g=v.regions[o];break}if(!g){if(P)throw new Error("No matching user-consent region, parent and iframe configs do not match!");throw new Error("No matching user-consent region!")}if(v.regId=g.id,v.compatTransition=(e.enableTransitionCheck||B.enableTransitionCheck)&&g.compatTransition?g.compatTransition:null,v.compatCategories=g.compatCategories||e.compatCategories||B.compatCategories||{},v.compatCodes=g.compatCodes||e.compatCodes||B.compatCodes||{},v.consentExpireIn=g.consentExpireIn||e.consentExpireIn||B.consentExpireIn||1,v.consentLinkAction=g.consentLinkAction||e.consentLinkAction||null,v.consentLinkTitle=g.consentLinkTitle||e.consentLinkTitle||B.consentLinkTitle,v.confirmCookie=g.confirmCookie||e.confirmCookie||B.confirmCookie,v.consentCookie=g.consentCookie||e.consentCookie||B.consentCookie,v.addtlConsentCookie=g.addtlConsentCookie||e.addtlConsentCookie||B.addtlConsentCookie,v.consentDefaults=g.consentDefaults||e.consentDefaults||B.consentDefaults,v.consentGpcDefaults=g.consentGpcDefaults||e.consentGpcDefaults||B.consentGpcDefaults||null,v.consentImpliedDefaults=g.consentImpliedDefaults||B.consentImpliedDefaults||v.consentDefaults,v.domId=g.domId||e.domId,v.gdprIabCookie=g.gdprIabCookie||e.gdprIabCookie||B.gdprIabCookie,v.gdprIabMaxPurposes=g.gdprIabMaxPurposes||e.gdprIabMaxPurposes||B.gdprIabMaxPurposes,v.gdprIabMaxSpecialFeats=g.gdprIabMaxSpecialFeats||e.gdprIabMaxSpecialFeats||B.gdprIabMaxSpecialFeats,v.gdprIabPolicy=g.gdprIabPolicy||e.gdprIabPolicy||B.gdprIabPolicy,v.privacyCenterLinkAction=g.privacyCenterLinkAction||e.privacyCenterLinkAction||null,v.privacyCenterLinkTitle=g.privacyCenterLinkTitle||e.privacyCenterLinkTitle||B.privacyCenterLinkTitle,v.src=g.src||e.src,v.useIAB=("boolean"==typeof e.useIAB?e:B).useIAB,v.uspApiExplicitNotice=e.uspApiExplicitNotice||B.uspApiExplicitNotice,v.uspApiIsLspa=e.uspApiIsLspa||B.uspApiIsLspa,v.uspApiCookieName=e.uspApiCookieName||B.uspApiCookieName,v.gdprApplies=("boolean"==typeof g.gdprApplies?g:"boolean"==typeof e.gdprApplies?e:B).gdprApplies,x=e.gdprIabIsGlobal||B.gdprIabIsGlobal||!1,(!0===e.setPageClass||"boolean"!=typeof e.setPageClass&&!0===B.setPageClass)&&C.documentElement&&(C.documentElement.className=(C.documentElement.className&&" "!==C.documentElement.className?C.documentElement.className+" userconsent-cntry-":"userconsent-cntry-")+D.toLowerCase()+" userconsent-reg-"+v.regId.toLowerCase()),v.debug&&(N("debug","GeoIP Country Code: "+D+", using consent region: "+v.regId),N("debug","IAB "+(v.useIAB?"enabled":"disabled"))),!0===Y()){if(v.psmAppId&&y.WM.CDP&&"function"==typeof y.WM.CDP.initPsm&&"function"==typeof y.WM.CDP.isPrivacyEnabled&&!v.useExternalConsent){try{y.WM.CDP.initPsm(v.psmAppId,v.brand,v.psmEnv,v.cookieDomain,D),U=y.WM.CDP.isPrivacyEnabled(),v.debug&&N("debug","PSM found and initialized. Privacy is "+(U?"enabled.":"disabled."))}catch(e){U=!1,N("error","PSM found but failed to initialize: ",e)}U&&("string"!=typeof(u=y.WM.CDP.getUSPString())||0===u.length?U=!1:W=u,v.debug&&N("debug","PSM privacy enabled "+(U?"so using.":"but not working so ignoring it.")))}else v.debug&&N("debug","PSM not found.");if(T=function(){var n,e,t,o,r={consentInteractions:b,consentTime:null,consentVersion:"",countryCode:"",region:"",stateCode:"",userConsentVersion:""},s=q(v.controlCookie);if("string"==typeof s&&0!==s.length)for(t=s.split("&"),e=0;e<t.length;e++)if("string"==typeof(o=t[e].split("="))[0]&&0!==o[0].length&&"string"==typeof o[1])switch(o[0]){case"ccc":r.countryCode=o[1].toLowerCase();break;case"csc":r.stateCode=o[1].toLowerCase();break;case"cic":r.consentInteractions=parseInt(o[1],10),(isNaN(r.consentInteractions)||r.consentInteractionsE)?(E=T.consentTime,v.debug&&N(“debug”,’Consent time read from “‘+v.controlCookie+'”: ‘,E)):null!==E&&v.debug&&N(“debug”,’Consent time read from “‘+v.confirmCookie+'”: ‘,E);if(null!==E?(I=!0,h=H(),!0===I?(l.async=!0,null!==T.consentTime&&T.consentTime<E&&(T.region=""),v.debug&&(N("debug",'Consent state read from "'+(v.useExternalConsent?"external consent":v.consentCookie)+'" ('+S+"): ",h),G&&N("debug","Consent state using compatibility config."))):(E=null,T.region="",v.debug&&N("debug","Consent state expired or removed, reset from defaults: ",h))):(h=j(v.consentDefaults),!0===v.enableGPC&&v.consentGpcDefaults&&navigator.globalPrivacyControl?(h=J(h,v.consentGpcDefaults),R=!0,v.debug&&N("debug","Consent state from defaults (GPC set): ",h)):v.debug&&N("debug","Consent state from defaults: ",h)),v.debug)try{m.push({ts:new Date,act:"SET",desc:JSON.stringify(h),res:null!==E,note:v.regId})}catch(e){N("error","Failed to track setting initial consent: ",e)}}if(y.WM.UserConsent_initted)N("error","ERROR: Second instance of UserConsent initialized!");else{if(y.WM.UserConsent_initted=!0,v.useIAB&&(d=function(o,r){var s,n,i="string"==typeof r.data,e=o+"Call";try{n=i?JSON.parse(r.data):r.data}catch(e){n={}}"object"==typeof n&&null!==n&&n[e]&&(s=n[e],y[o](s.command,s.version,function(e,n){var t={};t[o+"Return"]={returnValue:e,success:n,callId:s.callId};try{r.source.postMessage(i?JSON.stringify(t):t,"*")}catch(e){N("error","Failed to post reply: ",e)}},s.parameter))},U||(null===(_=Q("__uspapiLocator"))?($("__uspapiLocator"),y.__uspapi=function(e,n,t){if("function"==typeof t){if(n=0===n?1:n,"getUSPData"===e&&1===n)return t({version:1,uspString:y.WM.UserConsent.getUspAPIstring()},!0),!0;if("ping"===e)return t({version:1,uspapiLoaded:!0},!0),!0;t(null,!1)}return!1},y.__uspapi.msgHandler=d.bind(y,"__uspapi"),X(y.__uspapi.msgHandler),v.debug&&N("debug","IAB for CCPA ready.")):v.debug&&N("debug","IAB for CCPA ready (via frame).")),(x||v.gdprApplies)&&(c=G?"1.1":"2.0",null===(M=Q((a=G?"__cmp":"__tcfapi")+"Locator"))&&"function"!=typeof y[a]?($(a+"Locator"),y[a]=function(){var e=arguments,n=0;return y[a].a=y[a].a||[],0<e.length&&(n=0===(n=1<e.length&&parseInt(e[1],10)||0)?2:n,"ping"===e[0]?e[2]({apiVersion:c,gdprApplies:v.gdprApplies,gdprAppliesGlobally:x,cmpLoaded:!1,cmpStatus:"stub",displayStatus:v.gdprApplies?"hidden":"disabled"},!0):"setGdprApplies"===e[0]&&3<e.length&&"boolean"==typeof e[3]?v.gdprApplies=e[3]:y[a].a.push([].slice.apply(e))),y[a].a},y[a].msgHandler=d.bind(y,a),X(y[a].msgHandler),v.debug&&N("debug","IAB (v"+c+") for GDPR ready."),y[a]("getTCData",0,y.OptanonWrapper)):M&&v.debug&&N("debug","IAB (v"+c+") for GDPR ready (via frame)."))),Z(),!0===Y()){if(v.useExternalConsent?ee():T.region&&T.region!==v.regId&&(u=T.region,d=v.regId,v.debug&&N("debug",'User-Consent detected region change from "'+u+'" to "'+d+'".'),"function"==typeof v.regionChangeAction&&v.regionChangeAction(u,d,v.consentLinkAction)),null===s&&$("_usrConWM"))try{y.sessionStorage.setItem("_ucWMConf",JSON.stringify({cookieDomain:v.cookieDomain,cookieSameSite:v.cookieSameSite,cookieSecure:v.cookieSecure,countryCode:D,domId:v.domId,enableDebug:v.debug,langFromBrowser:v.languageFromBrowser,parentReload:v.reloadOnConsentChange,regId:v.regId,src:v.src,stateCode:O})),y.sessionStorage.setItem("_ucWMCons",JSON.stringify({consentState:h,consentTime:E,consentVersion:S,iabIsGlobal:x}))}catch(e){N("error","Failed to set UserConsent frame data!")}!(l.charset="utf-8")===v.languageFromBrowser&&(l.dataset.documentLanguage="true"),l.dataset.domainScript=v.domId,l.src=v.src,p.appendChild(l)}v.debug&&N("debug","Dispatching UserConsentReady event."),C.dispatchEvent(new CustomEvent("userConsentReady",{bubbles:!1,cancelable:!1,detail:{region:v.regId,time:new Date,consentConfirmed:I}}))}}}return!0===y.WM.UserConsent_loaded?N("error","ERROR: Second instance of UserConsent loaded!"):(y.WM.UserConsent_loaded=!0,y.WM.UserConsent_wrapproc=0,y.OptanonWrapper=function(){var e;n||(n=!0,v.geoUsedByOneTrust&&y.Optanon&&"function"==typeof y.Optanon.getGeolocationData&&(e=y.Optanon.getGeolocationData())&&e.country!==D&&"function"==typeof y.Optanon.setGeoLocation&&(y.Optanon.setGeoLocation(D,O),v.debug&&N("debug","Reset OneTrust geo-location to match site.")),v.debug&&N("debug","Dispatching OptanonLoaded event."),C.dispatchEvent(new CustomEvent("optanonLoaded",{bubbles:!1,cancelable:!1,detail:{region:v.regId,time:new Date,consentConfirmed:I}})),!0===v.useExternalConsent&&!0!==y.Optanon.IsAlertBoxClosed()&&y.Optanon.Close()),null!==h&&0===y.WM.UserConsent_wrapproc&&(y.WM.UserConsent_wrapproc=(new Date).getTime(),setTimeout(a,("number"==typeof v.consentChangeActionDelay?v:B).consentChangeActionDelay))},"object"==typeof y.WM.UserConsentConfig&&null!==y.WM.UserConsentConfig&&c(y.WM.UserConsentConfig)),{addScript:function(e,n,t){var o,r,s,t=t||C.head;if(e&&(e.src||e.text)){if(!0===i(n,{cact:"ADD",name:e.name||e.src||e.id||"unnamed inline"})){for(o=C.createElement("script"),s=Object.keys(e),r=0;r<s.length;r++)o[s[r]]=e[s[r]];return t.appendChild(o),!0}}else N("error","Invalid or missing options to addScript.");return!1},addScriptElement:function(e,n,t){if(t=t||C.head,e){if(i(n,{cact:"ADD",name:e.name||e.src||e.id||"unnamed inline"}))return t.appendChild(e),!0}else N("error","Invalid or missing options to addScriptElement.");return!1},forceReconsent:function(){Y()&&(C.cookie=v.consentCookie+"=; Domain="+v.cookieDomain+"; Path=/; Expires=Thu, 01 Jan 2000 00:00:01 GMT;",C.cookie=v.confirmCookie+"=; Domain="+v.cookieDomain+"; Path=/; Expires=Thu, 01 Jan 2000 00:00:01 GMT;",ee({ccpaTCS:"",consentInteractions:b,consentTime:null,consentVersion:S,countryCode:D,region:v.regId,stateCode:O,userConsentVersion:t}),setTimeout(K,100))},getCmpString:function(e,n){var t,o,r;if("function"==typeof e)if(n=n||this.getRegion(),!1===v.useIAB&&(v.debug&&N("debug","getCmpString called with IAB disabled"),e(n,0,"","",new Error("IAB disabled"))),v.gdprApplies||x&&"ccpa"!==n){if(!1===G){if("string"==typeof L&&0!==L.length)return v.debug&&N("debug","getCmpString returning GDPR v2 CMP string"),void e(n,2,L,k,null);t=window.__tcfapi,o="getTCData",r=2}else t=window.__cmp,o="getConsentData",r=1;t(o,r,function(e,n,t,o,r){r?(v.debug&&N("debug","getCmpString returning GDPR v"+t+" CMP string"),e(n,t,1===t?o.consentData:o.tcString,1 {
if (
window.CNN.Zion.apiKey &&
window.CNN.Zion.environmentType &&
window.CNN.Zion.sourceId &&
window.ZION_SDK
) {
const environment = window.ZION_SDK.EnvironmentType[window.CNN.Zion.environmentType];
const enableLogging = environment !== window.ZION_SDK.EnvironmentType.Prod;

window.zion_analytics.configure({
bridgeEnabled: true,
bufferSize: 20,
enableLogging,
customFeatureManagerPath: ‘https://z.cdp-dev.cnn.com/zfm/zfh-3.js’,
environment: window.CNN.Zion.environmentType,
isSecure: true,
telemetryEndpoint: window.env.ZION_TELEMETRY_ENDPOINT,
trackAdvertising: false,
trackBluetooth: false,
trackDeeplink: false,
trackLifecycle: false,
trackLocation: false,
trackNotifications: false,
trackPurchases: false,
trackScreens: false,
trackUxMetrics: true,
uxMetricsPercentage: 100,
});

if (window.zion_analytics) {
window.zion_analytics.track(new window.ZION_SDK.Pageview({
canonicalUrl: window.CNN.contentModel.canonicalUrl,
traits: {
event_source: window.CNN.contentModel.techStack || ‘stellar’,
page_variant: window.CNN.contentModel.templateType || ”,
raw_url: window.location.href,
cms_id: CNN.contentModel.cmsId || ”,
page_type: CNN.contentModel.pageType || ”,
edition: CNN.contentModel.edition,
section: CNN.contentModel.section || ”,
subsection: CNN.contentModel.subsection || ”,
experience_type: window.location.href.includes(‘plus’) ? ‘cnn_plus’ : ‘cnn_core’
},
sourceId: window.CNN.contentModel.sourceId || ”
}));
}
} else {
throw new Error(‘zion: missing either “apiKey”, “environmentType” or “sourceId”‘);
}
});
})()

}

//script: fave
addScript({ async: false, defer: true, name: ‘fave’, src: ‘https://registry.api.cnn.io/bundles/fave/latest-4.x/js’ });

//snippet: airship
!function(n,r,e,t,c){var i,o=”Promise”in n,u={then:function(){return u},catch:function(n){ return n(new Error(“Airship SDK Error: Unsupported browser”)),u}},s=o?new Promise((function(n,r){i=function(e,t){e?r(e):n(t)}})):u ;s._async_setup=function(n){if(o)try{i(null,n(c))}catch(n){i(n)}},n[t]=s;var a=r.createElement(“script”);a.src=e,a.async=!0,a.id=”_uasdk”, a.rel=t,r.head.appendChild(a)}(window,document, window.env.AIRSHIP_SRC, ‘UA’, { vapidPublicKey: window.env.AIRSHIP_VAPID_PUBLIC_KEY, websitePushId: window.env.AIRSHIP_WEB_SITE_PUSH_ID, appKey: window.env.AIRSHIP_APP_KEY, token: window.env.AIRSHIP_TOKEN, workerUrl:window.env.AIRSHIP_WORKER }); (function(){const c = { auto: true, position: ‘top’, appearDelay: 5000, stylesheet: ‘https://z.cdn.cnn.com/cnn/tmpl_asset/static/css/vendor/airship.css’, askAgainDelay: 2592000, disappearDelay: 1000, type: ‘alert’, logo: ‘https://z.cdn.cnn.com/cnn/tmpl_asset/static/images/cnn_underscored_stacked_256.png’, i18n: { en: { title: ‘Subscribe to CNN Underscored notifications’, message: ‘Never miss out on a product worth buying or a sale worth shopping by subscribing to our push notifications.’, bubble: ‘Unlock permission to allow notifications’, button: ‘Allow’, accept: ‘Yes, Subscribe me!’, deny: ‘No thanks’}}}; window.UA.then((sdk) => { sdk.plugins.load(‘html-prompt’, ‘https://aswpsdkus.com/notify/v1/ua-html-prompt.min.js’, c).then((plugin) => plugin.prompt(c)); sdk.addEventListener(‘channel’, ev => { sdk.channel.tags.add(‘underscored’); }, { once: true }); }); })();

//snippet: krux-id
if (window.WM.UserConsent.inUserConsentState([‘vendor’,’data-store’,’ads-person-prof’,’ads-person’,’measure-ads’,’measure-content’,’measure-market’])) {
const MODULE_NAME=”Krux Module”,MODULE_VERSION=”v4.1.4″,config={DOM_CONTROLTAG:window.env.KRUX_DOM_CONTROLTAG,INTL_CONTROLTAG:window.env.KRUX_INTL_CONTROLTAG,SEND_VALUES_TO_ZION:window.env.KRUX_SEND_VALUES_TO_ZION};let zionBus,setControlTag,sendValuesToZion,hostname,messageSent=!1,subscribersSet=!1;const readCookie=e=>{let n=!1,t=null;var o;return void 0!==window.localStorage&&(n=!0),”https://www.cnn.com/2021/12/14/cnn-underscored/best-selling-products-amazon/undefined”==typeof value&&(n&&(t=window.localStorage.getItem(e)),n&&null!==t||(o=e,t=”https://www.cnn.com/2021/12/14/cnn-underscored/best-selling-products-amazon/undefined”!=typeof document&&document.cookie&&document.cookie.match(RegExp(`${o}=.*?;`))?document.cookie.match(RegExp(`${o}=.*?;`))[0].replace(RegExp(`${o}=|;`,”g”),””):null)),t},setHostAndPathNames=()=>{const e=”https://www.cnn.com/2021/12/14/cnn-underscored/best-selling-products-amazon/undefined”!=typeof document?document.createElement(“a”):{href:””,hostname:””,pathname:””};e.href=”https://www.cnn.com/2021/12/14/cnn-underscored/best-selling-products-amazon/undefined”!=typeof document?document.location.href:””,hostname=e.hostname},countryCode=readCookie(“countryCode”)||(readCookie(“CG”)?readCookie(“CG”).substr(0,2):””),getURLParam=e=>{if(“https://www.cnn.com/2021/12/14/cnn-underscored/best-selling-products-amazon/undefined”==typeof document)return””;const n=e.replace(/[[]/,”[“).replace(/[]]/,”]”),t=new RegExp(`[?&]${n}=([^&#]*)`);if(document&&document.location&&document.location.search){const e=t.exec(document.location.search);return e?e[1]:””}return””},isIntl=()=>{let e=!1;return setHostAndPathNames(),e=”true”===getURLParam(“isIntl”)||(hostname.search(/^.*(edition|edition-m|arabic|cnnespanol|cnne-test)./)>=0||””!==countryCode&&null!==countryCode&&(“US”!==countryCode&&”CA”!==countryCode)),e},piiRE=/(([^()[].,;:[email protected]”]+(.[^()[].,;:[email protected]”]+)*)|(“.+”))@(([^()[].,;:[email protected]”]+.)+[^()[].,;:[email protected]”]{2,})/i,piiIsPresentInQueryString=()=>{if(document.location.search){const e=document.location.search.search(piiRE)+1;let n;try{n=decodeURIComponent(document.location.search).search(piiRE)+1}catch(t){n=e}return 1===e||1===n}return!1},piiIsPresentInHash=()=>{if(document.location.hash){const e=document.location.hash.search(piiRE)+1;let n;try{n=decodeURIComponent(document.location.hash).search(piiRE)+1}catch(t){n=e}return e||n}return!1},piiIsPresentInReferrer=()=>{if(document.referrer){const e=document.referrer.search(piiRE)+1;let n;try{n=decodeURIComponent(document.referrer).search(piiRE)+1}catch(t){n=e}return e||n}return!1},piiFilter={qs:piiIsPresentInQueryString,hash:piiIsPresentInHash,ref:piiIsPresentInReferrer},retrieve=e=>{const n=`kx${e}`,t=(()=>{try{return window.localStorage}catch(e){return null}})();if(t)return t[n]||””;if(navigator.cookieEnabled){const e=document.cookie.match(`${n}=([^;]*)`);return e&&unescape(e[1])||””}return””},init=e=>{const n=new Promise((n=>{window.Krux||((window.Krux=function(){window.Krux.q.push([arguments])}).q=[]),window.krux_getFWKeyValues=(e,n)=>{window.Krux.segments=retrieve(“segs”)?retrieve(“segs”).split(“,”):[];const t=e||”_fwu:386123:”,o=n||35,r={};for(let e=0;e<window.Krux.segments.length;e++)e{let e=”&kxid=”;return window.Krux.user&&(e+=window.Krux.user),e+=`&kxseg=${window.kvs.join(“,”)}`,e},window.krux_getFWSegments=()=>(window.Krux.segments=retrieve(“segs”)?retrieve(“segs”).split(“,”):[],`kxseg=${window.Krux.segments.join(“,kxseg=”)}`),window.krux_getUser=()=>(window.Krux.user=retrieve(“user”),window.Krux.user),window.krux_getKuid=()=>(window.Krux.kuid=retrieve(“kuid”),window.Krux.kuid),setControlTag=e=>{const n=document,t=n.createElement(“script”),o=n.getElementsByTagName(“head”)[0];t.type=”text/javascript”,t.async=!0,t.src=`https://cdn.krxd.net/controltag?confid=${e}`,piiFilter.hash()||piiFilter.qs()||piiFilter.ref()||o.appendChild(t)},sendValuesToZion=()=>{window.Krux.user=retrieve(“user”),window.Krux.segments=retrieve(“segs”)?retrieve(“segs”).split(“,”):[],window.Krux.kuid=retrieve(“kuid”);const n=window.Krux.user,t=window.Krux.segments.filter((function(e,n){return n{if(e){const n=e.CONTROLTAGS?e.CONTROLTAGS:{DOM:e.DOM_CONTROLTAG,INTL:e.INTL_CONTROLTAG},t=isIntl()?n.INTL:n.DOM;setControlTag(t),e.SEND_VALUES_TO_ZION&&!subscribersSet&&(subscribersSet=!0,window.ZION_SDK?(zionBus=window.ZION_SDK.ZionMessageBus.getInstance(),sendValuesToZion()):window.addEventListener(“zion.loaded”,(()=>{zionBus=window.ZION_SDK.ZionMessageBus.getInstance(),sendValuesToZion()})))}n()})()}));return n.id=”Krux Module v4.1.4″,n};init(config);

}

//snippet: hyphensocial
(function () {
window.addEventListener(“load”, (event) => {
if (document.location.href.includes(“facebook-paid”)) {
function getURLParameter(e, t) {
return (RegExp(t + “=(.+?)(&|$)”).exec(e) || [, null])[1];
}
function parse_query_string(e) {
for (var t = e.split(“&”), n = {}, a = 0; a -1 || e.indexOf(“FBAV”) > -1;
}
function os_system() {
var e = navigator.userAgent || navigator.vendor || window.opera;
return /windows phone/i.test(e)
? “Windows Phone”
: /android/i.test(e)
? “Android”
: /iPad|iPhone|iPod/.test(e) && !window.MSStream
? “iOS”
: “unknown”;
}
function affSwap() {
(window.aff_params = {}),
(window.base_tag = null),
(window.tag_count = 0);
let e = document
.querySelector(‘[data-editable=”content”]’)
.querySelectorAll(‘a:not([swapped=”true”])’);
if (e.length >= 5) {
for (const t of e) {
let e = [
getURLParameter(t.href.replace(“-20”, “”), “tag”),
getURLParameter(t.href.replace(“|”, “&”), “subId1”),
getURLParameter(t.href.replace(“|”, “&”), “u1”),
getURLParameter(t.href.replace(“|”, “&”), “afftrack”),
].join(“”);
(e in aff_params) & (“” != e)
? ((window.aff_params[e] += 1),
window.aff_params[e] > window.tag_count &&
((tag_count = window.aff_params[e]), (window.base_tag = e)))
: (aff_params[e] = 1);
}
for (const t of e) {
(t.onclick = function () {
fbq(“trackSingleCustom”, “404409197807416”, “affClick”, {
href: t.href,
});
}),
t.setAttribute(“swapped”, !0);
let e = params().utm_term;
if (e && “https://www.cnn.com/2021/12/14/cnn-underscored/best-selling-products-amazon/undefined” !== e) {
let n = t.href.replace(base_tag, e);
t.setAttribute(“href”, n);
}
if (
t.href.includes(“amazon”) &
browser() &
(“Android” == os_system())
) {
t.setAttribute(“target”, “_blank”);
let e =
“intent://#Intent;scheme=com.amazon.mobile.shopping.web://amazon.com/o/ASIN/” +
i
.getAttribute(“href”)
.match(“(?:[/dp/]|$)([A-Z0-9]{10})”)[0]
.replace(“/”, “”) +
“/” +
i.getAttribute(“href”).split(“?”)[1].split(“tag=”)[1] +
“/ref=nosim//;end”;
t.setAttribute(“href”, e);
}
}
}
}
!(function (e, t, n, a, r, o, i) {
e.fbq ||
((r = e.fbq =
function () {
r.callMethod
? r.callMethod.apply(r, arguments)
: r.queue.push(arguments);
}),
e._fbq || (e._fbq = r),
(r.push = r),
(r.loaded = !0),
(r.version = “2.0”),
(r.queue = []),
((o = t.createElement(n)).async = !0),
(o.src = “https://connect.facebook.net/en_US/fbevents.js”),
(i = t.getElementsByTagName(n)[0]).parentNode.insertBefore(o, i));
})(window, document, “script”),
fbq(“init”, “404409197807416”),
fbq(“track”, “PageView”),
affSwap(),
setInterval(affSwap, 5e3);
}
});
})();

}())