<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-AU"
                       href="https://www.pcgamer.com/au/feeds/tag/security/"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from PC Gamer AU in Security ]]></title>
                <link>https://www.pcgamer.com/au/software/security</link>
        <description><![CDATA[ All the latest security content from the PC Gamer  AU team ]]></description>
                                    <lastBuildDate>Fri, 23 Oct 2026 09:26:40 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ A public outing of severe and unfixed Linux kernel vulnerabilities should have you thinking of updating your SteamOS or other distros to beta branches ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're an enlightened sort, who has sought out the sunny uplands of a Linux operating system for your gaming rig in these exciting days of almost seamless game compatibility, then you might want to have a think about migrating your OS onto a beta branch for a while. A list of as-yet unpatched Linux kernel vulnerabilities has been sent out to a public mailing list by accident, and some of these issues score as high as 9 on the CVSS security-scare-o-meter.</p><p>The incident was <a href="https://www.phoronix.com/news/LKML-New-Trend-Vulnerabilities" target="_blank">reported by Phoronix</a> yesterday, where Michael Larabel noted that overnight several new vulnerability reports had gone to a public rather than private security mailing list. The reports had seemingly come from Trend Micro's Zero Day Initiative—an initiative set up to <a href="https://www.trendmicro.com/content/dam/trendmicro/global/en/business/products/network/intrusion-prevention/threat-intelligence/ov_zero_day_initiative.pdf" target="_blank">promote extended vulnerability reporting</a> (.pdf warning) with a bug bounty system extending to a group of external researchers.</p><p>I guess sometimes a group can be <em>too</em> extended.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Anyways, the list of vulnerabilities was jumped on by what Phoronix calls Linux's second-in-command, Greg Kroah-Hartman, who maintains the stable branch of the kernel. Kroah-Hartman responded to each of the reports individually asking them to fix their submission process.</p><p>Mostly because none of these vulnerabilities have been patched on the main kernel yet, and remain open to attack. And those attack vectors have just been made public. Eep. The more positive news, however, is that some of the cases are undergoing testing or are at least queued in beta or '-next' branches. </p><p>So there is a chance that your chosen distro might have those patches in place for the security conscious if you opt-in to a beta branch for an update. Worth a check, eh?</p><p>Phoronix lists these vulnerabilities as:</p><ul><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830472B5702C089B0BBB77D80662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33549</strong></a><strong> as a CVSS 9.0 scored vulnerability for SMB Direct remote code execution vulnerability due to integer underflow. For this one there is a patch in a Git branch of code intended for Linux v7.5 but now presumably will be expedited for getting to mainline.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB383076AC412E19C48CFBEAE980662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33774</strong></a><strong> as a KSMBD race condition that can lead to remote code execution. Another CVSS 9.0 rated vulnerability.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830CECF5D0871064C59BA0280662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33367</strong></a><strong> is a vulnerability for skbuff skb_zerocopy in the network code that can lead to local privilege escalation. For this one Linux kernel developers received a security report from another source last week over the same issue and a patch is expected to be posted soon.</strong></li><li><strong></strong><a href="https://lore.kernel.org/dri-devel/2026102254-protector-seventy-6454@gregkh/"><strong>ZDI-CAN-34068</strong></a><strong> as a VMWGFX VMware graphics driver bug with an out-of-bounds write leading to local privilege escalation.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/2026102226-duly-imprison-a2c1@gregkh/"><strong>ZDI-CAN-34076</strong></a><strong> an uninitialized resource in the NVMET code leading to information disclosure.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/BYAPR01MB383046745372577D8F5902D580672@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-32005</strong></a><strong> was also posted to the mailing list a day prior for a search-domain TCP query stack buffer overflow leading to local privilege escalation.</strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/a-public-outing-of-severe-and-unfixed-linux-kernel-vulnerabilities-should-have-you-thinking-of-updating-your-steamos-or-other-distros-to-beta-branches/</link>
                                                                            <description>
                            <![CDATA[ The accidental reveal of unpatched vulnerabilities as high as 9 on the CVSS score chart is a little worrisome. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BDyTaQPdCdggekvid2fbVX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7EimC87J9aoLbZEbfWBX9H-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 09:26:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7EimC87J9aoLbZEbfWBX9H-1920-80.jpg">
                                                            <media:credit><![CDATA[Pixabay]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[https://pixabay.com/photos/linux-laptop-screen-wallpaper-wood-1962898/]]></media:description>                                                            <media:text><![CDATA[https://pixabay.com/photos/linux-laptop-screen-wallpaper-wood-1962898/]]></media:text>
                                <media:title type="plain"><![CDATA[https://pixabay.com/photos/linux-laptop-screen-wallpaper-wood-1962898/]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7EimC87J9aoLbZEbfWBX9H-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're an enlightened sort, who has sought out the sunny uplands of a Linux operating system for your gaming rig in these exciting days of almost seamless game compatibility, then you might want to have a think about migrating your OS onto a beta branch for a while. A list of as-yet unpatched Linux kernel vulnerabilities has been sent out to a public mailing list by accident, and some of these issues score as high as 9 on the CVSS security-scare-o-meter.</p><p>The incident was <a href="https://www.phoronix.com/news/LKML-New-Trend-Vulnerabilities" target="_blank">reported by Phoronix</a> yesterday, where Michael Larabel noted that overnight several new vulnerability reports had gone to a public rather than private security mailing list. The reports had seemingly come from Trend Micro's Zero Day Initiative—an initiative set up to <a href="https://www.trendmicro.com/content/dam/trendmicro/global/en/business/products/network/intrusion-prevention/threat-intelligence/ov_zero_day_initiative.pdf" target="_blank">promote extended vulnerability reporting</a> (.pdf warning) with a bug bounty system extending to a group of external researchers.</p><p>I guess sometimes a group can be <em>too</em> extended.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Anyways, the list of vulnerabilities was jumped on by what Phoronix calls Linux's second-in-command, Greg Kroah-Hartman, who maintains the stable branch of the kernel. Kroah-Hartman responded to each of the reports individually asking them to fix their submission process.</p><p>Mostly because none of these vulnerabilities have been patched on the main kernel yet, and remain open to attack. And those attack vectors have just been made public. Eep. The more positive news, however, is that some of the cases are undergoing testing or are at least queued in beta or '-next' branches. </p><p>So there is a chance that your chosen distro might have those patches in place for the security conscious if you opt-in to a beta branch for an update. Worth a check, eh?</p><p>Phoronix lists these vulnerabilities as:</p><ul><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830472B5702C089B0BBB77D80662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33549</strong></a><strong> as a CVSS 9.0 scored vulnerability for SMB Direct remote code execution vulnerability due to integer underflow. For this one there is a patch in a Git branch of code intended for Linux v7.5 but now presumably will be expedited for getting to mainline.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB383076AC412E19C48CFBEAE980662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33774</strong></a><strong> as a KSMBD race condition that can lead to remote code execution. Another CVSS 9.0 rated vulnerability.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830CECF5D0871064C59BA0280662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33367</strong></a><strong> is a vulnerability for skbuff skb_zerocopy in the network code that can lead to local privilege escalation. For this one Linux kernel developers received a security report from another source last week over the same issue and a patch is expected to be posted soon.</strong></li><li><strong></strong><a href="https://lore.kernel.org/dri-devel/2026102254-protector-seventy-6454@gregkh/"><strong>ZDI-CAN-34068</strong></a><strong> as a VMWGFX VMware graphics driver bug with an out-of-bounds write leading to local privilege escalation.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/2026102226-duly-imprison-a2c1@gregkh/"><strong>ZDI-CAN-34076</strong></a><strong> an uninitialized resource in the NVMET code leading to information disclosure.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/BYAPR01MB383046745372577D8F5902D580672@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-32005</strong></a><strong> was also posted to the mailing list a day prior for a search-domain TCP query stack buffer overflow leading to local privilege escalation.</strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GOG taken offline for maintenance in wake of PHP security emergency ]]></title>
                                                                                                <dc:content><![CDATA[ <blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:pd6p72ucaxbmnnpu2ltjonrp/app.bsky.feed.post/3myfu5fpgn32k" data-bluesky-cid="bafyreifuy5r6t4wqdgorrhivbdiw5lmyyj4ztmyg57s5e3gnk2ilsxkhxm" cite="https://bsky.app/profile/gog.com/post/3myfu5fpgn32k"><p lang="en">We're back online. Thanks for your patience! Your DRM-free library is right where you left it 💜 </p>— @gog.com (<a href="https://bsky.app/profile/did:plc:pd6p72ucaxbmnnpu2ltjonrp?ref_src=embed">@gog.com.bsky.social</a>) <a href="https://bsky.app/profile/gog.com/post/3myfu5fpgn32k">2026-10-21T19:28:09.139Z</a></blockquote><p><strong>Original story:</strong></p><p>The reveal of <a href="https://www.pcgamer.com/software/security/we-expect-mass-attacks-to-start-within-15-minutes-of-the-release-web-admins-braced-for-emergency-php-updates-to-plug-leaked-high-severity-holes/">critical vulnerabilities</a> affecting the PHP scripting language used in web development have led a number of major websites and services to go offline today as a precaution while they apply security fixes.</p><p>DRM-free game store GOG announced at 8 am Pacific that its site and launcher, GOG Galaxy, would be offline for "a couple of hours" for maintenance. The company did not say the cause, but it is not hard to speculate.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2112924299212226619"><p lang="en" dir="ltr">We’re temporarily taking GOG offline for maintenance for a couple of hours. GOG GALAXY will also be offline during this time. We apologize for the inconvenience and appreciate your patience!<a href="https://twitter.com/cantworkitout/status/2112924299212226619">October 21, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Numerous other outages are being reported this morning as security teams scramble to protect their websites and services. The government of Finland took down websites as a precaution, for instance, and (perhaps less importantly) we're hearing from players that Final Fantasy 14 login servers are down.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/gog-taken-offline-for-maintenance-in-wake-of-php-security-emergency/</link>
                                                                            <description>
                            <![CDATA[ GOG and GOG Galaxy were taken offline following news of critical web vulnerabilities. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">bpGUaCoYuyrhZGS55DHLWN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/M94SPZyBgjgWeUgfavg5b4-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 21 Oct 2026 16:20:08 +0000</pubDate>                                                                                                                                <updated>Wed, 21 Oct 2026 19:29:12 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ tyler@pcgamer.com (Tyler Wilde) ]]></author>                    <dc:creator><![CDATA[ Tyler Wilde ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rGvfSUkSBEPzBAVS3jRh9E-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Tyler grew up in Silicon Valley during the &#039;80s and &#039;90s, playing games like Zork and Arkanoid on early PCs. He was later captivated by Myst, SimCity, Civilization, Command &amp; Conquer, all the shooters they call &quot;boomer shooters&quot; now, and PS1 classic Bushido Blade (that&#039;s right: he had Bleem!). Tyler joined PC Gamer in 2011, and today he&#039;s focused on the site&#039;s news coverage. His hobbies include amateur boxing and adding to his 1,200-plus hours in Rocket League.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/M94SPZyBgjgWeUgfavg5b4-1920-80.png">
                                                            <media:credit><![CDATA[GOG]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GOG maintenance notice ]]></media:description>                                                            <media:text><![CDATA[GOG maintenance notice ]]></media:text>
                                <media:title type="plain"><![CDATA[GOG maintenance notice ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/M94SPZyBgjgWeUgfavg5b4-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:pd6p72ucaxbmnnpu2ltjonrp/app.bsky.feed.post/3myfu5fpgn32k" data-bluesky-cid="bafyreifuy5r6t4wqdgorrhivbdiw5lmyyj4ztmyg57s5e3gnk2ilsxkhxm" cite="https://bsky.app/profile/gog.com/post/3myfu5fpgn32k"><p lang="en">We're back online. Thanks for your patience! Your DRM-free library is right where you left it 💜 </p>— @gog.com (<a href="https://bsky.app/profile/did:plc:pd6p72ucaxbmnnpu2ltjonrp?ref_src=embed">@gog.com.bsky.social</a>) <a href="https://bsky.app/profile/gog.com/post/3myfu5fpgn32k">2026-10-21T19:28:09.139Z</a></blockquote><p><strong>Original story:</strong></p><p>The reveal of <a href="https://www.pcgamer.com/software/security/we-expect-mass-attacks-to-start-within-15-minutes-of-the-release-web-admins-braced-for-emergency-php-updates-to-plug-leaked-high-severity-holes/">critical vulnerabilities</a> affecting the PHP scripting language used in web development have led a number of major websites and services to go offline today as a precaution while they apply security fixes.</p><p>DRM-free game store GOG announced at 8 am Pacific that its site and launcher, GOG Galaxy, would be offline for "a couple of hours" for maintenance. The company did not say the cause, but it is not hard to speculate.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2112924299212226619"><p lang="en" dir="ltr">We’re temporarily taking GOG offline for maintenance for a couple of hours. GOG GALAXY will also be offline during this time. We apologize for the inconvenience and appreciate your patience!<a href="https://twitter.com/cantworkitout/status/2112924299212226619">October 21, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Numerous other outages are being reported this morning as security teams scramble to protect their websites and services. The government of Finland took down websites as a precaution, for instance, and (perhaps less importantly) we're hearing from players that Final Fantasy 14 login servers are down.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'We expect mass attacks to start within 15 minutes of the release': Web admins braced for emergency PHP updates to plug leaked high-severity holes ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The PHP security team has given <a href="https://www.php.net/archive/2026.php#2026-10-20-1" target="_blank">advanced notice</a> of an upcoming fix for two critical security vulnerabilities, both rated at 9.2 out of 10 on the CVE severity scale. </p><p>Info about the flaws seems to have leaked ahead of their official disclosure, as a video is being shared which reportedly shows a tool called PHP2Shell being used to remotely execute code on webservers via the vulnerabilities (via <a href="https://arstechnica.com/security/2026/10/php-maintainers-tell-web-devs-to-prepare-themselves-for-critical-security-patches/" target="_blank">Ars Technica</a>).</p><p>The PHP programming language is widely used across the internet and powers a huge number of websites. The fix is due to be released at 2pm UTC (10 am ET). Researchers from <a href="https://sansec.io/research/php2shell" target="_blank">cybersecurity firm Sansec</a> say the vulnerabilities affect all web servers running PHP 5.4 or later, and that "we expect mass attacks to start within 15 minutes of the release." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Dane Knecht, the chief technology officer for Cloudflare, says the company is already updating its firewall rules for PHP sites. "We are seeing early attacks emerging and are updating mitigations as new vectors show up. This is a stopgap only," <a href="https://x.com/dok2001/status/2112811965735202970" target="_blank">Knecht posted on X</a>. "Patch as soon as @ThePHPF releases the update at 14:00 UTC today."</p><p>Speaking to <a href="https://www.bleepingcomputer.com/news/security/php-warns-admins-of-two-critical-flaws-emergency-patches-coming-tomorrow/" target="_blank">Bleeping Computer</a> yesterday, the CEO of cybersecurity firm WatchTowr, Benjamin Harris, said: "In the last hour, two remote code execution vulnerabilities in PHP have been leaked. These vulnerabilities were previously scheduled under embargo and due for release on Thursday at 11 am ET."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SM8hnsh8PPqNMXUJSPvVmW" name="AMD Hack Password.jpg" alt="Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg" src="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chris Ratcliffe/Bloomberg via Getty Images)</span></figcaption></figure><p>"While we are not able to share technical information at this point for obvious reasons, given the sensitivity, we can confirm that these vulnerabilities are indeed real. Both of them are CVSS10 and are understood to affect PHP versions 5, 6, 7, and 8."</p><p>It sounds like a pretty anxious time for web administrators around the world right now. The current advice for admins includes taking an inventory of every PHP install, planning a maintenance window to coincide with the update, and making a backup of site and database files in anticipation.</p><p>For the rest of us, I guess we're in the hands of the server gods now. 2026 has been a year of increasingly sophisticated security exploits, but this one seems to be on a much larger scale (and of a much higher severity) than most. To quote Samuel L. Jackson in Jurassic Park: Hold on to your butts?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/we-expect-mass-attacks-to-start-within-15-minutes-of-the-release-web-admins-braced-for-emergency-php-updates-to-plug-leaked-high-severity-holes/</link>
                                                                            <description>
                            <![CDATA[ Batten down the virtual hatches. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TjA3MEFYfPrvXbwGYHzszX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 21 Oct 2026 10:39:05 +0000</pubDate>                                                                                                                                <updated>Wed, 21 Oct 2026 20:39:07 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-1920-80.jpg">
                                                            <media:credit><![CDATA[boonchai wedmakawand via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens.]]></media:description>                                                            <media:text><![CDATA[A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens.]]></media:text>
                                <media:title type="plain"><![CDATA[A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The PHP security team has given <a href="https://www.php.net/archive/2026.php#2026-10-20-1" target="_blank">advanced notice</a> of an upcoming fix for two critical security vulnerabilities, both rated at 9.2 out of 10 on the CVE severity scale. </p><p>Info about the flaws seems to have leaked ahead of their official disclosure, as a video is being shared which reportedly shows a tool called PHP2Shell being used to remotely execute code on webservers via the vulnerabilities (via <a href="https://arstechnica.com/security/2026/10/php-maintainers-tell-web-devs-to-prepare-themselves-for-critical-security-patches/" target="_blank">Ars Technica</a>).</p><p>The PHP programming language is widely used across the internet and powers a huge number of websites. The fix is due to be released at 2pm UTC (10 am ET). Researchers from <a href="https://sansec.io/research/php2shell" target="_blank">cybersecurity firm Sansec</a> say the vulnerabilities affect all web servers running PHP 5.4 or later, and that "we expect mass attacks to start within 15 minutes of the release." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Dane Knecht, the chief technology officer for Cloudflare, says the company is already updating its firewall rules for PHP sites. "We are seeing early attacks emerging and are updating mitigations as new vectors show up. This is a stopgap only," <a href="https://x.com/dok2001/status/2112811965735202970" target="_blank">Knecht posted on X</a>. "Patch as soon as @ThePHPF releases the update at 14:00 UTC today."</p><p>Speaking to <a href="https://www.bleepingcomputer.com/news/security/php-warns-admins-of-two-critical-flaws-emergency-patches-coming-tomorrow/" target="_blank">Bleeping Computer</a> yesterday, the CEO of cybersecurity firm WatchTowr, Benjamin Harris, said: "In the last hour, two remote code execution vulnerabilities in PHP have been leaked. These vulnerabilities were previously scheduled under embargo and due for release on Thursday at 11 am ET."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SM8hnsh8PPqNMXUJSPvVmW" name="AMD Hack Password.jpg" alt="Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg" src="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chris Ratcliffe/Bloomberg via Getty Images)</span></figcaption></figure><p>"While we are not able to share technical information at this point for obvious reasons, given the sensitivity, we can confirm that these vulnerabilities are indeed real. Both of them are CVSS10 and are understood to affect PHP versions 5, 6, 7, and 8."</p><p>It sounds like a pretty anxious time for web administrators around the world right now. The current advice for admins includes taking an inventory of every PHP install, planning a maintenance window to coincide with the update, and making a backup of site and database files in anticipation.</p><p>For the rest of us, I guess we're in the hands of the server gods now. 2026 has been a year of increasingly sophisticated security exploits, but this one seems to be on a much larger scale (and of a much higher severity) than most. To quote Samuel L. Jackson in Jurassic Park: Hold on to your butts?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ OpenAI employee arrested for allegedly using AI and toilet paper to record confidential meetings - FBI director Kash Patel jumps at the chance to say AI companies are 'essential' for national security ]]></title>
                                                                                                <dc:content><![CDATA[ <p>An OpenAI engineer has been arrested and charged for using (or endeavoring to use) an audio recording device to spy on confidential company communications. That's <a href="https://www.justice.gov/opa/pr/saudi-national-arrested-installing-surreptitious-audio-recording-device-openai" target="_blank">according to the US Department of Justice</a>, and while commercial espionage is nothing new, there's a certain sardonic twist to this one: it seems the accused employee did so with the help of AI. Oh, and some toilet paper.</p><p>According to FBI director Kash Patel's summary of the complaint, Saudi Arabian national Abdulrahman Alfozan "allegedly concealed a covert recording device inside his employer’s executive conference room to secretly capture sensitive communications about the company’s super intelligence technology."</p><p>In case you hadn't heard, that's <a href="https://www.pcgamer.com/software/ai/the-americans-have-officially-renamed-artificial-intelligence-to-super-intelligence-which-should-fix-everything/" target="_blank">what the US bigwigs are calling AI</a> now: superintelligence. Courtesy of President Trump, of course, who said last month that the Administration will use this term in place of artificial intelligence "in any applicable setting."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async></script><p>The FBI director also said, "Protecting American SI innovation is essential to safeguarding our nation’s economic strength and national security, and the FBI views that mission as one of our highest counterintelligence priorities."</p><p>The complaint says that Alfozan had worked for OpenAI since July 2025 as an engineer, and at the end of last month OpenAI discovered a USB audio recording device plugged into a conference room TV. According to the Justice Department, the device, which had been installed for a couple of days before discovery, was "concealed in toilet paper."</p><p>The complaint also alleges that Alfozans' spouse's "chatbot" account (no mention of whether that's a ChatGPT account or something else) submitted prompts related to things such as "build[ing] a continuous audio recorder", "improv[ing] audio and live listening", and "encrypt[ing] the SD card." There were allegedly also prompts relating to the specific recording device that was found.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AnPQbbV754ubEA9wMwz62Y" name="GettyImages-1252639606.jpg" alt="OpenAi logo" src="https://cdn.mos.cms.futurecdn.net/AnPQbbV754ubEA9wMwz62Y-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>The conference room in question seems to have been an important one. The Department of Justice explains:</p><p>"According to the complaint, meetings in the executive conference room where Recording Device 1 was discovered frequently involved discussions of highly confidential technical, commercial, and strategic information, including proprietary research, product plans, and business-development opportunities, as well as nonpublic information about Open AI’s technical progress and strategic decisions, capabilities, priorities, government engagements, and commercial relationships."</p><p>Various appendages of the state seem to be taking this very seriously. Which isn't surprising, of course, given AI development—no, I'm not calling it 'SI'—is deemed important to national security and prosperity.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="toD7dricW9DJqnsPdwk9XH" name="GettyImages-1464768424.jpg" alt="An FBI agent using a comuter." src="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" mos="" align="middle" fullscreen="" width="2121" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Urbazon via Getty Images)</span></figcaption></figure><p>Director of National Intelligence Jay Clayton said: "This serious situation underscores why winning the global super intelligence race is a national security prerogative... The intelligence community remains committed to safeguarding America’s cutting-edge intellectual property from foreign threats."</p><p>US Attorney Craig H. Missakian for the Northern District of California seems to agree: "For us it is a matter of national security. This arrest highlights our relentless efforts in partnership with the FBI to identify and prosecute those who seek to steal our technology, as alleged in the complaint."</p><p>My question, however, is this: If the allegations are true, would Alfozan have been able to do this without the use of an AI chatbot? Snakes and tails, and all that.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/openai-employee-arrested-for-allegedly-using-ai-and-toilet-paper-to-record-confidential-meetings-fbi-director-kash-patel-jumps-at-the-chance-to-say-ai-companies-are-essential-for-national-security/</link>
                                                                            <description>
                            <![CDATA[ AI and toilet paper: the joke writes itself, doesn't it? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2cTFNtAo3vRi9PFKdx8ugc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QR6m22LLbKJ3yYZ6NXmaNJ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 14 Oct 2026 11:43:43 +0000</pubDate>                                                                                                                                <updated>Wed, 14 Oct 2026 13:35:10 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/QR6m22LLbKJ3yYZ6NXmaNJ-1920-80.png">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Spy at the mic.]]></media:description>                                                            <media:text><![CDATA[Spy at the mic.]]></media:text>
                                <media:title type="plain"><![CDATA[Spy at the mic.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QR6m22LLbKJ3yYZ6NXmaNJ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>An OpenAI engineer has been arrested and charged for using (or endeavoring to use) an audio recording device to spy on confidential company communications. That's <a href="https://www.justice.gov/opa/pr/saudi-national-arrested-installing-surreptitious-audio-recording-device-openai" target="_blank">according to the US Department of Justice</a>, and while commercial espionage is nothing new, there's a certain sardonic twist to this one: it seems the accused employee did so with the help of AI. Oh, and some toilet paper.</p><p>According to FBI director Kash Patel's summary of the complaint, Saudi Arabian national Abdulrahman Alfozan "allegedly concealed a covert recording device inside his employer’s executive conference room to secretly capture sensitive communications about the company’s super intelligence technology."</p><p>In case you hadn't heard, that's <a href="https://www.pcgamer.com/software/ai/the-americans-have-officially-renamed-artificial-intelligence-to-super-intelligence-which-should-fix-everything/" target="_blank">what the US bigwigs are calling AI</a> now: superintelligence. Courtesy of President Trump, of course, who said last month that the Administration will use this term in place of artificial intelligence "in any applicable setting."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async></script><p>The FBI director also said, "Protecting American SI innovation is essential to safeguarding our nation’s economic strength and national security, and the FBI views that mission as one of our highest counterintelligence priorities."</p><p>The complaint says that Alfozan had worked for OpenAI since July 2025 as an engineer, and at the end of last month OpenAI discovered a USB audio recording device plugged into a conference room TV. According to the Justice Department, the device, which had been installed for a couple of days before discovery, was "concealed in toilet paper."</p><p>The complaint also alleges that Alfozans' spouse's "chatbot" account (no mention of whether that's a ChatGPT account or something else) submitted prompts related to things such as "build[ing] a continuous audio recorder", "improv[ing] audio and live listening", and "encrypt[ing] the SD card." There were allegedly also prompts relating to the specific recording device that was found.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AnPQbbV754ubEA9wMwz62Y" name="GettyImages-1252639606.jpg" alt="OpenAi logo" src="https://cdn.mos.cms.futurecdn.net/AnPQbbV754ubEA9wMwz62Y-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>The conference room in question seems to have been an important one. The Department of Justice explains:</p><p>"According to the complaint, meetings in the executive conference room where Recording Device 1 was discovered frequently involved discussions of highly confidential technical, commercial, and strategic information, including proprietary research, product plans, and business-development opportunities, as well as nonpublic information about Open AI’s technical progress and strategic decisions, capabilities, priorities, government engagements, and commercial relationships."</p><p>Various appendages of the state seem to be taking this very seriously. Which isn't surprising, of course, given AI development—no, I'm not calling it 'SI'—is deemed important to national security and prosperity.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="toD7dricW9DJqnsPdwk9XH" name="GettyImages-1464768424.jpg" alt="An FBI agent using a comuter." src="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" mos="" align="middle" fullscreen="" width="2121" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Urbazon via Getty Images)</span></figcaption></figure><p>Director of National Intelligence Jay Clayton said: "This serious situation underscores why winning the global super intelligence race is a national security prerogative... The intelligence community remains committed to safeguarding America’s cutting-edge intellectual property from foreign threats."</p><p>US Attorney Craig H. Missakian for the Northern District of California seems to agree: "For us it is a matter of national security. This arrest highlights our relentless efforts in partnership with the FBI to identify and prosecute those who seek to steal our technology, as alleged in the complaint."</p><p>My question, however, is this: If the allegations are true, would Alfozan have been able to do this without the use of an AI chatbot? Snakes and tails, and all that.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ '123456' password was all a hacker reportedly needed to expose over 8 million people's personal data ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Please, please, <em>please </em>do not use '123456' as any kind of password. I know that may seem obvious, but apparently it bears repeating if a recent hack of Denmark's Central Register of Persons (CPR) is anything to go by.</p><p>To recap, the CPR administration said earlier this month that <a href="https://www.ft.dk/samling/20252/almdel/ERU/bilag/141/3195698.pdf" target="_blank">it had become aware of a breach that took place in September</a> (PDF warning). This exposed personal details—names, addresses, ID numbers—of 8.8 million people, both living and deceased. It was confirmed at the time that the legitimate access of a private Danish firm had been exploited by the attacker.</p><p>A person claiming responsibility for the attack has come forward this week. Not only that, they say that they gained access to the CPR via an account which had the password '123456'. <a href="https://politiken.dk/danmark/art11016363/%C2%BBOh-my-god%C2%AB-Fynsk-virksomhed-havde-mindst-tre-profiler-med-adgangskoden-123456" target="_blank">According to Danish newspaper Politiken</a>, this was one of three accounts held by the private firm with that same password. One of these was an administrator account. Talk about a cybersecurity boo-boo.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async></script><p>The self-identified attacker claims they have no intention of leaking or selling the data they lifted, so that's something. Still, we're left with the uncomfortable reminder that those who should know better don't always have the best password management. </p><p>The Danish firm at the heart of this attack has been identified as Pays ApS. This company was granted access to the CPR in order to provide various services, like validating business customers' records.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SM8hnsh8PPqNMXUJSPvVmW" name="AMD Hack Password.jpg" alt="Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg" src="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chris Ratcliffe/Bloomberg via Getty Images)</span></figcaption></figure><p>The self-identified attacker gained access to the Pays ApS account on September 10, and <a href="https://nyheder.tv2.dk/business/2026-10-09-nye-detaljer-om-cpr-skandale-hacker-var-over-alle-bjerge" target="_blank">then ran 14 million automated searches of the CPR between then and September 20</a>. The attack was only discovered on October 2 when an employee at the Ministry of Research, Education and Digitalisation noticed an unusually high invoice, which indicated that many more searches than the norm were being made by Pays ApS.</p><p>Hackers are all too aware of the most common passwords, with '<a href="https://www.pcgamer.com/hardware/please-change-your-password-NordPass-2024-list/" target="_blank">123456' often bafflingly popular among them</a>. Bottom line, now might be a good time to update your passwords to something uniquely yours or to otherwise investigate password tools (though <a href="https://www.pcgamer.com/hardware/three-of-the-biggest-password-managers-are-vulnerable-to-a-cornucopia-of-practical-attacks-say-security-researchers/" target="_blank">not even something like a password manager is completely air tight</a>).</p><p>Not every hacker is rocking <a href="https://www.pcgamer.com/software/security/heres-how-long-it-would-take-12-rtx-5090-gpus-to-crack-your-password-and-a-reminder-that-just-adding-more-characters-still-works/" target="_blank">a password cracking rig with 12 Nvidia GeForce RTX 5090s</a>—for instance, I was particularly charmed by the password-cracking Game Boy Advance that is '<a href="https://www.pcgamer.com/hardware/developer-creates-a-password-cracking-game-boy-advance-that-is-about-thirty-million-times-slower-than-a-modern-cracking-rig/" target="_blank">about thirty million times slower than a modern cracking rig</a>'. But if your password is '123456', a hacker won't need hardware any more dedicated than their brain to crack open your account like a coconut.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/123456-password-was-all-a-hacker-reportedly-needed-to-expose-over-8-million-peoples-personal-data/</link>
                                                                            <description>
                            <![CDATA[ A department where just a little bit of creativity doesn't go amiss. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TKeHXHj7LnrymiWPgPEBNd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kyqfVawE8Jd6vdF4JkwnuD-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 14 Oct 2026 10:56:42 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kyqfVawE8Jd6vdF4JkwnuD-1920-80.jpg">
                                                            <media:credit><![CDATA[CD Projekt Red]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Cyberpunk 2077 Phantom Liberty hacker]]></media:description>                                                            <media:text><![CDATA[Cyberpunk 2077 Phantom Liberty hacker]]></media:text>
                                <media:title type="plain"><![CDATA[Cyberpunk 2077 Phantom Liberty hacker]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kyqfVawE8Jd6vdF4JkwnuD-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Please, please, <em>please </em>do not use '123456' as any kind of password. I know that may seem obvious, but apparently it bears repeating if a recent hack of Denmark's Central Register of Persons (CPR) is anything to go by.</p><p>To recap, the CPR administration said earlier this month that <a href="https://www.ft.dk/samling/20252/almdel/ERU/bilag/141/3195698.pdf" target="_blank">it had become aware of a breach that took place in September</a> (PDF warning). This exposed personal details—names, addresses, ID numbers—of 8.8 million people, both living and deceased. It was confirmed at the time that the legitimate access of a private Danish firm had been exploited by the attacker.</p><p>A person claiming responsibility for the attack has come forward this week. Not only that, they say that they gained access to the CPR via an account which had the password '123456'. <a href="https://politiken.dk/danmark/art11016363/%C2%BBOh-my-god%C2%AB-Fynsk-virksomhed-havde-mindst-tre-profiler-med-adgangskoden-123456" target="_blank">According to Danish newspaper Politiken</a>, this was one of three accounts held by the private firm with that same password. One of these was an administrator account. Talk about a cybersecurity boo-boo.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async></script><p>The self-identified attacker claims they have no intention of leaking or selling the data they lifted, so that's something. Still, we're left with the uncomfortable reminder that those who should know better don't always have the best password management. </p><p>The Danish firm at the heart of this attack has been identified as Pays ApS. This company was granted access to the CPR in order to provide various services, like validating business customers' records.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SM8hnsh8PPqNMXUJSPvVmW" name="AMD Hack Password.jpg" alt="Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg" src="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chris Ratcliffe/Bloomberg via Getty Images)</span></figcaption></figure><p>The self-identified attacker gained access to the Pays ApS account on September 10, and <a href="https://nyheder.tv2.dk/business/2026-10-09-nye-detaljer-om-cpr-skandale-hacker-var-over-alle-bjerge" target="_blank">then ran 14 million automated searches of the CPR between then and September 20</a>. The attack was only discovered on October 2 when an employee at the Ministry of Research, Education and Digitalisation noticed an unusually high invoice, which indicated that many more searches than the norm were being made by Pays ApS.</p><p>Hackers are all too aware of the most common passwords, with '<a href="https://www.pcgamer.com/hardware/please-change-your-password-NordPass-2024-list/" target="_blank">123456' often bafflingly popular among them</a>. Bottom line, now might be a good time to update your passwords to something uniquely yours or to otherwise investigate password tools (though <a href="https://www.pcgamer.com/hardware/three-of-the-biggest-password-managers-are-vulnerable-to-a-cornucopia-of-practical-attacks-say-security-researchers/" target="_blank">not even something like a password manager is completely air tight</a>).</p><p>Not every hacker is rocking <a href="https://www.pcgamer.com/software/security/heres-how-long-it-would-take-12-rtx-5090-gpus-to-crack-your-password-and-a-reminder-that-just-adding-more-characters-still-works/" target="_blank">a password cracking rig with 12 Nvidia GeForce RTX 5090s</a>—for instance, I was particularly charmed by the password-cracking Game Boy Advance that is '<a href="https://www.pcgamer.com/hardware/developer-creates-a-password-cracking-game-boy-advance-that-is-about-thirty-million-times-slower-than-a-modern-cracking-rig/" target="_blank">about thirty million times slower than a modern cracking rig</a>'. But if your password is '123456', a hacker won't need hardware any more dedicated than their brain to crack open your account like a coconut.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Your washing machine is subject to more safety rules than AI' says Microsoft president ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Microsoft president Brad Smith claims that AI is currently less regulated than the food we eat and the utilities we rely on. "Right now, your washing machine is subject to more safety rules than AI," Smith said, "Every carton of milk that you see in the grocery store is subject to safety rules and inspection." </p><p>Smith isn't just talking about the US either, calling for safety rules to be put in place globally. Smith called for various safety measures while speaking <a href="https://www.bbc.co.uk/sounds/play/p0pfy9cf" target="_blank">on the BBC's Big Boss podcast</a>, including a legal obligation to notify victims if their systems have been compromised by rogue AI agents. This would definitely be timely, given how <a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">OpenAI's agents hacked into Hugging Face</a> and were the source of various other '<a href="https://www.pcgamer.com/software/ai/openai-publicly-acknowledges-the-german-wiki-incident-weeks-after-first-finding-out-about-it/" target="_blank">incidents</a>' earlier this year.</p><p>Smith also advocated for "outside evaluators" to test AI products before release, and a "safety brake" for autonomous systems, describing AI as both a "tool and a weapon." These comments run counter to the sentiment of the US administration; President Trump's current strategy demonstrates little desire to pump the brakes, instead hoping to chart '<a href="https://www.pcgamer.com/software/ai/trumps-ai-action-plan-claims-to-chart-a-decisive-course-to-cement-us-dominance-in-artificial-intelligence/" target="_blank">a decisive course to cement US dominance in artificial intelligence</a>.'</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async></script><p>Last month, the US president issued <a href="https://www.pcgamer.com/software/ai/the-americans-have-officially-renamed-artificial-intelligence-to-super-intelligence-which-should-fix-everything/" target="_blank">an executive order that renames 'Artificial Intelligence' to 'Super Intelligence</a>.' Shortly before that, Trump Media partnered with AI search engine Perplexity to create Truth Search AI, in a bid to "<a href="https://www.pcgamer.com/software/ai/trump-media-and-perplexity-team-up-for-truth-search-ai-a-new-tool-in-the-fight-against-big-techs-assault-on-free-speech/" target="_blank">end Big Tech's assault on free speech</a>." All of that is to say, <a href="https://www.pcgamer.com/software/ai/oh-well-looks-like-the-next-4-years-are-going-to-be-an-ai-free-for-all-as-trump-nixes-biden-administrations-safety-order/" target="_blank">Trump appears to still be all-in on AI</a>.</p><p>Unsurprisingly, the Microsoft boss is looking to places beyond the US to lead the regulatory charge, saying, "Most people that I know would say, if you ask them, 'name the country that is the leader in having this technical capability,' they would say, 'it's very simple. It's the United Kingdom. They are the best.'"</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5120px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xMoG7mKtMPqphYvP3YEEoL" name="GettyImages-sb10065452k-001 Cropped.jpg" alt="UK, London, Big Ben and British flag." src="https://cdn.mos.cms.futurecdn.net/xMoG7mKtMPqphYvP3YEEoL-1920-80.jpg" mos="" align="middle" fullscreen="" width="5120" height="2880" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Travelpix Ltd via Getty Images)</span></figcaption></figure><p>The UK government established what is now known as the <a href="https://www.aisi.gov.uk/" target="_blank">AI Security Institute</a> back in 2023, apparently the first state-backed AI safety body of its kind. It's a weird thing to feel anything like national pride over, but this Brit will take it—alongside the reminder that we've seen about three different Prime Ministers enter 10 Downing Street since the institute was established such a relatively short time ago.</p><p>Anyway, as for the wider AI industry, it's not just Brad Smith advising caution. Back in September, an ex-Anthropic and OpenAI researcher made the attention grabbing claim that <a href="https://www.pcgamer.com/software/ai/ex-anthropic-researcher-argues-ai-progress-could-kill-us-all-by-the-end-of-the-decade-and-progress-is-not-slowing/" target="_blank">AI developments "could kill us all by the end of the decade</a>." Around the same time, Anthropic boss Dario Amodei made more measured calls for<a href="https://darioamodei.com/post/we-must-pace-the-frontier" target="_blank"> AI development to slow down</a>. </p><p>Similarly to Smith's suggestions, Amodei also outlined the need for "embedded evaluators who have employee-like access to verify safety practices and report incidents." Since then, executives from Nvidia, Google, OpenAI, Anthropic, Meta, and SpaceX all agreed to work with independent auditors as part of signing <a href="https://www.bbc.co.uk/news/articles/cme30dz5vkzko" target="_blank">White House Accord on Super Intelligence</a>. Brad Smith says Microsoft would be "happy to sign it," describing the Accord as "a good step."</p><p>However, Smith was also cautious about the document's emphasis on self-regulation. He said, "The good companies will do what you want. It's the companies that are not as responsible that you need to worry about."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/your-washing-machine-is-subject-to-more-safety-rules-than-ai-says-microsoft-president/</link>
                                                                            <description>
                            <![CDATA[ When the call for external regulation is coming from inside AI's house, you know it's serious. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rk9xjtFXR6HmHn7igd29wh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/d5UvepN9xcPy68xoLQBH93-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 12 Oct 2026 11:42:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/d5UvepN9xcPy68xoLQBH93-1920-80.jpg">
                                                            <media:credit><![CDATA[Tierney L. Cross/Bloomberg via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Brad Smith, president of Microsoft Corp., during a House Homeland Security Committee hearing in Washington, DC, US, on Thursday, June 13, 2024.]]></media:description>                                                            <media:text><![CDATA[Brad Smith, president of Microsoft Corp., during a House Homeland Security Committee hearing in Washington, DC, US, on Thursday, June 13, 2024.]]></media:text>
                                <media:title type="plain"><![CDATA[Brad Smith, president of Microsoft Corp., during a House Homeland Security Committee hearing in Washington, DC, US, on Thursday, June 13, 2024.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/d5UvepN9xcPy68xoLQBH93-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Microsoft president Brad Smith claims that AI is currently less regulated than the food we eat and the utilities we rely on. "Right now, your washing machine is subject to more safety rules than AI," Smith said, "Every carton of milk that you see in the grocery store is subject to safety rules and inspection." </p><p>Smith isn't just talking about the US either, calling for safety rules to be put in place globally. Smith called for various safety measures while speaking <a href="https://www.bbc.co.uk/sounds/play/p0pfy9cf" target="_blank">on the BBC's Big Boss podcast</a>, including a legal obligation to notify victims if their systems have been compromised by rogue AI agents. This would definitely be timely, given how <a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">OpenAI's agents hacked into Hugging Face</a> and were the source of various other '<a href="https://www.pcgamer.com/software/ai/openai-publicly-acknowledges-the-german-wiki-incident-weeks-after-first-finding-out-about-it/" target="_blank">incidents</a>' earlier this year.</p><p>Smith also advocated for "outside evaluators" to test AI products before release, and a "safety brake" for autonomous systems, describing AI as both a "tool and a weapon." These comments run counter to the sentiment of the US administration; President Trump's current strategy demonstrates little desire to pump the brakes, instead hoping to chart '<a href="https://www.pcgamer.com/software/ai/trumps-ai-action-plan-claims-to-chart-a-decisive-course-to-cement-us-dominance-in-artificial-intelligence/" target="_blank">a decisive course to cement US dominance in artificial intelligence</a>.'</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async></script><p>Last month, the US president issued <a href="https://www.pcgamer.com/software/ai/the-americans-have-officially-renamed-artificial-intelligence-to-super-intelligence-which-should-fix-everything/" target="_blank">an executive order that renames 'Artificial Intelligence' to 'Super Intelligence</a>.' Shortly before that, Trump Media partnered with AI search engine Perplexity to create Truth Search AI, in a bid to "<a href="https://www.pcgamer.com/software/ai/trump-media-and-perplexity-team-up-for-truth-search-ai-a-new-tool-in-the-fight-against-big-techs-assault-on-free-speech/" target="_blank">end Big Tech's assault on free speech</a>." All of that is to say, <a href="https://www.pcgamer.com/software/ai/oh-well-looks-like-the-next-4-years-are-going-to-be-an-ai-free-for-all-as-trump-nixes-biden-administrations-safety-order/" target="_blank">Trump appears to still be all-in on AI</a>.</p><p>Unsurprisingly, the Microsoft boss is looking to places beyond the US to lead the regulatory charge, saying, "Most people that I know would say, if you ask them, 'name the country that is the leader in having this technical capability,' they would say, 'it's very simple. It's the United Kingdom. They are the best.'"</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5120px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xMoG7mKtMPqphYvP3YEEoL" name="GettyImages-sb10065452k-001 Cropped.jpg" alt="UK, London, Big Ben and British flag." src="https://cdn.mos.cms.futurecdn.net/xMoG7mKtMPqphYvP3YEEoL-1920-80.jpg" mos="" align="middle" fullscreen="" width="5120" height="2880" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Travelpix Ltd via Getty Images)</span></figcaption></figure><p>The UK government established what is now known as the <a href="https://www.aisi.gov.uk/" target="_blank">AI Security Institute</a> back in 2023, apparently the first state-backed AI safety body of its kind. It's a weird thing to feel anything like national pride over, but this Brit will take it—alongside the reminder that we've seen about three different Prime Ministers enter 10 Downing Street since the institute was established such a relatively short time ago.</p><p>Anyway, as for the wider AI industry, it's not just Brad Smith advising caution. Back in September, an ex-Anthropic and OpenAI researcher made the attention grabbing claim that <a href="https://www.pcgamer.com/software/ai/ex-anthropic-researcher-argues-ai-progress-could-kill-us-all-by-the-end-of-the-decade-and-progress-is-not-slowing/" target="_blank">AI developments "could kill us all by the end of the decade</a>." Around the same time, Anthropic boss Dario Amodei made more measured calls for<a href="https://darioamodei.com/post/we-must-pace-the-frontier" target="_blank"> AI development to slow down</a>. </p><p>Similarly to Smith's suggestions, Amodei also outlined the need for "embedded evaluators who have employee-like access to verify safety practices and report incidents." Since then, executives from Nvidia, Google, OpenAI, Anthropic, Meta, and SpaceX all agreed to work with independent auditors as part of signing <a href="https://www.bbc.co.uk/news/articles/cme30dz5vkzko" target="_blank">White House Accord on Super Intelligence</a>. Brad Smith says Microsoft would be "happy to sign it," describing the Accord as "a good step."</p><p>However, Smith was also cautious about the document's emphasis on self-regulation. He said, "The good companies will do what you want. It's the companies that are not as responsible that you need to worry about."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't fear the BIOS update: Asus has just fixed a local access vulnerability affecting older Intel motherboards ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'll be honest: BIOS updates give me the willies. Unfortunately, even as such a source of undue anxiety, they are still well worth staying on top of. Case in point, the latest BIOS update from Asus addresses a vulnerability found in motherboards for 8th and 9th Gen Intel chips.</p><p>The vulnerability in question is described as "Improper initialization in an ASUS certain motherboard [sic] allows an physically proximate user to read or write arbitrary memory by inserting a specially crafted device." Basically, a bad actor would need to be in the same room as an affected PC to exploit this vulnerability. Even though local access is required, it's still a pretty serious issue.</p><p>Designated <a href="https://www.cve.org/CVERecord?id=CVE-2026-93495" target="_blank">CVE-2026-93495</a>, the issue has a high severity score of 7.0. As such, <a href="https://www.asus.com/security-advisory/" target="_blank">Asus has issued a security bulletin earlier today</a> saying it "strongly recommends updating to the latest version" of the BIOS for a list of affected motherboards.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>The affected motherboards include a number of ROG Strix and ROG Maximus models. I've included the full list of models, plus the fixed BIOS update that Asus recommends downloading, below:</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Motherboard Model</strong></p></td><td  ><p><strong>Affected BIOS Version</strong></p></td><td  ><p><strong>Fixed BIOS Version</strong></p></td></tr><tr><td class="firstcol " ><p>PRIME Z390-A</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>PRIME Z390-A/H10</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI HERO</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI HERO (WI-FI)</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI FORMULA</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI CODE</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI EXTREME</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI APEX</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI GENE</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG STRIX Z390-E GAMING</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG STRIX Z390-F GAMING</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>Pro WS C246-ACE</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>WS Z390 PRO</p></td><td  ><p>through 1401</p></td><td  ><p>1502</p></td></tr></tbody></table></div><p>You can download the relevant updates from <a href="https://www.asus.com/uk/support/download-center/" target="_blank">the Asus support site here</a>. Asus also has a handy guide for <a href="https://www.asus.com/support/faq/1008276/" target="_blank">how to update the BIOS in Windows here</a>. Users of Asus Armory Crate and similar software tools may also want to make sure they're not missing out on any recent updates, <a href="https://www.pcgamer.com/software/security/its-time-to-update-asus-armoury-crate-and-several-other-asus-software-tools-again-as-another-high-severity-security-vulnerability-has-been-discovered/" target="_blank">as another high severity security vulnerability was discovered back in August</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/motherboards/dont-fear-the-bios-update-asus-has-just-fixed-a-local-access-vulnerability-affecting-older-intel-motherboards/</link>
                                                                            <description>
                            <![CDATA[ To be clear, it's only older motherboards for 8th and 9th Gen Intel CPUs that are affected by the issue. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pjUwGfSR35aCvRABhZJ3JU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/H8BGJ6WpBoFkHc7vvtYoPd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 14:47:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Motherboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/H8BGJ6WpBoFkHc7vvtYoPd-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A photo of a gaming monitor displaying the new Asus BIOS page in 1080p. ]]></media:description>                                                            <media:text><![CDATA[A photo of a gaming monitor displaying the new Asus BIOS page in 1080p. ]]></media:text>
                                <media:title type="plain"><![CDATA[A photo of a gaming monitor displaying the new Asus BIOS page in 1080p. ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/H8BGJ6WpBoFkHc7vvtYoPd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'll be honest: BIOS updates give me the willies. Unfortunately, even as such a source of undue anxiety, they are still well worth staying on top of. Case in point, the latest BIOS update from Asus addresses a vulnerability found in motherboards for 8th and 9th Gen Intel chips.</p><p>The vulnerability in question is described as "Improper initialization in an ASUS certain motherboard [sic] allows an physically proximate user to read or write arbitrary memory by inserting a specially crafted device." Basically, a bad actor would need to be in the same room as an affected PC to exploit this vulnerability. Even though local access is required, it's still a pretty serious issue.</p><p>Designated <a href="https://www.cve.org/CVERecord?id=CVE-2026-93495" target="_blank">CVE-2026-93495</a>, the issue has a high severity score of 7.0. As such, <a href="https://www.asus.com/security-advisory/" target="_blank">Asus has issued a security bulletin earlier today</a> saying it "strongly recommends updating to the latest version" of the BIOS for a list of affected motherboards.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>The affected motherboards include a number of ROG Strix and ROG Maximus models. I've included the full list of models, plus the fixed BIOS update that Asus recommends downloading, below:</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Motherboard Model</strong></p></td><td  ><p><strong>Affected BIOS Version</strong></p></td><td  ><p><strong>Fixed BIOS Version</strong></p></td></tr><tr><td class="firstcol " ><p>PRIME Z390-A</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>PRIME Z390-A/H10</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI HERO</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI HERO (WI-FI)</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI FORMULA</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI CODE</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI EXTREME</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI APEX</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG MAXIMUS XI GENE</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG STRIX Z390-E GAMING</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>ROG STRIX Z390-F GAMING</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>Pro WS C246-ACE</p></td><td  ><p>through 2101</p></td><td  ><p>2203</p></td></tr><tr><td class="firstcol " ><p>WS Z390 PRO</p></td><td  ><p>through 1401</p></td><td  ><p>1502</p></td></tr></tbody></table></div><p>You can download the relevant updates from <a href="https://www.asus.com/uk/support/download-center/" target="_blank">the Asus support site here</a>. Asus also has a handy guide for <a href="https://www.asus.com/support/faq/1008276/" target="_blank">how to update the BIOS in Windows here</a>. Users of Asus Armory Crate and similar software tools may also want to make sure they're not missing out on any recent updates, <a href="https://www.pcgamer.com/software/security/its-time-to-update-asus-armoury-crate-and-several-other-asus-software-tools-again-as-another-high-severity-security-vulnerability-has-been-discovered/" target="_blank">as another high severity security vulnerability was discovered back in August</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Pentagon says 'hold my beer,' falls victim to massive data breach affecting roughly 3,000,000 people ]]></title>
                                                                                                <dc:content><![CDATA[ <p>After the <a href="https://www.pcgamer.com/software/security/we-hacked-the-fbi-says-previous-rockstar-breaching-hacking-group-we-hold-data-on-all-fbi-employees-and-applicants/" target="_blank">FBI data breach</a> we reported on last week, in which a hacking group claimed it had stolen data on "all FBI employees", a US defence official has confirmed that the Pentagon also fell victim to a cybersecurity breach. Except this one appears to be much larger, lasted for longer, and is potentially very worrying for many civilian US government employees and serving military personnel alike.</p><p><a href="https://abcnews.com/Politics/pentagon-breach-exposed-sensitive-data-3-million-people/story?id=136832909" target="_blank">According to ABC News</a>, the official said that the "Defense Manpower Data Center (DMDC) information system experienced unauthorized access of personally identifiable information by a small number of unauthorized users between October 2025 and July 2026."</p><p>The <a href="https://dwp.dmdc.osd.mil/dwp/app/main" target="_blank">DMDC</a> is one of the Pentagon's main data repositories for personnel records, including info on active-duty and reserve troops, alongside civilian employees, contractors, and military veterans. All told, the breach is said to affect 2.76 million living people, and around 294,000 who are deceased.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>Once the unauthorized access was discovered, the DMDC "immediately remediated the vulnerability." The data is said to have included Social Security numbers and details about military and civilian job positions, but defence officials say they've found no evidence so far that the exposed information was misused. </p><p>It could have been worse. The DMDC is said to hold records on <a href="https://www.bitdefender.com/en-us/blog/hotforsecurity/pentagon-personnel-database-breach-personal-data-millions#:~:text=The%20DMDC%20holds%20more%20than%2060%20million%20records%20on%20military%20troops%2C%20civilian%20employees%2C%20contractors%2C%20retirees%2C%20veterans%20and%20families%20of%20those%20who%20have%20served%20in%20the%20forces.%20So%2C%20the%20fact%20that%20only%20around%20one%20in%20twenty%20of%20the%20records%20held%20by%20the%20DMDC%20were%20exposed%20by%20the%20breach%20is%20some%20consolation." target="_blank">more than 60 million people</a>, so the three million affected figure would amount to around one in twenty of the total individual records breached. Still, <a href="https://edition.cnn.com/2026/09/25/politics/pentagon-data-personnel-breach" target="_blank">CNN reports that the "occupational specialty" of military service members was accessed</a>, which, when combined with Social Security numbers, could allow foreign adversaries to get a better idea of the deployment and purposes of US operatives around the world.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mFkytw2xMwt8YqnsfRjQj4" name="GettyImages-1706985510-1920x1080size.jpg" alt="A stylised photograph of a person acting as a hacker, break into servers and infecting them with a virus, as show by computer monitors displaying green text and codes Their System with a Virus" src="https://cdn.mos.cms.futurecdn.net/mFkytw2xMwt8YqnsfRjQj4-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Witthaya Prasongsin via Getty Images)</span></figcaption></figure><p>According to the outlet, the stolen data was not encrypted, which means it would be relatively trivial to cross-reference it with other leaked info. It seems that no hacking group has yet claimed public responsibility for the breach.</p><p>Still, it looks like hackers have managed to successfully breach two bastions of US government information over the past year or so, which may represent a marked escalation in their capabilities. Will 2026 be remembered as the year of the US government-bothering hacker? I guess we've got a few more months to find out.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/the-pentagon-says-hold-my-beer-falls-victim-to-massive-data-breach-affecting-roughly-3-000-000-people/</link>
                                                                            <description>
                            <![CDATA[ We'll show the FBI what a hack looks like. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">t2doHv7rJG8qKscAiPHg7k</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/m7SuLQn4f6yHHBh2WJXQKc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 13:49:19 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 13:49:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/m7SuLQn4f6yHHBh2WJXQKc-1920-80.jpg">
                                                            <media:credit><![CDATA[Staff/AFP/Stringer via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[This picture taken 26 December 2011 shows the Pentagon building in Washington, DC. The Pentagon, which is the headquarters of the United States Department of Defense (DOD), is the world&#039;s largest office building by floor area, with about 6,500,000 sq ft (600,000 m2), of which 3,700,000 sq ft (340,000 m2) are used as offices. Approximately 23,000 military and civilian employees and about 3,000 non-defense support personnel work in the Pentagon. AFP PHOTO (Photo by STAFF / AFP) (Photo by STAFF/AFP via Getty Images)]]></media:description>                                                            <media:text><![CDATA[This picture taken 26 December 2011 shows the Pentagon building in Washington, DC. The Pentagon, which is the headquarters of the United States Department of Defense (DOD), is the world&#039;s largest office building by floor area, with about 6,500,000 sq ft (600,000 m2), of which 3,700,000 sq ft (340,000 m2) are used as offices. Approximately 23,000 military and civilian employees and about 3,000 non-defense support personnel work in the Pentagon. AFP PHOTO (Photo by STAFF / AFP) (Photo by STAFF/AFP via Getty Images)]]></media:text>
                                <media:title type="plain"><![CDATA[This picture taken 26 December 2011 shows the Pentagon building in Washington, DC. The Pentagon, which is the headquarters of the United States Department of Defense (DOD), is the world&#039;s largest office building by floor area, with about 6,500,000 sq ft (600,000 m2), of which 3,700,000 sq ft (340,000 m2) are used as offices. Approximately 23,000 military and civilian employees and about 3,000 non-defense support personnel work in the Pentagon. AFP PHOTO (Photo by STAFF / AFP) (Photo by STAFF/AFP via Getty Images)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/m7SuLQn4f6yHHBh2WJXQKc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>After the <a href="https://www.pcgamer.com/software/security/we-hacked-the-fbi-says-previous-rockstar-breaching-hacking-group-we-hold-data-on-all-fbi-employees-and-applicants/" target="_blank">FBI data breach</a> we reported on last week, in which a hacking group claimed it had stolen data on "all FBI employees", a US defence official has confirmed that the Pentagon also fell victim to a cybersecurity breach. Except this one appears to be much larger, lasted for longer, and is potentially very worrying for many civilian US government employees and serving military personnel alike.</p><p><a href="https://abcnews.com/Politics/pentagon-breach-exposed-sensitive-data-3-million-people/story?id=136832909" target="_blank">According to ABC News</a>, the official said that the "Defense Manpower Data Center (DMDC) information system experienced unauthorized access of personally identifiable information by a small number of unauthorized users between October 2025 and July 2026."</p><p>The <a href="https://dwp.dmdc.osd.mil/dwp/app/main" target="_blank">DMDC</a> is one of the Pentagon's main data repositories for personnel records, including info on active-duty and reserve troops, alongside civilian employees, contractors, and military veterans. All told, the breach is said to affect 2.76 million living people, and around 294,000 who are deceased.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgvPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgvPX.js" async></script><p>Once the unauthorized access was discovered, the DMDC "immediately remediated the vulnerability." The data is said to have included Social Security numbers and details about military and civilian job positions, but defence officials say they've found no evidence so far that the exposed information was misused. </p><p>It could have been worse. The DMDC is said to hold records on <a href="https://www.bitdefender.com/en-us/blog/hotforsecurity/pentagon-personnel-database-breach-personal-data-millions#:~:text=The%20DMDC%20holds%20more%20than%2060%20million%20records%20on%20military%20troops%2C%20civilian%20employees%2C%20contractors%2C%20retirees%2C%20veterans%20and%20families%20of%20those%20who%20have%20served%20in%20the%20forces.%20So%2C%20the%20fact%20that%20only%20around%20one%20in%20twenty%20of%20the%20records%20held%20by%20the%20DMDC%20were%20exposed%20by%20the%20breach%20is%20some%20consolation." target="_blank">more than 60 million people</a>, so the three million affected figure would amount to around one in twenty of the total individual records breached. Still, <a href="https://edition.cnn.com/2026/09/25/politics/pentagon-data-personnel-breach" target="_blank">CNN reports that the "occupational specialty" of military service members was accessed</a>, which, when combined with Social Security numbers, could allow foreign adversaries to get a better idea of the deployment and purposes of US operatives around the world.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mFkytw2xMwt8YqnsfRjQj4" name="GettyImages-1706985510-1920x1080size.jpg" alt="A stylised photograph of a person acting as a hacker, break into servers and infecting them with a virus, as show by computer monitors displaying green text and codes Their System with a Virus" src="https://cdn.mos.cms.futurecdn.net/mFkytw2xMwt8YqnsfRjQj4-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Witthaya Prasongsin via Getty Images)</span></figcaption></figure><p>According to the outlet, the stolen data was not encrypted, which means it would be relatively trivial to cross-reference it with other leaked info. It seems that no hacking group has yet claimed public responsibility for the breach.</p><p>Still, it looks like hackers have managed to successfully breach two bastions of US government information over the past year or so, which may represent a marked escalation in their capabilities. Will 2026 be remembered as the year of the US government-bothering hacker? I guess we've got a few more months to find out.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'We hacked the FBI' says previous Rockstar-breaching hacking group: 'We hold data on all FBI employees and applicants' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>High-profile hacking group ShinyHunters (the very same group that <a href="https://www.pcgamer.com/games/grand-theft-auto/hackers-demand-ransom-from-gta6-studio-rockstar-threaten-to-leak-stolen-data/" target="_blank">demanded a ransom from GTA 6 developer Rockstar Games</a> earlier this year) has now claimed it's managed to breach the internal databases of the US Federal Bureau of Investigations. </p><p><a href="https://www.404media.co/we-hacked-the-fbi-hackers-say-they-have-data-on-all-fbi-employees/" target="_blank">Speaking to 404 Media</a>, a representative of the group said that it now holds data on "all" FBI employees and applicants, while a sample provided to the outlet appears to contain the personal data of 5,000 FBI employees.</p><p>According to 404, the data includes addresses, phone numbers, dates of birth, and "in some cases details on their spouse." Reuters was also shown a data sample by the group, and says it was <a href="https://www.reuters.com/world/shinyhunters-hackers-say-they-breached-federal-bureau-investigation-no-immediate-2026-09-22/#:~:text=Reuters%20was,cases" target="_blank">able to partially verify the leaked info</a> by running the details against existing social security numbers, credit bureau records, and previously breached data—including info on current FBI director Kash Patel.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script><p>The FBI jobs website was also defaced as part of the hack, showing a message that said "this site has been seized by ShinyHunters," mimicking the message commonly seen on seized cybercriminal pages after an FBI raid. </p><p>"All FBI data was compromised including PII/PHI on incumbent and former FBI employees and all applicant information. We have a lot more than we claim here," the since-removed message is said to have continued. The site currently informs users that it's "<a href="https://apply.fbijobs.gov/" target="_blank">down for maintenance</a>."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="toD7dricW9DJqnsPdwk9XH" name="GettyImages-1464768424.jpg" alt="An FBI agent using a comuter." src="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" mos="" align="middle" fullscreen="" width="2121" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Urbazon via Getty Images)</span></figcaption></figure><p>In reaction to the leak, an FBI spokesperson told 404: "The FBI is aware of claims regarding unauthorized activity affecting FBIjobs.gov and is currently investigating."</p><p>As for what would cause a hacking group to target one of the biggest fish in the cybersecurity pond, the same ShinyHunters representative claimed the attack was not financially motivated, and that what they plan to do with the info is "not something I’d call extortion, maybe coercion."</p><p>The attack appears to be in response to <a href="https://www.ic3.gov/PSA/2026/PSA260515" target="_blank">a previously published FBI report</a>, which claimed that ShinyHunters exaggerates its access to sensitive data to prompt payment from victims, and uses multiple methods of extortion including "harassment strategies, sending threatening text messages and phone calls to victims and their family members, and in some cases, swatting." </p><p>404 Media reports a post on the ShinyHunters website denouncing the allegations as false, and giving the FBI "a time of one week" to correct or remove the information. What happens after that is unclear, but it sure feels like there's an "or else" looming over the top.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/we-hacked-the-fbi-says-previous-rockstar-breaching-hacking-group-we-hold-data-on-all-fbi-employees-and-applicants/</link>
                                                                            <description>
                            <![CDATA[ The status of the Gibson is currently unknown. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">g7aKU9yPgtqg2GAkoVDMyV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9Pu997rJdeG8ReYNpFBTJP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 15:11:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9Pu997rJdeG8ReYNpFBTJP-1920-80.jpg">
                                                            <media:credit><![CDATA[Warner Bros.]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Matrix Online hackers]]></media:description>                                                            <media:text><![CDATA[The Matrix Online hackers]]></media:text>
                                <media:title type="plain"><![CDATA[The Matrix Online hackers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9Pu997rJdeG8ReYNpFBTJP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>High-profile hacking group ShinyHunters (the very same group that <a href="https://www.pcgamer.com/games/grand-theft-auto/hackers-demand-ransom-from-gta6-studio-rockstar-threaten-to-leak-stolen-data/" target="_blank">demanded a ransom from GTA 6 developer Rockstar Games</a> earlier this year) has now claimed it's managed to breach the internal databases of the US Federal Bureau of Investigations. </p><p><a href="https://www.404media.co/we-hacked-the-fbi-hackers-say-they-have-data-on-all-fbi-employees/" target="_blank">Speaking to 404 Media</a>, a representative of the group said that it now holds data on "all" FBI employees and applicants, while a sample provided to the outlet appears to contain the personal data of 5,000 FBI employees.</p><p>According to 404, the data includes addresses, phone numbers, dates of birth, and "in some cases details on their spouse." Reuters was also shown a data sample by the group, and says it was <a href="https://www.reuters.com/world/shinyhunters-hackers-say-they-breached-federal-bureau-investigation-no-immediate-2026-09-22/#:~:text=Reuters%20was,cases" target="_blank">able to partially verify the leaked info</a> by running the details against existing social security numbers, credit bureau records, and previously breached data—including info on current FBI director Kash Patel.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script><p>The FBI jobs website was also defaced as part of the hack, showing a message that said "this site has been seized by ShinyHunters," mimicking the message commonly seen on seized cybercriminal pages after an FBI raid. </p><p>"All FBI data was compromised including PII/PHI on incumbent and former FBI employees and all applicant information. We have a lot more than we claim here," the since-removed message is said to have continued. The site currently informs users that it's "<a href="https://apply.fbijobs.gov/" target="_blank">down for maintenance</a>."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="toD7dricW9DJqnsPdwk9XH" name="GettyImages-1464768424.jpg" alt="An FBI agent using a comuter." src="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" mos="" align="middle" fullscreen="" width="2121" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Urbazon via Getty Images)</span></figcaption></figure><p>In reaction to the leak, an FBI spokesperson told 404: "The FBI is aware of claims regarding unauthorized activity affecting FBIjobs.gov and is currently investigating."</p><p>As for what would cause a hacking group to target one of the biggest fish in the cybersecurity pond, the same ShinyHunters representative claimed the attack was not financially motivated, and that what they plan to do with the info is "not something I’d call extortion, maybe coercion."</p><p>The attack appears to be in response to <a href="https://www.ic3.gov/PSA/2026/PSA260515" target="_blank">a previously published FBI report</a>, which claimed that ShinyHunters exaggerates its access to sensitive data to prompt payment from victims, and uses multiple methods of extortion including "harassment strategies, sending threatening text messages and phone calls to victims and their family members, and in some cases, swatting." </p><p>404 Media reports a post on the ShinyHunters website denouncing the allegations as false, and giving the FBI "a time of one week" to correct or remove the information. What happens after that is unclear, but it sure feels like there's an "or else" looming over the top.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Gigabyte admits an oopsie with Gigabyte Control Center software leaving kernel exposed to attackers ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you have a Gigabyte motherboard and use the Gigabyte Control Center (GCC) software, you'd better download the latest version of the software. While the risk of a local attacker hacking into your PC is pretty slim, it's best practice to just cover your butt before anything bad happens.</p><p>Gigabyte has listed a new vulnerability on its website that affects a pair of kernel drivers, GVCIDrv64.sys and gdrv3.sys. It says the drivers are components of the GCC software, which is widely recommended alongside the company's motherboards.</p><p>"The vulnerabilities exist in the kernel drivers' IOCTL interfaces." Gigabyte says of the cause of the vulnerability. "Due to insufficient access control and improper validation of input parameters, authenticated local attackers can perform unauthorized operations, including arbitrary physical memory mapping and direct hardware access.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script><p>An attacker can wield those vulnerable drivers through a "specially crafted" IOCTL request. In doing so, bypassing important memory protections and allowing them to elevate themselves to the most trusted level of your PC, the kernel.</p><p>Gigabyte thanks Mohamed Alzhrani (0xMaz) and Subhan Sultanov (me1n) for discovering the vulnerability and helping the patching effort. This comes at a time when <a href="https://www.phoronix.com/news/Intel-Bug-Bounty-Program-Ends" target="_blank">Intel is said to be ending its lucrative bug bounty program</a>. </p><p>There is a fix available. Any version of GCC from 26.08.28.01, GBT_VGA_26.08.24.01 or later has the mitigation in place. Looks like the current GCC version is <a href="https://www.gigabyte.com/Support/Utility?kw=GIGABYTE+Control+Center&p=1" target="_blank">26.09.10.01</a>. The mitigation includes the following: </p><ul><li>Enhanced Access Control: Implemented strict security descriptors to ensure that the driver device objects are only accessible to authorized system accounts, preventing unprivileged users from interacting with the driver.</li><li>Interface Hardening: Removed unnecessary and high-risk interfaces that allowed direct physical memory mapping.</li><li>Privilege Validation: Integrated mandatory privilege checks for all hardware-access functions to ensure only requests with appropriate administrative rights are processed.</li><li>Input Validation: Implemented rigorous validation for all IOCTL input parameters to block access to restricted hardware registers and configuration spaces.</li></ul><p>So, get that software updated. And if you're keen to stay on top of these things, here's the Gigabyte page with all its <a href="https://www.gigabyte.com/security/security-advisory" target="_blank">security disclosures</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/motherboards/gigabyte-admits-an-oopsie-with-gigabyte-control-center-software-leaving-kernel-exposed-to-attackers/</link>
                                                                            <description>
                            <![CDATA[ Mitigated version is already available. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4uugsuLS5gT9xbJ5XkmAKf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WmUXMRVEiSvqg7LfweomfN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 22 Sep 2026 09:17:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Motherboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WmUXMRVEiSvqg7LfweomfN-1920-80.jpg">
                                                            <media:credit><![CDATA[Gigabyte]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gigabyte Control Center software]]></media:description>                                                            <media:text><![CDATA[Gigabyte Control Center software]]></media:text>
                                <media:title type="plain"><![CDATA[Gigabyte Control Center software]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WmUXMRVEiSvqg7LfweomfN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you have a Gigabyte motherboard and use the Gigabyte Control Center (GCC) software, you'd better download the latest version of the software. While the risk of a local attacker hacking into your PC is pretty slim, it's best practice to just cover your butt before anything bad happens.</p><p>Gigabyte has listed a new vulnerability on its website that affects a pair of kernel drivers, GVCIDrv64.sys and gdrv3.sys. It says the drivers are components of the GCC software, which is widely recommended alongside the company's motherboards.</p><p>"The vulnerabilities exist in the kernel drivers' IOCTL interfaces." Gigabyte says of the cause of the vulnerability. "Due to insufficient access control and improper validation of input parameters, authenticated local attackers can perform unauthorized operations, including arbitrary physical memory mapping and direct hardware access.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgoVe"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgoVe.js" async></script><p>An attacker can wield those vulnerable drivers through a "specially crafted" IOCTL request. In doing so, bypassing important memory protections and allowing them to elevate themselves to the most trusted level of your PC, the kernel.</p><p>Gigabyte thanks Mohamed Alzhrani (0xMaz) and Subhan Sultanov (me1n) for discovering the vulnerability and helping the patching effort. This comes at a time when <a href="https://www.phoronix.com/news/Intel-Bug-Bounty-Program-Ends" target="_blank">Intel is said to be ending its lucrative bug bounty program</a>. </p><p>There is a fix available. Any version of GCC from 26.08.28.01, GBT_VGA_26.08.24.01 or later has the mitigation in place. Looks like the current GCC version is <a href="https://www.gigabyte.com/Support/Utility?kw=GIGABYTE+Control+Center&p=1" target="_blank">26.09.10.01</a>. The mitigation includes the following: </p><ul><li>Enhanced Access Control: Implemented strict security descriptors to ensure that the driver device objects are only accessible to authorized system accounts, preventing unprivileged users from interacting with the driver.</li><li>Interface Hardening: Removed unnecessary and high-risk interfaces that allowed direct physical memory mapping.</li><li>Privilege Validation: Integrated mandatory privilege checks for all hardware-access functions to ensure only requests with appropriate administrative rights are processed.</li><li>Input Validation: Implemented rigorous validation for all IOCTL input parameters to block access to restricted hardware registers and configuration spaces.</li></ul><p>So, get that software updated. And if you're keen to stay on top of these things, here's the Gigabyte page with all its <a href="https://www.gigabyte.com/security/security-advisory" target="_blank">security disclosures</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft's AI vulnerability detection results in record-breaking Patch Tuesday, addressing 974 security flaws ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's not always interesting, but it's important to stay on top of operating system updates. However, if you're on Windows, you're definitely gonna want to prick up your ears for Microsoft's September 2026 Patch Tuesday.</p><p>This might be Microsoft's biggest Patch Tuesday to date, <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Sep">addressing a whopping 974 security flaws</a> found across both Windows 10 and Windows 11. <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-september-2026-patch-tuesday-fixes-966-flaws-2-zero-days/">Bleeping Computer</a> offers a handy breakdown, reporting that 438 of these flaws were elevation of privilege vulnerabilities, 258 were remote code execution vulnerabilities, and 19 were security feature bypass vulnerabilities.</p><p>Perhaps more importantly, this Patch Tuesday also targets two actively exploited zero-days. Specifically, these are <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-85880">CVE-2026-85880</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-81963">CVE-2026-81963</a>, which had both been leveraged previously to give attackers elevated system privileges.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p><a href="https://www.pcgamer.com/software/ai/more-windows-security-updates-to-come-as-microsoft-leverages-ai-vulnerability-detection-but-only-the-highest-confidence-findings-reach-the-engineering-team/" target="_blank">Microsoft began leveraging AI vulnerability detection back in July</a>, stressing back then that only the highest-confidence findings would ever reach the engineering team for fixing. As a result, <a href="https://www.pcgamer.com/software/windows/latest-microsoft-patch-tuesday-updates-stamp-out-a-record-622-security-vulnerabilities-as-the-companys-ai-enhanced-bug-hunt-looks-to-bear-fruit/" target="_blank">July enjoyed a similarly record-breaking Patch Tuesday</a>, stamping out 622 security vulnerabilities.</p><p>There's been a lot of praise for AI bug-hunting tools in recent months, with the CTO of Firefox raving about how <a href="https://www.pcgamer.com/software/browsers/defenders-finally-have-a-chance-to-win-decisively-firefox-cto-raves-about-claude-mythos-bug-hunting-capabilities-after-it-finds-271-vulnerabilities/" target="_blank">an early version of Claude Mythos found 271 security vulnerabilities in the browser</a> back in April. Anthropic itself was only too keen to toot its own horn that same month, saying that its AI had in fact found "<a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">thousands of high-severity vulnerabilities, including some in every major operating system and web browser</a>."</p><p>Now, compare and contrast this to, say, all the times OpenAI's agents have reportedly breached containment in recent months. For instance, there was the '<a href="https://www.pcgamer.com/software/ai/openai-publicly-acknowledges-the-german-wiki-incident-weeks-after-first-finding-out-about-it/" target="_blank">wiki incident</a>', where AI agents took over a communally editable German website, and then there was also the '<a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">Hugging Face incident</a>'. OpenAI has been taking <a href="https://www.pcgamer.com/software/ai/openai-says-itd-be-a-shame-if-something-were-to-happen-to-your-servers-like-what-happened-to-hugging-face-better-use-our-ai-models-to-protect-yourself/" target="_blank">steps to learn from these incidents</a>.</p><p>But to bring it back to Microsoft, the Edge team <a href="https://blogs.windows.com/msedgedev/2026/09/08/faster-reviews-and-quality-recognition-for-microsoft-edge-extensions/" target="_blank">recently implemented an automated browser extension review system</a> to better deal with the tidal wave of "AI-assisted" submissions. It's currently unclear if the automated system also uses AI or machine-learning (via <a href="https://www.theregister.com/software/2026/09/09/another-microsoft-team-admits-its-struggling-to-handle-flood-of-ai-generated-code/5295185" target="_blank">The Register</a>).</p><p>It's an odd state of affairs when AI is both the source of a major security incident and core to the tools engineers now use to address vulnerabilities. Obviously, agentic AI is a bit different to the tools Microsoft is using, but here's hoping this latter AI tech continues to be more of a help than a hindrance.</p><div class="vizualizer-embed"><fc-author-commerce-widget data-fcaw-version="1" data-fcaw-full-bleed="false">  <style data-fcaw-host-protection>fc-author-commerce-widget[data-fcaw-version="1"] {  display: block !important;  width: 100% !important;  min-width: 0 !important;  max-width: none !important;  isolation: isolate !important;  contain: style !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]{  width: min(    1200px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1200px !important;  margin-left: var(    --fcaw-full-bleed-offset,    calc(50% - min(600px, 50vw))  ) !important;  margin-right: 0 !important;  position: relative !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]  #tg-df-spreadsheet-filters {  width: min(    1500px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1500px !important;  margin-left: calc(    (      100% -      min(1500px, var(--fcaw-viewport-width, 100vw))    ) / 2  ) !important;  margin-right: 0 !important;}fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::before,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::after {  box-sizing: border-box;}</style>  <div data-fcaw-fallback class="fcaw-v1-fallback">    <style>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with 'tg-df-' to prevent CMS style leakage.    */    .tg-df-container { user-select: text; -webkit-user-select: text;      container-type: inline-size;      container-name: tg-df;                  --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]    {      width: min(        1200px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1200px !important;      margin-left: calc(        (          100% -          min(1200px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;      position: relative !important;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]      #tg-df-spreadsheet-filters {      width: min(        1500px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1500px !important;      margin-left: calc(        (          100% -          min(1500px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: var(--tg-df-blue);    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }        .tg-df-filters {      display: flex;      justify-content: center;      width: 100%;      gap: 12px;      margin: 0 auto;      max-width: 42rem;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;      max-width: 280px;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      width: 100%;      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }    .tg-df-scroll-btn {      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 4px;    }    .tg-df-scroll-btn.right {      right: 4px;    }    @container tg-df (max-width: 768px) {      .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;      margin: 0 auto;    }    .tg-df-filters {        justify-content: center;        width: 100%;        margin: 0 auto;        margin-bottom: -320px;        padding: 0 0 320px 0;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: calc(100% + 32px);      max-width: none;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;      margin: 0 -16px -16px -16px;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }    .tg-df-buying-guide-badge {      left: auto;      right: 12px;      max-width: calc(100% - 24px);      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges { position: absolute; bottom: 8px; left: 8px; display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 0; z-index: 10; }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: calc(100% + 32px);      max-width: none;      box-sizing: border-box;      background-color: var(--tg-df-blue);      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;      margin: 0 -16px -16px -16px;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      filter: brightness(0.85);    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 120px;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /* Optional mobile 2x2 filter grid */    .tg-df-mobile-2x2-container {      display: none;      width: 100%;      margin: 0 0 16px 0;      position: relative;      z-index: 30;    }    .tg-df-mobile-2x2-grid {      display: grid;      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);      width: 100%;      border: 1px solid var(--tg-df-border, #e2e8f0);      background: var(--tg-df-bg, #ffffff);    }    .tg-df-container .tg-df-mobile-grid-cell {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      min-width: 0;      padding: 12px 14px;      font-family: inherit;      font-size: 11px;      font-weight: 600;      line-height: 1.2;      text-transform: uppercase;      letter-spacing: 0.5px;      text-align: left;      color: var(--tg-df-text-muted, #64748b);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-mobile-grid-cell > span {      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }    .tg-df-mobile-grid-cell > svg {      flex: 0 0 auto;      margin-left: 8px;      transition: transform 0.15s ease;    }    .tg-df-mobile-grid-cell > svg.is-open {      transform: rotate(180deg);    }    .tg-df-mobile-grid-cell {      border-bottom: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-grid-cell:nth-child(odd) {      border-right: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-2x2-grid--even .tg-df-mobile-grid-cell:nth-last-child(-n + 2) {      border-bottom: 0;    }    .tg-df-mobile-2x2-grid--odd .tg-df-mobile-grid-cell:last-child {      grid-column: 1 / -1;      border-right: 0;      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-grid-cell.active,    .tg-df-container .tg-df-mobile-grid-cell:hover {      background: var(--tg-df-bg-secondary, #f8fafc);      color: var(--tg-df-text, #0f172a);    }    .tg-df-container .tg-df-mobile-grid-cell.has-active-filter {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;    }    .tg-df-mobile-menu-drawer {      width: 100%;      max-height: 260px;      overflow-y: auto;      overscroll-behavior: contain;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-top: 0;      background: var(--tg-df-bg, #ffffff);      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);    }    .tg-df-container .tg-df-mobile-menu-item {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      width: 100%;      min-height: 42px;      padding: 12px 16px;      font-family: inherit;      font-size: 12px;      font-weight: 500;      line-height: 1.3;      text-align: left;      color: var(--tg-df-text, #0f172a);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-bottom: 1px solid #f1f5f9;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-container .tg-df-mobile-menu-item:last-child {      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-menu-item.selected {      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.08);      font-weight: 600;    }    .tg-df-container .tg-df-mobile-menu-item:hover {      background: var(--tg-df-bg-secondary, #f8fafc);    }    .tg-df-mobile-cell-badge {      display: inline-flex;      align-items: center;      justify-content: center;      padding: 2px 6px;      margin-left: 4px;      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.1);      border-radius: 9999px;      font-size: 10px;      font-weight: 700;    }    @container tg-df (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    @media (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    /* A non-full-bleed desktop embed is constrained to the article column.       Reuse the compact filter grid there instead of squeezing the rails. */    @container tg-df (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    @media (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-mobile-authors { gap: 16px !important; }      .tg-df-mobile-authors .tg-df-author-row-item { width: 56px !important; }      .tg-df-mobile-authors .tg-df-author-img-wrapper { width: 48px !important; height: 48px !important; }      .tg-df-mobile-authors .tg-df-author-brand-logo { width: 18px !important; height: 18px !important; bottom: -2px !important; right: -2px !important; }      .tg-df-mobile-authors .tg-df-author-row-name { font-size: 11px !important; }      .tg-df-mobile-authors .tg-df-author-row-role { font-size: 10px !important; }            .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-controls {        padding: 16px 0 8px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }                  .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 8px;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    @media (max-width: 599px) {      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }        .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: var(--tg-df-blue);      position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }      .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 14px;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }        .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;      scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-scroll-left {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: rgba(255, 255, 255, 0.4);      color: var(--tg-df-blue);      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);      border: none;      cursor: pointer;      transition: background-color 0.2s;      margin-top: -4px;      z-index: 10;    }    .tg-df-container .tg-df-carousel-scroll-right {      right: 0;    }    .tg-df-container .tg-df-carousel-scroll-left {      left: 0;    }    .tg-df-container .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-scroll-left:hover {      background-color: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left {       height: 30px;       width: 30px;       background-color: rgba(255, 255, 255, 0.8);       box-shadow: 0 2px 4px rgba(0,0,0,0.1);       margin-top: 0;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left:hover {       background-color: white;    }    .tg-df-container .tg-df-grid-wrapper {       position: relative;    }    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-left {       background-color: white;       box-shadow: 0 4px 12px rgba(0,0,0,0.15);       top: 40%;       width: 44px;       height: 44px;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }            .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .tg-df-container .tg-df-carousel-filter-btn:hover, .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      width: calc(100% + 24px);      border-radius: 0;      padding: 8px 10px;      margin: auto -12px -12px -12px;      background-color: var(--tg-df-blue);    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.40);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; padding-right: 12px; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @media (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }      .tg-df-container .hawk-deal-widget-title-product-title,      .tg-df-container .hawk-deal-widget-title-price,      .tg-df-container .hawk-deal-widget-title-retailer {        font-size: 14px !important;        line-height: 1.35 !important;        font-weight: 700 !important;      }      .tg-df-container .hawk-deal-widget-title-was-price {        font-size: 13px !important;        line-height: 1.35 !important;      }      .tg-df-container .hawk-deal-widget-text-body-main {        font-size: 14px !important;        line-height: 1.35 !important;        margin-bottom: 8px !important;      }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    /* BESPOKE AUTHOR HEADER STYLES - MAX ISOLATION PROTECTION */    .tg-df-author-embed {      width: 100% !important;      font-family: inherit !important;      background: transparent !important;      margin: 0 !important;      padding: 0 !important;      border: none !important;    }    .tg-df-author-section {      display: block !important;      width: 100% !important;      max-width: 100% !important;      opacity: 1 !important;      overflow: visible !important;      background: transparent !important;      border: none !important;      margin: 0 auto !important;      padding: 0 !important;      box-shadow: none !important;    }    .tg-df-author-card {      text-align: center !important;      padding: 1.75rem 1rem 1.25rem 1rem !important;      margin: 0 auto !important;      max-width: 48rem !important;      background: transparent !important;      border: none !important;      border-radius: 0 !important;      box-sizing: border-box !important;      box-shadow: none !important;    }    .tg-df-author-image {      width: 180px !important;      height: 180px !important;      border-radius: 50% !important;      object-fit: cover !important;      margin: 0 auto 0.75rem auto !important;      display: block !important;      border: none !important;      box-shadow: none !important;      max-width: 100% !important;    }    .tg-df-author-media-slot {      width: 100% !important;      height: 180px !important;      min-height: 180px !important;      margin: 0 auto 0.75rem auto !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;    }    .tg-df-author-media-slot .tg-df-author-image {      margin: 0 auto !important;    }    .tg-df-author-profile-image-wrapper {      position: relative !important;      width: 180px !important;      height: 180px !important;      margin: 0 auto 0.75rem auto !important;      flex: 0 0 auto !important;    }    .tg-df-author-profile-brand-logo {      position: absolute !important;      right: 12px !important;      bottom: 12px !important;      width: 42px !important;      height: 42px !important;      padding: 0 !important;      border: 3px solid var(--tg-df-bg, #fff) !important;      border-radius: 50% !important;      background: #000 !important;      object-fit: contain !important;      box-sizing: border-box !important;    }    .tg-df-author-curated-by {      font-size: 0.875rem !important;      color: #6B7280 !important;      font-style: normal !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      line-height: 1.4 !important;    }    .tg-df-author-name {      font-size: 2rem !important;      font-weight: 300 !important;      color: #111827 !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      line-height: 1.1 !important;      letter-spacing: -0.02em !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-role {      font-size: 0.9375rem !important;      font-weight: 500 !important;      color: var(--tg-df-blue, #1F69FF) !important;      margin: 0 0 1.25rem 0 !important;      padding: 0 !important;      line-height: 1.3 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-meta-slot {      width: 100% !important;      min-height: 88px !important;      display: flex !important;      flex-direction: column !important;      align-items: center !important;      justify-content: flex-start !important;    }    .tg-df-author-meta-slot--site {      padding-top: 1rem !important;    }    .tg-df-author-meta-slot--no-social {      min-height: 0 !important;    }    .tg-df-author-meta-slot--no-social .tg-df-author-role {      margin-bottom: 0.5rem !important;    }    .tg-df-author-social-links {      display: flex !important;      flex-wrap: wrap !important;      align-items: center !important;      justify-content: center !important;      gap: 1rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 !important;      max-width: 42rem !important;      width: 100% !important;      list-style: none !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-social-btn {      display: inline-flex !important;      align-items: center !important;      justify-content: center !important;      padding: 0 !important;      border-radius: 50% !important;      background-color: #f2f2f2 !important;      color: #111111 !important;      font-size: 0.8125rem !important;      font-weight: 500 !important;      text-decoration: none !important;      transition: all 0.2s ease !important;      border: 0 !important;      line-height: 1 !important;      box-shadow: none !important;      cursor: pointer !important;      outline: none !important;      margin: 0 !important;      height: 34px !important;      width: 34px !important;      min-width: 34px !important;      box-sizing: border-box !important;    }    .tg-df-author-social-btn:hover {      background-color: #dedede !important;      color: #111111 !important;      transform: translateY(-1px) !important;    }    .tg-df-author-social-btn > svg {      width: 19px !important;      height: 19px !important;      flex-shrink: 0 !important;      display: block !important;      margin: 0 !important;    }    .tg-df-author-social-btn[data-social-key="facebook"] > svg {      transform: scale(1.25) !important;    }    .tg-df-author-social-btn[data-social-key="pinterest"] > svg,    .tg-df-author-social-btn[data-social-key="tiktok"] > svg {      transform: scale(1.2) !important;    }    .tg-df-author-bio {      max-width: 42rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 0.5rem !important;      color: #4b5563 !important;      line-height: 1.6 !important;      font-weight: 300 !important;      font-size: 0.9375rem !important;      text-align: center !important;      background: none !important;      border: none !important;      border-radius: 0 !important;      box-shadow: none !important;      display: block !important;      height: auto !important;      overflow: visible !important;    }    .tg-df-author-bio-shell--stable {      width: 100% !important;      box-sizing: border-box !important;    }    .tg-df-author-bio--clamped {      min-height: 4.8em !important;      height: 4.8em !important;      max-height: 4.8em !important;      display: -webkit-box !important;      -webkit-box-orient: vertical !important;      -webkit-line-clamp: 3 !important;      overflow: hidden !important;    }    .tg-df-author-bio--expanded {      min-height: 4.8em !important;      height: auto !important;      max-height: none !important;      display: block !important;      overflow: visible !important;    }    .tg-df-author-bio--static,    .tg-df-author-bio--static:hover,    .tg-df-author-bio--static:focus,    .tg-df-author-bio--static:focus-visible {      outline: none !important;      box-shadow: none !important;      cursor: default !important;    }    .tg-df-author-bio-toggle-slot {      height: 28px !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;      margin: 0.125rem 0 0 !important;    }    .tg-df-author-bio-toggle {      appearance: none !important;      border: 0 !important;      border-bottom: 1px solid currentColor !important;      border-radius: 0 !important;      padding: 0.125rem 0 !important;      margin: 0 !important;      background: transparent !important;      color: #4b5563 !important;      box-shadow: none !important;      font: inherit !important;      font-size: 0.75rem !important;      font-weight: 600 !important;      line-height: 1.2 !important;      text-decoration: none !important;      text-transform: none !important;      cursor: pointer !important;    }    .tg-df-author-bio a {      color: var(--tg-df-blue, #1F69FF) !important;      text-decoration: underline !important;      font-weight: 400 !important;      background: none !important;      border: none !important;      padding: 0 !important;      margin: 0 !important;      border-radius: 0 !important;      display: inline !important;      box-shadow: none !important;    }    .tg-df-author-bio p,    .tg-df-author-bio div,    .tg-df-author-bio span {      margin: 0 !important;      padding: 0 !important;      color: inherit !important;      font: inherit !important;      line-height: inherit !important;      text-align: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-bio strong,    .tg-df-author-bio b {      font-weight: 600 !important;    }    .tg-df-author-bio em,    .tg-df-author-bio i {      font-style: italic !important;    }    @container tg-df (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @media (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @container tg-df (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @media (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }    @media (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }        .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button {      align-items: center; background-color: var(--tg-df-blue); box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;    }    .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button:hover { filter: brightness(0.85); text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }    .tg-df-active-badges-row {      display: flex;      flex-wrap: wrap;      gap: 8px;      align-items: center;      margin-top: 12px;      margin-bottom: 16px;      width: 100%;    }    .tg-df-active-badge {      display: inline-flex;      align-items: center;      gap: 6px;      padding: 8px 14px;      background-color: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border: 1px solid var(--tg-df-blue, #1f69ff);      border-radius: 0px;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;    }    .tg-df-badge-remove {      display: inline-flex;      align-items: center;      justify-content: center;      width: 16px;      height: 16px;      border-radius: 0px;      border: none;      background: rgba(255, 255, 255, 0.25);      color: #ffffff;      cursor: pointer;      padding: 0;      margin-left: 4px;      transition: background-color 0.15s, color 0.15s;    }    .tg-df-badge-remove:hover {      background: rgba(255, 255, 255, 0.45);      color: #ffffff;    }    .tg-df-badge-clear-all {      display: inline-flex;      align-items: center;      justify-content: center;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;      padding: 8px 14px;      color: var(--tg-df-text-muted, #64748b);      cursor: pointer;      background: #ffffff;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-radius: 0px;      transition: all 0.15s ease;    }    .tg-df-badge-clear-all:hover {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border-color: var(--tg-df-blue, #1f69ff);    }    .tg-df-savings-squad-header {      margin-bottom: 24px;      text-align: center;    }    .tg-df-banner-img-desktop {      display: block;      width: 100%;      height: auto;      margin-bottom: 32px;    }    .tg-df-banner-img-mobile {      display: none;      width: 100%;      height: auto;      margin-bottom: 32px;    }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop {        display: none;      }      .tg-df-banner-img-mobile {        display: block;      }    }    .tg-df-header-title {      font-size: 28px;      font-weight: 700;      color: var(--tg-df-text);      margin: 32px 0 12px 0;      line-height: 1.3;    }    .tg-df-header-subtitle {      font-size: 16px;      color: var(--tg-df-text-muted);      margin: 0 0 32px 0;      line-height: 1.5;    }    @container tg-df (max-width: 599px) {      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    @media (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    /* Article Intro Content Styling */    .tg-df-article-content {      font-size: 1rem;      line-height: 1.7;      color: #334155;    }    .tg-df-article-content p {      margin-bottom: 1.25rem;      line-height: 1.7;      font-size: 1rem;      color: #334155;    }    .tg-df-article-content > p:first-of-type::first-letter {      font-size: 3.25rem;      font-weight: 700;      float: left;      line-height: 0.85;      margin-right: 0.5rem;      margin-top: 0.15rem;      color: #0f172a;      font-family: inherit;    }    .tg-df-article-content a {      color: #0066cc;      text-decoration: underline;      font-weight: 500;    }    .tg-df-article-content a:hover {      color: #004499;    }    .tg-df-article-content strong, .tg-df-article-content b {      font-weight: 700;      color: #0f172a;    }    .tg-df-article-section-banner {      border-bottom: 2px solid #e6007e;      margin: 2.25rem 0 1.25rem 0;      position: relative;      clear: both;    }    .tg-df-article-section-banner span {      background-color: #e6007e;      color: #ffffff;      padding: 6px 16px;      font-weight: 700;      font-size: 0.875rem;      text-transform: uppercase;      letter-spacing: 0.05em;      display: inline-block;    }  </style><div class="tg-df-widget-host" data-vizualizer-embed="true" data-tg-df-full-bleed="false" data-tg-df-mobile-dropdowns="true" data-tg-df-sticky-mobile-filters="false" style="--tg-df-blue: #DC191B;"><div class="tg-df-container article-body" style="background-color: transparent;"><div id="tg-df-spreadsheet-filters" style="display: block; margin-bottom: 16px;"><div class="tg-df-categories-row-container" style="border-bottom: 1px solid var(--tg-df-border); position: relative;"><button aria-label="Scroll left" class="tg-df-scroll-btn left tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6"></path></svg></button><button aria-label="Scroll right" class="tg-df-scroll-btn right tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-categories-row" style="display: flex; overflow-x: auto; scrollbar-width: none;"><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Hardware <span style="color: var(--tg-df-blue); font-size: 10px;">251</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming PCs <span style="color: var(--tg-df-blue); font-size: 10px;">58</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">SSDs <span style="color: var(--tg-df-blue); font-size: 10px;">54</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Storage <span style="color: var(--tg-df-blue); font-size: 10px;">54</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Monitors <span style="color: var(--tg-df-blue); font-size: 10px;">45</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Laptops <span style="color: var(--tg-df-blue); font-size: 10px;">24</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Graphics Cards <span style="color: var(--tg-df-blue); font-size: 10px;">17</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Controllers <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Headsets <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Audio <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button></div></div><div class="tg-df-brands-row-container" style="border-bottom: 1px solid var(--tg-df-border); position: relative;"><button aria-label="Scroll left" class="tg-df-scroll-btn left tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6"></path></svg></button><button aria-label="Scroll right" class="tg-df-scroll-btn right tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-brands-row" style="display: flex; overflow-x: auto; scrollbar-width: none;"><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Acer <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">36</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">MSI <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">33</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Asus <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">18</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Crucial <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">17</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Samsung <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">14</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Andromeda Insights <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">13</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gigabyte <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">13</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Team Group <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">11</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">ASRock <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">11</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">WD_Black <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">9</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">iBuyPower <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">8</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">ABS <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">7</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Skytech <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">7</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">LG <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">7</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">HP <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">6</span></button></div></div></div><div class="tg-df-mobile-2x2-container"><div class="tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--even"><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>CATEGORIES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>BRANDS</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>PRICES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>DISCOUNTS</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button></div></div><div class="tg-df-controls" id="tg-df-controls" style="display: flex; margin-top: 12px; margin-bottom: 16px; justify-content: center;"><div class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0px auto;"><button class="tg-df-scroll-btn left" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 18l-6-6 6-6"></path></svg></button><button class="tg-df-scroll-btn right" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-filters"><div class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices"><option value="all">All Prices</option><option value="under50">Under $50</option><option value="50_100">$50 - $100</option><option value="100_200">$100 - $200</option><option value="200_500">$200 - $500</option><option value="over500">Over $500</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount"><option value="all">Any discount</option><option value="5">Min 5%</option><option value="10">Min 10%</option><option value="15">Min 15%</option><option value="20">Min 20%</option><option value="25">Min 25%</option><option value="30">Min 30%</option><option value="40">Min 40%</option><option value="50">Min 50%</option><option value="60">Min 60%</option><option value="70">Min 70%</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-review-sort-wrapper" style="display: none;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h16M7 12h10m-7 5h4"></path></svg><select class="tg-df-filter-select" id="tg-df-review-sort" aria-label="Sort Reviews"><option value="date_desc">Most recent</option><option value="rating_desc">Highest rating</option><option value="scored_first">Scored products first</option></select></div></div></div></div><div class="tg-df-grid-wrapper"><div class="tg-df-grid article-body tg-df-grid-auto" id="tg-df-grid"><div class="tg-df-card" data-brand="Yawyore" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-0" data-merchant="Newegg" data-previous-price="819.99" data-price="599.99" data-product-name="Gaming PC | Ryzen 5 5600GT"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $220</span><a href="https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Gaming PC | Ryzen 5 5600GT" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Gaming PC | Ryzen 5 5600GT"><a href="https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Yawyore Gaming PC | Ryzen 5 5600GT</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. Key specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>599.99</span></span><span class="tg-df-card-msrp">$819.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="ABS" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-1" data-merchant="Walmart" data-previous-price="999.99" data-price="899" data-product-name="Cyclone Aqua | RTX 5060"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $100.99</span><a href="https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Cyclone Aqua | RTX 5060" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Cyclone Aqua | RTX 5060"><a href="https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>ABS Cyclone Aqua | RTX 5060</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">You're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you are getting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming. Key specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>899</span></span><span class="tg-df-card-msrp">$999.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Stormcraft" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-2" data-merchant="Newegg" data-previous-price="1299.99" data-price="999.99" data-product-name="Sirius | RTX 5060"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $300</span><a href="https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Sirius | RTX 5060" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Sirius | RTX 5060"><a href="https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Stormcraft Sirius | RTX 5060</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too. Key specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>999.99</span></span><span class="tg-df-card-msrp">$1299.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="ABS" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-3" data-merchant="Newegg" data-previous-price="1399.99" data-price="1079.99" data-product-name="Cyclone Aqua | RTX 5060"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $320</span><a href="https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Cyclone Aqua | RTX 5060" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Cyclone Aqua | RTX 5060"><a href="https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>ABS Cyclone Aqua | RTX 5060</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">If you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. Use promo code ABSIGD20 for the full discount. Key specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - OUT OF STOCK **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1079.99</span></span><span class="tg-df-card-msrp">$1399.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="CyberPowerPC" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-4" data-merchant="Walmart" data-previous-price="1639.99" data-price="1249" data-product-name="Gamer Xtreme | RTX 5060 Ti 8 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $390.99</span><a href="https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Gamer Xtreme | RTX 5060 Ti 8 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Gamer Xtreme | RTX 5060 Ti 8 GB"><a href="https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>CyberPowerPC Gamer Xtreme | RTX 5060 Ti 8 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love the non-F version (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess. Key specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1249</span></span><span class="tg-df-card-msrp">$1639.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="iBuyPower" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-5" data-merchant="Walmart" data-previous-price="1499" data-price="1299" data-product-name="Element SE | RTX 5060 Ti 8 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $200</span><a href="https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Element SE | RTX 5060 Ti 8 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Element SE | RTX 5060 Ti 8 GB"><a href="https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>iBuyPower Element SE | RTX 5060 Ti 8 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">If you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting. Key specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1299</span></span><span class="tg-df-card-msrp">$1499</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-6" data-merchant="Bhphotovideo" data-previous-price="1599" data-price="1399" data-product-name="Codex Z2C | RTX 5070"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $200</span><a href="https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Codex Z2C | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Codex Z2C | RTX 5070"><a href="https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI Codex Z2C | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders. Key specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1399</span></span><span class="tg-df-card-msrp">$1599</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bhphotovideo</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="iBuyPower" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-7" data-merchant="Walmart" data-previous-price="1799" data-price="1399" data-product-name="Slate | RTX 5060 Ti 8 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $400</span><a href="https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Slate | RTX 5060 Ti 8 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Slate | RTX 5060 Ti 8 GB"><a href="https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>iBuyPower Slate | RTX 5060 Ti 8 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though. Key specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1399</span></span><span class="tg-df-card-msrp">$1799</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="HP" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-8" data-merchant="Bestbuy" data-previous-price="1919.99" data-price="1399.99" data-product-name="Omen 35L Valorant | RTX 5060 Ti 16 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $520</span><a href="https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Omen 35L Valorant | RTX 5060 Ti 16 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Omen 35L Valorant | RTX 5060 Ti 16 GB"><a href="https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>HP Omen 35L Valorant | RTX 5060 Ti 16 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Yes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity. Key specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1399.99</span></span><span class="tg-df-card-msrp">$1919.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bestbuy</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-9" data-merchant="Walmart" data-price="1499" data-product-name="Codex R2 AI | RTX 5070"><div class="tg-df-card-image-box"><a href="https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Codex R2 AI | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Codex R2 AI | RTX 5070"><a href="https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI Codex R2 AI | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">For mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1499</span></span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Skytech" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-10" data-merchant="Amazon" data-previous-price="1699.99" data-price="1599.99" data-product-name="Gaming Blaze 5 | RTX 5070"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $100</span><a href="https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Gaming Blaze 5 | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Gaming Blaze 5 | RTX 5070"><a href="https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Skytech Gaming Blaze 5 | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">We're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. Key specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1599.99</span></span><span class="tg-df-card-msrp">$1699.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Acer" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-11" data-merchant="Walmart" data-previous-price="2099.99" data-price="1499" data-product-name="Nitro 85 | RTX 5070"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $600.99</span><a href="https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Nitro 85 | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Nitro 85 | RTX 5070"><a href="https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Acer Nitro 85 | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Another RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1499</span></span><span class="tg-df-card-msrp">$2099.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-load-more-control" style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1; overflow-anchor: none;"><button type="button" class="tg-df-tag-outline" aria-busy="false" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer;">Load More</button></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"Product","name":"Gaming PC | Ryzen 5 5600GT","image":"https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png","description":"The integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. Key specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD","brand":{"@type":"Brand","name":"Yawyore"},"offers":{"@type":"Offer","priceCurrency":"USD","price":599.99,"url":"https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":2,"item":{"@type":"Product","name":"Cyclone Aqua | RTX 5060","image":"https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png","description":"You're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you are getting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming. Key specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD","brand":{"@type":"Brand","name":"ABS"},"offers":{"@type":"Offer","priceCurrency":"USD","price":899,"url":"https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":3,"item":{"@type":"Product","name":"Sirius | RTX 5060","image":"https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png","description":"This is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too. Key specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD","brand":{"@type":"Brand","name":"Stormcraft"},"offers":{"@type":"Offer","priceCurrency":"USD","price":999.99,"url":"https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":4,"item":{"@type":"Product","name":"Cyclone Aqua | RTX 5060","image":"https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png","description":"If you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. Use promo code ABSIGD20 for the full discount. Key specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - OUT OF STOCK **","brand":{"@type":"Brand","name":"ABS"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1079.99,"url":"https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":5,"item":{"@type":"Product","name":"Gamer Xtreme | RTX 5060 Ti 8 GB","image":"https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png","description":"The main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love the non-F version (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess. Key specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"CyberPowerPC"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1249,"url":"https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":6,"item":{"@type":"Product","name":"Element SE | RTX 5060 Ti 8 GB","image":"https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png","description":"If you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting. Key specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD","brand":{"@type":"Brand","name":"iBuyPower"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1299,"url":"https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":7,"item":{"@type":"Product","name":"Codex Z2C | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png","description":"The headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders. Key specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1399,"url":"https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html","seller":{"@type":"Organization","name":"Bhphotovideo"}}}},{"@type":"ListItem","position":8,"item":{"@type":"Product","name":"Slate | RTX 5060 Ti 8 GB","image":"https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png","description":"This is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though. Key specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD","brand":{"@type":"Brand","name":"iBuyPower"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1399,"url":"https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":9,"item":{"@type":"Product","name":"Omen 35L Valorant | RTX 5060 Ti 16 GB","image":"https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png","description":"Yes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity. Key specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"HP"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1399.99,"url":"https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210","seller":{"@type":"Organization","name":"Bestbuy"}}}},{"@type":"ListItem","position":10,"item":{"@type":"Product","name":"Codex R2 AI | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png","description":"For mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1499,"url":"https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":11,"item":{"@type":"Product","name":"Gaming Blaze 5 | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png","description":"We're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. Key specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD","brand":{"@type":"Brand","name":"Skytech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1599.99,"url":"https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":12,"item":{"@type":"Product","name":"Nitro 85 | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png","description":"Another RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"Acer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1499,"url":"https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163","seller":{"@type":"Organization","name":"Walmart"}}}}]}</script></div></div><div class="tg-df-modal-backdrop "><div class="tg-df-modal"><div class="tg-df-modal-header"><h3 class="tg-df-modal-title">Available Coupons & Deals</h3><button class="tg-df-modal-close"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div><div class="tg-df-modal-body"><div class="tg-df-message">No active vouchers found for .</div></div></div></div></div></div>  </div>  <script type="application/json" data-fcaw-config>{"authorBioLength":"short","authorFullBleed":false,"authorHandle":"all-authors","authorName":"All authors","backgroundColor":"transparent","customBio":"","discountAmount":"0","editorMode":false,"editorialMaxAgeMonths":"12","includeBuyingGuideProducts":false,"includeCollections":false,"includeDeals":true,"includeReviewProducts":false,"mobileDropdowns":true,"stickyMobileFilters":false,"offerType":"","preloadReviewInventory":false,"lightweightReviewDelivery":false,"prioritiseCommercialProducts":true,"priceRange":"all","productSelection":"latest","query":"Everything","region":"auto","resultCount":"12","retailer":"","selectedBrands":[],"showAuthorBio":false,"showAuthorCounters":true,"showAuthorIdentity":false,"showAuthorRail":false,"showBrandRail":true,"showCategoryRail":true,"showCollectionsDropdown":false,"showPriceDiscountFilters":true,"showReviewSort":false,"showSocialButtons":false,"showCountdown":false,"showHeaderDetails":true,"showFreeformTagRail":false,"sort":"date_desc","viewMode":"author","website":"pcgamer","widgetSubtitle":"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.","widgetTitle":"Top Deals Handpicked by Our Editors","brands":[],"shortenedHeadlines":{},"compactEmbed":true}</script>  <script type="application/json" data-fcaw-preload>{"authors":[{"bioLong":"James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.","bioShort":"James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.","name":"James","fullName":"James Bentley","handle":"james-bentley","role":"Hardware writer","image":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","brandKey":"pcgamer"},{"bioLong":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","bioShort":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","name":"Dave","fullName":"Dave James","handle":"dave-james","role":"Editor-in-Chief, Hardware","image":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/not_the_gk","label":"X (Twitter)"},{"key":"email","href":"mailto:dave.james@futurenet.com","label":"Email"}]},{"bioLong":"Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she's either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.\u0026nbsp;","bioShort":"Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she's either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.\u0026nbsp;","name":"Jess","fullName":"Jess Kinghorn","handle":"jess-kinghorn","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/KoeniginKatze","label":"X (Twitter)"},{"key":"linkedin","href":"https://www.linkedin.com/in/jess-kinghorn","label":"LinkedIn"}]},{"bioLong":"Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob's led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","bioShort":"Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob's led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","name":"Jacob","fullName":"Jacob Fox","handle":"jacob-fox","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","brandKey":"pcgamer"},{"bioLong":"Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you'll usually find him testing the latest components or building a gaming PC. He says he's determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he's lucky, plush press rooms at the biggest tech shows, such as Computex and CES. When he's not writing about components, you'll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.","bioShort":"Jacob has been writing about PC hardware and technology for over eight years. He earned his first byline at PCGamesN before joining PC Gamer. He spends most of his time building PCs, running benchmarks, and trying his best to learn Linux.","name":"Jacob","fullName":"Jacob Ridley","handle":"jacob-ridley","role":"Managing Editor, Hardware","image":"https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png","brandKey":"pcgamer"}],"brands":[{"formatted_value":"Acer","count":36},{"formatted_value":"MSI","count":33},{"formatted_value":"Asus","count":18},{"formatted_value":"Crucial","count":17},{"formatted_value":"Samsung","count":14},{"formatted_value":"Andromeda Insights","count":13},{"formatted_value":"Gigabyte","count":13},{"formatted_value":"Team Group","count":11},{"formatted_value":"ASRock","count":11},{"formatted_value":"WD_Black","count":9},{"formatted_value":"iBuyPower","count":8},{"formatted_value":"ABS","count":7},{"formatted_value":"Skytech","count":7},{"formatted_value":"LG","count":7},{"formatted_value":"HP","count":6},{"formatted_value":"KTC","count":6},{"formatted_value":"Silicon Power","count":5},{"formatted_value":"Adata","count":5},{"formatted_value":"PNY","count":5},{"formatted_value":"Lenovo","count":5},{"formatted_value":"Koorui","count":4},{"formatted_value":"Alienware","count":4},{"formatted_value":"Razer","count":4},{"formatted_value":"Biwin","count":3},{"formatted_value":"Patriot","count":3},{"formatted_value":"Yawyore","count":2},{"formatted_value":"Stormcraft","count":2},{"formatted_value":"CyberPowerPC","count":2},{"formatted_value":"AOC","count":2},{"formatted_value":"Kingston","count":2},{"formatted_value":"Lexar","count":2},{"formatted_value":"WD Blue","count":2},{"formatted_value":"Dell","count":2},{"formatted_value":"Innocn","count":2},{"formatted_value":"HyperX","count":2},{"formatted_value":"Logitech","count":2},{"formatted_value":"Western Digital WD Blue","count":1},{"formatted_value":"WD","count":1},{"formatted_value":"Yeston","count":1},{"formatted_value":"PowerColor","count":1},{"formatted_value":"Steam","count":1},{"formatted_value":"Onix Lumi","count":1},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1},{"formatted_value":"AVGPC","count":1},{"formatted_value":"Thermaltake","count":1}],"activeDealTag":null,"activeFreeformTag":null,"activeFreeformTags":[],"couponMap":{"Newegg":"none","Walmart":"none","Bhphotovideo":"none","Bestbuy":"none","Amazon":"has","Lg":"none","Hp":"none","Store":"none"},"totalAuthorCount":5,"totalDealCount":188,"tagCounts":{"Gaming PCs":58,"Hardware":251,"Gaming Monitors":45,"SSDs":54,"Storage":54,"Graphics Cards":17,"Gaming Laptops":24,"Controllers":1,"Gaming Headsets":1,"Gaming Audio":1},"tags":["Hardware","Gaming PCs","SSDs","Storage","Gaming Monitors","Gaming Laptops","Graphics Cards","Controllers","Gaming Headsets","Gaming Audio"],"freeformTagCounts":{"intel":25,"deals":163,"ryzen":28,"gaming-pc":33,"hardware":251,"oled":2,"aoc-q27gazd":1,"1440p":1,"1440p-gaming-monitor":1,"gaming-monitor":10,"gaming-monitor-deal":9,"aoc":1,"deal":47,"ssd":54,"solid-state-drive":54,"solid-state":54,"hdd":54,"hard-drive":54,"storage":54,"gpu":17,"graphics-card":17,"buying-guide":15,"monitor":8,"esport-monitor":7,"monitor-deals":8,"1080p":2,"4k":2,"4k-monitor":7,"4k-gaming":2,"koorui":1,"koorui-g2741l":1,"monitors":36,"gaming-laptop":24,"budget":24,"cheap":24,"gaming-pc-deals":9,"collections":8,"labor-day":109,"nvidia":3,"amd":6,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"acer":4,"prebuilt":1,"prebuilt-pcs":1,"gaming-prebuilts":1,"rtx-5060-ti":1,"ddr4":1,"ddr4-ram":1,"memory":4,"memory-crisis":4,"amd-ryzen-5-5600x":1,"ryzen-5-5600x":1,"asrock":1,"oled-gaming-monitor":1,"msi":3,"thermaltake":3,"headset":1,"gaming-headset":1,"wireless-gaming-headset":1,"wireless":1,"hyperx":1,"hyperx-cloud-alpha-wireless":1,"rx-9070-xt":1,"memory-shortage":3,"cpu":3,"bundle":3,"newegg":3,"newegg-deals":3,"asus":3,"tuf-gaming":3,"am5":3,"samsung":3,"motherboard":3,"team-group":3,"combo-deal":3},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"deals","label":"deals","requestValue":"deals"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gpu","label":"GPU","requestValue":"GPU"},{"handle":"graphics-card","label":"graphics card","requestValue":"graphics card"},{"handle":"buying-guide","label":"buying guide","requestValue":"buying guide"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"esport-monitor","label":"esport monitor","requestValue":"esport monitor"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"amd","label":"AMD","requestValue":"AMD"},{"handle":"acer","label":"Acer","requestValue":"Acer"},{"handle":"memory","label":"memory","requestValue":"memory"},{"handle":"memory-crisis","label":"memory crisis","requestValue":"memory crisis"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"msi","label":"MSI","requestValue":"MSI"},{"handle":"thermaltake","label":"Thermaltake","requestValue":"Thermaltake"},{"handle":"memory-shortage","label":"memory shortage","requestValue":"memory shortage"},{"handle":"cpu","label":"CPU","requestValue":"CPU"},{"handle":"bundle","label":"bundle","requestValue":"bundle"},{"handle":"newegg","label":"Newegg","requestValue":"Newegg"},{"handle":"newegg-deals","label":"newegg deals","requestValue":"newegg deals"},{"handle":"asus","label":"Asus","requestValue":"Asus"},{"handle":"tuf-gaming","label":"TUF Gaming","requestValue":"TUF Gaming"},{"handle":"am5","label":"AM5","requestValue":"AM5"},{"handle":"samsung","label":"Samsung","requestValue":"Samsung"},{"handle":"motherboard","label":"Motherboard","requestValue":"Motherboard"},{"handle":"team-group","label":"team group","requestValue":"team group"},{"handle":"combo-deal","label":"combo deal","requestValue":"combo deal"},{"handle":"oled","label":"OLED","requestValue":"OLED"},{"handle":"1080p","label":"1080p","requestValue":"1080p"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"aoc-q27gazd","label":"AOC Q27GAZD","requestValue":"AOC Q27GAZD"},{"handle":"1440p","label":"1440p","requestValue":"1440p"},{"handle":"1440p-gaming-monitor","label":"1440p gaming monitor","requestValue":"1440p gaming monitor"},{"handle":"aoc","label":"AOC","requestValue":"AOC"},{"handle":"koorui","label":"Koorui","requestValue":"Koorui"},{"handle":"koorui-g2741l","label":"Koorui G2741L","requestValue":"Koorui G2741L"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"prebuilt","label":"prebuilt","requestValue":"prebuilt"},{"handle":"prebuilt-pcs","label":"Prebuilt PCs","requestValue":"Prebuilt PCs"},{"handle":"gaming-prebuilts","label":"gaming prebuilts","requestValue":"gaming prebuilts"},{"handle":"rtx-5060-ti","label":"RTX 5060 Ti","requestValue":"RTX 5060 Ti"},{"handle":"ddr4","label":"ddr4","requestValue":"ddr4"},{"handle":"ddr4-ram","label":"DDR4 RAM","requestValue":"DDR4 RAM"},{"handle":"amd-ryzen-5-5600x","label":"AMD Ryzen 5 5600X","requestValue":"AMD Ryzen 5 5600X"},{"handle":"ryzen-5-5600x","label":"Ryzen 5 5600X","requestValue":"Ryzen 5 5600X"},{"handle":"asrock","label":"ASRock","requestValue":"ASRock"},{"handle":"oled-gaming-monitor","label":"oled gaming monitor","requestValue":"oled gaming monitor"},{"handle":"headset","label":"headset","requestValue":"headset"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"wireless-gaming-headset","label":"wireless gaming headset","requestValue":"wireless gaming headset"},{"handle":"wireless","label":"wireless","requestValue":"wireless"},{"handle":"hyperx","label":"HyperX","requestValue":"HyperX"},{"handle":"hyperx-cloud-alpha-wireless","label":"HyperX Cloud Alpha Wireless","requestValue":"HyperX Cloud Alpha Wireless"},{"handle":"rx-9070-xt","label":"RX 9070 XT","requestValue":"RX 9070 XT"}],"reviewInventoryBaked":false,"regionalDealManifests":{"US":[{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-0","url":"https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454","image":"https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png","title":"Gaming PC | Ryzen 5 5600GT","brand":"Yawyore","productName":"Gaming PC | Ryzen 5 5600GT","merchant":"Newegg","rawPrice":599.99,"rawMsrp":819.99,"price":"599.99","msrp":"819.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $220","savingType":"amount","isPrime":false,"starRating":null,"description":"The integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. Key specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD","text":"\u003cp\u003eThe integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-1","url":"https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037","image":"https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png","title":"Cyclone Aqua | RTX 5060","brand":"ABS","productName":"Cyclone Aqua | RTX 5060","merchant":"Walmart","rawPrice":899,"rawMsrp":999.99,"price":"899","msrp":"999.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $100.99","savingType":"amount","isPrime":false,"starRating":null,"description":"You're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you are getting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming. Key specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD","text":"\u003cp\u003eYou're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you \u003cem\u003eare \u003c/em\u003egetting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-2","url":"https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040","image":"https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png","title":"Sirius | RTX 5060","brand":"Stormcraft","productName":"Sirius | RTX 5060","merchant":"Newegg","rawPrice":999.99,"rawMsrp":1299.99,"price":"999.99","msrp":"1299.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $300","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too. Key specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eThis is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-3","url":"https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981\u0026cm_sp=product-_-from-price-options","image":"https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png","title":"Cyclone Aqua | RTX 5060","brand":"ABS","productName":"Cyclone Aqua | RTX 5060","merchant":"Newegg","rawPrice":1079.99,"rawMsrp":1399.99,"price":"1079.99","msrp":"1399.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $320","savingType":"amount","isPrime":false,"starRating":null,"description":"If you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. Use promo code ABSIGD20 for the full discount. Key specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - OUT OF STOCK **","text":"\u003cp\u003eIf you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. \u003cstrong\u003eUse promo code ABSIGD20 for the full discount.\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - OUT OF STOCK **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-4","url":"https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137","image":"https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png","title":"Gamer Xtreme | RTX 5060 Ti 8 GB","brand":"CyberPowerPC","productName":"Gamer Xtreme | RTX 5060 Ti 8 GB","merchant":"Walmart","rawPrice":1249,"rawMsrp":1639.99,"price":"1249","msrp":"1639.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $390.99","savingType":"amount","isPrime":false,"starRating":null,"description":"The main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love the non-F version (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess. Key specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eThe main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love \u003ca href=\"https://www.pcgamer.com/hardware/processors/intel-core-ultra-5-250k-plus-review/\" target=\"_blank\"\u003ethe non-F version\u003c/a\u003e (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD \u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-5","url":"https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738","image":"https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png","title":"Element SE | RTX 5060 Ti 8 GB","brand":"iBuyPower","productName":"Element SE | RTX 5060 Ti 8 GB","merchant":"Walmart","rawPrice":1299,"rawMsrp":1499,"price":"1299","msrp":"1499","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $200","savingType":"amount","isPrime":false,"starRating":null,"description":"If you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting. Key specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD","text":"\u003cp\u003eIf you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-6","url":"https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html","image":"https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png","title":"Codex Z2C | RTX 5070","brand":"MSI","productName":"Codex Z2C | RTX 5070","merchant":"Bhphotovideo","rawPrice":1399,"rawMsrp":1599,"price":"1399","msrp":"1599","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $200","savingType":"amount","isPrime":false,"starRating":null,"description":"The headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders. Key specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD","text":"\u003cp\u003eThe headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-7","url":"https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384","image":"https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png","title":"Slate | RTX 5060 Ti 8 GB","brand":"iBuyPower","productName":"Slate | RTX 5060 Ti 8 GB","merchant":"Walmart","rawPrice":1399,"rawMsrp":1799,"price":"1399","msrp":"1799","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $400","savingType":"amount","isPrime":false,"starRating":null,"description":"This is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though. Key specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD","text":"\u003cp\u003eThis is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-8","url":"https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210","image":"https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png","title":"Omen 35L Valorant | RTX 5060 Ti 16 GB","brand":"HP","productName":"Omen 35L Valorant | RTX 5060 Ti 16 GB","merchant":"Bestbuy","rawPrice":1399.99,"rawMsrp":1919.99,"price":"1399.99","msrp":"1919.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $520","savingType":"amount","isPrime":false,"starRating":null,"description":"Yes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity. Key specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eYes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-9","url":"https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663","image":"https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png","title":"Codex R2 AI | RTX 5070","brand":"MSI","productName":"Codex R2 AI | RTX 5070","merchant":"Walmart","rawPrice":1499,"rawMsrp":0,"price":"1499","msrp":"","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"For mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eFor mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-10","url":"https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ","image":"https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png","title":"Gaming Blaze 5 | RTX 5070","brand":"Skytech","productName":"Gaming Blaze 5 | RTX 5070","merchant":"Amazon","rawPrice":1599.99,"rawMsrp":1699.99,"price":"1599.99","msrp":"1699.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $100","savingType":"amount","isPrime":false,"starRating":null,"description":"We're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. Key specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eWe're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-11","url":"https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163","image":"https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png","title":"Nitro 85 | RTX 5070","brand":"Acer","productName":"Nitro 85 | RTX 5070","merchant":"Walmart","rawPrice":1499,"rawMsrp":2099.99,"price":"1499","msrp":"2099.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $600.99","savingType":"amount","isPrime":false,"starRating":null,"description":"Another RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eAnother RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true}],"GB":[{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-25","url":"https://www.awd-it.co.uk/awd-it-lian-li-a3-amd-ryzen-5500-1tb-ssd-nvidia-rtx-5060-8gb-microsoft-windows-11-next-day-gaming-pc.html","image":"https://cdn.mos.cms.futurecdn.net/AVW9QmY6adHZpYRTKmMiCm.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/AVW9QmY6adHZpYRTKmMiCm.png","title":"Lian Li A3 | RTX 5060 8 GB","brand":"AWD-IT","productName":"Lian Li A3 | RTX 5060 8 GB","merchant":"Awd-it","rawPrice":949.99,"rawMsrp":1099.99,"price":"949.99","msrp":"1099.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £150","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a great price for all you SFF (small form factor) lovers. You're getting an older and not very powerful CPU, and only 16 GB of DDR4 RAM, but for a cheap, portable gaming system these should serve just fine alongside the RTX 5060. Usually you have to pay the SFF tax for a mini PC, so it's great to see such a low price on this one. Don't expect miracles with this hardware, but for some light gaming and a small physical footprint, look no further. Key specs: Ryzen 5 5500 | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eThis is a great price for all you SFF (small form factor) lovers. You're getting an older and not very powerful CPU, and only 16 GB of DDR4 RAM, but for a cheap, portable gaming system these should serve just fine alongside the RTX 5060. Usually you have to pay the SFF tax for a mini PC, so it's great to see such a low price on this one. Don't expect miracles with this hardware, but for some light gaming and a small physical footprint, look no further.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 5500 | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-26","url":"https://www.ebuyer.com/medion-medion-erazer-recon-e45-rtx-5060-gaming-pc---amd-ryzen-5-5500-32gb-1tb-ssd---black-714220","image":"https://cdn.mos.cms.futurecdn.net/iWWRgb5sR68u4dz8Y2wLh8.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/iWWRgb5sR68u4dz8Y2wLh8.png","title":"Erazer Recon E45 | RTX 5060","brand":"Medion","productName":"Erazer Recon E45 | RTX 5060","merchant":"Ebuyer","rawPrice":999.99,"rawMsrp":1099.99,"price":"999.99","msrp":"1099.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £100","savingType":"amount","isPrime":false,"starRating":null,"description":"For £1,000, this is actually a very well-rounded rig. It might be running some previous-gen hardware in the form of the CPU and RAM, but for a budget PC it'll serve just fine. Particularly noteworthy here is that you're getting 32 GB of RAM, while most rigs around this price range opt for just 16 GB. Key specs: Ryzen 5 5500 | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eFor £1,000, this is actually a very well-rounded rig. It might be running some previous-gen hardware in the form of the CPU and RAM, but for a budget PC it'll serve just fine. Particularly noteworthy here is that you're getting 32 GB of RAM, while most rigs around this price range opt for just 16 GB. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 5500 | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-27","url":"https://www.overclockers.co.uk/ocuk-gaming-quartz-intel-core-i5-12400f-rtx-5060-pre-built-gaming-pc-fs-pb01-ep.html","image":"https://cdn.mos.cms.futurecdn.net/Fc5qaLhxY59pa7M7qjtDkH.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/Fc5qaLhxY59pa7M7qjtDkH.png","title":"Gaming Quartz | RTX 5060","brand":"OcUK","productName":"Gaming Quartz | RTX 5060","merchant":"Overclockers","rawPrice":1099.99,"rawMsrp":0,"price":"1099.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"If you're looking for something around the £1,000 mark, something like this gaming PC will be your best bet. Don't expect to be able to play all the latest titles on max settings and high resolutions, but for 1080p it'll do great, and should even handle smooth 1440p gaming in most games if you're willing to mess around with your settings a little. Key specs: Core i5 12400F | RTX 5060 | 16 GB DDR5-5200 | 1 TB SSD","text":"\u003cp\u003eIf you're looking for something around the £1,000 mark, something like this gaming PC will be your best bet. Don't expect to be able to play all the latest titles on max settings and high resolutions, but for 1080p it'll do great, and should even handle smooth 1440p gaming in most games if you're willing to mess around with your settings a little.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 12400F | RTX 5060 | 16 GB DDR5-5200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-28","url":"https://www.scan.co.uk/products/scan-performance-rtx-intel-core-i5-14400f-32gb-ddr5-8gb-nvidia-rtx-5060-ti-1tb-m2-ssd-win-11","image":"https://cdn.mos.cms.futurecdn.net/ceP5HpoWodaeqLmoAT6Tuk.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/ceP5HpoWodaeqLmoAT6Tuk.png","title":"Performance RTX | RTX 5060 Ti 8 GB","brand":"Scan","productName":"Performance RTX | RTX 5060 Ti 8 GB","merchant":"Scan","rawPrice":1349.99,"rawMsrp":0,"price":"1349.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"There are some definite caveats to this build—mainly its slow RAM—but for gaming on a budget closer to $1,000 than $2,000, I'd say this is a good shout. The RTX 5060 Ti, even with just 8 GB of VRAM, should manage almost any modern game at 1080p or 1440p, provided you don't mind lowering your settings a little in more demanding titles. Key specs: Core i5 14400F | RTX 5060 Ti 8 GB | 16 GB DDR5-4800 | 1 TB SSD","text":"\u003cp\u003eThere are some definite caveats to this build—mainly its slow RAM—but for gaming on a budget closer to $1,000 than $2,000, I'd say this is a good shout. The RTX 5060 Ti, even with just 8 GB of VRAM, should manage almost any modern game at 1080p or 1440p, provided you don't mind lowering your settings a little in more demanding titles.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 14400F | RTX 5060 Ti 8 GB | 16 GB DDR5-4800 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-29","url":"https://www.cyberpowersystem.co.uk/system/ultra-57-d457-next-day-pc","image":"https://cdn.mos.cms.futurecdn.net/zzz7AXsxEZgTz6QPgm98cD.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/zzz7AXsxEZgTz6QPgm98cD.png","title":"Ultra 57 D457 | RX 9070 16 GB","brand":"CyberPowerPC","productName":"Ultra 57 D457 | RX 9070 16 GB","merchant":"Cyberpowersystem","rawPrice":1399.2,"rawMsrp":1499.2,"price":"1399.2","msrp":"1499.2","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £100","savingType":"amount","isPrime":false,"starRating":null,"description":"In some ways this is a peculiar build, because you're getting a relatively high-end graphics card alongside just 16 GB of DDR4 RAM. But in other ways, it's an absolute steal, given you're getting this raw GPU power for well under £1,500. And with 16 GB of VRAM on that GPU, to boot. Key specs: Ryzen 7 5700X | RX 9070 16 GB | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eIn some ways this is a peculiar build, because you're getting a relatively high-end graphics card alongside just 16 GB of DDR4 RAM. But in other ways, it's an absolute steal, given you're getting this raw GPU power for well under £1,500. And with 16 GB of VRAM on that GPU, to boot.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 5700X | RX 9070 16 GB | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-30","url":"https://www.cclonline.com/hzn-gam-core-203-nd-horizon-ryzen-5-rtx-5070-pre-built-gaming-pc/","image":"https://cdn.mos.cms.futurecdn.net/qUj9RFgagtZPy6KzuboZqU.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/qUj9RFgagtZPy6KzuboZqU.png","title":"Horizon | RTX 5070","brand":"CCL","productName":"Horizon | RTX 5070","merchant":"Cclonline","rawPrice":1449.99,"rawMsrp":0,"price":"1449.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"You're not getting the best CPU here, but for gaming it should do fine, especially with that RAM being dual-channel. The main allure here is getting an RTX 5070 in your build for this cheap of a price. If you're looking for a mid-range build for as cheap as possible, this one is worth considering. Key specs: Ryzen 5 8400F | RTX 5070 | 16 GB DDR5 | 1 TB SSD","text":"\u003cp\u003eYou're not getting the best CPU here, but for gaming it should do fine, especially with that RAM being dual-channel. The main allure here is getting an RTX 5070 in your build for this cheap of a price. If you're looking for a mid-range build for as cheap as possible, this one is worth considering.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 8400F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-31","url":"https://www.cyberpowersystem.co.uk/system/infinity-u597-next-day-pc","image":"https://cdn.mos.cms.futurecdn.net/Z88KYeCSimmFYvChrKrx5C.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/Z88KYeCSimmFYvChrKrx5C.png","title":"Infinity U597 | RX 9070 16 GB","brand":"CyberPowerPC","productName":"Infinity U597 | RX 9070 16 GB","merchant":"Cyberpowersystem","rawPrice":1599.6,"rawMsrp":0,"price":"1599.6","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"This rig might not have the most powerful CPU in the world, but it does come with 32 GB of DDR5 RAM, which gives it some great longevity during the current global memory shortage. And that RX 9070 is a fantastic midrange GPU that can even come close to matching some higher-end ones with a little overclocking. Key specs: Core Ultra 5 225F | RX 9070 16 GB | 32 GB DDR5-5600 | 1 TB SSD","text":"\u003cp\u003eThis rig might not have the most powerful CPU in the world, but it does come with 32 GB of DDR5 RAM, which gives it some great longevity during the current global memory shortage. And that RX 9070 is a fantastic midrange GPU that can even come close to matching some higher-end ones with a little overclocking.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 5 225F | RX 9070 16 GB | 32 GB DDR5-5600 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-32","url":"https://www.awd-it.co.uk/awd-it-frame-4000d-rs-ryzen-5-9600x-gaming-pc-rx-9070-xt-16gb-desktop-pc-for-gaming.html","image":"https://cdn.mos.cms.futurecdn.net/7nX84VjZFm6crXfae2UtF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/7nX84VjZFm6crXfae2UtF.png","title":"Frame 4000D | RX 9070 XT","brand":"AWD-IT","productName":"Frame 4000D | RX 9070 XT","merchant":"Awd-it","rawPrice":1829.97,"rawMsrp":2039.97,"price":"1829.97","msrp":"2039.97","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £210","savingType":"amount","isPrime":false,"starRating":null,"description":"This all-AMD gaming PC is about as cheap as you'll get for some bona fide high-end gameplay these days. You are having to settle for just 1 TB of storage and not the highest-end CPU, but it's still a more than capable rig, even for 4K gaming in most games. Just make sure you configure the build to match the specs below and price listed here. Key specs: Ryzen 5 9600X | RX 9070 XT | 16 GB DDR5-6000 | 1 TB SSD (Kingston ver.)","text":"\u003cp\u003eThis all-AMD gaming PC is about as cheap as you'll get for some bona fide high-end gameplay these days. You are having to settle for just 1 TB of storage and not the highest-end CPU, but it's still a more than capable rig, even for 4K gaming in most games. Just make sure you \u003cstrong\u003econfigure the build to match the specs below\u003c/strong\u003e and price listed here.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 9600X | RX 9070 XT | 16 GB DDR5-6000 | 1 TB SSD (Kingston ver.)\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-33","url":"https://www.scan.co.uk/products/scan-performance-rtx-intel-core-ultra-5-250k-32gb-ddr5-nvidia-rtx-5070-ti-1tb-m2-ssd-win-11","image":"https://cdn.mos.cms.futurecdn.net/orxckvHVNR5978oY9DCAE.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/orxckvHVNR5978oY9DCAE.png","title":"Performance RTX | RTX 5070 Ti","brand":"Scan","productName":"Performance RTX | RTX 5070 Ti","merchant":"Scan","rawPrice":2229.98,"rawMsrp":0,"price":"2229.98","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"This might actually be the best shout for a high-end gaming PC right now. Of course the RTX 5070 Ti is fantastic, as is 32 GB of fast RAM during a memory shortage. But that CPU is a thing of beauty, too. The refreshed Arrow Lake chip performs about as well as a lower-end X3D chip (which means pretty damn well) but also happens to do incredibly well at productivity and other CPU-intensive tasks, making this a very well-rounded build. Key specs: Core Ultra 5 250K Plus | RTX 5070 Ti | 32 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eThis might actually be the best shout for a high-end gaming PC right now. Of course the RTX 5070 Ti is fantastic, as is 32 GB of fast RAM during a memory shortage. But that CPU is a thing of beauty, too. The refreshed Arrow Lake chip performs about as well as a lower-end X3D chip (which means pretty damn well) but also happens to do incredibly well at productivity and other CPU-intensive tasks, making this a very well-rounded build.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 5 250K Plus | RTX 5070 Ti | 32 GB DDR5-6000 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-34","url":"https://www.chillblast.com/pcs/chillblast-helios-ryzen-7-9800x3d-rx-9070-xt-pre-built-gaming-pc","image":"https://cdn.mos.cms.futurecdn.net/MxKFSxhKBBinWcNFkTcxqE.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/MxKFSxhKBBinWcNFkTcxqE.png","title":"Helios | RX 9070 XT","brand":"Chillblast","productName":"Helios | RX 9070 XT","merchant":"Chillblast","rawPrice":2499.99,"rawMsrp":0,"price":"2499.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"If you're happy opting for an AMD rather than an Nvidia GPU, this is about as high-end of a rig for such a low price as you can get right now. The best CPU on the market, paired with AMD's best GPU, plus a whole heap of memory and storage during a global memory shortage. Lovely. Key specs: Ryzen 7 9800X3D | RX 9070 XT | 32 GB DDR5-5200 | 2 TB SSD","text":"\u003cp\u003eIf you're happy opting for an AMD rather than an Nvidia GPU, this is about as high-end of a rig for such a low price as you can get right now. The best CPU on the market, paired with AMD's best GPU, plus a whole heap of memory and storage during a global memory shortage. Lovely.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 9800X3D | RX 9070 XT | 32 GB DDR5-5200 | 2 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-35","url":"https://www.scan.co.uk/products/scan-performance-rtx-amd-ryzen-7-7800x3d-32gb-ddr5-16gb-nvidia-rtx-5080-1tb-m2-ssd-win-11","image":"https://cdn.mos.cms.futurecdn.net/tS7QZRFVL4bgjMiJqV9D8Q.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/tS7QZRFVL4bgjMiJqV9D8Q.png","title":"Performance RTX | RTX 5080","brand":"Scan","productName":"Performance RTX | RTX 5080","merchant":"Scan","rawPrice":2649.98,"rawMsrp":0,"price":"2649.98","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"If you're gonna go for a high-end RTX 5080 rig, you also want the CPU to match, and that's what you're getting here. Sure, it's not a current-gen X3D chip, but an X3D chip it is nonetheless, and that means some fantastic gaming performance. There'll be little worry of significant bottlenecks from either the CPU or GPU here, even in the latest demanding games at very high settings. Key specs: Ryzen 7 7800X3D | RTX 5080 | 32 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eIf you're gonna go for a high-end RTX 5080 rig, you also want the CPU to match, and that's what you're getting here. Sure, it's not a \u003cem\u003ecurrent\u003c/em\u003e-gen X3D chip, but an X3D chip it is nonetheless, and that means some fantastic gaming performance. There'll be little worry of significant bottlenecks from either the CPU or GPU here, even in the latest demanding games at very high settings.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 7800X3D | RTX 5080 | 32 GB DDR5-6000 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dEo6w5awdyYLFzVRfyb5xY-54","url":"https://www.amazon.co.uk/Lexar-Internal-Desktop-Computer-LNS100-512AMZN/dp/B07TQSYBPH/","image":"https://cdn.mos.cms.futurecdn.net/vKnpP6CD5ERjXHziCSaqG7.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/vKnpP6CD5ERjXHziCSaqG7.jpg","title":"NS100 | 512 GB","brand":"Lexar","productName":"NS100 | 512 GB","merchant":"Amazon","rawPrice":82.99,"rawMsrp":132.99,"price":"82.99","msrp":"132.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £50","savingType":"amount","isPrime":false,"starRating":null,"description":"For just storing documents, this small SATA SSD is a lot faster than a traditional HDD, and Lexar makes reliable and robust SSDs. You're still better off getting an NVMe M.2 SSD for games and your operating system, though. Key specs: 2.5-inch | SATA 6 Gb/s | 550 MB/s read | 520 MB/s write","text":"\u003cp\u003eFor just storing documents, this small SATA SSD is a lot faster than a traditional HDD, and Lexar makes reliable and robust SSDs. You're still better off getting an NVMe M.2 SSD for games and your operating system, though.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 2.5-inch | SATA 6 Gb/s | 550 MB/s read | 520 MB/s write\u003c/strong\u003e\u003c/p\u003e","authorName":"Jess Kinghorn","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png","documentUrl":"best-ssd-deals-today","modifiedDate":"2026-09-11T09:37:08Z","isFeatured":false,"hasCommerceOffer":true}],"AU":[]},"regionalDealRailData":{"US":{"brands":[{"formatted_value":"Acer","count":36},{"formatted_value":"MSI","count":33},{"formatted_value":"Asus","count":18},{"formatted_value":"Crucial","count":17},{"formatted_value":"Samsung","count":14},{"formatted_value":"Andromeda Insights","count":13},{"formatted_value":"Gigabyte","count":13},{"formatted_value":"Team Group","count":11},{"formatted_value":"ASRock","count":11},{"formatted_value":"WD_Black","count":9},{"formatted_value":"iBuyPower","count":8},{"formatted_value":"ABS","count":7},{"formatted_value":"Skytech","count":7},{"formatted_value":"LG","count":7},{"formatted_value":"HP","count":6},{"formatted_value":"KTC","count":6},{"formatted_value":"Silicon Power","count":5},{"formatted_value":"Adata","count":5},{"formatted_value":"PNY","count":5},{"formatted_value":"Lenovo","count":5},{"formatted_value":"Koorui","count":4},{"formatted_value":"Alienware","count":4},{"formatted_value":"Razer","count":4},{"formatted_value":"Biwin","count":3},{"formatted_value":"Patriot","count":3},{"formatted_value":"Yawyore","count":2},{"formatted_value":"Stormcraft","count":2},{"formatted_value":"CyberPowerPC","count":2},{"formatted_value":"AOC","count":2},{"formatted_value":"Kingston","count":2},{"formatted_value":"Lexar","count":2},{"formatted_value":"WD Blue","count":2},{"formatted_value":"Dell","count":2},{"formatted_value":"Innocn","count":2},{"formatted_value":"HyperX","count":2},{"formatted_value":"Logitech","count":2},{"formatted_value":"Western Digital WD Blue","count":1},{"formatted_value":"WD","count":1},{"formatted_value":"Yeston","count":1},{"formatted_value":"PowerColor","count":1},{"formatted_value":"Steam","count":1},{"formatted_value":"Onix Lumi","count":1},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1},{"formatted_value":"AVGPC","count":1},{"formatted_value":"Thermaltake","count":1}],"freeformTagCounts":{"intel":25,"deals":163,"ryzen":28,"gaming-pc":33,"hardware":251,"oled":2,"aoc-q27gazd":1,"1440p":1,"1440p-gaming-monitor":1,"gaming-monitor":10,"gaming-monitor-deal":9,"aoc":1,"deal":47,"ssd":54,"solid-state-drive":54,"solid-state":54,"hdd":54,"hard-drive":54,"storage":54,"gpu":17,"graphics-card":17,"buying-guide":15,"monitor":8,"esport-monitor":7,"monitor-deals":8,"1080p":2,"4k":2,"4k-monitor":7,"4k-gaming":2,"koorui":1,"koorui-g2741l":1,"monitors":36,"gaming-laptop":24,"budget":24,"cheap":24,"gaming-pc-deals":9,"collections":8,"labor-day":109,"nvidia":3,"amd":6,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"acer":4,"prebuilt":1,"prebuilt-pcs":1,"gaming-prebuilts":1,"rtx-5060-ti":1,"ddr4":1,"ddr4-ram":1,"memory":4,"memory-crisis":4,"amd-ryzen-5-5600x":1,"ryzen-5-5600x":1,"asrock":1,"oled-gaming-monitor":1,"msi":3,"thermaltake":3,"headset":1,"gaming-headset":1,"wireless-gaming-headset":1,"wireless":1,"hyperx":1,"hyperx-cloud-alpha-wireless":1,"rx-9070-xt":1,"memory-shortage":3,"cpu":3,"bundle":3,"newegg":3,"newegg-deals":3,"asus":3,"tuf-gaming":3,"am5":3,"samsung":3,"motherboard":3,"team-group":3,"combo-deal":3},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"deals","label":"deals","requestValue":"deals"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gpu","label":"GPU","requestValue":"GPU"},{"handle":"graphics-card","label":"graphics card","requestValue":"graphics card"},{"handle":"buying-guide","label":"buying guide","requestValue":"buying guide"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"esport-monitor","label":"esport monitor","requestValue":"esport monitor"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"amd","label":"AMD","requestValue":"AMD"},{"handle":"acer","label":"Acer","requestValue":"Acer"},{"handle":"memory","label":"memory","requestValue":"memory"},{"handle":"memory-crisis","label":"memory crisis","requestValue":"memory crisis"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"msi","label":"MSI","requestValue":"MSI"},{"handle":"thermaltake","label":"Thermaltake","requestValue":"Thermaltake"},{"handle":"memory-shortage","label":"memory shortage","requestValue":"memory shortage"},{"handle":"cpu","label":"CPU","requestValue":"CPU"},{"handle":"bundle","label":"bundle","requestValue":"bundle"},{"handle":"newegg","label":"Newegg","requestValue":"Newegg"},{"handle":"newegg-deals","label":"newegg deals","requestValue":"newegg deals"},{"handle":"asus","label":"Asus","requestValue":"Asus"},{"handle":"tuf-gaming","label":"TUF Gaming","requestValue":"TUF Gaming"},{"handle":"am5","label":"AM5","requestValue":"AM5"},{"handle":"samsung","label":"Samsung","requestValue":"Samsung"},{"handle":"motherboard","label":"Motherboard","requestValue":"Motherboard"},{"handle":"team-group","label":"team group","requestValue":"team group"},{"handle":"combo-deal","label":"combo deal","requestValue":"combo deal"},{"handle":"oled","label":"OLED","requestValue":"OLED"},{"handle":"1080p","label":"1080p","requestValue":"1080p"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"aoc-q27gazd","label":"AOC Q27GAZD","requestValue":"AOC Q27GAZD"},{"handle":"1440p","label":"1440p","requestValue":"1440p"},{"handle":"1440p-gaming-monitor","label":"1440p gaming monitor","requestValue":"1440p gaming monitor"},{"handle":"aoc","label":"AOC","requestValue":"AOC"},{"handle":"koorui","label":"Koorui","requestValue":"Koorui"},{"handle":"koorui-g2741l","label":"Koorui G2741L","requestValue":"Koorui G2741L"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"prebuilt","label":"prebuilt","requestValue":"prebuilt"},{"handle":"prebuilt-pcs","label":"Prebuilt PCs","requestValue":"Prebuilt PCs"},{"handle":"gaming-prebuilts","label":"gaming prebuilts","requestValue":"gaming prebuilts"},{"handle":"rtx-5060-ti","label":"RTX 5060 Ti","requestValue":"RTX 5060 Ti"},{"handle":"ddr4","label":"ddr4","requestValue":"ddr4"},{"handle":"ddr4-ram","label":"DDR4 RAM","requestValue":"DDR4 RAM"},{"handle":"amd-ryzen-5-5600x","label":"AMD Ryzen 5 5600X","requestValue":"AMD Ryzen 5 5600X"},{"handle":"ryzen-5-5600x","label":"Ryzen 5 5600X","requestValue":"Ryzen 5 5600X"},{"handle":"asrock","label":"ASRock","requestValue":"ASRock"},{"handle":"oled-gaming-monitor","label":"oled gaming monitor","requestValue":"oled gaming monitor"},{"handle":"headset","label":"headset","requestValue":"headset"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"wireless-gaming-headset","label":"wireless gaming headset","requestValue":"wireless gaming headset"},{"handle":"wireless","label":"wireless","requestValue":"wireless"},{"handle":"hyperx","label":"HyperX","requestValue":"HyperX"},{"handle":"hyperx-cloud-alpha-wireless","label":"HyperX Cloud Alpha Wireless","requestValue":"HyperX Cloud Alpha Wireless"},{"handle":"rx-9070-xt","label":"RX 9070 XT","requestValue":"RX 9070 XT"}],"tagCounts":{"Gaming PCs":58,"Hardware":251,"Gaming Monitors":45,"SSDs":54,"Storage":54,"Graphics Cards":17,"Gaming Laptops":24,"Controllers":1,"Gaming Headsets":1,"Gaming Audio":1},"tags":["Hardware","Gaming PCs","SSDs","Storage","Gaming Monitors","Gaming Laptops","Graphics Cards","Controllers","Gaming Headsets","Gaming Audio"],"totalAuthorCount":4,"totalDealCount":188},"GB":{"brands":[{"formatted_value":"Acer","count":11},{"formatted_value":"MSI","count":10},{"formatted_value":"Crucial","count":6},{"formatted_value":"Lexar","count":4},{"formatted_value":"Gigabyte","count":4},{"formatted_value":"Scan","count":3},{"formatted_value":"WD_Black","count":3},{"formatted_value":"Asus","count":3},{"formatted_value":"AOC","count":3},{"formatted_value":"AWD-IT","count":2},{"formatted_value":"Medion","count":2},{"formatted_value":"CyberPowerPC","count":2},{"formatted_value":"Biwin","count":2},{"formatted_value":"Sandisk","count":2},{"formatted_value":"Zotac","count":2},{"formatted_value":"Sapphire","count":2},{"formatted_value":"LG","count":2},{"formatted_value":"OcUK","count":1},{"formatted_value":"CCL","count":1},{"formatted_value":"Chillblast","count":1},{"formatted_value":"Silicon Power","count":1},{"formatted_value":"Adata","count":1},{"formatted_value":"Sparkle","count":1},{"formatted_value":"PNY","count":1},{"formatted_value":"Koorui","count":1},{"formatted_value":"KTC","count":1},{"formatted_value":"Alienware","count":1},{"formatted_value":"Samsung","count":1},{"formatted_value":"Lenovo","count":1}],"freeformTagCounts":{"intel":11,"deals":75,"ryzen":11,"gaming-pc":11,"hardware":75,"ssd":23,"solid-state-drive":23,"solid-state":23,"hdd":23,"hard-drive":23,"storage":23,"graphics-card":14,"buying-guide":14,"gpu":14,"monitors":15,"gaming-laptop":12,"budget":12,"cheap":12,"deal":12},"freeformTags":[{"handle":"deals","label":"deals","requestValue":"deals"},{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"graphics-card","label":"graphics card","requestValue":"graphics card"},{"handle":"buying-guide","label":"buying guide","requestValue":"buying guide"},{"handle":"gpu","label":"GPU","requestValue":"GPU"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"}],"tagCounts":{"Gaming PCs":23,"Hardware":75,"SSDs":23,"Storage":23,"Graphics Cards":14,"Gaming Monitors":15,"Gaming Laptops":12},"tags":["Hardware","Gaming PCs","SSDs","Storage","Gaming Monitors","Graphics Cards","Gaming Laptops"],"totalAuthorCount":3,"totalDealCount":74},"AU":{"brands":[],"freeformTagCounts":{},"freeformTags":[],"tagCounts":{},"tags":[],"totalAuthorCount":0,"totalDealCount":0}}}</script></fc-author-commerce-widget><script>(()=>{var Y1=Object.create;var lg=Object.defineProperty;var V1=Object.getOwnPropertyDescriptor;var X1=Object.getOwnPropertyNames;var Q1=Object.getPrototypeOf,K1=Object.prototype.hasOwnProperty;var rn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Z1=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of X1(t))!K1.call(e,l)&&l!==n&&lg(e,l,{get:()=>t[l],enumerable:!(a=V1(t,l))||a.enumerable});return e};var B=(e,t,n)=>(n=e!=null?Y1(Q1(e)):{},Z1(t||!e||!e.__esModule?lg(n,"default",{value:e,enumerable:!0}):n,e));var hg=rn(z=>{"use strict";var Rc=Symbol.for("react.transitional.element"),W1=Symbol.for("react.portal"),I1=Symbol.for("react.fragment"),J1=Symbol.for("react.strict_mode"),$1=Symbol.for("react.profiler"),eb=Symbol.for("react.consumer"),tb=Symbol.for("react.context"),nb=Symbol.for("react.forward_ref"),ab=Symbol.for("react.suspense"),lb=Symbol.for("react.memo"),cg=Symbol.for("react.lazy"),ib=Symbol.for("react.activity"),ig=Symbol.iterator;function rb(e){return e===null||typeof e!="object"?null:(e=ig&&e[ig]||e["@@iterator"],typeof e=="function"?e:null)}var sg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},dg=Object.assign,fg={};function gl(e,t,n){this.props=e,this.context=t,this.refs=fg,this.updater=n||sg}gl.prototype.isReactComponent={};gl.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};gl.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function gg(){}gg.prototype=gl.prototype;function Tc(e,t,n){this.props=e,this.context=t,this.refs=fg,this.updater=n||sg}var Ec=Tc.prototype=new gg;Ec.constructor=Tc;dg(Ec,gl.prototype);Ec.isPureReactComponent=!0;var rg=Array.isArray;function Cc(){}var fe={H:null,A:null,T:null,S:null},mg=Object.prototype.hasOwnProperty;function Dc(e,t,n){var a=n.ref;return{$$typeof:Rc,type:e,key:t,ref:a!==void 0?a:null,props:n}}function ob(e,t){return Dc(e.type,t,e.props)}function xc(e){return typeof e=="object"&&e!==null&&e.$$typeof===Rc}function ub(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var og=/\/+/g;function Sc(e,t){return typeof e=="object"&&e!==null&&e.key!=null?ub(""+e.key):t.toString(36)}function cb(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Cc,Cc):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function fl(e,t,n,a,l){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var r=!1;if(e===null)r=!0;else switch(i){case"bigint":case"string":case"number":r=!0;break;case"object":switch(e.$$typeof){case Rc:case W1:r=!0;break;case cg:return r=e._init,fl(r(e._payload),t,n,a,l)}}if(r)return l=l(e),r=a===""?"."+Sc(e,0):a,rg(l)?(n="",r!=null&&(n=r.replace(og,"$&/")+"/"),fl(l,t,n,"",function(c){return c})):l!=null&&(xc(l)&&(l=ob(l,n+(l.key==null||e&&e.key===l.key?"":(""+l.key).replace(og,"$&/")+"/")+r)),t.push(l)),1;r=0;var o=a===""?".":a+":";if(rg(e))for(var u=0;u<e.length;u++)a=e[u],i=o+Sc(a,u),r+=fl(a,t,n,i,l);else if(u=rb(e),typeof u=="function")for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,i=o+Sc(a,u++),r+=fl(a,t,n,i,l);else if(i==="object"){if(typeof e.then=="function")return fl(cb(e),t,n,a,l);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return r}function lo(e,t,n){if(e==null)return e;var a=[],l=0;return fl(e,a,"","",function(i){return t.call(n,i,l++)}),a}function sb(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var ug=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},db={map:lo,forEach:function(e,t,n){lo(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return lo(e,function(){t++}),t},toArray:function(e){return lo(e,function(t){return t})||[]},only:function(e){if(!xc(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};z.Activity=ib;z.Children=db;z.Component=gl;z.Fragment=I1;z.Profiler=$1;z.PureComponent=Tc;z.StrictMode=J1;z.Suspense=ab;z.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=fe;z.__COMPILER_RUNTIME={__proto__:null,c:function(e){return fe.H.useMemoCache(e)}};z.cache=function(e){return function(){return e.apply(null,arguments)}};z.cacheSignal=function(){return null};z.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=dg({},e.props),l=e.key;if(t!=null)for(i in t.key!==void 0&&(l=""+t.key),t)!mg.call(t,i)||i==="key"||i==="__self"||i==="__source"||i==="ref"&&t.ref===void 0||(a[i]=t[i]);var i=arguments.length-2;if(i===1)a.children=n;else if(1<i){for(var r=Array(i),o=0;o<i;o++)r[o]=arguments[o+2];a.children=r}return Dc(e.type,l,a)};z.createContext=function(e){return e={$$typeof:tb,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:eb,_context:e},e};z.createElement=function(e,t,n){var a,l={},i=null;if(t!=null)for(a in t.key!==void 0&&(i=""+t.key),t)mg.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(l[a]=t[a]);var r=arguments.length-2;if(r===1)l.children=n;else if(1<r){for(var o=Array(r),u=0;u<r;u++)o[u]=arguments[u+2];l.children=o}if(e&&e.defaultProps)for(a in r=e.defaultProps,r)l[a]===void 0&&(l[a]=r[a]);return Dc(e,i,l)};z.createRef=function(){return{current:null}};z.forwardRef=function(e){return{$$typeof:nb,render:e}};z.isValidElement=xc;z.lazy=function(e){return{$$typeof:cg,_payload:{_status:-1,_result:e},_init:sb}};z.memo=function(e,t){return{$$typeof:lb,type:e,compare:t===void 0?null:t}};z.startTransition=function(e){var t=fe.T,n={};fe.T=n;try{var a=e(),l=fe.S;l!==null&&l(n,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Cc,ug)}catch(i){ug(i)}finally{t!==null&&n.types!==null&&(t.types=n.types),fe.T=t}};z.unstable_useCacheRefresh=function(){return fe.H.useCacheRefresh()};z.use=function(e){return fe.H.use(e)};z.useActionState=function(e,t,n){return fe.H.useActionState(e,t,n)};z.useCallback=function(e,t){return fe.H.useCallback(e,t)};z.useContext=function(e){return fe.H.useContext(e)};z.useDebugValue=function(){};z.useDeferredValue=function(e,t){return fe.H.useDeferredValue(e,t)};z.useEffect=function(e,t){return fe.H.useEffect(e,t)};z.useEffectEvent=function(e){return fe.H.useEffectEvent(e)};z.useId=function(){return fe.H.useId()};z.useImperativeHandle=function(e,t,n){return fe.H.useImperativeHandle(e,t,n)};z.useInsertionEffect=function(e,t){return fe.H.useInsertionEffect(e,t)};z.useLayoutEffect=function(e,t){return fe.H.useLayoutEffect(e,t)};z.useMemo=function(e,t){return fe.H.useMemo(e,t)};z.useOptimistic=function(e,t){return fe.H.useOptimistic(e,t)};z.useReducer=function(e,t,n){return fe.H.useReducer(e,t,n)};z.useRef=function(e){return fe.H.useRef(e)};z.useState=function(e){return fe.H.useState(e)};z.useSyncExternalStore=function(e,t,n){return fe.H.useSyncExternalStore(e,t,n)};z.useTransition=function(){return fe.H.useTransition()};z.version="19.2.8"});var dt=rn((OS,yg)=>{"use strict";yg.exports=hg()});var Eg=rn(be=>{"use strict";function Nc(e,t){var n=e.length;e.push(t);e:for(;0<n;){var a=n-1>>>1,l=e[a];if(0<io(l,t))e[a]=t,e[n]=l,n=a;else break e}}function on(e){return e.length===0?null:e[0]}function oo(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,l=e.length,i=l>>>1;a<i;){var r=2*(a+1)-1,o=e[r],u=r+1,c=e[u];if(0>io(o,n))u<l&&0>io(c,o)?(e[a]=c,e[u]=n,a=u):(e[a]=o,e[r]=n,a=r);else if(u<l&&0>io(c,n))e[a]=c,e[u]=n,a=u;else break e}}return t}function io(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}be.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(pg=performance,be.unstable_now=function(){return pg.now()}):(Mc=Date,vg=Mc.now(),be.unstable_now=function(){return Mc.now()-vg});var pg,Mc,vg,bn=[],Yn=[],fb=1,Ht=null,Je=3,Oc=!1,xi=!1,Mi=!1,kc=!1,wg=typeof setTimeout=="function"?setTimeout:null,Sg=typeof clearTimeout=="function"?clearTimeout:null,bg=typeof setImmediate<"u"?setImmediate:null;function ro(e){for(var t=on(Yn);t!==null;){if(t.callback===null)oo(Yn);else if(t.startTime<=e)oo(Yn),t.sortIndex=t.expirationTime,Nc(bn,t);else break;t=on(Yn)}}function Lc(e){if(Mi=!1,ro(e),!xi)if(on(bn)!==null)xi=!0,hl||(hl=!0,ml());else{var t=on(Yn);t!==null&&zc(Lc,t.startTime-e)}}var hl=!1,_i=-1,Cg=5,Rg=-1;function Tg(){return kc?!0:!(be.unstable_now()-Rg<Cg)}function _c(){if(kc=!1,hl){var e=be.unstable_now();Rg=e;var t=!0;try{e:{xi=!1,Mi&&(Mi=!1,Sg(_i),_i=-1),Oc=!0;var n=Je;try{t:{for(ro(e),Ht=on(bn);Ht!==null&&!(Ht.expirationTime>e&&Tg());){var a=Ht.callback;if(typeof a=="function"){Ht.callback=null,Je=Ht.priorityLevel;var l=a(Ht.expirationTime<=e);if(e=be.unstable_now(),typeof l=="function"){Ht.callback=l,ro(e),t=!0;break t}Ht===on(bn)&&oo(bn),ro(e)}else oo(bn);Ht=on(bn)}if(Ht!==null)t=!0;else{var i=on(Yn);i!==null&&zc(Lc,i.startTime-e),t=!1}}break e}finally{Ht=null,Je=n,Oc=!1}t=void 0}}finally{t?ml():hl=!1}}}var ml;typeof bg=="function"?ml=function(){bg(_c)}:typeof MessageChannel<"u"?(Bc=new MessageChannel,Ag=Bc.port2,Bc.port1.onmessage=_c,ml=function(){Ag.postMessage(null)}):ml=function(){wg(_c,0)};var Bc,Ag;function zc(e,t){_i=wg(function(){e(be.unstable_now())},t)}be.unstable_IdlePriority=5;be.unstable_ImmediatePriority=1;be.unstable_LowPriority=4;be.unstable_NormalPriority=3;be.unstable_Profiling=null;be.unstable_UserBlockingPriority=2;be.unstable_cancelCallback=function(e){e.callback=null};be.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Cg=0<e?Math.floor(1e3/e):5};be.unstable_getCurrentPriorityLevel=function(){return Je};be.unstable_next=function(e){switch(Je){case 1:case 2:case 3:var t=3;break;default:t=Je}var n=Je;Je=t;try{return e()}finally{Je=n}};be.unstable_requestPaint=function(){kc=!0};be.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=Je;Je=e;try{return t()}finally{Je=n}};be.unstable_scheduleCallback=function(e,t,n){var a=be.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0<n?a+n:a):n=a,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return l=n+l,e={id:fb++,callback:t,priorityLevel:e,startTime:n,expirationTime:l,sortIndex:-1},n>a?(e.sortIndex=n,Nc(Yn,e),on(bn)===null&&e===on(Yn)&&(Mi?(Sg(_i),_i=-1):Mi=!0,zc(Lc,n-a))):(e.sortIndex=l,Nc(bn,e),xi||Oc||(xi=!0,hl||(hl=!0,ml()))),e};be.unstable_shouldYield=Tg;be.unstable_wrapCallback=function(e){var t=Je;return function(){var n=Je;Je=t;try{return e.apply(this,arguments)}finally{Je=n}}}});var xg=rn((LS,Dg)=>{"use strict";Dg.exports=Eg()});var _g=rn(it=>{"use strict";var gb=dt();function Mg(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Vn(){}var lt={d:{f:Vn,r:function(){throw Error(Mg(522))},D:Vn,C:Vn,L:Vn,m:Vn,X:Vn,S:Vn,M:Vn},p:0,findDOMNode:null},mb=Symbol.for("react.portal");function hb(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:mb,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}var Bi=gb.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function uo(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}it.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=lt;it.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(Mg(299));return hb(e,t,null,n)};it.flushSync=function(e){var t=Bi.T,n=lt.p;try{if(Bi.T=null,lt.p=2,e)return e()}finally{Bi.T=t,lt.p=n,lt.d.f()}};it.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,lt.d.C(e,t))};it.prefetchDNS=function(e){typeof e=="string"&&lt.d.D(e)};it.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var n=t.as,a=uo(n,t.crossOrigin),l=typeof t.integrity=="string"?t.integrity:void 0,i=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;n==="style"?lt.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:l,fetchPriority:i}):n==="script"&&lt.d.X(e,{crossOrigin:a,integrity:l,fetchPriority:i,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};it.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var n=uo(t.as,t.crossOrigin);lt.d.M(e,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&lt.d.M(e)};it.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var n=t.as,a=uo(n,t.crossOrigin);lt.d.L(e,n,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};it.preloadModule=function(e,t){if(typeof e=="string")if(t){var n=uo(t.as,t.crossOrigin);lt.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else lt.d.m(e)};it.requestFormReset=function(e){lt.d.r(e)};it.unstable_batchedUpdates=function(e,t){return e(t)};it.useFormState=function(e,t,n){return Bi.H.useFormState(e,t,n)};it.useFormStatus=function(){return Bi.H.useHostTransitionStatus()};it.version="19.2.8"});var Og=rn((HS,Ng)=>{"use strict";function Bg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Bg)}catch(e){console.error(e)}}Bg(),Ng.exports=_g()});var Vp=rn(ku=>{"use strict";var Ue=xg(),ih=dt(),yb=Og();function w(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function rh(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function pr(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function oh(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function uh(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function kg(e){if(pr(e)!==e)throw Error(w(188))}function pb(e){var t=e.alternate;if(!t){if(t=pr(e),t===null)throw Error(w(188));return t!==e?null:e}for(var n=e,a=t;;){var l=n.return;if(l===null)break;var i=l.alternate;if(i===null){if(a=l.return,a!==null){n=a;continue}break}if(l.child===i.child){for(i=l.child;i;){if(i===n)return kg(l),e;if(i===a)return kg(l),t;i=i.sibling}throw Error(w(188))}if(n.return!==a.return)n=l,a=i;else{for(var r=!1,o=l.child;o;){if(o===n){r=!0,n=l,a=i;break}if(o===a){r=!0,a=l,n=i;break}o=o.sibling}if(!r){for(o=i.child;o;){if(o===n){r=!0,n=i,a=l;break}if(o===a){r=!0,a=i,n=l;break}o=o.sibling}if(!r)throw Error(w(189))}}if(n.alternate!==a)throw Error(w(190))}if(n.tag!==3)throw Error(w(188));return n.stateNode.current===n?e:t}function ch(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=ch(e),t!==null)return t;e=e.sibling}return null}var he=Object.assign,vb=Symbol.for("react.element"),co=Symbol.for("react.transitional.element"),Gi=Symbol.for("react.portal"),wl=Symbol.for("react.fragment"),sh=Symbol.for("react.strict_mode"),ys=Symbol.for("react.profiler"),dh=Symbol.for("react.consumer"),Dn=Symbol.for("react.context"),dd=Symbol.for("react.forward_ref"),ps=Symbol.for("react.suspense"),vs=Symbol.for("react.suspense_list"),fd=Symbol.for("react.memo"),Xn=Symbol.for("react.lazy");Symbol.for("react.scope");var bs=Symbol.for("react.activity");Symbol.for("react.legacy_hidden");Symbol.for("react.tracing_marker");var bb=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var Lg=Symbol.iterator;function Ni(e){return e===null||typeof e!="object"?null:(e=Lg&&e[Lg]||e["@@iterator"],typeof e=="function"?e:null)}var Ab=Symbol.for("react.client.reference");function As(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Ab?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case wl:return"Fragment";case ys:return"Profiler";case sh:return"StrictMode";case ps:return"Suspense";case vs:return"SuspenseList";case bs:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case Gi:return"Portal";case Dn:return e.displayName||"Context";case dh:return(e._context.displayName||"Context")+".Consumer";case dd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case fd:return t=e.displayName||null,t!==null?t:As(e.type)||"Memo";case Xn:t=e._payload,e=e._init;try{return As(e(t))}catch{}}return null}var qi=Array.isArray,k=ih.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=yb.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ka={pending:!1,data:null,method:null,action:null},ws=[],Sl=-1;function fn(e){return{current:e}}function je(e){0>Sl||(e.current=ws[Sl],ws[Sl]=null,Sl--)}function se(e,t){Sl++,ws[Sl]=e.current,e.current=t}var dn=fn(null),ar=fn(null),aa=fn(null),jo=fn(null);function Yo(e,t){switch(se(aa,t),se(ar,e),se(dn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Fm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Fm(t),e=Bp(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}je(dn),se(dn,e)}function ql(){je(dn),je(ar),je(aa)}function Ss(e){e.memoizedState!==null&&se(jo,e);var t=dn.current,n=Bp(t,e.type);t!==n&&(se(ar,e),se(dn,n))}function Vo(e){ar.current===e&&(je(dn),je(ar)),jo.current===e&&(je(jo),mr._currentValue=ka)}var Hc,zg;function _a(e){if(Hc===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Hc=t&&t[1]||"",zg=-1<n.stack.indexOf(`    at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return``+Hc+e+zg}var Uc=!1;function Gc(e,t){if(!e||Uc)return"";Uc=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(m){var d=m}Reflect.construct(e,[],f)}else{try{f.call()}catch(m){d=m}e.call(f.prototype)}}else{try{throw Error()}catch(m){d=m}(f=e())&&typeof f.catch=="function"&&f.catch(function(){})}}catch(m){if(m&&d&&typeof m.stack=="string")return[m.stack,d.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var l=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");l&&l.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var i=a.DetermineComponentFrameRoot(),r=i[0],o=i[1];if(r&&o){var u=r.split(``),c=o.split(``);for(l=a=0;a<u.length&&!u[a].includes("DetermineComponentFrameRoot");)a++;for(;l<c.length&&!c[l].includes("DetermineComponentFrameRoot");)l++;if(a===u.length||l===c.length)for(a=u.length-1,l=c.length-1;1<=a&&0<=l&&u[a]!==c[l];)l--;for(;1<=a&&0<=l;a--,l--)if(u[a]!==c[l]){if(a!==1||l!==1)do if(a--,l--,0>l||u[a]!==c[l]){var s=``+u[a].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{Uc=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?_a(n):""}function wb(e,t){switch(e.tag){case 26:case 27:case 5:return _a(e.type);case 16:return _a("Lazy");case 13:return e.child!==t&&t!==null?_a("Suspense Fallback"):_a("Suspense");case 19:return _a("SuspenseList");case 0:case 15:return Gc(e.type,!1);case 11:return Gc(e.type.render,!1);case 1:return Gc(e.type,!0);case 31:return _a("Activity");default:return""}}function Hg(e){try{var t="",n=null;do t+=wb(e,n),n=e,e=e.return;while(e);return t}catch(a){return`Error generating stack: `+a.message+``+a.stack}}var Cs=Object.prototype.hasOwnProperty,gd=Ue.unstable_scheduleCallback,qc=Ue.unstable_cancelCallback,Sb=Ue.unstable_shouldYield,Cb=Ue.unstable_requestPaint,Tt=Ue.unstable_now,Rb=Ue.unstable_getCurrentPriorityLevel,fh=Ue.unstable_ImmediatePriority,gh=Ue.unstable_UserBlockingPriority,Xo=Ue.unstable_NormalPriority,Tb=Ue.unstable_LowPriority,mh=Ue.unstable_IdlePriority,Eb=Ue.log,Db=Ue.unstable_setDisableYieldValue,vr=null,Et=null;function Jn(e){if(typeof Eb=="function"&&Db(e),Et&&typeof Et.setStrictMode=="function")try{Et.setStrictMode(vr,e)}catch{}}var Dt=Math.clz32?Math.clz32:_b,xb=Math.log,Mb=Math.LN2;function _b(e){return e>>>=0,e===0?32:31-(xb(e)/Mb|0)|0}var so=256,fo=262144,go=4194304;function Ba(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vu(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var l=0,i=e.suspendedLanes,r=e.pingedLanes;e=e.warmLanes;var o=a&134217727;return o!==0?(a=o&~i,a!==0?l=Ba(a):(r&=o,r!==0?l=Ba(r):n||(n=o&~e,n!==0&&(l=Ba(n))))):(o=a&~i,o!==0?l=Ba(o):r!==0?l=Ba(r):n||(n=a&~e,n!==0&&(l=Ba(n)))),l===0?0:t!==0&&t!==l&&(t&i)===0&&(i=l&-l,n=t&-t,i>=n||i===32&&(n&4194048)!==0)?t:l}function br(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Bb(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hh(){var e=go;return go<<=1,(go&62914560)===0&&(go=4194304),e}function Pc(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ar(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Nb(e,t,n,a,l,i){var r=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,u=e.expirationTimes,c=e.hiddenUpdates;for(n=r&~n;0<n;){var s=31-Dt(n),f=1<<s;o[s]=0,u[s]=-1;var d=c[s];if(d!==null)for(c[s]=null,s=0;s<d.length;s++){var m=d[s];m!==null&&(m.lane&=-536870913)}n&=~f}a!==0&&yh(e,a,0),i!==0&&l===0&&e.tag!==0&&(e.suspendedLanes|=i&~(r&~t))}function yh(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-Dt(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function ph(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-Dt(n),l=1<<a;l&t|e[a]&t&&(e[a]|=t),n&=~l}}function vh(e,t){var n=t&-t;return n=(n&42)!==0?1:md(n),(n&(e.suspendedLanes|t))!==0?0:n}function md(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function hd(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function bh(){var e=Z.p;return e!==0?e:(e=window.event,e===void 0?32:Fp(e.type))}function Ug(e,t){var n=Z.p;try{return Z.p=e,t()}finally{Z.p=n}}var ya=Math.random().toString(36).slice(2),Xe="__reactFiber$"+ya,pt="__reactProps$"+ya,Il="__reactContainer$"+ya,Rs="__reactEvents$"+ya,Ob="__reactListeners$"+ya,kb="__reactHandles$"+ya,Gg="__reactResources$"+ya,wr="__reactMarker$"+ya;function yd(e){delete e[Xe],delete e[pt],delete e[Rs],delete e[Ob],delete e[kb]}function Cl(e){var t=e[Xe];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Il]||n[Xe]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Qm(e);e!==null;){if(n=e[Xe])return n;e=Qm(e)}return t}e=n,n=e.parentNode}return null}function Jl(e){if(e=e[Xe]||e[Il]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Pi(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(w(33))}function Ol(e){var t=e[Gg];return t||(t=e[Gg]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Fe(e){e[wr]=!0}var Ah=new Set,wh={};function Ya(e,t){Pl(e,t),Pl(e+"Capture",t)}function Pl(e,t){for(wh[e]=t,e=0;e<t.length;e++)Ah.add(t[e])}var Lb=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),qg={},Pg={};function zb(e){return Cs.call(Pg,e)?!0:Cs.call(qg,e)?!1:Lb.test(e)?Pg[e]=!0:(qg[e]=!0,!1)}function xo(e,t,n){if(zb(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function mo(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function An(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+a)}}function Gt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Sh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Hb(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var l=a.get,i=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(r){n=""+r,i.call(this,r)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(r){n=""+r},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ts(e){if(!e._valueTracker){var t=Sh(e)?"checked":"value";e._valueTracker=Hb(e,t,""+e[t])}}function Ch(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Sh(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function Qo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Ub=/[\n"\\]/g;function Ft(e){return e.replace(Ub,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Es(e,t,n,a,l,i,r,o){e.name="",r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?e.type=r:e.removeAttribute("type"),t!=null?r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Gt(t)):e.value!==""+Gt(t)&&(e.value=""+Gt(t)):r!=="submit"&&r!=="reset"||e.removeAttribute("value"),t!=null?Ds(e,r,Gt(t)):n!=null?Ds(e,r,Gt(n)):a!=null&&e.removeAttribute("value"),l==null&&i!=null&&(e.defaultChecked=!!i),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?e.name=""+Gt(o):e.removeAttribute("name")}function Rh(e,t,n,a,l,i,r,o){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.type=i),t!=null||n!=null){if(!(i!=="submit"&&i!=="reset"||t!=null)){Ts(e);return}n=n!=null?""+Gt(n):"",t=t!=null?""+Gt(t):n,o||t===e.value||(e.value=t),e.defaultValue=t}a=a??l,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=o?e.checked:!!a,e.defaultChecked=!!a,r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.name=r),Ts(e)}function Ds(e,t,n){t==="number"&&Qo(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function kl(e,t,n,a){if(e=e.options,t){t={};for(var l=0;l<n.length;l++)t["$"+n[l]]=!0;for(n=0;n<e.length;n++)l=t.hasOwnProperty("$"+e[n].value),e[n].selected!==l&&(e[n].selected=l),l&&a&&(e[n].defaultSelected=!0)}else{for(n=""+Gt(n),t=null,l=0;l<e.length;l++){if(e[l].value===n){e[l].selected=!0,a&&(e[l].defaultSelected=!0);return}t!==null||e[l].disabled||(t=e[l])}t!==null&&(t.selected=!0)}}function Th(e,t,n){if(t!=null&&(t=""+Gt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+Gt(n):""}function Eh(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error(w(92));if(qi(a)){if(1<a.length)throw Error(w(93));a=a[0]}n=a}n==null&&(n=""),t=n}n=Gt(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),Ts(e)}function Fl(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Gb=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Fg(e,t,n){var a=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||Gb.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Dh(e,t,n){if(t!=null&&typeof t!="object")throw Error(w(62));if(e=e.style,n!=null){for(var a in n)!n.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var l in t)a=t[l],t.hasOwnProperty(l)&&n[l]!==a&&Fg(e,l,a)}else for(var i in t)t.hasOwnProperty(i)&&Fg(e,i,t[i])}function pd(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var qb=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Pb=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Mo(e){return Pb.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function xn(){}var xs=null;function vd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Rl=null,Ll=null;function jg(e){var t=Jl(e);if(t&&(e=t.stateNode)){var n=e[pt]||null;e:switch(e=t.stateNode,t.type){case"input":if(Es(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+Ft(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var l=a[pt]||null;if(!l)throw Error(w(90));Es(a,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&Ch(a)}break e;case"textarea":Th(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&kl(e,!!n.multiple,t,!1)}}}var Fc=!1;function xh(e,t,n){if(Fc)return e(t,n);Fc=!0;try{var a=e(t);return a}finally{if(Fc=!1,(Rl!==null||Ll!==null)&&(_u(),Rl&&(t=Rl,e=Ll,Ll=Rl=null,jg(t),e)))for(t=0;t<e.length;t++)jg(e[t])}}function lr(e,t){var n=e.stateNode;if(n===null)return null;var a=n[pt]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(w(231,t,typeof n));return n}var On=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ms=!1;if(On)try{yl={},Object.defineProperty(yl,"passive",{get:function(){Ms=!0}}),window.addEventListener("test",yl,yl),window.removeEventListener("test",yl,yl)}catch{Ms=!1}var yl,$n=null,bd=null,_o=null;function Mh(){if(_o)return _o;var e,t=bd,n=t.length,a,l="value"in $n?$n.value:$n.textContent,i=l.length;for(e=0;e<n&&t[e]===l[e];e++);var r=n-e;for(a=1;a<=r&&t[n-a]===l[i-a];a++);return _o=l.slice(e,1<a?1-a:void 0)}function Bo(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function ho(){return!0}function Yg(){return!1}function vt(e){function t(n,a,l,i,r){this._reactName=n,this._targetInst=l,this.type=a,this.nativeEvent=i,this.target=r,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented!=null?i.defaultPrevented:i.returnValue===!1)?ho:Yg,this.isPropagationStopped=Yg,this}return he(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=ho)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=ho)},persist:function(){},isPersistent:ho}),t}var Va={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},bu=vt(Va),Sr=he({},Va,{view:0,detail:0}),Fb=vt(Sr),jc,Yc,Oi,Au=he({},Sr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Ad,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Oi&&(Oi&&e.type==="mousemove"?(jc=e.screenX-Oi.screenX,Yc=e.screenY-Oi.screenY):Yc=jc=0,Oi=e),jc)},movementY:function(e){return"movementY"in e?e.movementY:Yc}}),Vg=vt(Au),jb=he({},Au,{dataTransfer:0}),Yb=vt(jb),Vb=he({},Sr,{relatedTarget:0}),Vc=vt(Vb),Xb=he({},Va,{animationName:0,elapsedTime:0,pseudoElement:0}),Qb=vt(Xb),Kb=he({},Va,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Zb=vt(Kb),Wb=he({},Va,{data:0}),Xg=vt(Wb),Ib={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Jb={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},$b={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function eA(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=$b[e])?!!t[e]:!1}function Ad(){return eA}var tA=he({},Sr,{key:function(e){if(e.key){var t=Ib[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Bo(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Jb[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Ad,charCode:function(e){return e.type==="keypress"?Bo(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Bo(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),nA=vt(tA),aA=he({},Au,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Qg=vt(aA),lA=he({},Sr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Ad}),iA=vt(lA),rA=he({},Va,{propertyName:0,elapsedTime:0,pseudoElement:0}),oA=vt(rA),uA=he({},Au,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),cA=vt(uA),sA=he({},Va,{newState:0,oldState:0}),dA=vt(sA),fA=[9,13,27,32],wd=On&&"CompositionEvent"in window,Yi=null;On&&"documentMode"in document&&(Yi=document.documentMode);var gA=On&&"TextEvent"in window&&!Yi,_h=On&&(!wd||Yi&&8<Yi&&11>=Yi),Kg=" ",Zg=!1;function Bh(e,t){switch(e){case"keyup":return fA.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Tl=!1;function mA(e,t){switch(e){case"compositionend":return Nh(t);case"keypress":return t.which!==32?null:(Zg=!0,Kg);case"textInput":return e=t.data,e===Kg&&Zg?null:e;default:return null}}function hA(e,t){if(Tl)return e==="compositionend"||!wd&&Bh(e,t)?(e=Mh(),_o=bd=$n=null,Tl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return _h&&t.locale!=="ko"?null:t.data;default:return null}}var yA={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wg(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!yA[e.type]:t==="textarea"}function Oh(e,t,n,a){Rl?Ll?Ll.push(a):Ll=[a]:Rl=a,t=du(t,"onChange"),0<t.length&&(n=new bu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Vi=null,ir=null;function pA(e){xp(e,0)}function wu(e){var t=Pi(e);if(Ch(t))return e}function Ig(e,t){if(e==="change")return t}var kh=!1;On&&(On?(po="oninput"in document,po||(Xc=document.createElement("div"),Xc.setAttribute("oninput","return;"),po=typeof Xc.oninput=="function"),yo=po):yo=!1,kh=yo&&(!document.documentMode||9<document.documentMode));var yo,po,Xc;function Jg(){Vi&&(Vi.detachEvent("onpropertychange",Lh),ir=Vi=null)}function Lh(e){if(e.propertyName==="value"&&wu(ir)){var t=[];Oh(t,ir,e,vd(e)),xh(pA,t)}}function vA(e,t,n){e==="focusin"?(Jg(),Vi=t,ir=n,Vi.attachEvent("onpropertychange",Lh)):e==="focusout"&&Jg()}function bA(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return wu(ir)}function AA(e,t){if(e==="click")return wu(t)}function wA(e,t){if(e==="input"||e==="change")return wu(t)}function SA(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Mt=typeof Object.is=="function"?Object.is:SA;function rr(e,t){if(Mt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var l=n[a];if(!Cs.call(t,l)||!Mt(e[l],t[l]))return!1}return!0}function $g(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function em(e,t){var n=$g(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=$g(n)}}function zh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?zh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Hh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Qo(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Qo(e.document)}return t}function Sd(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var CA=On&&"documentMode"in document&&11>=document.documentMode,El=null,_s=null,Xi=null,Bs=!1;function tm(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Bs||El==null||El!==Qo(a)||(a=El,"selectionStart"in a&&Sd(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Xi&&rr(Xi,a)||(Xi=a,a=du(_s,"onSelect"),0<a.length&&(t=new bu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=El)))}function Ma(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Dl={animationend:Ma("Animation","AnimationEnd"),animationiteration:Ma("Animation","AnimationIteration"),animationstart:Ma("Animation","AnimationStart"),transitionrun:Ma("Transition","TransitionRun"),transitionstart:Ma("Transition","TransitionStart"),transitioncancel:Ma("Transition","TransitionCancel"),transitionend:Ma("Transition","TransitionEnd")},Qc={},Uh={};On&&(Uh=document.createElement("div").style,"AnimationEvent"in window||(delete Dl.animationend.animation,delete Dl.animationiteration.animation,delete Dl.animationstart.animation),"TransitionEvent"in window||delete Dl.transitionend.transition);function Xa(e){if(Qc[e])return Qc[e];if(!Dl[e])return e;var t=Dl[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Uh)return Qc[e]=t[n];return e}var Gh=Xa("animationend"),qh=Xa("animationiteration"),Ph=Xa("animationstart"),RA=Xa("transitionrun"),TA=Xa("transitionstart"),EA=Xa("transitioncancel"),Fh=Xa("transitionend"),jh=new Map,Ns="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Ns.push("scrollEnd");function en(e,t){jh.set(e,t),Ya(t,[e])}var Ko=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Ut=[],xl=0,Cd=0;function Su(){for(var e=xl,t=Cd=xl=0;t<e;){var n=Ut[t];Ut[t++]=null;var a=Ut[t];Ut[t++]=null;var l=Ut[t];Ut[t++]=null;var i=Ut[t];if(Ut[t++]=null,a!==null&&l!==null){var r=a.pending;r===null?l.next=l:(l.next=r.next,r.next=l),a.pending=l}i!==0&&Yh(n,l,i)}}function Cu(e,t,n,a){Ut[xl++]=e,Ut[xl++]=t,Ut[xl++]=n,Ut[xl++]=a,Cd|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function Rd(e,t,n,a){return Cu(e,t,n,a),Zo(e)}function Qa(e,t){return Cu(e,null,null,t),Zo(e)}function Yh(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var l=!1,i=e.return;i!==null;)i.childLanes|=n,a=i.alternate,a!==null&&(a.childLanes|=n),i.tag===22&&(e=i.stateNode,e===null||e._visibility&1||(l=!0)),e=i,i=i.return;return e.tag===3?(i=e.stateNode,l&&t!==null&&(l=31-Dt(n),e=i.hiddenUpdates,a=e[l],a===null?e[l]=[t]:a.push(t),t.lane=n|536870912),i):null}function Zo(e){if(50<tr)throw tr=0,$s=null,Error(w(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Ml={};function DA(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ct(e,t,n,a){return new DA(e,t,n,a)}function Td(e){return e=e.prototype,!(!e||!e.isReactComponent)}function _n(e,t){var n=e.alternate;return n===null?(n=Ct(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Vh(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function No(e,t,n,a,l,i){var r=0;if(a=e,typeof e=="function")Td(e)&&(r=1);else if(typeof e=="string")r=_w(e,n,dn.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case bs:return e=Ct(31,n,t,l),e.elementType=bs,e.lanes=i,e;case wl:return La(n.children,l,i,t);case sh:r=8,l|=24;break;case ys:return e=Ct(12,n,t,l|2),e.elementType=ys,e.lanes=i,e;case ps:return e=Ct(13,n,t,l),e.elementType=ps,e.lanes=i,e;case vs:return e=Ct(19,n,t,l),e.elementType=vs,e.lanes=i,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Dn:r=10;break e;case dh:r=9;break e;case dd:r=11;break e;case fd:r=14;break e;case Xn:r=16,a=null;break e}r=29,n=Error(w(130,e===null?"null":typeof e,"")),a=null}return t=Ct(r,n,t,l),t.elementType=e,t.type=a,t.lanes=i,t}function La(e,t,n,a){return e=Ct(7,e,a,t),e.lanes=n,e}function Kc(e,t,n){return e=Ct(6,e,null,t),e.lanes=n,e}function Xh(e){var t=Ct(18,null,null,0);return t.stateNode=e,t}function Zc(e,t,n){return t=Ct(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var nm=new WeakMap;function jt(e,t){if(typeof e=="object"&&e!==null){var n=nm.get(e);return n!==void 0?n:(t={value:e,source:t,stack:Hg(t)},nm.set(e,t),t)}return{value:e,source:t,stack:Hg(t)}}var _l=[],Bl=0,Wo=null,or=0,qt=[],Pt=0,fa=null,un=1,cn="";function Tn(e,t){_l[Bl++]=or,_l[Bl++]=Wo,Wo=e,or=t}function Qh(e,t,n){qt[Pt++]=un,qt[Pt++]=cn,qt[Pt++]=fa,fa=e;var a=un;e=cn;var l=32-Dt(a)-1;a&=~(1<<l),n+=1;var i=32-Dt(t)+l;if(30<i){var r=l-l%5;i=(a&(1<<r)-1).toString(32),a>>=r,l-=r,un=1<<32-Dt(t)+l|n<<l|a,cn=i+e}else un=1<<i|n<<l|a,cn=e}function Ed(e){e.return!==null&&(Tn(e,1),Qh(e,1,0))}function Dd(e){for(;e===Wo;)Wo=_l[--Bl],_l[Bl]=null,or=_l[--Bl],_l[Bl]=null;for(;e===fa;)fa=qt[--Pt],qt[Pt]=null,cn=qt[--Pt],qt[Pt]=null,un=qt[--Pt],qt[Pt]=null}function Kh(e,t){qt[Pt++]=un,qt[Pt++]=cn,qt[Pt++]=fa,un=t.id,cn=t.overflow,fa=e}var Qe=null,me=null,V=!1,la=null,Yt=!1,Os=Error(w(519));function ga(e){var t=Error(w(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw ur(jt(t,e)),Os}function am(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[Xe]=e,t[pt]=a,n){case"dialog":P("cancel",t),P("close",t);break;case"iframe":case"object":case"embed":P("load",t);break;case"video":case"audio":for(n=0;n<fr.length;n++)P(fr[n],t);break;case"source":P("error",t);break;case"img":case"image":case"link":P("error",t),P("load",t);break;case"details":P("toggle",t);break;case"input":P("invalid",t),Rh(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":P("invalid",t);break;case"textarea":P("invalid",t),Eh(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||_p(t.textContent,n)?(a.popover!=null&&(P("beforetoggle",t),P("toggle",t)),a.onScroll!=null&&P("scroll",t),a.onScrollEnd!=null&&P("scrollend",t),a.onClick!=null&&(t.onclick=xn),t=!0):t=!1,t||ga(e,!0)}function lm(e){for(Qe=e.return;Qe;)switch(Qe.tag){case 5:case 31:case 13:Yt=!1;return;case 27:case 3:Yt=!0;return;default:Qe=Qe.return}}function pl(e){if(e!==Qe)return!1;if(!V)return lm(e),V=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||ld(e.type,e.memoizedProps)),n=!n),n&&me&&ga(e),lm(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(317));me=Xm(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(317));me=Xm(e)}else t===27?(t=me,pa(e.type)?(e=ud,ud=null,me=e):me=t):me=Qe?Xt(e.stateNode.nextSibling):null;return!0}function Ga(){me=Qe=null,V=!1}function Wc(){var e=la;return e!==null&&(ht===null?ht=e:ht.push.apply(ht,e),la=null),e}function ur(e){la===null?la=[e]:la.push(e)}var ks=fn(null),Ka=null,Mn=null;function Kn(e,t,n){se(ks,t._currentValue),t._currentValue=n}function Bn(e){e._currentValue=ks.current,je(ks)}function Ls(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function zs(e,t,n,a){var l=e.child;for(l!==null&&(l.return=e);l!==null;){var i=l.dependencies;if(i!==null){var r=l.child;i=i.firstContext;e:for(;i!==null;){var o=i;i=l;for(var u=0;u<t.length;u++)if(o.context===t[u]){i.lanes|=n,o=i.alternate,o!==null&&(o.lanes|=n),Ls(i.return,n,e),a||(r=null);break e}i=o.next}}else if(l.tag===18){if(r=l.return,r===null)throw Error(w(341));r.lanes|=n,i=r.alternate,i!==null&&(i.lanes|=n),Ls(r,n,e),r=null}else r=l.child;if(r!==null)r.return=l;else for(r=l;r!==null;){if(r===e){r=null;break}if(l=r.sibling,l!==null){l.return=r.return,r=l;break}r=r.return}l=r}}function $l(e,t,n,a){e=null;for(var l=t,i=!1;l!==null;){if(!i){if((l.flags&524288)!==0)i=!0;else if((l.flags&262144)!==0)break}if(l.tag===10){var r=l.alternate;if(r===null)throw Error(w(387));if(r=r.memoizedProps,r!==null){var o=l.type;Mt(l.pendingProps.value,r.value)||(e!==null?e.push(o):e=[o])}}else if(l===jo.current){if(r=l.alternate,r===null)throw Error(w(387));r.memoizedState.memoizedState!==l.memoizedState.memoizedState&&(e!==null?e.push(mr):e=[mr])}l=l.return}e!==null&&zs(t,e,n,a),t.flags|=262144}function Io(e){for(e=e.firstContext;e!==null;){if(!Mt(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function qa(e){Ka=e,Mn=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Ke(e){return Zh(Ka,e)}function vo(e,t){return Ka===null&&qa(e),Zh(e,t)}function Zh(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Mn===null){if(e===null)throw Error(w(308));Mn=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Mn=Mn.next=t;return n}var xA=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},MA=Ue.unstable_scheduleCallback,_A=Ue.unstable_NormalPriority,ke={$$typeof:Dn,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function xd(){return{controller:new xA,data:new Map,refCount:0}}function Cr(e){e.refCount--,e.refCount===0&&MA(_A,function(){e.controller.abort()})}var Qi=null,Hs=0,jl=0,zl=null;function BA(e,t){if(Qi===null){var n=Qi=[];Hs=0,jl=$d(),zl={status:"pending",value:void 0,then:function(a){n.push(a)}}}return Hs++,t.then(im,im),t}function im(){if(--Hs===0&&Qi!==null){zl!==null&&(zl.status="fulfilled");var e=Qi;Qi=null,jl=0,zl=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function NA(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(l){n.push(l)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var l=0;l<n.length;l++)(0,n[l])(t)},function(l){for(a.status="rejected",a.reason=l,l=0;l<n.length;l++)(0,n[l])(void 0)}),a}var rm=k.S;k.S=function(e,t){cp=Tt(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&BA(e,t),rm!==null&&rm(e,t)};var za=fn(null);function Md(){var e=za.current;return e!==null?e:oe.pooledCache}function Oo(e,t){t===null?se(za,za.current):se(za,t.pool)}function Wh(){var e=Md();return e===null?null:{parent:ke._currentValue,pool:e}}var ei=Error(w(460)),_d=Error(w(474)),Ru=Error(w(542)),Jo={then:function(){}};function om(e){return e=e.status,e==="fulfilled"||e==="rejected"}function Ih(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(xn,xn),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,cm(e),e;default:if(typeof t.status=="string")t.then(xn,xn);else{if(e=oe,e!==null&&100<e.shellSuspendCounter)throw Error(w(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var l=t;l.status="fulfilled",l.value=a}},function(a){if(t.status==="pending"){var l=t;l.status="rejected",l.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,cm(e),e}throw Ha=t,ei}}function Na(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(Ha=n,ei):n}}var Ha=null;function um(){if(Ha===null)throw Error(w(459));var e=Ha;return Ha=null,e}function cm(e){if(e===ei||e===Ru)throw Error(w(483))}var Hl=null,cr=0;function bo(e){var t=cr;return cr+=1,Hl===null&&(Hl=[]),Ih(Hl,e,t)}function ki(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function Ao(e,t){throw t.$$typeof===vb?Error(w(525)):(e=Object.prototype.toString.call(t),Error(w(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function Jh(e){function t(h,g){if(e){var y=h.deletions;y===null?(h.deletions=[g],h.flags|=16):y.push(g)}}function n(h,g){if(!e)return null;for(;g!==null;)t(h,g),g=g.sibling;return null}function a(h){for(var g=new Map;h!==null;)h.key!==null?g.set(h.key,h):g.set(h.index,h),h=h.sibling;return g}function l(h,g){return h=_n(h,g),h.index=0,h.sibling=null,h}function i(h,g,y){return h.index=y,e?(y=h.alternate,y!==null?(y=y.index,y<g?(h.flags|=67108866,g):y):(h.flags|=67108866,g)):(h.flags|=1048576,g)}function r(h){return e&&h.alternate===null&&(h.flags|=67108866),h}function o(h,g,y,p){return g===null||g.tag!==6?(g=Kc(y,h.mode,p),g.return=h,g):(g=l(g,y),g.return=h,g)}function u(h,g,y,p){var C=y.type;return C===wl?s(h,g,y.props.children,p,y.key):g!==null&&(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Xn&&Na(C)===g.type)?(g=l(g,y.props),ki(g,y),g.return=h,g):(g=No(y.type,y.key,y.props,null,h.mode,p),ki(g,y),g.return=h,g)}function c(h,g,y,p){return g===null||g.tag!==4||g.stateNode.containerInfo!==y.containerInfo||g.stateNode.implementation!==y.implementation?(g=Zc(y,h.mode,p),g.return=h,g):(g=l(g,y.children||[]),g.return=h,g)}function s(h,g,y,p,C){return g===null||g.tag!==7?(g=La(y,h.mode,p,C),g.return=h,g):(g=l(g,y),g.return=h,g)}function f(h,g,y){if(typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint")return g=Kc(""+g,h.mode,y),g.return=h,g;if(typeof g=="object"&&g!==null){switch(g.$$typeof){case co:return y=No(g.type,g.key,g.props,null,h.mode,y),ki(y,g),y.return=h,y;case Gi:return g=Zc(g,h.mode,y),g.return=h,g;case Xn:return g=Na(g),f(h,g,y)}if(qi(g)||Ni(g))return g=La(g,h.mode,y,null),g.return=h,g;if(typeof g.then=="function")return f(h,bo(g),y);if(g.$$typeof===Dn)return f(h,vo(h,g),y);Ao(h,g)}return null}function d(h,g,y,p){var C=g!==null?g.key:null;if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return C!==null?null:o(h,g,""+y,p);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case co:return y.key===C?u(h,g,y,p):null;case Gi:return y.key===C?c(h,g,y,p):null;case Xn:return y=Na(y),d(h,g,y,p)}if(qi(y)||Ni(y))return C!==null?null:s(h,g,y,p,null);if(typeof y.then=="function")return d(h,g,bo(y),p);if(y.$$typeof===Dn)return d(h,g,vo(h,y),p);Ao(h,y)}return null}function m(h,g,y,p,C){if(typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint")return h=h.get(y)||null,o(g,h,""+p,C);if(typeof p=="object"&&p!==null){switch(p.$$typeof){case co:return h=h.get(p.key===null?y:p.key)||null,u(g,h,p,C);case Gi:return h=h.get(p.key===null?y:p.key)||null,c(g,h,p,C);case Xn:return p=Na(p),m(h,g,y,p,C)}if(qi(p)||Ni(p))return h=h.get(y)||null,s(g,h,p,C,null);if(typeof p.then=="function")return m(h,g,y,bo(p),C);if(p.$$typeof===Dn)return m(h,g,y,vo(g,p),C);Ao(g,p)}return null}function v(h,g,y,p){for(var C=null,R=null,T=g,M=g=0,S=null;T!==null&&M<y.length;M++){T.index>M?(S=T,T=null):S=T.sibling;var D=d(h,T,y[M],p);if(D===null){T===null&&(T=S);break}e&&T&&D.alternate===null&&t(h,T),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D,T=S}if(M===y.length)return n(h,T),V&&Tn(h,M),C;if(T===null){for(;M<y.length;M++)T=f(h,y[M],p),T!==null&&(g=i(T,g,M),R===null?C=T:R.sibling=T,R=T);return V&&Tn(h,M),C}for(T=a(T);M<y.length;M++)S=m(T,h,M,y[M],p),S!==null&&(e&&S.alternate!==null&&T.delete(S.key===null?M:S.key),g=i(S,g,M),R===null?C=S:R.sibling=S,R=S);return e&&T.forEach(function(G){return t(h,G)}),V&&Tn(h,M),C}function A(h,g,y,p){if(y==null)throw Error(w(151));for(var C=null,R=null,T=g,M=g=0,S=null,D=y.next();T!==null&&!D.done;M++,D=y.next()){T.index>M?(S=T,T=null):S=T.sibling;var G=d(h,T,D.value,p);if(G===null){T===null&&(T=S);break}e&&T&&G.alternate===null&&t(h,T),g=i(G,g,M),R===null?C=G:R.sibling=G,R=G,T=S}if(D.done)return n(h,T),V&&Tn(h,M),C;if(T===null){for(;!D.done;M++,D=y.next())D=f(h,D.value,p),D!==null&&(g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return V&&Tn(h,M),C}for(T=a(T);!D.done;M++,D=y.next())D=m(T,h,M,D.value,p),D!==null&&(e&&D.alternate!==null&&T.delete(D.key===null?M:D.key),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return e&&T.forEach(function(Se){return t(h,Se)}),V&&Tn(h,M),C}function b(h,g,y,p){if(typeof y=="object"&&y!==null&&y.type===wl&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case co:e:{for(var C=y.key;g!==null;){if(g.key===C){if(C=y.type,C===wl){if(g.tag===7){n(h,g.sibling),p=l(g,y.props.children),p.return=h,h=p;break e}}else if(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Xn&&Na(C)===g.type){n(h,g.sibling),p=l(g,y.props),ki(p,y),p.return=h,h=p;break e}n(h,g);break}else t(h,g);g=g.sibling}y.type===wl?(p=La(y.props.children,h.mode,p,y.key),p.return=h,h=p):(p=No(y.type,y.key,y.props,null,h.mode,p),ki(p,y),p.return=h,h=p)}return r(h);case Gi:e:{for(C=y.key;g!==null;){if(g.key===C)if(g.tag===4&&g.stateNode.containerInfo===y.containerInfo&&g.stateNode.implementation===y.implementation){n(h,g.sibling),p=l(g,y.children||[]),p.return=h,h=p;break e}else{n(h,g);break}else t(h,g);g=g.sibling}p=Zc(y,h.mode,p),p.return=h,h=p}return r(h);case Xn:return y=Na(y),b(h,g,y,p)}if(qi(y))return v(h,g,y,p);if(Ni(y)){if(C=Ni(y),typeof C!="function")throw Error(w(150));return y=C.call(y),A(h,g,y,p)}if(typeof y.then=="function")return b(h,g,bo(y),p);if(y.$$typeof===Dn)return b(h,g,vo(h,y),p);Ao(h,y)}return typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint"?(y=""+y,g!==null&&g.tag===6?(n(h,g.sibling),p=l(g,y),p.return=h,h=p):(n(h,g),p=Kc(y,h.mode,p),p.return=h,h=p),r(h)):n(h,g)}return function(h,g,y,p){try{cr=0;var C=b(h,g,y,p);return Hl=null,C}catch(T){if(T===ei||T===Ru)throw T;var R=Ct(29,T,null,h.mode);return R.lanes=p,R.return=h,R}finally{}}}var Pa=Jh(!0),$h=Jh(!1),Qn=!1;function Bd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Us(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function ia(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ra(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(K&2)!==0){var l=a.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),a.pending=t,t=Zo(e),Yh(e,null,n),t}return Cu(e,a,t,n),Zo(e)}function Ki(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,ph(e,n)}}function Ic(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var l=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var r={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};i===null?l=i=r:i=i.next=r,n=n.next}while(n!==null);i===null?l=i=t:i=i.next=t}else l=i=t;n={baseState:a.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Gs=!1;function Zi(){if(Gs){var e=zl;if(e!==null)throw e}}function Wi(e,t,n,a){Gs=!1;var l=e.updateQueue;Qn=!1;var i=l.firstBaseUpdate,r=l.lastBaseUpdate,o=l.shared.pending;if(o!==null){l.shared.pending=null;var u=o,c=u.next;u.next=null,r===null?i=c:r.next=c,r=u;var s=e.alternate;s!==null&&(s=s.updateQueue,o=s.lastBaseUpdate,o!==r&&(o===null?s.firstBaseUpdate=c:o.next=c,s.lastBaseUpdate=u))}if(i!==null){var f=l.baseState;r=0,s=c=u=null,o=i;do{var d=o.lane&-536870913,m=d!==o.lane;if(m?(j&d)===d:(a&d)===d){d!==0&&d===jl&&(Gs=!0),s!==null&&(s=s.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});e:{var v=e,A=o;d=t;var b=n;switch(A.tag){case 1:if(v=A.payload,typeof v=="function"){f=v.call(b,f,d);break e}f=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=A.payload,d=typeof v=="function"?v.call(b,f,d):v,d==null)break e;f=he({},f,d);break e;case 2:Qn=!0}}d=o.callback,d!==null&&(e.flags|=64,m&&(e.flags|=8192),m=l.callbacks,m===null?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:o.tag,payload:o.payload,callback:o.callback,next:null},s===null?(c=s=m,u=f):s=s.next=m,r|=d;if(o=o.next,o===null){if(o=l.shared.pending,o===null)break;m=o,o=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}while(!0);s===null&&(u=f),l.baseState=u,l.firstBaseUpdate=c,l.lastBaseUpdate=s,i===null&&(l.shared.lanes=0),ha|=r,e.lanes=r,e.memoizedState=f}}function ey(e,t){if(typeof e!="function")throw Error(w(191,e));e.call(t)}function ty(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)ey(n[e],t)}var Yl=fn(null),$o=fn(0);function sm(e,t){e=Hn,se($o,e),se(Yl,t),Hn=e|t.baseLanes}function qs(){se($o,Hn),se(Yl,Yl.current)}function Nd(){Hn=$o.current,je(Yl),je($o)}var _t=fn(null),Vt=null;function Zn(e){var t=e.alternate;se(Me,Me.current&1),se(_t,e),Vt===null&&(t===null||Yl.current!==null||t.memoizedState!==null)&&(Vt=e)}function Ps(e){se(Me,Me.current),se(_t,e),Vt===null&&(Vt=e)}function ny(e){e.tag===22?(se(Me,Me.current),se(_t,e),Vt===null&&(Vt=e)):Wn(e)}function Wn(){se(Me,Me.current),se(_t,_t.current)}function St(e){je(_t),Vt===e&&(Vt=null),je(Me)}var Me=fn(0);function eu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||rd(n)||od(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var kn=0,H=null,le=null,Ne=null,tu=!1,Ul=!1,Fa=!1,nu=0,sr=0,Gl=null,OA=0;function Ce(){throw Error(w(321))}function Od(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Mt(e[n],t[n]))return!1;return!0}function kd(e,t,n,a,l,i){return kn=i,H=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,k.H=e===null||e.memoizedState===null?Oy:Vd,Fa=!1,i=n(a,l),Fa=!1,Ul&&(i=ly(t,n,a,l)),ay(e),i}function ay(e){k.H=dr;var t=le!==null&&le.next!==null;if(kn=0,Ne=le=H=null,tu=!1,sr=0,Gl=null,t)throw Error(w(300));e===null||Le||(e=e.dependencies,e!==null&&Io(e)&&(Le=!0))}function ly(e,t,n,a){H=e;var l=0;do{if(Ul&&(Gl=null),sr=0,Ul=!1,25<=l)throw Error(w(301));if(l+=1,Ne=le=null,e.updateQueue!=null){var i=e.updateQueue;i.lastEffect=null,i.events=null,i.stores=null,i.memoCache!=null&&(i.memoCache.index=0)}k.H=ky,i=t(n,a)}while(Ul);return i}function kA(){var e=k.H,t=e.useState()[0];return t=typeof t.then=="function"?Rr(t):t,e=e.useState()[0],(le!==null?le.memoizedState:null)!==e&&(H.flags|=1024),t}function Ld(){var e=nu!==0;return nu=0,e}function zd(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Hd(e){if(tu){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}tu=!1}kn=0,Ne=le=H=null,Ul=!1,sr=nu=0,Gl=null}function rt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ne===null?H.memoizedState=Ne=e:Ne=Ne.next=e,Ne}function _e(){if(le===null){var e=H.alternate;e=e!==null?e.memoizedState:null}else e=le.next;var t=Ne===null?H.memoizedState:Ne.next;if(t!==null)Ne=t,le=e;else{if(e===null)throw H.alternate===null?Error(w(467)):Error(w(310));le=e,e={memoizedState:le.memoizedState,baseState:le.baseState,baseQueue:le.baseQueue,queue:le.queue,next:null},Ne===null?H.memoizedState=Ne=e:Ne=Ne.next=e}return Ne}function Tu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Rr(e){var t=sr;return sr+=1,Gl===null&&(Gl=[]),e=Ih(Gl,e,t),t=H,(Ne===null?t.memoizedState:Ne.next)===null&&(t=t.alternate,k.H=t===null||t.memoizedState===null?Oy:Vd),e}function Eu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Rr(e);if(e.$$typeof===Dn)return Ke(e)}throw Error(w(438,String(e)))}function Ud(e){var t=null,n=H.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=H.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(l){return l.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=Tu(),H.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=bb;return t.index++,n}function Ln(e,t){return typeof t=="function"?t(e):t}function ko(e){var t=_e();return Gd(t,le,e)}function Gd(e,t,n){var a=e.queue;if(a===null)throw Error(w(311));a.lastRenderedReducer=n;var l=e.baseQueue,i=a.pending;if(i!==null){if(l!==null){var r=l.next;l.next=i.next,i.next=r}t.baseQueue=l=i,a.pending=null}if(i=e.baseState,l===null)e.memoizedState=i;else{t=l.next;var o=r=null,u=null,c=t,s=!1;do{var f=c.lane&-536870913;if(f!==c.lane?(j&f)===f:(kn&f)===f){var d=c.revertLane;if(d===0)u!==null&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),f===jl&&(s=!0);else if((kn&d)===d){c=c.next,d===jl&&(s=!0);continue}else f={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=f,r=i):u=u.next=f,H.lanes|=d,ha|=d;f=c.action,Fa&&n(i,f),i=c.hasEagerState?c.eagerState:n(i,f)}else d={lane:f,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=d,r=i):u=u.next=d,H.lanes|=f,ha|=f;c=c.next}while(c!==null&&c!==t);if(u===null?r=i:u.next=o,!Mt(i,e.memoizedState)&&(Le=!0,s&&(n=zl,n!==null)))throw n;e.memoizedState=i,e.baseState=r,e.baseQueue=u,a.lastRenderedState=i}return l===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function Jc(e){var t=_e(),n=t.queue;if(n===null)throw Error(w(311));n.lastRenderedReducer=e;var a=n.dispatch,l=n.pending,i=t.memoizedState;if(l!==null){n.pending=null;var r=l=l.next;do i=e(i,r.action),r=r.next;while(r!==l);Mt(i,t.memoizedState)||(Le=!0),t.memoizedState=i,t.baseQueue===null&&(t.baseState=i),n.lastRenderedState=i}return[i,a]}function iy(e,t,n){var a=H,l=_e(),i=V;if(i){if(n===void 0)throw Error(w(407));n=n()}else n=t();var r=!Mt((le||l).memoizedState,n);if(r&&(l.memoizedState=n,Le=!0),l=l.queue,qd(uy.bind(null,a,l,e),[e]),l.getSnapshot!==t||r||Ne!==null&&Ne.memoizedState.tag&1){if(a.flags|=2048,Vl(9,{destroy:void 0},oy.bind(null,a,l,n,t),null),oe===null)throw Error(w(349));i||(kn&127)!==0||ry(a,t,n)}return n}function ry(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=H.updateQueue,t===null?(t=Tu(),H.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function oy(e,t,n,a){t.value=n,t.getSnapshot=a,cy(t)&&sy(e)}function uy(e,t,n){return n(function(){cy(t)&&sy(e)})}function cy(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Mt(e,n)}catch{return!0}}function sy(e){var t=Qa(e,2);t!==null&&yt(t,e,2)}function Fs(e){var t=rt();if(typeof e=="function"){var n=e;if(e=n(),Fa){Jn(!0);try{n()}finally{Jn(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:e},t}function dy(e,t,n,a){return e.baseState=n,Gd(e,le,typeof a=="function"?a:Ln)}function LA(e,t,n,a,l){if(xu(e))throw Error(w(485));if(e=t.action,e!==null){var i={payload:l,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(r){i.listeners.push(r)}};k.T!==null?n(!0):i.isTransition=!1,a(i),n=t.pending,n===null?(i.next=t.pending=i,fy(t,i)):(i.next=n.next,t.pending=n.next=i)}}function fy(e,t){var n=t.action,a=t.payload,l=e.state;if(t.isTransition){var i=k.T,r={};k.T=r;try{var o=n(l,a),u=k.S;u!==null&&u(r,o),dm(e,t,o)}catch(c){js(e,t,c)}finally{i!==null&&r.types!==null&&(i.types=r.types),k.T=i}}else try{i=n(l,a),dm(e,t,i)}catch(c){js(e,t,c)}}function dm(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(a){fm(e,t,a)},function(a){return js(e,t,a)}):fm(e,t,n)}function fm(e,t,n){t.status="fulfilled",t.value=n,gy(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,fy(e,n)))}function js(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,gy(t),t=t.next;while(t!==a)}e.action=null}function gy(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function my(e,t){return t}function gm(e,t){if(V){var n=oe.formState;if(n!==null){e:{var a=H;if(V){if(me){t:{for(var l=me,i=Yt;l.nodeType!==8;){if(!i){l=null;break t}if(l=Xt(l.nextSibling),l===null){l=null;break t}}i=l.data,l=i==="F!"||i==="F"?l:null}if(l){me=Xt(l.nextSibling),a=l.data==="F!";break e}}ga(a)}a=!1}a&&(t=n[0])}}return n=rt(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:my,lastRenderedState:t},n.queue=a,n=_y.bind(null,H,a),a.dispatch=n,a=Fs(!1),i=Yd.bind(null,H,!1,a.queue),a=rt(),l={state:t,dispatch:null,action:e,pending:null},a.queue=l,n=LA.bind(null,H,l,i,n),l.dispatch=n,a.memoizedState=e,[t,n,!1]}function mm(e){var t=_e();return hy(t,le,e)}function hy(e,t,n){if(t=Gd(e,t,my)[0],e=ko(Ln)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=Rr(t)}catch(r){throw r===ei?Ru:r}else a=t;t=_e();var l=t.queue,i=l.dispatch;return n!==t.memoizedState&&(H.flags|=2048,Vl(9,{destroy:void 0},zA.bind(null,l,n),null)),[a,i,e]}function zA(e,t){e.action=t}function hm(e){var t=_e(),n=le;if(n!==null)return hy(t,n,e);_e(),t=t.memoizedState,n=_e();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function Vl(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=H.updateQueue,t===null&&(t=Tu(),H.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function yy(){return _e().memoizedState}function Lo(e,t,n,a){var l=rt();H.flags|=e,l.memoizedState=Vl(1|t,{destroy:void 0},n,a===void 0?null:a)}function Du(e,t,n,a){var l=_e();a=a===void 0?null:a;var i=l.memoizedState.inst;le!==null&&a!==null&&Od(a,le.memoizedState.deps)?l.memoizedState=Vl(t,i,n,a):(H.flags|=e,l.memoizedState=Vl(1|t,i,n,a))}function ym(e,t){Lo(8390656,8,e,t)}function qd(e,t){Du(2048,8,e,t)}function HA(e){H.flags|=4;var t=H.updateQueue;if(t===null)t=Tu(),H.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function py(e){var t=_e().memoizedState;return HA({ref:t,nextImpl:e}),function(){if((K&2)!==0)throw Error(w(440));return t.impl.apply(void 0,arguments)}}function vy(e,t){return Du(4,2,e,t)}function by(e,t){return Du(4,4,e,t)}function Ay(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function wy(e,t,n){n=n!=null?n.concat([e]):null,Du(4,4,Ay.bind(null,t,e),n)}function Pd(){}function Sy(e,t){var n=_e();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&Od(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function Cy(e,t){var n=_e();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&Od(t,a[1]))return a[0];if(a=e(),Fa){Jn(!0);try{e()}finally{Jn(!1)}}return n.memoizedState=[a,t],a}function Fd(e,t,n){return n===void 0||(kn&1073741824)!==0&&(j&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=dp(),H.lanes|=e,ha|=e,n)}function Ry(e,t,n,a){return Mt(n,t)?n:Yl.current!==null?(e=Fd(e,n,a),Mt(e,t)||(Le=!0),e):(kn&42)===0||(kn&1073741824)!==0&&(j&261930)===0?(Le=!0,e.memoizedState=n):(e=dp(),H.lanes|=e,ha|=e,t)}function Ty(e,t,n,a,l){var i=Z.p;Z.p=i!==0&&8>i?i:8;var r=k.T,o={};k.T=o,Yd(e,!1,t,n);try{var u=l(),c=k.S;if(c!==null&&c(o,u),u!==null&&typeof u=="object"&&typeof u.then=="function"){var s=NA(u,a);Ii(e,t,s,xt(e))}else Ii(e,t,a,xt(e))}catch(f){Ii(e,t,{then:function(){},status:"rejected",reason:f},xt())}finally{Z.p=i,r!==null&&o.types!==null&&(r.types=o.types),k.T=r}}function UA(){}function Ys(e,t,n,a){if(e.tag!==5)throw Error(w(476));var l=Ey(e).queue;Ty(e,l,t,ka,n===null?UA:function(){return Dy(e),n(a)})}function Ey(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ka,baseState:ka,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:ka},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Dy(e){var t=Ey(e);t.next===null&&(t=e.alternate.memoizedState),Ii(e,t.next.queue,{},xt())}function jd(){return Ke(mr)}function xy(){return _e().memoizedState}function My(){return _e().memoizedState}function GA(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=xt();e=ia(n);var a=ra(t,e,n);a!==null&&(yt(a,t,n),Ki(a,t,n)),t={cache:xd()},e.payload=t;return}t=t.return}}function qA(e,t,n){var a=xt();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},xu(e)?By(t,n):(n=Rd(e,t,n,a),n!==null&&(yt(n,e,a),Ny(n,t,a)))}function _y(e,t,n){var a=xt();Ii(e,t,n,a)}function Ii(e,t,n,a){var l={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(xu(e))By(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var r=t.lastRenderedState,o=i(r,n);if(l.hasEagerState=!0,l.eagerState=o,Mt(o,r))return Cu(e,t,l,0),oe===null&&Su(),!1}catch{}finally{}if(n=Rd(e,t,l,a),n!==null)return yt(n,e,a),Ny(n,t,a),!0}return!1}function Yd(e,t,n,a){if(a={lane:2,revertLane:$d(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},xu(e)){if(t)throw Error(w(479))}else t=Rd(e,n,a,2),t!==null&&yt(t,e,2)}function xu(e){var t=e.alternate;return e===H||t!==null&&t===H}function By(e,t){Ul=tu=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ny(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,ph(e,n)}}var dr={readContext:Ke,use:Eu,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useLayoutEffect:Ce,useInsertionEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useSyncExternalStore:Ce,useId:Ce,useHostTransitionStatus:Ce,useFormState:Ce,useActionState:Ce,useOptimistic:Ce,useMemoCache:Ce,useCacheRefresh:Ce};dr.useEffectEvent=Ce;var Oy={readContext:Ke,use:Eu,useCallback:function(e,t){return rt().memoizedState=[e,t===void 0?null:t],e},useContext:Ke,useEffect:ym,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,Lo(4194308,4,Ay.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Lo(4194308,4,e,t)},useInsertionEffect:function(e,t){Lo(4,2,e,t)},useMemo:function(e,t){var n=rt();t=t===void 0?null:t;var a=e();if(Fa){Jn(!0);try{e()}finally{Jn(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=rt();if(n!==void 0){var l=n(t);if(Fa){Jn(!0);try{n(t)}finally{Jn(!1)}}}else l=t;return a.memoizedState=a.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},a.queue=e,e=e.dispatch=qA.bind(null,H,e),[a.memoizedState,e]},useRef:function(e){var t=rt();return e={current:e},t.memoizedState=e},useState:function(e){e=Fs(e);var t=e.queue,n=_y.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Pd,useDeferredValue:function(e,t){var n=rt();return Fd(n,e,t)},useTransition:function(){var e=Fs(!1);return e=Ty.bind(null,H,e.queue,!0,!1),rt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=H,l=rt();if(V){if(n===void 0)throw Error(w(407));n=n()}else{if(n=t(),oe===null)throw Error(w(349));(j&127)!==0||ry(a,t,n)}l.memoizedState=n;var i={value:n,getSnapshot:t};return l.queue=i,ym(uy.bind(null,a,i,e),[e]),a.flags|=2048,Vl(9,{destroy:void 0},oy.bind(null,a,i,n,t),null),n},useId:function(){var e=rt(),t=oe.identifierPrefix;if(V){var n=cn,a=un;n=(a&~(1<<32-Dt(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=nu++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=OA++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:jd,useFormState:gm,useActionState:gm,useOptimistic:function(e){var t=rt();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Yd.bind(null,H,!0,n),n.dispatch=t,[e,t]},useMemoCache:Ud,useCacheRefresh:function(){return rt().memoizedState=GA.bind(null,H)},useEffectEvent:function(e){var t=rt(),n={impl:e};return t.memoizedState=n,function(){if((K&2)!==0)throw Error(w(440));return n.impl.apply(void 0,arguments)}}},Vd={readContext:Ke,use:Eu,useCallback:Sy,useContext:Ke,useEffect:qd,useImperativeHandle:wy,useInsertionEffect:vy,useLayoutEffect:by,useMemo:Cy,useReducer:ko,useRef:yy,useState:function(){return ko(Ln)},useDebugValue:Pd,useDeferredValue:function(e,t){var n=_e();return Ry(n,le.memoizedState,e,t)},useTransition:function(){var e=ko(Ln)[0],t=_e().memoizedState;return[typeof e=="boolean"?e:Rr(e),t]},useSyncExternalStore:iy,useId:xy,useHostTransitionStatus:jd,useFormState:mm,useActionState:mm,useOptimistic:function(e,t){var n=_e();return dy(n,le,e,t)},useMemoCache:Ud,useCacheRefresh:My};Vd.useEffectEvent=py;var ky={readContext:Ke,use:Eu,useCallback:Sy,useContext:Ke,useEffect:qd,useImperativeHandle:wy,useInsertionEffect:vy,useLayoutEffect:by,useMemo:Cy,useReducer:Jc,useRef:yy,useState:function(){return Jc(Ln)},useDebugValue:Pd,useDeferredValue:function(e,t){var n=_e();return le===null?Fd(n,e,t):Ry(n,le.memoizedState,e,t)},useTransition:function(){var e=Jc(Ln)[0],t=_e().memoizedState;return[typeof e=="boolean"?e:Rr(e),t]},useSyncExternalStore:iy,useId:xy,useHostTransitionStatus:jd,useFormState:hm,useActionState:hm,useOptimistic:function(e,t){var n=_e();return le!==null?dy(n,le,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:Ud,useCacheRefresh:My};ky.useEffectEvent=py;function $c(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:he({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Vs={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=xt(),l=ia(a);l.payload=t,n!=null&&(l.callback=n),t=ra(e,l,a),t!==null&&(yt(t,e,a),Ki(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=xt(),l=ia(a);l.tag=1,l.payload=t,n!=null&&(l.callback=n),t=ra(e,l,a),t!==null&&(yt(t,e,a),Ki(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=xt(),a=ia(n);a.tag=2,t!=null&&(a.callback=t),t=ra(e,a,n),t!==null&&(yt(t,e,n),Ki(t,e,n))}};function pm(e,t,n,a,l,i,r){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,i,r):t.prototype&&t.prototype.isPureReactComponent?!rr(n,a)||!rr(l,i):!0}function vm(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Vs.enqueueReplaceState(t,t.state,null)}function ja(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=he({},n));for(var l in e)n[l]===void 0&&(n[l]=e[l])}return n}function Ly(e){Ko(e)}function zy(e){console.error(e)}function Hy(e){Ko(e)}function au(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function bm(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(l){setTimeout(function(){throw l})}}function Xs(e,t,n){return n=ia(n),n.tag=3,n.payload={element:null},n.callback=function(){au(e,t)},n}function Uy(e){return e=ia(e),e.tag=3,e}function Gy(e,t,n,a){var l=n.type.getDerivedStateFromError;if(typeof l=="function"){var i=a.value;e.payload=function(){return l(i)},e.callback=function(){bm(t,n,a)}}var r=n.stateNode;r!==null&&typeof r.componentDidCatch=="function"&&(e.callback=function(){bm(t,n,a),typeof l!="function"&&(oa===null?oa=new Set([this]):oa.add(this));var o=a.stack;this.componentDidCatch(a.value,{componentStack:o!==null?o:""})})}function PA(e,t,n,a,l){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&$l(t,n,l,!0),n=_t.current,n!==null){switch(n.tag){case 31:case 13:return Vt===null?uu():n.alternate===null&&Re===0&&(Re=3),n.flags&=-257,n.flags|=65536,n.lanes=l,a===Jo?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),ss(e,a,l)),!1;case 22:return n.flags|=65536,a===Jo?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),ss(e,a,l)),!1}throw Error(w(435,n.tag))}return ss(e,a,l),uu(),!1}if(V)return t=_t.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=l,a!==Os&&(e=Error(w(422),{cause:a}),ur(jt(e,n)))):(a!==Os&&(t=Error(w(423),{cause:a}),ur(jt(t,n))),e=e.current.alternate,e.flags|=65536,l&=-l,e.lanes|=l,a=jt(a,n),l=Xs(e.stateNode,a,l),Ic(e,l),Re!==4&&(Re=2)),!1;var i=Error(w(520),{cause:a});if(i=jt(i,n),er===null?er=[i]:er.push(i),Re!==4&&(Re=2),t===null)return!0;a=jt(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=l&-l,n.lanes|=e,e=Xs(n.stateNode,a,e),Ic(n,e),!1;case 1:if(t=n.type,i=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||i!==null&&typeof i.componentDidCatch=="function"&&(oa===null||!oa.has(i))))return n.flags|=65536,l&=-l,n.lanes|=l,l=Uy(l),Gy(l,e,n,a),Ic(n,l),!1}n=n.return}while(n!==null);return!1}var Xd=Error(w(461)),Le=!1;function Ve(e,t,n,a){t.child=e===null?$h(t,null,n,a):Pa(t,e.child,n,a)}function Am(e,t,n,a,l){n=n.render;var i=t.ref;if("ref"in a){var r={};for(var o in a)o!=="ref"&&(r[o]=a[o])}else r=a;return qa(t),a=kd(e,t,n,r,i,l),o=Ld(),e!==null&&!Le?(zd(e,t,l),zn(e,t,l)):(V&&o&&Ed(t),t.flags|=1,Ve(e,t,a,l),t.child)}function wm(e,t,n,a,l){if(e===null){var i=n.type;return typeof i=="function"&&!Td(i)&&i.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=i,qy(e,t,i,a,l)):(e=No(n.type,null,a,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!Qd(e,l)){var r=i.memoizedProps;if(n=n.compare,n=n!==null?n:rr,n(r,a)&&e.ref===t.ref)return zn(e,t,l)}return t.flags|=1,e=_n(i,a),e.ref=t.ref,e.return=t,t.child=e}function qy(e,t,n,a,l){if(e!==null){var i=e.memoizedProps;if(rr(i,a)&&e.ref===t.ref)if(Le=!1,t.pendingProps=a=i,Qd(e,l))(e.flags&131072)!==0&&(Le=!0);else return t.lanes=e.lanes,zn(e,t,l)}return Qs(e,t,n,a,l)}function Py(e,t,n,a){var l=a.children,i=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(i=i!==null?i.baseLanes|n:n,e!==null){for(a=t.child=e.child,l=0;a!==null;)l=l|a.lanes|a.childLanes,a=a.sibling;a=l&~i}else a=0,t.child=null;return Sm(e,t,i,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Oo(t,i!==null?i.cachePool:null),i!==null?sm(t,i):qs(),ny(t);else return a=t.lanes=536870912,Sm(e,t,i!==null?i.baseLanes|n:n,n,a)}else i!==null?(Oo(t,i.cachePool),sm(t,i),Wn(t),t.memoizedState=null):(e!==null&&Oo(t,null),qs(),Wn(t));return Ve(e,t,l,n),t.child}function Fi(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Sm(e,t,n,a,l){var i=Md();return i=i===null?null:{parent:ke._currentValue,pool:i},t.memoizedState={baseLanes:n,cachePool:i},e!==null&&Oo(t,null),qs(),ny(t),e!==null&&$l(e,t,a,!0),t.childLanes=l,null}function zo(e,t){return t=lu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Cm(e,t,n){return Pa(t,e.child,null,n),e=zo(t,t.pendingProps),e.flags|=2,St(t),t.memoizedState=null,e}function FA(e,t,n){var a=t.pendingProps,l=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(V){if(a.mode==="hidden")return e=zo(t,a),t.lanes=536870912,Fi(null,e);if(Ps(t),(e=me)?(e=Op(e,Yt),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:fa!==null?{id:un,overflow:cn}:null,retryLane:536870912,hydrationErrors:null},n=Xh(e),n.return=t,t.child=n,Qe=t,me=null)):e=null,e===null)throw ga(t);return t.lanes=536870912,null}return zo(t,a)}var i=e.memoizedState;if(i!==null){var r=i.dehydrated;if(Ps(t),l)if(t.flags&256)t.flags&=-257,t=Cm(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(w(558));else if(Le||$l(e,t,n,!1),l=(n&e.childLanes)!==0,Le||l){if(a=oe,a!==null&&(r=vh(a,n),r!==0&&r!==i.retryLane))throw i.retryLane=r,Qa(e,r),yt(a,e,r),Xd;uu(),t=Cm(e,t,n)}else e=i.treeContext,me=Xt(r.nextSibling),Qe=t,V=!0,la=null,Yt=!1,e!==null&&Kh(t,e),t=zo(t,a),t.flags|=4096;return t}return e=_n(e.child,{mode:a.mode,children:a.children}),e.ref=t.ref,t.child=e,e.return=t,e}function Ho(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(w(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Qs(e,t,n,a,l){return qa(t),n=kd(e,t,n,a,void 0,l),a=Ld(),e!==null&&!Le?(zd(e,t,l),zn(e,t,l)):(V&&a&&Ed(t),t.flags|=1,Ve(e,t,n,l),t.child)}function Rm(e,t,n,a,l,i){return qa(t),t.updateQueue=null,n=ly(t,a,n,l),ay(e),a=Ld(),e!==null&&!Le?(zd(e,t,i),zn(e,t,i)):(V&&a&&Ed(t),t.flags|=1,Ve(e,t,n,i),t.child)}function Tm(e,t,n,a,l){if(qa(t),t.stateNode===null){var i=Ml,r=n.contextType;typeof r=="object"&&r!==null&&(i=Ke(r)),i=new n(a,i),t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,i.updater=Vs,t.stateNode=i,i._reactInternals=t,i=t.stateNode,i.props=a,i.state=t.memoizedState,i.refs={},Bd(t),r=n.contextType,i.context=typeof r=="object"&&r!==null?Ke(r):Ml,i.state=t.memoizedState,r=n.getDerivedStateFromProps,typeof r=="function"&&($c(t,n,r,a),i.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(r=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),r!==i.state&&Vs.enqueueReplaceState(i,i.state,null),Wi(t,a,i,l),Zi(),i.state=t.memoizedState),typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){i=t.stateNode;var o=t.memoizedProps,u=ja(n,o);i.props=u;var c=i.context,s=n.contextType;r=Ml,typeof s=="object"&&s!==null&&(r=Ke(s));var f=n.getDerivedStateFromProps;s=typeof f=="function"||typeof i.getSnapshotBeforeUpdate=="function",o=t.pendingProps!==o,s||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(o||c!==r)&&vm(t,i,a,r),Qn=!1;var d=t.memoizedState;i.state=d,Wi(t,a,i,l),Zi(),c=t.memoizedState,o||d!==c||Qn?(typeof f=="function"&&($c(t,n,f,a),c=t.memoizedState),(u=Qn||pm(t,n,u,a,d,c,r))?(s||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=c),i.props=a,i.state=c,i.context=r,a=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{i=t.stateNode,Us(e,t),r=t.memoizedProps,s=ja(n,r),i.props=s,f=t.pendingProps,d=i.context,c=n.contextType,u=Ml,typeof c=="object"&&c!==null&&(u=Ke(c)),o=n.getDerivedStateFromProps,(c=typeof o=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(r!==f||d!==u)&&vm(t,i,a,u),Qn=!1,d=t.memoizedState,i.state=d,Wi(t,a,i,l),Zi();var m=t.memoizedState;r!==f||d!==m||Qn||e!==null&&e.dependencies!==null&&Io(e.dependencies)?(typeof o=="function"&&($c(t,n,o,a),m=t.memoizedState),(s=Qn||pm(t,n,s,a,d,m,u)||e!==null&&e.dependencies!==null&&Io(e.dependencies))?(c||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(a,m,u),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(a,m,u)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=m),i.props=a,i.state=m,i.context=u,a=s):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),a=!1)}return i=a,Ho(e,t),a=(t.flags&128)!==0,i||a?(i=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:i.render(),t.flags|=1,e!==null&&a?(t.child=Pa(t,e.child,null,l),t.child=Pa(t,null,n,l)):Ve(e,t,n,l),t.memoizedState=i.state,e=t.child):e=zn(e,t,l),e}function Em(e,t,n,a){return Ga(),t.flags|=256,Ve(e,t,n,a),t.child}var es={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ts(e){return{baseLanes:e,cachePool:Wh()}}function ns(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Rt),e}function Fy(e,t,n){var a=t.pendingProps,l=!1,i=(t.flags&128)!==0,r;if((r=i)||(r=e!==null&&e.memoizedState===null?!1:(Me.current&2)!==0),r&&(l=!0,t.flags&=-129),r=(t.flags&32)!==0,t.flags&=-33,e===null){if(V){if(l?Zn(t):Wn(t),(e=me)?(e=Op(e,Yt),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:fa!==null?{id:un,overflow:cn}:null,retryLane:536870912,hydrationErrors:null},n=Xh(e),n.return=t,t.child=n,Qe=t,me=null)):e=null,e===null)throw ga(t);return od(e)?t.lanes=32:t.lanes=536870912,null}var o=a.children;return a=a.fallback,l?(Wn(t),l=t.mode,o=lu({mode:"hidden",children:o},l),a=La(a,l,n,null),o.return=t,a.return=t,o.sibling=a,t.child=o,a=t.child,a.memoizedState=ts(n),a.childLanes=ns(e,r,n),t.memoizedState=es,Fi(null,a)):(Zn(t),Ks(t,o))}var u=e.memoizedState;if(u!==null&&(o=u.dehydrated,o!==null)){if(i)t.flags&256?(Zn(t),t.flags&=-257,t=as(e,t,n)):t.memoizedState!==null?(Wn(t),t.child=e.child,t.flags|=128,t=null):(Wn(t),o=a.fallback,l=t.mode,a=lu({mode:"visible",children:a.children},l),o=La(o,l,n,null),o.flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,Pa(t,e.child,null,n),a=t.child,a.memoizedState=ts(n),a.childLanes=ns(e,r,n),t.memoizedState=es,t=Fi(null,a));else if(Zn(t),od(o)){if(r=o.nextSibling&&o.nextSibling.dataset,r)var c=r.dgst;r=c,a=Error(w(419)),a.stack="",a.digest=r,ur({value:a,source:null,stack:null}),t=as(e,t,n)}else if(Le||$l(e,t,n,!1),r=(n&e.childLanes)!==0,Le||r){if(r=oe,r!==null&&(a=vh(r,n),a!==0&&a!==u.retryLane))throw u.retryLane=a,Qa(e,a),yt(r,e,a),Xd;rd(o)||uu(),t=as(e,t,n)}else rd(o)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,me=Xt(o.nextSibling),Qe=t,V=!0,la=null,Yt=!1,e!==null&&Kh(t,e),t=Ks(t,a.children),t.flags|=4096);return t}return l?(Wn(t),o=a.fallback,l=t.mode,u=e.child,c=u.sibling,a=_n(u,{mode:"hidden",children:a.children}),a.subtreeFlags=u.subtreeFlags&65011712,c!==null?o=_n(c,o):(o=La(o,l,n,null),o.flags|=2),o.return=t,a.return=t,a.sibling=o,t.child=a,Fi(null,a),a=t.child,o=e.child.memoizedState,o===null?o=ts(n):(l=o.cachePool,l!==null?(u=ke._currentValue,l=l.parent!==u?{parent:u,pool:u}:l):l=Wh(),o={baseLanes:o.baseLanes|n,cachePool:l}),a.memoizedState=o,a.childLanes=ns(e,r,n),t.memoizedState=es,Fi(e.child,a)):(Zn(t),n=e.child,e=n.sibling,n=_n(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Ks(e,t){return t=lu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function lu(e,t){return e=Ct(22,e,null,t),e.lanes=0,e}function as(e,t,n){return Pa(t,e.child,null,n),e=Ks(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Dm(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Ls(e.return,t,n)}function ls(e,t,n,a,l,i){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:l,treeForkCount:i}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=a,r.tail=n,r.tailMode=l,r.treeForkCount=i)}function jy(e,t,n){var a=t.pendingProps,l=a.revealOrder,i=a.tail;a=a.children;var r=Me.current,o=(r&2)!==0;if(o?(r=r&1|2,t.flags|=128):r&=1,se(Me,r),Ve(e,t,a,n),a=V?or:0,!o&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Dm(e,n,t);else if(e.tag===19)Dm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&eu(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),ls(t,!1,l,n,i,a);break;case"backwards":case"unstable_legacy-backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&eu(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}ls(t,!0,n,null,i,a);break;case"together":ls(t,!1,null,null,void 0,a);break;default:t.memoizedState=null}return t.child}function zn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),ha|=t.lanes,(n&t.childLanes)===0)if(e!==null){if($l(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(w(153));if(t.child!==null){for(e=t.child,n=_n(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=_n(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Qd(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&Io(e)))}function jA(e,t,n){switch(t.tag){case 3:Yo(t,t.stateNode.containerInfo),Kn(t,ke,e.memoizedState.cache),Ga();break;case 27:case 5:Ss(t);break;case 4:Yo(t,t.stateNode.containerInfo);break;case 10:Kn(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Ps(t),null;break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Zn(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Fy(e,t,n):(Zn(t),e=zn(e,t,n),e!==null?e.sibling:null);Zn(t);break;case 19:var l=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||($l(e,t,n,!1),a=(n&t.childLanes)!==0),l){if(a)return jy(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),se(Me,Me.current),a)break;return null;case 22:return t.lanes=0,Py(e,t,n,t.pendingProps);case 24:Kn(t,ke,e.memoizedState.cache)}return zn(e,t,n)}function Yy(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)Le=!0;else{if(!Qd(e,n)&&(t.flags&128)===0)return Le=!1,jA(e,t,n);Le=(e.flags&131072)!==0}else Le=!1,V&&(t.flags&1048576)!==0&&Qh(t,or,t.index);switch(t.lanes=0,t.tag){case 16:e:{var a=t.pendingProps;if(e=Na(t.elementType),t.type=e,typeof e=="function")Td(e)?(a=ja(e,a),t.tag=1,t=Tm(null,t,e,a,n)):(t.tag=0,t=Qs(null,t,e,a,n));else{if(e!=null){var l=e.$$typeof;if(l===dd){t.tag=11,t=Am(null,t,e,a,n);break e}else if(l===fd){t.tag=14,t=wm(null,t,e,a,n);break e}}throw t=As(e)||e,Error(w(306,t,""))}}return t;case 0:return Qs(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,l=ja(a,t.pendingProps),Tm(e,t,a,l,n);case 3:e:{if(Yo(t,t.stateNode.containerInfo),e===null)throw Error(w(387));a=t.pendingProps;var i=t.memoizedState;l=i.element,Us(e,t),Wi(t,a,null,n);var r=t.memoizedState;if(a=r.cache,Kn(t,ke,a),a!==i.cache&&zs(t,[ke],n,!0),Zi(),a=r.element,i.isDehydrated)if(i={element:a,isDehydrated:!1,cache:r.cache},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){t=Em(e,t,a,n);break e}else if(a!==l){l=jt(Error(w(424)),t),ur(l),t=Em(e,t,a,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(me=Xt(e.firstChild),Qe=t,V=!0,la=null,Yt=!0,n=$h(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Ga(),a===l){t=zn(e,t,n);break e}Ve(e,t,a,n)}t=t.child}return t;case 26:return Ho(e,t),e===null?(n=Zm(t.type,null,t.pendingProps,null))?t.memoizedState=n:V||(n=t.type,e=t.pendingProps,a=fu(aa.current).createElement(n),a[Xe]=t,a[pt]=e,Ze(a,n,e),Fe(a),t.stateNode=a):t.memoizedState=Zm(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Ss(t),e===null&&V&&(a=t.stateNode=kp(t.type,t.pendingProps,aa.current),Qe=t,Yt=!0,l=me,pa(t.type)?(ud=l,me=Xt(a.firstChild)):me=l),Ve(e,t,t.pendingProps.children,n),Ho(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&V&&((l=a=me)&&(a=pw(a,t.type,t.pendingProps,Yt),a!==null?(t.stateNode=a,Qe=t,me=Xt(a.firstChild),Yt=!1,l=!0):l=!1),l||ga(t)),Ss(t),l=t.type,i=t.pendingProps,r=e!==null?e.memoizedProps:null,a=i.children,ld(l,i)?a=null:r!==null&&ld(l,r)&&(t.flags|=32),t.memoizedState!==null&&(l=kd(e,t,kA,null,null,n),mr._currentValue=l),Ho(e,t),Ve(e,t,a,n),t.child;case 6:return e===null&&V&&((e=n=me)&&(n=vw(n,t.pendingProps,Yt),n!==null?(t.stateNode=n,Qe=t,me=null,e=!0):e=!1),e||ga(t)),null;case 13:return Fy(e,t,n);case 4:return Yo(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Pa(t,null,a,n):Ve(e,t,a,n),t.child;case 11:return Am(e,t,t.type,t.pendingProps,n);case 7:return Ve(e,t,t.pendingProps,n),t.child;case 8:return Ve(e,t,t.pendingProps.children,n),t.child;case 12:return Ve(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,Kn(t,t.type,a.value),Ve(e,t,a.children,n),t.child;case 9:return l=t.type._context,a=t.pendingProps.children,qa(t),l=Ke(l),a=a(l),t.flags|=1,Ve(e,t,a,n),t.child;case 14:return wm(e,t,t.type,t.pendingProps,n);case 15:return qy(e,t,t.type,t.pendingProps,n);case 19:return jy(e,t,n);case 31:return FA(e,t,n);case 22:return Py(e,t,n,t.pendingProps);case 24:return qa(t),a=Ke(ke),e===null?(l=Md(),l===null&&(l=oe,i=xd(),l.pooledCache=i,i.refCount++,i!==null&&(l.pooledCacheLanes|=n),l=i),t.memoizedState={parent:a,cache:l},Bd(t),Kn(t,ke,l)):((e.lanes&n)!==0&&(Us(e,t),Wi(t,null,null,n),Zi()),l=e.memoizedState,i=t.memoizedState,l.parent!==a?(l={parent:a,cache:a},t.memoizedState=l,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=l),Kn(t,ke,a)):(a=i.cache,Kn(t,ke,a),a!==l.cache&&zs(t,[ke],n,!0))),Ve(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(w(156,t.tag))}function wn(e){e.flags|=4}function is(e,t,n,a,l){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(l&335544128)===l)if(e.stateNode.complete)e.flags|=8192;else if(mp())e.flags|=8192;else throw Ha=Jo,_d}else e.flags&=-16777217}function xm(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Hp(t))if(mp())e.flags|=8192;else throw Ha=Jo,_d}function wo(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?hh():536870912,e.lanes|=t,Xl|=t)}function Li(e,t){if(!V)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function ge(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags&65011712,a|=l.flags&65011712,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags,a|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function YA(e,t,n){var a=t.pendingProps;switch(Dd(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ge(t),null;case 1:return ge(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Bn(ke),ql(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(pl(t)?wn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Wc())),ge(t),null;case 26:var l=t.type,i=t.memoizedState;return e===null?(wn(t),i!==null?(ge(t),xm(t,i)):(ge(t),is(t,l,null,a,n))):i?i!==e.memoizedState?(wn(t),ge(t),xm(t,i)):(ge(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&wn(t),ge(t),is(t,l,e,a,n)),null;case 27:if(Vo(t),n=aa.current,l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&wn(t);else{if(!a){if(t.stateNode===null)throw Error(w(166));return ge(t),null}e=dn.current,pl(t)?am(t,e):(e=kp(l,a,n),t.stateNode=e,wn(t))}return ge(t),null;case 5:if(Vo(t),l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&wn(t);else{if(!a){if(t.stateNode===null)throw Error(w(166));return ge(t),null}if(i=dn.current,pl(t))am(t,i);else{var r=fu(aa.current);switch(i){case 1:i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":i=r.createElement("div"),i.innerHTML="<script><\/scr"+"ipt>",i=i.removeChild(i.firstChild);break;case"select":i=typeof a.is=="string"?r.createElement("select",{is:a.is}):r.createElement("select"),a.multiple?i.multiple=!0:a.size&&(i.size=a.size);break;default:i=typeof a.is=="string"?r.createElement(l,{is:a.is}):r.createElement(l)}}i[Xe]=t,i[pt]=a;e:for(r=t.child;r!==null;){if(r.tag===5||r.tag===6)i.appendChild(r.stateNode);else if(r.tag!==4&&r.tag!==27&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;r.sibling===null;){if(r.return===null||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=i;e:switch(Ze(i,l,a),l){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&wn(t)}}return ge(t),is(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&wn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(w(166));if(e=aa.current,pl(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,l=Qe,l!==null)switch(l.tag){case 27:case 5:a=l.memoizedProps}e[Xe]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||_p(e.nodeValue,n)),e||ga(t,!0)}else e=fu(e).createTextNode(a),e[Xe]=t,t.stateNode=e}return ge(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=pl(t),n!==null){if(e===null){if(!a)throw Error(w(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(557));e[Xe]=t}else Ga(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ge(t),e=!1}else n=Wc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(St(t),t):(St(t),null);if((t.flags&128)!==0)throw Error(w(558))}return ge(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(l=pl(t),a!==null&&a.dehydrated!==null){if(e===null){if(!l)throw Error(w(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(w(317));l[Xe]=t}else Ga(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ge(t),l=!1}else l=Wc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return t.flags&256?(St(t),t):(St(t),null)}return St(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,l=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(l=a.alternate.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==l&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),wo(t,t.updateQueue),ge(t),null);case 4:return ql(),e===null&&ef(t.stateNode.containerInfo),ge(t),null;case 10:return Bn(t.type),ge(t),null;case 19:if(je(Me),a=t.memoizedState,a===null)return ge(t),null;if(l=(t.flags&128)!==0,i=a.rendering,i===null)if(l)Li(a,!1);else{if(Re!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(i=eu(e),i!==null){for(t.flags|=128,Li(a,!1),e=i.updateQueue,t.updateQueue=e,wo(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Vh(n,e),n=n.sibling;return se(Me,Me.current&1|2),V&&Tn(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Tt()>ru&&(t.flags|=128,l=!0,Li(a,!1),t.lanes=4194304)}else{if(!l)if(e=eu(i),e!==null){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,wo(t,e),Li(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!V)return ge(t),null}else 2*Tt()-a.renderingStartTime>ru&&n!==536870912&&(t.flags|=128,l=!0,Li(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(e=a.last,e!==null?e.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Tt(),e.sibling=null,n=Me.current,se(Me,l?n&1|2:n&1),V&&Tn(t,a.treeForkCount),e):(ge(t),null);case 22:case 23:return St(t),Nd(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(ge(t),t.subtreeFlags&6&&(t.flags|=8192)):ge(t),n=t.updateQueue,n!==null&&wo(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&je(za),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Bn(ke),ge(t),null;case 25:return null;case 30:return null}throw Error(w(156,t.tag))}function VA(e,t){switch(Dd(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Bn(ke),ql(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Vo(t),null;case 31:if(t.memoizedState!==null){if(St(t),t.alternate===null)throw Error(w(340));Ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(St(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(w(340));Ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return je(Me),null;case 4:return ql(),null;case 10:return Bn(t.type),null;case 22:case 23:return St(t),Nd(),e!==null&&je(za),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Bn(ke),null;case 25:return null;default:return null}}function Vy(e,t){switch(Dd(t),t.tag){case 3:Bn(ke),ql();break;case 26:case 27:case 5:Vo(t);break;case 4:ql();break;case 31:t.memoizedState!==null&&St(t);break;case 13:St(t);break;case 19:je(Me);break;case 10:Bn(t.type);break;case 22:case 23:St(t),Nd(),e!==null&&je(za);break;case 24:Bn(ke)}}function Tr(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var l=a.next;n=l;do{if((n.tag&e)===e){a=void 0;var i=n.create,r=n.inst;a=i(),r.destroy=a}n=n.next}while(n!==l)}}catch(o){te(t,t.return,o)}}function ma(e,t,n){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&e)===e){var r=a.inst,o=r.destroy;if(o!==void 0){r.destroy=void 0,l=t;var u=n,c=o;try{c()}catch(s){te(l,u,s)}}}a=a.next}while(a!==i)}}catch(s){te(t,t.return,s)}}function Xy(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{ty(t,n)}catch(a){te(e,e.return,a)}}}function Qy(e,t,n){n.props=ja(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){te(e,t,a)}}function Ji(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(l){te(e,t,l)}}function sn(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(l){te(e,t,l)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(l){te(e,t,l)}else n.current=null}function Ky(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(l){te(e,e.return,l)}}function rs(e,t,n){try{var a=e.stateNode;dw(a,e.type,n,t),a[pt]=t}catch(l){te(e,e.return,l)}}function Zy(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&pa(e.type)||e.tag===4}function os(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Zy(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&pa(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zs(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=xn));else if(a!==4&&(a===27&&pa(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Zs(e,t,n),e=e.sibling;e!==null;)Zs(e,t,n),e=e.sibling}function iu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&pa(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(iu(e,t,n),e=e.sibling;e!==null;)iu(e,t,n),e=e.sibling}function Wy(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);Ze(t,a,n),t[Xe]=e,t[pt]=n}catch(i){te(e,e.return,i)}}var En=!1,Oe=!1,us=!1,Mm=typeof WeakSet=="function"?WeakSet:Set,Pe=null;function XA(e,t){if(e=e.containerInfo,nd=yu,e=Hh(e),Sd(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var l=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var r=0,o=-1,u=-1,c=0,s=0,f=e,d=null;t:for(;;){for(var m;f!==n||l!==0&&f.nodeType!==3||(o=r+l),f!==i||a!==0&&f.nodeType!==3||(u=r+a),f.nodeType===3&&(r+=f.nodeValue.length),(m=f.firstChild)!==null;)d=f,f=m;for(;;){if(f===e)break t;if(d===n&&++c===l&&(o=r),d===i&&++s===a&&(u=r),(m=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=m}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ad={focusedElem:e,selectionRange:n},yu=!1,Pe=t;Pe!==null;)if(t=Pe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Pe=e;else for(;Pe!==null;){switch(t=Pe,i=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)l=e[n],l.ref.impl=l.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&i!==null){e=void 0,n=t,l=i.memoizedProps,i=i.memoizedState,a=n.stateNode;try{var v=ja(n.type,l);e=a.getSnapshotBeforeUpdate(v,i),a.__reactInternalSnapshotBeforeUpdate=e}catch(A){te(n,n.return,A)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)id(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":id(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(w(163))}if(e=t.sibling,e!==null){e.return=t.return,Pe=e;break}Pe=t.return}}function Iy(e,t,n){var a=n.flags;switch(n.tag){case 0:case 11:case 15:Cn(e,n),a&4&&Tr(5,n);break;case 1:if(Cn(e,n),a&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(r){te(n,n.return,r)}else{var l=ja(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(r){te(n,n.return,r)}}a&64&&Xy(n),a&512&&Ji(n,n.return);break;case 3:if(Cn(e,n),a&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{ty(e,t)}catch(r){te(n,n.return,r)}}break;case 27:t===null&&a&4&&Wy(n);case 26:case 5:Cn(e,n),t===null&&a&4&&Ky(n),a&512&&Ji(n,n.return);break;case 12:Cn(e,n);break;case 31:Cn(e,n),a&4&&ep(e,n);break;case 13:Cn(e,n),a&4&&tp(e,n),a&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=tw.bind(null,n),bw(e,n))));break;case 22:if(a=n.memoizedState!==null||En,!a){t=t!==null&&t.memoizedState!==null||Oe,l=En;var i=Oe;En=a,(Oe=t)&&!i?Rn(e,n,(n.subtreeFlags&8772)!==0):Cn(e,n),En=l,Oe=i}break;case 30:break;default:Cn(e,n)}}function Jy(e){var t=e.alternate;t!==null&&(e.alternate=null,Jy(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&yd(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Ae=null,mt=!1;function Sn(e,t,n){for(n=n.child;n!==null;)$y(e,t,n),n=n.sibling}function $y(e,t,n){if(Et&&typeof Et.onCommitFiberUnmount=="function")try{Et.onCommitFiberUnmount(vr,n)}catch{}switch(n.tag){case 26:Oe||sn(n,t),Sn(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Oe||sn(n,t);var a=Ae,l=mt;pa(n.type)&&(Ae=n.stateNode,mt=!1),Sn(e,t,n),nr(n.stateNode),Ae=a,mt=l;break;case 5:Oe||sn(n,t);case 6:if(a=Ae,l=mt,Ae=null,Sn(e,t,n),Ae=a,mt=l,Ae!==null)if(mt)try{(Ae.nodeType===9?Ae.body:Ae.nodeName==="HTML"?Ae.ownerDocument.body:Ae).removeChild(n.stateNode)}catch(i){te(n,t,i)}else try{Ae.removeChild(n.stateNode)}catch(i){te(n,t,i)}break;case 18:Ae!==null&&(mt?(e=Ae,Ym(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),Wl(e)):Ym(Ae,n.stateNode));break;case 4:a=Ae,l=mt,Ae=n.stateNode.containerInfo,mt=!0,Sn(e,t,n),Ae=a,mt=l;break;case 0:case 11:case 14:case 15:ma(2,n,t),Oe||ma(4,n,t),Sn(e,t,n);break;case 1:Oe||(sn(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"&&Qy(n,t,a)),Sn(e,t,n);break;case 21:Sn(e,t,n);break;case 22:Oe=(a=Oe)||n.memoizedState!==null,Sn(e,t,n),Oe=a;break;default:Sn(e,t,n)}}function ep(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Wl(e)}catch(n){te(t,t.return,n)}}}function tp(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Wl(e)}catch(n){te(t,t.return,n)}}function QA(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new Mm),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new Mm),t;default:throw Error(w(435,e.tag))}}function So(e,t){var n=QA(e);t.forEach(function(a){if(!n.has(a)){n.add(a);var l=nw.bind(null,e,a);a.then(l,l)}})}function ft(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var l=n[a],i=e,r=t,o=r;e:for(;o!==null;){switch(o.tag){case 27:if(pa(o.type)){Ae=o.stateNode,mt=!1;break e}break;case 5:Ae=o.stateNode,mt=!1;break e;case 3:case 4:Ae=o.stateNode.containerInfo,mt=!0;break e}o=o.return}if(Ae===null)throw Error(w(160));$y(i,r,l),Ae=null,mt=!1,i=l.alternate,i!==null&&(i.return=null),l.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)np(t,e),t=t.sibling}var $t=null;function np(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:ft(t,e),gt(e),a&4&&(ma(3,e,e.return),Tr(3,e),ma(5,e,e.return));break;case 1:ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),a&64&&En&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?a:n.concat(a))));break;case 26:var l=$t;if(ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),a&4){var i=n!==null?n.memoizedState:null;if(a=e.memoizedState,n===null)if(a===null)if(e.stateNode===null){e:{a=e.type,n=e.memoizedProps,l=l.ownerDocument||l;t:switch(a){case"title":i=l.getElementsByTagName("title")[0],(!i||i[wr]||i[Xe]||i.namespaceURI==="http://www.w3.org/2000/svg"||i.hasAttribute("itemprop"))&&(i=l.createElement(a),l.head.insertBefore(i,l.querySelector("head > title"))),Ze(i,a,n),i[Xe]=e,Fe(i),a=i;break e;case"link":var r=Im("link","href",l).get(a+(n.href||""));if(r){for(var o=0;o<r.length;o++)if(i=r[o],i.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&i.getAttribute("rel")===(n.rel==null?null:n.rel)&&i.getAttribute("title")===(n.title==null?null:n.title)&&i.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){r.splice(o,1);break t}}i=l.createElement(a),Ze(i,a,n),l.head.appendChild(i);break;case"meta":if(r=Im("meta","content",l).get(a+(n.content||""))){for(o=0;o<r.length;o++)if(i=r[o],i.getAttribute("content")===(n.content==null?null:""+n.content)&&i.getAttribute("name")===(n.name==null?null:n.name)&&i.getAttribute("property")===(n.property==null?null:n.property)&&i.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&i.getAttribute("charset")===(n.charSet==null?null:n.charSet)){r.splice(o,1);break t}}i=l.createElement(a),Ze(i,a,n),l.head.appendChild(i);break;default:throw Error(w(468,a))}i[Xe]=e,Fe(i),a=i}e.stateNode=a}else Jm(l,e.type,e.stateNode);else e.stateNode=Wm(l,a,e.memoizedProps);else i!==a?(i===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):i.count--,a===null?Jm(l,e.type,e.stateNode):Wm(l,a,e.memoizedProps)):a===null&&e.stateNode!==null&&rs(e,e.memoizedProps,n.memoizedProps)}break;case 27:ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),n!==null&&a&4&&rs(e,e.memoizedProps,n.memoizedProps);break;case 5:if(ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),e.flags&32){l=e.stateNode;try{Fl(l,"")}catch(v){te(e,e.return,v)}}a&4&&e.stateNode!=null&&(l=e.memoizedProps,rs(e,l,n!==null?n.memoizedProps:l)),a&1024&&(us=!0);break;case 6:if(ft(t,e),gt(e),a&4){if(e.stateNode===null)throw Error(w(162));a=e.memoizedProps,n=e.stateNode;try{n.nodeValue=a}catch(v){te(e,e.return,v)}}break;case 3:if(qo=null,l=$t,$t=gu(t.containerInfo),ft(t,e),$t=l,gt(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{Wl(t.containerInfo)}catch(v){te(e,e.return,v)}us&&(us=!1,ap(e));break;case 4:a=$t,$t=gu(e.stateNode.containerInfo),ft(t,e),gt(e),$t=a;break;case 12:ft(t,e),gt(e);break;case 31:ft(t,e),gt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,So(e,a)));break;case 13:ft(t,e),gt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Mu=Tt()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,So(e,a)));break;case 22:l=e.memoizedState!==null;var u=n!==null&&n.memoizedState!==null,c=En,s=Oe;if(En=c||l,Oe=s||u,ft(t,e),Oe=s,En=c,gt(e),a&8192)e:for(t=e.stateNode,t._visibility=l?t._visibility&-2:t._visibility|1,l&&(n===null||u||En||Oe||Oa(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){u=n=t;try{if(i=u.stateNode,l)r=i.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{o=u.stateNode;var f=u.memoizedProps.style,d=f!=null&&f.hasOwnProperty("display")?f.display:null;o.style.display=d==null||typeof d=="boolean"?"":(""+d).trim()}}catch(v){te(u,u.return,v)}}}else if(t.tag===6){if(n===null){u=t;try{u.stateNode.nodeValue=l?"":u.memoizedProps}catch(v){te(u,u.return,v)}}}else if(t.tag===18){if(n===null){u=t;try{var m=u.stateNode;l?Vm(m,!0):Vm(u.stateNode,!1)}catch(v){te(u,u.return,v)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(n=a.retryQueue,n!==null&&(a.retryQueue=null,So(e,n))));break;case 19:ft(t,e),gt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,So(e,a)));break;case 30:break;case 21:break;default:ft(t,e),gt(e)}}function gt(e){var t=e.flags;if(t&2){try{for(var n,a=e.return;a!==null;){if(Zy(a)){n=a;break}a=a.return}if(n==null)throw Error(w(160));switch(n.tag){case 27:var l=n.stateNode,i=os(e);iu(e,i,l);break;case 5:var r=n.stateNode;n.flags&32&&(Fl(r,""),n.flags&=-33);var o=os(e);iu(e,o,r);break;case 3:case 4:var u=n.stateNode.containerInfo,c=os(e);Zs(e,c,u);break;default:throw Error(w(161))}}catch(s){te(e,e.return,s)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function ap(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;ap(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Cn(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Iy(e,t.alternate,t),t=t.sibling}function Oa(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ma(4,t,t.return),Oa(t);break;case 1:sn(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Qy(t,t.return,n),Oa(t);break;case 27:nr(t.stateNode);case 26:case 5:sn(t,t.return),Oa(t);break;case 22:t.memoizedState===null&&Oa(t);break;case 30:Oa(t);break;default:Oa(t)}e=e.sibling}}function Rn(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,l=e,i=t,r=i.flags;switch(i.tag){case 0:case 11:case 15:Rn(l,i,n),Tr(4,i);break;case 1:if(Rn(l,i,n),a=i,l=a.stateNode,typeof l.componentDidMount=="function")try{l.componentDidMount()}catch(c){te(a,a.return,c)}if(a=i,l=a.updateQueue,l!==null){var o=a.stateNode;try{var u=l.shared.hiddenCallbacks;if(u!==null)for(l.shared.hiddenCallbacks=null,l=0;l<u.length;l++)ey(u[l],o)}catch(c){te(a,a.return,c)}}n&&r&64&&Xy(i),Ji(i,i.return);break;case 27:Wy(i);case 26:case 5:Rn(l,i,n),n&&a===null&&r&4&&Ky(i),Ji(i,i.return);break;case 12:Rn(l,i,n);break;case 31:Rn(l,i,n),n&&r&4&&ep(l,i);break;case 13:Rn(l,i,n),n&&r&4&&tp(l,i);break;case 22:i.memoizedState===null&&Rn(l,i,n),Ji(i,i.return);break;case 30:break;default:Rn(l,i,n)}t=t.sibling}}function Kd(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&Cr(n))}function Zd(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Cr(e))}function Jt(e,t,n,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)lp(e,t,n,a),t=t.sibling}function lp(e,t,n,a){var l=t.flags;switch(t.tag){case 0:case 11:case 15:Jt(e,t,n,a),l&2048&&Tr(9,t);break;case 1:Jt(e,t,n,a);break;case 3:Jt(e,t,n,a),l&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Cr(e)));break;case 12:if(l&2048){Jt(e,t,n,a),e=t.stateNode;try{var i=t.memoizedProps,r=i.id,o=i.onPostCommit;typeof o=="function"&&o(r,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(u){te(t,t.return,u)}}else Jt(e,t,n,a);break;case 31:Jt(e,t,n,a);break;case 13:Jt(e,t,n,a);break;case 23:break;case 22:i=t.stateNode,r=t.alternate,t.memoizedState!==null?i._visibility&2?Jt(e,t,n,a):$i(e,t):i._visibility&2?Jt(e,t,n,a):(i._visibility|=2,bl(e,t,n,a,(t.subtreeFlags&10256)!==0||!1)),l&2048&&Kd(r,t);break;case 24:Jt(e,t,n,a),l&2048&&Zd(t.alternate,t);break;default:Jt(e,t,n,a)}}function bl(e,t,n,a,l){for(l=l&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var i=e,r=t,o=n,u=a,c=r.flags;switch(r.tag){case 0:case 11:case 15:bl(i,r,o,u,l),Tr(8,r);break;case 23:break;case 22:var s=r.stateNode;r.memoizedState!==null?s._visibility&2?bl(i,r,o,u,l):$i(i,r):(s._visibility|=2,bl(i,r,o,u,l)),l&&c&2048&&Kd(r.alternate,r);break;case 24:bl(i,r,o,u,l),l&&c&2048&&Zd(r.alternate,r);break;default:bl(i,r,o,u,l)}t=t.sibling}}function $i(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,a=t,l=a.flags;switch(a.tag){case 22:$i(n,a),l&2048&&Kd(a.alternate,a);break;case 24:$i(n,a),l&2048&&Zd(a.alternate,a);break;default:$i(n,a)}t=t.sibling}}var ji=8192;function vl(e,t,n){if(e.subtreeFlags&ji)for(e=e.child;e!==null;)ip(e,t,n),e=e.sibling}function ip(e,t,n){switch(e.tag){case 26:vl(e,t,n),e.flags&ji&&e.memoizedState!==null&&Bw(n,$t,e.memoizedState,e.memoizedProps);break;case 5:vl(e,t,n);break;case 3:case 4:var a=$t;$t=gu(e.stateNode.containerInfo),vl(e,t,n),$t=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=ji,ji=16777216,vl(e,t,n),ji=a):vl(e,t,n));break;default:vl(e,t,n)}}function rp(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function zi(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,up(a,e)}rp(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)op(e),e=e.sibling}function op(e){switch(e.tag){case 0:case 11:case 15:zi(e),e.flags&2048&&ma(9,e,e.return);break;case 3:zi(e);break;case 12:zi(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Uo(e)):zi(e);break;default:zi(e)}}function Uo(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,up(a,e)}rp(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ma(8,t,t.return),Uo(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Uo(t));break;default:Uo(t)}e=e.sibling}}function up(e,t){for(;Pe!==null;){var n=Pe;switch(n.tag){case 0:case 11:case 15:ma(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var a=n.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:Cr(n.memoizedState.cache)}if(a=n.child,a!==null)a.return=n,Pe=a;else e:for(n=e;Pe!==null;){a=Pe;var l=a.sibling,i=a.return;if(Jy(a),a===n){Pe=null;break e}if(l!==null){l.return=i,Pe=l;break e}Pe=i}}}var KA={getCacheForType:function(e){var t=Ke(ke),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Ke(ke).controller.signal}},ZA=typeof WeakMap=="function"?WeakMap:Map,K=0,oe=null,F=null,j=0,ee=0,wt=null,ea=!1,ti=!1,Wd=!1,Hn=0,Re=0,ha=0,Ua=0,Id=0,Rt=0,Xl=0,er=null,ht=null,Ws=!1,Mu=0,cp=0,ru=1/0,ou=null,oa=null,He=0,ua=null,Ql=null,Nn=0,Is=0,Js=null,sp=null,tr=0,$s=null;function xt(){return(K&2)!==0&&j!==0?j&-j:k.T!==null?$d():bh()}function dp(){if(Rt===0)if((j&536870912)===0||V){var e=fo;fo<<=1,(fo&3932160)===0&&(fo=262144),Rt=e}else Rt=536870912;return e=_t.current,e!==null&&(e.flags|=32),Rt}function yt(e,t,n){(e===oe&&(ee===2||ee===9)||e.cancelPendingCommit!==null)&&(Kl(e,0),ta(e,j,Rt,!1)),Ar(e,n),((K&2)===0||e!==oe)&&(e===oe&&((K&2)===0&&(Ua|=n),Re===4&&ta(e,j,Rt,!1)),gn(e))}function fp(e,t,n){if((K&6)!==0)throw Error(w(327));var a=!n&&(t&127)===0&&(t&e.expiredLanes)===0||br(e,t),l=a?JA(e,t):cs(e,t,!0),i=a;do{if(l===0){ti&&!a&&ta(e,t,0,!1);break}else{if(n=e.current.alternate,i&&!WA(n)){l=cs(e,t,!1),i=!1;continue}if(l===2){if(i=t,e.errorRecoveryDisabledLanes&i)var r=0;else r=e.pendingLanes&-536870913,r=r!==0?r:r&536870912?536870912:0;if(r!==0){t=r;e:{var o=e;l=er;var u=o.current.memoizedState.isDehydrated;if(u&&(Kl(o,r).flags|=256),r=cs(o,r,!1),r!==2){if(Wd&&!u){o.errorRecoveryDisabledLanes|=i,Ua|=i,l=4;break e}i=ht,ht=l,i!==null&&(ht===null?ht=i:ht.push.apply(ht,i))}l=r}if(i=!1,l!==2)continue}}if(l===1){Kl(e,0),ta(e,t,0,!0);break}e:{switch(a=e,i=l,i){case 0:case 1:throw Error(w(345));case 4:if((t&4194048)!==t)break;case 6:ta(a,t,Rt,!ea);break e;case 2:ht=null;break;case 3:case 5:break;default:throw Error(w(329))}if((t&62914560)===t&&(l=Mu+300-Tt(),10<l)){if(ta(a,t,Rt,!ea),vu(a,0,!0)!==0)break e;Nn=t,a.timeoutHandle=Np(_m.bind(null,a,n,ht,ou,Ws,t,Rt,Ua,Xl,ea,i,"Throttled",-0,0),l);break e}_m(a,n,ht,ou,Ws,t,Rt,Ua,Xl,ea,i,null,-0,0)}}break}while(!0);gn(e)}function _m(e,t,n,a,l,i,r,o,u,c,s,f,d,m){if(e.timeoutHandle=-1,f=t.subtreeFlags,f&8192||(f&16785408)===16785408){f={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:xn},ip(t,i,f);var v=(i&62914560)===i?Mu-Tt():(i&4194048)===i?cp-Tt():0;if(v=Nw(f,v),v!==null){Nn=i,e.cancelPendingCommit=v(Nm.bind(null,e,t,i,n,a,l,r,o,u,s,f,null,d,m)),ta(e,i,r,!c);return}}Nm(e,t,i,n,a,l,r,o,u)}function WA(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var l=n[a],i=l.getSnapshot;l=l.value;try{if(!Mt(i(),l))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ta(e,t,n,a){t&=~Id,t&=~Ua,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var l=t;0<l;){var i=31-Dt(l),r=1<<i;a[i]=-1,l&=~r}n!==0&&yh(e,n,t)}function _u(){return(K&6)===0?(Er(0,!1),!1):!0}function Jd(){if(F!==null){if(ee===0)var e=F.return;else e=F,Mn=Ka=null,Hd(e),Hl=null,cr=0,e=F;for(;e!==null;)Vy(e.alternate,e),e=e.return;F=null}}function Kl(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,mw(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),Nn=0,Jd(),oe=e,F=n=_n(e.current,null),j=t,ee=0,wt=null,ea=!1,ti=br(e,t),Wd=!1,Xl=Rt=Id=Ua=ha=Re=0,ht=er=null,Ws=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var l=31-Dt(a),i=1<<l;t|=e[l],a&=~i}return Hn=t,Su(),n}function gp(e,t){H=null,k.H=dr,t===ei||t===Ru?(t=um(),ee=3):t===_d?(t=um(),ee=4):ee=t===Xd?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,wt=t,F===null&&(Re=1,au(e,jt(t,e.current)))}function mp(){var e=_t.current;return e===null?!0:(j&4194048)===j?Vt===null:(j&62914560)===j||(j&536870912)!==0?e===Vt:!1}function hp(){var e=k.H;return k.H=dr,e===null?dr:e}function yp(){var e=k.A;return k.A=KA,e}function uu(){Re=4,ea||(j&4194048)!==j&&_t.current!==null||(ti=!0),(ha&134217727)===0&&(Ua&134217727)===0||oe===null||ta(oe,j,Rt,!1)}function cs(e,t,n){var a=K;K|=2;var l=hp(),i=yp();(oe!==e||j!==t)&&(ou=null,Kl(e,t)),t=!1;var r=Re;e:do try{if(ee!==0&&F!==null){var o=F,u=wt;switch(ee){case 8:Jd(),r=6;break e;case 3:case 2:case 9:case 6:_t.current===null&&(t=!0);var c=ee;if(ee=0,wt=null,Nl(e,o,u,c),n&&ti){r=0;break e}break;default:c=ee,ee=0,wt=null,Nl(e,o,u,c)}}IA(),r=Re;break}catch(s){gp(e,s)}while(!0);return t&&e.shellSuspendCounter++,Mn=Ka=null,K=a,k.H=l,k.A=i,F===null&&(oe=null,j=0,Su()),r}function IA(){for(;F!==null;)pp(F)}function JA(e,t){var n=K;K|=2;var a=hp(),l=yp();oe!==e||j!==t?(ou=null,ru=Tt()+500,Kl(e,t)):ti=br(e,t);e:do try{if(ee!==0&&F!==null){t=F;var i=wt;t:switch(ee){case 1:ee=0,wt=null,Nl(e,t,i,1);break;case 2:case 9:if(om(i)){ee=0,wt=null,Bm(t);break}t=function(){ee!==2&&ee!==9||oe!==e||(ee=7),gn(e)},i.then(t,t);break e;case 3:ee=7;break e;case 4:ee=5;break e;case 7:om(i)?(ee=0,wt=null,Bm(t)):(ee=0,wt=null,Nl(e,t,i,7));break;case 5:var r=null;switch(F.tag){case 26:r=F.memoizedState;case 5:case 27:var o=F;if(r?Hp(r):o.stateNode.complete){ee=0,wt=null;var u=o.sibling;if(u!==null)F=u;else{var c=o.return;c!==null?(F=c,Bu(c)):F=null}break t}}ee=0,wt=null,Nl(e,t,i,5);break;case 6:ee=0,wt=null,Nl(e,t,i,6);break;case 8:Jd(),Re=6;break e;default:throw Error(w(462))}}$A();break}catch(s){gp(e,s)}while(!0);return Mn=Ka=null,k.H=a,k.A=l,K=n,F!==null?0:(oe=null,j=0,Su(),Re)}function $A(){for(;F!==null&&!Sb();)pp(F)}function pp(e){var t=Yy(e.alternate,e,Hn);e.memoizedProps=e.pendingProps,t===null?Bu(e):F=t}function Bm(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Rm(n,t,t.pendingProps,t.type,void 0,j);break;case 11:t=Rm(n,t,t.pendingProps,t.type.render,t.ref,j);break;case 5:Hd(t);default:Vy(n,t),t=F=Vh(t,Hn),t=Yy(n,t,Hn)}e.memoizedProps=e.pendingProps,t===null?Bu(e):F=t}function Nl(e,t,n,a){Mn=Ka=null,Hd(t),Hl=null,cr=0;var l=t.return;try{if(PA(e,l,t,n,j)){Re=1,au(e,jt(n,e.current)),F=null;return}}catch(i){if(l!==null)throw F=l,i;Re=1,au(e,jt(n,e.current)),F=null;return}t.flags&32768?(V||a===1?e=!0:ti||(j&536870912)!==0?e=!1:(ea=e=!0,(a===2||a===9||a===3||a===6)&&(a=_t.current,a!==null&&a.tag===13&&(a.flags|=16384))),vp(t,e)):Bu(t)}function Bu(e){var t=e;do{if((t.flags&32768)!==0){vp(t,ea);return}e=t.return;var n=YA(t.alternate,t,Hn);if(n!==null){F=n;return}if(t=t.sibling,t!==null){F=t;return}F=t=e}while(t!==null);Re===0&&(Re=5)}function vp(e,t){do{var n=VA(e.alternate,e);if(n!==null){n.flags&=32767,F=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){F=e;return}F=e=n}while(e!==null);Re=6,F=null}function Nm(e,t,n,a,l,i,r,o,u){e.cancelPendingCommit=null;do Nu();while(He!==0);if((K&6)!==0)throw Error(w(327));if(t!==null){if(t===e.current)throw Error(w(177));if(i=t.lanes|t.childLanes,i|=Cd,Nb(e,n,i,r,o,u),e===oe&&(F=oe=null,j=0),Ql=t,ua=e,Nn=n,Is=i,Js=l,sp=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,aw(Xo,function(){return Cp(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=k.T,k.T=null,l=Z.p,Z.p=2,r=K,K|=4;try{XA(e,t,n)}finally{K=r,Z.p=l,k.T=a}}He=1,bp(),Ap(),wp()}}function bp(){if(He===1){He=0;var e=ua,t=Ql,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=k.T,k.T=null;var a=Z.p;Z.p=2;var l=K;K|=4;try{np(t,e);var i=ad,r=Hh(e.containerInfo),o=i.focusedElem,u=i.selectionRange;if(r!==o&&o&&o.ownerDocument&&zh(o.ownerDocument.documentElement,o)){if(u!==null&&Sd(o)){var c=u.start,s=u.end;if(s===void 0&&(s=c),"selectionStart"in o)o.selectionStart=c,o.selectionEnd=Math.min(s,o.value.length);else{var f=o.ownerDocument||document,d=f&&f.defaultView||window;if(d.getSelection){var m=d.getSelection(),v=o.textContent.length,A=Math.min(u.start,v),b=u.end===void 0?A:Math.min(u.end,v);!m.extend&&A>b&&(r=b,b=A,A=r);var h=em(o,A),g=em(o,b);if(h&&g&&(m.rangeCount!==1||m.anchorNode!==h.node||m.anchorOffset!==h.offset||m.focusNode!==g.node||m.focusOffset!==g.offset)){var y=f.createRange();y.setStart(h.node,h.offset),m.removeAllRanges(),A>b?(m.addRange(y),m.extend(g.node,g.offset)):(y.setEnd(g.node,g.offset),m.addRange(y))}}}}for(f=[],m=o;m=m.parentNode;)m.nodeType===1&&f.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o<f.length;o++){var p=f[o];p.element.scrollLeft=p.left,p.element.scrollTop=p.top}}yu=!!nd,ad=nd=null}finally{K=l,Z.p=a,k.T=n}}e.current=t,He=2}}function Ap(){if(He===2){He=0;var e=ua,t=Ql,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=k.T,k.T=null;var a=Z.p;Z.p=2;var l=K;K|=4;try{Iy(e,t.alternate,t)}finally{K=l,Z.p=a,k.T=n}}He=3}}function wp(){if(He===4||He===3){He=0,Cb();var e=ua,t=Ql,n=Nn,a=sp;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?He=5:(He=0,Ql=ua=null,Sp(e,e.pendingLanes));var l=e.pendingLanes;if(l===0&&(oa=null),hd(n),t=t.stateNode,Et&&typeof Et.onCommitFiberRoot=="function")try{Et.onCommitFiberRoot(vr,t,void 0,(t.current.flags&128)===128)}catch{}if(a!==null){t=k.T,l=Z.p,Z.p=2,k.T=null;try{for(var i=e.onRecoverableError,r=0;r<a.length;r++){var o=a[r];i(o.value,{componentStack:o.stack})}}finally{k.T=t,Z.p=l}}(Nn&3)!==0&&Nu(),gn(e),l=e.pendingLanes,(n&261930)!==0&&(l&42)!==0?e===$s?tr++:(tr=0,$s=e):tr=0,Er(0,!1)}}function Sp(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Cr(t)))}function Nu(){return bp(),Ap(),wp(),Cp()}function Cp(){if(He!==5)return!1;var e=ua,t=Is;Is=0;var n=hd(Nn),a=k.T,l=Z.p;try{Z.p=32>n?32:n,k.T=null,n=Js,Js=null;var i=ua,r=Nn;if(He=0,Ql=ua=null,Nn=0,(K&6)!==0)throw Error(w(331));var o=K;if(K|=4,op(i.current),lp(i,i.current,r,n),K=o,Er(0,!1),Et&&typeof Et.onPostCommitFiberRoot=="function")try{Et.onPostCommitFiberRoot(vr,i)}catch{}return!0}finally{Z.p=l,k.T=a,Sp(e,t)}}function Om(e,t,n){t=jt(n,t),t=Xs(e.stateNode,t,2),e=ra(e,t,2),e!==null&&(Ar(e,2),gn(e))}function te(e,t,n){if(e.tag===3)Om(e,e,n);else for(;t!==null;){if(t.tag===3){Om(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(oa===null||!oa.has(a))){e=jt(n,e),n=Uy(2),a=ra(t,n,2),a!==null&&(Gy(n,a,t,e),Ar(a,2),gn(a));break}}t=t.return}}function ss(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new ZA;var l=new Set;a.set(t,l)}else l=a.get(t),l===void 0&&(l=new Set,a.set(t,l));l.has(n)||(Wd=!0,l.add(n),e=ew.bind(null,e,t,n),t.then(e,e))}function ew(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,oe===e&&(j&n)===n&&(Re===4||Re===3&&(j&62914560)===j&&300>Tt()-Mu?(K&2)===0&&Kl(e,0):Id|=n,Xl===j&&(Xl=0)),gn(e)}function Rp(e,t){t===0&&(t=hh()),e=Qa(e,t),e!==null&&(Ar(e,t),gn(e))}function tw(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Rp(e,n)}function nw(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(w(314))}a!==null&&a.delete(t),Rp(e,n)}function aw(e,t){return gd(e,t)}var cu=null,Al=null,ed=!1,su=!1,ds=!1,na=0;function gn(e){e!==Al&&e.next===null&&(Al===null?cu=Al=e:Al=Al.next=e),su=!0,ed||(ed=!0,iw())}function Er(e,t){if(!ds&&su){ds=!0;do for(var n=!1,a=cu;a!==null;){if(!t)if(e!==0){var l=a.pendingLanes;if(l===0)var i=0;else{var r=a.suspendedLanes,o=a.pingedLanes;i=(1<<31-Dt(42|e)+1)-1,i&=l&~(r&~o),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(n=!0,km(a,i))}else i=j,i=vu(a,a===oe?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(i&3)===0||br(a,i)||(n=!0,km(a,i));a=a.next}while(n);ds=!1}}function lw(){Tp()}function Tp(){su=ed=!1;var e=0;na!==0&&gw()&&(e=na);for(var t=Tt(),n=null,a=cu;a!==null;){var l=a.next,i=Ep(a,t);i===0?(a.next=null,n===null?cu=l:n.next=l,l===null&&(Al=n)):(n=a,(e!==0||(i&3)!==0)&&(su=!0)),a=l}He!==0&&He!==5||Er(e,!1),na!==0&&(na=0)}function Ep(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,l=e.expirationTimes,i=e.pendingLanes&-62914561;0<i;){var r=31-Dt(i),o=1<<r,u=l[r];u===-1?((o&n)===0||(o&a)!==0)&&(l[r]=Bb(o,t)):u<=t&&(e.expiredLanes|=o),i&=~o}if(t=oe,n=j,n=vu(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,n===0||e===t&&(ee===2||ee===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&qc(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||br(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(a!==null&&qc(a),hd(n)){case 2:case 8:n=gh;break;case 32:n=Xo;break;case 268435456:n=mh;break;default:n=Xo}return a=Dp.bind(null,e),n=gd(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&a!==null&&qc(a),e.callbackPriority=2,e.callbackNode=null,2}function Dp(e,t){if(He!==0&&He!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Nu()&&e.callbackNode!==n)return null;var a=j;return a=vu(e,e===oe?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(fp(e,a,t),Ep(e,Tt()),e.callbackNode!=null&&e.callbackNode===n?Dp.bind(null,e):null)}function km(e,t){if(Nu())return null;fp(e,t,!0)}function iw(){hw(function(){(K&6)!==0?gd(fh,lw):Tp()})}function $d(){if(na===0){var e=jl;e===0&&(e=so,so<<=1,(so&261888)===0&&(so=256)),na=e}return na}function Lm(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Mo(""+e)}function zm(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function rw(e,t,n,a,l){if(t==="submit"&&n&&n.stateNode===l){var i=Lm((l[pt]||null).action),r=a.submitter;r&&(t=(t=r[pt]||null)?Lm(t.formAction):r.getAttribute("formAction"),t!==null&&(i=t,r=null));var o=new bu("action","action",null,a,l);e.push({event:o,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(na!==0){var u=r?zm(l,r):new FormData(l);Ys(n,{pending:!0,data:u,method:l.method,action:i},null,u)}}else typeof i=="function"&&(o.preventDefault(),u=r?zm(l,r):new FormData(l),Ys(n,{pending:!0,data:u,method:l.method,action:i},i,u))},currentTarget:l}]})}}for(Co=0;Co<Ns.length;Co++)Ro=Ns[Co],Hm=Ro.toLowerCase(),Um=Ro[0].toUpperCase()+Ro.slice(1),en(Hm,"on"+Um);var Ro,Hm,Um,Co;en(Gh,"onAnimationEnd");en(qh,"onAnimationIteration");en(Ph,"onAnimationStart");en("dblclick","onDoubleClick");en("focusin","onFocus");en("focusout","onBlur");en(RA,"onTransitionRun");en(TA,"onTransitionStart");en(EA,"onTransitionCancel");en(Fh,"onTransitionEnd");Pl("onMouseEnter",["mouseout","mouseover"]);Pl("onMouseLeave",["mouseout","mouseover"]);Pl("onPointerEnter",["pointerout","pointerover"]);Pl("onPointerLeave",["pointerout","pointerover"]);Ya("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Ya("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Ya("onBeforeInput",["compositionend","keypress","textInput","paste"]);Ya("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Ya("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Ya("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var fr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ow=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(fr));function xp(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],l=a.event;a=a.listeners;e:{var i=void 0;if(t)for(var r=a.length-1;0<=r;r--){var o=a[r],u=o.instance,c=o.currentTarget;if(o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Ko(s)}l.currentTarget=null,i=u}else for(r=0;r<a.length;r++){if(o=a[r],u=o.instance,c=o.currentTarget,o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Ko(s)}l.currentTarget=null,i=u}}}}function P(e,t){var n=t[Rs];n===void 0&&(n=t[Rs]=new Set);var a=e+"__bubble";n.has(a)||(Mp(t,e,2,!1),n.add(a))}function fs(e,t,n){var a=0;t&&(a|=4),Mp(n,e,a,t)}var To="_reactListening"+Math.random().toString(36).slice(2);function ef(e){if(!e[To]){e[To]=!0,Ah.forEach(function(n){n!=="selectionchange"&&(ow.has(n)||fs(n,!1,e),fs(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[To]||(t[To]=!0,fs("selectionchange",!1,t))}}function Mp(e,t,n,a){switch(Fp(t)){case 2:var l=Lw;break;case 8:l=zw;break;default:l=lf}n=l.bind(null,t,n,e),l=void 0,!Ms||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(l=!0),a?l!==void 0?e.addEventListener(t,n,{capture:!0,passive:l}):e.addEventListener(t,n,!0):l!==void 0?e.addEventListener(t,n,{passive:l}):e.addEventListener(t,n,!1)}function gs(e,t,n,a,l){var i=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var r=a.tag;if(r===3||r===4){var o=a.stateNode.containerInfo;if(o===l)break;if(r===4)for(r=a.return;r!==null;){var u=r.tag;if((u===3||u===4)&&r.stateNode.containerInfo===l)return;r=r.return}for(;o!==null;){if(r=Cl(o),r===null)return;if(u=r.tag,u===5||u===6||u===26||u===27){a=i=r;continue e}o=o.parentNode}}a=a.return}xh(function(){var c=i,s=vd(n),f=[];e:{var d=jh.get(e);if(d!==void 0){var m=bu,v=e;switch(e){case"keypress":if(Bo(n)===0)break e;case"keydown":case"keyup":m=nA;break;case"focusin":v="focus",m=Vc;break;case"focusout":v="blur",m=Vc;break;case"beforeblur":case"afterblur":m=Vc;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=Vg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=Yb;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=iA;break;case Gh:case qh:case Ph:m=Qb;break;case Fh:m=oA;break;case"scroll":case"scrollend":m=Fb;break;case"wheel":m=cA;break;case"copy":case"cut":case"paste":m=Zb;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=Qg;break;case"toggle":case"beforetoggle":m=dA}var A=(t&4)!==0,b=!A&&(e==="scroll"||e==="scrollend"),h=A?d!==null?d+"Capture":null:d;A=[];for(var g=c,y;g!==null;){var p=g;if(y=p.stateNode,p=p.tag,p!==5&&p!==26&&p!==27||y===null||h===null||(p=lr(g,h),p!=null&&A.push(gr(g,p,y))),b)break;g=g.return}0<A.length&&(d=new m(d,v,null,n,s),f.push({event:d,listeners:A}))}}if((t&7)===0){e:{if(d=e==="mouseover"||e==="pointerover",m=e==="mouseout"||e==="pointerout",d&&n!==xs&&(v=n.relatedTarget||n.fromElement)&&(Cl(v)||v[Il]))break e;if((m||d)&&(d=s.window===s?s:(d=s.ownerDocument)?d.defaultView||d.parentWindow:window,m?(v=n.relatedTarget||n.toElement,m=c,v=v?Cl(v):null,v!==null&&(b=pr(v),A=v.tag,v!==b||A!==5&&A!==27&&A!==6)&&(v=null)):(m=null,v=c),m!==v)){if(A=Vg,p="onMouseLeave",h="onMouseEnter",g="mouse",(e==="pointerout"||e==="pointerover")&&(A=Qg,p="onPointerLeave",h="onPointerEnter",g="pointer"),b=m==null?d:Pi(m),y=v==null?d:Pi(v),d=new A(p,g+"leave",m,n,s),d.target=b,d.relatedTarget=y,p=null,Cl(s)===c&&(A=new A(h,g+"enter",v,n,s),A.target=y,A.relatedTarget=b,p=A),b=p,m&&v)t:{for(A=uw,h=m,g=v,y=0,p=h;p;p=A(p))y++;p=0;for(var C=g;C;C=A(C))p++;for(;0<y-p;)h=A(h),y--;for(;0<p-y;)g=A(g),p--;for(;y--;){if(h===g||g!==null&&h===g.alternate){A=h;break t}h=A(h),g=A(g)}A=null}else A=null;m!==null&&Gm(f,d,m,A,!1),v!==null&&b!==null&&Gm(f,b,v,A,!0)}}e:{if(d=c?Pi(c):window,m=d.nodeName&&d.nodeName.toLowerCase(),m==="select"||m==="input"&&d.type==="file")var R=Ig;else if(Wg(d))if(kh)R=wA;else{R=bA;var T=vA}else m=d.nodeName,!m||m.toLowerCase()!=="input"||d.type!=="checkbox"&&d.type!=="radio"?c&&pd(c.elementType)&&(R=Ig):R=AA;if(R&&(R=R(e,c))){Oh(f,R,n,s);break e}T&&T(e,d,c),e==="focusout"&&c&&d.type==="number"&&c.memoizedProps.value!=null&&Ds(d,"number",d.value)}switch(T=c?Pi(c):window,e){case"focusin":(Wg(T)||T.contentEditable==="true")&&(El=T,_s=c,Xi=null);break;case"focusout":Xi=_s=El=null;break;case"mousedown":Bs=!0;break;case"contextmenu":case"mouseup":case"dragend":Bs=!1,tm(f,n,s);break;case"selectionchange":if(CA)break;case"keydown":case"keyup":tm(f,n,s)}var M;if(wd)e:{switch(e){case"compositionstart":var S="onCompositionStart";break e;case"compositionend":S="onCompositionEnd";break e;case"compositionupdate":S="onCompositionUpdate";break e}S=void 0}else Tl?Bh(e,n)&&(S="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(S="onCompositionStart");S&&(_h&&n.locale!=="ko"&&(Tl||S!=="onCompositionStart"?S==="onCompositionEnd"&&Tl&&(M=Mh()):($n=s,bd="value"in $n?$n.value:$n.textContent,Tl=!0)),T=du(c,S),0<T.length&&(S=new Xg(S,e,null,n,s),f.push({event:S,listeners:T}),M?S.data=M:(M=Nh(n),M!==null&&(S.data=M)))),(M=gA?mA(e,n):hA(e,n))&&(S=du(c,"onBeforeInput"),0<S.length&&(T=new Xg("onBeforeInput","beforeinput",null,n,s),f.push({event:T,listeners:S}),T.data=M)),rw(f,e,c,n,s)}xp(f,t)})}function gr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function du(e,t){for(var n=t+"Capture",a=[];e!==null;){var l=e,i=l.stateNode;if(l=l.tag,l!==5&&l!==26&&l!==27||i===null||(l=lr(e,n),l!=null&&a.unshift(gr(e,l,i)),l=lr(e,t),l!=null&&a.push(gr(e,l,i))),e.tag===3)return a;e=e.return}return[]}function uw(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Gm(e,t,n,a,l){for(var i=t._reactName,r=[];n!==null&&n!==a;){var o=n,u=o.alternate,c=o.stateNode;if(o=o.tag,u!==null&&u===a)break;o!==5&&o!==26&&o!==27||c===null||(u=c,l?(c=lr(n,i),c!=null&&r.unshift(gr(n,c,u))):l||(c=lr(n,i),c!=null&&r.push(gr(n,c,u)))),n=n.return}r.length!==0&&e.push({event:t,listeners:r})}var cw=/\r\n?/g,sw=/\u0000|\uFFFD/g;function qm(e){return(typeof e=="string"?e:""+e).replace(cw,``).replace(sw,"")}function _p(e,t){return t=qm(t),qm(e)===t}function ae(e,t,n,a,l,i){switch(n){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||Fl(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&Fl(e,""+a);break;case"className":mo(e,"class",a);break;case"tabIndex":mo(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":mo(e,n,a);break;case"style":Dh(e,a,i);break;case"data":if(t!=="object"){mo(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Mo(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof i=="function"&&(n==="formAction"?(t!=="input"&&ae(e,t,"name",l.name,l,null),ae(e,t,"formEncType",l.formEncType,l,null),ae(e,t,"formMethod",l.formMethod,l,null),ae(e,t,"formTarget",l.formTarget,l,null)):(ae(e,t,"encType",l.encType,l,null),ae(e,t,"method",l.method,l,null),ae(e,t,"target",l.target,l,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Mo(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(e.onclick=xn);break;case"onScroll":a!=null&&P("scroll",e);break;case"onScrollEnd":a!=null&&P("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(w(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(w(60));e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}n=Mo(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""+a):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,a):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(n,a):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):e.setAttribute(n,a);break;case"popover":P("beforetoggle",e),P("toggle",e),xo(e,"popover",a);break;case"xlinkActuate":An(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":An(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":An(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":An(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":An(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":An(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":An(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":An(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":An(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":xo(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=qb.get(n)||n,xo(e,n,a))}}function td(e,t,n,a,l,i){switch(n){case"style":Dh(e,a,i);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(w(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(w(60));e.innerHTML=n}}break;case"children":typeof a=="string"?Fl(e,a):(typeof a=="number"||typeof a=="bigint")&&Fl(e,""+a);break;case"onScroll":a!=null&&P("scroll",e);break;case"onScrollEnd":a!=null&&P("scrollend",e);break;case"onClick":a!=null&&(e.onclick=xn);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!wh.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(l=n.endsWith("Capture"),t=n.slice(2,l?n.length-7:void 0),i=e[pt]||null,i=i!=null?i[n]:null,typeof i=="function"&&e.removeEventListener(t,i,l),typeof a=="function")){typeof i!="function"&&i!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,l);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):xo(e,n,a)}}}function Ze(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":P("error",e),P("load",e);var a=!1,l=!1,i;for(i in n)if(n.hasOwnProperty(i)){var r=n[i];if(r!=null)switch(i){case"src":a=!0;break;case"srcSet":l=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(w(137,t));default:ae(e,t,i,r,n,null)}}l&&ae(e,t,"srcSet",n.srcSet,n,null),a&&ae(e,t,"src",n.src,n,null);return;case"input":P("invalid",e);var o=i=r=l=null,u=null,c=null;for(a in n)if(n.hasOwnProperty(a)){var s=n[a];if(s!=null)switch(a){case"name":l=s;break;case"type":r=s;break;case"checked":u=s;break;case"defaultChecked":c=s;break;case"value":i=s;break;case"defaultValue":o=s;break;case"children":case"dangerouslySetInnerHTML":if(s!=null)throw Error(w(137,t));break;default:ae(e,t,a,s,n,null)}}Rh(e,i,o,u,c,r,l,!1);return;case"select":P("invalid",e),a=r=i=null;for(l in n)if(n.hasOwnProperty(l)&&(o=n[l],o!=null))switch(l){case"value":i=o;break;case"defaultValue":r=o;break;case"multiple":a=o;default:ae(e,t,l,o,n,null)}t=i,n=r,e.multiple=!!a,t!=null?kl(e,!!a,t,!1):n!=null&&kl(e,!!a,n,!0);return;case"textarea":P("invalid",e),i=l=a=null;for(r in n)if(n.hasOwnProperty(r)&&(o=n[r],o!=null))switch(r){case"value":a=o;break;case"defaultValue":l=o;break;case"children":i=o;break;case"dangerouslySetInnerHTML":if(o!=null)throw Error(w(91));break;default:ae(e,t,r,o,n,null)}Eh(e,a,l,i);return;case"option":for(u in n)if(n.hasOwnProperty(u)&&(a=n[u],a!=null))switch(u){case"selected":e.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:ae(e,t,u,a,n,null)}return;case"dialog":P("beforetoggle",e),P("toggle",e),P("cancel",e),P("close",e);break;case"iframe":case"object":P("load",e);break;case"video":case"audio":for(a=0;a<fr.length;a++)P(fr[a],e);break;case"image":P("error",e),P("load",e);break;case"details":P("toggle",e);break;case"embed":case"source":case"link":P("error",e),P("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(c in n)if(n.hasOwnProperty(c)&&(a=n[c],a!=null))switch(c){case"children":case"dangerouslySetInnerHTML":throw Error(w(137,t));default:ae(e,t,c,a,n,null)}return;default:if(pd(t)){for(s in n)n.hasOwnProperty(s)&&(a=n[s],a!==void 0&&td(e,t,s,a,n,void 0));return}}for(o in n)n.hasOwnProperty(o)&&(a=n[o],a!=null&&ae(e,t,o,a,n,null))}function dw(e,t,n,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,i=null,r=null,o=null,u=null,c=null,s=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case"checked":break;case"value":break;case"defaultValue":u=f;default:a.hasOwnProperty(m)||ae(e,t,m,null,a,f)}}for(var d in a){var m=a[d];if(f=n[d],a.hasOwnProperty(d)&&(m!=null||f!=null))switch(d){case"type":i=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":s=m;break;case"value":r=m;break;case"defaultValue":o=m;break;case"children":case"dangerouslySetInnerHTML":if(m!=null)throw Error(w(137,t));break;default:m!==f&&ae(e,t,d,m,a,f)}}Es(e,r,o,u,c,s,i,l);return;case"select":m=r=o=d=null;for(i in n)if(u=n[i],n.hasOwnProperty(i)&&u!=null)switch(i){case"value":break;case"multiple":m=u;default:a.hasOwnProperty(i)||ae(e,t,i,null,a,u)}for(l in a)if(i=a[l],u=n[l],a.hasOwnProperty(l)&&(i!=null||u!=null))switch(l){case"value":d=i;break;case"defaultValue":o=i;break;case"multiple":r=i;default:i!==u&&ae(e,t,l,i,a,u)}t=o,n=r,a=m,d!=null?kl(e,!!n,d,!1):!!a!=!!n&&(t!=null?kl(e,!!n,t,!0):kl(e,!!n,n?[]:"",!1));return;case"textarea":m=d=null;for(o in n)if(l=n[o],n.hasOwnProperty(o)&&l!=null&&!a.hasOwnProperty(o))switch(o){case"value":break;case"children":break;default:ae(e,t,o,null,a,l)}for(r in a)if(l=a[r],i=n[r],a.hasOwnProperty(r)&&(l!=null||i!=null))switch(r){case"value":d=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(l!=null)throw Error(w(91));break;default:l!==i&&ae(e,t,r,l,a,i)}Th(e,d,m);return;case"option":for(var v in n)if(d=n[v],n.hasOwnProperty(v)&&d!=null&&!a.hasOwnProperty(v))switch(v){case"selected":e.selected=!1;break;default:ae(e,t,v,null,a,d)}for(u in a)if(d=a[u],m=n[u],a.hasOwnProperty(u)&&d!==m&&(d!=null||m!=null))switch(u){case"selected":e.selected=d&&typeof d!="function"&&typeof d!="symbol";break;default:ae(e,t,u,d,a,m)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var A in n)d=n[A],n.hasOwnProperty(A)&&d!=null&&!a.hasOwnProperty(A)&&ae(e,t,A,null,a,d);for(c in a)if(d=a[c],m=n[c],a.hasOwnProperty(c)&&d!==m&&(d!=null||m!=null))switch(c){case"children":case"dangerouslySetInnerHTML":if(d!=null)throw Error(w(137,t));break;default:ae(e,t,c,d,a,m)}return;default:if(pd(t)){for(var b in n)d=n[b],n.hasOwnProperty(b)&&d!==void 0&&!a.hasOwnProperty(b)&&td(e,t,b,void 0,a,d);for(s in a)d=a[s],m=n[s],!a.hasOwnProperty(s)||d===m||d===void 0&&m===void 0||td(e,t,s,d,a,m);return}}for(var h in n)d=n[h],n.hasOwnProperty(h)&&d!=null&&!a.hasOwnProperty(h)&&ae(e,t,h,null,a,d);for(f in a)d=a[f],m=n[f],!a.hasOwnProperty(f)||d===m||d==null&&m==null||ae(e,t,f,d,a,m)}function Pm(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function fw(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var l=n[a],i=l.transferSize,r=l.initiatorType,o=l.duration;if(i&&o&&Pm(r)){for(r=0,o=l.responseEnd,a+=1;a<n.length;a++){var u=n[a],c=u.startTime;if(c>o)break;var s=u.transferSize,f=u.initiatorType;s&&Pm(f)&&(u=u.responseEnd,r+=s*(u<o?1:(o-c)/(u-c)))}if(--a,t+=8*(i+r)/(l.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var nd=null,ad=null;function fu(e){return e.nodeType===9?e:e.ownerDocument}function Fm(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Bp(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function ld(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var ms=null;function gw(){var e=window.event;return e&&e.type==="popstate"?e===ms?!1:(ms=e,!0):(ms=null,!1)}var Np=typeof setTimeout=="function"?setTimeout:void 0,mw=typeof clearTimeout=="function"?clearTimeout:void 0,jm=typeof Promise=="function"?Promise:void 0,hw=typeof queueMicrotask=="function"?queueMicrotask:typeof jm<"u"?function(e){return jm.resolve(null).then(e).catch(yw)}:Np;function yw(e){setTimeout(function(){throw e})}function pa(e){return e==="head"}function Ym(e,t){var n=t,a=0;do{var l=n.nextSibling;if(e.removeChild(n),l&&l.nodeType===8)if(n=l.data,n==="/$"||n==="/&"){if(a===0){e.removeChild(l),Wl(t);return}a--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")a++;else if(n==="html")nr(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,nr(n);for(var i=n.firstChild;i;){var r=i.nextSibling,o=i.nodeName;i[wr]||o==="SCRIPT"||o==="STYLE"||o==="LINK"&&i.rel.toLowerCase()==="stylesheet"||n.removeChild(i),i=r}}else n==="body"&&nr(e.ownerDocument.body);n=l}while(n);Wl(t)}function Vm(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=a}while(n)}function id(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":id(n),yd(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function pw(e,t,n,a){for(;e.nodeType===1;){var l=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[wr])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(i=e.getAttribute("rel"),i==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(i!==l.rel||e.getAttribute("href")!==(l.href==null||l.href===""?null:l.href)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin)||e.getAttribute("title")!==(l.title==null?null:l.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(i=e.getAttribute("src"),(i!==(l.src==null?null:l.src)||e.getAttribute("type")!==(l.type==null?null:l.type)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin))&&i&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var i=l.name==null?null:""+l.name;if(l.type==="hidden"&&e.getAttribute("name")===i)return e}else return e;if(e=Xt(e.nextSibling),e===null)break}return null}function vw(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Xt(e.nextSibling),e===null))return null;return e}function Op(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Xt(e.nextSibling),e===null))return null;return e}function rd(e){return e.data==="$?"||e.data==="$~"}function od(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function bw(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function Xt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var ud=null;function Xm(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return Xt(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function Qm(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function kp(e,t,n){switch(t=fu(n),e){case"html":if(e=t.documentElement,!e)throw Error(w(452));return e;case"head":if(e=t.head,!e)throw Error(w(453));return e;case"body":if(e=t.body,!e)throw Error(w(454));return e;default:throw Error(w(451))}}function nr(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);yd(e)}var Qt=new Map,Km=new Set;function gu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Un=Z.d;Z.d={f:Aw,r:ww,D:Sw,C:Cw,L:Rw,m:Tw,X:Dw,S:Ew,M:xw};function Aw(){var e=Un.f(),t=_u();return e||t}function ww(e){var t=Jl(e);t!==null&&t.tag===5&&t.type==="form"?Dy(t):Un.r(e)}var ni=typeof document>"u"?null:document;function Lp(e,t,n){var a=ni;if(a&&typeof t=="string"&&t){var l=Ft(t);l='link[rel="'+e+'"][href="'+l+'"]',typeof n=="string"&&(l+='[crossorigin="'+n+'"]'),Km.has(l)||(Km.add(l),e={rel:e,crossOrigin:n,href:t},a.querySelector(l)===null&&(t=a.createElement("link"),Ze(t,"link",e),Fe(t),a.head.appendChild(t)))}}function Sw(e){Un.D(e),Lp("dns-prefetch",e,null)}function Cw(e,t){Un.C(e,t),Lp("preconnect",e,t)}function Rw(e,t,n){Un.L(e,t,n);var a=ni;if(a&&e&&t){var l='link[rel="preload"][as="'+Ft(t)+'"]';t==="image"&&n&&n.imageSrcSet?(l+='[imagesrcset="'+Ft(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(l+='[imagesizes="'+Ft(n.imageSizes)+'"]')):l+='[href="'+Ft(e)+'"]';var i=l;switch(t){case"style":i=Zl(e);break;case"script":i=ai(e)}Qt.has(i)||(e=he({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Qt.set(i,e),a.querySelector(l)!==null||t==="style"&&a.querySelector(Dr(i))||t==="script"&&a.querySelector(xr(i))||(t=a.createElement("link"),Ze(t,"link",e),Fe(t),a.head.appendChild(t)))}}function Tw(e,t){Un.m(e,t);var n=ni;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",l='link[rel="modulepreload"][as="'+Ft(a)+'"][href="'+Ft(e)+'"]',i=l;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=ai(e)}if(!Qt.has(i)&&(e=he({rel:"modulepreload",href:e},t),Qt.set(i,e),n.querySelector(l)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(xr(i)))return}a=n.createElement("link"),Ze(a,"link",e),Fe(a),n.head.appendChild(a)}}}function Ew(e,t,n){Un.S(e,t,n);var a=ni;if(a&&e){var l=Ol(a).hoistableStyles,i=Zl(e);t=t||"default";var r=l.get(i);if(!r){var o={loading:0,preload:null};if(r=a.querySelector(Dr(i)))o.loading=5;else{e=he({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Qt.get(i))&&tf(e,n);var u=r=a.createElement("link");Fe(u),Ze(u,"link",e),u._p=new Promise(function(c,s){u.onload=c,u.onerror=s}),u.addEventListener("load",function(){o.loading|=1}),u.addEventListener("error",function(){o.loading|=2}),o.loading|=4,Go(r,t,a)}r={type:"stylesheet",instance:r,count:1,state:o},l.set(i,r)}}}function Dw(e,t){Un.X(e,t);var n=ni;if(n&&e){var a=Ol(n).hoistableScripts,l=ai(e),i=a.get(l);i||(i=n.querySelector(xr(l)),i||(e=he({src:e,async:!0},t),(t=Qt.get(l))&&nf(e,t),i=n.createElement("script"),Fe(i),Ze(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function xw(e,t){Un.M(e,t);var n=ni;if(n&&e){var a=Ol(n).hoistableScripts,l=ai(e),i=a.get(l);i||(i=n.querySelector(xr(l)),i||(e=he({src:e,async:!0,type:"module"},t),(t=Qt.get(l))&&nf(e,t),i=n.createElement("script"),Fe(i),Ze(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function Zm(e,t,n,a){var l=(l=aa.current)?gu(l):null;if(!l)throw Error(w(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=Zl(n.href),n=Ol(l).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Zl(n.href);var i=Ol(l).hoistableStyles,r=i.get(e);if(r||(l=l.ownerDocument||l,r={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(e,r),(i=l.querySelector(Dr(e)))&&!i._p&&(r.instance=i,r.state.loading=5),Qt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Qt.set(e,n),i||Mw(l,e,n,r.state))),t&&a===null)throw Error(w(528,""));return r}if(t&&a!==null)throw Error(w(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ai(n),n=Ol(l).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(w(444,e))}}function Zl(e){return'href="'+Ft(e)+'"'}function Dr(e){return'link[rel="stylesheet"]['+e+"]"}function zp(e){return he({},e,{"data-precedence":e.precedence,precedence:null})}function Mw(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Ze(t,"link",n),Fe(t),e.head.appendChild(t))}function ai(e){return'[src="'+Ft(e)+'"]'}function xr(e){return"script[async]"+e}function Wm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+Ft(n.href)+'"]');if(a)return t.instance=a,Fe(a),a;var l=he({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),Fe(a),Ze(a,"style",l),Go(a,n.precedence,e),t.instance=a;case"stylesheet":l=Zl(n.href);var i=e.querySelector(Dr(l));if(i)return t.state.loading|=4,t.instance=i,Fe(i),i;a=zp(n),(l=Qt.get(l))&&tf(a,l),i=(e.ownerDocument||e).createElement("link"),Fe(i);var r=i;return r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ze(i,"link",a),t.state.loading|=4,Go(i,n.precedence,e),t.instance=i;case"script":return i=ai(n.src),(l=e.querySelector(xr(i)))?(t.instance=l,Fe(l),l):(a=n,(l=Qt.get(i))&&(a=he({},n),nf(a,l)),e=e.ownerDocument||e,l=e.createElement("script"),Fe(l),Ze(l,"link",a),e.head.appendChild(l),t.instance=l);case"void":return null;default:throw Error(w(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Go(a,n.precedence,e));return t.instance}function Go(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=a.length?a[a.length-1]:null,i=l,r=0;r<a.length;r++){var o=a[r];if(o.dataset.precedence===t)i=o;else if(i!==l)break}i?i.parentNode.insertBefore(e,i.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function tf(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function nf(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var qo=null;function Im(e,t,n){if(qo===null){var a=new Map,l=qo=new Map;l.set(n,a)}else l=qo,a=l.get(n),a||(a=new Map,l.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),l=0;l<n.length;l++){var i=n[l];if(!(i[wr]||i[Xe]||e==="link"&&i.getAttribute("rel")==="stylesheet")&&i.namespaceURI!=="http://www.w3.org/2000/svg"){var r=i.getAttribute(t)||"";r=e+r;var o=a.get(r);o?o.push(i):a.set(r,[i])}}return a}function Jm(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function _w(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Hp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Bw(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var l=Zl(a.href),i=t.querySelector(Dr(l));if(i){t=i._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=mu.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=i,Fe(i);return}i=t.ownerDocument||t,a=zp(a),(l=Qt.get(l))&&tf(a,l),i=i.createElement("link"),Fe(i);var r=i;r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ze(i,"link",a),n.instance=i}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=mu.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var hs=0;function Nw(e,t){return e.stylesheets&&e.count===0&&Po(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&Po(e,e.stylesheets),e.unsuspend){var i=e.unsuspend;e.unsuspend=null,i()}},6e4+t);0<e.imgBytes&&hs===0&&(hs=62500*fw());var l=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Po(e,e.stylesheets),e.unsuspend)){var i=e.unsuspend;e.unsuspend=null,i()}},(e.imgBytes>hs?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(l)}}:null}function mu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Po(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var hu=null;function Po(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,hu=new Map,t.forEach(Ow,e),hu=null,mu.call(e))}function Ow(e,t){if(!(t.state.loading&4)){var n=hu.get(e);if(n)var a=n.get(null);else{n=new Map,hu.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i<l.length;i++){var r=l[i];(r.nodeName==="LINK"||r.getAttribute("media")!=="not all")&&(n.set(r.dataset.precedence,r),a=r)}a&&n.set(null,a)}l=t.instance,r=l.getAttribute("data-precedence"),i=n.get(r)||a,i===a&&n.set(null,l),n.set(r,l),this.count++,a=mu.bind(this),l.addEventListener("load",a),l.addEventListener("error",a),i?i.parentNode.insertBefore(l,i.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(l,e.firstChild)),t.state.loading|=4}}var mr={$$typeof:Dn,Provider:null,Consumer:null,_currentValue:ka,_currentValue2:ka,_threadCount:0};function kw(e,t,n,a,l,i,r,o,u){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Pc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Pc(0),this.hiddenUpdates=Pc(null),this.identifierPrefix=a,this.onUncaughtError=l,this.onCaughtError=i,this.onRecoverableError=r,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=u,this.incompleteTransitions=new Map}function Up(e,t,n,a,l,i,r,o,u,c,s,f){return e=new kw(e,t,n,r,u,c,s,f,o),t=1,i===!0&&(t|=24),i=Ct(3,null,null,t),e.current=i,i.stateNode=e,t=xd(),t.refCount++,e.pooledCache=t,t.refCount++,i.memoizedState={element:a,isDehydrated:n,cache:t},Bd(i),e}function Gp(e){return e?(e=Ml,e):Ml}function qp(e,t,n,a,l,i){l=Gp(l),a.context===null?a.context=l:a.pendingContext=l,a=ia(t),a.payload={element:n},i=i===void 0?null:i,i!==null&&(a.callback=i),n=ra(e,a,t),n!==null&&(yt(n,e,t),Ki(n,e,t))}function $m(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function af(e,t){$m(e,t),(e=e.alternate)&&$m(e,t)}function Pp(e){if(e.tag===13||e.tag===31){var t=Qa(e,67108864);t!==null&&yt(t,e,67108864),af(e,67108864)}}function eh(e){if(e.tag===13||e.tag===31){var t=xt();t=md(t);var n=Qa(e,t);n!==null&&yt(n,e,t),af(e,t)}}var yu=!0;function Lw(e,t,n,a){var l=k.T;k.T=null;var i=Z.p;try{Z.p=2,lf(e,t,n,a)}finally{Z.p=i,k.T=l}}function zw(e,t,n,a){var l=k.T;k.T=null;var i=Z.p;try{Z.p=8,lf(e,t,n,a)}finally{Z.p=i,k.T=l}}function lf(e,t,n,a){if(yu){var l=cd(a);if(l===null)gs(e,t,a,pu,n),th(e,a);else if(Uw(l,e,t,n,a))a.stopPropagation();else if(th(e,a),t&4&&-1<Hw.indexOf(e)){for(;l!==null;){var i=Jl(l);if(i!==null)switch(i.tag){case 3:if(i=i.stateNode,i.current.memoizedState.isDehydrated){var r=Ba(i.pendingLanes);if(r!==0){var o=i;for(o.pendingLanes|=2,o.entangledLanes|=2;r;){var u=1<<31-Dt(r);o.entanglements[1]|=u,r&=~u}gn(i),(K&6)===0&&(ru=Tt()+500,Er(0,!1))}}break;case 31:case 13:o=Qa(i,2),o!==null&&yt(o,i,2),_u(),af(i,2)}if(i=cd(a),i===null&&gs(e,t,a,pu,n),i===l)break;l=i}l!==null&&a.stopPropagation()}else gs(e,t,a,null,n)}}function cd(e){return e=vd(e),rf(e)}var pu=null;function rf(e){if(pu=null,e=Cl(e),e!==null){var t=pr(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=oh(t),e!==null)return e;e=null}else if(n===31){if(e=uh(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return pu=e,null}function Fp(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Rb()){case fh:return 2;case gh:return 8;case Xo:case Tb:return 32;case mh:return 268435456;default:return 32}default:return 32}}var sd=!1,ca=null,sa=null,da=null,hr=new Map,yr=new Map,In=[],Hw="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function th(e,t){switch(e){case"focusin":case"focusout":ca=null;break;case"dragenter":case"dragleave":sa=null;break;case"mouseover":case"mouseout":da=null;break;case"pointerover":case"pointerout":hr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":yr.delete(t.pointerId)}}function Hi(e,t,n,a,l,i){return e===null||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:i,targetContainers:[l]},t!==null&&(t=Jl(t),t!==null&&Pp(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,l!==null&&t.indexOf(l)===-1&&t.push(l),e)}function Uw(e,t,n,a,l){switch(t){case"focusin":return ca=Hi(ca,e,t,n,a,l),!0;case"dragenter":return sa=Hi(sa,e,t,n,a,l),!0;case"mouseover":return da=Hi(da,e,t,n,a,l),!0;case"pointerover":var i=l.pointerId;return hr.set(i,Hi(hr.get(i)||null,e,t,n,a,l)),!0;case"gotpointercapture":return i=l.pointerId,yr.set(i,Hi(yr.get(i)||null,e,t,n,a,l)),!0}return!1}function jp(e){var t=Cl(e.target);if(t!==null){var n=pr(t);if(n!==null){if(t=n.tag,t===13){if(t=oh(n),t!==null){e.blockedOn=t,Ug(e.priority,function(){eh(n)});return}}else if(t===31){if(t=uh(n),t!==null){e.blockedOn=t,Ug(e.priority,function(){eh(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Fo(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=cd(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);xs=a,n.target.dispatchEvent(a),xs=null}else return t=Jl(n),t!==null&&Pp(t),e.blockedOn=n,!1;t.shift()}return!0}function nh(e,t,n){Fo(e)&&n.delete(t)}function Gw(){sd=!1,ca!==null&&Fo(ca)&&(ca=null),sa!==null&&Fo(sa)&&(sa=null),da!==null&&Fo(da)&&(da=null),hr.forEach(nh),yr.forEach(nh)}function Eo(e,t){e.blockedOn===t&&(e.blockedOn=null,sd||(sd=!0,Ue.unstable_scheduleCallback(Ue.unstable_NormalPriority,Gw)))}var Do=null;function ah(e){Do!==e&&(Do=e,Ue.unstable_scheduleCallback(Ue.unstable_NormalPriority,function(){Do===e&&(Do=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],l=e[t+2];if(typeof a!="function"){if(rf(a||n)===null)continue;break}var i=Jl(n);i!==null&&(e.splice(t,3),t-=3,Ys(i,{pending:!0,data:l,method:n.method,action:a},a,l))}}))}function Wl(e){function t(u){return Eo(u,e)}ca!==null&&Eo(ca,e),sa!==null&&Eo(sa,e),da!==null&&Eo(da,e),hr.forEach(t),yr.forEach(t);for(var n=0;n<In.length;n++){var a=In[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<In.length&&(n=In[0],n.blockedOn===null);)jp(n),n.blockedOn===null&&In.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var l=n[a],i=n[a+1],r=l[pt]||null;if(typeof i=="function")r||ah(n);else if(r){var o=null;if(i&&i.hasAttribute("formAction")){if(l=i,r=i[pt]||null)o=r.formAction;else if(rf(l)!==null)continue}else o=r.action;typeof o=="function"?n[a+1]=o:(n.splice(a,3),a-=3),ah(n)}}}function Yp(){function e(i){i.canIntercept&&i.info==="react-transition"&&i.intercept({handler:function(){return new Promise(function(r){return l=r})},focusReset:"manual",scroll:"manual"})}function t(){l!==null&&(l(),l=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var i=navigation.currentEntry;i&&i.url!=null&&navigation.navigate(i.url,{state:i.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,l=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),l!==null&&(l(),l=null)}}}function of(e){this._internalRoot=e}Ou.prototype.render=of.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(w(409));var n=t.current,a=xt();qp(n,a,e,t,null,null)};Ou.prototype.unmount=of.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;qp(e.current,2,null,e,null,null),_u(),t[Il]=null}};function Ou(e){this._internalRoot=e}Ou.prototype.unstable_scheduleHydration=function(e){if(e){var t=bh();e={blockedOn:null,target:e,priority:t};for(var n=0;n<In.length&&t!==0&&t<In[n].priority;n++);In.splice(n,0,e),n===0&&jp(e)}};var lh=ih.version;if(lh!=="19.2.8")throw Error(w(527,lh,"19.2.8"));Z.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(w(188)):(e=Object.keys(e).join(","),Error(w(268,e)));return e=pb(t),e=e!==null?ch(e):null,e=e===null?null:e.stateNode,e};var qw={bundleType:0,version:"19.2.8",rendererPackageName:"react-dom",currentDispatcherRef:k,reconcilerVersion:"19.2.8"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Ui=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Ui.isDisabled&&Ui.supportsFiber))try{vr=Ui.inject(qw),Et=Ui}catch{}var Ui;ku.createRoot=function(e,t){if(!rh(e))throw Error(w(299));var n=!1,a="",l=Ly,i=zy,r=Hy;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(l=t.onUncaughtError),t.onCaughtError!==void 0&&(i=t.onCaughtError),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=Up(e,1,!1,null,null,n,a,null,l,i,r,Yp),e[Il]=t.current,ef(e),new of(t)};ku.hydrateRoot=function(e,t,n){if(!rh(e))throw Error(w(299));var a=!1,l="",i=Ly,r=zy,o=Hy,u=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(i=n.onUncaughtError),n.onCaughtError!==void 0&&(r=n.onCaughtError),n.onRecoverableError!==void 0&&(o=n.onRecoverableError),n.formState!==void 0&&(u=n.formState)),t=Up(e,1,!0,t,n??null,a,l,u,i,r,o,Yp),t.context=Gp(null),n=t.current,a=xt(),a=md(a),l=ia(a),l.callback=null,ra(n,l,a),n=a,t.current.lanes=n,Ar(t,n),gn(t),e[Il]=t.current,ef(e),new Ou(t)};ku.version="19.2.8"});var Kp=rn((GS,Qp)=>{"use strict";function Xp(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Xp)}catch(e){console.error(e)}}Xp(),Qp.exports=Vp()});var Wp=rn(Lu=>{"use strict";var Pw=Symbol.for("react.transitional.element"),Fw=Symbol.for("react.fragment");function Zp(e,t,n){var a=null;if(n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),"key"in t){n={};for(var l in t)l!=="key"&&(n[l]=t[l])}else n=t;return t=n.ref,{$$typeof:Pw,type:e,key:a,ref:t!==void 0?t:null,props:n}}Lu.Fragment=Fw;Lu.jsx=Zp;Lu.jsxs=Zp});var O=rn((PS,Ip)=>{"use strict";Ip.exports=Wp()});var kt=B(dt(),1),l1=B(Kp(),1);var Yv=B(dt(),1);var Gn=B(O(),1);function jw(e){return{under50:"Under $50",over50:"Over $50",over30:"Over $30",over500:"Over $500","50_100":"$50 - $100","100_200":"$100 - $200","200_500":"$200 - $500"}[e]||e}function Jp({activeDealTag:e,activeFreeformTags:t,airedaleTags:n,freeformTags:a,discountAmount:l,onBrandSelect:i,onBrandToggle:r,onDiscountAmountChange:o,onPriceRangeChange:u,onTagClear:c,onFreeformTagClear:s,onFreeformTagToggle:f,priceRange:d,selectedBrands:m}){let v=m.map(b=>({type:"brand",value:b,label:b}));if(e){let b=n.find(h=>h.startsWith(e+":::")||h===e);v.push({type:"category",value:e,label:b?b.split(":::")[1]||b.split(":::")[0]:e})}if(t.forEach(b=>{let h=a.find(g=>g.handle===b);v.push({type:"freeform-tag",value:b,label:h?.label||b})}),d&&d!=="all"&&v.push({type:"price",value:d,label:jw(d)}),l&&l!=="0"&&l!=="all"&&v.push({type:"discount",value:l,label:`Min ${l}% off`}),v.length===0)return null;let A=b=>{b.type==="brand"&&r?.(b.value),b.type==="category"&&c(),b.type==="freeform-tag"&&f(b.value),b.type==="discount"&&o?.("0"),b.type==="price"&&u?.("all")};return(0,Gn.jsxs)("div",{className:"tg-df-active-badges-row",style:{display:"flex",flexWrap:"wrap",gap:"4px",alignItems:"center",marginTop:"10px",marginBottom:"16px"},children:[v.map(b=>(0,Gn.jsxs)("span",{className:"tg-df-active-badge",children:[b.label,(0,Gn.jsx)("button",{type:"button",className:"tg-df-badge-remove","aria-label":`Remove ${b.label}`,onClick:()=>A(b),children:(0,Gn.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Gn.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,Gn.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},b.type+"-"+b.value)),v.length>1&&(0,Gn.jsx)("button",{type:"button",className:"tg-df-badge-clear-all",onClick:()=>{i?.([]),c(),s(),o?.("0"),u?.("all")},children:"Clear all"})]})}function $p(e){if(!e)return null;let t=e.documentname||e.title||"";!t&&e.documentnametext&&(t=Array.isArray(e.documentnametext)?e.documentnametext[0]:e.documentnametext),!t&&e.articlename&&(t=Array.isArray(e.articlename)?e.articlename[0]:e.articlename),!t&&e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&(t=e.articlesocialtitle[0]);let n=e.strapline||e.articlestrapline||e.subtitle||e.dek||"";!n&&e.image_thumbnail&&e.image_thumbnail.dek&&(n=e.image_thumbnail.dek),Array.isArray(n)&&(n=n[0]||"");let a="";if(e.articlepage)try{let l=e.articlepage;if(typeof l=="string")try{l=JSON.parse(l)}catch{}if(Array.isArray(l)&&l.length>0){let i=l[0];if(typeof i=="string")try{i=JSON.parse(i)}catch{}if(Array.isArray(i)){let r=[];for(let o of i){if(o.type==="featured-product")break;if(o.type==="text"&&o.data)Array.isArray(o.data.paragraphs)?o.data.paragraphs.forEach(u=>{u&&r.push(u.startsWith("<")?u:`<p>${u}<\/p>`)}):typeof o.data.text=="string"&&o.data.text&&r.push(o.data.text.startsWith("<")?o.data.text:`<p>${o.data.text}<\/p>`);else if(o.type==="section"&&o.data){let u=o.data.text||o.data.heading||o.data.title||"";u&&r.push(`<div class="tg-df-article-section-banner"><span>${u}<\/span><\/div>`)}}r.length>0&&(a=r.join(""))}}}catch(l){console.error("Error parsing articlepage",l)}return!a&&e.content?a=typeof e.content=="string"?e.content:"":!a&&e.intro?a=typeof e.intro=="string"?e.intro:"":!a&&e.paragraphs&&(a=(Array.isArray(e.paragraphs)?e.paragraphs:[e.paragraphs]).map(i=>`<p>${i}<\/p>`).join("")),{headline:t,strapline:n,contentHtml:a}}var li=B(O(),1);function e0({articles:e,selectedArticleId:t}){if(!t)return null;let n=e.find(l=>l.id===t);if(!n)return null;let a=$p(n);return!a||!a.headline&&!a.strapline&&!a.contentHtml?null:(0,li.jsxs)("div",{className:"tg-df-article-intro-container",id:"tg-df-article-intro",style:{margin:"0 auto 32px",width:"100%",maxWidth:"800px",textAlign:"left",padding:"0 16px"},children:[a.headline&&(0,li.jsx)("h2",{className:"tg-df-article-headline",id:"tg-df-article-headline",style:{fontSize:"1.75rem",fontWeight:800,color:"#0f172a",marginBottom:"1rem",lineHeight:1.25},children:a.headline}),a.strapline&&(0,li.jsx)("p",{className:"tg-df-article-strapline",id:"tg-df-article-strapline",style:{fontSize:"1.125rem",fontWeight:600,color:"#334155",marginBottom:"1.25rem",lineHeight:1.4},children:a.strapline}),a.contentHtml&&(0,li.jsx)("div",{className:"tg-df-article-content",id:"tg-df-article-content",dangerouslySetInnerHTML:{__html:a.contentHtml}})]})}var qn=B(O(),1);function Yw({articles:e,authorHandle:t,authorName:n}){let a=n||e.length>0&&(e[0].articleauthortext?.[0]||e[0].articleauthor?.[0])||"Author";(t==="all-authors"||n==="all-authors"||n==="All authors")&&(a="All authors");let l=a.trim().split(" ")[0]||"Author";return a==="All authors"&&(l="All authors"),`Shop all ${l==="All authors"?"authors'":l.endsWith("'s")||l.endsWith("\u2019s")?l:`${l}'s`} collections`}function Vw(e){let t=[];return e.documentnametext&&t.push(e.documentnametext),e.documentname&&t.push(e.documentname),e.articlename&&t.push(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&t.push(...e.articlesocialtitle),t.length>0?t.reduce((n,a)=>a&&a.length<n.length?a:n,t[0]):"Article"}function t0({articles:e,authorHandle:t,authorName:n,onChange:a,selectedArticleId:l,shortenedHeadlines:i}){return(0,qn.jsx)("div",{className:"tg-df-top-bar",id:"tg-df-top-bar",style:{position:"relative",zIndex:100,margin:"0 auto 20px",width:"100%",display:"flex",justifyContent:"center"},children:(0,qn.jsxs)("div",{className:"tg-df-sort-wrapper",style:{width:"auto",maxWidth:"320px",display:"inline-flex",position:"relative"},children:[(0,qn.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",style:{position:"absolute",left:"14px",top:"50%",transform:"translateY(-50%)",width:"14px",height:"14px",color:"var(--tg-df-text-muted)",pointerEvents:"none",zIndex:2},children:(0,qn.jsx)("path",{d:"M12 2l-10 4.5 10 4.5 10-4.5-10-4.5zm0 6.5l-8-3.6 8-3.6 8 3.6-8 3.6zm-10 6l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5zm0 5l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5z"})}),(0,qn.jsxs)("select",{className:"tg-df-filter-select tg-df-article-select",style:{width:"100%",maxWidth:"320px",padding:"10px 36px 10px 38px",fontSize:"14px",fontWeight:500,borderRadius:"100px",border:"1px solid var(--tg-df-border)",color:"var(--tg-df-text)",backgroundColor:"var(--tg-df-bg-secondary)",appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 14px center",textAlign:"left",textAlignLast:"left",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",cursor:"pointer"},value:l||"",onChange:r=>a(r.target.value),children:[(0,qn.jsx)("option",{value:"",style:{textAlign:"left"},children:Yw({articles:e,authorHandle:t,authorName:n})}),e.map(r=>{let o=i?.[r.id]||Vw(r);return o&&o.length>38&&(o=o.substring(0,36)+"\u2026"),(0,qn.jsx)("option",{value:r.id,style:{textAlign:"left"},children:o},r.id)})]})]})})}var h0=B(dt(),1);function n0(e,t=new Date){if(!e)return"";let n=new Date(e),a=Math.floor((t.getTime()-n.getTime())/1e3);if(a<60)return"Just now";let l=Math.floor(a/60);if(l<60)return`${l} min${l>1?"s":""} ago`;let i=Math.floor(l/60);if(i<24)return`${i} hr${i>1?"s":""} ago`;let r=Math.floor(i/24);if(r<30)return`${r} day${r>1?"s":""} ago`;let o=Math.floor(r/30);if(o<12)return`${o} mo${o>1?"s":""} ago`;let u=Math.floor(r/365);return`${u} yr${u>1?"s":""} ago`}function Xw(e){return e.replace(/<\/p\s*>/gi," ").replace(/<p[^>]*>/gi," ").replace(/<br\s*\/?>/gi," ").replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}function Mr(e,t,n){let a="";return n==="short"?a=e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"":a=e.articleauthorlongbio&&e.articleauthorlongbio[t]&&e.articleauthorlongbio[t]!=="null"?e.articleauthorlongbio[t]:e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"",a?Xw(a):""}function a0(e,t){return e.articleauthorrole&&e.articleauthorrole[t]&&e.articleauthorrole[t]!=="null"?e.articleauthorrole[t]:""}function l0(e,t){return e.articleauthormedia&&e.articleauthormedia[t]?e.articleauthormedia[t]:""}function ii(e){if(typeof e!="string"||!e.trim())return"";try{let t=new URL(e);if(t.hostname.toLowerCase()!=="cdn.mos.cms.futurecdn.net")return e;let n=/\.(?:jpe?g|png|webp)$/i;return!n.test(t.pathname)||/-\d+-\d+\.(?:jpe?g|png|webp)$/i.test(t.pathname)?e:(t.pathname=t.pathname.replace(n,"-480-80$&"),t.toString())}catch{return e}}function zu(e,t=0){if(!e||!e.articleauthorsocialnetworks)return[];let n=e.articleauthorsocialnetworks[t];if(n||(n=e.articleauthorsocialnetworks[0]),!n)return[];let a=null;if(typeof n=="string")try{a=JSON.parse(n)}catch{try{a=JSON.parse(n.replace(/\\"/g,'"'))}catch{}}else typeof n=="object"&&n!==null&&(a=n);if(!a||typeof a!="object")return[];let l=[];for(let[i,r]of Object.entries(a)){if(!r)continue;let o="",u="";if(typeof r=="string"?o=r:typeof r=="object"&&r!==null&&(o=r.url||r.address||r.link||"",u=r.address||""),!o&&!u)continue;let c=i.toLowerCase().trim(),s=o||u;c==="email"?s.startsWith("mailto:")||(s=s.includes("@")?`mailto:${s}`:`mailto:${s}`):!s.startsWith("http://")&&!s.startsWith("https://")&&!s.startsWith("//")&&(s=`https://${s}`);let f=c.charAt(0).toUpperCase()+c.slice(1);c==="linkedin"?f="LinkedIn":c==="youtube"?f="YouTube":c==="tiktok"?f="TikTok":c==="twitch"?f="Twitch":c==="steam"?f="Steam":c==="github"?f="GitHub":c==="rss"?f="RSS":(c==="x"||c==="twitter")&&(f="X (Twitter)"),l.push({key:c,href:s,label:f})}return l}function ne(e){if(!e)return"";let t=String(e);for(let n=0;n<3;n+=1){let a=t.replace(/&/gi,"&").replace(/£/g,"\xA3").replace(/£/gi,"\xA3").replace(/$/g,"$").replace(/&dollar;/gi,"$").replace(/€/g,"\u20AC").replace(/€/gi,"\u20AC").replace(/&#(\d+);/g,(l,i)=>String.fromCharCode(Number(i))).replace(/&#x([0-9a-f]+);/gi,(l,i)=>String.fromCharCode(parseInt(i,16)));if(a===t)break;t=a}return t}var Te=B(O(),1);function uf({authorUrl:e,deal:t}){if(!t.authorName)return null;let n=ne(String(t.authorName)),a=t.authorRole&&!["null","nul","undefined"].includes(String(t.authorRole).toLowerCase())?` \u2022 ${ne(String(t.authorRole))}`:"";return(0,Te.jsx)("div",{className:"tg-df-author-line-desktop",style:{padding:"0 0 12px 0"},children:(0,Te.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.authorImage&&(0,Te.jsx)("img",{src:ii(t.authorImage),alt:n,className:"tg-df-author-img",width:"36",height:"36",style:{borderRadius:"50%",objectFit:"cover",flexShrink:0,aspectRatio:"1 / 1",minWidth:"36px",minHeight:"36px"}}),(0,Te.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,Te.jsx)("div",{style:{fontSize:"10px",color:"var(--tg-df-text-muted)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"2px",fontWeight:600},children:t.isReviewProduct?(0,Te.jsx)(Te.Fragment,{children:"Product tested by:"}):t.isBuyingGuideProduct?(0,Te.jsx)(Te.Fragment,{children:"Expert review by:"}):t.isFeatured?(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)("span",{style:{color:"#FF6600"},children:"Top product"})," ","recommended by:"]}):(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)("span",{style:{color:"#FF6600"},children:t.merchant})," ","deal recommended by:"]})}),(0,Te.jsxs)("div",{style:{fontSize:"11px",color:"var(--tg-df-text)",lineHeight:1.2},children:[(0,Te.jsx)("strong",{children:(0,Te.jsx)("a",{href:e,target:"_blank",rel:"noopener",style:{textDecoration:"none",color:"inherit",borderBottom:"1px dotted var(--tg-df-text-muted)"},children:n})}),a,t.modifiedDate?(0,Te.jsxs)("span",{style:{color:"var(--tg-df-text-muted)"},children:[" ","\u2022 ",n0(t.modifiedDate)]}):""]})]})]})})}var J=B(O(),1);function i0({authorUrl:e,deal:t,msrpFormatted:n,sourceArticleUrl:a}){let l=ne(String(t.merchant||"")),i=ne(String(t.currency||""));if(t.isBuyingGuideProduct||t.isReviewProduct){let r=!!t.hasCommerceOffer,o=r&&!t.isCheckPrice,u=!!t.hawkPricePending,c=!!t.isReviewProduct&&!u&&!r;return(0,J.jsxs)("div",{className:"tg-df-card-footer",children:[u?(0,J.jsx)("div",{className:"tg-df-card-price-group","aria-live":"polite",children:(0,J.jsx)("span",{className:"tg-df-card-price",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"Checking live price\u2026"})}):o?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,J.jsx)("span",{className:"tg-df-card-merchant-pill",title:l,children:l})}),(0,J.jsxs)("div",{className:"tg-df-card-price-group",children:[(0,J.jsxs)("span",{className:"tg-df-card-price",children:[i,(0,J.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,J.jsx)("span",{className:"tg-df-card-msrp",children:n})]})]}):c?(0,J.jsx)("div",{className:"tg-df-card-price-group",children:(0,J.jsx)("span",{className:"tg-df-card-price tg-df-card-price--unavailable",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"No retail listing found"})}):null,(0,J.jsx)(uf,{authorUrl:e,deal:t}),(0,J.jsx)("a",{href:r?t.url:a,"data-fcaw-affiliate-link":r?"":void 0,target:"_blank",rel:r?"sponsored nofollow noopener":"noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},children:r?o?"VIEW DEAL":"CHECK PRICE":"READ REVIEW"})]})}return(0,J.jsxs)("div",{className:"tg-df-card-footer",children:[!(t.authorName&&!t.isFeatured)&&(0,J.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,J.jsx)("span",{className:"tg-df-card-merchant-pill",title:l,children:l})}),(0,J.jsx)("div",{className:"tg-df-card-price-group",children:t.isCheckPrice?(0,J.jsx)("span",{className:"tg-df-card-price",style:{fontSize:"15px",fontWeight:500,fontStyle:"italic"},children:"See price at retailer"}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)("span",{className:"tg-df-card-price",children:[i,(0,J.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,J.jsx)("span",{className:"tg-df-card-msrp",children:n})]})}),(0,J.jsx)(uf,{authorUrl:e,deal:t}),(0,J.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":"",target:"_blank",rel:"sponsored nofollow noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},"data-model-id":t.modelId||void 0,"data-product-key":t.productKey||void 0,"data-merchant-id":t.merchantId||void 0,children:t.isCheckPrice?"CHECK PRICE":t.isFeatured?"SHOP NOW":"VIEW DEAL"})]})}var We=B(O(),1);function r0({couponStatus:e,deal:t,onOpenVouchers:n}){let a=!!t.hasCommerceOffer;return(0,We.jsxs)("div",{className:"tg-df-card-image-box",children:[t.buyingGuideBadge?(0,We.jsx)("span",{className:"tg-df-card-discount-badge tg-df-buying-guide-badge",children:t.buyingGuideBadge}):t.savingLabel&&!t.isCheckPrice?(0,We.jsx)("span",{className:"tg-df-card-discount-badge",children:ne(t.savingLabel)}):null,(0,We.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":a?"":void 0,className:a?"hawk-affiliate-link-deal-widget":void 0,target:"_blank",rel:a?"sponsored nofollow noopener":"noopener",style:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"100%"},children:(0,We.jsx)("img",{src:t.image||void 0,alt:ne(String(t.title||"")),className:"tg-df-card-image",loading:"lazy",onError:l=>{t.fallbackImage&&!l.currentTarget.dataset.fb?(l.currentTarget.dataset.fb="1",l.currentTarget.src=t.fallbackImage):l.currentTarget.style.opacity="0"}})}),(0,We.jsxs)("div",{className:"tg-df-card-badges",children:[t.isPrime&&(0,We.jsxs)("span",{className:"tg-df-tag tg-df-tag-prime",children:[(0,We.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",children:(0,We.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})})," ","Prime"]}),!t.merchant?.toLowerCase().includes("amazon")&&(e==="loading"||e==="has")&&(0,We.jsx)("div",{className:"tg-df-coupon-wrapper",style:{display:"inline-flex",alignItems:"center"},children:e==="loading"?(0,We.jsx)("div",{className:"tg-df-coupon-spinner"}):(0,We.jsxs)("button",{type:"button",className:"tg-df-tag tg-df-tag-coupons",onClick:l=>{l.preventDefault(),n(t.merchant)},children:[(0,We.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,We.jsx)("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),(0,We.jsx)("line",{x1:"7",y1:"7",x2:"7.01",y2:"7"})]})," ","Coupons"]})})]})]})}var ot=B(O(),1);function o0({label:e="Tom's Guide:",starRating:t,color:n="#1f69ff"}){if(!t||t<=0)return null;let a=Math.floor(t),l=t-a>=.5?1:0,i=Math.max(0,5-a-l),r=[];for(let o=0;o<a;o++)r.push((0,ot.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:n,stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ot.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`f${o}`));l&&r.push((0,ot.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"url(#halfGrad)",stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,ot.jsx)("defs",{children:(0,ot.jsxs)("linearGradient",{id:"halfGrad",x1:"0",x2:"1",y1:"0",y2:"0",children:[(0,ot.jsx)("stop",{offset:"50%",stopColor:n}),(0,ot.jsx)("stop",{offset:"50%",stopColor:"transparent"})]})}),(0,ot.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})]},"h"));for(let o=0;o<i;o++)r.push((0,ot.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:n,opacity:"0.35",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ot.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`e${o}`));return(0,ot.jsxs)("div",{className:"tg-df-card-stars",style:{display:"flex",alignItems:"center",marginBottom:"8px",fontSize:"13px",fontWeight:600,color:"var(--tg-df-text-muted)"},children:[e&&(0,ot.jsx)("span",{style:{marginRight:"6px"},children:e}),(0,ot.jsx)("div",{style:{display:"flex",gap:"2px"},children:r})]})}var Bt=B(O(),1);function u0({heading:e,items:t}){return t.length===0?null:(0,Bt.jsxs)("div",{style:{marginBottom:"10px"},children:[(0,Bt.jsx)("strong",{style:{display:"block",fontSize:"12px",marginBottom:"3px"},children:e}),(0,Bt.jsx)("ul",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:0,paddingLeft:"18px"},children:t.map(n=>{let a=ne(String(n));return(0,Bt.jsx)("li",{children:a},n)})})]})}function c0({cons:e=[],expanded:t,fullReviewUrl:n,onToggle:a,pros:l=[],subtitle:i="",truncateSubtitle:r=!1}){let o=l.length>0||e.length>0,u=ne(i);return!u&&!o?null:(0,Bt.jsxs)("div",{style:{marginBottom:"12px"},children:[u&&(0,Bt.jsx)("p",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:"0 0 8px",display:!t&&r?"-webkit-box":"block",WebkitLineClamp:!t&&r?3:void 0,WebkitBoxOrient:!t&&r?"vertical":void 0,overflow:!t&&r?"hidden":void 0},children:u}),t&&o&&(0,Bt.jsxs)("div",{children:[(0,Bt.jsx)(u0,{heading:"Pros",items:l}),(0,Bt.jsx)(u0,{heading:"Cons",items:e})]}),t&&n&&(0,Bt.jsx)("a",{href:n,target:"_blank",rel:"noopener",className:"tg-df-review-full-link",style:{color:"var(--tg-df-blue)",display:"inline-block",fontSize:"12px",fontWeight:700,marginBottom:"8px",textDecoration:"underline"},children:"Read our full review"}),(o||r)&&(0,Bt.jsx)("button",{type:"button",onClick:c=>{c.preventDefault(),c.stopPropagation(),a()},style:{appearance:"none",background:"transparent",border:"none",color:"#000000",cursor:"pointer",display:"block",fontFamily:"inherit",fontSize:"11px",fontWeight:700,padding:0,textTransform:"uppercase"},children:t?"LESS":"READ MORE"})]})}var ri=B(dt(),1);var _r=B(O(),1);function s0({text:e,expanded:t,onToggle:n}){let[a,l]=(0,ri.useState)(!1),i=(0,ri.useRef)(null),r=ne(e);return(0,ri.useEffect)(()=>{i.current&&l(i.current.scrollHeight>i.current.clientHeight||i.current.scrollHeight>60)},[r]),r?(0,_r.jsxs)("div",{style:{marginBottom:"12px",position:"relative"},children:[(0,_r.jsx)("p",{ref:i,style:{fontSize:"13px",color:"var(--tg-df-text-muted)",marginBottom:"0",lineHeight:"1.4",display:t?"inline":"-webkit-box",WebkitLineClamp:t?"unset":3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:r}),a&&(0,_r.jsx)("button",{type:"button",onClick:o=>{o.preventDefault(),o.stopPropagation(),n()},style:{display:"block",appearance:"none",border:"none",color:"#000000",fontSize:"11px",fontWeight:700,textTransform:"uppercase",cursor:"pointer",fontFamily:"inherit",position:t?"static":"absolute",bottom:"2px",right:0,background:t?"transparent":"linear-gradient(to right, transparent, #fff 20%, #fff)",padding:t?"0":"0 0 0 16px"},children:t?"LESS":"READ MORE"})]}):null}var d0={pcgamer:"#DC191B",space:"#2E4A7F",tomsguide:"#1F69FF",techradar:"#E40784",golfmonthly:"#FFFFFF",androidcentral:"#1CCC3E",cinemablend:"#FFC033",creativebloq:"#DC361A",cyclingnews:"#371B51",cyclingweekly:"#AE1305",decanter:"#1B1B1B",digitalcameraworld:"#CAEBF2",fitandwell:"#BED100",fourfourtwo:"#AE1006",gamesradar:"#DC361A",guitarplayer:"#FFFFFF",guitarworld:"#DC1F26",homesandgardens:"#185A7D",idealhome:"#CAEBF2",imore:"#FFD600",livescience:"#023953",livingetc:"#FFFFFF",loudersound:"#DC0F17",marieclaireus:"#FFFFFF",marieclaireuk:"#FFFFFF",musicradar:"#006EA9",shortlist:"#2853E0",t3:"#DF0A14",theweek:"#DF0A14",theweekjuniorus:"#10A0B0",tomshardware:"#D8373B",wallpaper:"#FFFFFF",whathifi:"#E02928",whowhatwear:"#FFFFFF",windowscentral:"#CE0E5F",womanandhome:"#2F746E"},Br={tomsguide:"https://proof.vanilla.tools/media/images/brandLogos/tomsguide.png",techradar:"https://proof.vanilla.tools/media/images/brandLogos/techradar.png",tomshardware:"https://proof.vanilla.tools/media/images/brandLogos/tomshardware.png",pcgamer:"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png",gamesradar:"https://proof.vanilla.tools/media/images/brandLogos/gamesradar.png",creativebloq:"https://proof.vanilla.tools/media/images/brandLogos/creativebloq.png",space:"https://proof.vanilla.tools/media/images/brandLogos/space.png",livescience:"https://proof.vanilla.tools/media/images/brandLogos/livescience.png",cinemablend:"https://proof.vanilla.tools/media/images/brandLogos/cinemablend.png",marieclaireus:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireus.png",marieclaireuk:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireuk.png",homesandgardens:"https://proof.vanilla.tools/media/images/brandLogos/homesandgardens.png",whowhatwear:"https://proof.vanilla.tools/media/images/brandLogos/whowhatwear.png",idealhome:"https://proof.vanilla.tools/media/images/brandLogos/idealhome.png",womanandhome:"https://proof.vanilla.tools/media/images/brandLogos/womanandhome.png",livingetc:"https://proof.vanilla.tools/media/images/brandLogos/livingetc.png",t3:"https://proof.vanilla.tools/media/images/brandLogos/t3.png",whathifi:"https://proof.vanilla.tools/media/images/brandLogos/whathifi.png",digitalcameraworld:"https://proof.vanilla.tools/media/images/brandLogos/digitalcameraworld.png",fitandwell:"https://proof.vanilla.tools/media/images/brandLogos/fitandwell.png",golfmonthly:"https://proof.vanilla.tools/media/images/brandLogos/golfmonthly.png",musicradar:"https://proof.vanilla.tools/media/images/brandLogos/musicradar.png",windowscentral:"https://proof.vanilla.tools/media/images/brandLogos/windowscentral.png",cyclingnews:"https://proof.vanilla.tools/media/images/brandLogos/cyclingnews.png",cyclingweekly:"https://proof.vanilla.tools/media/images/brandLogos/cyclingweekly.png",loudersound:"https://proof.vanilla.tools/media/images/brandLogos/loudersound.png",guitarworld:"https://proof.vanilla.tools/media/images/brandLogos/guitarworld.png",guitarplayer:"https://proof.vanilla.tools/media/images/brandLogos/guitarplayer.png",wallpaper:"https://proof.vanilla.tools/media/images/brandLogos/wallpaper.png",fourfourtwo:"https://proof.vanilla.tools/media/images/brandLogos/fourfourtwo.png",shortlist:"https://proof.vanilla.tools/media/images/brandLogos/shortlist.png",advnture:"https://proof.vanilla.tools/media/images/brandLogos/advnture.png",countrylife:"https://proof.vanilla.tools/media/images/brandLogos/countrylife.png",gardeningknowhow:"https://proof.vanilla.tools/media/images/brandLogos/gardeningknowhow.png",gnomesingardens:"https://proof.vanilla.tools/media/images/brandLogos/gnomesingardens.png",kiplinger:"https://proof.vanilla.tools/media/images/brandLogos/kiplinger.png",moneyweek:"https://proof.vanilla.tools/media/images/brandLogos/moneyweek.png",toptenreviews:"https://proof.vanilla.tools/media/images/brandLogos/toptenreviews.png"},Hu={tomsguide:"Tom's Guide",techradar:"TechRadar",tomshardware:"Tom's Hardware",pcgamer:"PC Gamer",gamesradar:"GamesRadar+",creativebloq:"Creative Bloq",space:"Space",livescience:"Live Science",cinemablend:"CinemaBlend",marieclaireus:"Marie Claire US",marieclaireuk:"Marie Claire UK",homesandgardens:"Homes & Gardens",whowhatwear:"Who What Wear",idealhome:"Ideal Home",womanandhome:"Woman & Home",livingetc:"Living Etc",t3:"T3",whathifi:"What Hi-Fi?",digitalcameraworld:"Digital Camera World",fitandwell:"Fit & Well",golfmonthly:"Golf Monthly",musicradar:"MusicRadar",androidcentral:"Android Central",imore:"iMore",windowscentral:"Windows Central",cyclingnews:"Cycling News",cyclingweekly:"Cycling Weekly",loudersound:"Louder Sound",guitarworld:"Guitar World",guitarplayer:"Guitar Player",theweek:"The Week",theweekjuniorus:"The Week Junior US",wallpaper:"Wallpaper",decanter:"Decanter",fourfourtwo:"FourFourTwo",shortlist:"ShortList",advnture:"Advnture",countrylife:"Country Life",gardeningknowhow:"Gardening Know How",gnomesingardens:"Gnomes in Gardens",kiplinger:"Kiplinger",moneyweek:"Money Week",toptenreviews:"Top 10 Reviews"},f0={pcgamer:[{key:"steam",href:"https://steamcommunity.com/groups/pcgamer",label:"PC Gamer on Steam"},{key:"x",href:"https://twitter.com/pcgamer",label:"PC Gamer on X"},{key:"facebook",href:"https://www.facebook.com/pcgamermagazine",label:"PC Gamer on Facebook"},{key:"instagram",href:"https://www.instagram.com/pcgamer_mag/?hl=en",label:"PC Gamer on Instagram"},{key:"youtube",href:"https://www.youtube.com/user/pcgamer",label:"PC Gamer on YouTube"},{key:"twitch",href:"https://www.twitch.tv/pcgamer",label:"PC Gamer on Twitch"},{key:"tiktok",href:"https://www.tiktok.com/@pcgamer_mag?lang=en",label:"PC Gamer on TikTok"}],homesandgardens:[{key:"instagram",href:"https://www.instagram.com/homesandgardensofficial",label:"Homes & Gardens on Instagram"},{key:"facebook",href:"https://www.facebook.com/homesandgardens/",label:"Homes & Gardens on Facebook"},{key:"x",href:"https://x.com/homesandgardens",label:"Homes & Gardens on X"},{key:"tiktok",href:"https://www.tiktok.com/@homesandgardensofficial",label:"Homes & Gardens on TikTok"},{key:"pinterest",href:"https://pinterest.com/homesgardensofficial/",label:"Homes & Gardens on Pinterest"}],whowhatwear:[{key:"x",href:"https://twitter.com/WhoWhatWear",label:"Who What Wear on X"},{key:"instagram",href:"https://www.instagram.com/whowhatwear/",label:"Who What Wear on Instagram"},{key:"facebook",href:"https://www.facebook.com/WhoWhatWear/",label:"Who What Wear on Facebook"},{key:"pinterest",href:"https://www.pinterest.co.uk/whowhatwearuk/",label:"Who What Wear on Pinterest"},{key:"tiktok",href:"https://www.tiktok.com/@whowhatwear.uk",label:"Who What Wear on TikTok"}]};var Nt=B(O(),1);function g0(e){return String(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").trim().toLowerCase()}function Qw(e){let t=ne(String(e.brand||"")).trim(),n=ne(String(e.productName||e.title||"")).trim(),a=g0(t),l=g0(n);return a.length>0&&l.startsWith(a)&&!/^[a-z0-9]/.test(l.slice(a.length))||!t?n:`${t} ${n}`.trim()}function m0({couponStatus:e,deal:t,editorMode:n,isDescriptionExpanded:a,isSelected:l,onDescriptionToggle:i,onOpenVouchers:r,onSelectionChange:o,website:u}){let c=ne(String(t.currency||"")),s=t.rawMsrp?c+t.rawMsrp:null,f=Qw(t),d=ne(String(t.title||"")),m=Hu[u||"tomsguide"]||u||"Tom's Guide",v=(u||"tomsguide").includes(".")?(u||"").startsWith("http")?u:`https://${u}`:`https://www.${u||"tomsguide"}.com`,A=(t.documentUrl||"").replace(/^\/+/,""),b=A.startsWith("http://")||A.startsWith("https://")?A:`${v}/${A}`,h=String(t.sourceArticleUrl||t.documentUrl||t.url||"").replace(/^\/+/,""),g=h.startsWith("http://")||h.startsWith("https://")?h:`${v}/${h}`,y=!!t.hasCommerceOffer;return(0,Nt.jsxs)("div",{className:"tg-df-card","data-brand":t.modelBrand||t.brand||void 0,"data-currency":t.isoCurrencyCode||c||void 0,"data-deal-id":t.externalProductId||t.id||void 0,"data-merchant":t.merchant||void 0,"data-merchant-id":t.merchantId||void 0,"data-model-id":t.modelId||void 0,"data-previous-price":t.rawMsrp||void 0,"data-price":t.rawPrice||void 0,"data-product-key":t.productKey||void 0,"data-product-name":t.productName||t.title||void 0,"data-review-product":t.isReviewProduct?"true":void 0,"data-source-article-url":t.isReviewProduct?g:void 0,children:[n&&(0,Nt.jsx)("input",{type:"checkbox",className:"tg-df-deal-checkbox",checked:l,onChange:p=>o(p.target.checked)}),(0,Nt.jsx)(r0,{couponStatus:e,deal:t,onOpenVouchers:r}),(0,Nt.jsxs)("div",{className:"tg-df-card-body",children:[(0,Nt.jsx)("h3",{className:"tg-df-card-title",title:d,children:(0,Nt.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":y?"":void 0,className:y?"hawk-affiliate-link-container":void 0,target:"_blank",rel:y?"sponsored nofollow noopener":"noopener",style:{textDecoration:"none",color:"inherit"},children:(0,Nt.jsx)("strong",{children:f})})}),(0,Nt.jsx)(o0,{label:t.isBuyingGuideProduct?"":`${m} rating:`,starRating:t.starRating,color:t.isReviewProduct?"var(--tg-df-blue)":void 0}),t.isBuyingGuideProduct||t.isReviewProduct?(0,Nt.jsx)(c0,{cons:t.cons,expanded:a,fullReviewUrl:t.isReviewProduct&&h?g:void 0,onToggle:i,pros:t.pros,subtitle:t.isReviewProduct?t.description:t.subtitle,truncateSubtitle:t.isReviewProduct}):t.description?(0,Nt.jsx)(s0,{text:t.description,expanded:a,onToggle:i}):null,(0,Nt.jsx)(i0,{authorUrl:b,deal:t,msrpFormatted:s,sourceArticleUrl:g})]})]})}var ue=B(O(),1);function Kw(){return(0,ue.jsx)(ue.Fragment,{children:Array.from({length:6}).map((e,t)=>(0,ue.jsxs)("div",{className:"tg-df-card",children:[(0,ue.jsx)("div",{className:"tg-df-card-image-box tg-df-skeleton"}),(0,ue.jsxs)("div",{className:"tg-df-card-body",children:[(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short",style:{marginBottom:"24px"}}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title",style:{width:"80%"}}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short"}),(0,ue.jsx)("div",{className:"tg-df-card-cta tg-df-skeleton",style:{width:"100%",height:"40px",marginTop:"auto",border:"none"}})]})]},t))})}function Zw(e,t){return{"@context":"https://schema.org","@type":"ItemList",itemListElement:e.slice(0,t).map((n,a)=>{let l="USD";return n.currency==="\xA3"?l="GBP":n.currency==="\u20AC"?l="EUR":n.currency==="A$"?l="AUD":n.currency==="CA$"&&(l="CAD"),{"@type":"ListItem",position:a+1,item:{"@type":"Product",name:n.title,image:n.image||"",description:n.description||"",brand:{"@type":"Brand",name:n.brand||""},offers:{"@type":"Offer",priceCurrency:l,price:n.rawPrice||0,url:n.url||"",seller:{"@type":"Organization",name:n.merchant||""}}}}}).filter(n=>n.item.name)}}function y0({couponMap:e,deals:t,displayCount:n,editorMode:a,error:l,expandedDealIds:i,hasMore:r,loading:o,loadingMore:u,loadMoreStartCount:c,onDescriptionToggle:s,onLoadMore:f,onOpenVouchers:d,query:m,selectedDeals:v,setSelectedDeals:A,website:b}){let h=u&&c!=null?c:n,g=!u&&c!=null&&c<h?c:null,y=p=>p.map(C=>(0,ue.jsx)(h0.default.Fragment,{children:(0,ue.jsx)(m0,{couponStatus:e[C.merchant],deal:C,editorMode:a,isDescriptionExpanded:i.has(C.id),isSelected:v.has(C.id),onDescriptionToggle:()=>s(C.id),onOpenVouchers:d,onSelectionChange:R=>{let T=new Map(v);R?T.set(C.id,C):T.delete(C.id),A(T)},website:b})},C.id));return(0,ue.jsx)("div",{className:"tg-df-grid-wrapper",children:(0,ue.jsx)("div",{className:"tg-df-grid article-body tg-df-grid-auto",id:"tg-df-grid",children:o?(0,ue.jsx)(Kw,{}):l?(0,ue.jsx)("div",{className:"tg-df-message",children:"Failed to load deals. Please try again."}):t.length===0?(0,ue.jsx)("div",{className:"tg-df-message",children:!m||m.length<=2||m.toLowerCase()==="everything"?"No deals found for this author.":`No savings squad match your search for "${m}".`}):(0,ue.jsxs)(ue.Fragment,{children:[y(t.slice(0,g??h)),g!=null&&(0,ue.jsx)("div",{"aria-live":"polite",className:"tg-df-load-more-boundary",style:{alignItems:"center",color:"var(--tg-df-text-muted)",display:"flex",fontSize:"13px",fontWeight:600,gridColumn:"1 / -1",justifyContent:"center",marginTop:"16px",minHeight:"40px",overflowAnchor:"none"},children:"More products"}),g!=null&&y(t.slice(g,h)),r&&(0,ue.jsx)("div",{className:"tg-df-load-more-control",style:{width:"100%",display:"flex",justifyContent:"center",marginTop:"16px",gridColumn:"1 / -1",overflowAnchor:"none"},children:(0,ue.jsx)("button",{type:"button",className:"tg-df-tag-outline",style:{padding:"8px 24px",borderRadius:"100px",fontWeight:600,fontSize:"14px",cursor:"pointer"},"aria-busy":u,disabled:u,onClick:p=>{p.preventDefault(),p.stopPropagation(),f()},children:u?"Loading more products\u2026":"Load More"})}),t.length>0&&(0,ue.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(Zw(t,h))}})]})})})}var p0=B(O(),1);var mn=B(dt(),1),tn=B(O(),1);function Uu({onScrollLeft:e,onScrollRight:t,showLeft:n,showRight:a}){return(0,tn.jsxs)(tn.Fragment,{children:[(0,tn.jsx)("button",{"aria-label":"Scroll left",className:"tg-df-scroll-btn left tg-df-desktop-only",onClick:e,style:{display:n?"flex":"none"},type:"button",children:(0,tn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,tn.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,tn.jsx)("button",{"aria-label":"Scroll right",className:"tg-df-scroll-btn right tg-df-desktop-only",onClick:t,style:{display:a?"flex":"none"},type:"button",children:(0,tn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,tn.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})}function Gu(e){let t=(0,mn.useRef)(null),[n,a]=(0,mn.useState)(!1),[l,i]=(0,mn.useState)(!1),r=(0,mn.useCallback)(()=>{let u=t.current;u&&(a(u.scrollLeft>1),i(Math.ceil(u.scrollLeft+u.clientWidth)<u.scrollWidth-1))},[]);(0,mn.useLayoutEffect)(()=>{let u=t.current;if(!u)return;r();let c=requestAnimationFrame(r),s=typeof ResizeObserver>"u"?null:new ResizeObserver(r);return s?.observe(u),()=>{cancelAnimationFrame(c),s?.disconnect()}},[e,r]);let o=(0,mn.useCallback)(u=>{t.current?.scrollBy({left:u,behavior:"smooth"})},[]);return{onScroll:r,railRef:t,scrollLeft:()=>o(-240),scrollRight:()=>o(240),showLeft:n,showRight:l}}var Pn=B(O(),1);function oi({containerClassName:e,itemClassName:t,items:n,loading:a,loadingKey:l,onItemClick:i,rowClassName:r,showCounters:o}){let u=Gu(n.length);return n.length===0&&!a?null:(0,Pn.jsxs)("div",{className:e,style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[n.length>0&&(0,Pn.jsx)(Uu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,Pn.jsx)("div",{className:r,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none"},onScroll:u.onScroll,children:n.length>0?n.map(c=>(0,Pn.jsxs)("button",{className:t,onClick:()=>i(c.key),style:{border:"none",borderRight:"1px solid var(--tg-df-border)",padding:"12px 20px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"1px",cursor:"pointer",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"6px",...t==="tg-df-brand-row-item"?{transition:"all 0.2s ease"}:{},background:c.selected?"var(--tg-df-bg-secondary)":"var(--tg-df-bg)",color:c.selected?"var(--tg-df-text-primary)":"var(--tg-df-text-muted)",fontWeight:c.selected?600:500},children:[c.label," ",l===c.key&&(0,Pn.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading",style:{borderWidth:"2px",height:"12px",width:"12px"}}),o!==!1&&(0,Pn.jsx)("span",{style:{color:"var(--tg-df-blue)",fontSize:"10px",...t==="tg-df-brand-row-item"?{fontWeight:400}:{}},children:c.count})]},c.key)):[1,2,3,4,5].map(c=>(0,Pn.jsx)("div",{className:"tg-df-skeleton",style:{height:"36px",width:"80px",borderRadius:"18px",flexShrink:0,margin:"8px 12px"}},`${r}-skeleton-${c}`))})]})}var b0=B(O(),1);function v0({airedaleBrands:e,brands:t,loading:n,refreshing:a,onBrandToggle:l,selectedBrands:i,showAuthorCounters:r}){let o=e.length>0?e:t||[],u=o.slice(0,15).map(c=>({count:c.count||0,key:c.formatted_value,label:c.formatted_value,selected:i?.includes(c.formatted_value)||!1}));return(0,b0.jsx)(oi,{containerClassName:"tg-df-brands-row-container",itemClassName:"tg-df-brand-row-item",items:u,loading:n&&o.length===0,loadingKey:a?i?.[0]:null,onItemClick:c=>l?.(c),rowClassName:"tg-df-brands-row",showCounters:r})}var w0=B(O(),1);function A0({activeDealTag:e,airedaleTagCounts:t,airedaleTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>{let c=u.split(":::"),s=c[0];return{count:t[u]||0,key:s,label:c[1]||u,selected:e===s}});return(0,w0.jsx)(oi,{containerClassName:"tg-df-categories-row-container",itemClassName:"tg-df-category-row-item",items:o,loading:a&&n.length===0,loadingKey:l?e:null,onItemClick:i,rowClassName:"tg-df-categories-row",showCounters:r})}var C0=B(O(),1);function S0({activeFreeformTags:e,freeformTagCounts:t,freeformTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>({count:t[u.handle]||0,key:u.handle,label:u.label,selected:e.includes(u.handle)}));return(0,C0.jsx)(oi,{containerClassName:"tg-df-freeform-tags-row-container",itemClassName:"tg-df-freeform-tag-row-item",items:o,loading:a&&n.length===0,loadingKey:l&&e.at(-1)||null,onItemClick:i,rowClassName:"tg-df-freeform-tags-row",showCounters:r})}var Be=B(O(),1),Ww=4;function R0({authors:e,clickedAuthorOverride:t,loading:n,refreshing:a,onAuthorClick:l,overriddenAuthorHandle:i,overriddenAuthorName:r,website:o}){let u=Gu(e.length);return e.length===0&&!n?null:(0,Be.jsxs)("div",{className:"tg-df-authors-row-container",style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[e.length>0&&(0,Be.jsx)(Uu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,Be.jsx)("div",{className:"tg-df-authors-row tg-df-mobile-authors",onScroll:u.onScroll,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none",gap:"24px",padding:"4px 16px 2px 16px",alignItems:"flex-start"},children:e.length>0?e.map((c,s)=>{let f=Br[c.brandKey]||Br[o||"tomsguide"],d=t&&(i===c.handle||r===c.fullName);return(0,Be.jsxs)("div",{className:"tg-df-author-row-item",onClick:()=>l(c),style:{cursor:"pointer",display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px",opacity:t?d?1:.4:1},children:[(0,Be.jsxs)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px",borderRadius:"50%",boxShadow:d?"0 0 0 3px var(--tg-df-blue, #1F69FF)":"none"},children:[(0,Be.jsx)("img",{src:ii(c.image),alt:c.fullName,decoding:"async",loading:s<Ww?"eager":"lazy",style:{width:"100%",height:"100%",borderRadius:"50%",objectFit:"cover",filter:t&&!d?"grayscale(100%)":"none"}}),d&&(0,Be.jsx)("span",{"aria-label":`Clear ${c.fullName} selection`,className:"tg-df-author-clear-badge",title:"Click again to clear selection",style:{alignItems:"center",backgroundColor:"#dc2626",border:"2px solid var(--tg-df-bg, #fff)",borderRadius:"50%",boxShadow:"0 1px 3px rgb(0 0 0 / 25%)",color:"#fff",display:"flex",fontSize:"15px",fontWeight:700,height:"20px",justifyContent:"center",lineHeight:1,position:"absolute",right:"-5px",top:"-5px",width:"20px",zIndex:1},children:(0,Be.jsx)("span",{"aria-hidden":"true",style:{display:"block",transform:"translateY(-1px)"},children:"\xD7"})}),f&&(0,Be.jsx)("img",{src:f,alt:"",className:"tg-df-author-brand-logo",decoding:"async",loading:"lazy",style:{position:"absolute",bottom:"-4px",right:"-4px",width:"24px",height:"24px",borderRadius:"50%",border:"2px solid var(--tg-df-bg, #fff)",backgroundColor:"#000",objectFit:"contain",filter:t&&!d?"grayscale(100%)":"none"}})]}),(0,Be.jsxs)("div",{style:{textAlign:"center"},children:[(0,Be.jsxs)("div",{className:"tg-df-author-row-name",style:{fontSize:"13px",fontWeight:700,color:"var(--tg-df-text)",lineHeight:"1.2"},children:[c.name,a&&d&&(0,Be.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading author products",style:{borderWidth:"2px",display:"inline-block",height:"11px",marginLeft:"4px",width:"11px"}})]}),c.role&&(0,Be.jsx)("div",{className:"tg-df-author-row-role",style:{fontSize:"11px",color:"var(--tg-df-text-muted)",lineHeight:"1.2",marginTop:"2px",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis",wordBreak:"break-word"},children:c.role})]})]},c.handle)}):[1,2,3,4].map(c=>(0,Be.jsxs)("div",{className:"tg-df-author-row-item",style:{display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px"},children:[(0,Be.jsx)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px"},children:(0,Be.jsx)("div",{className:"tg-df-skeleton",style:{width:"100%",height:"100%",borderRadius:"50%"}})}),(0,Be.jsxs)("div",{style:{textAlign:"center",width:"100%"},children:[(0,Be.jsx)("div",{className:"tg-df-skeleton",style:{height:"12px",width:"80%",margin:"0 auto 4px auto",borderRadius:"2px"}}),(0,Be.jsx)("div",{className:"tg-df-skeleton",style:{height:"10px",width:"60%",margin:"0 auto",borderRadius:"2px"}})]})]},`author-skeleton-${c}`))})]})}var Za=B(O(),1);function T0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,freeformTagCounts:i,freeformTags:r,allAuthorsList:o,brands:u,clickedAuthorOverride:c,loading:s,refreshing:f,onAuthorClick:d,onBrandToggle:m,onTagClick:v,onFreeformTagClick:A,overriddenAuthorHandle:b,overriddenAuthorName:h,selectedBrands:g,showAuthorRail:y,showAuthorCounters:p,showBrandRail:C,showCategoryRail:R,showFreeformTagRail:T,website:M}){let S=R!==!1&&l.length>0||T!==!1&&r.length>0||C!==!1&&(n.length>0||!!u?.length)||y&&o.length>0;return!(y||R!==!1||T!==!1||C!==!1)||!S&&!s?null:(0,Za.jsxs)("div",{id:"tg-df-spreadsheet-filters",style:{display:"block",marginBottom:"16px"},children:[y&&(0,Za.jsx)(R0,{authors:o,clickedAuthorOverride:c,loading:s&&o.length===0,refreshing:f,onAuthorClick:d,overriddenAuthorHandle:b,overriddenAuthorName:h,website:M}),R!==!1&&(0,Za.jsx)(A0,{activeDealTag:e,airedaleTagCounts:a,airedaleTags:l,loading:s,refreshing:f,onTagClick:v,showAuthorCounters:p}),T!==!1&&(0,Za.jsx)(S0,{activeFreeformTags:t,freeformTagCounts:i,freeformTags:r,loading:s,refreshing:f,onTagClick:A,showAuthorCounters:p}),C!==!1&&(0,Za.jsx)(v0,{airedaleBrands:n,brands:u,loading:s,refreshing:f,onBrandToggle:m,selectedBrands:g,showAuthorCounters:p})]})}var x0=B(dt(),1);var E0=[{value:"date_desc",label:"Most recent"},{value:"rating_desc",label:"Highest rating"},{value:"scored_first",label:"Scored products first"}];function Nr({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}){return!!(a&&e!==!0&&t===!1&&n===!1)}function qu({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a,lightweightReviewDelivery:l,showPriceDiscountFilters:i,showReviewSort:r}){return!!(l&&i===!1&&r===!1&&Nr({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}))}function Pu(e=!0){return e?E0:E0.filter(t=>t.value!=="scored_first")}function va(e,t=!0){return!t&&e==="scored_first"?"date_desc":e||"date_desc"}var L=B(O(),1),D0=[{value:"all",label:"All Prices",shortLabel:""},{value:"under50",label:"Under $50",shortLabel:"< $50"},{value:"50_100",label:"$50 - $100",shortLabel:"$50-$100"},{value:"100_200",label:"$100 - $200",shortLabel:"$100-$200"},{value:"200_500",label:"$200 - $500",shortLabel:"$200-$500"},{value:"over500",label:"Over $500",shortLabel:"> $500"}],Iw=[{value:"0",label:"Any discount"},...[5,10,15,20,25,30,40,50,60,70].map(e=>({value:String(e),label:`Min ${e}% off`}))];function Jw({open:e}){return(0,L.jsx)("svg",{"aria-hidden":"true",className:e?"is-open":void 0,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,L.jsx)("path",{d:"m6 9 6 6 6-6"})})}function Fn(){return(0,L.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,L.jsx)("polyline",{points:"20 6 9 17 4 12"})})}function M0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,brands:i,discountAmount:r,enabled:o,freeformTagCounts:u,freeformTags:c,includeScoredFirst:s,onBrandSelect:f,onBrandToggle:d,onDiscountAmountChange:m,onFreeformTagClear:v,onFreeformTagToggle:A,onPriceRangeChange:b,onReviewSortChange:h,onTagClear:g,onTagClick:y,priceRange:p,reviewSort:C,selectedBrands:R,showCounters:T,showBrandRail:M,showCategoryRail:S,showFreeformTagRail:D,showPriceDiscountFilters:G,showReviewSort:Se}){let[ie,Y]=(0,x0.useState)(null);if(!o)return null;let ze=l.map(x=>{let X=x.split(":::");return{count:a[x]||0,handle:X[0],label:X[1]||x}}),Ee=n.length>0?n:i||[],ut=ze.find(x=>x.handle===e),q=p||"all",Ge=!r||r==="all"?"0":r,pe=D0.find(x=>x.value===q),De=G!==!1,et=va(C,s),tl=Pu(s),At=et==="rating_desc"?"Highest rating":et==="scored_first"?"Scored first":"Most recent",Pr=x=>{Y(X=>X===x?null:x)},qe=[];return S!==!1&&qe.push({active:!!e,label:`CATEGORIES${ut?` (${ut.label})`:""}`,menu:"categories"}),D!==!1&&qe.push({active:t.length>0,label:`KEYWORDS${t.length>0?` (${t.length})`:""}`,menu:"keywords"}),M!==!1&&qe.push({active:R.length>0,label:`BRANDS${R.length>0?` (${R.length})`:""}`,menu:"brands"}),De&&qe.push({active:q!=="all",label:`PRICES${pe?.shortLabel?` (${pe.shortLabel})`:""}`,menu:"prices"}),(De||Se)&&qe.push({active:Se?et!=="date_desc":Ge!=="0",label:Se?`SORT REVIEWS (${At})`:`DISCOUNTS${Ge!=="0"?` (${Ge}%+)`:""}`,menu:Se?"review-sort":"discounts"}),(0,L.jsxs)("div",{className:"tg-df-mobile-2x2-container",children:[(0,L.jsx)("div",{className:`tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--${qe.length%2===0?"even":"odd"}`,children:qe.map(x=>(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-grid-cell${x.active?" has-active-filter":""}${ie===x.menu?" active":""}`,"aria-expanded":ie===x.menu,onClick:()=>Pr(x.menu),children:[(0,L.jsx)("span",{children:x.label}),(0,L.jsx)(Jw,{open:ie===x.menu})]},x.menu))}),S!==!1&&ie==="categories"&&(0,L.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${e?"":" selected"}`,onClick:()=>{g(),Y(null)},children:[(0,L.jsx)("span",{children:"All Categories"}),!e&&(0,L.jsx)(Fn,{})]}),ze.map(x=>{let X=e===x.handle;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{y(x.handle),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X?(0,L.jsx)(Fn,{}):T!==!1?(0,L.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},x.handle)})]}),M!==!1&&ie==="brands"&&(0,L.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${R.length===0?" selected":""}`,onClick:()=>f?.([]),children:[(0,L.jsx)("span",{children:"All Brands"}),R.length===0&&(0,L.jsx)(Fn,{})]}),Ee.map(x=>{let X=x.formatted_value,$=R.includes(X);return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${$?" selected":""}`,onClick:()=>d?.(X),children:[(0,L.jsx)("span",{children:X}),$?(0,L.jsx)(Fn,{}):T!==!1&&x.count?(0,L.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},X)})]}),D!==!1&&ie==="keywords"&&(0,L.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${t.length===0?" selected":""}`,onClick:()=>{v(),Y(null)},children:[(0,L.jsx)("span",{children:"All Keywords"}),t.length===0&&(0,L.jsx)(Fn,{})]}),c.map(x=>{let X=t.includes(x.handle);return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>A(x.handle),children:[(0,L.jsx)("span",{children:x.label}),X?(0,L.jsx)(Fn,{}):T!==!1&&u[x.handle]?(0,L.jsx)("span",{className:"tg-df-mobile-cell-badge",children:u[x.handle]}):null]},x.handle)})]}),ie==="prices"&&(0,L.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:D0.map(x=>{let X=q===x.value;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{b?.(x.value),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X&&(0,L.jsx)(Fn,{})]},x.value)})}),ie==="discounts"&&(0,L.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:Iw.map(x=>{let X=Ge===x.value;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{m?.(x.value),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X&&(0,L.jsx)(Fn,{})]},x.value)})}),ie==="review-sort"&&(0,L.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:tl.map(x=>{let X=et===x.value;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{h?.(x.value),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X&&(0,L.jsx)(Fn,{})]},x.value)})})]})}var Wa=B(dt(),1);var Q=B(O(),1);function _0({airedaleBrands:e,airedaleTags:t,discountAmount:n,hidden:a,includeScoredFirst:l,onDiscountAmountChange:i,onPriceRangeChange:r,onReviewSortChange:o,priceRange:u,reviewSort:c,showReviewSort:s,showPriceDiscountFilters:f}){let d=(0,Wa.useRef)(null),[m,v]=(0,Wa.useState)(!1),[A,b]=(0,Wa.useState)(!1),h=Pu(l),g=va(c,l),y=()=>{if(!d.current)return;let{scrollLeft:p,scrollWidth:C,clientWidth:R}=d.current;v(p>0),b(Math.ceil(p+R)<C-5)};return(0,Wa.useEffect)(()=>(y(),window.addEventListener("resize",y),setTimeout(y,100),setTimeout(()=>{document.querySelector(".tg-df-categories-row")?.dispatchEvent(new Event("scroll")),document.querySelector(".tg-df-brands-row")?.dispatchEvent(new Event("scroll"))},150),()=>window.removeEventListener("resize",y)),[t,e]),(0,Q.jsx)("div",{className:"tg-df-controls",id:"tg-df-controls",style:{display:a?"none":"flex",marginTop:"12px",marginBottom:"16px",justifyContent:"center"},children:(0,Q.jsxs)("div",{className:"tg-df-filters-container",style:{position:"relative",width:"100%",maxWidth:"800px",margin:"0 auto"},children:[(0,Q.jsx)("button",{className:"tg-df-scroll-btn left",style:{display:m?"flex":"none"},onClick:()=>d.current?.scrollBy({left:-200,behavior:"smooth"}),children:(0,Q.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,Q.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,Q.jsx)("button",{className:"tg-df-scroll-btn right",style:{display:A?"flex":"none"},onClick:()=>d.current?.scrollBy({left:200,behavior:"smooth"}),children:(0,Q.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,Q.jsx)("path",{d:"M9 18l6-6-6-6"})})}),(0,Q.jsxs)("div",{className:"tg-df-filters",ref:d,onScroll:y,children:[(0,Q.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-legacy-price-wrapper",style:{display:f!==!1?"flex":"none"},children:[(0,Q.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Q.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,Q.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-price-filter","aria-label":"Filter Prices",value:u||"all",onChange:p=>r?.(p.target.value),children:[(0,Q.jsx)("option",{value:"all",children:"All Prices"}),(0,Q.jsx)("option",{value:"under50",children:"Under $50"}),(0,Q.jsx)("option",{value:"50_100",children:"$50 - $100"}),(0,Q.jsx)("option",{value:"100_200",children:"$100 - $200"}),(0,Q.jsx)("option",{value:"200_500",children:"$200 - $500"}),(0,Q.jsx)("option",{value:"over500",children:"Over $500"})]})]}),(0,Q.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-discount-filter-wrapper",style:{display:f!==!1&&!s?"flex":"none"},children:[(0,Q.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,Q.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,Q.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-discount-filter","aria-label":"Discount Amount",value:n||"all",onChange:p=>i?.(p.target.value),children:[(0,Q.jsx)("option",{value:"all",children:"Any discount"}),[5,10,15,20,25,30,40,50,60,70].map(p=>(0,Q.jsxs)("option",{value:p,children:["Min ",p,"%"]},p))]})]}),(0,Q.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-review-sort-wrapper",style:{display:s?"flex":"none"},children:[(0,Q.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,Q.jsx)("path",{d:"M4 7h16M7 12h10m-7 5h4"})}),(0,Q.jsx)("select",{className:"tg-df-filter-select",id:"tg-df-review-sort","aria-label":"Sort Reviews",value:g,onChange:p=>o?.(p.target.value),children:h.map(p=>(0,Q.jsx)("option",{value:p.value,children:p.label},p.value))})]})]})]})})}var ye=B(dt(),1);function Or(e,t){return e.filter(n=>{let a=n.handle.toLowerCase(),l=n.fullName.toLowerCase(),i=n.name.toLowerCase();return t.some(r=>{let o=r.articleauthorhandle||[],u=r.articleauthor||[],c=r.articleauthortext||[];return[...o,...u,...c].some(s=>{let f=String(s||"").toLowerCase();return f===a||f===l||f===i})})})}function Fu(e,t){return e.map((n,a)=>({index:a,profile:n,productCount:t[n.handle]||0})).sort((n,a)=>a.productCount-n.productCount||n.index-a.index).map(({profile:n})=>n)}function ju(e,t){return e==="all-authors"||t==="all-authors"||t==="All authors"||!e&&!t}function Yu(e,t,n){let a=e;if((t||n)&&t!=="all-authors"&&n!=="all-authors"&&n!=="All authors"){if(t){let l=t.toLowerCase(),i=e.filter(r=>r.articleauthorhandle&&r.articleauthorhandle.some(o=>o.toLowerCase()===l));if(i.length>0)a=i;else if(n){let r=n.toLowerCase(),o=e.filter(u=>u.articleauthor&&u.articleauthor.some(c=>c.toLowerCase()===r));o.length>0&&(a=o)}}else if(n){let l=n.toLowerCase();a=e.filter(i=>i.articleauthor&&i.articleauthor.some(r=>r.toLowerCase()===l))}}return a}function cf(e,t,n){let a=0;if(t&&e.articleauthorhandle){let l=e.articleauthorhandle.findIndex(i=>i.toLowerCase()===t.toLowerCase());l>=0&&(a=l)}else if(n&&e.articleauthor){let l=e.articleauthor.findIndex(i=>i.toLowerCase()===n.toLowerCase());l>=0&&(a=l)}return a}function Vu(e,t,n){let a=cf(e,t,n),l=i=>typeof i=="string"?ne(i):i||"";return{authorName:e.articleauthortext?l(e.articleauthortext[a]):e.articleauthor?l(e.articleauthor[a]):"",authorRole:e.articleauthorrole?l(e.articleauthorrole[a]):"",authorImage:e.articleauthormedia?e.articleauthormedia[a]:""}}function kr(e,t){let n=new Map;return e.forEach(a=>{if(!a.articleauthor)return;let l=t;if(a.documenturl)try{let f=new URL(a.documenturl).hostname.replace("www.","").split(".");f.length>0&&(l=f[0].toLowerCase())}catch{}let i=a.articleauthorhandle||[],r=a.articleauthor||[],o=a.articleauthortext||[],u=a.articleauthorrole||[],c=a.articleauthormedia||[];r.forEach((s,f)=>{if(!s||s==="null"||s.toLowerCase()==="all authors")return;let d=i[f]&&i[f]!=="null"?i[f]:s.toLowerCase().replace(/\s+/g,"-");if(!d||d==="null")return;let m=o[f]&&o[f]!=="null"?o[f]:s,v=u[f]&&u[f]!=="null"?u[f]:"",A=ne(String(m)),b=ne(String(v)),h=c[f]&&c[f]!=="null"?c[f]:"",g=A.split(" ")[0],y=Mr(a,f,"short"),p=Mr(a,f,"long"),C=zu(a,f),R=n.get(d);!R&&A&&h?n.set(d,{...p?{bioLong:p}:{},...y?{bioShort:y}:{},name:g,fullName:A,handle:d,role:b,image:h,brandKey:l,...C.length>0?{socialNetworks:C}:{}}):R&&(!R.bioShort&&y&&(R.bioShort=y),!R.bioLong&&p&&(R.bioLong=p),!R.socialNetworks?.length&&C.length>0&&(R.socialNetworks=C))})}),Array.from(n.values())}var E=B(O(),1);function N0(e){let t=(0,ye.useRef)(""),n=(0,ye.useRef)(null),a=(0,ye.useCallback)(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),l=(0,ye.useCallback)(r=>{a(),t.current=r},[a]),i=(0,ye.useCallback)((r,o,u=!1)=>{if(!e)return;if(r===t.current){a();return}let c=()=>{n.current=null,t.current=r,e(o)};a(),u?c():n.current=window.setTimeout(c,350)},[a,e]);return(0,ye.useEffect)(()=>a,[a]),{save:i,synchronise:l}}function B0({contentKey:e,defaultText:t,kind:n,onChange:a,value:l}){let i=(0,ye.useRef)(null),r=(0,ye.useRef)(e),[o,u]=(0,ye.useState)(!1),c=l??t,s=!!a,{save:f,synchronise:d}=N0(a);(0,ye.useLayoutEffect)(()=>{let g=r.current!==e;i.current&&(g||document.activeElement!==i.current)&&(i.current.innerHTML!==c&&(i.current.innerHTML=c),d(c)),r.current=e},[e,d,c]);let m=(g=!1)=>{if(!i.current)return;let y=i.current.innerHTML;f(y,y===t?void 0:y,g)},v=(g,y)=>{document.execCommand(g,!1,y),m(!0)},A=n==="kicker"?{fontSize:"0.875rem",color:"#6B7280",fontStyle:"normal",margin:"0 0 0.25rem 0"}:{fontSize:"2.25rem",fontWeight:300,color:"#111827",margin:"0 0 0.25rem 0",lineHeight:1.1,letterSpacing:"-0.02em"},b=n==="kicker"?"tg-df-author-curated-by tg-df-author-kicker":"tg-df-author-name",h=()=>n==="kicker"?(0,E.jsx)("p",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}}):(0,E.jsx)("h2",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}});return s?(0,E.jsxs)("div",{className:"tg-df-author-header-text-shell",style:{position:"relative"},children:[o&&(0,E.jsxs)("div",{className:"tg-df-author-header-text-toolbar",role:"toolbar","aria-label":`${n==="kicker"?"Shop by text":"Site or author name"} formatting`,style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"0.25rem",margin:"0 auto 0.375rem",width:"fit-content",padding:"0.25rem 0.5rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",fontSize:"11px",zIndex:10},children:[(0,E.jsx)("span",{style:{color:"#64748b",padding:"2px 2px 2px 0"},children:"Editing"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("bold"),title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("italic"),title:"Italic",children:(0,E.jsx)("em",{children:"I"})}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{let g=prompt("Enter URL:");g&&v("createLink",g)},title:"Add link",children:"\u{1F517}"}),l!==void 0&&(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{i.current&&(i.current.innerHTML=t),d(t),a?.(void 0)},title:"Restore default",children:"Reset"})]}),h()]}):h()}function $w({contentKey:e,initialBio:t,defaultPlaceholder:n,onBioChange:a,stabilizeHeight:l=!1}){let r=(0,ye.useRef)(null),o=(0,ye.useRef)(e),u=(0,ye.useRef)(n),c=(0,ye.useRef)(!1),[s,f]=(0,ye.useState)(!1),[d,m]=(0,ye.useState)(!1),[v,A]=(0,ye.useState)(!1),b=t||n,h=l&&b.replace(/<[^>]*>/g,"").trim().length>240,g=!!a,{save:y,synchronise:p}=N0(a);(0,ye.useLayoutEffect)(()=>{let S=o.current!==e,D=u.current!==n;S&&(c.current=!1);let G=!t&&D&&!c.current;r.current&&(S||document.activeElement!==r.current||G)&&(r.current.innerHTML!==b&&(r.current.innerHTML=b),p(b)),o.current=e,u.current=n},[b,e,n,t,p]),(0,ye.useLayoutEffect)(()=>{m(!1)},[e]),(0,ye.useLayoutEffect)(()=>{if(!h||!r.current){A(!1);return}let S=r.current,D=()=>{A(S.scrollHeight>S.clientHeight+1)};if(D(),typeof ResizeObserver>"u")return;let G=new ResizeObserver(D);return G.observe(S),()=>G.disconnect()},[b,e,d,h]);let C=(S,D=null)=>{if(c.current=!0,document.execCommand(S,!1,D||void 0),r.current){let G=r.current.innerHTML;y(G,G===n?"":G,!0)}},R=(S=!1)=>{if(!r.current)return;let D=r.current.innerHTML;y(D,D===n?"":D,S)};return(0,E.jsxs)("div",{style:{position:"relative",maxWidth:"42rem",margin:"0 auto 0.5rem auto",padding:"0.25rem 0.5rem"},className:`tg-df-author-bio-shell${l?" tg-df-author-bio-shell--stable":""}`,children:[g&&s&&(0,E.jsxs)("div",{role:"toolbar","aria-label":"Introduction text formatting",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"0.375rem",marginBottom:"0.5rem",padding:"0.25rem 0.625rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",width:"fit-content",margin:"0 auto 0.5rem auto",fontSize:"12px",userSelect:"none",zIndex:10},children:[(0,E.jsx)("span",{style:{fontSize:"11px",color:"#64748b",fontWeight:500,marginRight:"2px"},children:"Editing \u2014 saves when you click away"}),(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:()=>C("bold"),style:{fontWeight:"bold",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:()=>C("italic"),style:{fontStyle:"italic",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Italic",children:"I"}),(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:()=>{let S=prompt("Enter URL:");S&&C("createLink",S)},style:{padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Add Link",children:"\u{1F517}"}),t&&(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:S=>{S.preventDefault(),S.stopPropagation(),r.current&&(r.current.innerHTML=n),c.current=!1,p(n),a&&a("")},style:{fontSize:"10px",padding:"2px 8px",borderRadius:"4px",background:"#fee2e2",color:"#991b1b",cursor:"pointer",border:"1px solid #fca5a5"},title:"Reset Bio",children:"Reset"})]}),(0,E.jsx)("div",{ref:r,contentEditable:g?!0:void 0,suppressContentEditableWarning:g,onFocus:g?()=>{f(!0)}:void 0,onBlur:g?()=>{f(!1),R(!0),c.current=!1}:void 0,onInput:g?()=>{c.current=!0}:void 0,className:`tg-df-author-bio ${g?"wysiwyg-bio-editable":"tg-df-author-bio--static"}${h?d?" tg-df-author-bio--expanded":" tg-df-author-bio--clamped":""}`,style:{color:"#4b5563",lineHeight:1.6,fontWeight:300,fontSize:"0.9375rem",textAlign:"center",outline:g&&s?"2px solid #3b82f6":"none",borderRadius:"6px",padding:"0.375rem 0.5rem",cursor:g?"text":"default",transition:"all 0.15s ease-in-out"}}),h?(0,E.jsx)("div",{className:"tg-df-author-bio-toggle-slot",children:(0,E.jsx)("button",{type:"button",className:"tg-df-author-bio-toggle","aria-expanded":d,onClick:()=>m(S=>!S),style:{visibility:v||d?"visible":"hidden"},children:d?"Show less":"Read more"})}):null]})}function e2(e){let t=(e||"").toLowerCase();return t==="linkedin"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.28 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.75M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"})}):t==="twitter"||t==="x"?(0,E.jsx)("svg",{className:"icon-svg",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,E.jsx)("path",{fill:"currentColor",d:"M18 2h4l-8 9 9 11h-7l-5-7-6 7H2l7-9L1 2h7l5 6zm-1 18h2L7 4H5z"})}):t==="email"||t==="mail"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}),(0,E.jsx)("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]}):t==="instagram"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"5",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"12",cy:"12",r:"4.25",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"17.4",cy:"6.7",r:"1.25",fill:"currentColor"})]}):t==="steam"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("circle",{fill:"#0f1618",cx:"12",cy:"12",r:"12"}),(0,E.jsx)("path",{d:"m18.22 8.9a2.269 2.269 0 1 1 -2.27-2.265 2.267 2.267 0 0 1 2.27 2.265zm2.258.005a4.534 4.534 0 0 1 -4.533 4.526h-.1l-4.087 2.911v.161a3.4 3.4 0 0 1 -6.74.669l-4.549-1.879c-.032-.109-.057-.219-.085-.329a11.973 11.973 0 0 1 -.384-2.964c0-.214.02-.423.032-.635 0-.1.008-.206.016-.308l6.394 2.643a3.385 3.385 0 0 1 1.915-.591c.065 0 .127 0 .191.005l2.865-4.145v-.062a4.533 4.533 0 0 1 9.066 0zm-9.763 6.618a2.55 2.55 0 0 0 -3.262-1.411l1.525.63a1.877 1.877 0 1 1 -1.446 3.464l-1.475-.606a2.529 2.529 0 0 0 1.315 1.25 2.559 2.559 0 0 0 3.339-1.374 2.526 2.526 0 0 0 .004-1.951zm8.251-6.618a3.021 3.021 0 1 0 -3.021 3.015 3.022 3.022 0 0 0 3.021-3.013z",fill:"#fff"})]}):t==="youtube"?(0,E.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"})}):t==="twitch"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("path",{d:"m24 12a12 12 0 1 1 -12-12 12 12 0 0 1 12 12z",fill:"#111"}),(0,E.jsx)("path",{d:"m12.308 17.167-1.833 1.833h-1.818v-1.833h-3.357v-9.733l.925-2.434h12.475v8.517l-3.648 3.65zm5.175-10.95h-10.043v8.824h2.743v1.833l1.817-1.833h3.342l2.14-2.126zm-5.483 6.083v-3.65h-1.218v3.65zm3.342 0v-3.65h-1.216v3.65z",fill:"#fff"})]}):t==="facebook"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m13.079 19h-2.9v-7h-1.441v-2.408h1.442v-1.456c0-1.96.813-3.136 3.136-3.136h1.933v2.408h-1.2c-.91 0-.965.35-.965.966v1.218h2.183l-.257 2.408h-1.931z",fill:"currentColor"})}):t==="pinterest"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.336 5c-3.822 0-5.754 2.744-5.754 5.025a3.065 3.065 0 0 0 1.652 3.066.279.279 0 0 0 .407-.2l.154-.644a.373.373 0 0 0-.113-.448 2.341 2.341 0 0 1-.532-1.582 3.812 3.812 0 0 1 3.961-3.849 3.009 3.009 0 0 1 3.346 3.08c0 2.323-1.022 4.283-2.547 4.283a1.253 1.253 0 0 1-1.273-1.554 17.616 17.616 0 0 0 .713-2.856 1.081 1.081 0 0 0-1.092-1.2c-.854 0-1.553.881-1.553 2.071a2.954 2.954 0 0 0 .266 1.274l-1.038 4.383a9.389 9.389 0 0 0-.027 3.065.109.109 0 0 0 .2.042 8.737 8.737 0 0 0 1.457-2.631l.561-2.212a2.3 2.3 0 0 0 1.959 1.008c2.59 0 4.34-2.366 4.34-5.516a4.8 4.8 0 0 0-5.087-4.605z",fill:"currentColor"})}):t==="substack"?(0,E.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z"})}):t==="threads"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12.186 24h-.007c-3.582-.024-6.332-1.22-8.173-3.555C2.26 18.212 1.5 15.228 1.5 11.83 1.5 8.16 2.673 5.097 4.902 2.935 7.026.877 10.02 0 13.565 0c3.784 0 6.81 1.028 8.995 3.056 2.008 1.862 3.013 4.417 2.91 7.391-.122 3.518-1.57 6.136-4.304 7.781-1.892 1.138-4.103 1.62-6.57 1.433-.122.392-.266.769-.434 1.127-.514 1.096-1.18 1.96-1.982 2.569-.884.67-1.933 1.01-3.118 1.01-1.34 0-2.42-.42-3.21-1.248-.78-.82-1.17-1.89-1.17-3.18 0-1.512.52-2.73 1.545-3.62 1.018-.883 2.45-1.33 4.258-1.33.56 0 1.11.04 1.63.12-.04-.53-.13-1.02-.27-1.46-.26-.81-.71-1.45-1.34-1.92-.62-.47-1.42-.71-2.38-.71-1.09 0-2.02.29-2.77.87-.29.22-.68.17-.9-.12l-.76-1.03c-.22-.3-.16-.71.13-.93C7.43 5.37 8.95 4.9 10.8 4.9c1.64 0 2.99.41 4.02 1.22 1.04.81 1.73 1.93 2.06 3.33.15.65.25 1.42.3 2.31 1.68-.31 3.05-1.05 4.08-2.2 1.01-1.13 1.52-2.58 1.52-4.31 0-2.43-.84-4.32-2.5-5.62C18.63 1.32 16.32.5 13.56.5c-3.03 0-5.54.73-7.27 2.21C4.48 4.27 3.5 6.78 3.5 10c0 3.1.66 5.62 1.96 7.49 1.34 1.93 3.38 2.92 6.07 2.95 1.76.02 3.32-.34 4.64-1.07.28-.15.63-.05.78.22l.55.98c.15.28.05.63-.22.78-1.63.9-3.55 1.35-5.7 1.35z"})}):t==="tiktok"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.308 5.012c.763-.012 1.522 0 2.281-.012a3.636 3.636 0 0 0 1.02 2.434 4.12 4.12 0 0 0 2.473 1.043v2.349a6.177 6.177 0 0 1-2.449-.564 7.207 7.207 0 0 1-.947-.543c0 1.705.008 3.406-.01 5.105a4.442 4.442 0 0 1-.789 2.3 4.343 4.343 0 0 1-3.448 1.872 4.254 4.254 0 0 1-2.379-.6 4.393 4.393 0 0 1-2.127-3.331c-.014-.292-.019-.584-.007-.868a4.395 4.395 0 0 1 5.091-3.9c.013.864-.021 1.727-.021 2.591a2.007 2.007 0 0 0-2.558 1.237 2.316 2.316 0 0 0-.079.939 1.992 1.992 0 0 0 3.658.736 1.39 1.39 0 0 0 .239-.62c.057-1.043.034-2.082.041-3.126.006-2.351-.007-4.7.011-7.041z",fill:"currentColor"})}):t==="bluesky"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.879.139 2.588-.02 3.868.002 5.03c.08 4.201 1.84 10.024 3.931 12.397 2.091 2.373 4.545 1.573 5.467.927.817-.573 1.564-1.611 2.6-2.92 1.036 1.309 1.783 2.347 2.6 2.92.922.646 3.376 1.446 5.467-.927 2.091-2.373 3.851-8.196 3.931-12.397.022-1.162-.137-2.442-.9-3.151-.659-.613-1.664-.935-4.3-1.074C16.046 4.747 13.087 8.686 12 10.8z"})}):t==="github"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"})}):t==="rss"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("path",{d:"M4 11a9 9 0 0 1 9 9"}),(0,E.jsx)("path",{d:"M4 4a16 16 0 0 1 16 16"}),(0,E.jsx)("circle",{cx:"5",cy:"19",r:"1"})]}):(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,E.jsx)("path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"}),(0,E.jsx)("path",{d:"M2 12h20"})]})}function O0({authorCount:e=0,authorArticlesList:t,authorBioLength:n,customBio:a,customHeaderKicker:l,customHeaderTitle:i,effectiveAuthorHandle:r,effectiveAuthorName:o,isReviewWidget:u=!1,onBioChange:c,onHeaderKickerChange:s,onHeaderTitleChange:f,selectedProfile:d,showAuthorBio:m=!0,showAuthorIdentity:v=!0,showSocialButtons:A=!0,stabilizeBio:b=!1,totalDealCount:h=0,website:g}){let y=ju(r,o),p=g||"tomsguide",C=Hu[p]||p,R=Br[p],T=r?.toLowerCase(),M=o?.toLowerCase(),S=t.find(pe=>T&&pe.articleauthorhandle?.some(De=>De?.toLowerCase()===T)||M&&pe.articleauthor?.some(De=>De?.toLowerCase()===M))||null,D=S?cf(S,r,o):0,G=d?.image||(S?l0(S,D):""),Se=d?n==="short"?d.bioShort||"":d.bioLong||d.bioShort||"":S?Mr(S,D,n):"",ie=y?`Our team is dedicated to researching, reviewing and recommending the latest and best products in all the categories that matter to you. Below you can shop the latest ${h} ${u?"review ":""}recommendations from ${e} ${C} ${u?"editor tests":"editors"}.`:Se||`Handpicked deals and recommendations curated by ${o||"our expert editorial team"}.`,Y=d?.role||"",ze=y?f0[p]||[]:d?.socialNetworks||[];!y&&S&&(Y||(Y=a0(S,D)),ze.length===0&&(ze=zu(S,D)));let Ee=d?.fullName||o||"Author Name",ut=y?`site:${p}`:`author:${d?.handle||r||Ee}`,q=A&&ze.length>0,Ge=!y&&!!Y||q;return(0,E.jsxs)("div",{className:"tg-df-author-card",style:{textAlign:"center",padding:"1.75rem 1rem 0.25rem 1rem",margin:"0 auto",maxWidth:"48rem"},children:[v&&(y?(0,E.jsx)("div",{className:"tg-df-author-media-slot tg-df-author-image-container",style:{margin:"0 auto 0.75rem auto",textAlign:"center",minHeight:"180px",display:"flex",alignItems:"center",justifyContent:"center"},children:R?(0,E.jsx)("img",{src:R,alt:C,className:"tg-df-site-logo",style:{maxHeight:"150px",maxWidth:"520px",objectFit:"contain",margin:"0 auto",display:"block"}}):(0,E.jsx)("div",{style:{fontSize:"1.75rem",fontWeight:700,color:"#111827"},children:C})}):(0,E.jsx)("div",{className:"tg-df-author-media-slot",children:(0,E.jsxs)("div",{className:"tg-df-author-profile-image-wrapper",children:[G?(0,E.jsx)("img",{src:ii(G),alt:Ee,className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",objectFit:"cover",display:"block"}}):(0,E.jsx)("div",{className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",background:"#e2e8f0",display:"block"}}),R?(0,E.jsx)("img",{src:R,alt:"",className:"tg-df-author-profile-brand-logo"}):null]})})),v&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(B0,{contentKey:`${ut}:kicker`,defaultText:u?"Reviews shop by":"Shop by",kind:"kicker",onChange:s,value:l}),(0,E.jsx)(B0,{contentKey:`${ut}:title`,defaultText:y?C:Ee,kind:"title",onChange:f,value:i}),Ge&&(0,E.jsxs)("div",{className:`tg-df-author-meta-slot${y?" tg-df-author-meta-slot--site":""}${q?"":" tg-df-author-meta-slot--no-social"}`,children:[!y&&Y?(0,E.jsx)("div",{className:"tg-df-author-role",id:"tg-df-author-role-display",style:{fontSize:"0.9375rem",fontWeight:500,color:"var(--tg-df-blue, #1F69FF)",margin:"0 0 0.5rem 0",lineHeight:1.3},children:Y}):null,q?(0,E.jsx)("div",{className:"tg-df-author-social-links",children:ze.map(pe=>(0,E.jsx)("a",{href:pe.href,target:"_blank",rel:"noopener noreferrer",title:pe.label,"aria-label":pe.label,className:"tg-df-author-social-btn","data-social-key":pe.key.toLowerCase(),children:e2(pe.key)},pe.key))}):null]})]}),m&&(0,E.jsx)($w,{contentKey:ut,initialBio:a,defaultPlaceholder:ie,onBioChange:c,stabilizeHeight:b})]})}var W=B(O(),1);function sf(e){if(!e||typeof e!="object")return"";if(e.type==="voucher_code"&&e.display_value)return e.display_value;let t=Array.isArray(e)?e:Object.keys(e).filter(n=>Object.prototype.hasOwnProperty.call(e,n)).map(n=>e[n]);for(let n of t){let a=sf(n);if(a)return a}return""}function t2({endTime:e}){if(!e)return null;let t=e;!isNaN(Number(t))&&String(t).length===10&&(t=Number(t)*1e3);let n=new Date(t),a=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"});return(0,W.jsxs)("span",{className:"tg-df-voucher-expiry",children:[(0,W.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginRight:"4px"},children:[(0,W.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,W.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),"Expires ",a.format(n)]})}function k0({error:e,loading:t,merchant:n,onClose:a,vouchers:l}){return(0,W.jsx)("div",{className:`tg-df-modal-backdrop ${n?"active":""}`,onClick:i=>{i.target===i.currentTarget&&a()},children:(0,W.jsxs)("div",{className:"tg-df-modal",children:[(0,W.jsxs)("div",{className:"tg-df-modal-header",children:[(0,W.jsx)("h3",{className:"tg-df-modal-title",children:n?`${n} Coupons & Deals`:"Available Coupons & Deals"}),(0,W.jsx)("button",{className:"tg-df-modal-close",onClick:a,children:(0,W.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,W.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,W.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),(0,W.jsx)("div",{className:"tg-df-modal-body",children:t?(0,W.jsx)("div",{className:"tg-df-message",children:(0,W.jsx)("div",{className:"tg-df-coupon-spinner",style:{width:"24px",height:"24px",borderColor:"#ccc",borderTopColor:"#3b82f6"}})}):e?(0,W.jsx)("div",{className:"tg-df-message",children:"Failed to load vouchers."}):l.length===0?(0,W.jsxs)("div",{className:"tg-df-message",children:["No active vouchers found for ",n,"."]}):l.map((i,r)=>{let o=i.offer?.name||i.offer?.title||i.name||i.title||i.model_name||"Voucher",u=i.offer?.link||i.offer?.url||i.link||i.url||"#",c=i.merchant,s=Array.isArray(c)?c[0]?.logo_url||"":c?.logo_url||"",f=sf(i.offer)||sf(i)||i.offer?.voucher_code||i.voucher_code||"",d=i.offer?.end_time||i.end_time||"";return(0,W.jsxs)("a",{href:u,target:"_blank",rel:"noopener nofollow",className:"tg-df-voucher-item",children:[s?(0,W.jsx)("img",{src:s,alt:"Logo",className:"tg-df-voucher-logo"}):(0,W.jsx)("div",{className:"tg-df-voucher-logo",style:{background:"#e2e8f0"}}),(0,W.jsxs)("div",{className:"tg-df-voucher-content",children:[(0,W.jsx)("h4",{className:"tg-df-voucher-title",children:o}),(0,W.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px",marginTop:"8px"},children:[f&&(0,W.jsxs)("span",{className:"tg-df-voucher-code",title:"Copy to clipboard",onClick:m=>{m.preventDefault(),m.stopPropagation();let v=m.currentTarget;navigator.clipboard.writeText(f).then(()=>{v.classList.add("copied");let A=v.querySelector(".tg-df-voucher-code-text"),b=v.querySelector(".tg-df-voucher-copy-icon"),h=A.innerText,g=b.innerHTML;A.innerText="Copied!",b.innerHTML='<polyline points="20 6 9 17 4 12"><\/polyline>',setTimeout(()=>{v.classList.remove("copied"),A&&(A.innerText=h),b&&(b.innerHTML=g)},2e3)})},children:[(0,W.jsx)("span",{className:"tg-df-voucher-code-text",children:f}),(0,W.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:"6px",flexShrink:0},className:"tg-df-voucher-copy-icon",children:[(0,W.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,W.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})]}),d&&(0,W.jsx)(t2,{endTime:d})]})]})]},r)})})]})})}var N=B(dt(),1);function ui(e){if(!e||!e.articlepage)return[];try{let t=e.articlepage;if(!Array.isArray(t))return typeof t=="string"?JSON.parse(t):t;if(t.length===0)return[];let n=t[0];return typeof n=="string"?JSON.parse(n):Array.isArray(n)?n:n&&typeof n=="object"&&"type"in n?t:n}catch{return[]}}function ci(e,t=!1,{includeCollections:n=!0,includeDeals:a=!0}={}){let l=t?e.filter(r=>r.type==="buying-guide"):[];if(l.length>0)return l;let i=e.filter(r=>r.type==="deal"||r.type==="featured-product");return a&&!n&&!t?i.filter(r=>r.type==="deal"):i}function si(e,t){if(!t||t.length===0)return!0;let n=e&&(e.brand||e.retailer)||"";if(!n)return!1;let a=n.replace(/^\d+\.\s*/,"").trim().toLowerCase();return t.some(l=>{let i=l.trim().toLowerCase();return a===i||a.startsWith(`${i} `)||a.includes(i)||i.includes(a)})}function bt(e){return!e||e==="auto"?"US":e}function nn(e){return e==="GB"||e==="UK"?"GBP":e==="AU"?"AUD":e==="CA"?"CAD":["DE","FR","IT","ES","NL"].includes(e)?"EUR":"USD"}function L0(e,t){if(e.isBuyingGuideProduct||e.isReviewProduct)return!0;if(t==="unavailable")return!1;let n=String(e.isoCurrency||e.currency||"").trim().toUpperCase();return({$:"USD",A$:"AUD",CA$:"CAD","\xA3":"GBP","\u20AC":"EUR"}[n]||n)===nn(t)}function di(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=a?n.currency||(n.price&&typeof n.price=="object"?n.price.currency:""):l.currency||(typeof l=="string"?l:"")||n.currency||"";!i&&n.variants&&n.variants.length>0&&(i=n.variants[0].currency||"");let r="$",o="USD",u=(i||"").toString().toUpperCase().trim();return u==="GBP"||u==="\xA3"||u.includes("POUND")||u.includes("163")?(r="\xA3",o="GBP"):u==="EUR"||u==="\u20AC"||u.includes("EURO")||u.includes("8364")?(r="\u20AC",o="EUR"):u==="AUD"||u==="A$"?(r="A$",o="AUD"):u==="CAD"||u==="CA$"?(r="CA$",o="CAD"):u==="USD"||u==="$"||u.includes("DOLLAR")||u.includes("36")?(r="$",o="USD"):(o=nn(t),o==="GBP"?r="\xA3":o==="AUD"?r="A$":o==="CAD"?r="CA$":o==="EUR"&&(r="\u20AC")),{isoCurr:o,currencyStr:r}}function Xu(e){let t=e.data||{},n=e.type==="featured-product",a=t.price||{},l=0,i=0;return n?(l=typeof a=="number"?a:a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):t.msrp?parseFloat(t.msrp):0):(l=a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):0),{rawPrice:l,rawMsrp:i}}function ba(e,t){if(!t||t==="all"||e<=0)return!0;if(t==="under50"&&e>=50||t==="over50"&&e<=50||t==="over30"&&e<=30||t==="over500"&&e<=500)return!1;if(t.includes("_")){let[n,a]=t.split("_").map(Number);if(n&&e<n||a&&e>a)return!1}return!0}function Aa(e,t,n){if(!n||n==="0"||n==="all")return!0;let a=parseInt(n);return!(!isNaN(a)&&a>0&&(!t||t<=e||Math.round((1-e/t)*100)<a))}var Qu=[0,50,100,150,200,250,300,350,400,450],df={parameter:"articleControlTag",value:"type_buying_guide"},n2={includeAllContent:!1,pageStarts:Qu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"}]},a2={pcgamer:{includeAllContent:!1,pageStarts:Qu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["deals","type_deal","channel_gaming_hardware"]}],buyingGuideScopes:[df]},homesandgardens:{includeAllContent:!1,pageStarts:Qu,scopes:[{parameter:"articleType",value:"collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"sig-product-collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"van-hawk-collection-widget",inventoryKind:"collections"},{parameter:"articleControlTag",value:"shopping",requiredArticleType:"news",inventoryKind:"collections"},{parameter:"articleType",value:"deals",inventoryKind:"deals"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["shopping","type_deal"],inventoryKind:"deals"}],buyingGuideScopes:[{parameter:"articleType",value:"buying guide"},df]},whowhatwear:{includeAllContent:!0,pageStarts:Qu,scopes:[{}]}};function Ku(e,{includeBuyingGuideProducts:t=!1,includeCollections:n=!0,includeDeals:a=!0}={}){let l=a2[e]||n2;if(l.includeAllContent)return l;let i=l.scopes.filter(r=>r.inventoryKind==="collections"?n:r.inventoryKind==="deals"?a:r.value==="sig-product-collection"?n:a);return t?{...l,scopes:[...i,...l.buyingGuideScopes||[df]]}:{...l,scopes:i}}function ff(e){if(Array.isArray(e))return e;let t=e.data;return t&&Array.isArray(t)?t:[]}function z0(e){let t=new Set;return e.filter(n=>{let a=n.id||n.articleid||n.url;return!a||t.has(a)?!1:(t.add(a),!0)})}function Kt(e){return typeof e.articletype=="string"?e.articletype.toLowerCase():Array.isArray(e.articletype)&&e.articletype.length>0?e.articletype[0].toLowerCase():""}function Lr(e){return String(e||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function gf(e){return[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]].map(Lr)}function l2(e){return Kt(e)==="review"&&gf(e).some(t=>t.includes("channelgaminghardware"))}function H0(e,t,n){let a=Kt(e),l=gf(e),i=c=>l.some(s=>s.includes(c)),r=a==="news"&&i("shopping")&&i("deal")&&i("typedeal"),o=a==="deals"||r,u=a==="collection"||i("sigproductcollection")||i("vanhawkcollectionwidget")||a==="news"&&i("shopping")&&!r||a==="idea"&&i("shopping")&&(i("sigproductcollection")||i("vanhawkcollectionwidget"));return t&&o||n&&u}function Ia(e,t=!0,n=!0,a){if(a==="homesandgardens")return H0(e,t,n);let l=Kt(e),i=gf(e),r=l==="deals"||i.some(u=>u.includes("typedeal")),o=i.some(u=>u.includes("sigproductcollection"));return t&&r||n&&o}function U0(e,t,n=!1,a=!1,l=!0,i=!0){if(a&&Kt(e)==="review")return t!=="pcgamer"||l2(e);if(t==="homesandgardens")return Kt(e)==="buying guide"?n:H0(e,i,l);let r=Ku(t,{includeBuyingGuideProducts:n,includeCollections:l,includeDeals:i});if(r.includeAllContent)return i&&l?!0:n||Ia(e,i,l);let o=Kt(e),u=[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]],c=f=>!f.requiredArticleType||o===f.requiredArticleType.toLowerCase(),s=f=>!f.requiredControlTags||f.requiredControlTags.every(d=>u.some(m=>typeof m=="string"&&Lr(m).includes(Lr(d))));return r.scopes.some(f=>!c(f)||!s(f)?!1:f.parameter==="articleType"?o===f.value.toLowerCase():f.parameter==="articleControlTag"?u.some(d=>typeof d=="string"&&Lr(d).includes(Lr(f.value))):!1)}function mf(e,t){let n=e.map(a=>({...a}));return t.filter(a=>(a.isBuyingGuideProduct||a.isReviewProduct)&&a.brand).forEach(a=>{let l=String(a.brand).trim();if(!l)return;let i=n.find(r=>r.formatted_value.toLowerCase()===l.toLowerCase());i?i.count++:n.push({formatted_value:l,count:1})}),n.sort((a,l)=>l.count-a.count)}function Zu(e,t){let n={};return e.forEach(a=>{if(!a.articlepage)return;let l=ui(a),i=ci(l,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});(t.includeDeals===!1||t.includeCollections===!1)&&!i.some(r=>r.type==="buying-guide")&&!Ia(a,t.includeDeals,t.includeCollections,t.website)||i.forEach(r=>{if(di(r,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:o,rawMsrp:u}=Xu(r);if(!ba(o,t.priceRange)||!Aa(o,u,t.discountAmount))return;let c=r.data||{},s=c.brand||c.retailer;if(!s)return;let f=s.replace(/^\d+\.\s*/,"").trim(),d=f.toLowerCase(),m=Object.keys(n).find(v=>v.toLowerCase()===d);m?n[m]++:(f===f.toLowerCase()&&(f=f.replace(/\b\w/g,v=>v.toUpperCase())),n[f]=1)})}),Object.keys(n).map(a=>({formatted_value:a,count:n[a]})).sort((a,l)=>l.count-a.count)}function i2(e){return String(e||"").trim().toLowerCase()}function Wu(e){return(Array.isArray(e)?e:[e]).map(i2).filter(Boolean)}function r2(e){let t=Wu(e.articletype),n=[...Wu(e.articlecontroltag),...Wu(e.articletagtypetaghandle)];return t.includes("deals")||n.some(a=>a.replace(/[\s-]+/g,"_")==="type_deal")}function q0(e){let t=Array.isArray(e)?e[0]:e,n=new Date(String(t||"")).getTime();return Number.isFinite(n)?n:null}function o2(e){for(let t of[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]){let n=q0(t);if(n!==null)return n}return null}function u2(e){for(let t of[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]){let n=q0(t);if(n!==null)return n}return null}function G0(e){return Wu(e.articletype).includes("review")}function c2(e,t=new Date,n=0){let a=r2(e)?1:G0(e)?36:n;if(a<=0)return!0;let l=G0(e)?u2(e):o2(e);if(l===null)return!0;let i=new Date(t);return i.setMonth(i.getMonth()-a),l>=i.getTime()}function Ja(e,t,n=0){return e.filter(a=>c2(a,t,n))}var s2=15;function F0(e){return Array.isArray(e.articlemedia)?e.articlemedia[0]:""}function zr(e){return Array.isArray(e.documenturl)?e.documenturl[0]:e.documenturl||""}function d2(e){return Ot(String(e||"").replace(/^\d+\.\s*/,"").trim())}function $e(e){return Array.isArray(e)?e.map($e).find(Boolean)||"":typeof e=="string"||typeof e=="number"?String(e).trim():""}function hf(e,t=!1){return(t?[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]:[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]).map($e).find(Boolean)||""}function f2(e,t,n){let a=$e(e).match(/^\s*(\d+)\s*[.)]\s*/)?.[1];return a||[t.rank,t.position,t.number,t.productNumber,t.product_number].map($e).map(i=>i.match(/^\s*(\d+)\s*$/)?.[1]||"").find(Boolean)||String(n+1)}function g2(e){let t=$e(e);try{t=new URL(t).pathname}catch{}return t=t.split(/[?#]/)[0].split("/").filter(Boolean).at(-1)||"",t.split(/[-_]+/).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function m2(e){return $e(e.documenthandle)||$e(e.document_handle)||zr(e)||$e(e.documentname)||$e(e.documentnametext)}function h2(e,t){if(!t)return"";let n=t.length>s2?"Ranked":t;return`#${e} ${n}`}function y2(e){if(typeof e=="object"&&e)return String(e["data-model-name"]||"");try{return String(JSON.parse(String(e||""))["data-model-name"]||"")}catch{return""}}function p2(e){let t=e.brand||e.productBrand||e.manufacturer||e.maker||"";return typeof t=="string"?Ot(t.replace(/^\d+\.\s*/,"").trim()):""}function v2(e){let t=e.price&&typeof e.price=="object"?e.price:{},n=Number(t.salePrice||t.price||e.salePrice||e.current_price||(typeof e.price=="number"?e.price:0)),a=Number(t.wasPrice||t.msrp||e.was_price||e.msrp||0),l=e.url||e.link?.url||e.link?.href||"";return{currency:t.currency||e.currency||"",rawMsrp:Number.isFinite(a)?a:0,rawPrice:Number.isFinite(n)?n:0,url:l}}function yf(e){let t=e?.review||{},n=t.rating??t.starRating??t.score??e?.rating??e?.starRating??e?.score,a=Number(n);if(!Number.isFinite(a)||a<=0)return null;let l=a>5?a/20:a;return Math.min(l,5)}function j0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,imageUrl:i}){let r=t.data||{},o=r.review||{},u=d2(r.title),c=f2(r.title,r,a),s=g2(m2(e)),f=zr(e),d=v2(r),m=!!d.url,v=m?d.url:o.url||f,A=i||F0(e);return{id:`airedale-buying-guide-${n}-${a}`,url:v,image:A,fallbackImage:A,title:u,brand:p2(r),productName:u,merchant:"",rawPrice:d.rawPrice,rawMsrp:d.rawMsrp,price:d.rawPrice>0?String(d.rawPrice):"",msrp:d.rawMsrp>0?String(d.rawMsrp):"",currency:d.currency,isoCurrency:"",isCheckPrice:d.rawPrice<=0,savingLabel:"",savingType:"none",isPrime:!1,starRating:yf(r),description:"",text:"",subtitle:Ot(r.subtitle||""),pros:Array.isArray(r.pros)?r.pros:[],cons:Array.isArray(r.cons)?r.cons:[],...l,documentUrl:zr(e),modifiedDate:hf(e),isFeatured:!1,isBuyingGuideProduct:!0,buyingGuideBadge:h2(c,s),hawkModelName:y2(r.hawk),hasCommerceOffer:m,sourceArticleUrl:f}}function b2(e){return fi(e)||$e(e.documentnametext)||$e(e.documentname)}function Iu(e){if(Array.isArray(e))return e.map(Iu).find(Boolean)||"";if(e&&typeof e=="object"){let n=e,a=$e(n["data-widget-type"]||n.dataWidgetType||n.widgetType).toLowerCase(),l=$e(n["data-model-name"]||n.dataModelName||n.modelName);return a==="review"&&l?l:Object.values(n).map(Iu).find(Boolean)||""}if(typeof e!="string")return"";let t=[e,e.replace(/\\"/g,'"').replace(/\\u0022/gi,'"')];for(let n of t){try{let l=Iu(JSON.parse(n));if(l)return l}catch{}let a=n.match(/["']data-widget-type["']\s*:\s*["']review["'][\s\S]{0,1500}?["']data-model-name["']\s*:\s*["']([^"']+)["']/i);if(a?.[1])return a[1].trim()}return""}function fi(e){let t=$e(e.articlehawkmodels);if(t)return t;for(let n of[e.articlepage,e.articlebodypageblock,e.articlepageblock,e.fepjson,e.articlebodyclean]){let a=Iu(n);if(a)return a}return""}function P0(e){return(Array.isArray(e)?e:[e]).map(t=>Ot($e(t))).filter(Boolean)}function Y0({article:e,articleIdentity:t,authorProfile:n}){let a=Ot(fi(e)),l=Ot(b2(e)),i=zr(e),r=F0(e),o=Ot($e(e.productverdict));return{id:`airedale-review-${t}`,url:i,image:r,fallbackImage:r,title:l,brand:"",productName:l,merchant:"",rawPrice:0,rawMsrp:0,price:"",msrp:"",currency:"",isoCurrency:"",isCheckPrice:!0,savingLabel:"",savingType:"none",isPrime:!1,starRating:yf({rating:e.productrating}),description:o,text:o,...n,documentUrl:i,modifiedDate:hf(e,!0),isFeatured:!1,isReviewProduct:!0,hawkModelName:a||l,hasCommerceOffer:!1,sourceArticleUrl:i,pros:P0(e.productpros),cons:P0(e.productcons)}}function Ot(e){return typeof e=="string"?ne(e):e}function V0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,currencyString:i,isoCurrency:r,presentation:o,pricing:u}){let c=t.data||{},{isFeatured:s,externalUrl:f,summaryTitle:d,description:m,imageUrl:v,merchantName:A}=o,{rawPrice:b,rawMsrp:h,savingLabel:g}=u;return{id:`airedale-${n}-${a}`,url:f,image:v,fallbackImage:v,title:Ot(d),brand:Ot(c.brand||""),productName:Ot(c.productName||""),merchant:Ot(A),rawPrice:b,rawMsrp:h,price:b>0?b.toString():"",msrp:h>0?h.toString():"",currency:i,isoCurrency:r,isCheckPrice:!b,savingLabel:g,savingType:h>b?"amount":"none",isPrime:!1,starRating:yf(c),description:Ot(m),text:Ot(c.text||""),...l,documentUrl:zr(e),modifiedDate:hf(e),isFeatured:s,hasCommerceOffer:!!f}}function X0(e,t){let n=t.data||{},a=t.type==="featured-product",l=n.link||{},i=n.image||{};n.brand&&(n.brand=n.brand.replace(/^\d+\.\s*/,"").trim());let r=a?n.url:l.href||null,o=a?n.name||n.brand:n.productName||l.label||(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),u=a?n.strapline||"":n.text||"";if(!a&&!n.productName&&n.text){let f=n.text.split(/<br\s*\/?>/i);if(f.length>1)o=f[0].replace(/<[^>]+>/g,"").trim(),u=f.slice(1).join(" ").replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();else{let d=n.text.match(/<strong>(.*?)<\/strong>/);d&&(o=d[1].replace(/<[^>]+>/g,"").trim(),o.endsWith(":")&&(o=o.slice(0,-1)))}}let c=a?i.mos:i.src||null;c?.startsWith("//")&&(c=`https:${c}`),u=u.replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").replace(/View Deal$/i,"").trim();let s=n.retailer||"";if(!s&&r)try{s=new URL(r).hostname.replace("www.","").split(".")[0],s=s.charAt(0).toUpperCase()+s.slice(1)}catch{}return s||(s="Retailer"),{isFeatured:a,externalUrl:r,summaryTitle:o,description:u,imageUrl:c,merchantName:s}}function Q0(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=0,r=0;a?(i=typeof n.salePrice=="number"&&n.salePrice>0?n.salePrice:typeof n.price=="number"?n.price:0,r=typeof n.salePrice=="number"&&typeof n.price=="number"&&n.price>n.salePrice?n.price:0):(i=l.amount?parseFloat(l.amount):0,r=l.amountWas?parseFloat(l.amountWas):0);let o=0,u="";return i>0&&r>i&&(o=parseFloat((r-i).toFixed(2)),u=`Save ${t}${o}`),{rawPrice:i,rawMsrp:r,savingLabel:u}}function A2(e,t){let n=e.indexOf(t);if(n<1)return"";let a=e[n-1]?.data||{},i=a.slides?.[0]?.image||a.image||a;return i?.src||i?.mos||""}function Hr(e,{activeRegionCode:t,targetIso:n,selectedBrands:a,priceRange:l,discountAmount:i,authorHandle:r,authorName:o,createFallbackIdentity:u=Math.random,includeBuyingGuideProducts:c=!1,includeCollections:s=!0,includeDeals:f=!0,includeReviewProducts:d=!1,website:m}){let v=[],A=new Set;return e.forEach(b=>{if(d&&Kt(b)==="review"){v.push(Y0({article:b,articleIdentity:b.id||u(),authorProfile:Vu(b,r,o)}));return}if(!b.articlepage)return;let h=ui(b),g=ci(h,c,{includeCollections:s,includeDeals:f});(f===!1||s===!1)&&!g.some(y=>y.type==="buying-guide")&&!Ia(b,f,s,m)||g.forEach((y,p)=>{if(y.type==="buying-guide"){v.push(j0({article:b,block:y,articleIdentity:b.id||u(),blockIndex:p,authorProfile:Vu(b,r,o),imageUrl:A2(h,y)}));return}let{isoCurr:C,currencyStr:R}=di(y,t);if(C!==n)return;let T=y.data||{},M=X0(b,y),{externalUrl:S}=M,D=Q0(y,R),{rawPrice:G,rawMsrp:Se}=D;if(!(a&&a.length>0&&!si(T,a))&&ba(G,l)&&Aa(G,Se,i)){if(S){if(A.has(S))return;A.add(S)}v.push(V0({article:b,block:y,articleIdentity:b.id||u(),blockIndex:p,authorProfile:Vu(b,r,o),currencyString:R,isoCurrency:C,presentation:M,pricing:D}))}})}),v}function gi(e,t){return Hr(e,{...t,selectedBrands:[],priceRange:"all",discountAmount:"0"})}function K0(e,t){return Hr(e,t)}function Ur(e){return(Array.isArray(e)?e:[e]).filter(n=>typeof n=="string").map(n=>n.trim())}function Ju(e){return e?.trim().toLowerCase()==="freeform"}function pf(e){return!!e&&!/[^\p{L}\p{N}\s]/u.test(e)}function vf(e){let t=Ur(e.articletag),n=Ur(e.articletaghandle),a=Ur(e.articletagtype),l=new Map;t.forEach((o,u)=>{let c=n[u];!Ju(a[u])||!c||!pf(o)||l.set(c.toLowerCase(),{handle:c,label:o,requestValue:o})});let i=Ur(e.articletagtypetag),r=Ur(e.articletagtypetaghandle);return i.forEach((o,u)=>{let[c,...s]=o.split("|"),[f,...d]=(r[u]||"").split("|"),m=s.join("|").trim(),v=d.join("|").trim();!Ju(c)||!Ju(f)||!v||!pf(m)||l.has(v.toLowerCase())||l.set(v.toLowerCase(),{handle:v,label:m,requestValue:m})}),r.forEach(o=>{let[u,...c]=o.split("|"),s=c.join("|").trim();!Ju(u)||!s||!pf(s)||l.has(s.toLowerCase())||l.set(s.toLowerCase(),{handle:s,label:s})}),[...l.values()]}function Z0(e,t){if(t)return e.find(n=>n.handle.toLowerCase()===t.toLowerCase())?.requestValue}function mi(e,t){let n=(Array.isArray(t)?t:[t]).filter(a=>typeof a=="string").map(a=>a.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(a=>vf(a).some(l=>n.includes(l.handle.toLowerCase())))}function w2(e){let t=new Map;return Array.isArray(e.articlecategory)?(e.articlecategory.forEach(n=>{if(typeof n!="string")return;let a=n.trim();a===a.toLowerCase()&&(a=a.replace(/\b\w/g,l=>l.toUpperCase())),a&&!t.has(a.toLowerCase())&&t.set(a.toLowerCase(),{handle:a,label:a})}),[...t.values()]):[]}function W0(e,t,n){let a={},l={},i={};e.forEach(u=>{let c=[];if(t.includeReviewProducts&&Kt(u)==="review"&&c.push(u.id||u.documenturl||u.documenthandle||""),u.articlepage)try{let s=ui(u),f=ci(s,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});if((t.includeDeals===!1||t.includeCollections===!1)&&!f.some(d=>d.type==="buying-guide")&&!Ia(u,t.includeDeals,t.includeCollections,t.website))return;f.forEach(d=>{if(d.type==="buying-guide"){c.push(d.id||JSON.stringify(d.data||{}));return}if(di(d,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:m,rawMsrp:v}=Xu(d);if(!ba(m,t.priceRange)||!Aa(m,v,t.discountAmount))return;let A=d.data||{};if(t.selectedBrands&&t.selectedBrands.length>0&&!si(A,t.selectedBrands))return;let h=d.type==="featured-product"?A.primaryLink:A.link,g=A.url||A.link&&A.link.url||h&&h.url;c.push(g||JSON.stringify(A))})}catch{}c.length!==0&&n(u).forEach(s=>{let f=s.handle.toLowerCase(),d=Object.keys(a).find(m=>m.toLowerCase()===f);d||(d=s.handle,a[d]=new Set,l[d]=s.label,i[d]=s.requestValue),c.forEach(m=>a[d].add(m))})});let r={};return Object.keys(a).forEach(u=>{r[u]=a[u].size}),{tags:Object.keys(r).map(u=>({handle:u,label:l[u]||u,requestValue:i[u]})).sort((u,c)=>r[c.handle]-r[u.handle]),tagCounts:r}}function $u(e,t){let{tags:n,tagCounts:a}=W0(e,t,w2);return{tags:n.map(l=>l.label),tagCounts:a}}function ec(e,t){let{tags:n,tagCounts:a}=W0(e,t,vf);return{tags:n,tagCounts:a}}function S2(e,t){return e.documentUrl||e.sourceArticleUrl||e.articleId||`deal-${t}`}function hn(e,t,n){if(t!=="mix"||n!=="date_desc")return e;let a=new Map;e.forEach((o,u)=>{let c=S2(o,u),s=a.get(c)||[];s.push(o),a.set(c,s)});let l=[],i=0,r=!0;for(;r;)r=!1,a.forEach(o=>{let u=o[i];u&&(l.push(u),r=!0)}),i+=1;return l}var I0="compact-v1",C2={brand:"",currency:"",hasCommerceOffer:!1,isoCurrency:"",isCheckPrice:!0,isFeatured:!1,isPrime:!1,merchant:"",merchantId:"",msrp:"",price:"",rawMsrp:0,rawPrice:0,savingLabel:"",savingType:"none"},R2={hasCommerceOffer:!0,hawkPricePending:!1,rawMsrp:0,rawPrice:0};function J0(e){return e.map(t=>{if(!t.isReviewProduct)return t;let n=String(t.sourceArticleUrl||t.documentUrl||t.url||""),a=t.fallbackImage??t.image??"",l={...C2,...t,fallbackImage:a,image:t.image??a,sourceArticleUrl:n,documentUrl:t.documentUrl??n,url:t.url??n,title:t.title??t.productName??"",text:t.text??t.description??"",hawkPricePending:t.hawkPricePending??!!t.hawkModelName,pros:t.pros??[],cons:t.cons??[]};return t.hawkRegionalCommerce&&(l.hawkRegionalCommerce=Object.fromEntries(Object.entries(t.hawkRegionalCommerce).map(([i,r])=>{let o=r,u=o.productName??l.productName,c=o.rawPrice??0,s=o.rawMsrp??0;return[i,{...R2,...o,fallbackImage:o.fallbackImage??a,image:o.image??a,productName:u,title:o.title??u??l.title,price:o.price??(c?String(c):""),msrp:o.msrp??(s?String(s):"")}]}))),l})}function tc(e,t,n=100){let a=new Set(e.slice(0,t).map((i,r)=>i.id||`visible-${r}`)),l=e.slice(0,t).filter(i=>i.isReviewProduct).length;return e.filter((i,r)=>{let o=i.id||`visible-${r}`;return a.has(o)?!0:i.isReviewProduct?(l+=1,l<=n):!1})}function $0(e,t){let n=new Map(t.map((a,l)=>[a.id||`enriched-${l}`,a]));return e.map((a,l)=>n.get(a.id||`enriched-${l}`)||a)}var T2=new Set(["deal","featured-product","gallery","buying-guide","text","section"]);function nc(e){return!!e&&typeof e=="object"}function ev(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function tv(e){try{let t=ev(e);if(!Array.isArray(t)||!t[0])return;let n=t[0],a=typeof n=="string"?ev(n):Array.isArray(n)?n:nc(n)&&"type"in n?t:n;if(!Array.isArray(a))return;let l=a.filter(i=>nc(i)&&T2.has(i.type)).map(i=>i.type==="text"&&i.data?{type:"text",data:{paragraphs:Array.isArray(i.data.paragraphs)?i.data.paragraphs.slice(0,3):void 0,text:typeof i.data.text=="string"?i.data.text.slice(0,500):void 0}}:i.type==="section"&&i.data?{type:"section",data:{text:i.data.text,heading:i.data.heading,title:i.data.title}}:i);return l.length>0?[JSON.stringify(l)]:void 0}catch{return}}function nv(e){if(!Array.isArray(e))return[];let t=!1;return e.map(n=>{if(!nc(n))return n;let a=n.articlepage?tv(n.articlepage):void 0,l=!!(n.articleauthormedia||n.articleauthorrole),i=!!(!t&&(n.articleauthorbio||n.articleauthorlongbio||n.articleauthorsocialnetworks));return i&&(t=!0),{id:n.id,articlename:n.articlename,documentname:n.documentname,documentnametext:n.documentnametext,documenthandle:n.documenthandle,articlecategory:n.articlecategory,articletag:n.articletag,articletaghandle:n.articletaghandle,articletagtype:n.articletagtype,articletagtypetag:n.articletagtypetag,articletagtypetaghandle:n.articletagtypetaghandle,articlecontroltag:n.articlecontroltag,articletype:n.articletype,articleauthor:n.articleauthor,articleauthorhandle:n.articleauthorhandle,articleauthortext:n.articleauthortext,...l?{articleauthorrole:n.articleauthorrole,articleauthormedia:n.articleauthormedia}:{},articlestrapline:n.articlestrapline,articlesocialtitle:n.articlesocialtitle,documenturl:n.documenturl,articlemedia:n.articlemedia,articlehawkmodels:n.articlehawkmodels,productrating:n.productrating,productpros:n.productpros,productcons:n.productcons,productverdict:n.productverdict,contentmodifieddate:n.contentmodifieddate,modifieddate:n.modifieddate,createddate:n.createddate,datepublished:n.datepublished,publisheddate:n.publisheddate,...i?{articleauthorbio:n.articleauthorbio,articleauthorlongbio:n.articleauthorlongbio,articleauthorsocialnetworks:n.articleauthorsocialnetworks}:{},...a?{articlepage:a}:{}}})}function av(e){return Array.isArray(e)?e.map(t=>{if(!nc(t))return t;let n=t.articlepage?tv(t.articlepage):void 0;return{id:t.id,articleid:t.articleid,articlename:t.articlename,documentname:t.documentname,documentnametext:t.documentnametext,documenthandle:t.documenthandle,articleauthor:t.articleauthor,articleauthorhandle:t.articleauthorhandle,articleauthortext:t.articleauthortext,articleauthorrole:t.articleauthorrole,articleauthormedia:t.articleauthormedia,articleauthorbio:t.articleauthorbio,articleauthorlongbio:t.articleauthorlongbio,articleauthorsocialnetworks:t.articleauthorsocialnetworks,articlecategory:t.articlecategory,articletag:t.articletag,articletaghandle:t.articletaghandle,articletagtype:t.articletagtype,articletagtypetag:t.articletagtypetag,articletagtypetaghandle:t.articletagtypetaghandle,articletype:t.articletype,articlestrapline:t.articlestrapline,articlesocialtitle:t.articlesocialtitle,documenturl:t.documenturl,articlemedia:t.articlemedia,articlehawkmodels:t.articlehawkmodels,productrating:t.productrating,productpros:t.productpros,productcons:t.productcons,productverdict:t.productverdict,url:t.url,contentmodifieddate:t.contentmodifieddate,modifieddate:t.modifieddate,createddate:t.createddate,datepublished:t.datepublished,publisheddate:t.publisheddate,content:t.content,dek:t.dek,image_thumbnail:t.image_thumbnail,intro:t.intro,paragraphs:t.paragraphs,strapline:t.strapline,subtitle:t.subtitle,title:t.title,...n?{articlepage:n}:{}}}):[]}function hi(e){if(!e?.modifiedDate)return 0;let t=Array.isArray(e.modifiedDate)?e.modifiedDate[0]:e.modifiedDate,n=new Date(t).getTime();return Number.isNaN(n)?0:n}function $a(e){return e?.hasCommerceOffer===!0?!0:e?.hasCommerceOffer===!1?!1:!!(!e?.isBuyingGuideProduct&&!e?.isReviewProduct&&e?.url)}function an(e,t,n=!0){let a=!0;t==="date_desc"?e.sort((l,i)=>hi(i)-hi(l)):t==="price_asc"?e.sort((l,i)=>l.rawPrice-i.rawPrice):t==="price_desc"?e.sort((l,i)=>i.rawPrice-l.rawPrice):t==="discount_desc"?e.sort((l,i)=>{let r=l.rawMsrp>l.rawPrice?l.rawMsrp-l.rawPrice:0;return(i.rawMsrp>i.rawPrice?i.rawMsrp-i.rawPrice:0)-r}):t==="rating_desc"?e.sort((l,i)=>{let r=Number(l.starRating)||0;return(Number(i.starRating)||0)-r||hi(i)-hi(l)}):t==="scored_first"?e.sort((l,i)=>{let r=Number(l.starRating)>0?1:0;return(Number(i.starRating)>0?1:0)-r||hi(i)-hi(l)}):a=!1,a&&n&&e.sort((l,i)=>Number($a(i))-Number($a(l)))}function lv(e,t,n){let a=e;if(!a&&t){let l=n.find(i=>i.toLowerCase()===t?.toLowerCase());l&&(a=l)}return a}function Gr(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(a=>a.articlecategory&&Array.isArray(a.articlecategory)&&a.articlecategory.some(l=>{if(!l||typeof l!="string")return!1;let i=l.toLowerCase(),r=i.split(":::");return i===n||r[0]===n||i.includes(n)}))}function iv(e){let t=bt(e.region);return{activeRegionCode:t,targetIso:nn(t)}}function el(e,t,{discountAmount:n,priceRange:a}={}){let l=!!(a&&a!=="all"),i=!!(n&&n!=="0"&&n!=="all");return!t?.length&&!l&&!i?e:e.filter(r=>!r.isBuyingGuideProduct&&!r.isReviewProduct?!0:t?.length&&!si({brand:r.brand},t)||l&&(!Number(r.rawPrice)||!ba(Number(r.rawPrice),a))?!1:Aa(Number(r.rawPrice)||0,Number(r.rawMsrp)||0,n))}function E2(e,t){let n=e.articleauthorhandle||[],a=e.articleauthor||[],l=e.articleauthortext||[],i=new Set([t.handle.toLowerCase(),t.fullName.toLowerCase(),t.name.toLowerCase()]);return[...n,...a,...l].some(r=>i.has(String(r||"").toLowerCase()))}function bf(e,t,n){let a=Object.fromEntries(e.map(l=>[l.handle,0]));return t.forEach(l=>{let i=gi([l],n).length;i!==0&&e.forEach(r=>{E2(l,r)&&(a[r.handle]+=i)})}),a}function Af(e,t){let n=Yu(e,t.authorHandle,t.authorName),a=t.selectedArticleId?n.filter(v=>v.id===t.selectedArticleId):n,{activeRegionCode:l,targetIso:i}=iv(t),{tags:r,tagCounts:o}=$u(a,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),u=lv(t.activeDealTag,t.query,r),c=Gr(a,u),{tags:s,tagCounts:f}=ec(c,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),m=(t.activeFreeformTags?.length?t.activeFreeformTags:t.activeFreeformTag?[t.activeFreeformTag]:[]).flatMap(v=>{let A=s.find(b=>b.handle.toLowerCase()===v.toLowerCase());return A?[A.handle]:[]});return{activeDealTag:u,activeFreeformTag:m[0]||null,activeFreeformTags:m,activeRegionCode:l,authorArticles:n,freeformTagCounts:f,freeformTags:s,tagCounts:o,tags:r,targetArticles:mi(c,m),targetIso:i}}function ac(e,t,n,a){let l=Zu(e,{activeRegionCode:n,targetIso:a,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),i=Hr(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});an(i,t.sort,t.prioritiseCommercialProducts);let r=hn(el(i,t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange}),t.productSelection,t.sort).map(o=>(o.isBuyingGuideProduct||o.isReviewProduct)&&o.hawkModelName?{...o,hawkPricePending:!0}:o);return{brands:l,displayedDeals:r,extractedDeals:i}}function rv(e,t){let{activeRegionCode:n,targetIso:a}=iv(t),l=kr(e,t.website||"tomsguide"),i=e.filter(o=>gi([o],{activeRegionCode:n,targetIso:a,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}).length>0),r=el(Hr(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange});return{authorCount:Or(l,i).length,deals:r}}function ov({allArticles:e,authorArticles:t,inventoryArticles:n,bakeReviewInventory:a,brands:l,couponMap:i,currentDealTag:r,currentFreeformTags:o,displayedDeals:u,options:c,resultCount:s,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}){let h=kr(e,c.website||"tomsguide"),g=bf(h,n,{activeRegionCode:bt(c.region),targetIso:nn(bt(c.region)),selectedBrands:c.selectedBrands,priceRange:c.priceRange,discountAmount:c.discountAmount,includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}),y=Or(h,e.filter(C=>gi([C],{activeRegionCode:bt(c.region),targetIso:nn(bt(c.region)),includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}).length>0)),p=Number(s)||12;return{activeDealTag:r,activeFreeformTag:o[0]||null,activeFreeformTags:o,allDeals:a?tc(u,p):u,authorArticles:nv(t),authors:Fu(y,g),brands:l,couponMap:i,deals:u.slice(0,p),reviewInventoryBaked:a,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}}function D2(e){return e&&e.widget&&e.widget.data&&Array.isArray(e.widget.data.offers)?e.widget.data.offers:e&&e.data&&Array.isArray(e.data.offers)?e.data.offers:Array.isArray(e)?e:e&&Array.isArray(e.offers)?e.offers:e&&e.offers&&Array.isArray(e.offers.offer)?e.offers.offer:e&&Array.isArray(e.data)?e.data:[]}function uv(e,t,n){let a={...n},l=new Set;return D2(e).forEach(r=>{let o="";r.merchant_name?o=r.merchant_name:r.merchant&&r.merchant[0]&&r.merchant[0].name?o=r.merchant[0].name:r.merchant&&r.merchant.name?o=r.merchant.name:r.retailer&&(o=r.retailer),o&&l.add(o.toLowerCase())}),t.forEach(r=>{a[r]=l.has(r.toLowerCase())?"has":"none"}),a}function cv(e){let t=[];return e?.widget?.data?.offers?t=e.widget.data.offers:e?.data?.offers?t=e.data.offers:Array.isArray(e)?t=e:e?.offers?.offer?t=Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers&&(t=Array.isArray(e.offers)?e.offers:[e.offers]),t}async function sv({couponMap:e,couponUrl:t,fetcher:n=fetch,merchants:a}){if(!t)return e;try{let l=await n(t.toString());return uv(await l.json(),a,e)}catch{let l={...e};return a.forEach(i=>{l[i]="none"}),l}}function dv({enrichingBuyingGuides:e,error:t,loading:n,loadingMore:a,refreshingFeed:l}){return t?"error":a?"loading_more":n?"loading_inventory":l?"refreshing_inventory":e?"enriching_visible_cards":"ready"}function fv(e,t){let n=Yu(Ja(e),t.authorHandle,t.authorName),a=bt(t.region),l=nn(a),{tags:i,tagCounts:r}=$u(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),o=Zu(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),{tags:u,tagCounts:c}=ec(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),s=K0(n,{activeRegionCode:a,targetIso:l,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});an(s,t.sort,t.prioritiseCommercialProducts);let f=hn(s,t.productSelection,t.sort);return{authorArticles:n,brands:o,deals:f,tagCounts:r,tags:i,freeformTagCounts:c,freeformTags:u}}var x2="fc-author-commerce-widget",yn="airedale-feeds";var lc=null;function gv(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function wf(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error),e.onabort=()=>n(e.error)})}function Sf(){return lc||(typeof window>"u"||typeof window.indexedDB>"u"?Promise.resolve(null):(lc=new Promise(e=>{let t=window.indexedDB.open(x2,13);t.onupgradeneeded=()=>{let n=t.result;n.objectStoreNames.contains(yn)||n.createObjectStore(yn,{keyPath:"key"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),lc))}function mv({authorHandle:e,authorName:t,includeBuyingGuideProducts:n,includeCollections:a,includeDeals:l,includeReviewProducts:i,articleCategory:r,articleTag:o,pageStarts:u,reviewPageStarts:c,loadAllReviewPages:s,website:f}){return["v13",f||"tomsguide",e||"",t||"",n?"buying-guides":"",a===!1?"no-collections":"collections",l===!1?"no-deals":"deals",i?"reviews":"",r||"",o||"",u?.join(",")||"",c?.join(",")||"",s===!1?"review-pages-partial":""].map(d=>encodeURIComponent(d)).join("|")}async function M2(e){let t=await Sf();if(!t)return;let n=t.transaction(yn,"readwrite"),a=wf(n);n.objectStore(yn).delete(e),await a}async function hv(e,t=Date.now()){try{let n=await Sf();if(!n)return null;let a=n.transaction(yn,"readonly"),l=await gv(a.objectStore(yn).get(e));if(!l||l.schemaVersion!==13||!Array.isArray(l.articles)||l.articles.length===0)return null;let i=Math.max(0,t-l.cachedAt);return i>864e5?(M2(e),null):{articles:l.articles,cachedAt:l.cachedAt,isFresh:i<=6e5}}catch{return null}}async function _2(e){let t=e.transaction(yn,"readwrite"),n=wf(t),a=t.objectStore(yn);(await gv(a.getAll())).sort((i,r)=>r.cachedAt-i.cachedAt).slice(10).forEach(i=>a.delete(i.key)),await n}async function yv(e,t,n=Date.now()){if(t.length!==0)try{let a=await Sf();if(!a)return;let l=a.transaction(yn,"readwrite"),i=wf(l);l.objectStore(yn).put({articles:t,cachedAt:n,key:e,schemaVersion:13}),await i,await _2(a)}catch{}}var Cf=[];var Ef=[],Rf=0;function pv(){for(;Rf<4&&Ef.length>0;){let e=Ef.shift();if(!e)return;Rf+=1,e.run().then(e.resolve,e.reject).finally(()=>{Rf-=1,pv()})}}function B2(e){return new Promise((t,n)=>{Ef.push({reject:n,resolve:t,run:e}),pv()})}function Tf(e){Cf.push(e),Cf.length>100&&Cf.shift()}async function ic(e,t,n=4){let a=new Array(e.length),l=0,i=Math.min(Math.max(1,n),e.length);return await Promise.all(Array.from({length:i},async()=>{for(;l<e.length;){let r=l;l+=1,a[r]=await t(e[r],r)}})),a}async function yi(e,t){return B2(async()=>{let n=t.fetcher||fetch,a=Date.now(),l=new AbortController,i=!1,r=()=>l.abort();if(t.signal?.aborted)return Tf({durationMs:0,outcome:"aborted",source:t.source,startedAt:a}),{data:null,response:null};t.signal?.addEventListener("abort",r,{once:!0});let o=setTimeout(()=>{i=!0,l.abort()},8e3);try{let u=await n(e,{signal:l.signal}),c=u.ok?await u.json():null;return Tf({durationMs:Date.now()-a,outcome:u.ok?"succeeded":"failed",source:t.source,startedAt:a}),{data:c,response:u}}catch{return Tf({durationMs:Date.now()-a,outcome:i?"timed_out":t.signal?.aborted?"aborted":"failed",source:t.source,startedAt:a}),{data:null,response:null}}finally{clearTimeout(o),t.signal?.removeEventListener("abort",r)}})}var xf="https://airedale.futurecdn.net/feeds/feed_1786707986217.json",N2="https://airedale.futurecdn.net/feeds/feed_1786702796175.json",O2="https://airedale.futurecdn.net/feeds/feed_1787582137748.json",k2=2,Df=new Map,vv=new Map;function L2(e){return!e.parameter||!e.value?"":`&${e.parameter}=${encodeURIComponent(e.value)}`}function z2(e,t="",n=!1,a,l,{includeCollections:i=!0,includeDeals:r=!0}={},o){let u=Ku(e,{includeBuyingGuideProducts:n,includeCollections:i,includeDeals:r}),c=a?`&articleCategory=${encodeURIComponent(a)}`:"",s=o?`&articleTag=${encodeURIComponent(o)}`:"";return u.scopes.flatMap(f=>(l||u.pageStarts).map(d=>`${xf}?site=${e}&limit=${50}&start=${d}${L2(f)}${t}${c}${s}`))}function bv(e,t="",n,a=0,l){let i=e==="pcgamer"?"&articleControlTag=channel_gaming_hardware":"",r=n?`&articleCategory=${encodeURIComponent(n)}`:"",o=l?`&articleTag=${encodeURIComponent(l)}`:"";return`${N2}?site=${encodeURIComponent(e)}&articleType=review&limit=${50}&start=${a}${i}${t}${r}${o}`}function H2(e,t){return t!=="pcgamer"?e:e.map(n=>{let a=Array.isArray(n.articlecontroltag)?n.articlecontroltag:[];return a.some(l=>String(l).replace(/[^a-z0-9]/gi,"").toLowerCase()==="channelgaminghardware")?n:{...n,articlecontroltag:[...a,"channel_gaming_hardware"]}})}function U2(e,t){return`${O2}?site=${encodeURIComponent(e)}&documentHandle=${encodeURIComponent(t)}&limit=1`}async function G2(e,t){let n=`${e}|${t}`,a=vv.get(n);if(a)return a;let l=yi(U2(e,t),{source:"review-model-resolver"}).then(({data:i})=>i?ff(i)[0]:null).then(i=>i?fi(i):"").catch(()=>"");return vv.set(n,l),l}async function Mf(e,t,n,a="date_desc"){let l=o=>{let u=[o.datepublished,o.publisheddate,o.createddate,o.contentmodifieddate,o.modifieddate].find(s=>s!=null&&String(s).trim()),c=new Date(Array.isArray(u)?u[0]:u).getTime();return Number.isFinite(c)?c:0},i=o=>{let u=Array.isArray(o.productrating)?o.productrating[0]:o.productrating;return Number(u)||0},r=e.filter(o=>Kt(o)==="review"&&!fi(o)&&typeof o.documenthandle=="string"&&o.documenthandle.trim()).sort((o,u)=>{let c=i(o),s=i(u);return a==="rating_desc"?s-c||l(u)-l(o):a==="scored_first"&&+(s>0)-+(c>0)||l(u)-l(o)}).slice(0,n);return await Promise.all(r.map(async o=>{let u=await G2(t,o.documenthandle);u&&(o.articlehawkmodels=[u])})),e}function Sv(e,t){let n=()=>{yv(e,av(t))};if(typeof window<"u"&&typeof window.requestIdleCallback=="function"){window.requestIdleCallback(n,{timeout:2e3});return}setTimeout(n,0)}function q2(e,t){return e&&e!=="all-authors"?`&articleAuthorHandle=${encodeURIComponent(e)}`:t&&t!=="All authors"&&t!=="all-authors"?`&articleAuthor=${encodeURIComponent(t)}`:""}function P2({articleCategory:e,articleTag:t,authorParameter:n}){return!!(n&&!e&&!t)}async function Cv({authorHandle:e,authorName:t,fallbackAuthorName:n,includeBuyingGuideProducts:a,includeCollections:l,includeDeals:i,includeReviewProducts:r,onProgress:o,articleCategory:u,articleTag:c,pageStarts:s,reviewPageStarts:f,loadAllReviewPages:d,signal:m,throwOnFailure:v,website:A}){let b=A||"tomsguide",h=q2(e,t),g=[],y=!1,p=!0,C=S=>U0(S,b,a,r,l,i),R=()=>z0(g).map(S=>{let D=fi(S);return D&&!String(S.articlehawkmodels||"").trim()?{...S,articlehawkmodels:[D]}:S}).filter(C),T=()=>{let S=R();S.length>0&&o?.(S)};try{let S=z2(b,h,a,u,s,{includeCollections:l,includeDeals:i},c),D=[];r&&(f||[0]).forEach(q=>{let Ge=bv(b,h,u,q,c);D.push(Ge),S.push(Ge)});let G=async(q,Ge=D.includes(q)?"review-feed":"author-feed")=>{let pe=await yi(q,{signal:m,source:Ge});for(let At=0;At<k2&&!pe.response?.ok&&!m?.aborted;At+=1)pe=await yi(q,{signal:m,source:Ge});let{data:De,response:et}=pe,tl={data:De,isPcGamerHardwareReviewFeed:b==="pcgamer"&&Ge.startsWith("review-feed"),response:et,reviewTotalCount:D.includes(q)&&Number(et?.headers.get("x-total-count"))||null};if(De){let At=ff(De);g.push(...tl.isPcGamerHardwareReviewFeed?H2(At,b):At)}return tl},Se=S.filter(q=>Number(new URL(q).searchParams.get("start")||0)===0),ie=S.filter(q=>!Se.includes(q)),Y=await ic(Se,q=>G(q));T();let ze=await ic(ie,q=>G(q)),Ee=[...Y,...ze];y=Ee.length>0&&Ee.every(q=>!q.response?.ok);let ut=Ee.find(q=>q.reviewTotalCount!==null)?.reviewTotalCount;if(d!==!1&&f&&ut&&ut>f.length*50){let q=new Set(f),Ge=[];for(let De=0;De<ut;De+=50)q.has(De)||Ge.push(De);let pe=await ic(Ge,async De=>await G(bv(b,h,u,De,c),"review-feed-page"));Ee.push(...pe)}p=Ee.every(q=>q.response?.ok)}catch(S){p=!1}if(v&&y)throw new Error("The author feed could not be loaded");let M=R();if(M.length===0&&P2({authorParameter:h,articleCategory:u,articleTag:c}))try{let S=await yi(`${xf}?site=${b}&limit=150${h}`,{signal:m,source:"author-feed-fallback"});if(!S.response?.ok&&n&&(S=await yi(`${xf}?site=${b}&limit=150&articleAuthor=${encodeURIComponent(n)}`,{signal:m,source:"author-feed-fallback"})),S.data){let D=S.data,G=Array.isArray(D)?D:D.data||[];G.length>0&&(M=G.slice(0,150))}}catch(S){}return{articles:M.filter(C),complete:!m?.aborted&&p}}function Av(e,t){let n=Df.get(e);if(n)return n;let a=Cv(t).then(l=>(l.complete&&l.articles.length>0&&Sv(e,l.articles),l)).finally(()=>{Df.delete(e)});return Df.set(e,a),a}async function wv(e,t){let n=await Cv(t);return n.complete&&n.articles.length>0&&Sv(e,n.articles),n}async function Rv({onBackgroundRefresh:e,onProgress:t,...n}){let a=mv(n),l=await hv(a);return l?(t?.(l.articles),l.isFresh||(n.signal?wv(a,n):Av(a,n)).then(({articles:o,complete:u})=>{u&&o.length>0&&e?.(o)}),l.articles):(await(n.signal?wv(a,{...n,onProgress:t}):Av(a,{...n,onProgress:t}))).articles}function Tv(e,t){let n=e.shipping?.prime===!0,a=e.merchant?.name||e.merchant_name||e.retailer||"Retailer";typeof e.merchant=="string"&&(a=e.merchant);let l=null,i=0,r=String(e.model_id||e.id||"");if(r&&t)if(t[r]&&t[r].score!=null)l=parseFloat(t[r].score);else{let o=Object.values(t).find(u=>String(u.model_id)===r||String(u.id)===r);o&&o.score!=null&&(l=parseFloat(o.score))}return l!=null&&(i=Math.round((l>10?l/20:l/2)*2)/2),{isPrime:n,merchant:a,starRating:i>0?i:null}}function Ev(e){let t=String(e.price||e.current_price||"0"),n=String(e.was_price||e.msrp||e.original_price||"0"),a=parseFloat(t.replace(/[^0-9.]/g,""))||0,l=parseFloat(n.replace(/[^0-9.]/g,""))||0,i=a===0||t==="0.00"||t==="0",r=e.currency&&typeof e.currency=="string"?e.currency:e.currency_symbol&&typeof e.currency_symbol=="string"?e.currency_symbol:"$",o=ne(e.percentage_saving_label||"");!o&&l>a&&a>0&&(o=Math.round((l-a)/l*100)+"% OFF");let u=r;return u.includes("&")&&(u.includes("36")?u="$":u.includes("163")||u.includes("pound")?u="\xA3":(u.includes("8364")||u.includes("euro"))&&(u="\u20AC")),{rawPrice:a,rawMsrp:l,currency:u,isCheckPrice:i,savingLabel:o}}function Dv({query:e,region:t,retailer:n,selectedBrands:a,offerType:l,priceRange:i,discountAmount:r,resultCount:o}){let u=new URL("https://search-api.fie.future.net.uk/widget.php");if(u.searchParams.append("model_name",e),t&&t!=="auto"&&u.searchParams.append("area",t),n&&u.searchParams.append("filter_merchant_name",n),a&&a.length>0&&u.searchParams.append("filter_label[text_brand]",a.join(",")),l&&u.searchParams.append("offer",l),i&&i!=="all"){if(i==="under50")u.searchParams.append("filter_max_price","50");else if(i==="over50")u.searchParams.append("filter_min_price","50");else if(i==="over30")u.searchParams.append("filter_min_price","30");else if(i==="over500")u.searchParams.append("filter_min_price","500");else if(i.includes("_")){let[c,s]=i.split("_");c&&u.searchParams.append("filter_min_price",c),s&&u.searchParams.append("filter_max_price",s)}}if(r&&r!=="0"){let c=(100-parseInt(r))/100;u.searchParams.append("min_discount_ratio",c.toString())}return u.searchParams.append("filter_product_types","deals"),u.searchParams.append("rows",String(o||"12")),u}function xv(e){return e?.widget?.data?.offers?e.widget.data.offers:e?.data?.offers?e.data.offers:Array.isArray(e)?e:e?.offers?.offer?Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers?Array.isArray(e.offers)?e.offers:[e.offers]:[]}function Mv(e){let t=[];return e.forEach(n=>{let a=[];Array.isArray(n.offers)?a=n.offers:Array.isArray(n.offer)?a=n.offer:n.offers&&typeof n.offers=="object"?a=[n.offers]:n.offer&&typeof n.offer=="object"&&(a=[n.offer]),a.length>0?a.forEach(l=>{t.push({...n,...l})}):t.push(n)}),t}function _v(e){return e?.widget?.data?.model_info?e.widget.data.model_info:e?.data?.model_info?e.data.model_info:{}}var _f=new Map,F2=3e3,j2=["GB","US"],Bv=6,Y2=["brand","currency","fallbackImage","hasCommerceOffer","hawkPricePending","image","isCheckPrice","merchant","merchantId","modelId","msrp","price","productKey","productName","rawMsrp","rawPrice","savingLabel","title","url"];function Bf(e){return String(e||"").trim().toLowerCase()}function Lv(e){return e==="UK"?"GB":e}function V2(e,t){let n=String(t||"").trim().toUpperCase(),l={AU:["A$","AUD"],CA:["CA$","CAD"],DE:["\u20AC","EUR"],ES:["\u20AC","EUR"],FR:["\u20AC","EUR"],GB:["\xA3","GBP","GB\xA3"],IT:["\u20AC","EUR"],NL:["\u20AC","EUR"],US:["$","USD","US$"]}[e];return!l||l.includes(n)}function Nv(e,t){return String(e.id||`hawk-deal-${t}`)}function X2(e){return e.map(t=>({...t,hasCommerceOffer:!1,hawkPricePending:!!t.hawkModelName,image:t.fallbackImage||t.image||"",isCheckPrice:!0,merchant:"",merchantId:"",msrp:"",price:"",productKey:"",rawMsrp:0,rawPrice:0,savingLabel:"",url:t.sourceArticleUrl||t.documentUrl||t.url}))}function Q2(e){return Y2.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}function zv(e){return!!((e.isBuyingGuideProduct||e.isReviewProduct)&&e.hawkModelName)}function K2(e){return e.model_image_url||e.model_image||e.product_image||e.image_url||e.image||""}function Z2(e){return e.link||e.url||e.offer_link||""}function W2(e,t){let n=String(t.model_id||t.id||"");return n&&e[n]?e[n]:Object.values(e).find(a=>String(a?.model_id||a?.id||"")===n)||{}}async function Ov(e,t,n){let a=`${t}|${Bf(e)}`;return _f.has(a)||_f.set(a,(async()=>{let l;try{let i=new AbortController;l=setTimeout(()=>i.abort(),F2);let r=await n(Dv({query:e,region:t,resultCount:12}).toString(),{signal:i.signal});if(!r.ok)return null;let o=await r.json(),u=Mv(xv(o)),c=Bf(e),s=u.find(m=>Bf(m.model_name||m.model)===c)||u[0]||null;if(!s)return null;let f=_v(o),d=W2(f,s);return{brand:String(d?.brand||s.brand||"").trim(),modelInfo:f,offer:s}}catch{return null}finally{l&&clearTimeout(l)}})()),_f.get(a)}function kv(e,t,n){return e.map(a=>{let l=String(a.hawkModelName);if(!zv(a)||!t.has(l))return a;let i=t.get(l);if(!i)return{...a,hawkPricePending:!1};let{offer:r}=i.lookup,o=Ev(r),u=Tv(r,i.lookup.modelInfo),c=K2(r),s=Z2(r),f=ne(String(r.model_name||r.model||a.hawkModelName||a.productName||a.title||"").trim());return!(i.region===n&&s&&V2(n,o.currency))?{...a,brand:i.lookup.brand||a.brand,fallbackImage:c?a.image:a.fallbackImage,hawkPricePending:!1,image:c||a.image,productName:f||a.productName,title:f||a.title}:{...a,brand:i.lookup.brand||r.brand||a.brand,currency:o.currency||a.currency,fallbackImage:c?a.image:a.fallbackImage,hasCommerceOffer:!0,hawkPricePending:!1,image:c||a.image,isCheckPrice:o.isCheckPrice,merchant:u.merchant||a.merchant,merchantId:typeof r.merchant=="object"&&r.merchant?.id||"",modelId:r.model_id||"",msrp:o.rawMsrp>0?String(o.rawMsrp):"",price:o.rawPrice>0?String(o.rawPrice):"",productKey:r.product_key||"",productName:f||a.productName,rawMsrp:o.rawMsrp,rawPrice:o.rawPrice,savingLabel:o.savingLabel,title:f||a.title,url:s||a.url}})}async function pi(e,t,n=fetch,a,l=[],i){let r=Lv(t),o=new Map,u=e.filter(zv).map(f=>String(f.hawkModelName)),c=new Set(u),s=Array.from(new Set([...l.filter(f=>c.has(f)),...u])).slice(0,a);for(let f=0;f<s.length;f+=Bv)await Promise.all(s.slice(f,f+Bv).map(async d=>{let m=await Ov(d,r,n),v=m||r==="GB"?null:await Ov(d,"GB",n);o.set(d,m?{lookup:m,region:r}:v?{lookup:v,region:"GB"}:null),i?.(kv(e,o,r))}));return kv(e,o,r)}async function Hv(e,t=fetch){let n=X2(e),a=await Promise.all(j2.map(async i=>[i,await pi(n,i,t)])),l=new Map;return a.forEach(([i,r])=>{r.forEach((o,u)=>{if(!o.hasCommerceOffer)return;let c=Nv(o,u),s=l.get(c)||{};s[i]=Q2(o),l.set(c,s)})}),e.map((i,r)=>{let o=l.get(Nv(i,r));return o?{...i,hawkRegionalCommerce:o}:i})}function Nf(e,t){let n=Lv(t);return e.map(a=>{let l=a.hawkRegionalCommerce?.[n];return l?{...a,...l,hawkPricePending:!1}:a})}function Uv(e,t){let n=Array.from(new Set(e.map(i=>i.merchant).filter(Boolean))),a={};if(n.forEach(i=>{a[i]="loading"}),n.length===0)return{merchants:n,couponMap:a,couponUrl:null};let l=new URL("https://search-api.fie.future.net.uk/widget.php");return l.searchParams.append("model_name","Everything"),l.searchParams.append("filter_merchant_name",n.join(",")),l.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),l.searchParams.append("sort","voucher"),l.searchParams.append("rows","120"),l.searchParams.append("origin","widgets-clientside"),l.searchParams.append("combine_product_types","1"),l.searchParams.append("language","en-GB"),l.searchParams.append("all_filters","false"),l.searchParams.append("exclude_unlabelled","false"),l.searchParams.append("include_specs","false"),t&&t!=="auto"&&l.searchParams.append("area",t),{merchants:n,couponMap:a,couponUrl:l}}function Gv(e,t){let n=new URL("https://search-api.fie.future.net.uk/widget.php");return n.searchParams.append("model_name","Everything"),n.searchParams.append("language","en-GB"),t&&t!=="auto"&&n.searchParams.append("area",t),n.searchParams.append("combine_product_types","1"),n.searchParams.append("filter_merchant_name",e),n.searchParams.append("all_filters","false"),n.searchParams.append("exclude_unlabelled","false"),n.searchParams.append("include_specs","false"),n.searchParams.append("sort","voucher"),n.searchParams.append("distinct_merchants","natural"),n.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),n.searchParams.append("rows","50"),n.searchParams.append("origin","widgets-clientside"),n}function Of(e,t,n=!0){if(!e?.length)return e||[];if(t==="date_desc"&&!n)return e;let a=[...e];return an(a,t,n),a}function oc(e,t,n,a=!0){if(n!=="date_desc"||!e?.length)return t;let l=(c,s)=>String(c.id||s),i=new Map(t.map((c,s)=>[l(c,s),c])),r=new Set,o=e.flatMap((c,s)=>{let f=l(c,s);r.add(f);let d=i.get(f);return d?[d]:[]}),u=t.filter((c,s)=>!r.has(l(c,s)));return a?[...o.filter($a),...u.filter($a),...o.filter(c=>!$a(c)),...u.filter(c=>!$a(c))]:[...o,...u]}function qv({activeDealTag:e,activeFreeformTag:t,clickedAuthorOverride:n,compactEmbed:a,compactInventoryExplored:l,compactLoadRequested:i,initialActiveDealTag:r,initialActiveFreeformTag:o,reviewInventoryBaked:u}){return!!(a&&u&&!n&&!i&&!l&&(!e||e===r)&&(!t||t===o))}var Pv=[0,50,100,150,200,250,300,350,400,450],kf=4;function Fv(e){return(Array.isArray(e)?e:[e]).reduce((n,a)=>{if(typeof a!="string"||!a.trim())return n;let l=a.trim();return n.some(i=>i.toLowerCase()===l.toLowerCase())?n:[...n,l]},[])}function J2(e,t){return e.length===t.length&&e.every((n,a)=>n===t[a])}function Lf(e){return e.map(t=>t.trim().toLowerCase()).sort().join("|")}function zf(e){let t=e.initialData,n=qu(e),a=!!(e.preloadReviewInventory&&!n),l=!!(e.preloadReviewInventory&&e.includeReviewProducts&&!e.compactEmbed),i=n?Number(e.resultCount)||12:100,r=n?!1:e.prioritiseCommercialProducts,o=bt(e.region),u=Nf(t?.allDeals||t?.deals||[],o).filter(_=>L0(_,o)),c=va(n?"date_desc":e.sort,!Nr(e)),s=!!(e.priceRange&&e.priceRange!=="all")||!!(e.discountAmount&&e.discountAmount!=="0"&&e.discountAmount!=="all"),f=Ja(t?.authorArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),d=Ja(t?.authorInteractionArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),[m,v]=(0,N.useState)(()=>Of(u,c,r)),[A,b]=(0,N.useState)(t?.totalDealCount??t?.allDeals?.length??t?.deals?.length??0),[h,g]=(0,N.useState)(t?.totalAuthorCount??t?.authors?.length??0),[y,p]=(0,N.useState)(!t),[C,R]=(0,N.useState)(!1),[T,M]=(0,N.useState)(!1),[S,D]=(0,N.useState)(!1),[G,Se]=(0,N.useState)(t?.couponMap||{}),[ie,Y]=(0,N.useState)(f),[ze,Ee]=(0,N.useState)(f),[ut,q]=(0,N.useState)(t?.tags||[]),[Ge,pe]=(0,N.useState)(t?.tagCounts||{}),[De,et]=(0,N.useState)(t?.freeformTags||[]),[tl,At]=(0,N.useState)(t?.freeformTagCounts||{}),[Pr,qe]=(0,N.useState)(t?.brands||[]),[x,X]=(0,N.useState)(()=>{let _=t?.activeDealTag||e.query;return _&&_.toLowerCase()!=="everything"?_:null}),[$,nl]=(0,N.useState)(()=>Fv(t?.activeFreeformTags||t?.activeFreeformTag)),[r1,vi]=(0,N.useState)(f),[cc,al]=(0,N.useState)(null),[tt,Fr]=(0,N.useState)(!1),[ll,jr]=(0,N.useState)(""),[il,Yr]=(0,N.useState)(""),[o1,u1]=(0,N.useState)(0),[Zt,sc]=(0,N.useState)(e.resultCount?parseInt(e.resultCount):12),[Pf,dc]=(0,N.useState)(!1),[c1,Vr]=(0,N.useState)(null),[fc,s1]=(0,N.useState)(!1),[gc,d1]=(0,N.useState)([0]),Xr=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`:""),mc=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}|age-${e.editorialMaxAgeMonths||"none"}`:""),f1=(0,N.useRef)(e.website||"tomsguide"),hc=(0,N.useRef)(e.website||"tomsguide"),Ff=(0,N.useRef)(u.length>0),jf=(0,N.useRef)(null),rl=(0,N.useRef)(new Map),g1=(0,N.useRef)({activeDealTag:String(x||"").trim().toLowerCase(),freeformTags:Lf(Fv(t?.activeFreeformTags||t?.activeFreeformTag)),discountAmount:e.discountAmount,priceRange:e.priceRange}),jn=(0,N.useRef)(!1),xe=(0,N.useRef)(!1),bi=(0,N.useRef)(!1),Yf=(_,re,I=tt?ll:e.authorHandle,ve=tt?il:e.authorName)=>[e.website||"tomsguide",I||"",ve||"",bt(e.region),String(_||"").trim().toLowerCase(),Lf(re),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),Vf=(_,re)=>{let I=g1.current;return!!(e.compactEmbed&&t?.brands?.length&&String(_||"").trim().toLowerCase()===I.activeDealTag&&Lf(re)===I.freeformTags&&e.priceRange===I.priceRange&&e.discountAmount===I.discountAmount)},Qr=(_,re)=>{let I=rl.current.get(Yf(_,re));if(I){qe(I);return}if(Vf(_,re)){qe(t?.brands||[]);return}},ol=()=>jn.current||n?void 0:e.productSelection;(0,N.useEffect)(()=>{al(null)},[e.authorName,e.authorHandle]),(0,N.useLayoutEffect)(()=>{let _=e.website||"tomsguide";hc.current!==_&&(hc.current=_,v(()=>[]),Y(()=>[]),Ee(()=>[]),vi(()=>[]),q(()=>[]),pe({}),et(()=>[]),At({}),qe(()=>[]),rl.current.clear(),Se({}),Fr(!1),jr(""),Yr(""),al(null),X(null),nl([]),g(0),b(0),M(!1),dc(!1),Vr(null),bi.current=!1,R(!0),p(!0))},[e.website]),(0,N.useEffect)(()=>{e.compactEmbed||typeof document>"u"||setTimeout(()=>{document.dispatchEvent(new CustomEvent("processArticle"))},100)},[m,Zt,e.query,x,$]),(0,N.useEffect)(()=>{e.resultCount&&(sc(parseInt(e.resultCount,10)||12),Vr(null))},[e.resultCount]),(0,N.useEffect)(()=>{Vr(null)},[x,$,e.authorHandle,e.authorName,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands,e.sort]),(0,N.useEffect)(()=>{if(!t||!e.includeBuyingGuideProducts&&!e.includeReviewProducts||e.compactEmbed&&(xe.current||e.refreshDealsOnViewport))return;let _=bt(e.region),re=Nf(t.allDeals||t.deals||[],_);if(_==="unavailable"){let Wt=re.map(ln=>(ln.isBuyingGuideProduct||ln.isReviewProduct)&&ln.hawkModelName?{...ln,hawkPricePending:!1}:ln);an(Wt,c,r),v(hn(Wt,ol(),c));return}let I=el(re,e.selectedBrands),ve=Number(e.resultCount)||12,Sa=typeof navigator>"u"?void 0:navigator.connection,Ca=!Sa?.saveData&&!Sa?.effectiveType?.includes("2g")&&(!e.compactEmbed||!!e.warmInventory),wi=s?I:t.reviewInventoryBaked?I.slice(0,Zt+(Ca?ve:0)):re;if(!wi.some(Wt=>(Wt.isBuyingGuideProduct||Wt.isReviewProduct)&&Wt.hawkModelName))return;let cl=!0;return M(!0),pi(wi,_).then(Wt=>{if(!cl)return;let ln=t.reviewInventoryBaked?$0(re,Wt):Wt,Zr=el(ln,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(nt=>(nt.isBuyingGuideProduct||nt.isReviewProduct)&&nt.hawkModelName?{...nt,hawkPricePending:!1}:nt);an(Zr,c,r),v(hn(Zr,ol(),c)),qe(nt=>t?.brands?.length?nt:mf(nt,Wt))}).finally(()=>{cl&&M(!1)}),()=>{cl=!1}},[t,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,e.selectedBrands,e.discountAmount,e.priceRange,c,e.productSelection,Zt,e.resultCount,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,x,$]),(0,N.useEffect)(()=>{let _=!0,re=new AbortController,I=bi.current,ve=!e.refreshDealsOnViewport&&qv({activeDealTag:x,activeFreeformTag:$[0]||null,clickedAuthorOverride:tt,compactEmbed:e.compactEmbed,compactInventoryExplored:xe.current,compactLoadRequested:fc,initialActiveDealTag:t?.activeDealTag,initialActiveFreeformTag:t?.activeFreeformTag,reviewInventoryBaked:t?.reviewInventoryBaked}),Sa=u.length>0,Ca=!!(n&&e.compactEmbed&&!xe.current),wi=!!(Ca&&e.warmInventory&&ie.length===0&&m.length>0),cl=!!(ve||e.compactEmbed&&Sa&&ie.length===0&&!tt&&!fc&&!xe.current&&!e.refreshDealsOnViewport&&(!n||!e.warmInventory));return!cl&&!I&&!wi&&(R(!0),e.compactEmbed&&xe.current&&v([])),(async()=>{D(!1),M(!1);let ln=m.length>0||ut.length>0||De.length>0||Pr.length>0,Zr=cl;try{if(!e.authorName&&!e.authorHandle){v([]),Y([]),vi([]),q([]),et([]),qe([]),al(null),X(null),nl([]),p(!0);return}let nt=tt?ll:e.authorHandle,Wr=tt?il:e.authorName,Ir=`${e.website||"tomsguide"}|${nt||""}|${Wr||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`,yc=`${Ir}|${e.compactEmbed&&x||""}|${e.compactEmbed?$.join(","):""}|${e.compactEmbed&&xe.current?"expanded":e.refreshDealsOnViewport?"viewport-refresh":"initial"}|lightweight-pages-${Ca?gc.join(","):"all"}|age-${e.editorialMaxAgeMonths||"none"}`,It=ie,Kf=ut,O1=Z0(De,$.length===1?$[0]:null),Zf=()=>({activeDealTag:x,activeFreeformTag:$[0]||null,activeFreeformTags:$,authorHandle:nt,authorName:Wr,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,priceRange:e.priceRange,prioritiseCommercialProducts:r,productSelection:ol(),query:e.query,region:e.region,selectedArticleId:cc,selectedBrands:e.selectedBrands,sort:c,website:e.website}),Wf=mc.current!==yc||It.length===0,Ra=[],pc=!1,If=(de,zt=!1)=>{if(!_||zt&&pc)return;let pn=el(de,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange});an(pn,c,r);let Ei=hn(pn,ol(),c);v(oc(Ra,Ei,c,r))};if(Zr){p(!1),R(!1);return}if(Wf){let de=Xr.current.split("|")[0],zt=e.website||"tomsguide",pn=!!(Xr.current&&de!==zt);!I&&!wi&&R(!!e.compactEmbed||!ln),pn&&(It=[],Kf=[],v(()=>[]),Y(()=>[]),Ee(()=>[]),vi(()=>[]),q(()=>[]),pe({}),et(()=>[]),At({}),qe(()=>[]),Se({}),Fr(!1),jr(""),Yr(""),p(!0));let Ei=Ff.current&&Xr.current===Ir&&It.length===0&&!xe.current;Ff.current=!1,!Ei&&!ln&&p(!0);let no=xa=>{if(!_||xa.length===0)return;let ce=Zf(),at=Af(xa,ce),{displayedDeals:ao}=ac(at.targetArticles,ce,at.activeRegionCode,at.targetIso);ao.length!==0&&(Ra=ao,v(Ra),p(!1),e.includeReviewProducts&&Mf(at.targetArticles,e.website||"tomsguide",Math.min(Zt,kf),c).then(()=>{if(!_||pc)return;let vn=ac(at.targetArticles,ce,at.activeRegionCode,at.targetIso);Ra=vn.displayedDeals,v(Ra);let Di=vn.displayedDeals.filter(st=>st.isReviewProduct&&st.hawkModelName).slice(0,kf).map(st=>String(st.hawkModelName));pi(vn.extractedDeals,at.activeRegionCode,void 0,kf,Di,st=>If(st,!0))}))};if(It=await Rv({authorHandle:nt,authorName:Wr,fallbackAuthorName:e.authorName,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,articleCategory:e.compactEmbed&&x||void 0,articleTag:e.compactEmbed?O1:void 0,pageStarts:e.compactEmbed&&!e.warmInventory&&!xe.current?[0]:void 0,reviewPageStarts:e.includeReviewProducts?Ca?gc:!e.compactEmbed||xe.current?Pv:void 0:void 0,loadAllReviewPages:!Ca,throwOnFailure:!!(e.compactEmbed&&xe.current),onBackgroundRefresh:xa=>{if(!_||mc.current!==yc)return;let ce=Ja(xa,void 0,Number(e.editorialMaxAgeMonths)||0);Y(ce),tt||Ee(ce),u1(at=>at+1)},onProgress:no,signal:re.signal,website:e.website}),!_)return;if(It=Ja(It,void 0,Number(e.editorialMaxAgeMonths)||0),Xr.current=Ir,mc.current=yc,Ei&&It.length===0){p(!1);return}_&&(Y(It),tt||Ee(It),R(!1))}let Jr=Zf(),k1=Af(It,Jr),{activeDealTag:Ta,activeRegionCode:Si,authorArticles:Jf,activeFreeformTags:Ea,freeformTagCounts:$f,freeformTags:$r,tagCounts:eg,tags:Ci,targetArticles:Da,targetIso:L1}=k1,Ri=e.compactEmbed&&x&&!Ta?x:Ta,Ti=e.compactEmbed&&$.length>0&&Ea.length===0?$:Ea,z1=Ci.length>0?Ci:Ri?[Ri]:Ci,H1=$r.length>0?$r:Ti.length>0?t?.freeformTags?.filter(de=>Ti.includes(de.handle))||[]:$r,U1={...eg,...Ri&&!Ta?{[Ri]:0}:{}},G1={...$f,...Object.fromEntries(Ea.length===0?Ti.map(de=>[de,0]):[])},eo=Yf(Ta,Ea,nt,Wr),tg=[Ir,Si,Ta||"",Ea.join(","),e.selectedBrands.join(","),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),sl=null,dl=null;if(!tt){let de=jf.current;if(de?.key===tg&&de.articleCount===Da.length)sl=de.deals.length,dl=de.authorCount;else{let zt=rv(Da,Jr);sl=zt.deals.length,dl=zt.authorCount,jf.current={articleCount:Da.length,authorCount:dl,deals:zt.deals,key:tg}}}Kf=Ci;let Lt;_&&(q(z1),pe(U1),et(H1),At(G1)),e.includeReviewProducts&&await Mf(Da,e.website||"tomsguide",l?Math.min(Da.length,i):Zt,c);let{brands:vc,displayedDeals:bc,extractedDeals:to}=ac(Da,Jr,Si,L1),{merchants:q1,couponMap:Ac,couponUrl:P1}=Uv(bc,e.region);_&&Se(Ac);let F1=de=>{!_||!Lt||(Lt={...Lt,couponMap:de},window.__AUTHOR_PRELOAD_DATA__=Lt,e.onDataLoaded&&e.onDataLoaded(Lt))};if(sv({couponMap:Ac,couponUrl:P1,merchants:q1}).then(de=>{_&&(Se(de),F1(de))}),_){Wf&&X(Ri),J2($,Ti)||nl(Ti),vi(Jf);let de=oc(Ra,bc,c,r);if(pc=!0,v(de),sl!==null){let zt=t?.totalDealCount||0,pn=Ca&&zt>sl;b(pn?zt:sl),g(pn?Math.max(t?.totalAuthorCount||0,dl||0):dl||0)}!rl.current.has(eo)&&Vf(Ta,Ea)&&rl.current.set(eo,t?.brands||[]),qe(rl.current.get(eo)||vc),p(!1),Lt=ov({allArticles:It,authorArticles:Jf,bakeReviewInventory:a&&!e.compactEmbed,brands:vc,couponMap:Ac,currentDealTag:Ta,currentFreeformTags:Ea,displayedDeals:de,inventoryArticles:Da,options:Jr,resultCount:e.resultCount,tagCounts:eg,tags:Ci,freeformTagCounts:$f,freeformTags:$r,totalAuthorCount:dl??h,totalDealCount:sl??A}),window.__AUTHOR_PRELOAD_DATA__=Lt,e.onDataLoaded&&e.onDataLoaded(Lt)}if((e.includeBuyingGuideProducts||e.includeReviewProducts)&&Si!=="unavailable"){let de=Zt,zt=l?to.filter(ce=>ce.isReviewProduct&&ce.hawkModelName).slice(0,i).map(ce=>String(ce.hawkModelName)):[],pn=bc.filter(ce=>(ce.isBuyingGuideProduct||ce.isReviewProduct)&&ce.hawkModelName).map(ce=>String(ce.hawkModelName));to.some(ce=>(ce.isBuyingGuideProduct||ce.isReviewProduct)&&ce.hawkModelName)&&M(!0);let no=pi(to,Si,void 0,s?void 0:e.includeReviewProducts?l?i:de:void 0,[...zt,...pn],If).then(async ce=>{if(!_)return;let at=el(ce,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(st=>(st.isBuyingGuideProduct||st.isReviewProduct)&&st.hawkModelName?{...st,hawkPricePending:!1}:st);an(at,c,r);let ao=hn(at,ol(),c),vn=oc(Ra,ao,c,r),Di=mf(vc,ce);if(rl.current.set(eo,Di),v(vn),qe(Di),s&&b(at.length),Lt){let st=a&&!e.compactEmbed,ng=l,ag=st?tc(vn,Number(e.resultCount)||12):ng?vn.slice(0,i):vn,j1=ng?await Hv(ag):ag;if(!_)return;let wc={...Lt,allDeals:j1,deals:vn.slice(0,de),brands:Di,totalDealCount:s?at.length:Lt.totalDealCount};Lt=wc,window.__AUTHOR_PRELOAD_DATA__=wc,e.onDataLoaded&&e.onDataLoaded(wc)}}).finally(()=>{_&&M(!1)}),xa=to.slice(de,de+(Number(e.resultCount)||12));e.includeReviewProducts&&e.warmInventory&&!s&&!I&&xa.some(ce=>ce.hawkModelName)&&no.then(()=>{_&&pi(xa,Si)}),I&&await no}}catch(nt){_&&D(!0)}finally{_&&(p(!1),R(!1),dc(!1),bi.current=!1)}})(),()=>{_=!1,re.abort()}},[e.query,e.region,e.selectedBrands,e.website,e.resultCount,Zt,c,e.priceRange,e.discountAmount,x,$,e.authorName,e.authorHandle,e.website,e.authorBioLength,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,s,a,l,i,r,n,gc,e.productSelection,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,e.editorialMaxAgeMonths,cc,tt,ll,il,o1,fc]);let Kr=e.website||"tomsguide",ct=hc.current!==Kr,wa=(0,N.useMemo)(()=>ct?[]:f1.current===Kr&&t?.authors?t.authors:kr(ze.length>0?ze:ie,Kr),[ie,Kr,ze,t?.authors,ct]),m1=tt?ll:e.authorHandle,h1=tt?il:e.authorName,y1=wa.find(_=>_.handle===m1||_.fullName===h1),ul=ze.length>0?ze:ie,Xf=(0,N.useMemo)(()=>{if(ul.length===0)return wa;let _=bt(e.region),re=nn(_),I=mi(Gr(ul,x),$),ve=bf(wa,I,{activeRegionCode:_,targetIso:re,selectedBrands:e.selectedBrands,priceRange:e.priceRange,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website});return Fu(wa,ve)},[x,$,wa,ul,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands]),p1=(0,N.useMemo)(()=>{if(ct)return[];if(ul.length===0&&t?.authors?.length||e.compactEmbed&&!x&&$.length===0&&t?.authors?.length)return wa;let _=bt(e.region),re=nn(_),I=mi(Gr(ul,x),$).filter(ve=>gi([ve],{activeRegionCode:_,targetIso:re,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website}).length>0);return Or(Xf,I)},[x,$,ul,ct,tt,t?.authors?.length,e.compactEmbed,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,Xf,e.website]),Qf=(_,re)=>{let I=ze.length>0?ze:ie.length>0?ie:d;if(I.length===0)return;let ve=fv(I,{authorHandle:_,authorName:re,discountAmount:e.discountAmount,priceRange:e.priceRange,region:e.region,selectedBrands:e.selectedBrands,sort:c,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,prioritiseCommercialProducts:r,website:e.website,productSelection:void 0});al(null),X(null),nl([]),vi(ve.authorArticles),q(ve.tags),pe(ve.tagCounts),et(ve.freeformTags),At(ve.freeformTagCounts),qe(ve.brands),v(ve.deals),p(!1)},v1=()=>{!e.compactEmbed||!t||(v(hn(Of(t.deals||t.allDeals||[],c,r),ol(),c)),q(t.tags||[]),pe(t.tagCounts||{}),et(t.freeformTags||[]),At(t.freeformTagCounts||{}),qe(t.brands||[]),Se(t.couponMap||{}),g(t.totalAuthorCount??t.authors?.length??0),b(t.totalDealCount??t.deals?.length??t.allDeals?.length??0))},b1=_=>{jn.current=!0,xe.current=!0,R(!0),tt&&(ll===_.handle||il===_.fullName)?(e.compactEmbed&&t?v1():Qf(e.authorHandle,e.authorName),Fr(!1),jr(""),Yr("")):(Qf(_.handle,_.fullName),Fr(!0),jr(_.handle),Yr(_.fullName)),e.onQueryChange?.("")},A1=_=>{jn.current=!0,xe.current=!0,R(!0);let re=x===_?null:_;Qr(re,$),X(re),e.onQueryChange?.("")},w1=()=>{jn.current=!0,xe.current=!0,R(!0)},S1=()=>{jn.current=!0,xe.current=!0,R(!0),Qr(null,$),X(null),e.onQueryChange?.("")},C1=_=>{jn.current=!0,xe.current=!0,R(!0);let re=$.some(I=>I.toLowerCase()===_.toLowerCase())?$.filter(I=>I.toLowerCase()!==_.toLowerCase()):[...$,_];Qr(x,re),nl(re)},R1=()=>{jn.current=!0,xe.current=!0,R(!0),Qr(x,[]),nl([])},T1=_=>{jn.current=!0,xe.current=!0,R(!0),al(_)},E1=()=>{if(bi.current)return;bi.current=!0,dc(!0);let _=Zt+(e.resultCount?parseInt(e.resultCount,10):12);!!(n&&e.compactEmbed&&!xe.current)&&ie.length>0&&m.length<_&&d1(ve=>{let Sa=Pv[ve.length];return Sa===void 0?ve:[...ve,Sa]}),sc(ve=>(Vr(ve),ve+(e.resultCount?parseInt(e.resultCount,10):12)));let I=!!(t?.reviewInventoryBaked&&m.length>Zt);e.compactEmbed&&ie.length===0&&!I&&(R(!0),s1(!0))},Ai=e.compactEmbed&&!e.refreshDealsOnViewport,D1=Ai&&t?.tags?.length?t.tags:ut,x1=Ai&&t?.tags?.length?t.tagCounts||{}:Ge,M1=Ai&&!xe.current&&t?.brands?.length?t.brands:Pr,_1=Ai&&t?.freeformTags?.length&&(!xe.current||$.length===1)?t.freeformTags:De,B1=Ai&&t?.freeformTags?.length&&(!xe.current||$.length===1)?t.freeformTagCounts||{}:tl,N1=dv({enrichingBuyingGuides:T,error:S,loading:y,loadingMore:Pf,refreshingFeed:C});return{activeDealTag:x,activeFreeformTags:$,airedaleBrands:ct?[]:M1,airedaleTagCounts:ct?{}:x1,airedaleTags:ct?[]:D1,airedaleFreeformTagCounts:ct?{}:B1,airedaleFreeformTags:ct?[]:_1,allAuthorsList:p1,authorArticlesList:ct?[]:r1,clickedAuthorOverride:tt,couponMap:G,deals:ct?[]:m,displayCount:Zt,error:S,enrichingBuyingGuides:T,effectiveAuthorProfile:ct?void 0:y1,loading:y,loadingMore:Pf,loadMoreStartCount:c1,markProductSelectionInteracted:w1,hasMore:m.length>Zt||!!e.compactEmbed&&A>m.length,loadMore:E1,refreshingFeed:C,overriddenAuthorHandle:ll,overriddenAuthorName:il,selectedArticleId:cc,setActiveDealTag:X,clearDealTag:S1,clearFreeformTags:R1,selectArticle:T1,setDisplayCount:sc,setSelectedArticleId:al,status:N1,toggleAuthorOverride:b1,toggleDealTag:A1,toggleFreeformTag:C1,totalAuthorCount:ct?0:h,totalDealCount:ct?0:A}}var $2=B(dt(),1);var qr=B(dt(),1);function jv(e){let[t,n]=(0,qr.useState)(null),[a,l]=(0,qr.useState)([]),[i,r]=(0,qr.useState)(!1),[o,u]=(0,qr.useState)(!1);return{close:()=>n(null),error:o,loading:i,merchant:t,open:async f=>{n(f),r(!0),u(!1),l([]);try{let d=Gv(f,e),m=await fetch(d.toString());if(!m.ok)throw new Error("API Error");l(cv(await m.json()))}catch(d){u(!0)}finally{r(!1)}},vouchers:a}}var Ye=B(O(),1);function eS(e){return new Set(e.map(t=>Array.isArray(t.authorName)?t.authorName[0]:t.authorName).map(t=>String(t||"").trim().toLowerCase()).filter(Boolean)).size}var tS=new Map,nS=()=>{};function Vv({data:e,editorBar:t,editorMode:n=!1,props:a,selectedDeals:l=tS,setSelectedDeals:i=nS}){let r=jv(a.region),[o,u]=(0,Yv.useState)(new Set),c=d0[a.website||""]||"#1F69FF",s=a.backgroundColor?a.backgroundColor==="white"?"#ffffff":a.backgroundColor==="transparent"?"transparent":a.backgroundColor==="light_blue"?"#E7F0FF":void 0:void 0,f=ju(a.authorHandle,a.authorName),d=Nr(a),m=qu(a),v=va(m?"date_desc":a.sort,!d),A=!!(a.showReviewSort&&a.includeReviewProducts),b=a.showPriceDiscountFilters!==!1||A,h=!a.authorFullBleed,g=!e.clickedAuthorOverride,y=e.totalDealCount||e.deals.length,p=e.totalAuthorCount||eS(e.deals),C=e.status==="loading_inventory"||e.status==="refreshing_inventory"||e.status==="enriching_visible_cards",R=e.status==="loading_inventory"||(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards")&&e.deals.length===0,M=!!(a.showReviewSort&&a.includeReviewProducts&&(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards"))?"Loading and sorting available review products":e.status==="enriching_visible_cards"?"Adding live product images and prices":e.status==="refreshing_inventory"?"Updating products":`Loading ${a.website||"site"} authors and products`,S=Y=>{e.markProductSelectionInteracted(),a.onBrandToggle?.(Y)},D=Y=>{e.markProductSelectionInteracted(),a.onBrandSelect?.(Y)},G=Y=>{e.markProductSelectionInteracted(),a.onPriceRangeChange?.(Y)},Se=Y=>{e.markProductSelectionInteracted(),a.onDiscountAmountChange?.(Y)},ie=Y=>{e.markProductSelectionInteracted(),a.onSortChange?.(Y)};return(0,Ye.jsx)("div",{className:"tg-df-widget-host",style:{"--tg-df-blue":c.toUpperCase()==="#FFFFFF"?"#000000":c},"data-vizualizer-embed":"true","data-tg-df-full-bleed":a.authorFullBleed?"true":"false","data-tg-df-mobile-dropdowns":a.mobileDropdowns?"true":"false","data-tg-df-sticky-mobile-filters":a.stickyMobileFilters===!1?"false":"true",children:(0,Ye.jsxs)("div",{className:"tg-df-container article-body",style:a.backgroundColor?{backgroundColor:s}:void 0,children:[(a.showAuthorIdentity!==!1||a.showAuthorBio!==!1)&&(0,Ye.jsx)("div",{className:"tg-df-author-embed",style:{width:"100%",fontFamily:"inherit"},children:(0,Ye.jsx)("div",{className:"tg-df-author-section",style:{display:"block",opacity:1,overflow:"visible",background:"transparent",border:"none"},children:(0,Ye.jsx)(O0,{authorArticlesList:e.authorArticlesList,authorBioLength:a.authorBioLength,customBio:g?a.customBio:void 0,customHeaderKicker:a.customHeaderKicker,customHeaderTitle:a.customHeaderTitle,effectiveAuthorHandle:e.clickedAuthorOverride?e.overriddenAuthorHandle:a.authorHandle,effectiveAuthorName:e.clickedAuthorOverride?e.overriddenAuthorName:a.authorName,isReviewWidget:d,onBioChange:g?a.onBioChange:void 0,onHeaderKickerChange:a.onHeaderKickerChange,onHeaderTitleChange:a.onHeaderTitleChange,selectedProfile:e.effectiveAuthorProfile,showAuthorBio:a.showAuthorBio,showAuthorIdentity:a.showAuthorIdentity,showSocialButtons:a.showSocialButtons,stabilizeBio:f,authorCount:p,totalDealCount:y,website:a.website})})}),t,a.showCollectionsDropdown&&(0,Ye.jsx)(t0,{articles:e.authorArticlesList,authorHandle:a.authorHandle,authorName:a.authorName||a.author,onChange:e.selectArticle,selectedArticleId:e.selectedArticleId,shortenedHeadlines:a.shortenedHeadlines}),C&&(0,Ye.jsxs)("div",{role:"status","aria-live":"polite","aria-label":M,style:{alignItems:"center",display:"flex",justifyContent:"center",marginBottom:"16px",minHeight:"72px"},children:[(0,Ye.jsx)("span",{className:"tg-df-coupon-spinner","aria-hidden":"true",style:{borderWidth:"3px",height:"24px",width:"24px"}}),(0,Ye.jsxs)("span",{style:{color:"#4B5563",fontSize:"14px",marginLeft:"10px"},children:[M,"\u2026"]})]}),(0,Ye.jsx)(T0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,allAuthorsList:e.allAuthorsList,brands:a.brands,clickedAuthorOverride:e.clickedAuthorOverride,loading:e.loading,refreshing:e.refreshingFeed,onAuthorClick:e.toggleAuthorOverride,onBrandToggle:S,onFreeformTagClick:e.toggleFreeformTag,onTagClick:e.toggleDealTag,overriddenAuthorHandle:e.overriddenAuthorHandle,overriddenAuthorName:e.overriddenAuthorName,selectedBrands:a.selectedBrands,showAuthorRail:f&&a.showAuthorRail!==!1,showAuthorCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,website:a.website}),(0,Ye.jsx)(M0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,brands:a.brands,discountAmount:a.discountAmount,enabled:a.mobileDropdowns||h,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,onBrandSelect:D,onBrandToggle:S,onDiscountAmountChange:Se,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,onPriceRangeChange:G,onReviewSortChange:ie,onTagClear:e.clearDealTag,onTagClick:e.toggleDealTag,priceRange:a.priceRange,reviewSort:v,selectedBrands:a.selectedBrands||[],showCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),b&&(0,Ye.jsx)(_0,{airedaleBrands:e.airedaleBrands,airedaleTags:e.airedaleTags,discountAmount:a.discountAmount,hidden:!!e.selectedArticleId,onDiscountAmountChange:Se,onPriceRangeChange:G,onReviewSortChange:ie,priceRange:a.priceRange,reviewSort:v,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),(0,Ye.jsx)(e0,{articles:e.authorArticlesList,selectedArticleId:e.selectedArticleId}),(a.showCategoryRail!==!1||a.showFreeformTagRail!==!1||a.showBrandRail!==!1)&&(0,Ye.jsx)(Jp,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleTags:e.airedaleTags,freeformTags:e.airedaleFreeformTags,discountAmount:a.discountAmount,onBrandSelect:D,onBrandToggle:S,onDiscountAmountChange:Se,onPriceRangeChange:G,onTagClear:e.clearDealTag,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,priceRange:a.priceRange,selectedBrands:a.selectedBrands||[]}),(0,Ye.jsx)(y0,{couponMap:e.couponMap,deals:e.deals,displayCount:e.displayCount,editorMode:n,error:e.error,expandedDealIds:o,hasMore:e.hasMore,loading:R,loadingMore:e.loadingMore,loadMoreStartCount:e.loadMoreStartCount,onDescriptionToggle:Y=>u(ze=>{let Ee=new Set(ze);return Ee.has(Y)?Ee.delete(Y):Ee.add(Y),Ee}),onLoadMore:e.loadMore,onOpenVouchers:r.open,query:a.query,selectedDeals:l,setSelectedDeals:i,website:a.website}),(0,Ye.jsx)(k0,{error:r.error,loading:r.loading,merchant:r.merchant,onClose:r.close,vouchers:r.vouchers})]})})}var Qv=B(O(),1),Xv=e=>{let t={...e,editorMode:!1},n=zf(t);return(0,Qv.jsx)(Vv,{data:n,props:t})};var U={authorBioLength:"short",authorFullBleed:!0,authorHandle:"all-authors",authorName:"All authors",backgroundColor:"transparent",customBio:"",customHeaderKicker:void 0,customHeaderTitle:void 0,discountAmount:"0",editorMode:!1,editorialMaxAgeMonths:"12",includeBuyingGuideProducts:!0,includeCollections:!0,includeDeals:!0,includeReviewProducts:!1,mobileDropdowns:!0,stickyMobileFilters:!0,offerType:"",preloadReviewInventory:!1,lightweightReviewDelivery:!1,prioritiseCommercialProducts:!0,priceRange:"all",productSelection:"latest",query:"Everything",region:"auto",resultCount:"12",retailer:"",selectedBrands:[],showAuthorBio:!0,showAuthorCounters:!0,showAuthorIdentity:!0,showAuthorRail:!0,showBrandRail:!0,showCategoryRail:!0,showCollectionsDropdown:!1,showPriceDiscountFilters:!0,showReviewSort:!1,showSocialButtons:!0,showCountdown:!1,showHeaderDetails:!0,showFreeformTagRail:!0,sort:"date_desc",viewMode:"author",website:"whowhatwear",widgetSubtitle:"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.",widgetTitle:"Top Deals Handpicked by Our Editors"};function Ie(e,t){return typeof e=="string"?e:t}function we(e,t){return typeof e=="boolean"?e:t}function Kv(e){let t=e||{},n=t.authorBioLength==="long"?"long":"short",a=t.productSelection==="mix"?"mix":"latest";return{...U,...t,authorBioLength:n,authorFullBleed:we(t.authorFullBleed,U.authorFullBleed),authorHandle:Ie(t.authorHandle,U.authorHandle),authorName:Ie(t.authorName,U.authorName),backgroundColor:Ie(t.backgroundColor,U.backgroundColor),customBio:Ie(t.customBio,U.customBio),customHeaderKicker:typeof t.customHeaderKicker=="string"?t.customHeaderKicker:void 0,customHeaderTitle:typeof t.customHeaderTitle=="string"?t.customHeaderTitle:void 0,discountAmount:Ie(t.discountAmount,U.discountAmount),editorMode:we(t.editorMode,U.editorMode),editorialMaxAgeMonths:Ie(t.editorialMaxAgeMonths,U.editorialMaxAgeMonths),includeBuyingGuideProducts:we(t.includeBuyingGuideProducts,U.includeBuyingGuideProducts),includeCollections:we(t.includeCollections,U.includeCollections),includeDeals:we(t.includeDeals,U.includeDeals),includeReviewProducts:we(t.includeReviewProducts,U.includeReviewProducts),mobileDropdowns:we(t.mobileDropdowns,U.mobileDropdowns),stickyMobileFilters:we(t.stickyMobileFilters,U.stickyMobileFilters),offerType:Ie(t.offerType,U.offerType),preloadReviewInventory:we(t.preloadReviewInventory,U.preloadReviewInventory),lightweightReviewDelivery:we(t.lightweightReviewDelivery,U.lightweightReviewDelivery),prioritiseCommercialProducts:we(t.prioritiseCommercialProducts,U.prioritiseCommercialProducts),priceRange:Ie(t.priceRange,U.priceRange),productSelection:a,query:Ie(t.query,U.query),region:Ie(t.region,U.region),resultCount:Ie(t.resultCount,U.resultCount),retailer:Ie(t.retailer,U.retailer),selectedBrands:Array.isArray(t.selectedBrands)?t.selectedBrands.filter(l=>typeof l=="string"):[],showAuthorBio:we(t.showAuthorBio,U.showAuthorBio),showAuthorCounters:we(t.showAuthorCounters,U.showAuthorCounters),showAuthorIdentity:we(t.showAuthorIdentity,U.showAuthorIdentity),showAuthorRail:we(t.showAuthorRail,U.showAuthorRail),showBrandRail:we(t.showBrandRail,U.showBrandRail),showCategoryRail:we(t.showCategoryRail,U.showCategoryRail),showCollectionsDropdown:we(t.showCollectionsDropdown,U.showCollectionsDropdown),showPriceDiscountFilters:we(t.showPriceDiscountFilters,U.showPriceDiscountFilters),showReviewSort:we(t.showReviewSort,U.showReviewSort),showSocialButtons:we(t.showSocialButtons,U.showSocialButtons),showCountdown:we(t.showCountdown,U.showCountdown),showHeaderDetails:we(t.showHeaderDetails,U.showHeaderDetails),showFreeformTagRail:we(t.showFreeformTagRail,U.showFreeformTagRail),sort:Ie(t.sort,U.sort),viewMode:Ie(t.viewMode,U.viewMode),website:Ie(t.website,U.website),widgetSubtitle:Ie(t.widgetSubtitle,U.widgetSubtitle),widgetTitle:Ie(t.widgetTitle,U.widgetTitle)}}function Zv(e,t={}){return{...e,brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}}function Wv(e,t){try{window.hawk?.analytics?.freyr?.push({name:e,data:t}),window.dispatchEvent(new CustomEvent("hawk-analytics-update")),window.freyr?.cmd.push(()=>{window.freyr?.pushAndUpdate?.(e,t)})}catch{}}function Iv(){window.dataLayer=window.dataLayer||[],window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.hawk=window.hawk||{},window.hawk.analytics=window.hawk.analytics||{},window.hawk.analytics.freyr=window.hawk.analytics.freyr||[],window.freyr=window.freyr||{cmd:[]},window.freyr.cmd=window.freyr.cmd||[];let e="https://freyr.futurecdn.net/freyr.js",t=window.location.hostname;if(!(window.navigator.webdriver||window.navigator.userAgent.includes("Headless"))&&!!t&&t!=="localhost"&&t!=="127.0.0.1"&&!t.includes("run.app")&&!document.querySelector(`script[src="${e}"]`)){let l=document.createElement("script");l.src=e,l.async=!0,document.head.appendChild(l)}}function aS(e){let t=Number.parseFloat(e.rawPrice||e.price)||null,n=Number.parseFloat(e.rawMsrp||e.msrp)||null;return{product:{primary:{id:e.externalProductId||e.id||e.matchId||null,name:e.productName||e.title||"",type:"deal",price:t,previousPrice:n,currency:e.isoCurrencyCode||e.currency||"USD",preorder:!1,labels:e.modelBrand||e.brand?[{type:"brand",value:e.modelBrand||e.brand}]:[],link:e.url||null,originalLink:e.originalLink||e.url||null,revenueId:e.revenueId||null,startTime:null,endTime:null,voucherCode:null,voucherAudience:null,voucherPercentageSaving:n&&t&&n>t?Math.round((1-t/n)*100):null,voucherMoneySaving:null,voucherType:null,offerExclusive:!1,offerScope:null,globalId:e.productKey||null,inStock:e.inStock!==!1,contractProvider:null,contractMinutes:null,contractTexts:null,contractData:null,contractLength:null,contractMonthlyPrice:null,contractCurrency:e.isoCurrencyCode||e.currency||"USD"}},merchant:{id:e.merchantId||null,name:e.merchant||"Retailer",url:e.merchantUrl||null,network:e.merchantNetwork||null},model:{id:e.modelId||null,brand:e.modelBrand||e.brand||null,name:e.productName||e.title||"",parent:e.modelParent||null}}}var lS=new Set(["subid1","ascsubtag","clickref","u1"]);function iS(e){return e.match(/(?:^|[-_])(\d{10,})(?=$|[-_])/)?.[1]||null}function rS(e){let t=new Set,n=a=>{if(!a||t.has(a))return null;t.add(a);let l;try{l=new URL(a)}catch{return null}for(let[i,r]of l.searchParams)if(lS.has(i.toLowerCase())){let o=iS(r);if(o)return o}for(let i of l.searchParams.values())if(/^https?:\/\//i.test(i)){let r=n(i);if(r)return r}return null};return n(e)}function Jv({areaClicked:e,clickType:t,deals:n,index:a,queryName:l}){let i={event:"hawkEvent",category:"Affiliates",affiliate:{action:{type:t,id:"author-widget",event:t==="appeared"?"viewed":"Click from",timestamp:Date.now()},component:{flag:"Editor",product:"deals",category:"Signal Deal Finder Author widget",type:t==="appeared"?"review":"signal product",label:l||n[0]?.productName||n[0]?.title||"",index:a??-1,linkCount:n.length,blockLayout:"",areaClicked:e}},products:n.slice(0,20).map(aS),reviews:[],_clear:!0,"gtm.uniqueEventId":Date.now()%1e4};Wv("hawkEvent",i)}function $v(e,t){e.length&&Jv({areaClicked:"",clickType:"appeared",deals:e,index:null,queryName:t})}function e1(e,t){if(e?.deals?.length)return e.deals;let n=Number(t)||12;return e?.allDeals?.slice(0,n)||[]}function t1(e){e.addEventListener("click",t=>{let n=t.target;if(!(n instanceof Element))return;let a=n.closest("a[data-fcaw-affiliate-link][href], a.hawk-affiliate-link-deal-widget[href], a.hawk-affiliate-link-container[href], a.hawk-affiliate-link-deal-button[href]"),l=n.closest(".tg-df-card"),i=!!(!a?.dataset.fcawRevenueId&&(a?.hasAttribute("data-hl-processed")||a?.hasAttribute("data-fcaw-hawklinks-requested")));a&&l&&!i&&Jv({areaClicked:"Signal Product Card",clickType:"retailer",deals:[{brand:l.dataset.brand,currency:l.dataset.currency,id:l.dataset.dealId,merchant:l.dataset.merchant,merchantId:l.dataset.merchantId,modelId:l.dataset.modelId,productKey:l.dataset.productKey,rawMsrp:l.dataset.previousPrice,rawPrice:l.dataset.price,originalLink:a.dataset.fcawOriginalLink||a.href,revenueId:a.dataset.fcawRevenueId||rS(a.href),title:l.dataset.productName,url:a.href}],index:Array.from(e.querySelectorAll(".tg-df-card")).indexOf(l)});let r=n.closest('button, select, [role="button"]');r&&Wv("elementInteraction",{element:{action:"click",id:r.id||void 0,class:r.className||void 0,name:r.getAttribute("name")||r.getAttribute("aria-label")||void 0,text:r.textContent?.trim()||void 0,label:r.getAttribute("aria-label")||void 0}})})}var qf=B(O(),1),oS='fc-author-commerce-widget[data-fcaw-version="1"]',uS="(max-width: 599px)",cS=600,sS='[class*="membership-expandable-banner"]',dS=/^jump\s+to\b/i,Uf="data-fcaw-jump-navigation-suppressed",fS=50,gS=1e4,mS=["[data-sticky-header]","[data-header-sticky]",'[role="banner"]',".navigation__container",".site-header",".main-header",".header__container",'[class*="membership-expandable-banner"] [class*="skinny-banner"]','[class*="membership-expandable-banner"] [id="skinnyBanner"]',"nav","header"].join(","),hS=`  :host {    display: block !important;    width: 100% !important;    min-width: 0 !important;    max-width: none !important;    isolation: isolate !important;    contain: style !important;  }  :host([data-fcaw-full-bleed="true"]) {    width: min(      1200px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1200px !important;    margin-left: var(      --fcaw-full-bleed-offset,      calc(50% - min(600px, 50vw))    ) !important;    margin-right: 0 !important;    position: relative !important;  }  :host([data-fcaw-full-bleed="true"]) #tg-df-spreadsheet-filters {    width: min(      1500px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1500px !important;    margin-left: calc(      (        100% -        min(1500px, var(--fcaw-viewport-width, 100vw))      ) / 2    ) !important;    margin-right: 0 !important;  }  :host, :host *, :host *::before, :host *::after {    box-sizing: border-box;  }`,Hf=new WeakMap;function yS(){if(document.querySelector("style[data-fcaw-jump-navigation-protection]"))return;let e=document.createElement("style");e.setAttribute("data-fcaw-jump-navigation-protection",""),e.textContent=`    [${Uf}="true"] {      opacity: 0 !important;      pointer-events: none !important;      visibility: hidden !important;    }  `,document.head.appendChild(e)}function pS(){let e=Array.from(document.querySelectorAll("span, p, div, strong, b")).filter(n=>n.childElementCount===0&&dS.test(n.textContent?.trim()||"")),t=new Set;for(let n of e)for(let a=n.parentElement;a&&a!==document.body;a=a.parentElement)if(getComputedStyle(a).position==="sticky"){t.add(a);break}return[...t]}function vS(e,t,n){let a=Hf.get(e)||new Set;n?a.add(t):a.delete(t),a.size>0?(Hf.set(e,a),e.setAttribute(Uf,"true")):(Hf.delete(e),e.removeAttribute(Uf))}function bS(e){if(e.dataset.fcawFullBleed!=="true"||typeof IntersectionObserver>"u")return;let t=pS().filter(a=>!a.contains(e));if(t.length===0)return;yS(),new IntersectionObserver(([a])=>{t.forEach(l=>vS(l,e,a.isIntersecting))},{threshold:0}).observe(e)}function AS({host:e,initialData:t,initialProps:n}){let[a]=(0,kt.useState)(i1),l=CS(t,a),[i,r]=(0,kt.useState)(n.query),[o,u]=(0,kt.useState)(n.selectedBrands),[c,s]=(0,kt.useState)(n.priceRange),[f,d]=(0,kt.useState)(n.discountAmount),[m,v]=(0,kt.useState)(n.sort),[A,b]=(0,kt.useState)(!1),h=!!(A&&n.compactEmbed&&n.includeDeals!==!1),g=(0,kt.useRef)(!1);return(0,kt.useEffect)(()=>{let y=()=>{g.current||(g.current=!0,$v(e1(l,n.resultCount),n.query))};if(typeof IntersectionObserver>"u"){y();return}let p=new IntersectionObserver(([C])=>{C?.isIntersecting&&(y(),p.disconnect())},{threshold:.1});return p.observe(e),()=>p.disconnect()},[e,l,n.query]),(0,kt.useEffect)(()=>{if(typeof IntersectionObserver>"u"){b(!0);return}let y=new IntersectionObserver(([p])=>{p?.isIntersecting&&(b(!0),y.disconnect())},{rootMargin:"800px 0px"});return y.observe(e),()=>y.disconnect()},[e]),(0,qf.jsx)(Xv,{...n,region:a||"unavailable",initialData:l,warmInventory:A,refreshDealsOnViewport:h,query:i,selectedBrands:o,priceRange:c,discountAmount:f,sort:m,editorMode:!1,onQueryChange:r,onBrandSelect:u,onBrandToggle:y=>u(p=>p.includes(y)?p.filter(C=>C!==y):[...p,y]),onPriceRangeChange:s,onDiscountAmountChange:d,onSortChange:v})}function wS(e){try{let t=document.cookie.match(new RegExp(`(?:^|;\\s*)${e}=([^;]*)`));return t?decodeURIComponent(t[1]):void 0}catch{return}}function uc(e){let n=String(e||"").trim().toUpperCase().replace("_","-").split("-").at(-1);return n==="UK"?"GB":["US","GB","AU","CA","DE","FR","IT","ES","NL"].includes(n||"")?n:void 0}function i1(){let e=new URLSearchParams(window.location.search).get("area");return uc(e)||uc(wS("FTR_Country_Code"))||uc(document.documentElement.getAttribute("data-locale"))||uc(window.navigator.language)}function n1(e,t){let n=e.querySelector(t);if(n?.textContent)try{return JSON.parse(n.textContent)}catch(a){console.warn("Author widget configuration could not be parsed.",a);return}}function SS(e){return e?.reviewInventoryFormat!==I0||!e.allDeals?e:{...e,allDeals:J0(e.allDeals)}}function CS(e,t){let n=t?e?.regionalDealManifests?.[t]:void 0;if(!n)return e;let a=e?.regionalDealRailData?.[t];return{...e,allDeals:void 0,deals:n,...a}}function a1(e){e.querySelectorAll("a[href]").forEach(t=>{(t.hasAttribute("data-fcaw-affiliate-link")||t.classList.contains("hawk-affiliate-link-deal-widget")||t.classList.contains("hawk-affiliate-link-container")||t.classList.contains("hawk-affiliate-link-deal-button"))&&(t.rel="sponsored nofollow noopener")})}function RS(e){let t=e.closest(".tg-df-card"),n=t?.dataset.fcawRevenueId||e.dataset.fcawRevenueId;if(n)return n;let a=[window.location.href,t?.dataset.productName||"",t?.dataset.merchant||"",t?.dataset.modelId||"",new Date().toDateString(),"tomsguide"].join("|"),l=0;for(let r=0;r<a.length;r+=1)l=(l<<5)-l+a.charCodeAt(r),l|=0;let i=String(Math.abs(l));for(;i.length<19;)l=(l<<5)-l+i.length,l|=0,i+=String(Math.abs(l));return i=i.slice(0,19),t&&(t.dataset.fcawRevenueId=i),i}function TS(e){let t=e.dataset.fcawOriginalLink||e.href;if(!t.includes("hawk-custom-tracking"))return!1;let n=i1();if(!n)return!1;let a=RS(e);return e.dataset.fcawOriginalLink=t,e.dataset.fcawRevenueId=a,e.href=t.replaceAll("hawk-custom-tracking",`tomsguide-${n.toLowerCase()}-${a}`),e.setAttribute("data-fcaw-hawklinks-requested","true"),!0}function ES(){return!!window.hawklinks?.version}function DS(e){let t=!1,n,a,l=()=>Array.from(e.querySelectorAll(".article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-widget[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-container[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-button[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested])")),i=()=>{t=!1;let u=l();if(u.length===0)return;let c=u.filter(s=>!TS(s));if(c.length!==0){if(!ES()){let s=Date.now();a??=s,!n&&s-a<gS&&(n=window.setTimeout(()=>{n=void 0,r()},fS));return}a=void 0,c.forEach(s=>s.setAttribute("data-fcaw-hawklinks-requested","true")),document.dispatchEvent(new CustomEvent("processArticle",{detail:{element:e}}))}},r=()=>{t||(t=!0,window.setTimeout(i,0))},o=new MutationObserver(r);return o.observe(e,{attributes:!0,attributeFilter:["href"],childList:!0,subtree:!0}),r(),()=>{o.disconnect(),n&&window.clearTimeout(n)}}function xS(e){if(e.dataset.fcawFullBleed!=="true")return;let t=()=>{let n=document.documentElement.clientWidth||window.innerWidth,a=Math.min(1200,n),l=Math.max(0,(n-a)/2),i=e.parentElement?.getBoundingClientRect().left||0;e.style.setProperty("--fcaw-full-bleed-offset",`${l-i}px`),e.style.setProperty("--fcaw-viewport-width",`${n}px`)};t(),window.addEventListener("resize",t,{passive:!0}),typeof ResizeObserver<"u"&&e.parentElement&&new ResizeObserver(t).observe(e.parentElement)}function MS(e){let t=window.matchMedia(uS),n=!1,a=new Set,l=new Map,i,r=()=>t.matches||e.getBoundingClientRect().width<cS,o=()=>{n||(n=!0,window.requestAnimationFrame(s))},u=()=>{if(typeof MutationObserver>"u")return;let f=new Set(Array.from(document.querySelectorAll(sS)));l.forEach((d,m)=>{f.has(m)&&m.isConnected||(d.disconnect(),l.delete(m))}),f.forEach(d=>{if(l.has(d))return;let m=new MutationObserver(o);m.observe(d,{attributes:!0,attributeFilter:["class","style"],childList:!0,subtree:!0}),l.set(d,m)})},c=f=>{let d=new Set(f);a.forEach(m=>{d.has(m)||(i?.unobserve(m),m.removeEventListener("transitionend",o),a.delete(m))}),f.forEach(m=>{a.has(m)||(i?.observe(m),m.addEventListener("transitionend",o),a.add(m))})},s=()=>{if(n=!1,u(),!r()){c([]),e.style.removeProperty("--fcaw-mobile-sticky-offset");return}let f=Number.parseFloat(getComputedStyle(e).getPropertyValue("--fcaw-publisher-sticky-offset"));if(Number.isFinite(f)&&f>=0){c([]),e.style.setProperty("--fcaw-mobile-sticky-offset",`${f}px`);return}let d=Array.from(document.querySelectorAll(mS)).filter(v=>{if(v.contains(e))return!1;let A=getComputedStyle(v).position;return A==="fixed"||A==="sticky"});c(d);let m=d.reduce((v,A)=>{let b=A.getBoundingClientRect();return b.top>2||b.bottom<=0||b.height<=0||b.height>window.innerHeight*.5?v:Math.max(v,b.bottom)},0);e.style.setProperty("--fcaw-mobile-sticky-offset",`${Math.ceil(m)}px`)};return typeof ResizeObserver<"u"&&(i=new ResizeObserver(o),i.observe(e)),s(),window.addEventListener("scroll",o,{capture:!0,passive:!0}),window.addEventListener("resize",o,{passive:!0}),t.addEventListener?.("change",o),()=>{window.removeEventListener("scroll",o,!0),window.removeEventListener("resize",o),t.removeEventListener?.("change",o),i?.disconnect(),a.forEach(f=>f.removeEventListener("transitionend",o)),a.clear(),l.forEach(f=>f.disconnect()),l.clear()}}function _S(e){if(e.dataset.fcawEnhanced==="true")return;let t=n1(e,"script[data-fcaw-config]");if(!t)return;let n={...Zv(Kv(t),{brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}),compactEmbed:t.compactEmbed,editorMode:!1,warmInventory:t.warmInventory},a=n1(e,"script[data-fcaw-preload]"),l=SS(a),i=e.querySelector("[data-fcaw-fallback]");if(!i)return;xS(e),bS(e),n.stickyMobileFilters!==!1&&MS(e),a1(i);let r=e.shadowRoot||e.attachShadow({mode:"open"}),o=e.querySelector(":scope > style[data-fcaw-host-protection]");if(o&&r.appendChild(o),!r.querySelector("style[data-fcaw-shadow-protection]")){let c=document.createElement("style");c.setAttribute("data-fcaw-shadow-protection",""),c.textContent=hS,r.appendChild(c)}i.querySelectorAll(":scope > style").forEach(c=>{r.appendChild(c)});let u=document.createElement("div");for(u.setAttribute("data-fcaw-mount","");i.firstChild;)u.appendChild(i.firstChild);i.remove(),r.appendChild(u),e.dataset.fcawEnhanced="true",Iv(),e.dataset.fcawAnalyticsReady="true",t1(r),DS(r),(0,l1.createRoot)(u).render((0,qf.jsx)(AS,{host:e,initialData:l,initialProps:n})),window.setTimeout(()=>a1(r),0)}function Gf(){document.querySelectorAll(oS).forEach(_S)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Gf,{once:!0}):Gf();new MutationObserver(Gf).observe(document.documentElement,{childList:!0,subtree:!0});})();/*! Bundled license information:react/cjs/react.production.js:  (**   * @license React   * react.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)scheduler/cjs/scheduler.production.js:  (**   * @license React   * scheduler.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom.production.js:  (**   * @license React   * react-dom.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom-client.production.js:  (**   * @license React   * react-dom-client.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react/cjs/react-jsx-runtime.production.js:  (**   * @license React   * react-jsx-runtime.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)*/</script></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/microsofts-ai-vulnerability-detection-results-in-record-breaking-patch-tuesday-addressing-974-security-flaws/</link>
                                                                            <description>
                            <![CDATA[ Both source and solution? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">C4usUHeQmGjB65WPD9xvDV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WZ8GEE4LdhwMBUawQL7YVa-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 09 Sep 2026 16:35:38 +0000</pubDate>                                                                                                                                <updated>Mon, 14 Sep 2026 14:11:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WZ8GEE4LdhwMBUawQL7YVa-1920-80.jpg">
                                                            <media:credit><![CDATA[Michael Nagle/Bloomberg via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft signage at an office building in New York, US, on Monday, April 27, 2026. Microsoft Corp. is scheduled to release earnings figures on April 29. Photographer: Michael Nagle/Bloomberg via Getty Images]]></media:description>                                                            <media:text><![CDATA[Microsoft signage at an office building in New York, US, on Monday, April 27, 2026. Microsoft Corp. is scheduled to release earnings figures on April 29. Photographer: Michael Nagle/Bloomberg via Getty Images]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft signage at an office building in New York, US, on Monday, April 27, 2026. Microsoft Corp. is scheduled to release earnings figures on April 29. Photographer: Michael Nagle/Bloomberg via Getty Images]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WZ8GEE4LdhwMBUawQL7YVa-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's not always interesting, but it's important to stay on top of operating system updates. However, if you're on Windows, you're definitely gonna want to prick up your ears for Microsoft's September 2026 Patch Tuesday.</p><p>This might be Microsoft's biggest Patch Tuesday to date, <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Sep">addressing a whopping 974 security flaws</a> found across both Windows 10 and Windows 11. <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-september-2026-patch-tuesday-fixes-966-flaws-2-zero-days/">Bleeping Computer</a> offers a handy breakdown, reporting that 438 of these flaws were elevation of privilege vulnerabilities, 258 were remote code execution vulnerabilities, and 19 were security feature bypass vulnerabilities.</p><p>Perhaps more importantly, this Patch Tuesday also targets two actively exploited zero-days. Specifically, these are <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-85880">CVE-2026-85880</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-81963">CVE-2026-81963</a>, which had both been leveraged previously to give attackers elevated system privileges.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p><a href="https://www.pcgamer.com/software/ai/more-windows-security-updates-to-come-as-microsoft-leverages-ai-vulnerability-detection-but-only-the-highest-confidence-findings-reach-the-engineering-team/" target="_blank">Microsoft began leveraging AI vulnerability detection back in July</a>, stressing back then that only the highest-confidence findings would ever reach the engineering team for fixing. As a result, <a href="https://www.pcgamer.com/software/windows/latest-microsoft-patch-tuesday-updates-stamp-out-a-record-622-security-vulnerabilities-as-the-companys-ai-enhanced-bug-hunt-looks-to-bear-fruit/" target="_blank">July enjoyed a similarly record-breaking Patch Tuesday</a>, stamping out 622 security vulnerabilities.</p><p>There's been a lot of praise for AI bug-hunting tools in recent months, with the CTO of Firefox raving about how <a href="https://www.pcgamer.com/software/browsers/defenders-finally-have-a-chance-to-win-decisively-firefox-cto-raves-about-claude-mythos-bug-hunting-capabilities-after-it-finds-271-vulnerabilities/" target="_blank">an early version of Claude Mythos found 271 security vulnerabilities in the browser</a> back in April. Anthropic itself was only too keen to toot its own horn that same month, saying that its AI had in fact found "<a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">thousands of high-severity vulnerabilities, including some in every major operating system and web browser</a>."</p><p>Now, compare and contrast this to, say, all the times OpenAI's agents have reportedly breached containment in recent months. For instance, there was the '<a href="https://www.pcgamer.com/software/ai/openai-publicly-acknowledges-the-german-wiki-incident-weeks-after-first-finding-out-about-it/" target="_blank">wiki incident</a>', where AI agents took over a communally editable German website, and then there was also the '<a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">Hugging Face incident</a>'. OpenAI has been taking <a href="https://www.pcgamer.com/software/ai/openai-says-itd-be-a-shame-if-something-were-to-happen-to-your-servers-like-what-happened-to-hugging-face-better-use-our-ai-models-to-protect-yourself/" target="_blank">steps to learn from these incidents</a>.</p><p>But to bring it back to Microsoft, the Edge team <a href="https://blogs.windows.com/msedgedev/2026/09/08/faster-reviews-and-quality-recognition-for-microsoft-edge-extensions/" target="_blank">recently implemented an automated browser extension review system</a> to better deal with the tidal wave of "AI-assisted" submissions. It's currently unclear if the automated system also uses AI or machine-learning (via <a href="https://www.theregister.com/software/2026/09/09/another-microsoft-team-admits-its-struggling-to-handle-flood-of-ai-generated-code/5295185" target="_blank">The Register</a>).</p><p>It's an odd state of affairs when AI is both the source of a major security incident and core to the tools engineers now use to address vulnerabilities. Obviously, agentic AI is a bit different to the tools Microsoft is using, but here's hoping this latter AI tech continues to be more of a help than a hindrance.</p><div class="vizualizer-embed"><fc-author-commerce-widget data-fcaw-version="1" data-fcaw-full-bleed="false">  <style data-fcaw-host-protection>fc-author-commerce-widget[data-fcaw-version="1"] {  display: block !important;  width: 100% !important;  min-width: 0 !important;  max-width: none !important;  isolation: isolate !important;  contain: style !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]{  width: min(    1200px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1200px !important;  margin-left: var(    --fcaw-full-bleed-offset,    calc(50% - min(600px, 50vw))  ) !important;  margin-right: 0 !important;  position: relative !important;}fc-author-commerce-widget[data-fcaw-version="1"][data-fcaw-full-bleed="true"]  #tg-df-spreadsheet-filters {  width: min(    1500px,    var(--fcaw-viewport-width, 100vw)  ) !important;  max-width: 1500px !important;  margin-left: calc(    (      100% -      min(1500px, var(--fcaw-viewport-width, 100vw))    ) / 2  ) !important;  margin-right: 0 !important;}fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::before,fc-author-commerce-widget[data-fcaw-version="1"] .fcaw-v1-fallback *::after {  box-sizing: border-box;}</style>  <div data-fcaw-fallback class="fcaw-v1-fallback">    <style>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with 'tg-df-' to prevent CMS style leakage.    */    .tg-df-container { user-select: text; -webkit-user-select: text;      container-type: inline-size;      container-name: tg-df;                  --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]    {      width: min(        1200px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1200px !important;      margin-left: calc(        (          100% -          min(1200px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;      position: relative !important;    }    .tg-df-widget-host[data-tg-df-full-bleed="true"]      #tg-df-spreadsheet-filters {      width: min(        1500px,        var(--fcaw-viewport-width, 100vw)      ) !important;      max-width: 1500px !important;      margin-left: calc(        (          100% -          min(1500px, var(--fcaw-viewport-width, 100vw))        ) / 2      ) !important;      margin-right: 0 !important;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: var(--tg-df-blue);    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }        .tg-df-filters {      display: flex;      justify-content: center;      width: 100%;      gap: 12px;      margin: 0 auto;      max-width: 42rem;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;      max-width: 280px;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      width: 100%;      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }    .tg-df-scroll-btn {      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 4px;    }    .tg-df-scroll-btn.right {      right: 4px;    }    @container tg-df (max-width: 768px) {      .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 42rem;      margin: 0 auto;    }    .tg-df-filters {        justify-content: center;        width: 100%;        margin: 0 auto;        margin-bottom: -320px;        padding: 0 0 320px 0;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: calc(100% + 32px);      max-width: none;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;      margin: 0 -16px -16px -16px;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }    .tg-df-buying-guide-badge {      left: auto;      right: 12px;      max-width: calc(100% - 24px);      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges { position: absolute; bottom: 8px; left: 8px; display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 0; z-index: 10; }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: calc(100% + 32px);      max-width: none;      box-sizing: border-box;      background-color: var(--tg-df-blue);      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;      margin: 0 -16px -16px -16px;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      filter: brightness(0.85);    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 120px;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /* Optional mobile 2x2 filter grid */    .tg-df-mobile-2x2-container {      display: none;      width: 100%;      margin: 0 0 16px 0;      position: relative;      z-index: 30;    }    .tg-df-mobile-2x2-grid {      display: grid;      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);      width: 100%;      border: 1px solid var(--tg-df-border, #e2e8f0);      background: var(--tg-df-bg, #ffffff);    }    .tg-df-container .tg-df-mobile-grid-cell {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      min-width: 0;      padding: 12px 14px;      font-family: inherit;      font-size: 11px;      font-weight: 600;      line-height: 1.2;      text-transform: uppercase;      letter-spacing: 0.5px;      text-align: left;      color: var(--tg-df-text-muted, #64748b);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-mobile-grid-cell > span {      overflow: hidden;      text-overflow: ellipsis;      white-space: nowrap;    }    .tg-df-mobile-grid-cell > svg {      flex: 0 0 auto;      margin-left: 8px;      transition: transform 0.15s ease;    }    .tg-df-mobile-grid-cell > svg.is-open {      transform: rotate(180deg);    }    .tg-df-mobile-grid-cell {      border-bottom: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-grid-cell:nth-child(odd) {      border-right: 1px solid var(--tg-df-border, #e2e8f0);    }    .tg-df-mobile-2x2-grid--even .tg-df-mobile-grid-cell:nth-last-child(-n + 2) {      border-bottom: 0;    }    .tg-df-mobile-2x2-grid--odd .tg-df-mobile-grid-cell:last-child {      grid-column: 1 / -1;      border-right: 0;      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-grid-cell.active,    .tg-df-container .tg-df-mobile-grid-cell:hover {      background: var(--tg-df-bg-secondary, #f8fafc);      color: var(--tg-df-text, #0f172a);    }    .tg-df-container .tg-df-mobile-grid-cell.has-active-filter {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;    }    .tg-df-mobile-menu-drawer {      width: 100%;      max-height: 260px;      overflow-y: auto;      overscroll-behavior: contain;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-top: 0;      background: var(--tg-df-bg, #ffffff);      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);    }    .tg-df-container .tg-df-mobile-menu-item {      appearance: none;      display: flex;      align-items: center;      justify-content: space-between;      width: 100%;      min-height: 42px;      padding: 12px 16px;      font-family: inherit;      font-size: 12px;      font-weight: 500;      line-height: 1.3;      text-align: left;      color: var(--tg-df-text, #0f172a);      background: var(--tg-df-bg, #ffffff);      border: 0;      border-bottom: 1px solid #f1f5f9;      border-radius: 0;      cursor: pointer;      box-shadow: none;    }    .tg-df-container .tg-df-mobile-menu-item:last-child {      border-bottom: 0;    }    .tg-df-container .tg-df-mobile-menu-item.selected {      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.08);      font-weight: 600;    }    .tg-df-container .tg-df-mobile-menu-item:hover {      background: var(--tg-df-bg-secondary, #f8fafc);    }    .tg-df-mobile-cell-badge {      display: inline-flex;      align-items: center;      justify-content: center;      padding: 2px 6px;      margin-left: 4px;      color: var(--tg-df-blue, #1f69ff);      background: rgba(31, 105, 255, 0.1);      border-radius: 9999px;      font-size: 10px;      font-weight: 700;    }    @container tg-df (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    @media (max-width: 599px) {      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-mobile-2x2-container {        display: block !important;        z-index: 50;        background: var(--tg-df-bg, #ffffff);        box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"][data-tg-df-sticky-mobile-filters="true"]        .tg-df-mobile-2x2-container {        position: sticky !important;        top: var(--fcaw-mobile-sticky-offset, 0px);      }      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-mobile-dropdowns="true"]        .tg-df-controls {        display: none !important;      }    }    /* A non-full-bleed desktop embed is constrained to the article column.       Reuse the compact filter grid there instead of squeezing the rails. */    @container tg-df (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    @media (min-width: 600px) {      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-mobile-2x2-container {        display: block !important;      }      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-categories-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-freeform-tags-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-brands-row-container,      .tg-df-widget-host[data-tg-df-full-bleed="false"]        .tg-df-controls {        display: none !important;      }    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-mobile-authors { gap: 16px !important; }      .tg-df-mobile-authors .tg-df-author-row-item { width: 56px !important; }      .tg-df-mobile-authors .tg-df-author-img-wrapper { width: 48px !important; height: 48px !important; }      .tg-df-mobile-authors .tg-df-author-brand-logo { width: 18px !important; height: 18px !important; bottom: -2px !important; right: -2px !important; }      .tg-df-mobile-authors .tg-df-author-row-name { font-size: 11px !important; }      .tg-df-mobile-authors .tg-df-author-row-role { font-size: 10px !important; }            .tg-df-container { user-select: text; -webkit-user-select: text; border: none !important; border-radius: 0 !important; }      .tg-df-controls {        padding: 16px 0 8px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }                  .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 8px;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    @media (max-width: 599px) {      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 5px 12px !important;        font-size: 11px !important;        height: 30px !important;        min-height: 30px !important;        border-radius: 0 !important;        flex: 0 0 auto;        text-align: center;        white-space: nowrap;        line-height: 1.2;        margin: 8px 0 0;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }        .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: var(--tg-df-blue);      position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }      .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: var(--tg-df-blue);      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 14px;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }        .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;      scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-scroll-left {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: rgba(255, 255, 255, 0.4);      color: var(--tg-df-blue);      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);      border: none;      cursor: pointer;      transition: background-color 0.2s;      margin-top: -4px;      z-index: 10;    }    .tg-df-container .tg-df-carousel-scroll-right {      right: 0;    }    .tg-df-container .tg-df-carousel-scroll-left {      left: 0;    }    .tg-df-container .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-scroll-left:hover {      background-color: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left {       height: 30px;       width: 30px;       background-color: rgba(255, 255, 255, 0.8);       box-shadow: 0 2px 4px rgba(0,0,0,0.1);       margin-top: 0;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right:hover,    .tg-df-container .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left:hover {       background-color: white;    }    .tg-df-container .tg-df-grid-wrapper {       position: relative;    }    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-right,    .tg-df-container .tg-df-grid-wrapper .tg-df-carousel-scroll-left {       background-color: white;       box-shadow: 0 4px 12px rgba(0,0,0,0.15);       top: 40%;       width: 44px;       height: 44px;       color: #0f4098;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px var(--tg-df-blue);    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }            .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .tg-df-container .tg-df-carousel-filter-btn:hover, .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      width: calc(100% + 24px);      border-radius: 0;      padding: 8px 10px;      margin: auto -12px -12px -12px;      background-color: var(--tg-df-blue);    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.40);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; padding-right: 12px; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @media (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }      .tg-df-container .hawk-deal-widget-title-product-title,      .tg-df-container .hawk-deal-widget-title-price,      .tg-df-container .hawk-deal-widget-title-retailer {        font-size: 14px !important;        line-height: 1.35 !important;        font-weight: 700 !important;      }      .tg-df-container .hawk-deal-widget-title-was-price {        font-size: 13px !important;        line-height: 1.35 !important;      }      .tg-df-container .hawk-deal-widget-text-body-main {        font-size: 14px !important;        line-height: 1.35 !important;        margin-bottom: 8px !important;      }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    /* BESPOKE AUTHOR HEADER STYLES - MAX ISOLATION PROTECTION */    .tg-df-author-embed {      width: 100% !important;      font-family: inherit !important;      background: transparent !important;      margin: 0 !important;      padding: 0 !important;      border: none !important;    }    .tg-df-author-section {      display: block !important;      width: 100% !important;      max-width: 100% !important;      opacity: 1 !important;      overflow: visible !important;      background: transparent !important;      border: none !important;      margin: 0 auto !important;      padding: 0 !important;      box-shadow: none !important;    }    .tg-df-author-card {      text-align: center !important;      padding: 1.75rem 1rem 1.25rem 1rem !important;      margin: 0 auto !important;      max-width: 48rem !important;      background: transparent !important;      border: none !important;      border-radius: 0 !important;      box-sizing: border-box !important;      box-shadow: none !important;    }    .tg-df-author-image {      width: 180px !important;      height: 180px !important;      border-radius: 50% !important;      object-fit: cover !important;      margin: 0 auto 0.75rem auto !important;      display: block !important;      border: none !important;      box-shadow: none !important;      max-width: 100% !important;    }    .tg-df-author-media-slot {      width: 100% !important;      height: 180px !important;      min-height: 180px !important;      margin: 0 auto 0.75rem auto !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;    }    .tg-df-author-media-slot .tg-df-author-image {      margin: 0 auto !important;    }    .tg-df-author-profile-image-wrapper {      position: relative !important;      width: 180px !important;      height: 180px !important;      margin: 0 auto 0.75rem auto !important;      flex: 0 0 auto !important;    }    .tg-df-author-profile-brand-logo {      position: absolute !important;      right: 12px !important;      bottom: 12px !important;      width: 42px !important;      height: 42px !important;      padding: 0 !important;      border: 3px solid var(--tg-df-bg, #fff) !important;      border-radius: 50% !important;      background: #000 !important;      object-fit: contain !important;      box-sizing: border-box !important;    }    .tg-df-author-curated-by {      font-size: 0.875rem !important;      color: #6B7280 !important;      font-style: normal !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      line-height: 1.4 !important;    }    .tg-df-author-name {      font-size: 2rem !important;      font-weight: 300 !important;      color: #111827 !important;      margin: 0 0 0.25rem 0 !important;      padding: 0 !important;      line-height: 1.1 !important;      letter-spacing: -0.02em !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-role {      font-size: 0.9375rem !important;      font-weight: 500 !important;      color: var(--tg-df-blue, #1F69FF) !important;      margin: 0 0 1.25rem 0 !important;      padding: 0 !important;      line-height: 1.3 !important;      border: none !important;      background: none !important;      font-family: inherit !important;      text-transform: none !important;    }    .tg-df-author-meta-slot {      width: 100% !important;      min-height: 88px !important;      display: flex !important;      flex-direction: column !important;      align-items: center !important;      justify-content: flex-start !important;    }    .tg-df-author-meta-slot--site {      padding-top: 1rem !important;    }    .tg-df-author-meta-slot--no-social {      min-height: 0 !important;    }    .tg-df-author-meta-slot--no-social .tg-df-author-role {      margin-bottom: 0.5rem !important;    }    .tg-df-author-social-links {      display: flex !important;      flex-wrap: wrap !important;      align-items: center !important;      justify-content: center !important;      gap: 1rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 !important;      max-width: 42rem !important;      width: 100% !important;      list-style: none !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-social-btn {      display: inline-flex !important;      align-items: center !important;      justify-content: center !important;      padding: 0 !important;      border-radius: 50% !important;      background-color: #f2f2f2 !important;      color: #111111 !important;      font-size: 0.8125rem !important;      font-weight: 500 !important;      text-decoration: none !important;      transition: all 0.2s ease !important;      border: 0 !important;      line-height: 1 !important;      box-shadow: none !important;      cursor: pointer !important;      outline: none !important;      margin: 0 !important;      height: 34px !important;      width: 34px !important;      min-width: 34px !important;      box-sizing: border-box !important;    }    .tg-df-author-social-btn:hover {      background-color: #dedede !important;      color: #111111 !important;      transform: translateY(-1px) !important;    }    .tg-df-author-social-btn > svg {      width: 19px !important;      height: 19px !important;      flex-shrink: 0 !important;      display: block !important;      margin: 0 !important;    }    .tg-df-author-social-btn[data-social-key="facebook"] > svg {      transform: scale(1.25) !important;    }    .tg-df-author-social-btn[data-social-key="pinterest"] > svg,    .tg-df-author-social-btn[data-social-key="tiktok"] > svg {      transform: scale(1.2) !important;    }    .tg-df-author-bio {      max-width: 42rem !important;      margin: 0 auto 1.25rem auto !important;      padding: 0 0.5rem !important;      color: #4b5563 !important;      line-height: 1.6 !important;      font-weight: 300 !important;      font-size: 0.9375rem !important;      text-align: center !important;      background: none !important;      border: none !important;      border-radius: 0 !important;      box-shadow: none !important;      display: block !important;      height: auto !important;      overflow: visible !important;    }    .tg-df-author-bio-shell--stable {      width: 100% !important;      box-sizing: border-box !important;    }    .tg-df-author-bio--clamped {      min-height: 4.8em !important;      height: 4.8em !important;      max-height: 4.8em !important;      display: -webkit-box !important;      -webkit-box-orient: vertical !important;      -webkit-line-clamp: 3 !important;      overflow: hidden !important;    }    .tg-df-author-bio--expanded {      min-height: 4.8em !important;      height: auto !important;      max-height: none !important;      display: block !important;      overflow: visible !important;    }    .tg-df-author-bio--static,    .tg-df-author-bio--static:hover,    .tg-df-author-bio--static:focus,    .tg-df-author-bio--static:focus-visible {      outline: none !important;      box-shadow: none !important;      cursor: default !important;    }    .tg-df-author-bio-toggle-slot {      height: 28px !important;      display: flex !important;      align-items: center !important;      justify-content: center !important;      margin: 0.125rem 0 0 !important;    }    .tg-df-author-bio-toggle {      appearance: none !important;      border: 0 !important;      border-bottom: 1px solid currentColor !important;      border-radius: 0 !important;      padding: 0.125rem 0 !important;      margin: 0 !important;      background: transparent !important;      color: #4b5563 !important;      box-shadow: none !important;      font: inherit !important;      font-size: 0.75rem !important;      font-weight: 600 !important;      line-height: 1.2 !important;      text-decoration: none !important;      text-transform: none !important;      cursor: pointer !important;    }    .tg-df-author-bio a {      color: var(--tg-df-blue, #1F69FF) !important;      text-decoration: underline !important;      font-weight: 400 !important;      background: none !important;      border: none !important;      padding: 0 !important;      margin: 0 !important;      border-radius: 0 !important;      display: inline !important;      box-shadow: none !important;    }    .tg-df-author-bio p,    .tg-df-author-bio div,    .tg-df-author-bio span {      margin: 0 !important;      padding: 0 !important;      color: inherit !important;      font: inherit !important;      line-height: inherit !important;      text-align: inherit !important;      text-transform: none !important;      letter-spacing: normal !important;      background: none !important;      border: none !important;      box-shadow: none !important;    }    .tg-df-author-bio strong,    .tg-df-author-bio b {      font-weight: 600 !important;    }    .tg-df-author-bio em,    .tg-df-author-bio i {      font-style: italic !important;    }    @container tg-df (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @media (min-width: 600px) {      .tg-df-author-image {        width: 180px !important;        height: 180px !important;      }      .tg-df-author-name {        font-size: 2.5rem !important;      }    }    @container tg-df (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @media (max-width: 768px) {      .tg-df-container .hawk-deal-widget-footer { display: flex !important; justify-content: flex-start !important; width: 100% !important; margin-top: auto !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; justify-content: flex-start !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { padding-right: 12px !important; }    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }    @media (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: flex !important; flex-direction: row !important; align-items: stretch !important; gap: 12px !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-image-container { display: flex !important; flex-shrink: 0 !important; width: 110px !important; max-width: 110px !important; height: auto !important; align-items: center !important; justify-content: center !important; background: #f8fafc !important; border-radius: 6px !important; padding: 8px !important; margin: 0 !important; float: none !important; box-sizing: border-box !important; }      .tg-df-container .hawk-lazy-image-deal-widget { max-height: 120px !important; max-width: 100% !important; height: auto !important; width: auto !important; object-fit: contain !important; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: flex !important; flex-direction: column !important; justify-content: space-between !important; flex: 1 !important; min-width: 0 !important; width: auto !important; text-align: left !important; gap: 6px !important; padding-right: 12px !important; }      .tg-df-container .hawk-deal-widget-text-body-container { width: 100% !important; }      .tg-df-author-line-mobile { padding: 2px 0 4px 0 !important; margin-bottom: 2px !important; }      .tg-df-container .hawk-deal-widget-footer { display: flex !important; margin-top: auto !important; clear: none !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: flex !important; width: 100% !important; align-items: stretch !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: flex !important; width: 100% !important; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; align-items: center !important; justify-content: center !important; max-width: none !important; width: 100% !important; min-width: 0 !important; padding: 5px 12px !important; font-size: 11px !important; font-weight: 700 !important; margin: 0 !important; border-radius: 0 !important; height: 30px !important; }    }        .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button {      align-items: center; background-color: var(--tg-df-blue); box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;    }    .tg-df-container .hawk-deal-widget-button-wrapper .hawk-affiliate-link-deal-button:hover { filter: brightness(0.85); text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }    .tg-df-active-badges-row {      display: flex;      flex-wrap: wrap;      gap: 8px;      align-items: center;      margin-top: 12px;      margin-bottom: 16px;      width: 100%;    }    .tg-df-active-badge {      display: inline-flex;      align-items: center;      gap: 6px;      padding: 8px 14px;      background-color: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border: 1px solid var(--tg-df-blue, #1f69ff);      border-radius: 0px;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;    }    .tg-df-badge-remove {      display: inline-flex;      align-items: center;      justify-content: center;      width: 16px;      height: 16px;      border-radius: 0px;      border: none;      background: rgba(255, 255, 255, 0.25);      color: #ffffff;      cursor: pointer;      padding: 0;      margin-left: 4px;      transition: background-color 0.15s, color 0.15s;    }    .tg-df-badge-remove:hover {      background: rgba(255, 255, 255, 0.45);      color: #ffffff;    }    .tg-df-badge-clear-all {      display: inline-flex;      align-items: center;      justify-content: center;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      line-height: 1;      padding: 8px 14px;      color: var(--tg-df-text-muted, #64748b);      cursor: pointer;      background: #ffffff;      border: 1px solid var(--tg-df-border, #e2e8f0);      border-radius: 0px;      transition: all 0.15s ease;    }    .tg-df-badge-clear-all:hover {      background: var(--tg-df-blue, #1f69ff);      color: #ffffff;      border-color: var(--tg-df-blue, #1f69ff);    }    .tg-df-savings-squad-header {      margin-bottom: 24px;      text-align: center;    }    .tg-df-banner-img-desktop {      display: block;      width: 100%;      height: auto;      margin-bottom: 32px;    }    .tg-df-banner-img-mobile {      display: none;      width: 100%;      height: auto;      margin-bottom: 32px;    }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop {        display: none;      }      .tg-df-banner-img-mobile {        display: block;      }    }    .tg-df-header-title {      font-size: 28px;      font-weight: 700;      color: var(--tg-df-text);      margin: 32px 0 12px 0;      line-height: 1.3;    }    .tg-df-header-subtitle {      font-size: 16px;      color: var(--tg-df-text-muted);      margin: 0 0 32px 0;      line-height: 1.5;    }    @container tg-df (max-width: 599px) {      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    @media (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-filters-container { display: none !important; }      #tg-df-controls { display: none !important; }      .tg-df-grid.tg-df-grid-auto, .tg-df-grid { padding-top: 0px !important; }      .tg-df-container .hawk-deal-widget-container:first-child { padding-top: 8px !important; }      .tg-df-container .tg-df-card:first-child { margin-top: 0px !important; }    }    /* Article Intro Content Styling */    .tg-df-article-content {      font-size: 1rem;      line-height: 1.7;      color: #334155;    }    .tg-df-article-content p {      margin-bottom: 1.25rem;      line-height: 1.7;      font-size: 1rem;      color: #334155;    }    .tg-df-article-content > p:first-of-type::first-letter {      font-size: 3.25rem;      font-weight: 700;      float: left;      line-height: 0.85;      margin-right: 0.5rem;      margin-top: 0.15rem;      color: #0f172a;      font-family: inherit;    }    .tg-df-article-content a {      color: #0066cc;      text-decoration: underline;      font-weight: 500;    }    .tg-df-article-content a:hover {      color: #004499;    }    .tg-df-article-content strong, .tg-df-article-content b {      font-weight: 700;      color: #0f172a;    }    .tg-df-article-section-banner {      border-bottom: 2px solid #e6007e;      margin: 2.25rem 0 1.25rem 0;      position: relative;      clear: both;    }    .tg-df-article-section-banner span {      background-color: #e6007e;      color: #ffffff;      padding: 6px 16px;      font-weight: 700;      font-size: 0.875rem;      text-transform: uppercase;      letter-spacing: 0.05em;      display: inline-block;    }  </style><div class="tg-df-widget-host" data-vizualizer-embed="true" data-tg-df-full-bleed="false" data-tg-df-mobile-dropdowns="true" data-tg-df-sticky-mobile-filters="false" style="--tg-df-blue: #DC191B;"><div class="tg-df-container article-body" style="background-color: transparent;"><div id="tg-df-spreadsheet-filters" style="display: block; margin-bottom: 16px;"><div class="tg-df-categories-row-container" style="border-bottom: 1px solid var(--tg-df-border); position: relative;"><button aria-label="Scroll left" class="tg-df-scroll-btn left tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6"></path></svg></button><button aria-label="Scroll right" class="tg-df-scroll-btn right tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-categories-row" style="display: flex; overflow-x: auto; scrollbar-width: none;"><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Hardware <span style="color: var(--tg-df-blue); font-size: 10px;">251</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming PCs <span style="color: var(--tg-df-blue); font-size: 10px;">58</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">SSDs <span style="color: var(--tg-df-blue); font-size: 10px;">54</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Storage <span style="color: var(--tg-df-blue); font-size: 10px;">54</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Monitors <span style="color: var(--tg-df-blue); font-size: 10px;">45</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Laptops <span style="color: var(--tg-df-blue); font-size: 10px;">24</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Graphics Cards <span style="color: var(--tg-df-blue); font-size: 10px;">17</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Controllers <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Headsets <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button><button class="tg-df-category-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gaming Audio <span style="color: var(--tg-df-blue); font-size: 10px;">1</span></button></div></div><div class="tg-df-brands-row-container" style="border-bottom: 1px solid var(--tg-df-border); position: relative;"><button aria-label="Scroll left" class="tg-df-scroll-btn left tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M15 18l-6-6 6-6"></path></svg></button><button aria-label="Scroll right" class="tg-df-scroll-btn right tg-df-desktop-only" type="button" style="display: none;"><svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-brands-row" style="display: flex; overflow-x: auto; scrollbar-width: none;"><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Acer <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">36</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">MSI <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">33</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Asus <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">18</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Crucial <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">17</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Samsung <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">14</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Andromeda Insights <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">13</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Gigabyte <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">13</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Team Group <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">11</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">ASRock <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">11</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">WD_Black <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">9</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">iBuyPower <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">8</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">ABS <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">7</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">Skytech <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">7</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">LG <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">7</span></button><button class="tg-df-brand-row-item" style="border-top-width: medium; border-right: 1px solid var(--tg-df-border); border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-bottom-style: none; border-left-style: none; border-top-color: currentcolor; border-bottom-color: currentcolor; border-left-color: currentcolor; border-image: none; padding: 12px 20px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: 0.2s; background: var(--tg-df-bg); color: var(--tg-df-text-muted); font-weight: 500;">HP <span style="color: var(--tg-df-blue); font-size: 10px; font-weight: 400;">6</span></button></div></div></div><div class="tg-df-mobile-2x2-container"><div class="tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--even"><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>CATEGORIES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>BRANDS</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>PRICES</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" class="tg-df-mobile-grid-cell" aria-expanded="false"><span>DISCOUNTS</span><svg aria-hidden="true" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="m6 9 6 6 6-6"></path></svg></button></div></div><div class="tg-df-controls" id="tg-df-controls" style="display: flex; margin-top: 12px; margin-bottom: 16px; justify-content: center;"><div class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0px auto;"><button class="tg-df-scroll-btn left" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 18l-6-6 6-6"></path></svg></button><button class="tg-df-scroll-btn right" style="display: none;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"></path></svg></button><div class="tg-df-filters"><div class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices"><option value="all">All Prices</option><option value="under50">Under $50</option><option value="50_100">$50 - $100</option><option value="100_200">$100 - $200</option><option value="200_500">$200 - $500</option><option value="over500">Over $500</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper" style="display: flex;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"></path></svg><select class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount"><option value="all">Any discount</option><option value="5">Min 5%</option><option value="10">Min 10%</option><option value="15">Min 15%</option><option value="20">Min 20%</option><option value="25">Min 25%</option><option value="30">Min 30%</option><option value="40">Min 40%</option><option value="50">Min 50%</option><option value="60">Min 60%</option><option value="70">Min 70%</option></select></div><div class="tg-df-sort-wrapper" id="tg-df-review-sort-wrapper" style="display: none;"><svg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h16M7 12h10m-7 5h4"></path></svg><select class="tg-df-filter-select" id="tg-df-review-sort" aria-label="Sort Reviews"><option value="date_desc">Most recent</option><option value="rating_desc">Highest rating</option><option value="scored_first">Scored products first</option></select></div></div></div></div><div class="tg-df-grid-wrapper"><div class="tg-df-grid article-body tg-df-grid-auto" id="tg-df-grid"><div class="tg-df-card" data-brand="Yawyore" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-0" data-merchant="Newegg" data-previous-price="819.99" data-price="599.99" data-product-name="Gaming PC | Ryzen 5 5600GT"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $220</span><a href="https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Gaming PC | Ryzen 5 5600GT" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Gaming PC | Ryzen 5 5600GT"><a href="https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Yawyore Gaming PC | Ryzen 5 5600GT</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. Key specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>599.99</span></span><span class="tg-df-card-msrp">$819.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="ABS" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-1" data-merchant="Walmart" data-previous-price="999.99" data-price="899" data-product-name="Cyclone Aqua | RTX 5060"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $100.99</span><a href="https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Cyclone Aqua | RTX 5060" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Cyclone Aqua | RTX 5060"><a href="https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>ABS Cyclone Aqua | RTX 5060</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">You're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you are getting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming. Key specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>899</span></span><span class="tg-df-card-msrp">$999.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Stormcraft" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-2" data-merchant="Newegg" data-previous-price="1299.99" data-price="999.99" data-product-name="Sirius | RTX 5060"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $300</span><a href="https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Sirius | RTX 5060" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Sirius | RTX 5060"><a href="https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Stormcraft Sirius | RTX 5060</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too. Key specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>999.99</span></span><span class="tg-df-card-msrp">$1299.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="ABS" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-3" data-merchant="Newegg" data-previous-price="1399.99" data-price="1079.99" data-product-name="Cyclone Aqua | RTX 5060"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $320</span><a href="https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Cyclone Aqua | RTX 5060" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Cyclone Aqua | RTX 5060"><a href="https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>ABS Cyclone Aqua | RTX 5060</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">If you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. Use promo code ABSIGD20 for the full discount. Key specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - OUT OF STOCK **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1079.99</span></span><span class="tg-df-card-msrp">$1399.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Newegg</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="CyberPowerPC" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-4" data-merchant="Walmart" data-previous-price="1639.99" data-price="1249" data-product-name="Gamer Xtreme | RTX 5060 Ti 8 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $390.99</span><a href="https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Gamer Xtreme | RTX 5060 Ti 8 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Gamer Xtreme | RTX 5060 Ti 8 GB"><a href="https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>CyberPowerPC Gamer Xtreme | RTX 5060 Ti 8 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love the non-F version (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess. Key specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1249</span></span><span class="tg-df-card-msrp">$1639.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="iBuyPower" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-5" data-merchant="Walmart" data-previous-price="1499" data-price="1299" data-product-name="Element SE | RTX 5060 Ti 8 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $200</span><a href="https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Element SE | RTX 5060 Ti 8 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Element SE | RTX 5060 Ti 8 GB"><a href="https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>iBuyPower Element SE | RTX 5060 Ti 8 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">If you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting. Key specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1299</span></span><span class="tg-df-card-msrp">$1499</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-6" data-merchant="Bhphotovideo" data-previous-price="1599" data-price="1399" data-product-name="Codex Z2C | RTX 5070"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $200</span><a href="https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Codex Z2C | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Codex Z2C | RTX 5070"><a href="https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI Codex Z2C | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">The headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders. Key specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1399</span></span><span class="tg-df-card-msrp">$1599</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bhphotovideo</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="iBuyPower" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-7" data-merchant="Walmart" data-previous-price="1799" data-price="1399" data-product-name="Slate | RTX 5060 Ti 8 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $400</span><a href="https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Slate | RTX 5060 Ti 8 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Slate | RTX 5060 Ti 8 GB"><a href="https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>iBuyPower Slate | RTX 5060 Ti 8 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">This is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though. Key specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1399</span></span><span class="tg-df-card-msrp">$1799</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="HP" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-8" data-merchant="Bestbuy" data-previous-price="1919.99" data-price="1399.99" data-product-name="Omen 35L Valorant | RTX 5060 Ti 16 GB"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $520</span><a href="https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Omen 35L Valorant | RTX 5060 Ti 16 GB" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Omen 35L Valorant | RTX 5060 Ti 16 GB"><a href="https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>HP Omen 35L Valorant | RTX 5060 Ti 16 GB</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Yes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity. Key specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1399.99</span></span><span class="tg-df-card-msrp">$1919.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Bestbuy</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="MSI" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-9" data-merchant="Walmart" data-price="1499" data-product-name="Codex R2 AI | RTX 5070"><div class="tg-df-card-image-box"><a href="https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Codex R2 AI | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Codex R2 AI | RTX 5070"><a href="https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>MSI Codex R2 AI | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">For mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1499</span></span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Skytech" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-10" data-merchant="Amazon" data-previous-price="1699.99" data-price="1599.99" data-product-name="Gaming Blaze 5 | RTX 5070"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $100</span><a href="https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Gaming Blaze 5 | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Gaming Blaze 5 | RTX 5070"><a href="https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Skytech Gaming Blaze 5 | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">We're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. Key specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1599.99</span></span><span class="tg-df-card-msrp">$1699.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Amazon</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-card" data-brand="Acer" data-currency="$" data-deal-id="airedale-dxkEzyn9RrvdYTZs2ZP4fT-11" data-merchant="Walmart" data-previous-price="2099.99" data-price="1499" data-product-name="Nitro 85 | RTX 5070"><div class="tg-df-card-image-box"><span class="tg-df-card-discount-badge">Save $600.99</span><a href="https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163" data-fcaw-affiliate-link="" class="hawk-affiliate-link-deal-widget" target="_blank" rel="sponsored nofollow noopener" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;"><img alt="Nitro 85 | RTX 5070" class="tg-df-card-image" loading="lazy" src="https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png"></a><div class="tg-df-card-badges"></div></div><div class="tg-df-card-body"><h3 class="tg-df-card-title" title="Nitro 85 | RTX 5070"><a href="https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163" data-fcaw-affiliate-link="" class="hawk-affiliate-link-container" target="_blank" rel="sponsored nofollow noopener" style="text-decoration: none; color: inherit;"><strong>Acer Nitro 85 | RTX 5070</strong></a></h3><div style="margin-bottom: 12px; position: relative;"><p style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">Another RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **</p><button type="button" style="display: block; appearance: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; color: rgb(0, 0, 0); font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0px; background: linear-gradient(to right, transparent, rgb(255, 255, 255) 20%, rgb(255, 255, 255)); padding: 0px 0px 0px 16px;">READ MORE</button></div><div class="tg-df-card-footer"><div class="tg-df-card-price-group"><span class="tg-df-card-price">$<span>1499</span></span><span class="tg-df-card-msrp">$2099.99</span></div><div class="tg-df-author-line-desktop" style="padding: 0px 0px 12px;"><div style="display: flex; align-items: center; gap: 10px;"><img alt="Jacob Fox" class="tg-df-author-img" width="36" height="36" src="https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-480-80.png" style="border-radius: 50%; object-fit: cover; flex-shrink: 0; aspect-ratio: 1 / 1; min-width: 36px; min-height: 36px;"><div style="display: flex; flex-direction: column;"><div style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;"><span style="color: rgb(255, 102, 0);">Walmart</span> deal recommended by:</div><div style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;"><strong><a href="https://www.pcgamer.com/best-cheap-gaming-pc" target="_blank" rel="noopener" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">Jacob Fox</a></strong> • Hardware Writer<span style="color: var(--tg-df-text-muted);"> • 1 hr ago</span></div></div></div></div><a href="https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163" data-fcaw-affiliate-link="" target="_blank" rel="sponsored nofollow noopener" class="tg-df-card-cta hawk-affiliate-link-deal-button" style="text-decoration: none;">VIEW DEAL</a></div></div></div><div class="tg-df-load-more-control" style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1; overflow-anchor: none;"><button type="button" class="tg-df-tag-outline" aria-busy="false" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer;">Load More</button></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"Product","name":"Gaming PC | Ryzen 5 5600GT","image":"https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png","description":"The integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. Key specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD","brand":{"@type":"Brand","name":"Yawyore"},"offers":{"@type":"Offer","priceCurrency":"USD","price":599.99,"url":"https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":2,"item":{"@type":"Product","name":"Cyclone Aqua | RTX 5060","image":"https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png","description":"You're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you are getting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming. Key specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD","brand":{"@type":"Brand","name":"ABS"},"offers":{"@type":"Offer","priceCurrency":"USD","price":899,"url":"https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":3,"item":{"@type":"Product","name":"Sirius | RTX 5060","image":"https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png","description":"This is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too. Key specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD","brand":{"@type":"Brand","name":"Stormcraft"},"offers":{"@type":"Offer","priceCurrency":"USD","price":999.99,"url":"https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":4,"item":{"@type":"Product","name":"Cyclone Aqua | RTX 5060","image":"https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png","description":"If you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. Use promo code ABSIGD20 for the full discount. Key specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - OUT OF STOCK **","brand":{"@type":"Brand","name":"ABS"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1079.99,"url":"https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981&cm_sp=product-_-from-price-options","seller":{"@type":"Organization","name":"Newegg"}}}},{"@type":"ListItem","position":5,"item":{"@type":"Product","name":"Gamer Xtreme | RTX 5060 Ti 8 GB","image":"https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png","description":"The main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love the non-F version (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess. Key specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"CyberPowerPC"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1249,"url":"https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":6,"item":{"@type":"Product","name":"Element SE | RTX 5060 Ti 8 GB","image":"https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png","description":"If you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting. Key specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD","brand":{"@type":"Brand","name":"iBuyPower"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1299,"url":"https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":7,"item":{"@type":"Product","name":"Codex Z2C | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png","description":"The headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders. Key specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1399,"url":"https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html","seller":{"@type":"Organization","name":"Bhphotovideo"}}}},{"@type":"ListItem","position":8,"item":{"@type":"Product","name":"Slate | RTX 5060 Ti 8 GB","image":"https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png","description":"This is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though. Key specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD","brand":{"@type":"Brand","name":"iBuyPower"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1399,"url":"https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":9,"item":{"@type":"Product","name":"Omen 35L Valorant | RTX 5060 Ti 16 GB","image":"https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png","description":"Yes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity. Key specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"HP"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1399.99,"url":"https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210","seller":{"@type":"Organization","name":"Bestbuy"}}}},{"@type":"ListItem","position":10,"item":{"@type":"Product","name":"Codex R2 AI | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png","description":"For mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"MSI"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1499,"url":"https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663","seller":{"@type":"Organization","name":"Walmart"}}}},{"@type":"ListItem","position":11,"item":{"@type":"Product","name":"Gaming Blaze 5 | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png","description":"We're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. Key specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD","brand":{"@type":"Brand","name":"Skytech"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1599.99,"url":"https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ","seller":{"@type":"Organization","name":"Amazon"}}}},{"@type":"ListItem","position":12,"item":{"@type":"Product","name":"Nitro 85 | RTX 5070","image":"https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png","description":"Another RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","brand":{"@type":"Brand","name":"Acer"},"offers":{"@type":"Offer","priceCurrency":"USD","price":1499,"url":"https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163","seller":{"@type":"Organization","name":"Walmart"}}}}]}</script></div></div><div class="tg-df-modal-backdrop "><div class="tg-df-modal"><div class="tg-df-modal-header"><h3 class="tg-df-modal-title">Available Coupons & Deals</h3><button class="tg-df-modal-close"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div><div class="tg-df-modal-body"><div class="tg-df-message">No active vouchers found for .</div></div></div></div></div></div>  </div>  <script type="application/json" data-fcaw-config>{"authorBioLength":"short","authorFullBleed":false,"authorHandle":"all-authors","authorName":"All authors","backgroundColor":"transparent","customBio":"","discountAmount":"0","editorMode":false,"editorialMaxAgeMonths":"12","includeBuyingGuideProducts":false,"includeCollections":false,"includeDeals":true,"includeReviewProducts":false,"mobileDropdowns":true,"stickyMobileFilters":false,"offerType":"","preloadReviewInventory":false,"lightweightReviewDelivery":false,"prioritiseCommercialProducts":true,"priceRange":"all","productSelection":"latest","query":"Everything","region":"auto","resultCount":"12","retailer":"","selectedBrands":[],"showAuthorBio":false,"showAuthorCounters":true,"showAuthorIdentity":false,"showAuthorRail":false,"showBrandRail":true,"showCategoryRail":true,"showCollectionsDropdown":false,"showPriceDiscountFilters":true,"showReviewSort":false,"showSocialButtons":false,"showCountdown":false,"showHeaderDetails":true,"showFreeformTagRail":false,"sort":"date_desc","viewMode":"author","website":"pcgamer","widgetSubtitle":"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.","widgetTitle":"Top Deals Handpicked by Our Editors","brands":[],"shortenedHeadlines":{},"compactEmbed":true}</script>  <script type="application/json" data-fcaw-preload>{"authors":[{"bioLong":"James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.","bioShort":"James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.","name":"James","fullName":"James Bentley","handle":"james-bentley","role":"Hardware writer","image":"https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png","brandKey":"pcgamer"},{"bioLong":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","bioShort":"Dave has been gaming since the days of Zaxxon and Lady Bug on the Colecovision, and code books for the Commodore Vic 20 (Death Race 2000!). He built his first gaming PC at the tender age of 16, and finally finished bug-fixing the Cyrix-based system around a year later. When he dropped it out of the window. He first started writing for Official PlayStation Magazine and Xbox World many decades ago, then moved onto PC Format full-time, then PC Gamer, TechRadar, and T3 among others. Now he's back, writing about the nightmarish graphics card market, CPUs with more cores than sense, gaming laptops hotter than the sun, and SSDs more capacious than a Cybertruck.","name":"Dave","fullName":"Dave James","handle":"dave-james","role":"Editor-in-Chief, Hardware","image":"https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/not_the_gk","label":"X (Twitter)"},{"key":"email","href":"mailto:dave.james@futurenet.com","label":"Email"}]},{"bioLong":"Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she's either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.\u0026nbsp;","bioShort":"Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she's either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.\u0026nbsp;","name":"Jess","fullName":"Jess Kinghorn","handle":"jess-kinghorn","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png","brandKey":"pcgamer","socialNetworks":[{"key":"twitter","href":"https://twitter.com/KoeniginKatze","label":"X (Twitter)"},{"key":"linkedin","href":"https://www.linkedin.com/in/jess-kinghorn","label":"LinkedIn"}]},{"bioLong":"Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob's led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","bioShort":"Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob's led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world's #1 PC Gaming site full-time. It's definitely not an ego thing, he assures us.","name":"Jacob","fullName":"Jacob Fox","handle":"jacob-fox","role":"Hardware Writer","image":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","brandKey":"pcgamer"},{"bioLong":"Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you'll usually find him testing the latest components or building a gaming PC. He says he's determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he's lucky, plush press rooms at the biggest tech shows, such as Computex and CES. When he's not writing about components, you'll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.","bioShort":"Jacob has been writing about PC hardware and technology for over eight years. He earned his first byline at PCGamesN before joining PC Gamer. He spends most of his time building PCs, running benchmarks, and trying his best to learn Linux.","name":"Jacob","fullName":"Jacob Ridley","handle":"jacob-ridley","role":"Managing Editor, Hardware","image":"https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png","brandKey":"pcgamer"}],"brands":[{"formatted_value":"Acer","count":36},{"formatted_value":"MSI","count":33},{"formatted_value":"Asus","count":18},{"formatted_value":"Crucial","count":17},{"formatted_value":"Samsung","count":14},{"formatted_value":"Andromeda Insights","count":13},{"formatted_value":"Gigabyte","count":13},{"formatted_value":"Team Group","count":11},{"formatted_value":"ASRock","count":11},{"formatted_value":"WD_Black","count":9},{"formatted_value":"iBuyPower","count":8},{"formatted_value":"ABS","count":7},{"formatted_value":"Skytech","count":7},{"formatted_value":"LG","count":7},{"formatted_value":"HP","count":6},{"formatted_value":"KTC","count":6},{"formatted_value":"Silicon Power","count":5},{"formatted_value":"Adata","count":5},{"formatted_value":"PNY","count":5},{"formatted_value":"Lenovo","count":5},{"formatted_value":"Koorui","count":4},{"formatted_value":"Alienware","count":4},{"formatted_value":"Razer","count":4},{"formatted_value":"Biwin","count":3},{"formatted_value":"Patriot","count":3},{"formatted_value":"Yawyore","count":2},{"formatted_value":"Stormcraft","count":2},{"formatted_value":"CyberPowerPC","count":2},{"formatted_value":"AOC","count":2},{"formatted_value":"Kingston","count":2},{"formatted_value":"Lexar","count":2},{"formatted_value":"WD Blue","count":2},{"formatted_value":"Dell","count":2},{"formatted_value":"Innocn","count":2},{"formatted_value":"HyperX","count":2},{"formatted_value":"Logitech","count":2},{"formatted_value":"Western Digital WD Blue","count":1},{"formatted_value":"WD","count":1},{"formatted_value":"Yeston","count":1},{"formatted_value":"PowerColor","count":1},{"formatted_value":"Steam","count":1},{"formatted_value":"Onix Lumi","count":1},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1},{"formatted_value":"AVGPC","count":1},{"formatted_value":"Thermaltake","count":1}],"activeDealTag":null,"activeFreeformTag":null,"activeFreeformTags":[],"couponMap":{"Newegg":"none","Walmart":"none","Bhphotovideo":"none","Bestbuy":"none","Amazon":"has","Lg":"none","Hp":"none","Store":"none"},"totalAuthorCount":5,"totalDealCount":188,"tagCounts":{"Gaming PCs":58,"Hardware":251,"Gaming Monitors":45,"SSDs":54,"Storage":54,"Graphics Cards":17,"Gaming Laptops":24,"Controllers":1,"Gaming Headsets":1,"Gaming Audio":1},"tags":["Hardware","Gaming PCs","SSDs","Storage","Gaming Monitors","Gaming Laptops","Graphics Cards","Controllers","Gaming Headsets","Gaming Audio"],"freeformTagCounts":{"intel":25,"deals":163,"ryzen":28,"gaming-pc":33,"hardware":251,"oled":2,"aoc-q27gazd":1,"1440p":1,"1440p-gaming-monitor":1,"gaming-monitor":10,"gaming-monitor-deal":9,"aoc":1,"deal":47,"ssd":54,"solid-state-drive":54,"solid-state":54,"hdd":54,"hard-drive":54,"storage":54,"gpu":17,"graphics-card":17,"buying-guide":15,"monitor":8,"esport-monitor":7,"monitor-deals":8,"1080p":2,"4k":2,"4k-monitor":7,"4k-gaming":2,"koorui":1,"koorui-g2741l":1,"monitors":36,"gaming-laptop":24,"budget":24,"cheap":24,"gaming-pc-deals":9,"collections":8,"labor-day":109,"nvidia":3,"amd":6,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"acer":4,"prebuilt":1,"prebuilt-pcs":1,"gaming-prebuilts":1,"rtx-5060-ti":1,"ddr4":1,"ddr4-ram":1,"memory":4,"memory-crisis":4,"amd-ryzen-5-5600x":1,"ryzen-5-5600x":1,"asrock":1,"oled-gaming-monitor":1,"msi":3,"thermaltake":3,"headset":1,"gaming-headset":1,"wireless-gaming-headset":1,"wireless":1,"hyperx":1,"hyperx-cloud-alpha-wireless":1,"rx-9070-xt":1,"memory-shortage":3,"cpu":3,"bundle":3,"newegg":3,"newegg-deals":3,"asus":3,"tuf-gaming":3,"am5":3,"samsung":3,"motherboard":3,"team-group":3,"combo-deal":3},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"deals","label":"deals","requestValue":"deals"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gpu","label":"GPU","requestValue":"GPU"},{"handle":"graphics-card","label":"graphics card","requestValue":"graphics card"},{"handle":"buying-guide","label":"buying guide","requestValue":"buying guide"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"esport-monitor","label":"esport monitor","requestValue":"esport monitor"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"amd","label":"AMD","requestValue":"AMD"},{"handle":"acer","label":"Acer","requestValue":"Acer"},{"handle":"memory","label":"memory","requestValue":"memory"},{"handle":"memory-crisis","label":"memory crisis","requestValue":"memory crisis"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"msi","label":"MSI","requestValue":"MSI"},{"handle":"thermaltake","label":"Thermaltake","requestValue":"Thermaltake"},{"handle":"memory-shortage","label":"memory shortage","requestValue":"memory shortage"},{"handle":"cpu","label":"CPU","requestValue":"CPU"},{"handle":"bundle","label":"bundle","requestValue":"bundle"},{"handle":"newegg","label":"Newegg","requestValue":"Newegg"},{"handle":"newegg-deals","label":"newegg deals","requestValue":"newegg deals"},{"handle":"asus","label":"Asus","requestValue":"Asus"},{"handle":"tuf-gaming","label":"TUF Gaming","requestValue":"TUF Gaming"},{"handle":"am5","label":"AM5","requestValue":"AM5"},{"handle":"samsung","label":"Samsung","requestValue":"Samsung"},{"handle":"motherboard","label":"Motherboard","requestValue":"Motherboard"},{"handle":"team-group","label":"team group","requestValue":"team group"},{"handle":"combo-deal","label":"combo deal","requestValue":"combo deal"},{"handle":"oled","label":"OLED","requestValue":"OLED"},{"handle":"1080p","label":"1080p","requestValue":"1080p"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"aoc-q27gazd","label":"AOC Q27GAZD","requestValue":"AOC Q27GAZD"},{"handle":"1440p","label":"1440p","requestValue":"1440p"},{"handle":"1440p-gaming-monitor","label":"1440p gaming monitor","requestValue":"1440p gaming monitor"},{"handle":"aoc","label":"AOC","requestValue":"AOC"},{"handle":"koorui","label":"Koorui","requestValue":"Koorui"},{"handle":"koorui-g2741l","label":"Koorui G2741L","requestValue":"Koorui G2741L"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"prebuilt","label":"prebuilt","requestValue":"prebuilt"},{"handle":"prebuilt-pcs","label":"Prebuilt PCs","requestValue":"Prebuilt PCs"},{"handle":"gaming-prebuilts","label":"gaming prebuilts","requestValue":"gaming prebuilts"},{"handle":"rtx-5060-ti","label":"RTX 5060 Ti","requestValue":"RTX 5060 Ti"},{"handle":"ddr4","label":"ddr4","requestValue":"ddr4"},{"handle":"ddr4-ram","label":"DDR4 RAM","requestValue":"DDR4 RAM"},{"handle":"amd-ryzen-5-5600x","label":"AMD Ryzen 5 5600X","requestValue":"AMD Ryzen 5 5600X"},{"handle":"ryzen-5-5600x","label":"Ryzen 5 5600X","requestValue":"Ryzen 5 5600X"},{"handle":"asrock","label":"ASRock","requestValue":"ASRock"},{"handle":"oled-gaming-monitor","label":"oled gaming monitor","requestValue":"oled gaming monitor"},{"handle":"headset","label":"headset","requestValue":"headset"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"wireless-gaming-headset","label":"wireless gaming headset","requestValue":"wireless gaming headset"},{"handle":"wireless","label":"wireless","requestValue":"wireless"},{"handle":"hyperx","label":"HyperX","requestValue":"HyperX"},{"handle":"hyperx-cloud-alpha-wireless","label":"HyperX Cloud Alpha Wireless","requestValue":"HyperX Cloud Alpha Wireless"},{"handle":"rx-9070-xt","label":"RX 9070 XT","requestValue":"RX 9070 XT"}],"reviewInventoryBaked":false,"regionalDealManifests":{"US":[{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-0","url":"https://www.newegg.com/yawyore-gaming-pc-gaming-desktop-pcs-amd-radeon-vega-7-amd-ryzen-5-5600gt-16gb-ddr4-1-tb-nvme-m-2-ssd-mx240-black/p/3D5-006U-00001?Item=9SIBWW1KCK3454","image":"https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/CiDRRWbxggKXY7ePp2uGZ.png","title":"Gaming PC | Ryzen 5 5600GT","brand":"Yawyore","productName":"Gaming PC | Ryzen 5 5600GT","merchant":"Newegg","rawPrice":599.99,"rawMsrp":819.99,"price":"599.99","msrp":"819.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $220","savingType":"amount","isPrime":false,"starRating":null,"description":"The integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. Key specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD","text":"\u003cp\u003eThe integrated graphics on this processor won't get you gaming at higher resolutions or higher settings in modern games, but it's a great way to get into some light 1080p gaming. This gaming PC mainly acts to get you up and running, and you can then upgrade with a (relatively low-power) discrete GPU down the line, though bear in mind if you want the latest and greatest specs, including processor and RAM, you'll have to upgrade the entire PC, motherboard, too. Also note that you won't be able to keep many games installed at the same time on that 500 GB drive. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 5600GT | 16 GB DDR4-3200 | 512 GB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-1","url":"https://www.walmart.com/ip/ABS-Cyclone-Aqua-Gaming-Desktop-PC-Windows-11-Intel-Core-5-Processor-120-GeForce-RTX-5060-8GB-16GB-DDR4-RAM-1TB-NVMe-SSD-WiFi-RGB-Prebuilt/20152655037","image":"https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/WkeyJq8EoGFHiupSwXMxbE.png","title":"Cyclone Aqua | RTX 5060","brand":"ABS","productName":"Cyclone Aqua | RTX 5060","merchant":"Walmart","rawPrice":899,"rawMsrp":999.99,"price":"899","msrp":"999.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $100.99","savingType":"amount","isPrime":false,"starRating":null,"description":"You're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you are getting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming. Key specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD","text":"\u003cp\u003eYou're making quite a lot of sacrifices here to keep the price tag well under $1,000—namely a pretty lacklustre CPU and only 16 GB of previous-gen RAM. But you \u003cem\u003eare \u003c/em\u003egetting an RTX 5060 machine for a very reasonable price in today's market. That means decent, discrete graphics for 1080p and even some lighter 1440p gaming.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core 5 120 | RTX 5060 | 16 GB DDR4 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-2","url":"https://www.newegg.com/stormcraft-sirius-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-16gb-ddr4-1tb-ssd-si1440fbb-560n2/p/N82E16883420040?Item=N82E16883420040","image":"https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/rbmXZex7DxDjwx5QK2FvFD.png","title":"Sirius | RTX 5060","brand":"Stormcraft","productName":"Sirius | RTX 5060","merchant":"Newegg","rawPrice":999.99,"rawMsrp":1299.99,"price":"999.99","msrp":"1299.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $300","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too. Key specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eThis is a decent little rig for $1,000, primarily thanks to that CPU-GPU combo. For 2026 prices, you're getting some decent 1080p gaming performance for a reasonable price tag. Just bear in mind that you're only getting 16 GB of DDR4 RAM, and upgrading to DDR5 in future (presumably when the memory shortage eventually ends) will require a platform upgrade, too.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 14400F | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-3","url":"https://www.newegg.com/abs-cyclone-aqua-gaming-desktop-pc-geforce-rtx-5060-intel-core-i5-14400f-32gb-ddr4-1tb-nvme-ssd-c1a45n56r1/p/N82E16883360981?Item=N82E16883360981\u0026cm_sp=product-_-from-price-options","image":"https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/S8Tyk34BnPGV8F93N7TNWL.png","title":"Cyclone Aqua | RTX 5060","brand":"ABS","productName":"Cyclone Aqua | RTX 5060","merchant":"Newegg","rawPrice":1079.99,"rawMsrp":1399.99,"price":"1079.99","msrp":"1399.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $320","savingType":"amount","isPrime":false,"starRating":null,"description":"If you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. Use promo code ABSIGD20 for the full discount. Key specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - OUT OF STOCK **","text":"\u003cp\u003eIf you're on a budget of around $1,000, this is where it's at right now. That's because you're not just getting the RTX 5060, but also a decent Core i5 CPU and 32 GB of RAM. It's not DDR5, but even 32 GB of DDR4 is rare these days thanks to the memory shortage, so this is a great all-round deal. \u003cstrong\u003eUse promo code ABSIGD20 for the full discount.\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 14400F | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - OUT OF STOCK **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-4","url":"https://www.walmart.com/ip/CyberPowerPC-Gamer-Xtreme-Gaming-Desktop-Intel-Core-Ultra-5-250KF-Plus-NVIDIA-GeForce-RTX-5060-Ti-8GB-16GB-DDR5-1TB-SSD-Black-GXi4700WST/19938008137","image":"https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/tx97tHDE8nAgNyfGSxR3MY.png","title":"Gamer Xtreme | RTX 5060 Ti 8 GB","brand":"CyberPowerPC","productName":"Gamer Xtreme | RTX 5060 Ti 8 GB","merchant":"Walmart","rawPrice":1249,"rawMsrp":1639.99,"price":"1249","msrp":"1639.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $390.99","savingType":"amount","isPrime":false,"starRating":null,"description":"The main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love the non-F version (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess. Key specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eThe main reason to opt for this rig is that in addition to the RTX 5060 Ti, it's also rockin' a 250KF Plus. We love \u003ca href=\"https://www.pcgamer.com/hardware/processors/intel-core-ultra-5-250k-plus-review/\" target=\"_blank\"\u003ethe non-F version\u003c/a\u003e (which is the same but has integrated graphics) as it's a genuinely great current-gen processor. The only real downside here is it looks like that 16 GB of RAM is a single stick. Welcome to 2026 and the memory shortage, I guess.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 5 250KF Plus | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD \u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-5","url":"https://www.walmart.com/ip/iBUYPOWER-Element-SE-Gaming-PC-Desktop-AMD-Ryzen-7-9700F-NVIDIA-GeForce-RTX-5060-8GB-16GB-DDR5-RGB-RAM-1TB-NVMe-SSD-ESA7N5603/18407959738","image":"https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/Vc24jGbzcoMkccmsGz7aKZ.png","title":"Element SE | RTX 5060 Ti 8 GB","brand":"iBuyPower","productName":"Element SE | RTX 5060 Ti 8 GB","merchant":"Walmart","rawPrice":1299,"rawMsrp":1499,"price":"1299","msrp":"1499","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $200","savingType":"amount","isPrime":false,"starRating":null,"description":"If you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting. Key specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD","text":"\u003cp\u003eIf you're looking for a budget PC, this one is a good shout if you're looking for something for more than just gaming. The Ryzen 7 here is a great mid-range processor that beats many others in its price bracket, and you're getting DDR5 RAM which means the AM5 platform will have some longevity to it. Just note it is only a single stick of DDR5 you're getting.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 9700F | RTX 5060 Ti 8 GB | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-6","url":"https://www.bhphotovideo.com/c/product/1988926-REG/msi_codex_z2_b8nvp_811us_codex_z2_gaming_desktop.html","image":"https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/UjNqHUCE85WPMXT6Mbr7yj.png","title":"Codex Z2C | RTX 5070","brand":"MSI","productName":"Codex Z2C | RTX 5070","merchant":"Bhphotovideo","rawPrice":1399,"rawMsrp":1599,"price":"1399","msrp":"1599","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $200","savingType":"amount","isPrime":false,"starRating":null,"description":"The headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders. Key specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD","text":"\u003cp\u003eThe headline here is obviously that you're getting an RTX 5070 in a very reasonably priced rig given the 2026 market. The caveat is that CPU is not a full-fledged desktop one, rather a repurposed power-limited and low-cache chip. It's socket AM5, though, so swapping to a decent Ryzen chip should work wonders.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 8700F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-7","url":"https://www.walmart.com/ip/iBUYPOWER-Slate-Gaming-PC-Desktop-Intel-Core-i7-14700F-NVIDIA-GeForce-RTX-5060Ti-16GB-32GB-DDR5-RGB-RAM-1TB-NVMe-SSD-SBI7N56T03/18471805384","image":"https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/RNM4W8FzUX2vA22VgY9MVF.png","title":"Slate | RTX 5060 Ti 8 GB","brand":"iBuyPower","productName":"Slate | RTX 5060 Ti 8 GB","merchant":"Walmart","rawPrice":1399,"rawMsrp":1799,"price":"1399","msrp":"1799","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $400","savingType":"amount","isPrime":false,"starRating":null,"description":"This is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though. Key specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD","text":"\u003cp\u003eThis is about as cheap as you'll find a gaming PC that not only gives decent 1080p and 1440p gaming performance but also gives plenty of wiggle room in the general processing department. That's thanks not only to the Core i7 chip but also the 32 GB of DDR5 RAM, which offers plenty of peace of mind during this global memory shortage. Sadly you're only getting the 8 GB version of the GPU, though.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i7 14700F | RTX 5060 Ti 8 GB | 32 GB DDR5-5200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-8","url":"https://www.bestbuy.com/product/hp-omen-35l-valorant-ltd-ed-gaming-desktop-intel-core-i7-14700f-2024-16gb-memory-nvidia-geforce-rtx-5060-ti-1tb-ssd-navy/JJGTCGHQ22/sku/6643210","image":"https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/SR9US22pqCDZ7VPbwou6Do.png","title":"Omen 35L Valorant | RTX 5060 Ti 16 GB","brand":"HP","productName":"Omen 35L Valorant | RTX 5060 Ti 16 GB","merchant":"Bestbuy","rawPrice":1399.99,"rawMsrp":1919.99,"price":"1399.99","msrp":"1919.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $520","savingType":"amount","isPrime":false,"starRating":null,"description":"Yes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity. Key specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eYes, this is pushing close to RTX 5070 gaming PC territory, but it's still a bit cheaper than decent RTX 5070 rigs. And more importantly, here you're getting a full-fat 16 GB RTX 5060 Ti, which will be enough VRAM to give the GPU some real longevity.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i7 14700F | RTX 5060 Ti 16 GB | 16 GB DDR5-6000 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-9","url":"https://www.walmart.com/ip/MSI-Codex-R2-AI-Gaming-Desktop-Intel-Ultra-7-265F-NVIDIA-RTX-5070-12GB-16GB-DDR5-1-TB-SSD-Win-11-Black/19888222663","image":"https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/yvZsEZuhiabdtvY8vmhqiF.png","title":"Codex R2 AI | RTX 5070","brand":"MSI","productName":"Codex R2 AI | RTX 5070","merchant":"Walmart","rawPrice":1499,"rawMsrp":0,"price":"1499","msrp":"","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"For mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eFor mid-range gaming, this is about as good as you'll get for value in 2026. It might only have 16 GB of RAM, but you're getting a decent processor and an RTX 5070, which makes this gaming PC great for 1080p and 1440p gaming.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-10","url":"https://www.amazon.com/Skytech-Gaming-14700F-Windows-Desktop/dp/B0H7WW23RJ","image":"https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/AXFTeVkHmofZF6dD73ZM7g.png","title":"Gaming Blaze 5 | RTX 5070","brand":"Skytech","productName":"Gaming Blaze 5 | RTX 5070","merchant":"Amazon","rawPrice":1599.99,"rawMsrp":1699.99,"price":"1599.99","msrp":"1699.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $100","savingType":"amount","isPrime":false,"starRating":null,"description":"We're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. Key specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eWe're in the time of compromises, it seems, because this might offer some serious gaming grunt for the cost, but it also skims pretty significantly on memory. 16 GB of DDR4-3200 isn't great all-round, but purely for gaming it should be fine. And you're getting a very nice midrange CPU-GPU combo. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i7 14700F | RTX 5070 | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-11","url":"https://www.walmart.com/ip/Acer-Nitro-Desktop-Intel-Core-Ultra-7-265F-NVIDIA-GeForce-RTX-5070-988-AI-TOPS-12-GB-GDDR7-Video-Memory-16GB-1-TB-SSD-N85-600-UW36-Black-New/20165911163","image":"https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/qL2XvweF5CCfLFrGbGZLGF.png","title":"Nitro 85 | RTX 5070","brand":"Acer","productName":"Nitro 85 | RTX 5070","merchant":"Walmart","rawPrice":1499,"rawMsrp":2099.99,"price":"1499","msrp":"2099.99","currency":"$","isoCurrency":"USD","isCheckPrice":false,"savingLabel":"Save $600.99","savingType":"amount","isPrime":false,"starRating":null,"description":"Another RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. Key specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eAnother RTX 5070 gaming PC around the $1,500 mark makes me very happy, given the general dearth of great mid-range rigs for under, say, $1,800. This one only has 16 GB of RAM, but that's mostly expected in 2026 given the memory shortage. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 7 265F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true}],"GB":[{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-25","url":"https://www.awd-it.co.uk/awd-it-lian-li-a3-amd-ryzen-5500-1tb-ssd-nvidia-rtx-5060-8gb-microsoft-windows-11-next-day-gaming-pc.html","image":"https://cdn.mos.cms.futurecdn.net/AVW9QmY6adHZpYRTKmMiCm.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/AVW9QmY6adHZpYRTKmMiCm.png","title":"Lian Li A3 | RTX 5060 8 GB","brand":"AWD-IT","productName":"Lian Li A3 | RTX 5060 8 GB","merchant":"Awd-it","rawPrice":949.99,"rawMsrp":1099.99,"price":"949.99","msrp":"1099.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £150","savingType":"amount","isPrime":false,"starRating":null,"description":"This is a great price for all you SFF (small form factor) lovers. You're getting an older and not very powerful CPU, and only 16 GB of DDR4 RAM, but for a cheap, portable gaming system these should serve just fine alongside the RTX 5060. Usually you have to pay the SFF tax for a mini PC, so it's great to see such a low price on this one. Don't expect miracles with this hardware, but for some light gaming and a small physical footprint, look no further. Key specs: Ryzen 5 5500 | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eThis is a great price for all you SFF (small form factor) lovers. You're getting an older and not very powerful CPU, and only 16 GB of DDR4 RAM, but for a cheap, portable gaming system these should serve just fine alongside the RTX 5060. Usually you have to pay the SFF tax for a mini PC, so it's great to see such a low price on this one. Don't expect miracles with this hardware, but for some light gaming and a small physical footprint, look no further.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 5500 | RTX 5060 | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-26","url":"https://www.ebuyer.com/medion-medion-erazer-recon-e45-rtx-5060-gaming-pc---amd-ryzen-5-5500-32gb-1tb-ssd---black-714220","image":"https://cdn.mos.cms.futurecdn.net/iWWRgb5sR68u4dz8Y2wLh8.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/iWWRgb5sR68u4dz8Y2wLh8.png","title":"Erazer Recon E45 | RTX 5060","brand":"Medion","productName":"Erazer Recon E45 | RTX 5060","merchant":"Ebuyer","rawPrice":999.99,"rawMsrp":1099.99,"price":"999.99","msrp":"1099.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £100","savingType":"amount","isPrime":false,"starRating":null,"description":"For £1,000, this is actually a very well-rounded rig. It might be running some previous-gen hardware in the form of the CPU and RAM, but for a budget PC it'll serve just fine. Particularly noteworthy here is that you're getting 32 GB of RAM, while most rigs around this price range opt for just 16 GB. Key specs: Ryzen 5 5500 | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eFor £1,000, this is actually a very well-rounded rig. It might be running some previous-gen hardware in the form of the CPU and RAM, but for a budget PC it'll serve just fine. Particularly noteworthy here is that you're getting 32 GB of RAM, while most rigs around this price range opt for just 16 GB. \u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 5500 | RTX 5060 | 32 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-27","url":"https://www.overclockers.co.uk/ocuk-gaming-quartz-intel-core-i5-12400f-rtx-5060-pre-built-gaming-pc-fs-pb01-ep.html","image":"https://cdn.mos.cms.futurecdn.net/Fc5qaLhxY59pa7M7qjtDkH.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/Fc5qaLhxY59pa7M7qjtDkH.png","title":"Gaming Quartz | RTX 5060","brand":"OcUK","productName":"Gaming Quartz | RTX 5060","merchant":"Overclockers","rawPrice":1099.99,"rawMsrp":0,"price":"1099.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"If you're looking for something around the £1,000 mark, something like this gaming PC will be your best bet. Don't expect to be able to play all the latest titles on max settings and high resolutions, but for 1080p it'll do great, and should even handle smooth 1440p gaming in most games if you're willing to mess around with your settings a little. Key specs: Core i5 12400F | RTX 5060 | 16 GB DDR5-5200 | 1 TB SSD","text":"\u003cp\u003eIf you're looking for something around the £1,000 mark, something like this gaming PC will be your best bet. Don't expect to be able to play all the latest titles on max settings and high resolutions, but for 1080p it'll do great, and should even handle smooth 1440p gaming in most games if you're willing to mess around with your settings a little.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 12400F | RTX 5060 | 16 GB DDR5-5200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-28","url":"https://www.scan.co.uk/products/scan-performance-rtx-intel-core-i5-14400f-32gb-ddr5-8gb-nvidia-rtx-5060-ti-1tb-m2-ssd-win-11","image":"https://cdn.mos.cms.futurecdn.net/ceP5HpoWodaeqLmoAT6Tuk.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/ceP5HpoWodaeqLmoAT6Tuk.png","title":"Performance RTX | RTX 5060 Ti 8 GB","brand":"Scan","productName":"Performance RTX | RTX 5060 Ti 8 GB","merchant":"Scan","rawPrice":1349.99,"rawMsrp":0,"price":"1349.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"There are some definite caveats to this build—mainly its slow RAM—but for gaming on a budget closer to $1,000 than $2,000, I'd say this is a good shout. The RTX 5060 Ti, even with just 8 GB of VRAM, should manage almost any modern game at 1080p or 1440p, provided you don't mind lowering your settings a little in more demanding titles. Key specs: Core i5 14400F | RTX 5060 Ti 8 GB | 16 GB DDR5-4800 | 1 TB SSD","text":"\u003cp\u003eThere are some definite caveats to this build—mainly its slow RAM—but for gaming on a budget closer to $1,000 than $2,000, I'd say this is a good shout. The RTX 5060 Ti, even with just 8 GB of VRAM, should manage almost any modern game at 1080p or 1440p, provided you don't mind lowering your settings a little in more demanding titles.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core i5 14400F | RTX 5060 Ti 8 GB | 16 GB DDR5-4800 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-29","url":"https://www.cyberpowersystem.co.uk/system/ultra-57-d457-next-day-pc","image":"https://cdn.mos.cms.futurecdn.net/zzz7AXsxEZgTz6QPgm98cD.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/zzz7AXsxEZgTz6QPgm98cD.png","title":"Ultra 57 D457 | RX 9070 16 GB","brand":"CyberPowerPC","productName":"Ultra 57 D457 | RX 9070 16 GB","merchant":"Cyberpowersystem","rawPrice":1399.2,"rawMsrp":1499.2,"price":"1399.2","msrp":"1499.2","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £100","savingType":"amount","isPrime":false,"starRating":null,"description":"In some ways this is a peculiar build, because you're getting a relatively high-end graphics card alongside just 16 GB of DDR4 RAM. But in other ways, it's an absolute steal, given you're getting this raw GPU power for well under £1,500. And with 16 GB of VRAM on that GPU, to boot. Key specs: Ryzen 7 5700X | RX 9070 16 GB | 16 GB DDR4-3200 | 1 TB SSD","text":"\u003cp\u003eIn some ways this is a peculiar build, because you're getting a relatively high-end graphics card alongside just 16 GB of DDR4 RAM. But in other ways, it's an absolute steal, given you're getting this raw GPU power for well under £1,500. And with 16 GB of VRAM on that GPU, to boot.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 5700X | RX 9070 16 GB | 16 GB DDR4-3200 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-30","url":"https://www.cclonline.com/hzn-gam-core-203-nd-horizon-ryzen-5-rtx-5070-pre-built-gaming-pc/","image":"https://cdn.mos.cms.futurecdn.net/qUj9RFgagtZPy6KzuboZqU.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/qUj9RFgagtZPy6KzuboZqU.png","title":"Horizon | RTX 5070","brand":"CCL","productName":"Horizon | RTX 5070","merchant":"Cclonline","rawPrice":1449.99,"rawMsrp":0,"price":"1449.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"You're not getting the best CPU here, but for gaming it should do fine, especially with that RAM being dual-channel. The main allure here is getting an RTX 5070 in your build for this cheap of a price. If you're looking for a mid-range build for as cheap as possible, this one is worth considering. Key specs: Ryzen 5 8400F | RTX 5070 | 16 GB DDR5 | 1 TB SSD","text":"\u003cp\u003eYou're not getting the best CPU here, but for gaming it should do fine, especially with that RAM being dual-channel. The main allure here is getting an RTX 5070 in your build for this cheap of a price. If you're looking for a mid-range build for as cheap as possible, this one is worth considering.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 8400F | RTX 5070 | 16 GB DDR5 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-31","url":"https://www.cyberpowersystem.co.uk/system/infinity-u597-next-day-pc","image":"https://cdn.mos.cms.futurecdn.net/Z88KYeCSimmFYvChrKrx5C.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/Z88KYeCSimmFYvChrKrx5C.png","title":"Infinity U597 | RX 9070 16 GB","brand":"CyberPowerPC","productName":"Infinity U597 | RX 9070 16 GB","merchant":"Cyberpowersystem","rawPrice":1599.6,"rawMsrp":0,"price":"1599.6","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"This rig might not have the most powerful CPU in the world, but it does come with 32 GB of DDR5 RAM, which gives it some great longevity during the current global memory shortage. And that RX 9070 is a fantastic midrange GPU that can even come close to matching some higher-end ones with a little overclocking. Key specs: Core Ultra 5 225F | RX 9070 16 GB | 32 GB DDR5-5600 | 1 TB SSD","text":"\u003cp\u003eThis rig might not have the most powerful CPU in the world, but it does come with 32 GB of DDR5 RAM, which gives it some great longevity during the current global memory shortage. And that RX 9070 is a fantastic midrange GPU that can even come close to matching some higher-end ones with a little overclocking.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 5 225F | RX 9070 16 GB | 32 GB DDR5-5600 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-32","url":"https://www.awd-it.co.uk/awd-it-frame-4000d-rs-ryzen-5-9600x-gaming-pc-rx-9070-xt-16gb-desktop-pc-for-gaming.html","image":"https://cdn.mos.cms.futurecdn.net/7nX84VjZFm6crXfae2UtF.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/7nX84VjZFm6crXfae2UtF.png","title":"Frame 4000D | RX 9070 XT","brand":"AWD-IT","productName":"Frame 4000D | RX 9070 XT","merchant":"Awd-it","rawPrice":1829.97,"rawMsrp":2039.97,"price":"1829.97","msrp":"2039.97","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £210","savingType":"amount","isPrime":false,"starRating":null,"description":"This all-AMD gaming PC is about as cheap as you'll get for some bona fide high-end gameplay these days. You are having to settle for just 1 TB of storage and not the highest-end CPU, but it's still a more than capable rig, even for 4K gaming in most games. Just make sure you configure the build to match the specs below and price listed here. Key specs: Ryzen 5 9600X | RX 9070 XT | 16 GB DDR5-6000 | 1 TB SSD (Kingston ver.)","text":"\u003cp\u003eThis all-AMD gaming PC is about as cheap as you'll get for some bona fide high-end gameplay these days. You are having to settle for just 1 TB of storage and not the highest-end CPU, but it's still a more than capable rig, even for 4K gaming in most games. Just make sure you \u003cstrong\u003econfigure the build to match the specs below\u003c/strong\u003e and price listed here.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 5 9600X | RX 9070 XT | 16 GB DDR5-6000 | 1 TB SSD (Kingston ver.)\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-33","url":"https://www.scan.co.uk/products/scan-performance-rtx-intel-core-ultra-5-250k-32gb-ddr5-nvidia-rtx-5070-ti-1tb-m2-ssd-win-11","image":"https://cdn.mos.cms.futurecdn.net/orxckvHVNR5978oY9DCAE.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/orxckvHVNR5978oY9DCAE.png","title":"Performance RTX | RTX 5070 Ti","brand":"Scan","productName":"Performance RTX | RTX 5070 Ti","merchant":"Scan","rawPrice":2229.98,"rawMsrp":0,"price":"2229.98","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"This might actually be the best shout for a high-end gaming PC right now. Of course the RTX 5070 Ti is fantastic, as is 32 GB of fast RAM during a memory shortage. But that CPU is a thing of beauty, too. The refreshed Arrow Lake chip performs about as well as a lower-end X3D chip (which means pretty damn well) but also happens to do incredibly well at productivity and other CPU-intensive tasks, making this a very well-rounded build. Key specs: Core Ultra 5 250K Plus | RTX 5070 Ti | 32 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eThis might actually be the best shout for a high-end gaming PC right now. Of course the RTX 5070 Ti is fantastic, as is 32 GB of fast RAM during a memory shortage. But that CPU is a thing of beauty, too. The refreshed Arrow Lake chip performs about as well as a lower-end X3D chip (which means pretty damn well) but also happens to do incredibly well at productivity and other CPU-intensive tasks, making this a very well-rounded build.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Core Ultra 5 250K Plus | RTX 5070 Ti | 32 GB DDR5-6000 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-34","url":"https://www.chillblast.com/pcs/chillblast-helios-ryzen-7-9800x3d-rx-9070-xt-pre-built-gaming-pc","image":"https://cdn.mos.cms.futurecdn.net/MxKFSxhKBBinWcNFkTcxqE.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/MxKFSxhKBBinWcNFkTcxqE.png","title":"Helios | RX 9070 XT","brand":"Chillblast","productName":"Helios | RX 9070 XT","merchant":"Chillblast","rawPrice":2499.99,"rawMsrp":0,"price":"2499.99","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"If you're happy opting for an AMD rather than an Nvidia GPU, this is about as high-end of a rig for such a low price as you can get right now. The best CPU on the market, paired with AMD's best GPU, plus a whole heap of memory and storage during a global memory shortage. Lovely. Key specs: Ryzen 7 9800X3D | RX 9070 XT | 32 GB DDR5-5200 | 2 TB SSD","text":"\u003cp\u003eIf you're happy opting for an AMD rather than an Nvidia GPU, this is about as high-end of a rig for such a low price as you can get right now. The best CPU on the market, paired with AMD's best GPU, plus a whole heap of memory and storage during a global memory shortage. Lovely.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 9800X3D | RX 9070 XT | 32 GB DDR5-5200 | 2 TB SSD\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dxkEzyn9RrvdYTZs2ZP4fT-35","url":"https://www.scan.co.uk/products/scan-performance-rtx-amd-ryzen-7-7800x3d-32gb-ddr5-16gb-nvidia-rtx-5080-1tb-m2-ssd-win-11","image":"https://cdn.mos.cms.futurecdn.net/tS7QZRFVL4bgjMiJqV9D8Q.png","fallbackImage":"https://cdn.mos.cms.futurecdn.net/tS7QZRFVL4bgjMiJqV9D8Q.png","title":"Performance RTX | RTX 5080","brand":"Scan","productName":"Performance RTX | RTX 5080","merchant":"Scan","rawPrice":2649.98,"rawMsrp":0,"price":"2649.98","msrp":"","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"","savingType":"none","isPrime":false,"starRating":null,"description":"If you're gonna go for a high-end RTX 5080 rig, you also want the CPU to match, and that's what you're getting here. Sure, it's not a current-gen X3D chip, but an X3D chip it is nonetheless, and that means some fantastic gaming performance. There'll be little worry of significant bottlenecks from either the CPU or GPU here, even in the latest demanding games at very high settings. Key specs: Ryzen 7 7800X3D | RTX 5080 | 32 GB DDR5-6000 | 1 TB SSD ** 14/09/2026 - PRICE UP **","text":"\u003cp\u003eIf you're gonna go for a high-end RTX 5080 rig, you also want the CPU to match, and that's what you're getting here. Sure, it's not a \u003cem\u003ecurrent\u003c/em\u003e-gen X3D chip, but an X3D chip it is nonetheless, and that means some fantastic gaming performance. There'll be little worry of significant bottlenecks from either the CPU or GPU here, even in the latest demanding games at very high settings.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: Ryzen 7 7800X3D | RTX 5080 | 32 GB DDR5-6000 | 1 TB SSD\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e** 14/09/2026 - PRICE UP **\u003c/strong\u003e\u003c/p\u003e","authorName":"Jacob Fox","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD.png","documentUrl":"best-cheap-gaming-pc","modifiedDate":"2026-09-14T12:11:58Z","isFeatured":false,"hasCommerceOffer":true},{"id":"airedale-dEo6w5awdyYLFzVRfyb5xY-54","url":"https://www.amazon.co.uk/Lexar-Internal-Desktop-Computer-LNS100-512AMZN/dp/B07TQSYBPH/","image":"https://cdn.mos.cms.futurecdn.net/vKnpP6CD5ERjXHziCSaqG7.jpg","fallbackImage":"https://cdn.mos.cms.futurecdn.net/vKnpP6CD5ERjXHziCSaqG7.jpg","title":"NS100 | 512 GB","brand":"Lexar","productName":"NS100 | 512 GB","merchant":"Amazon","rawPrice":82.99,"rawMsrp":132.99,"price":"82.99","msrp":"132.99","currency":"£","isoCurrency":"GBP","isCheckPrice":false,"savingLabel":"Save £50","savingType":"amount","isPrime":false,"starRating":null,"description":"For just storing documents, this small SATA SSD is a lot faster than a traditional HDD, and Lexar makes reliable and robust SSDs. You're still better off getting an NVMe M.2 SSD for games and your operating system, though. Key specs: 2.5-inch | SATA 6 Gb/s | 550 MB/s read | 520 MB/s write","text":"\u003cp\u003eFor just storing documents, this small SATA SSD is a lot faster than a traditional HDD, and Lexar makes reliable and robust SSDs. You're still better off getting an NVMe M.2 SSD for games and your operating system, though.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eKey specs: 2.5-inch | SATA 6 Gb/s | 550 MB/s read | 520 MB/s write\u003c/strong\u003e\u003c/p\u003e","authorName":"Jess Kinghorn","authorRole":"Hardware Writer","authorImage":"https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png","documentUrl":"best-ssd-deals-today","modifiedDate":"2026-09-11T09:37:08Z","isFeatured":false,"hasCommerceOffer":true}],"AU":[]},"regionalDealRailData":{"US":{"brands":[{"formatted_value":"Acer","count":36},{"formatted_value":"MSI","count":33},{"formatted_value":"Asus","count":18},{"formatted_value":"Crucial","count":17},{"formatted_value":"Samsung","count":14},{"formatted_value":"Andromeda Insights","count":13},{"formatted_value":"Gigabyte","count":13},{"formatted_value":"Team Group","count":11},{"formatted_value":"ASRock","count":11},{"formatted_value":"WD_Black","count":9},{"formatted_value":"iBuyPower","count":8},{"formatted_value":"ABS","count":7},{"formatted_value":"Skytech","count":7},{"formatted_value":"LG","count":7},{"formatted_value":"HP","count":6},{"formatted_value":"KTC","count":6},{"formatted_value":"Silicon Power","count":5},{"formatted_value":"Adata","count":5},{"formatted_value":"PNY","count":5},{"formatted_value":"Lenovo","count":5},{"formatted_value":"Koorui","count":4},{"formatted_value":"Alienware","count":4},{"formatted_value":"Razer","count":4},{"formatted_value":"Biwin","count":3},{"formatted_value":"Patriot","count":3},{"formatted_value":"Yawyore","count":2},{"formatted_value":"Stormcraft","count":2},{"formatted_value":"CyberPowerPC","count":2},{"formatted_value":"AOC","count":2},{"formatted_value":"Kingston","count":2},{"formatted_value":"Lexar","count":2},{"formatted_value":"WD Blue","count":2},{"formatted_value":"Dell","count":2},{"formatted_value":"Innocn","count":2},{"formatted_value":"HyperX","count":2},{"formatted_value":"Logitech","count":2},{"formatted_value":"Western Digital WD Blue","count":1},{"formatted_value":"WD","count":1},{"formatted_value":"Yeston","count":1},{"formatted_value":"PowerColor","count":1},{"formatted_value":"Steam","count":1},{"formatted_value":"Onix Lumi","count":1},{"formatted_value":"Turtle Beach","count":1},{"formatted_value":"Corsair","count":1},{"formatted_value":"SteelSeries","count":1},{"formatted_value":"Scuf","count":1},{"formatted_value":"AVGPC","count":1},{"formatted_value":"Thermaltake","count":1}],"freeformTagCounts":{"intel":25,"deals":163,"ryzen":28,"gaming-pc":33,"hardware":251,"oled":2,"aoc-q27gazd":1,"1440p":1,"1440p-gaming-monitor":1,"gaming-monitor":10,"gaming-monitor-deal":9,"aoc":1,"deal":47,"ssd":54,"solid-state-drive":54,"solid-state":54,"hdd":54,"hard-drive":54,"storage":54,"gpu":17,"graphics-card":17,"buying-guide":15,"monitor":8,"esport-monitor":7,"monitor-deals":8,"1080p":2,"4k":2,"4k-monitor":7,"4k-gaming":2,"koorui":1,"koorui-g2741l":1,"monitors":36,"gaming-laptop":24,"budget":24,"cheap":24,"gaming-pc-deals":9,"collections":8,"labor-day":109,"nvidia":3,"amd":6,"control-pad":1,"gamepad":1,"scuf-gaming":1,"scuf-valor-pro":1,"scuf-valor-pro-wired":1,"wired":1,"wired-controller":1,"scuf":1,"wired-gamepad":1,"pc-controller":1,"acer":4,"prebuilt":1,"prebuilt-pcs":1,"gaming-prebuilts":1,"rtx-5060-ti":1,"ddr4":1,"ddr4-ram":1,"memory":4,"memory-crisis":4,"amd-ryzen-5-5600x":1,"ryzen-5-5600x":1,"asrock":1,"oled-gaming-monitor":1,"msi":3,"thermaltake":3,"headset":1,"gaming-headset":1,"wireless-gaming-headset":1,"wireless":1,"hyperx":1,"hyperx-cloud-alpha-wireless":1,"rx-9070-xt":1,"memory-shortage":3,"cpu":3,"bundle":3,"newegg":3,"newegg-deals":3,"asus":3,"tuf-gaming":3,"am5":3,"samsung":3,"motherboard":3,"team-group":3,"combo-deal":3},"freeformTags":[{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"deals","label":"deals","requestValue":"deals"},{"handle":"labor-day","label":"labor day","requestValue":"labor day"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"gpu","label":"GPU","requestValue":"GPU"},{"handle":"graphics-card","label":"graphics card","requestValue":"graphics card"},{"handle":"buying-guide","label":"buying guide","requestValue":"buying guide"},{"handle":"gaming-monitor","label":"gaming monitor","requestValue":"gaming monitor"},{"handle":"gaming-monitor-deal","label":"Gaming Monitor deal","requestValue":"Gaming Monitor deal"},{"handle":"gaming-pc-deals","label":"gaming PC deals","requestValue":"gaming PC deals"},{"handle":"monitor","label":"monitor","requestValue":"monitor"},{"handle":"monitor-deals","label":"Monitor deals","requestValue":"Monitor deals"},{"handle":"collections","label":"collections","requestValue":"collections"},{"handle":"esport-monitor","label":"esport monitor","requestValue":"esport monitor"},{"handle":"4k-monitor","label":"4K monitor","requestValue":"4K monitor"},{"handle":"amd","label":"AMD","requestValue":"AMD"},{"handle":"acer","label":"Acer","requestValue":"Acer"},{"handle":"memory","label":"memory","requestValue":"memory"},{"handle":"memory-crisis","label":"memory crisis","requestValue":"memory crisis"},{"handle":"nvidia","label":"Nvidia","requestValue":"Nvidia"},{"handle":"msi","label":"MSI","requestValue":"MSI"},{"handle":"thermaltake","label":"Thermaltake","requestValue":"Thermaltake"},{"handle":"memory-shortage","label":"memory shortage","requestValue":"memory shortage"},{"handle":"cpu","label":"CPU","requestValue":"CPU"},{"handle":"bundle","label":"bundle","requestValue":"bundle"},{"handle":"newegg","label":"Newegg","requestValue":"Newegg"},{"handle":"newegg-deals","label":"newegg deals","requestValue":"newegg deals"},{"handle":"asus","label":"Asus","requestValue":"Asus"},{"handle":"tuf-gaming","label":"TUF Gaming","requestValue":"TUF Gaming"},{"handle":"am5","label":"AM5","requestValue":"AM5"},{"handle":"samsung","label":"Samsung","requestValue":"Samsung"},{"handle":"motherboard","label":"Motherboard","requestValue":"Motherboard"},{"handle":"team-group","label":"team group","requestValue":"team group"},{"handle":"combo-deal","label":"combo deal","requestValue":"combo deal"},{"handle":"oled","label":"OLED","requestValue":"OLED"},{"handle":"1080p","label":"1080p","requestValue":"1080p"},{"handle":"4k","label":"4K","requestValue":"4K"},{"handle":"4k-gaming","label":"4K gaming","requestValue":"4K gaming"},{"handle":"aoc-q27gazd","label":"AOC Q27GAZD","requestValue":"AOC Q27GAZD"},{"handle":"1440p","label":"1440p","requestValue":"1440p"},{"handle":"1440p-gaming-monitor","label":"1440p gaming monitor","requestValue":"1440p gaming monitor"},{"handle":"aoc","label":"AOC","requestValue":"AOC"},{"handle":"koorui","label":"Koorui","requestValue":"Koorui"},{"handle":"koorui-g2741l","label":"Koorui G2741L","requestValue":"Koorui G2741L"},{"handle":"control-pad","label":"control pad","requestValue":"control pad"},{"handle":"gamepad","label":"gamepad","requestValue":"gamepad"},{"handle":"scuf-gaming","label":"Scuf Gaming","requestValue":"Scuf Gaming"},{"handle":"scuf-valor-pro","label":"Scuf Valor Pro","requestValue":"Scuf Valor Pro"},{"handle":"scuf-valor-pro-wired","label":"Scuf Valor Pro wired","requestValue":"Scuf Valor Pro wired"},{"handle":"wired","label":"wired","requestValue":"wired"},{"handle":"wired-controller","label":"wired controller","requestValue":"wired controller"},{"handle":"scuf","label":"Scuf","requestValue":"Scuf"},{"handle":"wired-gamepad","label":"wired gamepad","requestValue":"wired gamepad"},{"handle":"pc-controller","label":"PC controller","requestValue":"PC controller"},{"handle":"prebuilt","label":"prebuilt","requestValue":"prebuilt"},{"handle":"prebuilt-pcs","label":"Prebuilt PCs","requestValue":"Prebuilt PCs"},{"handle":"gaming-prebuilts","label":"gaming prebuilts","requestValue":"gaming prebuilts"},{"handle":"rtx-5060-ti","label":"RTX 5060 Ti","requestValue":"RTX 5060 Ti"},{"handle":"ddr4","label":"ddr4","requestValue":"ddr4"},{"handle":"ddr4-ram","label":"DDR4 RAM","requestValue":"DDR4 RAM"},{"handle":"amd-ryzen-5-5600x","label":"AMD Ryzen 5 5600X","requestValue":"AMD Ryzen 5 5600X"},{"handle":"ryzen-5-5600x","label":"Ryzen 5 5600X","requestValue":"Ryzen 5 5600X"},{"handle":"asrock","label":"ASRock","requestValue":"ASRock"},{"handle":"oled-gaming-monitor","label":"oled gaming monitor","requestValue":"oled gaming monitor"},{"handle":"headset","label":"headset","requestValue":"headset"},{"handle":"gaming-headset","label":"gaming headset","requestValue":"gaming headset"},{"handle":"wireless-gaming-headset","label":"wireless gaming headset","requestValue":"wireless gaming headset"},{"handle":"wireless","label":"wireless","requestValue":"wireless"},{"handle":"hyperx","label":"HyperX","requestValue":"HyperX"},{"handle":"hyperx-cloud-alpha-wireless","label":"HyperX Cloud Alpha Wireless","requestValue":"HyperX Cloud Alpha Wireless"},{"handle":"rx-9070-xt","label":"RX 9070 XT","requestValue":"RX 9070 XT"}],"tagCounts":{"Gaming PCs":58,"Hardware":251,"Gaming Monitors":45,"SSDs":54,"Storage":54,"Graphics Cards":17,"Gaming Laptops":24,"Controllers":1,"Gaming Headsets":1,"Gaming Audio":1},"tags":["Hardware","Gaming PCs","SSDs","Storage","Gaming Monitors","Gaming Laptops","Graphics Cards","Controllers","Gaming Headsets","Gaming Audio"],"totalAuthorCount":4,"totalDealCount":188},"GB":{"brands":[{"formatted_value":"Acer","count":11},{"formatted_value":"MSI","count":10},{"formatted_value":"Crucial","count":6},{"formatted_value":"Lexar","count":4},{"formatted_value":"Gigabyte","count":4},{"formatted_value":"Scan","count":3},{"formatted_value":"WD_Black","count":3},{"formatted_value":"Asus","count":3},{"formatted_value":"AOC","count":3},{"formatted_value":"AWD-IT","count":2},{"formatted_value":"Medion","count":2},{"formatted_value":"CyberPowerPC","count":2},{"formatted_value":"Biwin","count":2},{"formatted_value":"Sandisk","count":2},{"formatted_value":"Zotac","count":2},{"formatted_value":"Sapphire","count":2},{"formatted_value":"LG","count":2},{"formatted_value":"OcUK","count":1},{"formatted_value":"CCL","count":1},{"formatted_value":"Chillblast","count":1},{"formatted_value":"Silicon Power","count":1},{"formatted_value":"Adata","count":1},{"formatted_value":"Sparkle","count":1},{"formatted_value":"PNY","count":1},{"formatted_value":"Koorui","count":1},{"formatted_value":"KTC","count":1},{"formatted_value":"Alienware","count":1},{"formatted_value":"Samsung","count":1},{"formatted_value":"Lenovo","count":1}],"freeformTagCounts":{"intel":11,"deals":75,"ryzen":11,"gaming-pc":11,"hardware":75,"ssd":23,"solid-state-drive":23,"solid-state":23,"hdd":23,"hard-drive":23,"storage":23,"graphics-card":14,"buying-guide":14,"gpu":14,"monitors":15,"gaming-laptop":12,"budget":12,"cheap":12,"deal":12},"freeformTags":[{"handle":"deals","label":"deals","requestValue":"deals"},{"handle":"hardware","label":"Hardware","requestValue":"Hardware"},{"handle":"ssd","label":"SSD","requestValue":"SSD"},{"handle":"solid-state-drive","label":"solid state drive","requestValue":"solid state drive"},{"handle":"solid-state","label":"solid state","requestValue":"solid state"},{"handle":"hdd","label":"HDD","requestValue":"HDD"},{"handle":"hard-drive","label":"Hard Drive","requestValue":"Hard Drive"},{"handle":"storage","label":"storage","requestValue":"storage"},{"handle":"monitors","label":"monitors","requestValue":"monitors"},{"handle":"graphics-card","label":"graphics card","requestValue":"graphics card"},{"handle":"buying-guide","label":"buying guide","requestValue":"buying guide"},{"handle":"gpu","label":"GPU","requestValue":"GPU"},{"handle":"gaming-laptop","label":"gaming laptop","requestValue":"gaming laptop"},{"handle":"budget","label":"budget","requestValue":"budget"},{"handle":"cheap","label":"cheap","requestValue":"cheap"},{"handle":"deal","label":"deal","requestValue":"deal"},{"handle":"intel","label":"Intel","requestValue":"Intel"},{"handle":"ryzen","label":"Ryzen","requestValue":"Ryzen"},{"handle":"gaming-pc","label":"gaming pc","requestValue":"gaming pc"}],"tagCounts":{"Gaming PCs":23,"Hardware":75,"SSDs":23,"Storage":23,"Graphics Cards":14,"Gaming Monitors":15,"Gaming Laptops":12},"tags":["Hardware","Gaming PCs","SSDs","Storage","Gaming Monitors","Graphics Cards","Gaming Laptops"],"totalAuthorCount":3,"totalDealCount":74},"AU":{"brands":[],"freeformTagCounts":{},"freeformTags":[],"tagCounts":{},"tags":[],"totalAuthorCount":0,"totalDealCount":0}}}</script></fc-author-commerce-widget><script>(()=>{var Y1=Object.create;var lg=Object.defineProperty;var V1=Object.getOwnPropertyDescriptor;var X1=Object.getOwnPropertyNames;var Q1=Object.getPrototypeOf,K1=Object.prototype.hasOwnProperty;var rn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Z1=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of X1(t))!K1.call(e,l)&&l!==n&&lg(e,l,{get:()=>t[l],enumerable:!(a=V1(t,l))||a.enumerable});return e};var B=(e,t,n)=>(n=e!=null?Y1(Q1(e)):{},Z1(t||!e||!e.__esModule?lg(n,"default",{value:e,enumerable:!0}):n,e));var hg=rn(z=>{"use strict";var Rc=Symbol.for("react.transitional.element"),W1=Symbol.for("react.portal"),I1=Symbol.for("react.fragment"),J1=Symbol.for("react.strict_mode"),$1=Symbol.for("react.profiler"),eb=Symbol.for("react.consumer"),tb=Symbol.for("react.context"),nb=Symbol.for("react.forward_ref"),ab=Symbol.for("react.suspense"),lb=Symbol.for("react.memo"),cg=Symbol.for("react.lazy"),ib=Symbol.for("react.activity"),ig=Symbol.iterator;function rb(e){return e===null||typeof e!="object"?null:(e=ig&&e[ig]||e["@@iterator"],typeof e=="function"?e:null)}var sg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},dg=Object.assign,fg={};function gl(e,t,n){this.props=e,this.context=t,this.refs=fg,this.updater=n||sg}gl.prototype.isReactComponent={};gl.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};gl.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function gg(){}gg.prototype=gl.prototype;function Tc(e,t,n){this.props=e,this.context=t,this.refs=fg,this.updater=n||sg}var Ec=Tc.prototype=new gg;Ec.constructor=Tc;dg(Ec,gl.prototype);Ec.isPureReactComponent=!0;var rg=Array.isArray;function Cc(){}var fe={H:null,A:null,T:null,S:null},mg=Object.prototype.hasOwnProperty;function Dc(e,t,n){var a=n.ref;return{$$typeof:Rc,type:e,key:t,ref:a!==void 0?a:null,props:n}}function ob(e,t){return Dc(e.type,t,e.props)}function xc(e){return typeof e=="object"&&e!==null&&e.$$typeof===Rc}function ub(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var og=/\/+/g;function Sc(e,t){return typeof e=="object"&&e!==null&&e.key!=null?ub(""+e.key):t.toString(36)}function cb(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Cc,Cc):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function fl(e,t,n,a,l){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var r=!1;if(e===null)r=!0;else switch(i){case"bigint":case"string":case"number":r=!0;break;case"object":switch(e.$$typeof){case Rc:case W1:r=!0;break;case cg:return r=e._init,fl(r(e._payload),t,n,a,l)}}if(r)return l=l(e),r=a===""?"."+Sc(e,0):a,rg(l)?(n="",r!=null&&(n=r.replace(og,"$&/")+"/"),fl(l,t,n,"",function(c){return c})):l!=null&&(xc(l)&&(l=ob(l,n+(l.key==null||e&&e.key===l.key?"":(""+l.key).replace(og,"$&/")+"/")+r)),t.push(l)),1;r=0;var o=a===""?".":a+":";if(rg(e))for(var u=0;u<e.length;u++)a=e[u],i=o+Sc(a,u),r+=fl(a,t,n,i,l);else if(u=rb(e),typeof u=="function")for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,i=o+Sc(a,u++),r+=fl(a,t,n,i,l);else if(i==="object"){if(typeof e.then=="function")return fl(cb(e),t,n,a,l);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return r}function lo(e,t,n){if(e==null)return e;var a=[],l=0;return fl(e,a,"","",function(i){return t.call(n,i,l++)}),a}function sb(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var ug=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},db={map:lo,forEach:function(e,t,n){lo(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return lo(e,function(){t++}),t},toArray:function(e){return lo(e,function(t){return t})||[]},only:function(e){if(!xc(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};z.Activity=ib;z.Children=db;z.Component=gl;z.Fragment=I1;z.Profiler=$1;z.PureComponent=Tc;z.StrictMode=J1;z.Suspense=ab;z.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=fe;z.__COMPILER_RUNTIME={__proto__:null,c:function(e){return fe.H.useMemoCache(e)}};z.cache=function(e){return function(){return e.apply(null,arguments)}};z.cacheSignal=function(){return null};z.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=dg({},e.props),l=e.key;if(t!=null)for(i in t.key!==void 0&&(l=""+t.key),t)!mg.call(t,i)||i==="key"||i==="__self"||i==="__source"||i==="ref"&&t.ref===void 0||(a[i]=t[i]);var i=arguments.length-2;if(i===1)a.children=n;else if(1<i){for(var r=Array(i),o=0;o<i;o++)r[o]=arguments[o+2];a.children=r}return Dc(e.type,l,a)};z.createContext=function(e){return e={$$typeof:tb,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:eb,_context:e},e};z.createElement=function(e,t,n){var a,l={},i=null;if(t!=null)for(a in t.key!==void 0&&(i=""+t.key),t)mg.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(l[a]=t[a]);var r=arguments.length-2;if(r===1)l.children=n;else if(1<r){for(var o=Array(r),u=0;u<r;u++)o[u]=arguments[u+2];l.children=o}if(e&&e.defaultProps)for(a in r=e.defaultProps,r)l[a]===void 0&&(l[a]=r[a]);return Dc(e,i,l)};z.createRef=function(){return{current:null}};z.forwardRef=function(e){return{$$typeof:nb,render:e}};z.isValidElement=xc;z.lazy=function(e){return{$$typeof:cg,_payload:{_status:-1,_result:e},_init:sb}};z.memo=function(e,t){return{$$typeof:lb,type:e,compare:t===void 0?null:t}};z.startTransition=function(e){var t=fe.T,n={};fe.T=n;try{var a=e(),l=fe.S;l!==null&&l(n,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Cc,ug)}catch(i){ug(i)}finally{t!==null&&n.types!==null&&(t.types=n.types),fe.T=t}};z.unstable_useCacheRefresh=function(){return fe.H.useCacheRefresh()};z.use=function(e){return fe.H.use(e)};z.useActionState=function(e,t,n){return fe.H.useActionState(e,t,n)};z.useCallback=function(e,t){return fe.H.useCallback(e,t)};z.useContext=function(e){return fe.H.useContext(e)};z.useDebugValue=function(){};z.useDeferredValue=function(e,t){return fe.H.useDeferredValue(e,t)};z.useEffect=function(e,t){return fe.H.useEffect(e,t)};z.useEffectEvent=function(e){return fe.H.useEffectEvent(e)};z.useId=function(){return fe.H.useId()};z.useImperativeHandle=function(e,t,n){return fe.H.useImperativeHandle(e,t,n)};z.useInsertionEffect=function(e,t){return fe.H.useInsertionEffect(e,t)};z.useLayoutEffect=function(e,t){return fe.H.useLayoutEffect(e,t)};z.useMemo=function(e,t){return fe.H.useMemo(e,t)};z.useOptimistic=function(e,t){return fe.H.useOptimistic(e,t)};z.useReducer=function(e,t,n){return fe.H.useReducer(e,t,n)};z.useRef=function(e){return fe.H.useRef(e)};z.useState=function(e){return fe.H.useState(e)};z.useSyncExternalStore=function(e,t,n){return fe.H.useSyncExternalStore(e,t,n)};z.useTransition=function(){return fe.H.useTransition()};z.version="19.2.8"});var dt=rn((OS,yg)=>{"use strict";yg.exports=hg()});var Eg=rn(be=>{"use strict";function Nc(e,t){var n=e.length;e.push(t);e:for(;0<n;){var a=n-1>>>1,l=e[a];if(0<io(l,t))e[a]=t,e[n]=l,n=a;else break e}}function on(e){return e.length===0?null:e[0]}function oo(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,l=e.length,i=l>>>1;a<i;){var r=2*(a+1)-1,o=e[r],u=r+1,c=e[u];if(0>io(o,n))u<l&&0>io(c,o)?(e[a]=c,e[u]=n,a=u):(e[a]=o,e[r]=n,a=r);else if(u<l&&0>io(c,n))e[a]=c,e[u]=n,a=u;else break e}}return t}function io(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}be.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(pg=performance,be.unstable_now=function(){return pg.now()}):(Mc=Date,vg=Mc.now(),be.unstable_now=function(){return Mc.now()-vg});var pg,Mc,vg,bn=[],Yn=[],fb=1,Ht=null,Je=3,Oc=!1,xi=!1,Mi=!1,kc=!1,wg=typeof setTimeout=="function"?setTimeout:null,Sg=typeof clearTimeout=="function"?clearTimeout:null,bg=typeof setImmediate<"u"?setImmediate:null;function ro(e){for(var t=on(Yn);t!==null;){if(t.callback===null)oo(Yn);else if(t.startTime<=e)oo(Yn),t.sortIndex=t.expirationTime,Nc(bn,t);else break;t=on(Yn)}}function Lc(e){if(Mi=!1,ro(e),!xi)if(on(bn)!==null)xi=!0,hl||(hl=!0,ml());else{var t=on(Yn);t!==null&&zc(Lc,t.startTime-e)}}var hl=!1,_i=-1,Cg=5,Rg=-1;function Tg(){return kc?!0:!(be.unstable_now()-Rg<Cg)}function _c(){if(kc=!1,hl){var e=be.unstable_now();Rg=e;var t=!0;try{e:{xi=!1,Mi&&(Mi=!1,Sg(_i),_i=-1),Oc=!0;var n=Je;try{t:{for(ro(e),Ht=on(bn);Ht!==null&&!(Ht.expirationTime>e&&Tg());){var a=Ht.callback;if(typeof a=="function"){Ht.callback=null,Je=Ht.priorityLevel;var l=a(Ht.expirationTime<=e);if(e=be.unstable_now(),typeof l=="function"){Ht.callback=l,ro(e),t=!0;break t}Ht===on(bn)&&oo(bn),ro(e)}else oo(bn);Ht=on(bn)}if(Ht!==null)t=!0;else{var i=on(Yn);i!==null&&zc(Lc,i.startTime-e),t=!1}}break e}finally{Ht=null,Je=n,Oc=!1}t=void 0}}finally{t?ml():hl=!1}}}var ml;typeof bg=="function"?ml=function(){bg(_c)}:typeof MessageChannel<"u"?(Bc=new MessageChannel,Ag=Bc.port2,Bc.port1.onmessage=_c,ml=function(){Ag.postMessage(null)}):ml=function(){wg(_c,0)};var Bc,Ag;function zc(e,t){_i=wg(function(){e(be.unstable_now())},t)}be.unstable_IdlePriority=5;be.unstable_ImmediatePriority=1;be.unstable_LowPriority=4;be.unstable_NormalPriority=3;be.unstable_Profiling=null;be.unstable_UserBlockingPriority=2;be.unstable_cancelCallback=function(e){e.callback=null};be.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Cg=0<e?Math.floor(1e3/e):5};be.unstable_getCurrentPriorityLevel=function(){return Je};be.unstable_next=function(e){switch(Je){case 1:case 2:case 3:var t=3;break;default:t=Je}var n=Je;Je=t;try{return e()}finally{Je=n}};be.unstable_requestPaint=function(){kc=!0};be.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=Je;Je=e;try{return t()}finally{Je=n}};be.unstable_scheduleCallback=function(e,t,n){var a=be.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0<n?a+n:a):n=a,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return l=n+l,e={id:fb++,callback:t,priorityLevel:e,startTime:n,expirationTime:l,sortIndex:-1},n>a?(e.sortIndex=n,Nc(Yn,e),on(bn)===null&&e===on(Yn)&&(Mi?(Sg(_i),_i=-1):Mi=!0,zc(Lc,n-a))):(e.sortIndex=l,Nc(bn,e),xi||Oc||(xi=!0,hl||(hl=!0,ml()))),e};be.unstable_shouldYield=Tg;be.unstable_wrapCallback=function(e){var t=Je;return function(){var n=Je;Je=t;try{return e.apply(this,arguments)}finally{Je=n}}}});var xg=rn((LS,Dg)=>{"use strict";Dg.exports=Eg()});var _g=rn(it=>{"use strict";var gb=dt();function Mg(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Vn(){}var lt={d:{f:Vn,r:function(){throw Error(Mg(522))},D:Vn,C:Vn,L:Vn,m:Vn,X:Vn,S:Vn,M:Vn},p:0,findDOMNode:null},mb=Symbol.for("react.portal");function hb(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:mb,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}var Bi=gb.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function uo(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}it.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=lt;it.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(Mg(299));return hb(e,t,null,n)};it.flushSync=function(e){var t=Bi.T,n=lt.p;try{if(Bi.T=null,lt.p=2,e)return e()}finally{Bi.T=t,lt.p=n,lt.d.f()}};it.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,lt.d.C(e,t))};it.prefetchDNS=function(e){typeof e=="string"&&lt.d.D(e)};it.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var n=t.as,a=uo(n,t.crossOrigin),l=typeof t.integrity=="string"?t.integrity:void 0,i=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;n==="style"?lt.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:l,fetchPriority:i}):n==="script"&&lt.d.X(e,{crossOrigin:a,integrity:l,fetchPriority:i,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};it.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var n=uo(t.as,t.crossOrigin);lt.d.M(e,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&lt.d.M(e)};it.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var n=t.as,a=uo(n,t.crossOrigin);lt.d.L(e,n,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};it.preloadModule=function(e,t){if(typeof e=="string")if(t){var n=uo(t.as,t.crossOrigin);lt.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else lt.d.m(e)};it.requestFormReset=function(e){lt.d.r(e)};it.unstable_batchedUpdates=function(e,t){return e(t)};it.useFormState=function(e,t,n){return Bi.H.useFormState(e,t,n)};it.useFormStatus=function(){return Bi.H.useHostTransitionStatus()};it.version="19.2.8"});var Og=rn((HS,Ng)=>{"use strict";function Bg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Bg)}catch(e){console.error(e)}}Bg(),Ng.exports=_g()});var Vp=rn(ku=>{"use strict";var Ue=xg(),ih=dt(),yb=Og();function w(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function rh(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function pr(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function oh(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function uh(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function kg(e){if(pr(e)!==e)throw Error(w(188))}function pb(e){var t=e.alternate;if(!t){if(t=pr(e),t===null)throw Error(w(188));return t!==e?null:e}for(var n=e,a=t;;){var l=n.return;if(l===null)break;var i=l.alternate;if(i===null){if(a=l.return,a!==null){n=a;continue}break}if(l.child===i.child){for(i=l.child;i;){if(i===n)return kg(l),e;if(i===a)return kg(l),t;i=i.sibling}throw Error(w(188))}if(n.return!==a.return)n=l,a=i;else{for(var r=!1,o=l.child;o;){if(o===n){r=!0,n=l,a=i;break}if(o===a){r=!0,a=l,n=i;break}o=o.sibling}if(!r){for(o=i.child;o;){if(o===n){r=!0,n=i,a=l;break}if(o===a){r=!0,a=i,n=l;break}o=o.sibling}if(!r)throw Error(w(189))}}if(n.alternate!==a)throw Error(w(190))}if(n.tag!==3)throw Error(w(188));return n.stateNode.current===n?e:t}function ch(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=ch(e),t!==null)return t;e=e.sibling}return null}var he=Object.assign,vb=Symbol.for("react.element"),co=Symbol.for("react.transitional.element"),Gi=Symbol.for("react.portal"),wl=Symbol.for("react.fragment"),sh=Symbol.for("react.strict_mode"),ys=Symbol.for("react.profiler"),dh=Symbol.for("react.consumer"),Dn=Symbol.for("react.context"),dd=Symbol.for("react.forward_ref"),ps=Symbol.for("react.suspense"),vs=Symbol.for("react.suspense_list"),fd=Symbol.for("react.memo"),Xn=Symbol.for("react.lazy");Symbol.for("react.scope");var bs=Symbol.for("react.activity");Symbol.for("react.legacy_hidden");Symbol.for("react.tracing_marker");var bb=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var Lg=Symbol.iterator;function Ni(e){return e===null||typeof e!="object"?null:(e=Lg&&e[Lg]||e["@@iterator"],typeof e=="function"?e:null)}var Ab=Symbol.for("react.client.reference");function As(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Ab?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case wl:return"Fragment";case ys:return"Profiler";case sh:return"StrictMode";case ps:return"Suspense";case vs:return"SuspenseList";case bs:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case Gi:return"Portal";case Dn:return e.displayName||"Context";case dh:return(e._context.displayName||"Context")+".Consumer";case dd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case fd:return t=e.displayName||null,t!==null?t:As(e.type)||"Memo";case Xn:t=e._payload,e=e._init;try{return As(e(t))}catch{}}return null}var qi=Array.isArray,k=ih.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=yb.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ka={pending:!1,data:null,method:null,action:null},ws=[],Sl=-1;function fn(e){return{current:e}}function je(e){0>Sl||(e.current=ws[Sl],ws[Sl]=null,Sl--)}function se(e,t){Sl++,ws[Sl]=e.current,e.current=t}var dn=fn(null),ar=fn(null),aa=fn(null),jo=fn(null);function Yo(e,t){switch(se(aa,t),se(ar,e),se(dn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Fm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Fm(t),e=Bp(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}je(dn),se(dn,e)}function ql(){je(dn),je(ar),je(aa)}function Ss(e){e.memoizedState!==null&&se(jo,e);var t=dn.current,n=Bp(t,e.type);t!==n&&(se(ar,e),se(dn,n))}function Vo(e){ar.current===e&&(je(dn),je(ar)),jo.current===e&&(je(jo),mr._currentValue=ka)}var Hc,zg;function _a(e){if(Hc===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Hc=t&&t[1]||"",zg=-1<n.stack.indexOf(`    at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return``+Hc+e+zg}var Uc=!1;function Gc(e,t){if(!e||Uc)return"";Uc=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(m){var d=m}Reflect.construct(e,[],f)}else{try{f.call()}catch(m){d=m}e.call(f.prototype)}}else{try{throw Error()}catch(m){d=m}(f=e())&&typeof f.catch=="function"&&f.catch(function(){})}}catch(m){if(m&&d&&typeof m.stack=="string")return[m.stack,d.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var l=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");l&&l.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var i=a.DetermineComponentFrameRoot(),r=i[0],o=i[1];if(r&&o){var u=r.split(``),c=o.split(``);for(l=a=0;a<u.length&&!u[a].includes("DetermineComponentFrameRoot");)a++;for(;l<c.length&&!c[l].includes("DetermineComponentFrameRoot");)l++;if(a===u.length||l===c.length)for(a=u.length-1,l=c.length-1;1<=a&&0<=l&&u[a]!==c[l];)l--;for(;1<=a&&0<=l;a--,l--)if(u[a]!==c[l]){if(a!==1||l!==1)do if(a--,l--,0>l||u[a]!==c[l]){var s=``+u[a].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{Uc=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?_a(n):""}function wb(e,t){switch(e.tag){case 26:case 27:case 5:return _a(e.type);case 16:return _a("Lazy");case 13:return e.child!==t&&t!==null?_a("Suspense Fallback"):_a("Suspense");case 19:return _a("SuspenseList");case 0:case 15:return Gc(e.type,!1);case 11:return Gc(e.type.render,!1);case 1:return Gc(e.type,!0);case 31:return _a("Activity");default:return""}}function Hg(e){try{var t="",n=null;do t+=wb(e,n),n=e,e=e.return;while(e);return t}catch(a){return`Error generating stack: `+a.message+``+a.stack}}var Cs=Object.prototype.hasOwnProperty,gd=Ue.unstable_scheduleCallback,qc=Ue.unstable_cancelCallback,Sb=Ue.unstable_shouldYield,Cb=Ue.unstable_requestPaint,Tt=Ue.unstable_now,Rb=Ue.unstable_getCurrentPriorityLevel,fh=Ue.unstable_ImmediatePriority,gh=Ue.unstable_UserBlockingPriority,Xo=Ue.unstable_NormalPriority,Tb=Ue.unstable_LowPriority,mh=Ue.unstable_IdlePriority,Eb=Ue.log,Db=Ue.unstable_setDisableYieldValue,vr=null,Et=null;function Jn(e){if(typeof Eb=="function"&&Db(e),Et&&typeof Et.setStrictMode=="function")try{Et.setStrictMode(vr,e)}catch{}}var Dt=Math.clz32?Math.clz32:_b,xb=Math.log,Mb=Math.LN2;function _b(e){return e>>>=0,e===0?32:31-(xb(e)/Mb|0)|0}var so=256,fo=262144,go=4194304;function Ba(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vu(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var l=0,i=e.suspendedLanes,r=e.pingedLanes;e=e.warmLanes;var o=a&134217727;return o!==0?(a=o&~i,a!==0?l=Ba(a):(r&=o,r!==0?l=Ba(r):n||(n=o&~e,n!==0&&(l=Ba(n))))):(o=a&~i,o!==0?l=Ba(o):r!==0?l=Ba(r):n||(n=a&~e,n!==0&&(l=Ba(n)))),l===0?0:t!==0&&t!==l&&(t&i)===0&&(i=l&-l,n=t&-t,i>=n||i===32&&(n&4194048)!==0)?t:l}function br(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Bb(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hh(){var e=go;return go<<=1,(go&62914560)===0&&(go=4194304),e}function Pc(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ar(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Nb(e,t,n,a,l,i){var r=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,u=e.expirationTimes,c=e.hiddenUpdates;for(n=r&~n;0<n;){var s=31-Dt(n),f=1<<s;o[s]=0,u[s]=-1;var d=c[s];if(d!==null)for(c[s]=null,s=0;s<d.length;s++){var m=d[s];m!==null&&(m.lane&=-536870913)}n&=~f}a!==0&&yh(e,a,0),i!==0&&l===0&&e.tag!==0&&(e.suspendedLanes|=i&~(r&~t))}function yh(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-Dt(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function ph(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-Dt(n),l=1<<a;l&t|e[a]&t&&(e[a]|=t),n&=~l}}function vh(e,t){var n=t&-t;return n=(n&42)!==0?1:md(n),(n&(e.suspendedLanes|t))!==0?0:n}function md(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function hd(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function bh(){var e=Z.p;return e!==0?e:(e=window.event,e===void 0?32:Fp(e.type))}function Ug(e,t){var n=Z.p;try{return Z.p=e,t()}finally{Z.p=n}}var ya=Math.random().toString(36).slice(2),Xe="__reactFiber$"+ya,pt="__reactProps$"+ya,Il="__reactContainer$"+ya,Rs="__reactEvents$"+ya,Ob="__reactListeners$"+ya,kb="__reactHandles$"+ya,Gg="__reactResources$"+ya,wr="__reactMarker$"+ya;function yd(e){delete e[Xe],delete e[pt],delete e[Rs],delete e[Ob],delete e[kb]}function Cl(e){var t=e[Xe];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Il]||n[Xe]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Qm(e);e!==null;){if(n=e[Xe])return n;e=Qm(e)}return t}e=n,n=e.parentNode}return null}function Jl(e){if(e=e[Xe]||e[Il]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Pi(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(w(33))}function Ol(e){var t=e[Gg];return t||(t=e[Gg]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Fe(e){e[wr]=!0}var Ah=new Set,wh={};function Ya(e,t){Pl(e,t),Pl(e+"Capture",t)}function Pl(e,t){for(wh[e]=t,e=0;e<t.length;e++)Ah.add(t[e])}var Lb=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),qg={},Pg={};function zb(e){return Cs.call(Pg,e)?!0:Cs.call(qg,e)?!1:Lb.test(e)?Pg[e]=!0:(qg[e]=!0,!1)}function xo(e,t,n){if(zb(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function mo(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function An(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+a)}}function Gt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Sh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Hb(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var l=a.get,i=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(r){n=""+r,i.call(this,r)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(r){n=""+r},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ts(e){if(!e._valueTracker){var t=Sh(e)?"checked":"value";e._valueTracker=Hb(e,t,""+e[t])}}function Ch(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Sh(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function Qo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Ub=/[\n"\\]/g;function Ft(e){return e.replace(Ub,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Es(e,t,n,a,l,i,r,o){e.name="",r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?e.type=r:e.removeAttribute("type"),t!=null?r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Gt(t)):e.value!==""+Gt(t)&&(e.value=""+Gt(t)):r!=="submit"&&r!=="reset"||e.removeAttribute("value"),t!=null?Ds(e,r,Gt(t)):n!=null?Ds(e,r,Gt(n)):a!=null&&e.removeAttribute("value"),l==null&&i!=null&&(e.defaultChecked=!!i),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?e.name=""+Gt(o):e.removeAttribute("name")}function Rh(e,t,n,a,l,i,r,o){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.type=i),t!=null||n!=null){if(!(i!=="submit"&&i!=="reset"||t!=null)){Ts(e);return}n=n!=null?""+Gt(n):"",t=t!=null?""+Gt(t):n,o||t===e.value||(e.value=t),e.defaultValue=t}a=a??l,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=o?e.checked:!!a,e.defaultChecked=!!a,r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.name=r),Ts(e)}function Ds(e,t,n){t==="number"&&Qo(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function kl(e,t,n,a){if(e=e.options,t){t={};for(var l=0;l<n.length;l++)t["$"+n[l]]=!0;for(n=0;n<e.length;n++)l=t.hasOwnProperty("$"+e[n].value),e[n].selected!==l&&(e[n].selected=l),l&&a&&(e[n].defaultSelected=!0)}else{for(n=""+Gt(n),t=null,l=0;l<e.length;l++){if(e[l].value===n){e[l].selected=!0,a&&(e[l].defaultSelected=!0);return}t!==null||e[l].disabled||(t=e[l])}t!==null&&(t.selected=!0)}}function Th(e,t,n){if(t!=null&&(t=""+Gt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+Gt(n):""}function Eh(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error(w(92));if(qi(a)){if(1<a.length)throw Error(w(93));a=a[0]}n=a}n==null&&(n=""),t=n}n=Gt(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),Ts(e)}function Fl(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Gb=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Fg(e,t,n){var a=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||Gb.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Dh(e,t,n){if(t!=null&&typeof t!="object")throw Error(w(62));if(e=e.style,n!=null){for(var a in n)!n.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var l in t)a=t[l],t.hasOwnProperty(l)&&n[l]!==a&&Fg(e,l,a)}else for(var i in t)t.hasOwnProperty(i)&&Fg(e,i,t[i])}function pd(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var qb=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Pb=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Mo(e){return Pb.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function xn(){}var xs=null;function vd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Rl=null,Ll=null;function jg(e){var t=Jl(e);if(t&&(e=t.stateNode)){var n=e[pt]||null;e:switch(e=t.stateNode,t.type){case"input":if(Es(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+Ft(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var l=a[pt]||null;if(!l)throw Error(w(90));Es(a,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&Ch(a)}break e;case"textarea":Th(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&kl(e,!!n.multiple,t,!1)}}}var Fc=!1;function xh(e,t,n){if(Fc)return e(t,n);Fc=!0;try{var a=e(t);return a}finally{if(Fc=!1,(Rl!==null||Ll!==null)&&(_u(),Rl&&(t=Rl,e=Ll,Ll=Rl=null,jg(t),e)))for(t=0;t<e.length;t++)jg(e[t])}}function lr(e,t){var n=e.stateNode;if(n===null)return null;var a=n[pt]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(w(231,t,typeof n));return n}var On=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ms=!1;if(On)try{yl={},Object.defineProperty(yl,"passive",{get:function(){Ms=!0}}),window.addEventListener("test",yl,yl),window.removeEventListener("test",yl,yl)}catch{Ms=!1}var yl,$n=null,bd=null,_o=null;function Mh(){if(_o)return _o;var e,t=bd,n=t.length,a,l="value"in $n?$n.value:$n.textContent,i=l.length;for(e=0;e<n&&t[e]===l[e];e++);var r=n-e;for(a=1;a<=r&&t[n-a]===l[i-a];a++);return _o=l.slice(e,1<a?1-a:void 0)}function Bo(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function ho(){return!0}function Yg(){return!1}function vt(e){function t(n,a,l,i,r){this._reactName=n,this._targetInst=l,this.type=a,this.nativeEvent=i,this.target=r,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented!=null?i.defaultPrevented:i.returnValue===!1)?ho:Yg,this.isPropagationStopped=Yg,this}return he(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=ho)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=ho)},persist:function(){},isPersistent:ho}),t}var Va={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},bu=vt(Va),Sr=he({},Va,{view:0,detail:0}),Fb=vt(Sr),jc,Yc,Oi,Au=he({},Sr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Ad,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Oi&&(Oi&&e.type==="mousemove"?(jc=e.screenX-Oi.screenX,Yc=e.screenY-Oi.screenY):Yc=jc=0,Oi=e),jc)},movementY:function(e){return"movementY"in e?e.movementY:Yc}}),Vg=vt(Au),jb=he({},Au,{dataTransfer:0}),Yb=vt(jb),Vb=he({},Sr,{relatedTarget:0}),Vc=vt(Vb),Xb=he({},Va,{animationName:0,elapsedTime:0,pseudoElement:0}),Qb=vt(Xb),Kb=he({},Va,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Zb=vt(Kb),Wb=he({},Va,{data:0}),Xg=vt(Wb),Ib={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Jb={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},$b={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function eA(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=$b[e])?!!t[e]:!1}function Ad(){return eA}var tA=he({},Sr,{key:function(e){if(e.key){var t=Ib[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Bo(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Jb[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Ad,charCode:function(e){return e.type==="keypress"?Bo(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Bo(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),nA=vt(tA),aA=he({},Au,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Qg=vt(aA),lA=he({},Sr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Ad}),iA=vt(lA),rA=he({},Va,{propertyName:0,elapsedTime:0,pseudoElement:0}),oA=vt(rA),uA=he({},Au,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),cA=vt(uA),sA=he({},Va,{newState:0,oldState:0}),dA=vt(sA),fA=[9,13,27,32],wd=On&&"CompositionEvent"in window,Yi=null;On&&"documentMode"in document&&(Yi=document.documentMode);var gA=On&&"TextEvent"in window&&!Yi,_h=On&&(!wd||Yi&&8<Yi&&11>=Yi),Kg=" ",Zg=!1;function Bh(e,t){switch(e){case"keyup":return fA.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Tl=!1;function mA(e,t){switch(e){case"compositionend":return Nh(t);case"keypress":return t.which!==32?null:(Zg=!0,Kg);case"textInput":return e=t.data,e===Kg&&Zg?null:e;default:return null}}function hA(e,t){if(Tl)return e==="compositionend"||!wd&&Bh(e,t)?(e=Mh(),_o=bd=$n=null,Tl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return _h&&t.locale!=="ko"?null:t.data;default:return null}}var yA={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Wg(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!yA[e.type]:t==="textarea"}function Oh(e,t,n,a){Rl?Ll?Ll.push(a):Ll=[a]:Rl=a,t=du(t,"onChange"),0<t.length&&(n=new bu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Vi=null,ir=null;function pA(e){xp(e,0)}function wu(e){var t=Pi(e);if(Ch(t))return e}function Ig(e,t){if(e==="change")return t}var kh=!1;On&&(On?(po="oninput"in document,po||(Xc=document.createElement("div"),Xc.setAttribute("oninput","return;"),po=typeof Xc.oninput=="function"),yo=po):yo=!1,kh=yo&&(!document.documentMode||9<document.documentMode));var yo,po,Xc;function Jg(){Vi&&(Vi.detachEvent("onpropertychange",Lh),ir=Vi=null)}function Lh(e){if(e.propertyName==="value"&&wu(ir)){var t=[];Oh(t,ir,e,vd(e)),xh(pA,t)}}function vA(e,t,n){e==="focusin"?(Jg(),Vi=t,ir=n,Vi.attachEvent("onpropertychange",Lh)):e==="focusout"&&Jg()}function bA(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return wu(ir)}function AA(e,t){if(e==="click")return wu(t)}function wA(e,t){if(e==="input"||e==="change")return wu(t)}function SA(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Mt=typeof Object.is=="function"?Object.is:SA;function rr(e,t){if(Mt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var l=n[a];if(!Cs.call(t,l)||!Mt(e[l],t[l]))return!1}return!0}function $g(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function em(e,t){var n=$g(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=$g(n)}}function zh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?zh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Hh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Qo(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Qo(e.document)}return t}function Sd(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var CA=On&&"documentMode"in document&&11>=document.documentMode,El=null,_s=null,Xi=null,Bs=!1;function tm(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Bs||El==null||El!==Qo(a)||(a=El,"selectionStart"in a&&Sd(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Xi&&rr(Xi,a)||(Xi=a,a=du(_s,"onSelect"),0<a.length&&(t=new bu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=El)))}function Ma(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Dl={animationend:Ma("Animation","AnimationEnd"),animationiteration:Ma("Animation","AnimationIteration"),animationstart:Ma("Animation","AnimationStart"),transitionrun:Ma("Transition","TransitionRun"),transitionstart:Ma("Transition","TransitionStart"),transitioncancel:Ma("Transition","TransitionCancel"),transitionend:Ma("Transition","TransitionEnd")},Qc={},Uh={};On&&(Uh=document.createElement("div").style,"AnimationEvent"in window||(delete Dl.animationend.animation,delete Dl.animationiteration.animation,delete Dl.animationstart.animation),"TransitionEvent"in window||delete Dl.transitionend.transition);function Xa(e){if(Qc[e])return Qc[e];if(!Dl[e])return e;var t=Dl[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Uh)return Qc[e]=t[n];return e}var Gh=Xa("animationend"),qh=Xa("animationiteration"),Ph=Xa("animationstart"),RA=Xa("transitionrun"),TA=Xa("transitionstart"),EA=Xa("transitioncancel"),Fh=Xa("transitionend"),jh=new Map,Ns="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Ns.push("scrollEnd");function en(e,t){jh.set(e,t),Ya(t,[e])}var Ko=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Ut=[],xl=0,Cd=0;function Su(){for(var e=xl,t=Cd=xl=0;t<e;){var n=Ut[t];Ut[t++]=null;var a=Ut[t];Ut[t++]=null;var l=Ut[t];Ut[t++]=null;var i=Ut[t];if(Ut[t++]=null,a!==null&&l!==null){var r=a.pending;r===null?l.next=l:(l.next=r.next,r.next=l),a.pending=l}i!==0&&Yh(n,l,i)}}function Cu(e,t,n,a){Ut[xl++]=e,Ut[xl++]=t,Ut[xl++]=n,Ut[xl++]=a,Cd|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function Rd(e,t,n,a){return Cu(e,t,n,a),Zo(e)}function Qa(e,t){return Cu(e,null,null,t),Zo(e)}function Yh(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var l=!1,i=e.return;i!==null;)i.childLanes|=n,a=i.alternate,a!==null&&(a.childLanes|=n),i.tag===22&&(e=i.stateNode,e===null||e._visibility&1||(l=!0)),e=i,i=i.return;return e.tag===3?(i=e.stateNode,l&&t!==null&&(l=31-Dt(n),e=i.hiddenUpdates,a=e[l],a===null?e[l]=[t]:a.push(t),t.lane=n|536870912),i):null}function Zo(e){if(50<tr)throw tr=0,$s=null,Error(w(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Ml={};function DA(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ct(e,t,n,a){return new DA(e,t,n,a)}function Td(e){return e=e.prototype,!(!e||!e.isReactComponent)}function _n(e,t){var n=e.alternate;return n===null?(n=Ct(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Vh(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function No(e,t,n,a,l,i){var r=0;if(a=e,typeof e=="function")Td(e)&&(r=1);else if(typeof e=="string")r=_w(e,n,dn.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case bs:return e=Ct(31,n,t,l),e.elementType=bs,e.lanes=i,e;case wl:return La(n.children,l,i,t);case sh:r=8,l|=24;break;case ys:return e=Ct(12,n,t,l|2),e.elementType=ys,e.lanes=i,e;case ps:return e=Ct(13,n,t,l),e.elementType=ps,e.lanes=i,e;case vs:return e=Ct(19,n,t,l),e.elementType=vs,e.lanes=i,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Dn:r=10;break e;case dh:r=9;break e;case dd:r=11;break e;case fd:r=14;break e;case Xn:r=16,a=null;break e}r=29,n=Error(w(130,e===null?"null":typeof e,"")),a=null}return t=Ct(r,n,t,l),t.elementType=e,t.type=a,t.lanes=i,t}function La(e,t,n,a){return e=Ct(7,e,a,t),e.lanes=n,e}function Kc(e,t,n){return e=Ct(6,e,null,t),e.lanes=n,e}function Xh(e){var t=Ct(18,null,null,0);return t.stateNode=e,t}function Zc(e,t,n){return t=Ct(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var nm=new WeakMap;function jt(e,t){if(typeof e=="object"&&e!==null){var n=nm.get(e);return n!==void 0?n:(t={value:e,source:t,stack:Hg(t)},nm.set(e,t),t)}return{value:e,source:t,stack:Hg(t)}}var _l=[],Bl=0,Wo=null,or=0,qt=[],Pt=0,fa=null,un=1,cn="";function Tn(e,t){_l[Bl++]=or,_l[Bl++]=Wo,Wo=e,or=t}function Qh(e,t,n){qt[Pt++]=un,qt[Pt++]=cn,qt[Pt++]=fa,fa=e;var a=un;e=cn;var l=32-Dt(a)-1;a&=~(1<<l),n+=1;var i=32-Dt(t)+l;if(30<i){var r=l-l%5;i=(a&(1<<r)-1).toString(32),a>>=r,l-=r,un=1<<32-Dt(t)+l|n<<l|a,cn=i+e}else un=1<<i|n<<l|a,cn=e}function Ed(e){e.return!==null&&(Tn(e,1),Qh(e,1,0))}function Dd(e){for(;e===Wo;)Wo=_l[--Bl],_l[Bl]=null,or=_l[--Bl],_l[Bl]=null;for(;e===fa;)fa=qt[--Pt],qt[Pt]=null,cn=qt[--Pt],qt[Pt]=null,un=qt[--Pt],qt[Pt]=null}function Kh(e,t){qt[Pt++]=un,qt[Pt++]=cn,qt[Pt++]=fa,un=t.id,cn=t.overflow,fa=e}var Qe=null,me=null,V=!1,la=null,Yt=!1,Os=Error(w(519));function ga(e){var t=Error(w(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw ur(jt(t,e)),Os}function am(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[Xe]=e,t[pt]=a,n){case"dialog":P("cancel",t),P("close",t);break;case"iframe":case"object":case"embed":P("load",t);break;case"video":case"audio":for(n=0;n<fr.length;n++)P(fr[n],t);break;case"source":P("error",t);break;case"img":case"image":case"link":P("error",t),P("load",t);break;case"details":P("toggle",t);break;case"input":P("invalid",t),Rh(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":P("invalid",t);break;case"textarea":P("invalid",t),Eh(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||_p(t.textContent,n)?(a.popover!=null&&(P("beforetoggle",t),P("toggle",t)),a.onScroll!=null&&P("scroll",t),a.onScrollEnd!=null&&P("scrollend",t),a.onClick!=null&&(t.onclick=xn),t=!0):t=!1,t||ga(e,!0)}function lm(e){for(Qe=e.return;Qe;)switch(Qe.tag){case 5:case 31:case 13:Yt=!1;return;case 27:case 3:Yt=!0;return;default:Qe=Qe.return}}function pl(e){if(e!==Qe)return!1;if(!V)return lm(e),V=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||ld(e.type,e.memoizedProps)),n=!n),n&&me&&ga(e),lm(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(317));me=Xm(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(317));me=Xm(e)}else t===27?(t=me,pa(e.type)?(e=ud,ud=null,me=e):me=t):me=Qe?Xt(e.stateNode.nextSibling):null;return!0}function Ga(){me=Qe=null,V=!1}function Wc(){var e=la;return e!==null&&(ht===null?ht=e:ht.push.apply(ht,e),la=null),e}function ur(e){la===null?la=[e]:la.push(e)}var ks=fn(null),Ka=null,Mn=null;function Kn(e,t,n){se(ks,t._currentValue),t._currentValue=n}function Bn(e){e._currentValue=ks.current,je(ks)}function Ls(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function zs(e,t,n,a){var l=e.child;for(l!==null&&(l.return=e);l!==null;){var i=l.dependencies;if(i!==null){var r=l.child;i=i.firstContext;e:for(;i!==null;){var o=i;i=l;for(var u=0;u<t.length;u++)if(o.context===t[u]){i.lanes|=n,o=i.alternate,o!==null&&(o.lanes|=n),Ls(i.return,n,e),a||(r=null);break e}i=o.next}}else if(l.tag===18){if(r=l.return,r===null)throw Error(w(341));r.lanes|=n,i=r.alternate,i!==null&&(i.lanes|=n),Ls(r,n,e),r=null}else r=l.child;if(r!==null)r.return=l;else for(r=l;r!==null;){if(r===e){r=null;break}if(l=r.sibling,l!==null){l.return=r.return,r=l;break}r=r.return}l=r}}function $l(e,t,n,a){e=null;for(var l=t,i=!1;l!==null;){if(!i){if((l.flags&524288)!==0)i=!0;else if((l.flags&262144)!==0)break}if(l.tag===10){var r=l.alternate;if(r===null)throw Error(w(387));if(r=r.memoizedProps,r!==null){var o=l.type;Mt(l.pendingProps.value,r.value)||(e!==null?e.push(o):e=[o])}}else if(l===jo.current){if(r=l.alternate,r===null)throw Error(w(387));r.memoizedState.memoizedState!==l.memoizedState.memoizedState&&(e!==null?e.push(mr):e=[mr])}l=l.return}e!==null&&zs(t,e,n,a),t.flags|=262144}function Io(e){for(e=e.firstContext;e!==null;){if(!Mt(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function qa(e){Ka=e,Mn=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Ke(e){return Zh(Ka,e)}function vo(e,t){return Ka===null&&qa(e),Zh(e,t)}function Zh(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Mn===null){if(e===null)throw Error(w(308));Mn=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Mn=Mn.next=t;return n}var xA=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},MA=Ue.unstable_scheduleCallback,_A=Ue.unstable_NormalPriority,ke={$$typeof:Dn,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function xd(){return{controller:new xA,data:new Map,refCount:0}}function Cr(e){e.refCount--,e.refCount===0&&MA(_A,function(){e.controller.abort()})}var Qi=null,Hs=0,jl=0,zl=null;function BA(e,t){if(Qi===null){var n=Qi=[];Hs=0,jl=$d(),zl={status:"pending",value:void 0,then:function(a){n.push(a)}}}return Hs++,t.then(im,im),t}function im(){if(--Hs===0&&Qi!==null){zl!==null&&(zl.status="fulfilled");var e=Qi;Qi=null,jl=0,zl=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function NA(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(l){n.push(l)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var l=0;l<n.length;l++)(0,n[l])(t)},function(l){for(a.status="rejected",a.reason=l,l=0;l<n.length;l++)(0,n[l])(void 0)}),a}var rm=k.S;k.S=function(e,t){cp=Tt(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&BA(e,t),rm!==null&&rm(e,t)};var za=fn(null);function Md(){var e=za.current;return e!==null?e:oe.pooledCache}function Oo(e,t){t===null?se(za,za.current):se(za,t.pool)}function Wh(){var e=Md();return e===null?null:{parent:ke._currentValue,pool:e}}var ei=Error(w(460)),_d=Error(w(474)),Ru=Error(w(542)),Jo={then:function(){}};function om(e){return e=e.status,e==="fulfilled"||e==="rejected"}function Ih(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(xn,xn),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,cm(e),e;default:if(typeof t.status=="string")t.then(xn,xn);else{if(e=oe,e!==null&&100<e.shellSuspendCounter)throw Error(w(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var l=t;l.status="fulfilled",l.value=a}},function(a){if(t.status==="pending"){var l=t;l.status="rejected",l.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,cm(e),e}throw Ha=t,ei}}function Na(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(Ha=n,ei):n}}var Ha=null;function um(){if(Ha===null)throw Error(w(459));var e=Ha;return Ha=null,e}function cm(e){if(e===ei||e===Ru)throw Error(w(483))}var Hl=null,cr=0;function bo(e){var t=cr;return cr+=1,Hl===null&&(Hl=[]),Ih(Hl,e,t)}function ki(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function Ao(e,t){throw t.$$typeof===vb?Error(w(525)):(e=Object.prototype.toString.call(t),Error(w(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function Jh(e){function t(h,g){if(e){var y=h.deletions;y===null?(h.deletions=[g],h.flags|=16):y.push(g)}}function n(h,g){if(!e)return null;for(;g!==null;)t(h,g),g=g.sibling;return null}function a(h){for(var g=new Map;h!==null;)h.key!==null?g.set(h.key,h):g.set(h.index,h),h=h.sibling;return g}function l(h,g){return h=_n(h,g),h.index=0,h.sibling=null,h}function i(h,g,y){return h.index=y,e?(y=h.alternate,y!==null?(y=y.index,y<g?(h.flags|=67108866,g):y):(h.flags|=67108866,g)):(h.flags|=1048576,g)}function r(h){return e&&h.alternate===null&&(h.flags|=67108866),h}function o(h,g,y,p){return g===null||g.tag!==6?(g=Kc(y,h.mode,p),g.return=h,g):(g=l(g,y),g.return=h,g)}function u(h,g,y,p){var C=y.type;return C===wl?s(h,g,y.props.children,p,y.key):g!==null&&(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Xn&&Na(C)===g.type)?(g=l(g,y.props),ki(g,y),g.return=h,g):(g=No(y.type,y.key,y.props,null,h.mode,p),ki(g,y),g.return=h,g)}function c(h,g,y,p){return g===null||g.tag!==4||g.stateNode.containerInfo!==y.containerInfo||g.stateNode.implementation!==y.implementation?(g=Zc(y,h.mode,p),g.return=h,g):(g=l(g,y.children||[]),g.return=h,g)}function s(h,g,y,p,C){return g===null||g.tag!==7?(g=La(y,h.mode,p,C),g.return=h,g):(g=l(g,y),g.return=h,g)}function f(h,g,y){if(typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint")return g=Kc(""+g,h.mode,y),g.return=h,g;if(typeof g=="object"&&g!==null){switch(g.$$typeof){case co:return y=No(g.type,g.key,g.props,null,h.mode,y),ki(y,g),y.return=h,y;case Gi:return g=Zc(g,h.mode,y),g.return=h,g;case Xn:return g=Na(g),f(h,g,y)}if(qi(g)||Ni(g))return g=La(g,h.mode,y,null),g.return=h,g;if(typeof g.then=="function")return f(h,bo(g),y);if(g.$$typeof===Dn)return f(h,vo(h,g),y);Ao(h,g)}return null}function d(h,g,y,p){var C=g!==null?g.key:null;if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return C!==null?null:o(h,g,""+y,p);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case co:return y.key===C?u(h,g,y,p):null;case Gi:return y.key===C?c(h,g,y,p):null;case Xn:return y=Na(y),d(h,g,y,p)}if(qi(y)||Ni(y))return C!==null?null:s(h,g,y,p,null);if(typeof y.then=="function")return d(h,g,bo(y),p);if(y.$$typeof===Dn)return d(h,g,vo(h,y),p);Ao(h,y)}return null}function m(h,g,y,p,C){if(typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint")return h=h.get(y)||null,o(g,h,""+p,C);if(typeof p=="object"&&p!==null){switch(p.$$typeof){case co:return h=h.get(p.key===null?y:p.key)||null,u(g,h,p,C);case Gi:return h=h.get(p.key===null?y:p.key)||null,c(g,h,p,C);case Xn:return p=Na(p),m(h,g,y,p,C)}if(qi(p)||Ni(p))return h=h.get(y)||null,s(g,h,p,C,null);if(typeof p.then=="function")return m(h,g,y,bo(p),C);if(p.$$typeof===Dn)return m(h,g,y,vo(g,p),C);Ao(g,p)}return null}function v(h,g,y,p){for(var C=null,R=null,T=g,M=g=0,S=null;T!==null&&M<y.length;M++){T.index>M?(S=T,T=null):S=T.sibling;var D=d(h,T,y[M],p);if(D===null){T===null&&(T=S);break}e&&T&&D.alternate===null&&t(h,T),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D,T=S}if(M===y.length)return n(h,T),V&&Tn(h,M),C;if(T===null){for(;M<y.length;M++)T=f(h,y[M],p),T!==null&&(g=i(T,g,M),R===null?C=T:R.sibling=T,R=T);return V&&Tn(h,M),C}for(T=a(T);M<y.length;M++)S=m(T,h,M,y[M],p),S!==null&&(e&&S.alternate!==null&&T.delete(S.key===null?M:S.key),g=i(S,g,M),R===null?C=S:R.sibling=S,R=S);return e&&T.forEach(function(G){return t(h,G)}),V&&Tn(h,M),C}function A(h,g,y,p){if(y==null)throw Error(w(151));for(var C=null,R=null,T=g,M=g=0,S=null,D=y.next();T!==null&&!D.done;M++,D=y.next()){T.index>M?(S=T,T=null):S=T.sibling;var G=d(h,T,D.value,p);if(G===null){T===null&&(T=S);break}e&&T&&G.alternate===null&&t(h,T),g=i(G,g,M),R===null?C=G:R.sibling=G,R=G,T=S}if(D.done)return n(h,T),V&&Tn(h,M),C;if(T===null){for(;!D.done;M++,D=y.next())D=f(h,D.value,p),D!==null&&(g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return V&&Tn(h,M),C}for(T=a(T);!D.done;M++,D=y.next())D=m(T,h,M,D.value,p),D!==null&&(e&&D.alternate!==null&&T.delete(D.key===null?M:D.key),g=i(D,g,M),R===null?C=D:R.sibling=D,R=D);return e&&T.forEach(function(Se){return t(h,Se)}),V&&Tn(h,M),C}function b(h,g,y,p){if(typeof y=="object"&&y!==null&&y.type===wl&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case co:e:{for(var C=y.key;g!==null;){if(g.key===C){if(C=y.type,C===wl){if(g.tag===7){n(h,g.sibling),p=l(g,y.props.children),p.return=h,h=p;break e}}else if(g.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Xn&&Na(C)===g.type){n(h,g.sibling),p=l(g,y.props),ki(p,y),p.return=h,h=p;break e}n(h,g);break}else t(h,g);g=g.sibling}y.type===wl?(p=La(y.props.children,h.mode,p,y.key),p.return=h,h=p):(p=No(y.type,y.key,y.props,null,h.mode,p),ki(p,y),p.return=h,h=p)}return r(h);case Gi:e:{for(C=y.key;g!==null;){if(g.key===C)if(g.tag===4&&g.stateNode.containerInfo===y.containerInfo&&g.stateNode.implementation===y.implementation){n(h,g.sibling),p=l(g,y.children||[]),p.return=h,h=p;break e}else{n(h,g);break}else t(h,g);g=g.sibling}p=Zc(y,h.mode,p),p.return=h,h=p}return r(h);case Xn:return y=Na(y),b(h,g,y,p)}if(qi(y))return v(h,g,y,p);if(Ni(y)){if(C=Ni(y),typeof C!="function")throw Error(w(150));return y=C.call(y),A(h,g,y,p)}if(typeof y.then=="function")return b(h,g,bo(y),p);if(y.$$typeof===Dn)return b(h,g,vo(h,y),p);Ao(h,y)}return typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint"?(y=""+y,g!==null&&g.tag===6?(n(h,g.sibling),p=l(g,y),p.return=h,h=p):(n(h,g),p=Kc(y,h.mode,p),p.return=h,h=p),r(h)):n(h,g)}return function(h,g,y,p){try{cr=0;var C=b(h,g,y,p);return Hl=null,C}catch(T){if(T===ei||T===Ru)throw T;var R=Ct(29,T,null,h.mode);return R.lanes=p,R.return=h,R}finally{}}}var Pa=Jh(!0),$h=Jh(!1),Qn=!1;function Bd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Us(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function ia(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ra(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(K&2)!==0){var l=a.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),a.pending=t,t=Zo(e),Yh(e,null,n),t}return Cu(e,a,t,n),Zo(e)}function Ki(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,ph(e,n)}}function Ic(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var l=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var r={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};i===null?l=i=r:i=i.next=r,n=n.next}while(n!==null);i===null?l=i=t:i=i.next=t}else l=i=t;n={baseState:a.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Gs=!1;function Zi(){if(Gs){var e=zl;if(e!==null)throw e}}function Wi(e,t,n,a){Gs=!1;var l=e.updateQueue;Qn=!1;var i=l.firstBaseUpdate,r=l.lastBaseUpdate,o=l.shared.pending;if(o!==null){l.shared.pending=null;var u=o,c=u.next;u.next=null,r===null?i=c:r.next=c,r=u;var s=e.alternate;s!==null&&(s=s.updateQueue,o=s.lastBaseUpdate,o!==r&&(o===null?s.firstBaseUpdate=c:o.next=c,s.lastBaseUpdate=u))}if(i!==null){var f=l.baseState;r=0,s=c=u=null,o=i;do{var d=o.lane&-536870913,m=d!==o.lane;if(m?(j&d)===d:(a&d)===d){d!==0&&d===jl&&(Gs=!0),s!==null&&(s=s.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});e:{var v=e,A=o;d=t;var b=n;switch(A.tag){case 1:if(v=A.payload,typeof v=="function"){f=v.call(b,f,d);break e}f=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=A.payload,d=typeof v=="function"?v.call(b,f,d):v,d==null)break e;f=he({},f,d);break e;case 2:Qn=!0}}d=o.callback,d!==null&&(e.flags|=64,m&&(e.flags|=8192),m=l.callbacks,m===null?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:o.tag,payload:o.payload,callback:o.callback,next:null},s===null?(c=s=m,u=f):s=s.next=m,r|=d;if(o=o.next,o===null){if(o=l.shared.pending,o===null)break;m=o,o=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}while(!0);s===null&&(u=f),l.baseState=u,l.firstBaseUpdate=c,l.lastBaseUpdate=s,i===null&&(l.shared.lanes=0),ha|=r,e.lanes=r,e.memoizedState=f}}function ey(e,t){if(typeof e!="function")throw Error(w(191,e));e.call(t)}function ty(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)ey(n[e],t)}var Yl=fn(null),$o=fn(0);function sm(e,t){e=Hn,se($o,e),se(Yl,t),Hn=e|t.baseLanes}function qs(){se($o,Hn),se(Yl,Yl.current)}function Nd(){Hn=$o.current,je(Yl),je($o)}var _t=fn(null),Vt=null;function Zn(e){var t=e.alternate;se(Me,Me.current&1),se(_t,e),Vt===null&&(t===null||Yl.current!==null||t.memoizedState!==null)&&(Vt=e)}function Ps(e){se(Me,Me.current),se(_t,e),Vt===null&&(Vt=e)}function ny(e){e.tag===22?(se(Me,Me.current),se(_t,e),Vt===null&&(Vt=e)):Wn(e)}function Wn(){se(Me,Me.current),se(_t,_t.current)}function St(e){je(_t),Vt===e&&(Vt=null),je(Me)}var Me=fn(0);function eu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||rd(n)||od(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var kn=0,H=null,le=null,Ne=null,tu=!1,Ul=!1,Fa=!1,nu=0,sr=0,Gl=null,OA=0;function Ce(){throw Error(w(321))}function Od(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Mt(e[n],t[n]))return!1;return!0}function kd(e,t,n,a,l,i){return kn=i,H=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,k.H=e===null||e.memoizedState===null?Oy:Vd,Fa=!1,i=n(a,l),Fa=!1,Ul&&(i=ly(t,n,a,l)),ay(e),i}function ay(e){k.H=dr;var t=le!==null&&le.next!==null;if(kn=0,Ne=le=H=null,tu=!1,sr=0,Gl=null,t)throw Error(w(300));e===null||Le||(e=e.dependencies,e!==null&&Io(e)&&(Le=!0))}function ly(e,t,n,a){H=e;var l=0;do{if(Ul&&(Gl=null),sr=0,Ul=!1,25<=l)throw Error(w(301));if(l+=1,Ne=le=null,e.updateQueue!=null){var i=e.updateQueue;i.lastEffect=null,i.events=null,i.stores=null,i.memoCache!=null&&(i.memoCache.index=0)}k.H=ky,i=t(n,a)}while(Ul);return i}function kA(){var e=k.H,t=e.useState()[0];return t=typeof t.then=="function"?Rr(t):t,e=e.useState()[0],(le!==null?le.memoizedState:null)!==e&&(H.flags|=1024),t}function Ld(){var e=nu!==0;return nu=0,e}function zd(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Hd(e){if(tu){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}tu=!1}kn=0,Ne=le=H=null,Ul=!1,sr=nu=0,Gl=null}function rt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ne===null?H.memoizedState=Ne=e:Ne=Ne.next=e,Ne}function _e(){if(le===null){var e=H.alternate;e=e!==null?e.memoizedState:null}else e=le.next;var t=Ne===null?H.memoizedState:Ne.next;if(t!==null)Ne=t,le=e;else{if(e===null)throw H.alternate===null?Error(w(467)):Error(w(310));le=e,e={memoizedState:le.memoizedState,baseState:le.baseState,baseQueue:le.baseQueue,queue:le.queue,next:null},Ne===null?H.memoizedState=Ne=e:Ne=Ne.next=e}return Ne}function Tu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Rr(e){var t=sr;return sr+=1,Gl===null&&(Gl=[]),e=Ih(Gl,e,t),t=H,(Ne===null?t.memoizedState:Ne.next)===null&&(t=t.alternate,k.H=t===null||t.memoizedState===null?Oy:Vd),e}function Eu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Rr(e);if(e.$$typeof===Dn)return Ke(e)}throw Error(w(438,String(e)))}function Ud(e){var t=null,n=H.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=H.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(l){return l.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=Tu(),H.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=bb;return t.index++,n}function Ln(e,t){return typeof t=="function"?t(e):t}function ko(e){var t=_e();return Gd(t,le,e)}function Gd(e,t,n){var a=e.queue;if(a===null)throw Error(w(311));a.lastRenderedReducer=n;var l=e.baseQueue,i=a.pending;if(i!==null){if(l!==null){var r=l.next;l.next=i.next,i.next=r}t.baseQueue=l=i,a.pending=null}if(i=e.baseState,l===null)e.memoizedState=i;else{t=l.next;var o=r=null,u=null,c=t,s=!1;do{var f=c.lane&-536870913;if(f!==c.lane?(j&f)===f:(kn&f)===f){var d=c.revertLane;if(d===0)u!==null&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),f===jl&&(s=!0);else if((kn&d)===d){c=c.next,d===jl&&(s=!0);continue}else f={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=f,r=i):u=u.next=f,H.lanes|=d,ha|=d;f=c.action,Fa&&n(i,f),i=c.hasEagerState?c.eagerState:n(i,f)}else d={lane:f,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},u===null?(o=u=d,r=i):u=u.next=d,H.lanes|=f,ha|=f;c=c.next}while(c!==null&&c!==t);if(u===null?r=i:u.next=o,!Mt(i,e.memoizedState)&&(Le=!0,s&&(n=zl,n!==null)))throw n;e.memoizedState=i,e.baseState=r,e.baseQueue=u,a.lastRenderedState=i}return l===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function Jc(e){var t=_e(),n=t.queue;if(n===null)throw Error(w(311));n.lastRenderedReducer=e;var a=n.dispatch,l=n.pending,i=t.memoizedState;if(l!==null){n.pending=null;var r=l=l.next;do i=e(i,r.action),r=r.next;while(r!==l);Mt(i,t.memoizedState)||(Le=!0),t.memoizedState=i,t.baseQueue===null&&(t.baseState=i),n.lastRenderedState=i}return[i,a]}function iy(e,t,n){var a=H,l=_e(),i=V;if(i){if(n===void 0)throw Error(w(407));n=n()}else n=t();var r=!Mt((le||l).memoizedState,n);if(r&&(l.memoizedState=n,Le=!0),l=l.queue,qd(uy.bind(null,a,l,e),[e]),l.getSnapshot!==t||r||Ne!==null&&Ne.memoizedState.tag&1){if(a.flags|=2048,Vl(9,{destroy:void 0},oy.bind(null,a,l,n,t),null),oe===null)throw Error(w(349));i||(kn&127)!==0||ry(a,t,n)}return n}function ry(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=H.updateQueue,t===null?(t=Tu(),H.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function oy(e,t,n,a){t.value=n,t.getSnapshot=a,cy(t)&&sy(e)}function uy(e,t,n){return n(function(){cy(t)&&sy(e)})}function cy(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Mt(e,n)}catch{return!0}}function sy(e){var t=Qa(e,2);t!==null&&yt(t,e,2)}function Fs(e){var t=rt();if(typeof e=="function"){var n=e;if(e=n(),Fa){Jn(!0);try{n()}finally{Jn(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:e},t}function dy(e,t,n,a){return e.baseState=n,Gd(e,le,typeof a=="function"?a:Ln)}function LA(e,t,n,a,l){if(xu(e))throw Error(w(485));if(e=t.action,e!==null){var i={payload:l,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(r){i.listeners.push(r)}};k.T!==null?n(!0):i.isTransition=!1,a(i),n=t.pending,n===null?(i.next=t.pending=i,fy(t,i)):(i.next=n.next,t.pending=n.next=i)}}function fy(e,t){var n=t.action,a=t.payload,l=e.state;if(t.isTransition){var i=k.T,r={};k.T=r;try{var o=n(l,a),u=k.S;u!==null&&u(r,o),dm(e,t,o)}catch(c){js(e,t,c)}finally{i!==null&&r.types!==null&&(i.types=r.types),k.T=i}}else try{i=n(l,a),dm(e,t,i)}catch(c){js(e,t,c)}}function dm(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(a){fm(e,t,a)},function(a){return js(e,t,a)}):fm(e,t,n)}function fm(e,t,n){t.status="fulfilled",t.value=n,gy(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,fy(e,n)))}function js(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,gy(t),t=t.next;while(t!==a)}e.action=null}function gy(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function my(e,t){return t}function gm(e,t){if(V){var n=oe.formState;if(n!==null){e:{var a=H;if(V){if(me){t:{for(var l=me,i=Yt;l.nodeType!==8;){if(!i){l=null;break t}if(l=Xt(l.nextSibling),l===null){l=null;break t}}i=l.data,l=i==="F!"||i==="F"?l:null}if(l){me=Xt(l.nextSibling),a=l.data==="F!";break e}}ga(a)}a=!1}a&&(t=n[0])}}return n=rt(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:my,lastRenderedState:t},n.queue=a,n=_y.bind(null,H,a),a.dispatch=n,a=Fs(!1),i=Yd.bind(null,H,!1,a.queue),a=rt(),l={state:t,dispatch:null,action:e,pending:null},a.queue=l,n=LA.bind(null,H,l,i,n),l.dispatch=n,a.memoizedState=e,[t,n,!1]}function mm(e){var t=_e();return hy(t,le,e)}function hy(e,t,n){if(t=Gd(e,t,my)[0],e=ko(Ln)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=Rr(t)}catch(r){throw r===ei?Ru:r}else a=t;t=_e();var l=t.queue,i=l.dispatch;return n!==t.memoizedState&&(H.flags|=2048,Vl(9,{destroy:void 0},zA.bind(null,l,n),null)),[a,i,e]}function zA(e,t){e.action=t}function hm(e){var t=_e(),n=le;if(n!==null)return hy(t,n,e);_e(),t=t.memoizedState,n=_e();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function Vl(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=H.updateQueue,t===null&&(t=Tu(),H.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function yy(){return _e().memoizedState}function Lo(e,t,n,a){var l=rt();H.flags|=e,l.memoizedState=Vl(1|t,{destroy:void 0},n,a===void 0?null:a)}function Du(e,t,n,a){var l=_e();a=a===void 0?null:a;var i=l.memoizedState.inst;le!==null&&a!==null&&Od(a,le.memoizedState.deps)?l.memoizedState=Vl(t,i,n,a):(H.flags|=e,l.memoizedState=Vl(1|t,i,n,a))}function ym(e,t){Lo(8390656,8,e,t)}function qd(e,t){Du(2048,8,e,t)}function HA(e){H.flags|=4;var t=H.updateQueue;if(t===null)t=Tu(),H.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function py(e){var t=_e().memoizedState;return HA({ref:t,nextImpl:e}),function(){if((K&2)!==0)throw Error(w(440));return t.impl.apply(void 0,arguments)}}function vy(e,t){return Du(4,2,e,t)}function by(e,t){return Du(4,4,e,t)}function Ay(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function wy(e,t,n){n=n!=null?n.concat([e]):null,Du(4,4,Ay.bind(null,t,e),n)}function Pd(){}function Sy(e,t){var n=_e();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&Od(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function Cy(e,t){var n=_e();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&Od(t,a[1]))return a[0];if(a=e(),Fa){Jn(!0);try{e()}finally{Jn(!1)}}return n.memoizedState=[a,t],a}function Fd(e,t,n){return n===void 0||(kn&1073741824)!==0&&(j&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=dp(),H.lanes|=e,ha|=e,n)}function Ry(e,t,n,a){return Mt(n,t)?n:Yl.current!==null?(e=Fd(e,n,a),Mt(e,t)||(Le=!0),e):(kn&42)===0||(kn&1073741824)!==0&&(j&261930)===0?(Le=!0,e.memoizedState=n):(e=dp(),H.lanes|=e,ha|=e,t)}function Ty(e,t,n,a,l){var i=Z.p;Z.p=i!==0&&8>i?i:8;var r=k.T,o={};k.T=o,Yd(e,!1,t,n);try{var u=l(),c=k.S;if(c!==null&&c(o,u),u!==null&&typeof u=="object"&&typeof u.then=="function"){var s=NA(u,a);Ii(e,t,s,xt(e))}else Ii(e,t,a,xt(e))}catch(f){Ii(e,t,{then:function(){},status:"rejected",reason:f},xt())}finally{Z.p=i,r!==null&&o.types!==null&&(r.types=o.types),k.T=r}}function UA(){}function Ys(e,t,n,a){if(e.tag!==5)throw Error(w(476));var l=Ey(e).queue;Ty(e,l,t,ka,n===null?UA:function(){return Dy(e),n(a)})}function Ey(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ka,baseState:ka,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:ka},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Dy(e){var t=Ey(e);t.next===null&&(t=e.alternate.memoizedState),Ii(e,t.next.queue,{},xt())}function jd(){return Ke(mr)}function xy(){return _e().memoizedState}function My(){return _e().memoizedState}function GA(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=xt();e=ia(n);var a=ra(t,e,n);a!==null&&(yt(a,t,n),Ki(a,t,n)),t={cache:xd()},e.payload=t;return}t=t.return}}function qA(e,t,n){var a=xt();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},xu(e)?By(t,n):(n=Rd(e,t,n,a),n!==null&&(yt(n,e,a),Ny(n,t,a)))}function _y(e,t,n){var a=xt();Ii(e,t,n,a)}function Ii(e,t,n,a){var l={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(xu(e))By(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var r=t.lastRenderedState,o=i(r,n);if(l.hasEagerState=!0,l.eagerState=o,Mt(o,r))return Cu(e,t,l,0),oe===null&&Su(),!1}catch{}finally{}if(n=Rd(e,t,l,a),n!==null)return yt(n,e,a),Ny(n,t,a),!0}return!1}function Yd(e,t,n,a){if(a={lane:2,revertLane:$d(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},xu(e)){if(t)throw Error(w(479))}else t=Rd(e,n,a,2),t!==null&&yt(t,e,2)}function xu(e){var t=e.alternate;return e===H||t!==null&&t===H}function By(e,t){Ul=tu=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ny(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,ph(e,n)}}var dr={readContext:Ke,use:Eu,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useLayoutEffect:Ce,useInsertionEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useSyncExternalStore:Ce,useId:Ce,useHostTransitionStatus:Ce,useFormState:Ce,useActionState:Ce,useOptimistic:Ce,useMemoCache:Ce,useCacheRefresh:Ce};dr.useEffectEvent=Ce;var Oy={readContext:Ke,use:Eu,useCallback:function(e,t){return rt().memoizedState=[e,t===void 0?null:t],e},useContext:Ke,useEffect:ym,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,Lo(4194308,4,Ay.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Lo(4194308,4,e,t)},useInsertionEffect:function(e,t){Lo(4,2,e,t)},useMemo:function(e,t){var n=rt();t=t===void 0?null:t;var a=e();if(Fa){Jn(!0);try{e()}finally{Jn(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=rt();if(n!==void 0){var l=n(t);if(Fa){Jn(!0);try{n(t)}finally{Jn(!1)}}}else l=t;return a.memoizedState=a.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},a.queue=e,e=e.dispatch=qA.bind(null,H,e),[a.memoizedState,e]},useRef:function(e){var t=rt();return e={current:e},t.memoizedState=e},useState:function(e){e=Fs(e);var t=e.queue,n=_y.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Pd,useDeferredValue:function(e,t){var n=rt();return Fd(n,e,t)},useTransition:function(){var e=Fs(!1);return e=Ty.bind(null,H,e.queue,!0,!1),rt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=H,l=rt();if(V){if(n===void 0)throw Error(w(407));n=n()}else{if(n=t(),oe===null)throw Error(w(349));(j&127)!==0||ry(a,t,n)}l.memoizedState=n;var i={value:n,getSnapshot:t};return l.queue=i,ym(uy.bind(null,a,i,e),[e]),a.flags|=2048,Vl(9,{destroy:void 0},oy.bind(null,a,i,n,t),null),n},useId:function(){var e=rt(),t=oe.identifierPrefix;if(V){var n=cn,a=un;n=(a&~(1<<32-Dt(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=nu++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=OA++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:jd,useFormState:gm,useActionState:gm,useOptimistic:function(e){var t=rt();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Yd.bind(null,H,!0,n),n.dispatch=t,[e,t]},useMemoCache:Ud,useCacheRefresh:function(){return rt().memoizedState=GA.bind(null,H)},useEffectEvent:function(e){var t=rt(),n={impl:e};return t.memoizedState=n,function(){if((K&2)!==0)throw Error(w(440));return n.impl.apply(void 0,arguments)}}},Vd={readContext:Ke,use:Eu,useCallback:Sy,useContext:Ke,useEffect:qd,useImperativeHandle:wy,useInsertionEffect:vy,useLayoutEffect:by,useMemo:Cy,useReducer:ko,useRef:yy,useState:function(){return ko(Ln)},useDebugValue:Pd,useDeferredValue:function(e,t){var n=_e();return Ry(n,le.memoizedState,e,t)},useTransition:function(){var e=ko(Ln)[0],t=_e().memoizedState;return[typeof e=="boolean"?e:Rr(e),t]},useSyncExternalStore:iy,useId:xy,useHostTransitionStatus:jd,useFormState:mm,useActionState:mm,useOptimistic:function(e,t){var n=_e();return dy(n,le,e,t)},useMemoCache:Ud,useCacheRefresh:My};Vd.useEffectEvent=py;var ky={readContext:Ke,use:Eu,useCallback:Sy,useContext:Ke,useEffect:qd,useImperativeHandle:wy,useInsertionEffect:vy,useLayoutEffect:by,useMemo:Cy,useReducer:Jc,useRef:yy,useState:function(){return Jc(Ln)},useDebugValue:Pd,useDeferredValue:function(e,t){var n=_e();return le===null?Fd(n,e,t):Ry(n,le.memoizedState,e,t)},useTransition:function(){var e=Jc(Ln)[0],t=_e().memoizedState;return[typeof e=="boolean"?e:Rr(e),t]},useSyncExternalStore:iy,useId:xy,useHostTransitionStatus:jd,useFormState:hm,useActionState:hm,useOptimistic:function(e,t){var n=_e();return le!==null?dy(n,le,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:Ud,useCacheRefresh:My};ky.useEffectEvent=py;function $c(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:he({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Vs={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=xt(),l=ia(a);l.payload=t,n!=null&&(l.callback=n),t=ra(e,l,a),t!==null&&(yt(t,e,a),Ki(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=xt(),l=ia(a);l.tag=1,l.payload=t,n!=null&&(l.callback=n),t=ra(e,l,a),t!==null&&(yt(t,e,a),Ki(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=xt(),a=ia(n);a.tag=2,t!=null&&(a.callback=t),t=ra(e,a,n),t!==null&&(yt(t,e,n),Ki(t,e,n))}};function pm(e,t,n,a,l,i,r){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,i,r):t.prototype&&t.prototype.isPureReactComponent?!rr(n,a)||!rr(l,i):!0}function vm(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Vs.enqueueReplaceState(t,t.state,null)}function ja(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=he({},n));for(var l in e)n[l]===void 0&&(n[l]=e[l])}return n}function Ly(e){Ko(e)}function zy(e){console.error(e)}function Hy(e){Ko(e)}function au(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function bm(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(l){setTimeout(function(){throw l})}}function Xs(e,t,n){return n=ia(n),n.tag=3,n.payload={element:null},n.callback=function(){au(e,t)},n}function Uy(e){return e=ia(e),e.tag=3,e}function Gy(e,t,n,a){var l=n.type.getDerivedStateFromError;if(typeof l=="function"){var i=a.value;e.payload=function(){return l(i)},e.callback=function(){bm(t,n,a)}}var r=n.stateNode;r!==null&&typeof r.componentDidCatch=="function"&&(e.callback=function(){bm(t,n,a),typeof l!="function"&&(oa===null?oa=new Set([this]):oa.add(this));var o=a.stack;this.componentDidCatch(a.value,{componentStack:o!==null?o:""})})}function PA(e,t,n,a,l){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&$l(t,n,l,!0),n=_t.current,n!==null){switch(n.tag){case 31:case 13:return Vt===null?uu():n.alternate===null&&Re===0&&(Re=3),n.flags&=-257,n.flags|=65536,n.lanes=l,a===Jo?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),ss(e,a,l)),!1;case 22:return n.flags|=65536,a===Jo?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),ss(e,a,l)),!1}throw Error(w(435,n.tag))}return ss(e,a,l),uu(),!1}if(V)return t=_t.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=l,a!==Os&&(e=Error(w(422),{cause:a}),ur(jt(e,n)))):(a!==Os&&(t=Error(w(423),{cause:a}),ur(jt(t,n))),e=e.current.alternate,e.flags|=65536,l&=-l,e.lanes|=l,a=jt(a,n),l=Xs(e.stateNode,a,l),Ic(e,l),Re!==4&&(Re=2)),!1;var i=Error(w(520),{cause:a});if(i=jt(i,n),er===null?er=[i]:er.push(i),Re!==4&&(Re=2),t===null)return!0;a=jt(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=l&-l,n.lanes|=e,e=Xs(n.stateNode,a,e),Ic(n,e),!1;case 1:if(t=n.type,i=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||i!==null&&typeof i.componentDidCatch=="function"&&(oa===null||!oa.has(i))))return n.flags|=65536,l&=-l,n.lanes|=l,l=Uy(l),Gy(l,e,n,a),Ic(n,l),!1}n=n.return}while(n!==null);return!1}var Xd=Error(w(461)),Le=!1;function Ve(e,t,n,a){t.child=e===null?$h(t,null,n,a):Pa(t,e.child,n,a)}function Am(e,t,n,a,l){n=n.render;var i=t.ref;if("ref"in a){var r={};for(var o in a)o!=="ref"&&(r[o]=a[o])}else r=a;return qa(t),a=kd(e,t,n,r,i,l),o=Ld(),e!==null&&!Le?(zd(e,t,l),zn(e,t,l)):(V&&o&&Ed(t),t.flags|=1,Ve(e,t,a,l),t.child)}function wm(e,t,n,a,l){if(e===null){var i=n.type;return typeof i=="function"&&!Td(i)&&i.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=i,qy(e,t,i,a,l)):(e=No(n.type,null,a,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!Qd(e,l)){var r=i.memoizedProps;if(n=n.compare,n=n!==null?n:rr,n(r,a)&&e.ref===t.ref)return zn(e,t,l)}return t.flags|=1,e=_n(i,a),e.ref=t.ref,e.return=t,t.child=e}function qy(e,t,n,a,l){if(e!==null){var i=e.memoizedProps;if(rr(i,a)&&e.ref===t.ref)if(Le=!1,t.pendingProps=a=i,Qd(e,l))(e.flags&131072)!==0&&(Le=!0);else return t.lanes=e.lanes,zn(e,t,l)}return Qs(e,t,n,a,l)}function Py(e,t,n,a){var l=a.children,i=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(i=i!==null?i.baseLanes|n:n,e!==null){for(a=t.child=e.child,l=0;a!==null;)l=l|a.lanes|a.childLanes,a=a.sibling;a=l&~i}else a=0,t.child=null;return Sm(e,t,i,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Oo(t,i!==null?i.cachePool:null),i!==null?sm(t,i):qs(),ny(t);else return a=t.lanes=536870912,Sm(e,t,i!==null?i.baseLanes|n:n,n,a)}else i!==null?(Oo(t,i.cachePool),sm(t,i),Wn(t),t.memoizedState=null):(e!==null&&Oo(t,null),qs(),Wn(t));return Ve(e,t,l,n),t.child}function Fi(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Sm(e,t,n,a,l){var i=Md();return i=i===null?null:{parent:ke._currentValue,pool:i},t.memoizedState={baseLanes:n,cachePool:i},e!==null&&Oo(t,null),qs(),ny(t),e!==null&&$l(e,t,a,!0),t.childLanes=l,null}function zo(e,t){return t=lu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Cm(e,t,n){return Pa(t,e.child,null,n),e=zo(t,t.pendingProps),e.flags|=2,St(t),t.memoizedState=null,e}function FA(e,t,n){var a=t.pendingProps,l=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(V){if(a.mode==="hidden")return e=zo(t,a),t.lanes=536870912,Fi(null,e);if(Ps(t),(e=me)?(e=Op(e,Yt),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:fa!==null?{id:un,overflow:cn}:null,retryLane:536870912,hydrationErrors:null},n=Xh(e),n.return=t,t.child=n,Qe=t,me=null)):e=null,e===null)throw ga(t);return t.lanes=536870912,null}return zo(t,a)}var i=e.memoizedState;if(i!==null){var r=i.dehydrated;if(Ps(t),l)if(t.flags&256)t.flags&=-257,t=Cm(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(w(558));else if(Le||$l(e,t,n,!1),l=(n&e.childLanes)!==0,Le||l){if(a=oe,a!==null&&(r=vh(a,n),r!==0&&r!==i.retryLane))throw i.retryLane=r,Qa(e,r),yt(a,e,r),Xd;uu(),t=Cm(e,t,n)}else e=i.treeContext,me=Xt(r.nextSibling),Qe=t,V=!0,la=null,Yt=!1,e!==null&&Kh(t,e),t=zo(t,a),t.flags|=4096;return t}return e=_n(e.child,{mode:a.mode,children:a.children}),e.ref=t.ref,t.child=e,e.return=t,e}function Ho(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(w(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Qs(e,t,n,a,l){return qa(t),n=kd(e,t,n,a,void 0,l),a=Ld(),e!==null&&!Le?(zd(e,t,l),zn(e,t,l)):(V&&a&&Ed(t),t.flags|=1,Ve(e,t,n,l),t.child)}function Rm(e,t,n,a,l,i){return qa(t),t.updateQueue=null,n=ly(t,a,n,l),ay(e),a=Ld(),e!==null&&!Le?(zd(e,t,i),zn(e,t,i)):(V&&a&&Ed(t),t.flags|=1,Ve(e,t,n,i),t.child)}function Tm(e,t,n,a,l){if(qa(t),t.stateNode===null){var i=Ml,r=n.contextType;typeof r=="object"&&r!==null&&(i=Ke(r)),i=new n(a,i),t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,i.updater=Vs,t.stateNode=i,i._reactInternals=t,i=t.stateNode,i.props=a,i.state=t.memoizedState,i.refs={},Bd(t),r=n.contextType,i.context=typeof r=="object"&&r!==null?Ke(r):Ml,i.state=t.memoizedState,r=n.getDerivedStateFromProps,typeof r=="function"&&($c(t,n,r,a),i.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(r=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),r!==i.state&&Vs.enqueueReplaceState(i,i.state,null),Wi(t,a,i,l),Zi(),i.state=t.memoizedState),typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){i=t.stateNode;var o=t.memoizedProps,u=ja(n,o);i.props=u;var c=i.context,s=n.contextType;r=Ml,typeof s=="object"&&s!==null&&(r=Ke(s));var f=n.getDerivedStateFromProps;s=typeof f=="function"||typeof i.getSnapshotBeforeUpdate=="function",o=t.pendingProps!==o,s||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(o||c!==r)&&vm(t,i,a,r),Qn=!1;var d=t.memoizedState;i.state=d,Wi(t,a,i,l),Zi(),c=t.memoizedState,o||d!==c||Qn?(typeof f=="function"&&($c(t,n,f,a),c=t.memoizedState),(u=Qn||pm(t,n,u,a,d,c,r))?(s||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=c),i.props=a,i.state=c,i.context=r,a=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{i=t.stateNode,Us(e,t),r=t.memoizedProps,s=ja(n,r),i.props=s,f=t.pendingProps,d=i.context,c=n.contextType,u=Ml,typeof c=="object"&&c!==null&&(u=Ke(c)),o=n.getDerivedStateFromProps,(c=typeof o=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(r!==f||d!==u)&&vm(t,i,a,u),Qn=!1,d=t.memoizedState,i.state=d,Wi(t,a,i,l),Zi();var m=t.memoizedState;r!==f||d!==m||Qn||e!==null&&e.dependencies!==null&&Io(e.dependencies)?(typeof o=="function"&&($c(t,n,o,a),m=t.memoizedState),(s=Qn||pm(t,n,s,a,d,m,u)||e!==null&&e.dependencies!==null&&Io(e.dependencies))?(c||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(a,m,u),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(a,m,u)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=m),i.props=a,i.state=m,i.context=u,a=s):(typeof i.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),a=!1)}return i=a,Ho(e,t),a=(t.flags&128)!==0,i||a?(i=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:i.render(),t.flags|=1,e!==null&&a?(t.child=Pa(t,e.child,null,l),t.child=Pa(t,null,n,l)):Ve(e,t,n,l),t.memoizedState=i.state,e=t.child):e=zn(e,t,l),e}function Em(e,t,n,a){return Ga(),t.flags|=256,Ve(e,t,n,a),t.child}var es={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ts(e){return{baseLanes:e,cachePool:Wh()}}function ns(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Rt),e}function Fy(e,t,n){var a=t.pendingProps,l=!1,i=(t.flags&128)!==0,r;if((r=i)||(r=e!==null&&e.memoizedState===null?!1:(Me.current&2)!==0),r&&(l=!0,t.flags&=-129),r=(t.flags&32)!==0,t.flags&=-33,e===null){if(V){if(l?Zn(t):Wn(t),(e=me)?(e=Op(e,Yt),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:fa!==null?{id:un,overflow:cn}:null,retryLane:536870912,hydrationErrors:null},n=Xh(e),n.return=t,t.child=n,Qe=t,me=null)):e=null,e===null)throw ga(t);return od(e)?t.lanes=32:t.lanes=536870912,null}var o=a.children;return a=a.fallback,l?(Wn(t),l=t.mode,o=lu({mode:"hidden",children:o},l),a=La(a,l,n,null),o.return=t,a.return=t,o.sibling=a,t.child=o,a=t.child,a.memoizedState=ts(n),a.childLanes=ns(e,r,n),t.memoizedState=es,Fi(null,a)):(Zn(t),Ks(t,o))}var u=e.memoizedState;if(u!==null&&(o=u.dehydrated,o!==null)){if(i)t.flags&256?(Zn(t),t.flags&=-257,t=as(e,t,n)):t.memoizedState!==null?(Wn(t),t.child=e.child,t.flags|=128,t=null):(Wn(t),o=a.fallback,l=t.mode,a=lu({mode:"visible",children:a.children},l),o=La(o,l,n,null),o.flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,Pa(t,e.child,null,n),a=t.child,a.memoizedState=ts(n),a.childLanes=ns(e,r,n),t.memoizedState=es,t=Fi(null,a));else if(Zn(t),od(o)){if(r=o.nextSibling&&o.nextSibling.dataset,r)var c=r.dgst;r=c,a=Error(w(419)),a.stack="",a.digest=r,ur({value:a,source:null,stack:null}),t=as(e,t,n)}else if(Le||$l(e,t,n,!1),r=(n&e.childLanes)!==0,Le||r){if(r=oe,r!==null&&(a=vh(r,n),a!==0&&a!==u.retryLane))throw u.retryLane=a,Qa(e,a),yt(r,e,a),Xd;rd(o)||uu(),t=as(e,t,n)}else rd(o)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,me=Xt(o.nextSibling),Qe=t,V=!0,la=null,Yt=!1,e!==null&&Kh(t,e),t=Ks(t,a.children),t.flags|=4096);return t}return l?(Wn(t),o=a.fallback,l=t.mode,u=e.child,c=u.sibling,a=_n(u,{mode:"hidden",children:a.children}),a.subtreeFlags=u.subtreeFlags&65011712,c!==null?o=_n(c,o):(o=La(o,l,n,null),o.flags|=2),o.return=t,a.return=t,a.sibling=o,t.child=a,Fi(null,a),a=t.child,o=e.child.memoizedState,o===null?o=ts(n):(l=o.cachePool,l!==null?(u=ke._currentValue,l=l.parent!==u?{parent:u,pool:u}:l):l=Wh(),o={baseLanes:o.baseLanes|n,cachePool:l}),a.memoizedState=o,a.childLanes=ns(e,r,n),t.memoizedState=es,Fi(e.child,a)):(Zn(t),n=e.child,e=n.sibling,n=_n(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Ks(e,t){return t=lu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function lu(e,t){return e=Ct(22,e,null,t),e.lanes=0,e}function as(e,t,n){return Pa(t,e.child,null,n),e=Ks(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Dm(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Ls(e.return,t,n)}function ls(e,t,n,a,l,i){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:l,treeForkCount:i}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=a,r.tail=n,r.tailMode=l,r.treeForkCount=i)}function jy(e,t,n){var a=t.pendingProps,l=a.revealOrder,i=a.tail;a=a.children;var r=Me.current,o=(r&2)!==0;if(o?(r=r&1|2,t.flags|=128):r&=1,se(Me,r),Ve(e,t,a,n),a=V?or:0,!o&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Dm(e,n,t);else if(e.tag===19)Dm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&eu(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),ls(t,!1,l,n,i,a);break;case"backwards":case"unstable_legacy-backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&eu(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}ls(t,!0,n,null,i,a);break;case"together":ls(t,!1,null,null,void 0,a);break;default:t.memoizedState=null}return t.child}function zn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),ha|=t.lanes,(n&t.childLanes)===0)if(e!==null){if($l(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(w(153));if(t.child!==null){for(e=t.child,n=_n(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=_n(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Qd(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&Io(e)))}function jA(e,t,n){switch(t.tag){case 3:Yo(t,t.stateNode.containerInfo),Kn(t,ke,e.memoizedState.cache),Ga();break;case 27:case 5:Ss(t);break;case 4:Yo(t,t.stateNode.containerInfo);break;case 10:Kn(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Ps(t),null;break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Zn(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Fy(e,t,n):(Zn(t),e=zn(e,t,n),e!==null?e.sibling:null);Zn(t);break;case 19:var l=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||($l(e,t,n,!1),a=(n&t.childLanes)!==0),l){if(a)return jy(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),se(Me,Me.current),a)break;return null;case 22:return t.lanes=0,Py(e,t,n,t.pendingProps);case 24:Kn(t,ke,e.memoizedState.cache)}return zn(e,t,n)}function Yy(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)Le=!0;else{if(!Qd(e,n)&&(t.flags&128)===0)return Le=!1,jA(e,t,n);Le=(e.flags&131072)!==0}else Le=!1,V&&(t.flags&1048576)!==0&&Qh(t,or,t.index);switch(t.lanes=0,t.tag){case 16:e:{var a=t.pendingProps;if(e=Na(t.elementType),t.type=e,typeof e=="function")Td(e)?(a=ja(e,a),t.tag=1,t=Tm(null,t,e,a,n)):(t.tag=0,t=Qs(null,t,e,a,n));else{if(e!=null){var l=e.$$typeof;if(l===dd){t.tag=11,t=Am(null,t,e,a,n);break e}else if(l===fd){t.tag=14,t=wm(null,t,e,a,n);break e}}throw t=As(e)||e,Error(w(306,t,""))}}return t;case 0:return Qs(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,l=ja(a,t.pendingProps),Tm(e,t,a,l,n);case 3:e:{if(Yo(t,t.stateNode.containerInfo),e===null)throw Error(w(387));a=t.pendingProps;var i=t.memoizedState;l=i.element,Us(e,t),Wi(t,a,null,n);var r=t.memoizedState;if(a=r.cache,Kn(t,ke,a),a!==i.cache&&zs(t,[ke],n,!0),Zi(),a=r.element,i.isDehydrated)if(i={element:a,isDehydrated:!1,cache:r.cache},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){t=Em(e,t,a,n);break e}else if(a!==l){l=jt(Error(w(424)),t),ur(l),t=Em(e,t,a,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(me=Xt(e.firstChild),Qe=t,V=!0,la=null,Yt=!0,n=$h(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Ga(),a===l){t=zn(e,t,n);break e}Ve(e,t,a,n)}t=t.child}return t;case 26:return Ho(e,t),e===null?(n=Zm(t.type,null,t.pendingProps,null))?t.memoizedState=n:V||(n=t.type,e=t.pendingProps,a=fu(aa.current).createElement(n),a[Xe]=t,a[pt]=e,Ze(a,n,e),Fe(a),t.stateNode=a):t.memoizedState=Zm(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Ss(t),e===null&&V&&(a=t.stateNode=kp(t.type,t.pendingProps,aa.current),Qe=t,Yt=!0,l=me,pa(t.type)?(ud=l,me=Xt(a.firstChild)):me=l),Ve(e,t,t.pendingProps.children,n),Ho(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&V&&((l=a=me)&&(a=pw(a,t.type,t.pendingProps,Yt),a!==null?(t.stateNode=a,Qe=t,me=Xt(a.firstChild),Yt=!1,l=!0):l=!1),l||ga(t)),Ss(t),l=t.type,i=t.pendingProps,r=e!==null?e.memoizedProps:null,a=i.children,ld(l,i)?a=null:r!==null&&ld(l,r)&&(t.flags|=32),t.memoizedState!==null&&(l=kd(e,t,kA,null,null,n),mr._currentValue=l),Ho(e,t),Ve(e,t,a,n),t.child;case 6:return e===null&&V&&((e=n=me)&&(n=vw(n,t.pendingProps,Yt),n!==null?(t.stateNode=n,Qe=t,me=null,e=!0):e=!1),e||ga(t)),null;case 13:return Fy(e,t,n);case 4:return Yo(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Pa(t,null,a,n):Ve(e,t,a,n),t.child;case 11:return Am(e,t,t.type,t.pendingProps,n);case 7:return Ve(e,t,t.pendingProps,n),t.child;case 8:return Ve(e,t,t.pendingProps.children,n),t.child;case 12:return Ve(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,Kn(t,t.type,a.value),Ve(e,t,a.children,n),t.child;case 9:return l=t.type._context,a=t.pendingProps.children,qa(t),l=Ke(l),a=a(l),t.flags|=1,Ve(e,t,a,n),t.child;case 14:return wm(e,t,t.type,t.pendingProps,n);case 15:return qy(e,t,t.type,t.pendingProps,n);case 19:return jy(e,t,n);case 31:return FA(e,t,n);case 22:return Py(e,t,n,t.pendingProps);case 24:return qa(t),a=Ke(ke),e===null?(l=Md(),l===null&&(l=oe,i=xd(),l.pooledCache=i,i.refCount++,i!==null&&(l.pooledCacheLanes|=n),l=i),t.memoizedState={parent:a,cache:l},Bd(t),Kn(t,ke,l)):((e.lanes&n)!==0&&(Us(e,t),Wi(t,null,null,n),Zi()),l=e.memoizedState,i=t.memoizedState,l.parent!==a?(l={parent:a,cache:a},t.memoizedState=l,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=l),Kn(t,ke,a)):(a=i.cache,Kn(t,ke,a),a!==l.cache&&zs(t,[ke],n,!0))),Ve(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(w(156,t.tag))}function wn(e){e.flags|=4}function is(e,t,n,a,l){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(l&335544128)===l)if(e.stateNode.complete)e.flags|=8192;else if(mp())e.flags|=8192;else throw Ha=Jo,_d}else e.flags&=-16777217}function xm(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Hp(t))if(mp())e.flags|=8192;else throw Ha=Jo,_d}function wo(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?hh():536870912,e.lanes|=t,Xl|=t)}function Li(e,t){if(!V)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function ge(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags&65011712,a|=l.flags&65011712,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags,a|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function YA(e,t,n){var a=t.pendingProps;switch(Dd(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ge(t),null;case 1:return ge(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Bn(ke),ql(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(pl(t)?wn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Wc())),ge(t),null;case 26:var l=t.type,i=t.memoizedState;return e===null?(wn(t),i!==null?(ge(t),xm(t,i)):(ge(t),is(t,l,null,a,n))):i?i!==e.memoizedState?(wn(t),ge(t),xm(t,i)):(ge(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&wn(t),ge(t),is(t,l,e,a,n)),null;case 27:if(Vo(t),n=aa.current,l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&wn(t);else{if(!a){if(t.stateNode===null)throw Error(w(166));return ge(t),null}e=dn.current,pl(t)?am(t,e):(e=kp(l,a,n),t.stateNode=e,wn(t))}return ge(t),null;case 5:if(Vo(t),l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&wn(t);else{if(!a){if(t.stateNode===null)throw Error(w(166));return ge(t),null}if(i=dn.current,pl(t))am(t,i);else{var r=fu(aa.current);switch(i){case 1:i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":i=r.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":i=r.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":i=r.createElement("div"),i.innerHTML="<script><\/scr"+"ipt>",i=i.removeChild(i.firstChild);break;case"select":i=typeof a.is=="string"?r.createElement("select",{is:a.is}):r.createElement("select"),a.multiple?i.multiple=!0:a.size&&(i.size=a.size);break;default:i=typeof a.is=="string"?r.createElement(l,{is:a.is}):r.createElement(l)}}i[Xe]=t,i[pt]=a;e:for(r=t.child;r!==null;){if(r.tag===5||r.tag===6)i.appendChild(r.stateNode);else if(r.tag!==4&&r.tag!==27&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;r.sibling===null;){if(r.return===null||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=i;e:switch(Ze(i,l,a),l){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&wn(t)}}return ge(t),is(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&wn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(w(166));if(e=aa.current,pl(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,l=Qe,l!==null)switch(l.tag){case 27:case 5:a=l.memoizedProps}e[Xe]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||_p(e.nodeValue,n)),e||ga(t,!0)}else e=fu(e).createTextNode(a),e[Xe]=t,t.stateNode=e}return ge(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=pl(t),n!==null){if(e===null){if(!a)throw Error(w(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(557));e[Xe]=t}else Ga(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ge(t),e=!1}else n=Wc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(St(t),t):(St(t),null);if((t.flags&128)!==0)throw Error(w(558))}return ge(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(l=pl(t),a!==null&&a.dehydrated!==null){if(e===null){if(!l)throw Error(w(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(w(317));l[Xe]=t}else Ga(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ge(t),l=!1}else l=Wc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return t.flags&256?(St(t),t):(St(t),null)}return St(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,l=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(l=a.alternate.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==l&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),wo(t,t.updateQueue),ge(t),null);case 4:return ql(),e===null&&ef(t.stateNode.containerInfo),ge(t),null;case 10:return Bn(t.type),ge(t),null;case 19:if(je(Me),a=t.memoizedState,a===null)return ge(t),null;if(l=(t.flags&128)!==0,i=a.rendering,i===null)if(l)Li(a,!1);else{if(Re!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(i=eu(e),i!==null){for(t.flags|=128,Li(a,!1),e=i.updateQueue,t.updateQueue=e,wo(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Vh(n,e),n=n.sibling;return se(Me,Me.current&1|2),V&&Tn(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Tt()>ru&&(t.flags|=128,l=!0,Li(a,!1),t.lanes=4194304)}else{if(!l)if(e=eu(i),e!==null){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,wo(t,e),Li(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!V)return ge(t),null}else 2*Tt()-a.renderingStartTime>ru&&n!==536870912&&(t.flags|=128,l=!0,Li(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(e=a.last,e!==null?e.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Tt(),e.sibling=null,n=Me.current,se(Me,l?n&1|2:n&1),V&&Tn(t,a.treeForkCount),e):(ge(t),null);case 22:case 23:return St(t),Nd(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(ge(t),t.subtreeFlags&6&&(t.flags|=8192)):ge(t),n=t.updateQueue,n!==null&&wo(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&je(za),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Bn(ke),ge(t),null;case 25:return null;case 30:return null}throw Error(w(156,t.tag))}function VA(e,t){switch(Dd(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Bn(ke),ql(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Vo(t),null;case 31:if(t.memoizedState!==null){if(St(t),t.alternate===null)throw Error(w(340));Ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(St(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(w(340));Ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return je(Me),null;case 4:return ql(),null;case 10:return Bn(t.type),null;case 22:case 23:return St(t),Nd(),e!==null&&je(za),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Bn(ke),null;case 25:return null;default:return null}}function Vy(e,t){switch(Dd(t),t.tag){case 3:Bn(ke),ql();break;case 26:case 27:case 5:Vo(t);break;case 4:ql();break;case 31:t.memoizedState!==null&&St(t);break;case 13:St(t);break;case 19:je(Me);break;case 10:Bn(t.type);break;case 22:case 23:St(t),Nd(),e!==null&&je(za);break;case 24:Bn(ke)}}function Tr(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var l=a.next;n=l;do{if((n.tag&e)===e){a=void 0;var i=n.create,r=n.inst;a=i(),r.destroy=a}n=n.next}while(n!==l)}}catch(o){te(t,t.return,o)}}function ma(e,t,n){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&e)===e){var r=a.inst,o=r.destroy;if(o!==void 0){r.destroy=void 0,l=t;var u=n,c=o;try{c()}catch(s){te(l,u,s)}}}a=a.next}while(a!==i)}}catch(s){te(t,t.return,s)}}function Xy(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{ty(t,n)}catch(a){te(e,e.return,a)}}}function Qy(e,t,n){n.props=ja(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){te(e,t,a)}}function Ji(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(l){te(e,t,l)}}function sn(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(l){te(e,t,l)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(l){te(e,t,l)}else n.current=null}function Ky(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(l){te(e,e.return,l)}}function rs(e,t,n){try{var a=e.stateNode;dw(a,e.type,n,t),a[pt]=t}catch(l){te(e,e.return,l)}}function Zy(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&pa(e.type)||e.tag===4}function os(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Zy(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&pa(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zs(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=xn));else if(a!==4&&(a===27&&pa(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Zs(e,t,n),e=e.sibling;e!==null;)Zs(e,t,n),e=e.sibling}function iu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&pa(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(iu(e,t,n),e=e.sibling;e!==null;)iu(e,t,n),e=e.sibling}function Wy(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);Ze(t,a,n),t[Xe]=e,t[pt]=n}catch(i){te(e,e.return,i)}}var En=!1,Oe=!1,us=!1,Mm=typeof WeakSet=="function"?WeakSet:Set,Pe=null;function XA(e,t){if(e=e.containerInfo,nd=yu,e=Hh(e),Sd(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var l=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var r=0,o=-1,u=-1,c=0,s=0,f=e,d=null;t:for(;;){for(var m;f!==n||l!==0&&f.nodeType!==3||(o=r+l),f!==i||a!==0&&f.nodeType!==3||(u=r+a),f.nodeType===3&&(r+=f.nodeValue.length),(m=f.firstChild)!==null;)d=f,f=m;for(;;){if(f===e)break t;if(d===n&&++c===l&&(o=r),d===i&&++s===a&&(u=r),(m=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=m}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ad={focusedElem:e,selectionRange:n},yu=!1,Pe=t;Pe!==null;)if(t=Pe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Pe=e;else for(;Pe!==null;){switch(t=Pe,i=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)l=e[n],l.ref.impl=l.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&i!==null){e=void 0,n=t,l=i.memoizedProps,i=i.memoizedState,a=n.stateNode;try{var v=ja(n.type,l);e=a.getSnapshotBeforeUpdate(v,i),a.__reactInternalSnapshotBeforeUpdate=e}catch(A){te(n,n.return,A)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)id(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":id(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(w(163))}if(e=t.sibling,e!==null){e.return=t.return,Pe=e;break}Pe=t.return}}function Iy(e,t,n){var a=n.flags;switch(n.tag){case 0:case 11:case 15:Cn(e,n),a&4&&Tr(5,n);break;case 1:if(Cn(e,n),a&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(r){te(n,n.return,r)}else{var l=ja(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(r){te(n,n.return,r)}}a&64&&Xy(n),a&512&&Ji(n,n.return);break;case 3:if(Cn(e,n),a&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{ty(e,t)}catch(r){te(n,n.return,r)}}break;case 27:t===null&&a&4&&Wy(n);case 26:case 5:Cn(e,n),t===null&&a&4&&Ky(n),a&512&&Ji(n,n.return);break;case 12:Cn(e,n);break;case 31:Cn(e,n),a&4&&ep(e,n);break;case 13:Cn(e,n),a&4&&tp(e,n),a&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=tw.bind(null,n),bw(e,n))));break;case 22:if(a=n.memoizedState!==null||En,!a){t=t!==null&&t.memoizedState!==null||Oe,l=En;var i=Oe;En=a,(Oe=t)&&!i?Rn(e,n,(n.subtreeFlags&8772)!==0):Cn(e,n),En=l,Oe=i}break;case 30:break;default:Cn(e,n)}}function Jy(e){var t=e.alternate;t!==null&&(e.alternate=null,Jy(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&yd(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Ae=null,mt=!1;function Sn(e,t,n){for(n=n.child;n!==null;)$y(e,t,n),n=n.sibling}function $y(e,t,n){if(Et&&typeof Et.onCommitFiberUnmount=="function")try{Et.onCommitFiberUnmount(vr,n)}catch{}switch(n.tag){case 26:Oe||sn(n,t),Sn(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Oe||sn(n,t);var a=Ae,l=mt;pa(n.type)&&(Ae=n.stateNode,mt=!1),Sn(e,t,n),nr(n.stateNode),Ae=a,mt=l;break;case 5:Oe||sn(n,t);case 6:if(a=Ae,l=mt,Ae=null,Sn(e,t,n),Ae=a,mt=l,Ae!==null)if(mt)try{(Ae.nodeType===9?Ae.body:Ae.nodeName==="HTML"?Ae.ownerDocument.body:Ae).removeChild(n.stateNode)}catch(i){te(n,t,i)}else try{Ae.removeChild(n.stateNode)}catch(i){te(n,t,i)}break;case 18:Ae!==null&&(mt?(e=Ae,Ym(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),Wl(e)):Ym(Ae,n.stateNode));break;case 4:a=Ae,l=mt,Ae=n.stateNode.containerInfo,mt=!0,Sn(e,t,n),Ae=a,mt=l;break;case 0:case 11:case 14:case 15:ma(2,n,t),Oe||ma(4,n,t),Sn(e,t,n);break;case 1:Oe||(sn(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"&&Qy(n,t,a)),Sn(e,t,n);break;case 21:Sn(e,t,n);break;case 22:Oe=(a=Oe)||n.memoizedState!==null,Sn(e,t,n),Oe=a;break;default:Sn(e,t,n)}}function ep(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Wl(e)}catch(n){te(t,t.return,n)}}}function tp(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Wl(e)}catch(n){te(t,t.return,n)}}function QA(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new Mm),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new Mm),t;default:throw Error(w(435,e.tag))}}function So(e,t){var n=QA(e);t.forEach(function(a){if(!n.has(a)){n.add(a);var l=nw.bind(null,e,a);a.then(l,l)}})}function ft(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var l=n[a],i=e,r=t,o=r;e:for(;o!==null;){switch(o.tag){case 27:if(pa(o.type)){Ae=o.stateNode,mt=!1;break e}break;case 5:Ae=o.stateNode,mt=!1;break e;case 3:case 4:Ae=o.stateNode.containerInfo,mt=!0;break e}o=o.return}if(Ae===null)throw Error(w(160));$y(i,r,l),Ae=null,mt=!1,i=l.alternate,i!==null&&(i.return=null),l.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)np(t,e),t=t.sibling}var $t=null;function np(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:ft(t,e),gt(e),a&4&&(ma(3,e,e.return),Tr(3,e),ma(5,e,e.return));break;case 1:ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),a&64&&En&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?a:n.concat(a))));break;case 26:var l=$t;if(ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),a&4){var i=n!==null?n.memoizedState:null;if(a=e.memoizedState,n===null)if(a===null)if(e.stateNode===null){e:{a=e.type,n=e.memoizedProps,l=l.ownerDocument||l;t:switch(a){case"title":i=l.getElementsByTagName("title")[0],(!i||i[wr]||i[Xe]||i.namespaceURI==="http://www.w3.org/2000/svg"||i.hasAttribute("itemprop"))&&(i=l.createElement(a),l.head.insertBefore(i,l.querySelector("head > title"))),Ze(i,a,n),i[Xe]=e,Fe(i),a=i;break e;case"link":var r=Im("link","href",l).get(a+(n.href||""));if(r){for(var o=0;o<r.length;o++)if(i=r[o],i.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&i.getAttribute("rel")===(n.rel==null?null:n.rel)&&i.getAttribute("title")===(n.title==null?null:n.title)&&i.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){r.splice(o,1);break t}}i=l.createElement(a),Ze(i,a,n),l.head.appendChild(i);break;case"meta":if(r=Im("meta","content",l).get(a+(n.content||""))){for(o=0;o<r.length;o++)if(i=r[o],i.getAttribute("content")===(n.content==null?null:""+n.content)&&i.getAttribute("name")===(n.name==null?null:n.name)&&i.getAttribute("property")===(n.property==null?null:n.property)&&i.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&i.getAttribute("charset")===(n.charSet==null?null:n.charSet)){r.splice(o,1);break t}}i=l.createElement(a),Ze(i,a,n),l.head.appendChild(i);break;default:throw Error(w(468,a))}i[Xe]=e,Fe(i),a=i}e.stateNode=a}else Jm(l,e.type,e.stateNode);else e.stateNode=Wm(l,a,e.memoizedProps);else i!==a?(i===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):i.count--,a===null?Jm(l,e.type,e.stateNode):Wm(l,a,e.memoizedProps)):a===null&&e.stateNode!==null&&rs(e,e.memoizedProps,n.memoizedProps)}break;case 27:ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),n!==null&&a&4&&rs(e,e.memoizedProps,n.memoizedProps);break;case 5:if(ft(t,e),gt(e),a&512&&(Oe||n===null||sn(n,n.return)),e.flags&32){l=e.stateNode;try{Fl(l,"")}catch(v){te(e,e.return,v)}}a&4&&e.stateNode!=null&&(l=e.memoizedProps,rs(e,l,n!==null?n.memoizedProps:l)),a&1024&&(us=!0);break;case 6:if(ft(t,e),gt(e),a&4){if(e.stateNode===null)throw Error(w(162));a=e.memoizedProps,n=e.stateNode;try{n.nodeValue=a}catch(v){te(e,e.return,v)}}break;case 3:if(qo=null,l=$t,$t=gu(t.containerInfo),ft(t,e),$t=l,gt(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{Wl(t.containerInfo)}catch(v){te(e,e.return,v)}us&&(us=!1,ap(e));break;case 4:a=$t,$t=gu(e.stateNode.containerInfo),ft(t,e),gt(e),$t=a;break;case 12:ft(t,e),gt(e);break;case 31:ft(t,e),gt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,So(e,a)));break;case 13:ft(t,e),gt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Mu=Tt()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,So(e,a)));break;case 22:l=e.memoizedState!==null;var u=n!==null&&n.memoizedState!==null,c=En,s=Oe;if(En=c||l,Oe=s||u,ft(t,e),Oe=s,En=c,gt(e),a&8192)e:for(t=e.stateNode,t._visibility=l?t._visibility&-2:t._visibility|1,l&&(n===null||u||En||Oe||Oa(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){u=n=t;try{if(i=u.stateNode,l)r=i.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{o=u.stateNode;var f=u.memoizedProps.style,d=f!=null&&f.hasOwnProperty("display")?f.display:null;o.style.display=d==null||typeof d=="boolean"?"":(""+d).trim()}}catch(v){te(u,u.return,v)}}}else if(t.tag===6){if(n===null){u=t;try{u.stateNode.nodeValue=l?"":u.memoizedProps}catch(v){te(u,u.return,v)}}}else if(t.tag===18){if(n===null){u=t;try{var m=u.stateNode;l?Vm(m,!0):Vm(u.stateNode,!1)}catch(v){te(u,u.return,v)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(n=a.retryQueue,n!==null&&(a.retryQueue=null,So(e,n))));break;case 19:ft(t,e),gt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,So(e,a)));break;case 30:break;case 21:break;default:ft(t,e),gt(e)}}function gt(e){var t=e.flags;if(t&2){try{for(var n,a=e.return;a!==null;){if(Zy(a)){n=a;break}a=a.return}if(n==null)throw Error(w(160));switch(n.tag){case 27:var l=n.stateNode,i=os(e);iu(e,i,l);break;case 5:var r=n.stateNode;n.flags&32&&(Fl(r,""),n.flags&=-33);var o=os(e);iu(e,o,r);break;case 3:case 4:var u=n.stateNode.containerInfo,c=os(e);Zs(e,c,u);break;default:throw Error(w(161))}}catch(s){te(e,e.return,s)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function ap(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;ap(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Cn(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Iy(e,t.alternate,t),t=t.sibling}function Oa(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ma(4,t,t.return),Oa(t);break;case 1:sn(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Qy(t,t.return,n),Oa(t);break;case 27:nr(t.stateNode);case 26:case 5:sn(t,t.return),Oa(t);break;case 22:t.memoizedState===null&&Oa(t);break;case 30:Oa(t);break;default:Oa(t)}e=e.sibling}}function Rn(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,l=e,i=t,r=i.flags;switch(i.tag){case 0:case 11:case 15:Rn(l,i,n),Tr(4,i);break;case 1:if(Rn(l,i,n),a=i,l=a.stateNode,typeof l.componentDidMount=="function")try{l.componentDidMount()}catch(c){te(a,a.return,c)}if(a=i,l=a.updateQueue,l!==null){var o=a.stateNode;try{var u=l.shared.hiddenCallbacks;if(u!==null)for(l.shared.hiddenCallbacks=null,l=0;l<u.length;l++)ey(u[l],o)}catch(c){te(a,a.return,c)}}n&&r&64&&Xy(i),Ji(i,i.return);break;case 27:Wy(i);case 26:case 5:Rn(l,i,n),n&&a===null&&r&4&&Ky(i),Ji(i,i.return);break;case 12:Rn(l,i,n);break;case 31:Rn(l,i,n),n&&r&4&&ep(l,i);break;case 13:Rn(l,i,n),n&&r&4&&tp(l,i);break;case 22:i.memoizedState===null&&Rn(l,i,n),Ji(i,i.return);break;case 30:break;default:Rn(l,i,n)}t=t.sibling}}function Kd(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&Cr(n))}function Zd(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Cr(e))}function Jt(e,t,n,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)lp(e,t,n,a),t=t.sibling}function lp(e,t,n,a){var l=t.flags;switch(t.tag){case 0:case 11:case 15:Jt(e,t,n,a),l&2048&&Tr(9,t);break;case 1:Jt(e,t,n,a);break;case 3:Jt(e,t,n,a),l&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Cr(e)));break;case 12:if(l&2048){Jt(e,t,n,a),e=t.stateNode;try{var i=t.memoizedProps,r=i.id,o=i.onPostCommit;typeof o=="function"&&o(r,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(u){te(t,t.return,u)}}else Jt(e,t,n,a);break;case 31:Jt(e,t,n,a);break;case 13:Jt(e,t,n,a);break;case 23:break;case 22:i=t.stateNode,r=t.alternate,t.memoizedState!==null?i._visibility&2?Jt(e,t,n,a):$i(e,t):i._visibility&2?Jt(e,t,n,a):(i._visibility|=2,bl(e,t,n,a,(t.subtreeFlags&10256)!==0||!1)),l&2048&&Kd(r,t);break;case 24:Jt(e,t,n,a),l&2048&&Zd(t.alternate,t);break;default:Jt(e,t,n,a)}}function bl(e,t,n,a,l){for(l=l&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var i=e,r=t,o=n,u=a,c=r.flags;switch(r.tag){case 0:case 11:case 15:bl(i,r,o,u,l),Tr(8,r);break;case 23:break;case 22:var s=r.stateNode;r.memoizedState!==null?s._visibility&2?bl(i,r,o,u,l):$i(i,r):(s._visibility|=2,bl(i,r,o,u,l)),l&&c&2048&&Kd(r.alternate,r);break;case 24:bl(i,r,o,u,l),l&&c&2048&&Zd(r.alternate,r);break;default:bl(i,r,o,u,l)}t=t.sibling}}function $i(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,a=t,l=a.flags;switch(a.tag){case 22:$i(n,a),l&2048&&Kd(a.alternate,a);break;case 24:$i(n,a),l&2048&&Zd(a.alternate,a);break;default:$i(n,a)}t=t.sibling}}var ji=8192;function vl(e,t,n){if(e.subtreeFlags&ji)for(e=e.child;e!==null;)ip(e,t,n),e=e.sibling}function ip(e,t,n){switch(e.tag){case 26:vl(e,t,n),e.flags&ji&&e.memoizedState!==null&&Bw(n,$t,e.memoizedState,e.memoizedProps);break;case 5:vl(e,t,n);break;case 3:case 4:var a=$t;$t=gu(e.stateNode.containerInfo),vl(e,t,n),$t=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=ji,ji=16777216,vl(e,t,n),ji=a):vl(e,t,n));break;default:vl(e,t,n)}}function rp(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function zi(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,up(a,e)}rp(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)op(e),e=e.sibling}function op(e){switch(e.tag){case 0:case 11:case 15:zi(e),e.flags&2048&&ma(9,e,e.return);break;case 3:zi(e);break;case 12:zi(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Uo(e)):zi(e);break;default:zi(e)}}function Uo(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];Pe=a,up(a,e)}rp(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ma(8,t,t.return),Uo(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Uo(t));break;default:Uo(t)}e=e.sibling}}function up(e,t){for(;Pe!==null;){var n=Pe;switch(n.tag){case 0:case 11:case 15:ma(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var a=n.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:Cr(n.memoizedState.cache)}if(a=n.child,a!==null)a.return=n,Pe=a;else e:for(n=e;Pe!==null;){a=Pe;var l=a.sibling,i=a.return;if(Jy(a),a===n){Pe=null;break e}if(l!==null){l.return=i,Pe=l;break e}Pe=i}}}var KA={getCacheForType:function(e){var t=Ke(ke),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Ke(ke).controller.signal}},ZA=typeof WeakMap=="function"?WeakMap:Map,K=0,oe=null,F=null,j=0,ee=0,wt=null,ea=!1,ti=!1,Wd=!1,Hn=0,Re=0,ha=0,Ua=0,Id=0,Rt=0,Xl=0,er=null,ht=null,Ws=!1,Mu=0,cp=0,ru=1/0,ou=null,oa=null,He=0,ua=null,Ql=null,Nn=0,Is=0,Js=null,sp=null,tr=0,$s=null;function xt(){return(K&2)!==0&&j!==0?j&-j:k.T!==null?$d():bh()}function dp(){if(Rt===0)if((j&536870912)===0||V){var e=fo;fo<<=1,(fo&3932160)===0&&(fo=262144),Rt=e}else Rt=536870912;return e=_t.current,e!==null&&(e.flags|=32),Rt}function yt(e,t,n){(e===oe&&(ee===2||ee===9)||e.cancelPendingCommit!==null)&&(Kl(e,0),ta(e,j,Rt,!1)),Ar(e,n),((K&2)===0||e!==oe)&&(e===oe&&((K&2)===0&&(Ua|=n),Re===4&&ta(e,j,Rt,!1)),gn(e))}function fp(e,t,n){if((K&6)!==0)throw Error(w(327));var a=!n&&(t&127)===0&&(t&e.expiredLanes)===0||br(e,t),l=a?JA(e,t):cs(e,t,!0),i=a;do{if(l===0){ti&&!a&&ta(e,t,0,!1);break}else{if(n=e.current.alternate,i&&!WA(n)){l=cs(e,t,!1),i=!1;continue}if(l===2){if(i=t,e.errorRecoveryDisabledLanes&i)var r=0;else r=e.pendingLanes&-536870913,r=r!==0?r:r&536870912?536870912:0;if(r!==0){t=r;e:{var o=e;l=er;var u=o.current.memoizedState.isDehydrated;if(u&&(Kl(o,r).flags|=256),r=cs(o,r,!1),r!==2){if(Wd&&!u){o.errorRecoveryDisabledLanes|=i,Ua|=i,l=4;break e}i=ht,ht=l,i!==null&&(ht===null?ht=i:ht.push.apply(ht,i))}l=r}if(i=!1,l!==2)continue}}if(l===1){Kl(e,0),ta(e,t,0,!0);break}e:{switch(a=e,i=l,i){case 0:case 1:throw Error(w(345));case 4:if((t&4194048)!==t)break;case 6:ta(a,t,Rt,!ea);break e;case 2:ht=null;break;case 3:case 5:break;default:throw Error(w(329))}if((t&62914560)===t&&(l=Mu+300-Tt(),10<l)){if(ta(a,t,Rt,!ea),vu(a,0,!0)!==0)break e;Nn=t,a.timeoutHandle=Np(_m.bind(null,a,n,ht,ou,Ws,t,Rt,Ua,Xl,ea,i,"Throttled",-0,0),l);break e}_m(a,n,ht,ou,Ws,t,Rt,Ua,Xl,ea,i,null,-0,0)}}break}while(!0);gn(e)}function _m(e,t,n,a,l,i,r,o,u,c,s,f,d,m){if(e.timeoutHandle=-1,f=t.subtreeFlags,f&8192||(f&16785408)===16785408){f={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:xn},ip(t,i,f);var v=(i&62914560)===i?Mu-Tt():(i&4194048)===i?cp-Tt():0;if(v=Nw(f,v),v!==null){Nn=i,e.cancelPendingCommit=v(Nm.bind(null,e,t,i,n,a,l,r,o,u,s,f,null,d,m)),ta(e,i,r,!c);return}}Nm(e,t,i,n,a,l,r,o,u)}function WA(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var l=n[a],i=l.getSnapshot;l=l.value;try{if(!Mt(i(),l))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ta(e,t,n,a){t&=~Id,t&=~Ua,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var l=t;0<l;){var i=31-Dt(l),r=1<<i;a[i]=-1,l&=~r}n!==0&&yh(e,n,t)}function _u(){return(K&6)===0?(Er(0,!1),!1):!0}function Jd(){if(F!==null){if(ee===0)var e=F.return;else e=F,Mn=Ka=null,Hd(e),Hl=null,cr=0,e=F;for(;e!==null;)Vy(e.alternate,e),e=e.return;F=null}}function Kl(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,mw(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),Nn=0,Jd(),oe=e,F=n=_n(e.current,null),j=t,ee=0,wt=null,ea=!1,ti=br(e,t),Wd=!1,Xl=Rt=Id=Ua=ha=Re=0,ht=er=null,Ws=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var l=31-Dt(a),i=1<<l;t|=e[l],a&=~i}return Hn=t,Su(),n}function gp(e,t){H=null,k.H=dr,t===ei||t===Ru?(t=um(),ee=3):t===_d?(t=um(),ee=4):ee=t===Xd?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,wt=t,F===null&&(Re=1,au(e,jt(t,e.current)))}function mp(){var e=_t.current;return e===null?!0:(j&4194048)===j?Vt===null:(j&62914560)===j||(j&536870912)!==0?e===Vt:!1}function hp(){var e=k.H;return k.H=dr,e===null?dr:e}function yp(){var e=k.A;return k.A=KA,e}function uu(){Re=4,ea||(j&4194048)!==j&&_t.current!==null||(ti=!0),(ha&134217727)===0&&(Ua&134217727)===0||oe===null||ta(oe,j,Rt,!1)}function cs(e,t,n){var a=K;K|=2;var l=hp(),i=yp();(oe!==e||j!==t)&&(ou=null,Kl(e,t)),t=!1;var r=Re;e:do try{if(ee!==0&&F!==null){var o=F,u=wt;switch(ee){case 8:Jd(),r=6;break e;case 3:case 2:case 9:case 6:_t.current===null&&(t=!0);var c=ee;if(ee=0,wt=null,Nl(e,o,u,c),n&&ti){r=0;break e}break;default:c=ee,ee=0,wt=null,Nl(e,o,u,c)}}IA(),r=Re;break}catch(s){gp(e,s)}while(!0);return t&&e.shellSuspendCounter++,Mn=Ka=null,K=a,k.H=l,k.A=i,F===null&&(oe=null,j=0,Su()),r}function IA(){for(;F!==null;)pp(F)}function JA(e,t){var n=K;K|=2;var a=hp(),l=yp();oe!==e||j!==t?(ou=null,ru=Tt()+500,Kl(e,t)):ti=br(e,t);e:do try{if(ee!==0&&F!==null){t=F;var i=wt;t:switch(ee){case 1:ee=0,wt=null,Nl(e,t,i,1);break;case 2:case 9:if(om(i)){ee=0,wt=null,Bm(t);break}t=function(){ee!==2&&ee!==9||oe!==e||(ee=7),gn(e)},i.then(t,t);break e;case 3:ee=7;break e;case 4:ee=5;break e;case 7:om(i)?(ee=0,wt=null,Bm(t)):(ee=0,wt=null,Nl(e,t,i,7));break;case 5:var r=null;switch(F.tag){case 26:r=F.memoizedState;case 5:case 27:var o=F;if(r?Hp(r):o.stateNode.complete){ee=0,wt=null;var u=o.sibling;if(u!==null)F=u;else{var c=o.return;c!==null?(F=c,Bu(c)):F=null}break t}}ee=0,wt=null,Nl(e,t,i,5);break;case 6:ee=0,wt=null,Nl(e,t,i,6);break;case 8:Jd(),Re=6;break e;default:throw Error(w(462))}}$A();break}catch(s){gp(e,s)}while(!0);return Mn=Ka=null,k.H=a,k.A=l,K=n,F!==null?0:(oe=null,j=0,Su(),Re)}function $A(){for(;F!==null&&!Sb();)pp(F)}function pp(e){var t=Yy(e.alternate,e,Hn);e.memoizedProps=e.pendingProps,t===null?Bu(e):F=t}function Bm(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Rm(n,t,t.pendingProps,t.type,void 0,j);break;case 11:t=Rm(n,t,t.pendingProps,t.type.render,t.ref,j);break;case 5:Hd(t);default:Vy(n,t),t=F=Vh(t,Hn),t=Yy(n,t,Hn)}e.memoizedProps=e.pendingProps,t===null?Bu(e):F=t}function Nl(e,t,n,a){Mn=Ka=null,Hd(t),Hl=null,cr=0;var l=t.return;try{if(PA(e,l,t,n,j)){Re=1,au(e,jt(n,e.current)),F=null;return}}catch(i){if(l!==null)throw F=l,i;Re=1,au(e,jt(n,e.current)),F=null;return}t.flags&32768?(V||a===1?e=!0:ti||(j&536870912)!==0?e=!1:(ea=e=!0,(a===2||a===9||a===3||a===6)&&(a=_t.current,a!==null&&a.tag===13&&(a.flags|=16384))),vp(t,e)):Bu(t)}function Bu(e){var t=e;do{if((t.flags&32768)!==0){vp(t,ea);return}e=t.return;var n=YA(t.alternate,t,Hn);if(n!==null){F=n;return}if(t=t.sibling,t!==null){F=t;return}F=t=e}while(t!==null);Re===0&&(Re=5)}function vp(e,t){do{var n=VA(e.alternate,e);if(n!==null){n.flags&=32767,F=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){F=e;return}F=e=n}while(e!==null);Re=6,F=null}function Nm(e,t,n,a,l,i,r,o,u){e.cancelPendingCommit=null;do Nu();while(He!==0);if((K&6)!==0)throw Error(w(327));if(t!==null){if(t===e.current)throw Error(w(177));if(i=t.lanes|t.childLanes,i|=Cd,Nb(e,n,i,r,o,u),e===oe&&(F=oe=null,j=0),Ql=t,ua=e,Nn=n,Is=i,Js=l,sp=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,aw(Xo,function(){return Cp(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=k.T,k.T=null,l=Z.p,Z.p=2,r=K,K|=4;try{XA(e,t,n)}finally{K=r,Z.p=l,k.T=a}}He=1,bp(),Ap(),wp()}}function bp(){if(He===1){He=0;var e=ua,t=Ql,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=k.T,k.T=null;var a=Z.p;Z.p=2;var l=K;K|=4;try{np(t,e);var i=ad,r=Hh(e.containerInfo),o=i.focusedElem,u=i.selectionRange;if(r!==o&&o&&o.ownerDocument&&zh(o.ownerDocument.documentElement,o)){if(u!==null&&Sd(o)){var c=u.start,s=u.end;if(s===void 0&&(s=c),"selectionStart"in o)o.selectionStart=c,o.selectionEnd=Math.min(s,o.value.length);else{var f=o.ownerDocument||document,d=f&&f.defaultView||window;if(d.getSelection){var m=d.getSelection(),v=o.textContent.length,A=Math.min(u.start,v),b=u.end===void 0?A:Math.min(u.end,v);!m.extend&&A>b&&(r=b,b=A,A=r);var h=em(o,A),g=em(o,b);if(h&&g&&(m.rangeCount!==1||m.anchorNode!==h.node||m.anchorOffset!==h.offset||m.focusNode!==g.node||m.focusOffset!==g.offset)){var y=f.createRange();y.setStart(h.node,h.offset),m.removeAllRanges(),A>b?(m.addRange(y),m.extend(g.node,g.offset)):(y.setEnd(g.node,g.offset),m.addRange(y))}}}}for(f=[],m=o;m=m.parentNode;)m.nodeType===1&&f.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o<f.length;o++){var p=f[o];p.element.scrollLeft=p.left,p.element.scrollTop=p.top}}yu=!!nd,ad=nd=null}finally{K=l,Z.p=a,k.T=n}}e.current=t,He=2}}function Ap(){if(He===2){He=0;var e=ua,t=Ql,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=k.T,k.T=null;var a=Z.p;Z.p=2;var l=K;K|=4;try{Iy(e,t.alternate,t)}finally{K=l,Z.p=a,k.T=n}}He=3}}function wp(){if(He===4||He===3){He=0,Cb();var e=ua,t=Ql,n=Nn,a=sp;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?He=5:(He=0,Ql=ua=null,Sp(e,e.pendingLanes));var l=e.pendingLanes;if(l===0&&(oa=null),hd(n),t=t.stateNode,Et&&typeof Et.onCommitFiberRoot=="function")try{Et.onCommitFiberRoot(vr,t,void 0,(t.current.flags&128)===128)}catch{}if(a!==null){t=k.T,l=Z.p,Z.p=2,k.T=null;try{for(var i=e.onRecoverableError,r=0;r<a.length;r++){var o=a[r];i(o.value,{componentStack:o.stack})}}finally{k.T=t,Z.p=l}}(Nn&3)!==0&&Nu(),gn(e),l=e.pendingLanes,(n&261930)!==0&&(l&42)!==0?e===$s?tr++:(tr=0,$s=e):tr=0,Er(0,!1)}}function Sp(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Cr(t)))}function Nu(){return bp(),Ap(),wp(),Cp()}function Cp(){if(He!==5)return!1;var e=ua,t=Is;Is=0;var n=hd(Nn),a=k.T,l=Z.p;try{Z.p=32>n?32:n,k.T=null,n=Js,Js=null;var i=ua,r=Nn;if(He=0,Ql=ua=null,Nn=0,(K&6)!==0)throw Error(w(331));var o=K;if(K|=4,op(i.current),lp(i,i.current,r,n),K=o,Er(0,!1),Et&&typeof Et.onPostCommitFiberRoot=="function")try{Et.onPostCommitFiberRoot(vr,i)}catch{}return!0}finally{Z.p=l,k.T=a,Sp(e,t)}}function Om(e,t,n){t=jt(n,t),t=Xs(e.stateNode,t,2),e=ra(e,t,2),e!==null&&(Ar(e,2),gn(e))}function te(e,t,n){if(e.tag===3)Om(e,e,n);else for(;t!==null;){if(t.tag===3){Om(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(oa===null||!oa.has(a))){e=jt(n,e),n=Uy(2),a=ra(t,n,2),a!==null&&(Gy(n,a,t,e),Ar(a,2),gn(a));break}}t=t.return}}function ss(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new ZA;var l=new Set;a.set(t,l)}else l=a.get(t),l===void 0&&(l=new Set,a.set(t,l));l.has(n)||(Wd=!0,l.add(n),e=ew.bind(null,e,t,n),t.then(e,e))}function ew(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,oe===e&&(j&n)===n&&(Re===4||Re===3&&(j&62914560)===j&&300>Tt()-Mu?(K&2)===0&&Kl(e,0):Id|=n,Xl===j&&(Xl=0)),gn(e)}function Rp(e,t){t===0&&(t=hh()),e=Qa(e,t),e!==null&&(Ar(e,t),gn(e))}function tw(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Rp(e,n)}function nw(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(w(314))}a!==null&&a.delete(t),Rp(e,n)}function aw(e,t){return gd(e,t)}var cu=null,Al=null,ed=!1,su=!1,ds=!1,na=0;function gn(e){e!==Al&&e.next===null&&(Al===null?cu=Al=e:Al=Al.next=e),su=!0,ed||(ed=!0,iw())}function Er(e,t){if(!ds&&su){ds=!0;do for(var n=!1,a=cu;a!==null;){if(!t)if(e!==0){var l=a.pendingLanes;if(l===0)var i=0;else{var r=a.suspendedLanes,o=a.pingedLanes;i=(1<<31-Dt(42|e)+1)-1,i&=l&~(r&~o),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(n=!0,km(a,i))}else i=j,i=vu(a,a===oe?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(i&3)===0||br(a,i)||(n=!0,km(a,i));a=a.next}while(n);ds=!1}}function lw(){Tp()}function Tp(){su=ed=!1;var e=0;na!==0&&gw()&&(e=na);for(var t=Tt(),n=null,a=cu;a!==null;){var l=a.next,i=Ep(a,t);i===0?(a.next=null,n===null?cu=l:n.next=l,l===null&&(Al=n)):(n=a,(e!==0||(i&3)!==0)&&(su=!0)),a=l}He!==0&&He!==5||Er(e,!1),na!==0&&(na=0)}function Ep(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,l=e.expirationTimes,i=e.pendingLanes&-62914561;0<i;){var r=31-Dt(i),o=1<<r,u=l[r];u===-1?((o&n)===0||(o&a)!==0)&&(l[r]=Bb(o,t)):u<=t&&(e.expiredLanes|=o),i&=~o}if(t=oe,n=j,n=vu(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,n===0||e===t&&(ee===2||ee===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&qc(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||br(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(a!==null&&qc(a),hd(n)){case 2:case 8:n=gh;break;case 32:n=Xo;break;case 268435456:n=mh;break;default:n=Xo}return a=Dp.bind(null,e),n=gd(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&a!==null&&qc(a),e.callbackPriority=2,e.callbackNode=null,2}function Dp(e,t){if(He!==0&&He!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Nu()&&e.callbackNode!==n)return null;var a=j;return a=vu(e,e===oe?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(fp(e,a,t),Ep(e,Tt()),e.callbackNode!=null&&e.callbackNode===n?Dp.bind(null,e):null)}function km(e,t){if(Nu())return null;fp(e,t,!0)}function iw(){hw(function(){(K&6)!==0?gd(fh,lw):Tp()})}function $d(){if(na===0){var e=jl;e===0&&(e=so,so<<=1,(so&261888)===0&&(so=256)),na=e}return na}function Lm(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Mo(""+e)}function zm(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function rw(e,t,n,a,l){if(t==="submit"&&n&&n.stateNode===l){var i=Lm((l[pt]||null).action),r=a.submitter;r&&(t=(t=r[pt]||null)?Lm(t.formAction):r.getAttribute("formAction"),t!==null&&(i=t,r=null));var o=new bu("action","action",null,a,l);e.push({event:o,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(na!==0){var u=r?zm(l,r):new FormData(l);Ys(n,{pending:!0,data:u,method:l.method,action:i},null,u)}}else typeof i=="function"&&(o.preventDefault(),u=r?zm(l,r):new FormData(l),Ys(n,{pending:!0,data:u,method:l.method,action:i},i,u))},currentTarget:l}]})}}for(Co=0;Co<Ns.length;Co++)Ro=Ns[Co],Hm=Ro.toLowerCase(),Um=Ro[0].toUpperCase()+Ro.slice(1),en(Hm,"on"+Um);var Ro,Hm,Um,Co;en(Gh,"onAnimationEnd");en(qh,"onAnimationIteration");en(Ph,"onAnimationStart");en("dblclick","onDoubleClick");en("focusin","onFocus");en("focusout","onBlur");en(RA,"onTransitionRun");en(TA,"onTransitionStart");en(EA,"onTransitionCancel");en(Fh,"onTransitionEnd");Pl("onMouseEnter",["mouseout","mouseover"]);Pl("onMouseLeave",["mouseout","mouseover"]);Pl("onPointerEnter",["pointerout","pointerover"]);Pl("onPointerLeave",["pointerout","pointerover"]);Ya("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Ya("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Ya("onBeforeInput",["compositionend","keypress","textInput","paste"]);Ya("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Ya("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Ya("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var fr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ow=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(fr));function xp(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],l=a.event;a=a.listeners;e:{var i=void 0;if(t)for(var r=a.length-1;0<=r;r--){var o=a[r],u=o.instance,c=o.currentTarget;if(o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Ko(s)}l.currentTarget=null,i=u}else for(r=0;r<a.length;r++){if(o=a[r],u=o.instance,c=o.currentTarget,o=o.listener,u!==i&&l.isPropagationStopped())break e;i=o,l.currentTarget=c;try{i(l)}catch(s){Ko(s)}l.currentTarget=null,i=u}}}}function P(e,t){var n=t[Rs];n===void 0&&(n=t[Rs]=new Set);var a=e+"__bubble";n.has(a)||(Mp(t,e,2,!1),n.add(a))}function fs(e,t,n){var a=0;t&&(a|=4),Mp(n,e,a,t)}var To="_reactListening"+Math.random().toString(36).slice(2);function ef(e){if(!e[To]){e[To]=!0,Ah.forEach(function(n){n!=="selectionchange"&&(ow.has(n)||fs(n,!1,e),fs(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[To]||(t[To]=!0,fs("selectionchange",!1,t))}}function Mp(e,t,n,a){switch(Fp(t)){case 2:var l=Lw;break;case 8:l=zw;break;default:l=lf}n=l.bind(null,t,n,e),l=void 0,!Ms||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(l=!0),a?l!==void 0?e.addEventListener(t,n,{capture:!0,passive:l}):e.addEventListener(t,n,!0):l!==void 0?e.addEventListener(t,n,{passive:l}):e.addEventListener(t,n,!1)}function gs(e,t,n,a,l){var i=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var r=a.tag;if(r===3||r===4){var o=a.stateNode.containerInfo;if(o===l)break;if(r===4)for(r=a.return;r!==null;){var u=r.tag;if((u===3||u===4)&&r.stateNode.containerInfo===l)return;r=r.return}for(;o!==null;){if(r=Cl(o),r===null)return;if(u=r.tag,u===5||u===6||u===26||u===27){a=i=r;continue e}o=o.parentNode}}a=a.return}xh(function(){var c=i,s=vd(n),f=[];e:{var d=jh.get(e);if(d!==void 0){var m=bu,v=e;switch(e){case"keypress":if(Bo(n)===0)break e;case"keydown":case"keyup":m=nA;break;case"focusin":v="focus",m=Vc;break;case"focusout":v="blur",m=Vc;break;case"beforeblur":case"afterblur":m=Vc;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=Vg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=Yb;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=iA;break;case Gh:case qh:case Ph:m=Qb;break;case Fh:m=oA;break;case"scroll":case"scrollend":m=Fb;break;case"wheel":m=cA;break;case"copy":case"cut":case"paste":m=Zb;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=Qg;break;case"toggle":case"beforetoggle":m=dA}var A=(t&4)!==0,b=!A&&(e==="scroll"||e==="scrollend"),h=A?d!==null?d+"Capture":null:d;A=[];for(var g=c,y;g!==null;){var p=g;if(y=p.stateNode,p=p.tag,p!==5&&p!==26&&p!==27||y===null||h===null||(p=lr(g,h),p!=null&&A.push(gr(g,p,y))),b)break;g=g.return}0<A.length&&(d=new m(d,v,null,n,s),f.push({event:d,listeners:A}))}}if((t&7)===0){e:{if(d=e==="mouseover"||e==="pointerover",m=e==="mouseout"||e==="pointerout",d&&n!==xs&&(v=n.relatedTarget||n.fromElement)&&(Cl(v)||v[Il]))break e;if((m||d)&&(d=s.window===s?s:(d=s.ownerDocument)?d.defaultView||d.parentWindow:window,m?(v=n.relatedTarget||n.toElement,m=c,v=v?Cl(v):null,v!==null&&(b=pr(v),A=v.tag,v!==b||A!==5&&A!==27&&A!==6)&&(v=null)):(m=null,v=c),m!==v)){if(A=Vg,p="onMouseLeave",h="onMouseEnter",g="mouse",(e==="pointerout"||e==="pointerover")&&(A=Qg,p="onPointerLeave",h="onPointerEnter",g="pointer"),b=m==null?d:Pi(m),y=v==null?d:Pi(v),d=new A(p,g+"leave",m,n,s),d.target=b,d.relatedTarget=y,p=null,Cl(s)===c&&(A=new A(h,g+"enter",v,n,s),A.target=y,A.relatedTarget=b,p=A),b=p,m&&v)t:{for(A=uw,h=m,g=v,y=0,p=h;p;p=A(p))y++;p=0;for(var C=g;C;C=A(C))p++;for(;0<y-p;)h=A(h),y--;for(;0<p-y;)g=A(g),p--;for(;y--;){if(h===g||g!==null&&h===g.alternate){A=h;break t}h=A(h),g=A(g)}A=null}else A=null;m!==null&&Gm(f,d,m,A,!1),v!==null&&b!==null&&Gm(f,b,v,A,!0)}}e:{if(d=c?Pi(c):window,m=d.nodeName&&d.nodeName.toLowerCase(),m==="select"||m==="input"&&d.type==="file")var R=Ig;else if(Wg(d))if(kh)R=wA;else{R=bA;var T=vA}else m=d.nodeName,!m||m.toLowerCase()!=="input"||d.type!=="checkbox"&&d.type!=="radio"?c&&pd(c.elementType)&&(R=Ig):R=AA;if(R&&(R=R(e,c))){Oh(f,R,n,s);break e}T&&T(e,d,c),e==="focusout"&&c&&d.type==="number"&&c.memoizedProps.value!=null&&Ds(d,"number",d.value)}switch(T=c?Pi(c):window,e){case"focusin":(Wg(T)||T.contentEditable==="true")&&(El=T,_s=c,Xi=null);break;case"focusout":Xi=_s=El=null;break;case"mousedown":Bs=!0;break;case"contextmenu":case"mouseup":case"dragend":Bs=!1,tm(f,n,s);break;case"selectionchange":if(CA)break;case"keydown":case"keyup":tm(f,n,s)}var M;if(wd)e:{switch(e){case"compositionstart":var S="onCompositionStart";break e;case"compositionend":S="onCompositionEnd";break e;case"compositionupdate":S="onCompositionUpdate";break e}S=void 0}else Tl?Bh(e,n)&&(S="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(S="onCompositionStart");S&&(_h&&n.locale!=="ko"&&(Tl||S!=="onCompositionStart"?S==="onCompositionEnd"&&Tl&&(M=Mh()):($n=s,bd="value"in $n?$n.value:$n.textContent,Tl=!0)),T=du(c,S),0<T.length&&(S=new Xg(S,e,null,n,s),f.push({event:S,listeners:T}),M?S.data=M:(M=Nh(n),M!==null&&(S.data=M)))),(M=gA?mA(e,n):hA(e,n))&&(S=du(c,"onBeforeInput"),0<S.length&&(T=new Xg("onBeforeInput","beforeinput",null,n,s),f.push({event:T,listeners:S}),T.data=M)),rw(f,e,c,n,s)}xp(f,t)})}function gr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function du(e,t){for(var n=t+"Capture",a=[];e!==null;){var l=e,i=l.stateNode;if(l=l.tag,l!==5&&l!==26&&l!==27||i===null||(l=lr(e,n),l!=null&&a.unshift(gr(e,l,i)),l=lr(e,t),l!=null&&a.push(gr(e,l,i))),e.tag===3)return a;e=e.return}return[]}function uw(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Gm(e,t,n,a,l){for(var i=t._reactName,r=[];n!==null&&n!==a;){var o=n,u=o.alternate,c=o.stateNode;if(o=o.tag,u!==null&&u===a)break;o!==5&&o!==26&&o!==27||c===null||(u=c,l?(c=lr(n,i),c!=null&&r.unshift(gr(n,c,u))):l||(c=lr(n,i),c!=null&&r.push(gr(n,c,u)))),n=n.return}r.length!==0&&e.push({event:t,listeners:r})}var cw=/\r\n?/g,sw=/\u0000|\uFFFD/g;function qm(e){return(typeof e=="string"?e:""+e).replace(cw,``).replace(sw,"")}function _p(e,t){return t=qm(t),qm(e)===t}function ae(e,t,n,a,l,i){switch(n){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||Fl(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&Fl(e,""+a);break;case"className":mo(e,"class",a);break;case"tabIndex":mo(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":mo(e,n,a);break;case"style":Dh(e,a,i);break;case"data":if(t!=="object"){mo(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Mo(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof i=="function"&&(n==="formAction"?(t!=="input"&&ae(e,t,"name",l.name,l,null),ae(e,t,"formEncType",l.formEncType,l,null),ae(e,t,"formMethod",l.formMethod,l,null),ae(e,t,"formTarget",l.formTarget,l,null)):(ae(e,t,"encType",l.encType,l,null),ae(e,t,"method",l.method,l,null),ae(e,t,"target",l.target,l,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Mo(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(e.onclick=xn);break;case"onScroll":a!=null&&P("scroll",e);break;case"onScrollEnd":a!=null&&P("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(w(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(w(60));e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}n=Mo(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""+a):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,a):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(n,a):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):e.setAttribute(n,a);break;case"popover":P("beforetoggle",e),P("toggle",e),xo(e,"popover",a);break;case"xlinkActuate":An(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":An(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":An(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":An(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":An(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":An(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":An(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":An(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":An(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":xo(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=qb.get(n)||n,xo(e,n,a))}}function td(e,t,n,a,l,i){switch(n){case"style":Dh(e,a,i);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(w(61));if(n=a.__html,n!=null){if(l.children!=null)throw Error(w(60));e.innerHTML=n}}break;case"children":typeof a=="string"?Fl(e,a):(typeof a=="number"||typeof a=="bigint")&&Fl(e,""+a);break;case"onScroll":a!=null&&P("scroll",e);break;case"onScrollEnd":a!=null&&P("scrollend",e);break;case"onClick":a!=null&&(e.onclick=xn);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!wh.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(l=n.endsWith("Capture"),t=n.slice(2,l?n.length-7:void 0),i=e[pt]||null,i=i!=null?i[n]:null,typeof i=="function"&&e.removeEventListener(t,i,l),typeof a=="function")){typeof i!="function"&&i!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,l);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):xo(e,n,a)}}}function Ze(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":P("error",e),P("load",e);var a=!1,l=!1,i;for(i in n)if(n.hasOwnProperty(i)){var r=n[i];if(r!=null)switch(i){case"src":a=!0;break;case"srcSet":l=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(w(137,t));default:ae(e,t,i,r,n,null)}}l&&ae(e,t,"srcSet",n.srcSet,n,null),a&&ae(e,t,"src",n.src,n,null);return;case"input":P("invalid",e);var o=i=r=l=null,u=null,c=null;for(a in n)if(n.hasOwnProperty(a)){var s=n[a];if(s!=null)switch(a){case"name":l=s;break;case"type":r=s;break;case"checked":u=s;break;case"defaultChecked":c=s;break;case"value":i=s;break;case"defaultValue":o=s;break;case"children":case"dangerouslySetInnerHTML":if(s!=null)throw Error(w(137,t));break;default:ae(e,t,a,s,n,null)}}Rh(e,i,o,u,c,r,l,!1);return;case"select":P("invalid",e),a=r=i=null;for(l in n)if(n.hasOwnProperty(l)&&(o=n[l],o!=null))switch(l){case"value":i=o;break;case"defaultValue":r=o;break;case"multiple":a=o;default:ae(e,t,l,o,n,null)}t=i,n=r,e.multiple=!!a,t!=null?kl(e,!!a,t,!1):n!=null&&kl(e,!!a,n,!0);return;case"textarea":P("invalid",e),i=l=a=null;for(r in n)if(n.hasOwnProperty(r)&&(o=n[r],o!=null))switch(r){case"value":a=o;break;case"defaultValue":l=o;break;case"children":i=o;break;case"dangerouslySetInnerHTML":if(o!=null)throw Error(w(91));break;default:ae(e,t,r,o,n,null)}Eh(e,a,l,i);return;case"option":for(u in n)if(n.hasOwnProperty(u)&&(a=n[u],a!=null))switch(u){case"selected":e.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:ae(e,t,u,a,n,null)}return;case"dialog":P("beforetoggle",e),P("toggle",e),P("cancel",e),P("close",e);break;case"iframe":case"object":P("load",e);break;case"video":case"audio":for(a=0;a<fr.length;a++)P(fr[a],e);break;case"image":P("error",e),P("load",e);break;case"details":P("toggle",e);break;case"embed":case"source":case"link":P("error",e),P("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(c in n)if(n.hasOwnProperty(c)&&(a=n[c],a!=null))switch(c){case"children":case"dangerouslySetInnerHTML":throw Error(w(137,t));default:ae(e,t,c,a,n,null)}return;default:if(pd(t)){for(s in n)n.hasOwnProperty(s)&&(a=n[s],a!==void 0&&td(e,t,s,a,n,void 0));return}}for(o in n)n.hasOwnProperty(o)&&(a=n[o],a!=null&&ae(e,t,o,a,n,null))}function dw(e,t,n,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,i=null,r=null,o=null,u=null,c=null,s=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case"checked":break;case"value":break;case"defaultValue":u=f;default:a.hasOwnProperty(m)||ae(e,t,m,null,a,f)}}for(var d in a){var m=a[d];if(f=n[d],a.hasOwnProperty(d)&&(m!=null||f!=null))switch(d){case"type":i=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":s=m;break;case"value":r=m;break;case"defaultValue":o=m;break;case"children":case"dangerouslySetInnerHTML":if(m!=null)throw Error(w(137,t));break;default:m!==f&&ae(e,t,d,m,a,f)}}Es(e,r,o,u,c,s,i,l);return;case"select":m=r=o=d=null;for(i in n)if(u=n[i],n.hasOwnProperty(i)&&u!=null)switch(i){case"value":break;case"multiple":m=u;default:a.hasOwnProperty(i)||ae(e,t,i,null,a,u)}for(l in a)if(i=a[l],u=n[l],a.hasOwnProperty(l)&&(i!=null||u!=null))switch(l){case"value":d=i;break;case"defaultValue":o=i;break;case"multiple":r=i;default:i!==u&&ae(e,t,l,i,a,u)}t=o,n=r,a=m,d!=null?kl(e,!!n,d,!1):!!a!=!!n&&(t!=null?kl(e,!!n,t,!0):kl(e,!!n,n?[]:"",!1));return;case"textarea":m=d=null;for(o in n)if(l=n[o],n.hasOwnProperty(o)&&l!=null&&!a.hasOwnProperty(o))switch(o){case"value":break;case"children":break;default:ae(e,t,o,null,a,l)}for(r in a)if(l=a[r],i=n[r],a.hasOwnProperty(r)&&(l!=null||i!=null))switch(r){case"value":d=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(l!=null)throw Error(w(91));break;default:l!==i&&ae(e,t,r,l,a,i)}Th(e,d,m);return;case"option":for(var v in n)if(d=n[v],n.hasOwnProperty(v)&&d!=null&&!a.hasOwnProperty(v))switch(v){case"selected":e.selected=!1;break;default:ae(e,t,v,null,a,d)}for(u in a)if(d=a[u],m=n[u],a.hasOwnProperty(u)&&d!==m&&(d!=null||m!=null))switch(u){case"selected":e.selected=d&&typeof d!="function"&&typeof d!="symbol";break;default:ae(e,t,u,d,a,m)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var A in n)d=n[A],n.hasOwnProperty(A)&&d!=null&&!a.hasOwnProperty(A)&&ae(e,t,A,null,a,d);for(c in a)if(d=a[c],m=n[c],a.hasOwnProperty(c)&&d!==m&&(d!=null||m!=null))switch(c){case"children":case"dangerouslySetInnerHTML":if(d!=null)throw Error(w(137,t));break;default:ae(e,t,c,d,a,m)}return;default:if(pd(t)){for(var b in n)d=n[b],n.hasOwnProperty(b)&&d!==void 0&&!a.hasOwnProperty(b)&&td(e,t,b,void 0,a,d);for(s in a)d=a[s],m=n[s],!a.hasOwnProperty(s)||d===m||d===void 0&&m===void 0||td(e,t,s,d,a,m);return}}for(var h in n)d=n[h],n.hasOwnProperty(h)&&d!=null&&!a.hasOwnProperty(h)&&ae(e,t,h,null,a,d);for(f in a)d=a[f],m=n[f],!a.hasOwnProperty(f)||d===m||d==null&&m==null||ae(e,t,f,d,a,m)}function Pm(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function fw(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var l=n[a],i=l.transferSize,r=l.initiatorType,o=l.duration;if(i&&o&&Pm(r)){for(r=0,o=l.responseEnd,a+=1;a<n.length;a++){var u=n[a],c=u.startTime;if(c>o)break;var s=u.transferSize,f=u.initiatorType;s&&Pm(f)&&(u=u.responseEnd,r+=s*(u<o?1:(o-c)/(u-c)))}if(--a,t+=8*(i+r)/(l.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var nd=null,ad=null;function fu(e){return e.nodeType===9?e:e.ownerDocument}function Fm(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Bp(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function ld(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var ms=null;function gw(){var e=window.event;return e&&e.type==="popstate"?e===ms?!1:(ms=e,!0):(ms=null,!1)}var Np=typeof setTimeout=="function"?setTimeout:void 0,mw=typeof clearTimeout=="function"?clearTimeout:void 0,jm=typeof Promise=="function"?Promise:void 0,hw=typeof queueMicrotask=="function"?queueMicrotask:typeof jm<"u"?function(e){return jm.resolve(null).then(e).catch(yw)}:Np;function yw(e){setTimeout(function(){throw e})}function pa(e){return e==="head"}function Ym(e,t){var n=t,a=0;do{var l=n.nextSibling;if(e.removeChild(n),l&&l.nodeType===8)if(n=l.data,n==="/$"||n==="/&"){if(a===0){e.removeChild(l),Wl(t);return}a--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")a++;else if(n==="html")nr(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,nr(n);for(var i=n.firstChild;i;){var r=i.nextSibling,o=i.nodeName;i[wr]||o==="SCRIPT"||o==="STYLE"||o==="LINK"&&i.rel.toLowerCase()==="stylesheet"||n.removeChild(i),i=r}}else n==="body"&&nr(e.ownerDocument.body);n=l}while(n);Wl(t)}function Vm(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=a}while(n)}function id(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":id(n),yd(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function pw(e,t,n,a){for(;e.nodeType===1;){var l=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[wr])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(i=e.getAttribute("rel"),i==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(i!==l.rel||e.getAttribute("href")!==(l.href==null||l.href===""?null:l.href)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin)||e.getAttribute("title")!==(l.title==null?null:l.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(i=e.getAttribute("src"),(i!==(l.src==null?null:l.src)||e.getAttribute("type")!==(l.type==null?null:l.type)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin))&&i&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var i=l.name==null?null:""+l.name;if(l.type==="hidden"&&e.getAttribute("name")===i)return e}else return e;if(e=Xt(e.nextSibling),e===null)break}return null}function vw(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Xt(e.nextSibling),e===null))return null;return e}function Op(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Xt(e.nextSibling),e===null))return null;return e}function rd(e){return e.data==="$?"||e.data==="$~"}function od(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function bw(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function Xt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var ud=null;function Xm(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return Xt(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function Qm(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function kp(e,t,n){switch(t=fu(n),e){case"html":if(e=t.documentElement,!e)throw Error(w(452));return e;case"head":if(e=t.head,!e)throw Error(w(453));return e;case"body":if(e=t.body,!e)throw Error(w(454));return e;default:throw Error(w(451))}}function nr(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);yd(e)}var Qt=new Map,Km=new Set;function gu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Un=Z.d;Z.d={f:Aw,r:ww,D:Sw,C:Cw,L:Rw,m:Tw,X:Dw,S:Ew,M:xw};function Aw(){var e=Un.f(),t=_u();return e||t}function ww(e){var t=Jl(e);t!==null&&t.tag===5&&t.type==="form"?Dy(t):Un.r(e)}var ni=typeof document>"u"?null:document;function Lp(e,t,n){var a=ni;if(a&&typeof t=="string"&&t){var l=Ft(t);l='link[rel="'+e+'"][href="'+l+'"]',typeof n=="string"&&(l+='[crossorigin="'+n+'"]'),Km.has(l)||(Km.add(l),e={rel:e,crossOrigin:n,href:t},a.querySelector(l)===null&&(t=a.createElement("link"),Ze(t,"link",e),Fe(t),a.head.appendChild(t)))}}function Sw(e){Un.D(e),Lp("dns-prefetch",e,null)}function Cw(e,t){Un.C(e,t),Lp("preconnect",e,t)}function Rw(e,t,n){Un.L(e,t,n);var a=ni;if(a&&e&&t){var l='link[rel="preload"][as="'+Ft(t)+'"]';t==="image"&&n&&n.imageSrcSet?(l+='[imagesrcset="'+Ft(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(l+='[imagesizes="'+Ft(n.imageSizes)+'"]')):l+='[href="'+Ft(e)+'"]';var i=l;switch(t){case"style":i=Zl(e);break;case"script":i=ai(e)}Qt.has(i)||(e=he({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Qt.set(i,e),a.querySelector(l)!==null||t==="style"&&a.querySelector(Dr(i))||t==="script"&&a.querySelector(xr(i))||(t=a.createElement("link"),Ze(t,"link",e),Fe(t),a.head.appendChild(t)))}}function Tw(e,t){Un.m(e,t);var n=ni;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",l='link[rel="modulepreload"][as="'+Ft(a)+'"][href="'+Ft(e)+'"]',i=l;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=ai(e)}if(!Qt.has(i)&&(e=he({rel:"modulepreload",href:e},t),Qt.set(i,e),n.querySelector(l)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(xr(i)))return}a=n.createElement("link"),Ze(a,"link",e),Fe(a),n.head.appendChild(a)}}}function Ew(e,t,n){Un.S(e,t,n);var a=ni;if(a&&e){var l=Ol(a).hoistableStyles,i=Zl(e);t=t||"default";var r=l.get(i);if(!r){var o={loading:0,preload:null};if(r=a.querySelector(Dr(i)))o.loading=5;else{e=he({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Qt.get(i))&&tf(e,n);var u=r=a.createElement("link");Fe(u),Ze(u,"link",e),u._p=new Promise(function(c,s){u.onload=c,u.onerror=s}),u.addEventListener("load",function(){o.loading|=1}),u.addEventListener("error",function(){o.loading|=2}),o.loading|=4,Go(r,t,a)}r={type:"stylesheet",instance:r,count:1,state:o},l.set(i,r)}}}function Dw(e,t){Un.X(e,t);var n=ni;if(n&&e){var a=Ol(n).hoistableScripts,l=ai(e),i=a.get(l);i||(i=n.querySelector(xr(l)),i||(e=he({src:e,async:!0},t),(t=Qt.get(l))&&nf(e,t),i=n.createElement("script"),Fe(i),Ze(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function xw(e,t){Un.M(e,t);var n=ni;if(n&&e){var a=Ol(n).hoistableScripts,l=ai(e),i=a.get(l);i||(i=n.querySelector(xr(l)),i||(e=he({src:e,async:!0,type:"module"},t),(t=Qt.get(l))&&nf(e,t),i=n.createElement("script"),Fe(i),Ze(i,"link",e),n.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(l,i))}}function Zm(e,t,n,a){var l=(l=aa.current)?gu(l):null;if(!l)throw Error(w(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=Zl(n.href),n=Ol(l).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Zl(n.href);var i=Ol(l).hoistableStyles,r=i.get(e);if(r||(l=l.ownerDocument||l,r={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(e,r),(i=l.querySelector(Dr(e)))&&!i._p&&(r.instance=i,r.state.loading=5),Qt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Qt.set(e,n),i||Mw(l,e,n,r.state))),t&&a===null)throw Error(w(528,""));return r}if(t&&a!==null)throw Error(w(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ai(n),n=Ol(l).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(w(444,e))}}function Zl(e){return'href="'+Ft(e)+'"'}function Dr(e){return'link[rel="stylesheet"]['+e+"]"}function zp(e){return he({},e,{"data-precedence":e.precedence,precedence:null})}function Mw(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Ze(t,"link",n),Fe(t),e.head.appendChild(t))}function ai(e){return'[src="'+Ft(e)+'"]'}function xr(e){return"script[async]"+e}function Wm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+Ft(n.href)+'"]');if(a)return t.instance=a,Fe(a),a;var l=he({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),Fe(a),Ze(a,"style",l),Go(a,n.precedence,e),t.instance=a;case"stylesheet":l=Zl(n.href);var i=e.querySelector(Dr(l));if(i)return t.state.loading|=4,t.instance=i,Fe(i),i;a=zp(n),(l=Qt.get(l))&&tf(a,l),i=(e.ownerDocument||e).createElement("link"),Fe(i);var r=i;return r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ze(i,"link",a),t.state.loading|=4,Go(i,n.precedence,e),t.instance=i;case"script":return i=ai(n.src),(l=e.querySelector(xr(i)))?(t.instance=l,Fe(l),l):(a=n,(l=Qt.get(i))&&(a=he({},n),nf(a,l)),e=e.ownerDocument||e,l=e.createElement("script"),Fe(l),Ze(l,"link",a),e.head.appendChild(l),t.instance=l);case"void":return null;default:throw Error(w(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Go(a,n.precedence,e));return t.instance}function Go(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=a.length?a[a.length-1]:null,i=l,r=0;r<a.length;r++){var o=a[r];if(o.dataset.precedence===t)i=o;else if(i!==l)break}i?i.parentNode.insertBefore(e,i.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function tf(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function nf(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var qo=null;function Im(e,t,n){if(qo===null){var a=new Map,l=qo=new Map;l.set(n,a)}else l=qo,a=l.get(n),a||(a=new Map,l.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),l=0;l<n.length;l++){var i=n[l];if(!(i[wr]||i[Xe]||e==="link"&&i.getAttribute("rel")==="stylesheet")&&i.namespaceURI!=="http://www.w3.org/2000/svg"){var r=i.getAttribute(t)||"";r=e+r;var o=a.get(r);o?o.push(i):a.set(r,[i])}}return a}function Jm(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function _w(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Hp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Bw(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var l=Zl(a.href),i=t.querySelector(Dr(l));if(i){t=i._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=mu.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=i,Fe(i);return}i=t.ownerDocument||t,a=zp(a),(l=Qt.get(l))&&tf(a,l),i=i.createElement("link"),Fe(i);var r=i;r._p=new Promise(function(o,u){r.onload=o,r.onerror=u}),Ze(i,"link",a),n.instance=i}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=mu.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var hs=0;function Nw(e,t){return e.stylesheets&&e.count===0&&Po(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&Po(e,e.stylesheets),e.unsuspend){var i=e.unsuspend;e.unsuspend=null,i()}},6e4+t);0<e.imgBytes&&hs===0&&(hs=62500*fw());var l=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Po(e,e.stylesheets),e.unsuspend)){var i=e.unsuspend;e.unsuspend=null,i()}},(e.imgBytes>hs?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(l)}}:null}function mu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Po(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var hu=null;function Po(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,hu=new Map,t.forEach(Ow,e),hu=null,mu.call(e))}function Ow(e,t){if(!(t.state.loading&4)){var n=hu.get(e);if(n)var a=n.get(null);else{n=new Map,hu.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i<l.length;i++){var r=l[i];(r.nodeName==="LINK"||r.getAttribute("media")!=="not all")&&(n.set(r.dataset.precedence,r),a=r)}a&&n.set(null,a)}l=t.instance,r=l.getAttribute("data-precedence"),i=n.get(r)||a,i===a&&n.set(null,l),n.set(r,l),this.count++,a=mu.bind(this),l.addEventListener("load",a),l.addEventListener("error",a),i?i.parentNode.insertBefore(l,i.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(l,e.firstChild)),t.state.loading|=4}}var mr={$$typeof:Dn,Provider:null,Consumer:null,_currentValue:ka,_currentValue2:ka,_threadCount:0};function kw(e,t,n,a,l,i,r,o,u){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Pc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Pc(0),this.hiddenUpdates=Pc(null),this.identifierPrefix=a,this.onUncaughtError=l,this.onCaughtError=i,this.onRecoverableError=r,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=u,this.incompleteTransitions=new Map}function Up(e,t,n,a,l,i,r,o,u,c,s,f){return e=new kw(e,t,n,r,u,c,s,f,o),t=1,i===!0&&(t|=24),i=Ct(3,null,null,t),e.current=i,i.stateNode=e,t=xd(),t.refCount++,e.pooledCache=t,t.refCount++,i.memoizedState={element:a,isDehydrated:n,cache:t},Bd(i),e}function Gp(e){return e?(e=Ml,e):Ml}function qp(e,t,n,a,l,i){l=Gp(l),a.context===null?a.context=l:a.pendingContext=l,a=ia(t),a.payload={element:n},i=i===void 0?null:i,i!==null&&(a.callback=i),n=ra(e,a,t),n!==null&&(yt(n,e,t),Ki(n,e,t))}function $m(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function af(e,t){$m(e,t),(e=e.alternate)&&$m(e,t)}function Pp(e){if(e.tag===13||e.tag===31){var t=Qa(e,67108864);t!==null&&yt(t,e,67108864),af(e,67108864)}}function eh(e){if(e.tag===13||e.tag===31){var t=xt();t=md(t);var n=Qa(e,t);n!==null&&yt(n,e,t),af(e,t)}}var yu=!0;function Lw(e,t,n,a){var l=k.T;k.T=null;var i=Z.p;try{Z.p=2,lf(e,t,n,a)}finally{Z.p=i,k.T=l}}function zw(e,t,n,a){var l=k.T;k.T=null;var i=Z.p;try{Z.p=8,lf(e,t,n,a)}finally{Z.p=i,k.T=l}}function lf(e,t,n,a){if(yu){var l=cd(a);if(l===null)gs(e,t,a,pu,n),th(e,a);else if(Uw(l,e,t,n,a))a.stopPropagation();else if(th(e,a),t&4&&-1<Hw.indexOf(e)){for(;l!==null;){var i=Jl(l);if(i!==null)switch(i.tag){case 3:if(i=i.stateNode,i.current.memoizedState.isDehydrated){var r=Ba(i.pendingLanes);if(r!==0){var o=i;for(o.pendingLanes|=2,o.entangledLanes|=2;r;){var u=1<<31-Dt(r);o.entanglements[1]|=u,r&=~u}gn(i),(K&6)===0&&(ru=Tt()+500,Er(0,!1))}}break;case 31:case 13:o=Qa(i,2),o!==null&&yt(o,i,2),_u(),af(i,2)}if(i=cd(a),i===null&&gs(e,t,a,pu,n),i===l)break;l=i}l!==null&&a.stopPropagation()}else gs(e,t,a,null,n)}}function cd(e){return e=vd(e),rf(e)}var pu=null;function rf(e){if(pu=null,e=Cl(e),e!==null){var t=pr(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=oh(t),e!==null)return e;e=null}else if(n===31){if(e=uh(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return pu=e,null}function Fp(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Rb()){case fh:return 2;case gh:return 8;case Xo:case Tb:return 32;case mh:return 268435456;default:return 32}default:return 32}}var sd=!1,ca=null,sa=null,da=null,hr=new Map,yr=new Map,In=[],Hw="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function th(e,t){switch(e){case"focusin":case"focusout":ca=null;break;case"dragenter":case"dragleave":sa=null;break;case"mouseover":case"mouseout":da=null;break;case"pointerover":case"pointerout":hr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":yr.delete(t.pointerId)}}function Hi(e,t,n,a,l,i){return e===null||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:i,targetContainers:[l]},t!==null&&(t=Jl(t),t!==null&&Pp(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,l!==null&&t.indexOf(l)===-1&&t.push(l),e)}function Uw(e,t,n,a,l){switch(t){case"focusin":return ca=Hi(ca,e,t,n,a,l),!0;case"dragenter":return sa=Hi(sa,e,t,n,a,l),!0;case"mouseover":return da=Hi(da,e,t,n,a,l),!0;case"pointerover":var i=l.pointerId;return hr.set(i,Hi(hr.get(i)||null,e,t,n,a,l)),!0;case"gotpointercapture":return i=l.pointerId,yr.set(i,Hi(yr.get(i)||null,e,t,n,a,l)),!0}return!1}function jp(e){var t=Cl(e.target);if(t!==null){var n=pr(t);if(n!==null){if(t=n.tag,t===13){if(t=oh(n),t!==null){e.blockedOn=t,Ug(e.priority,function(){eh(n)});return}}else if(t===31){if(t=uh(n),t!==null){e.blockedOn=t,Ug(e.priority,function(){eh(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Fo(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=cd(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);xs=a,n.target.dispatchEvent(a),xs=null}else return t=Jl(n),t!==null&&Pp(t),e.blockedOn=n,!1;t.shift()}return!0}function nh(e,t,n){Fo(e)&&n.delete(t)}function Gw(){sd=!1,ca!==null&&Fo(ca)&&(ca=null),sa!==null&&Fo(sa)&&(sa=null),da!==null&&Fo(da)&&(da=null),hr.forEach(nh),yr.forEach(nh)}function Eo(e,t){e.blockedOn===t&&(e.blockedOn=null,sd||(sd=!0,Ue.unstable_scheduleCallback(Ue.unstable_NormalPriority,Gw)))}var Do=null;function ah(e){Do!==e&&(Do=e,Ue.unstable_scheduleCallback(Ue.unstable_NormalPriority,function(){Do===e&&(Do=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],l=e[t+2];if(typeof a!="function"){if(rf(a||n)===null)continue;break}var i=Jl(n);i!==null&&(e.splice(t,3),t-=3,Ys(i,{pending:!0,data:l,method:n.method,action:a},a,l))}}))}function Wl(e){function t(u){return Eo(u,e)}ca!==null&&Eo(ca,e),sa!==null&&Eo(sa,e),da!==null&&Eo(da,e),hr.forEach(t),yr.forEach(t);for(var n=0;n<In.length;n++){var a=In[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<In.length&&(n=In[0],n.blockedOn===null);)jp(n),n.blockedOn===null&&In.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var l=n[a],i=n[a+1],r=l[pt]||null;if(typeof i=="function")r||ah(n);else if(r){var o=null;if(i&&i.hasAttribute("formAction")){if(l=i,r=i[pt]||null)o=r.formAction;else if(rf(l)!==null)continue}else o=r.action;typeof o=="function"?n[a+1]=o:(n.splice(a,3),a-=3),ah(n)}}}function Yp(){function e(i){i.canIntercept&&i.info==="react-transition"&&i.intercept({handler:function(){return new Promise(function(r){return l=r})},focusReset:"manual",scroll:"manual"})}function t(){l!==null&&(l(),l=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var i=navigation.currentEntry;i&&i.url!=null&&navigation.navigate(i.url,{state:i.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,l=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),l!==null&&(l(),l=null)}}}function of(e){this._internalRoot=e}Ou.prototype.render=of.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(w(409));var n=t.current,a=xt();qp(n,a,e,t,null,null)};Ou.prototype.unmount=of.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;qp(e.current,2,null,e,null,null),_u(),t[Il]=null}};function Ou(e){this._internalRoot=e}Ou.prototype.unstable_scheduleHydration=function(e){if(e){var t=bh();e={blockedOn:null,target:e,priority:t};for(var n=0;n<In.length&&t!==0&&t<In[n].priority;n++);In.splice(n,0,e),n===0&&jp(e)}};var lh=ih.version;if(lh!=="19.2.8")throw Error(w(527,lh,"19.2.8"));Z.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(w(188)):(e=Object.keys(e).join(","),Error(w(268,e)));return e=pb(t),e=e!==null?ch(e):null,e=e===null?null:e.stateNode,e};var qw={bundleType:0,version:"19.2.8",rendererPackageName:"react-dom",currentDispatcherRef:k,reconcilerVersion:"19.2.8"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Ui=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Ui.isDisabled&&Ui.supportsFiber))try{vr=Ui.inject(qw),Et=Ui}catch{}var Ui;ku.createRoot=function(e,t){if(!rh(e))throw Error(w(299));var n=!1,a="",l=Ly,i=zy,r=Hy;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(l=t.onUncaughtError),t.onCaughtError!==void 0&&(i=t.onCaughtError),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=Up(e,1,!1,null,null,n,a,null,l,i,r,Yp),e[Il]=t.current,ef(e),new of(t)};ku.hydrateRoot=function(e,t,n){if(!rh(e))throw Error(w(299));var a=!1,l="",i=Ly,r=zy,o=Hy,u=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(i=n.onUncaughtError),n.onCaughtError!==void 0&&(r=n.onCaughtError),n.onRecoverableError!==void 0&&(o=n.onRecoverableError),n.formState!==void 0&&(u=n.formState)),t=Up(e,1,!0,t,n??null,a,l,u,i,r,o,Yp),t.context=Gp(null),n=t.current,a=xt(),a=md(a),l=ia(a),l.callback=null,ra(n,l,a),n=a,t.current.lanes=n,Ar(t,n),gn(t),e[Il]=t.current,ef(e),new Ou(t)};ku.version="19.2.8"});var Kp=rn((GS,Qp)=>{"use strict";function Xp(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Xp)}catch(e){console.error(e)}}Xp(),Qp.exports=Vp()});var Wp=rn(Lu=>{"use strict";var Pw=Symbol.for("react.transitional.element"),Fw=Symbol.for("react.fragment");function Zp(e,t,n){var a=null;if(n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),"key"in t){n={};for(var l in t)l!=="key"&&(n[l]=t[l])}else n=t;return t=n.ref,{$$typeof:Pw,type:e,key:a,ref:t!==void 0?t:null,props:n}}Lu.Fragment=Fw;Lu.jsx=Zp;Lu.jsxs=Zp});var O=rn((PS,Ip)=>{"use strict";Ip.exports=Wp()});var kt=B(dt(),1),l1=B(Kp(),1);var Yv=B(dt(),1);var Gn=B(O(),1);function jw(e){return{under50:"Under $50",over50:"Over $50",over30:"Over $30",over500:"Over $500","50_100":"$50 - $100","100_200":"$100 - $200","200_500":"$200 - $500"}[e]||e}function Jp({activeDealTag:e,activeFreeformTags:t,airedaleTags:n,freeformTags:a,discountAmount:l,onBrandSelect:i,onBrandToggle:r,onDiscountAmountChange:o,onPriceRangeChange:u,onTagClear:c,onFreeformTagClear:s,onFreeformTagToggle:f,priceRange:d,selectedBrands:m}){let v=m.map(b=>({type:"brand",value:b,label:b}));if(e){let b=n.find(h=>h.startsWith(e+":::")||h===e);v.push({type:"category",value:e,label:b?b.split(":::")[1]||b.split(":::")[0]:e})}if(t.forEach(b=>{let h=a.find(g=>g.handle===b);v.push({type:"freeform-tag",value:b,label:h?.label||b})}),d&&d!=="all"&&v.push({type:"price",value:d,label:jw(d)}),l&&l!=="0"&&l!=="all"&&v.push({type:"discount",value:l,label:`Min ${l}% off`}),v.length===0)return null;let A=b=>{b.type==="brand"&&r?.(b.value),b.type==="category"&&c(),b.type==="freeform-tag"&&f(b.value),b.type==="discount"&&o?.("0"),b.type==="price"&&u?.("all")};return(0,Gn.jsxs)("div",{className:"tg-df-active-badges-row",style:{display:"flex",flexWrap:"wrap",gap:"4px",alignItems:"center",marginTop:"10px",marginBottom:"16px"},children:[v.map(b=>(0,Gn.jsxs)("span",{className:"tg-df-active-badge",children:[b.label,(0,Gn.jsx)("button",{type:"button",className:"tg-df-badge-remove","aria-label":`Remove ${b.label}`,onClick:()=>A(b),children:(0,Gn.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Gn.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,Gn.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},b.type+"-"+b.value)),v.length>1&&(0,Gn.jsx)("button",{type:"button",className:"tg-df-badge-clear-all",onClick:()=>{i?.([]),c(),s(),o?.("0"),u?.("all")},children:"Clear all"})]})}function $p(e){if(!e)return null;let t=e.documentname||e.title||"";!t&&e.documentnametext&&(t=Array.isArray(e.documentnametext)?e.documentnametext[0]:e.documentnametext),!t&&e.articlename&&(t=Array.isArray(e.articlename)?e.articlename[0]:e.articlename),!t&&e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&(t=e.articlesocialtitle[0]);let n=e.strapline||e.articlestrapline||e.subtitle||e.dek||"";!n&&e.image_thumbnail&&e.image_thumbnail.dek&&(n=e.image_thumbnail.dek),Array.isArray(n)&&(n=n[0]||"");let a="";if(e.articlepage)try{let l=e.articlepage;if(typeof l=="string")try{l=JSON.parse(l)}catch{}if(Array.isArray(l)&&l.length>0){let i=l[0];if(typeof i=="string")try{i=JSON.parse(i)}catch{}if(Array.isArray(i)){let r=[];for(let o of i){if(o.type==="featured-product")break;if(o.type==="text"&&o.data)Array.isArray(o.data.paragraphs)?o.data.paragraphs.forEach(u=>{u&&r.push(u.startsWith("<")?u:`<p>${u}<\/p>`)}):typeof o.data.text=="string"&&o.data.text&&r.push(o.data.text.startsWith("<")?o.data.text:`<p>${o.data.text}<\/p>`);else if(o.type==="section"&&o.data){let u=o.data.text||o.data.heading||o.data.title||"";u&&r.push(`<div class="tg-df-article-section-banner"><span>${u}<\/span><\/div>`)}}r.length>0&&(a=r.join(""))}}}catch(l){console.error("Error parsing articlepage",l)}return!a&&e.content?a=typeof e.content=="string"?e.content:"":!a&&e.intro?a=typeof e.intro=="string"?e.intro:"":!a&&e.paragraphs&&(a=(Array.isArray(e.paragraphs)?e.paragraphs:[e.paragraphs]).map(i=>`<p>${i}<\/p>`).join("")),{headline:t,strapline:n,contentHtml:a}}var li=B(O(),1);function e0({articles:e,selectedArticleId:t}){if(!t)return null;let n=e.find(l=>l.id===t);if(!n)return null;let a=$p(n);return!a||!a.headline&&!a.strapline&&!a.contentHtml?null:(0,li.jsxs)("div",{className:"tg-df-article-intro-container",id:"tg-df-article-intro",style:{margin:"0 auto 32px",width:"100%",maxWidth:"800px",textAlign:"left",padding:"0 16px"},children:[a.headline&&(0,li.jsx)("h2",{className:"tg-df-article-headline",id:"tg-df-article-headline",style:{fontSize:"1.75rem",fontWeight:800,color:"#0f172a",marginBottom:"1rem",lineHeight:1.25},children:a.headline}),a.strapline&&(0,li.jsx)("p",{className:"tg-df-article-strapline",id:"tg-df-article-strapline",style:{fontSize:"1.125rem",fontWeight:600,color:"#334155",marginBottom:"1.25rem",lineHeight:1.4},children:a.strapline}),a.contentHtml&&(0,li.jsx)("div",{className:"tg-df-article-content",id:"tg-df-article-content",dangerouslySetInnerHTML:{__html:a.contentHtml}})]})}var qn=B(O(),1);function Yw({articles:e,authorHandle:t,authorName:n}){let a=n||e.length>0&&(e[0].articleauthortext?.[0]||e[0].articleauthor?.[0])||"Author";(t==="all-authors"||n==="all-authors"||n==="All authors")&&(a="All authors");let l=a.trim().split(" ")[0]||"Author";return a==="All authors"&&(l="All authors"),`Shop all ${l==="All authors"?"authors'":l.endsWith("'s")||l.endsWith("\u2019s")?l:`${l}'s`} collections`}function Vw(e){let t=[];return e.documentnametext&&t.push(e.documentnametext),e.documentname&&t.push(e.documentname),e.articlename&&t.push(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),e.articlesocialtitle&&Array.isArray(e.articlesocialtitle)&&t.push(...e.articlesocialtitle),t.length>0?t.reduce((n,a)=>a&&a.length<n.length?a:n,t[0]):"Article"}function t0({articles:e,authorHandle:t,authorName:n,onChange:a,selectedArticleId:l,shortenedHeadlines:i}){return(0,qn.jsx)("div",{className:"tg-df-top-bar",id:"tg-df-top-bar",style:{position:"relative",zIndex:100,margin:"0 auto 20px",width:"100%",display:"flex",justifyContent:"center"},children:(0,qn.jsxs)("div",{className:"tg-df-sort-wrapper",style:{width:"auto",maxWidth:"320px",display:"inline-flex",position:"relative"},children:[(0,qn.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",style:{position:"absolute",left:"14px",top:"50%",transform:"translateY(-50%)",width:"14px",height:"14px",color:"var(--tg-df-text-muted)",pointerEvents:"none",zIndex:2},children:(0,qn.jsx)("path",{d:"M12 2l-10 4.5 10 4.5 10-4.5-10-4.5zm0 6.5l-8-3.6 8-3.6 8 3.6-8 3.6zm-10 6l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5zm0 5l10 4.5 10-4.5v-2.5l-10 4.5-10-4.5v2.5z"})}),(0,qn.jsxs)("select",{className:"tg-df-filter-select tg-df-article-select",style:{width:"100%",maxWidth:"320px",padding:"10px 36px 10px 38px",fontSize:"14px",fontWeight:500,borderRadius:"100px",border:"1px solid var(--tg-df-border)",color:"var(--tg-df-text)",backgroundColor:"var(--tg-df-bg-secondary)",appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 14px center",textAlign:"left",textAlignLast:"left",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",cursor:"pointer"},value:l||"",onChange:r=>a(r.target.value),children:[(0,qn.jsx)("option",{value:"",style:{textAlign:"left"},children:Yw({articles:e,authorHandle:t,authorName:n})}),e.map(r=>{let o=i?.[r.id]||Vw(r);return o&&o.length>38&&(o=o.substring(0,36)+"\u2026"),(0,qn.jsx)("option",{value:r.id,style:{textAlign:"left"},children:o},r.id)})]})]})})}var h0=B(dt(),1);function n0(e,t=new Date){if(!e)return"";let n=new Date(e),a=Math.floor((t.getTime()-n.getTime())/1e3);if(a<60)return"Just now";let l=Math.floor(a/60);if(l<60)return`${l} min${l>1?"s":""} ago`;let i=Math.floor(l/60);if(i<24)return`${i} hr${i>1?"s":""} ago`;let r=Math.floor(i/24);if(r<30)return`${r} day${r>1?"s":""} ago`;let o=Math.floor(r/30);if(o<12)return`${o} mo${o>1?"s":""} ago`;let u=Math.floor(r/365);return`${u} yr${u>1?"s":""} ago`}function Xw(e){return e.replace(/<\/p\s*>/gi," ").replace(/<p[^>]*>/gi," ").replace(/<br\s*\/?>/gi," ").replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}function Mr(e,t,n){let a="";return n==="short"?a=e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"":a=e.articleauthorlongbio&&e.articleauthorlongbio[t]&&e.articleauthorlongbio[t]!=="null"?e.articleauthorlongbio[t]:e.articleauthorbio&&e.articleauthorbio[t]&&e.articleauthorbio[t]!=="null"?e.articleauthorbio[t]:"",a?Xw(a):""}function a0(e,t){return e.articleauthorrole&&e.articleauthorrole[t]&&e.articleauthorrole[t]!=="null"?e.articleauthorrole[t]:""}function l0(e,t){return e.articleauthormedia&&e.articleauthormedia[t]?e.articleauthormedia[t]:""}function ii(e){if(typeof e!="string"||!e.trim())return"";try{let t=new URL(e);if(t.hostname.toLowerCase()!=="cdn.mos.cms.futurecdn.net")return e;let n=/\.(?:jpe?g|png|webp)$/i;return!n.test(t.pathname)||/-\d+-\d+\.(?:jpe?g|png|webp)$/i.test(t.pathname)?e:(t.pathname=t.pathname.replace(n,"-480-80$&"),t.toString())}catch{return e}}function zu(e,t=0){if(!e||!e.articleauthorsocialnetworks)return[];let n=e.articleauthorsocialnetworks[t];if(n||(n=e.articleauthorsocialnetworks[0]),!n)return[];let a=null;if(typeof n=="string")try{a=JSON.parse(n)}catch{try{a=JSON.parse(n.replace(/\\"/g,'"'))}catch{}}else typeof n=="object"&&n!==null&&(a=n);if(!a||typeof a!="object")return[];let l=[];for(let[i,r]of Object.entries(a)){if(!r)continue;let o="",u="";if(typeof r=="string"?o=r:typeof r=="object"&&r!==null&&(o=r.url||r.address||r.link||"",u=r.address||""),!o&&!u)continue;let c=i.toLowerCase().trim(),s=o||u;c==="email"?s.startsWith("mailto:")||(s=s.includes("@")?`mailto:${s}`:`mailto:${s}`):!s.startsWith("http://")&&!s.startsWith("https://")&&!s.startsWith("//")&&(s=`https://${s}`);let f=c.charAt(0).toUpperCase()+c.slice(1);c==="linkedin"?f="LinkedIn":c==="youtube"?f="YouTube":c==="tiktok"?f="TikTok":c==="twitch"?f="Twitch":c==="steam"?f="Steam":c==="github"?f="GitHub":c==="rss"?f="RSS":(c==="x"||c==="twitter")&&(f="X (Twitter)"),l.push({key:c,href:s,label:f})}return l}function ne(e){if(!e)return"";let t=String(e);for(let n=0;n<3;n+=1){let a=t.replace(/&/gi,"&").replace(/£/g,"\xA3").replace(/£/gi,"\xA3").replace(/$/g,"$").replace(/&dollar;/gi,"$").replace(/€/g,"\u20AC").replace(/€/gi,"\u20AC").replace(/&#(\d+);/g,(l,i)=>String.fromCharCode(Number(i))).replace(/&#x([0-9a-f]+);/gi,(l,i)=>String.fromCharCode(parseInt(i,16)));if(a===t)break;t=a}return t}var Te=B(O(),1);function uf({authorUrl:e,deal:t}){if(!t.authorName)return null;let n=ne(String(t.authorName)),a=t.authorRole&&!["null","nul","undefined"].includes(String(t.authorRole).toLowerCase())?` \u2022 ${ne(String(t.authorRole))}`:"";return(0,Te.jsx)("div",{className:"tg-df-author-line-desktop",style:{padding:"0 0 12px 0"},children:(0,Te.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.authorImage&&(0,Te.jsx)("img",{src:ii(t.authorImage),alt:n,className:"tg-df-author-img",width:"36",height:"36",style:{borderRadius:"50%",objectFit:"cover",flexShrink:0,aspectRatio:"1 / 1",minWidth:"36px",minHeight:"36px"}}),(0,Te.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,Te.jsx)("div",{style:{fontSize:"10px",color:"var(--tg-df-text-muted)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"2px",fontWeight:600},children:t.isReviewProduct?(0,Te.jsx)(Te.Fragment,{children:"Product tested by:"}):t.isBuyingGuideProduct?(0,Te.jsx)(Te.Fragment,{children:"Expert review by:"}):t.isFeatured?(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)("span",{style:{color:"#FF6600"},children:"Top product"})," ","recommended by:"]}):(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)("span",{style:{color:"#FF6600"},children:t.merchant})," ","deal recommended by:"]})}),(0,Te.jsxs)("div",{style:{fontSize:"11px",color:"var(--tg-df-text)",lineHeight:1.2},children:[(0,Te.jsx)("strong",{children:(0,Te.jsx)("a",{href:e,target:"_blank",rel:"noopener",style:{textDecoration:"none",color:"inherit",borderBottom:"1px dotted var(--tg-df-text-muted)"},children:n})}),a,t.modifiedDate?(0,Te.jsxs)("span",{style:{color:"var(--tg-df-text-muted)"},children:[" ","\u2022 ",n0(t.modifiedDate)]}):""]})]})]})})}var J=B(O(),1);function i0({authorUrl:e,deal:t,msrpFormatted:n,sourceArticleUrl:a}){let l=ne(String(t.merchant||"")),i=ne(String(t.currency||""));if(t.isBuyingGuideProduct||t.isReviewProduct){let r=!!t.hasCommerceOffer,o=r&&!t.isCheckPrice,u=!!t.hawkPricePending,c=!!t.isReviewProduct&&!u&&!r;return(0,J.jsxs)("div",{className:"tg-df-card-footer",children:[u?(0,J.jsx)("div",{className:"tg-df-card-price-group","aria-live":"polite",children:(0,J.jsx)("span",{className:"tg-df-card-price",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"Checking live price\u2026"})}):o?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,J.jsx)("span",{className:"tg-df-card-merchant-pill",title:l,children:l})}),(0,J.jsxs)("div",{className:"tg-df-card-price-group",children:[(0,J.jsxs)("span",{className:"tg-df-card-price",children:[i,(0,J.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,J.jsx)("span",{className:"tg-df-card-msrp",children:n})]})]}):c?(0,J.jsx)("div",{className:"tg-df-card-price-group",children:(0,J.jsx)("span",{className:"tg-df-card-price tg-df-card-price--unavailable",style:{color:"var(--tg-df-text-muted)",fontSize:"13px",fontWeight:500},children:"No retail listing found"})}):null,(0,J.jsx)(uf,{authorUrl:e,deal:t}),(0,J.jsx)("a",{href:r?t.url:a,"data-fcaw-affiliate-link":r?"":void 0,target:"_blank",rel:r?"sponsored nofollow noopener":"noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},children:r?o?"VIEW DEAL":"CHECK PRICE":"READ REVIEW"})]})}return(0,J.jsxs)("div",{className:"tg-df-card-footer",children:[!(t.authorName&&!t.isFeatured)&&(0,J.jsx)("div",{className:"tg-df-card-merchant-wrapper",children:(0,J.jsx)("span",{className:"tg-df-card-merchant-pill",title:l,children:l})}),(0,J.jsx)("div",{className:"tg-df-card-price-group",children:t.isCheckPrice?(0,J.jsx)("span",{className:"tg-df-card-price",style:{fontSize:"15px",fontWeight:500,fontStyle:"italic"},children:"See price at retailer"}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)("span",{className:"tg-df-card-price",children:[i,(0,J.jsx)("span",{children:t.rawPrice})]}),t.rawMsrp>t.rawPrice&&(0,J.jsx)("span",{className:"tg-df-card-msrp",children:n})]})}),(0,J.jsx)(uf,{authorUrl:e,deal:t}),(0,J.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":"",target:"_blank",rel:"sponsored nofollow noopener",className:"tg-df-card-cta hawk-affiliate-link-deal-button",style:{textDecoration:"none"},"data-model-id":t.modelId||void 0,"data-product-key":t.productKey||void 0,"data-merchant-id":t.merchantId||void 0,children:t.isCheckPrice?"CHECK PRICE":t.isFeatured?"SHOP NOW":"VIEW DEAL"})]})}var We=B(O(),1);function r0({couponStatus:e,deal:t,onOpenVouchers:n}){let a=!!t.hasCommerceOffer;return(0,We.jsxs)("div",{className:"tg-df-card-image-box",children:[t.buyingGuideBadge?(0,We.jsx)("span",{className:"tg-df-card-discount-badge tg-df-buying-guide-badge",children:t.buyingGuideBadge}):t.savingLabel&&!t.isCheckPrice?(0,We.jsx)("span",{className:"tg-df-card-discount-badge",children:ne(t.savingLabel)}):null,(0,We.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":a?"":void 0,className:a?"hawk-affiliate-link-deal-widget":void 0,target:"_blank",rel:a?"sponsored nofollow noopener":"noopener",style:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"100%"},children:(0,We.jsx)("img",{src:t.image||void 0,alt:ne(String(t.title||"")),className:"tg-df-card-image",loading:"lazy",onError:l=>{t.fallbackImage&&!l.currentTarget.dataset.fb?(l.currentTarget.dataset.fb="1",l.currentTarget.src=t.fallbackImage):l.currentTarget.style.opacity="0"}})}),(0,We.jsxs)("div",{className:"tg-df-card-badges",children:[t.isPrime&&(0,We.jsxs)("span",{className:"tg-df-tag tg-df-tag-prime",children:[(0,We.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",children:(0,We.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})})," ","Prime"]}),!t.merchant?.toLowerCase().includes("amazon")&&(e==="loading"||e==="has")&&(0,We.jsx)("div",{className:"tg-df-coupon-wrapper",style:{display:"inline-flex",alignItems:"center"},children:e==="loading"?(0,We.jsx)("div",{className:"tg-df-coupon-spinner"}):(0,We.jsxs)("button",{type:"button",className:"tg-df-tag tg-df-tag-coupons",onClick:l=>{l.preventDefault(),n(t.merchant)},children:[(0,We.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,We.jsx)("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),(0,We.jsx)("line",{x1:"7",y1:"7",x2:"7.01",y2:"7"})]})," ","Coupons"]})})]})]})}var ot=B(O(),1);function o0({label:e="Tom's Guide:",starRating:t,color:n="#1f69ff"}){if(!t||t<=0)return null;let a=Math.floor(t),l=t-a>=.5?1:0,i=Math.max(0,5-a-l),r=[];for(let o=0;o<a;o++)r.push((0,ot.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:n,stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ot.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`f${o}`));l&&r.push((0,ot.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"url(#halfGrad)",stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,ot.jsx)("defs",{children:(0,ot.jsxs)("linearGradient",{id:"halfGrad",x1:"0",x2:"1",y1:"0",y2:"0",children:[(0,ot.jsx)("stop",{offset:"50%",stopColor:n}),(0,ot.jsx)("stop",{offset:"50%",stopColor:"transparent"})]})}),(0,ot.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})]},"h"));for(let o=0;o<i;o++)r.push((0,ot.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:n,opacity:"0.35",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,ot.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26"})},`e${o}`));return(0,ot.jsxs)("div",{className:"tg-df-card-stars",style:{display:"flex",alignItems:"center",marginBottom:"8px",fontSize:"13px",fontWeight:600,color:"var(--tg-df-text-muted)"},children:[e&&(0,ot.jsx)("span",{style:{marginRight:"6px"},children:e}),(0,ot.jsx)("div",{style:{display:"flex",gap:"2px"},children:r})]})}var Bt=B(O(),1);function u0({heading:e,items:t}){return t.length===0?null:(0,Bt.jsxs)("div",{style:{marginBottom:"10px"},children:[(0,Bt.jsx)("strong",{style:{display:"block",fontSize:"12px",marginBottom:"3px"},children:e}),(0,Bt.jsx)("ul",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:0,paddingLeft:"18px"},children:t.map(n=>{let a=ne(String(n));return(0,Bt.jsx)("li",{children:a},n)})})]})}function c0({cons:e=[],expanded:t,fullReviewUrl:n,onToggle:a,pros:l=[],subtitle:i="",truncateSubtitle:r=!1}){let o=l.length>0||e.length>0,u=ne(i);return!u&&!o?null:(0,Bt.jsxs)("div",{style:{marginBottom:"12px"},children:[u&&(0,Bt.jsx)("p",{style:{color:"var(--tg-df-text-muted)",fontSize:"13px",lineHeight:1.4,margin:"0 0 8px",display:!t&&r?"-webkit-box":"block",WebkitLineClamp:!t&&r?3:void 0,WebkitBoxOrient:!t&&r?"vertical":void 0,overflow:!t&&r?"hidden":void 0},children:u}),t&&o&&(0,Bt.jsxs)("div",{children:[(0,Bt.jsx)(u0,{heading:"Pros",items:l}),(0,Bt.jsx)(u0,{heading:"Cons",items:e})]}),t&&n&&(0,Bt.jsx)("a",{href:n,target:"_blank",rel:"noopener",className:"tg-df-review-full-link",style:{color:"var(--tg-df-blue)",display:"inline-block",fontSize:"12px",fontWeight:700,marginBottom:"8px",textDecoration:"underline"},children:"Read our full review"}),(o||r)&&(0,Bt.jsx)("button",{type:"button",onClick:c=>{c.preventDefault(),c.stopPropagation(),a()},style:{appearance:"none",background:"transparent",border:"none",color:"#000000",cursor:"pointer",display:"block",fontFamily:"inherit",fontSize:"11px",fontWeight:700,padding:0,textTransform:"uppercase"},children:t?"LESS":"READ MORE"})]})}var ri=B(dt(),1);var _r=B(O(),1);function s0({text:e,expanded:t,onToggle:n}){let[a,l]=(0,ri.useState)(!1),i=(0,ri.useRef)(null),r=ne(e);return(0,ri.useEffect)(()=>{i.current&&l(i.current.scrollHeight>i.current.clientHeight||i.current.scrollHeight>60)},[r]),r?(0,_r.jsxs)("div",{style:{marginBottom:"12px",position:"relative"},children:[(0,_r.jsx)("p",{ref:i,style:{fontSize:"13px",color:"var(--tg-df-text-muted)",marginBottom:"0",lineHeight:"1.4",display:t?"inline":"-webkit-box",WebkitLineClamp:t?"unset":3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:r}),a&&(0,_r.jsx)("button",{type:"button",onClick:o=>{o.preventDefault(),o.stopPropagation(),n()},style:{display:"block",appearance:"none",border:"none",color:"#000000",fontSize:"11px",fontWeight:700,textTransform:"uppercase",cursor:"pointer",fontFamily:"inherit",position:t?"static":"absolute",bottom:"2px",right:0,background:t?"transparent":"linear-gradient(to right, transparent, #fff 20%, #fff)",padding:t?"0":"0 0 0 16px"},children:t?"LESS":"READ MORE"})]}):null}var d0={pcgamer:"#DC191B",space:"#2E4A7F",tomsguide:"#1F69FF",techradar:"#E40784",golfmonthly:"#FFFFFF",androidcentral:"#1CCC3E",cinemablend:"#FFC033",creativebloq:"#DC361A",cyclingnews:"#371B51",cyclingweekly:"#AE1305",decanter:"#1B1B1B",digitalcameraworld:"#CAEBF2",fitandwell:"#BED100",fourfourtwo:"#AE1006",gamesradar:"#DC361A",guitarplayer:"#FFFFFF",guitarworld:"#DC1F26",homesandgardens:"#185A7D",idealhome:"#CAEBF2",imore:"#FFD600",livescience:"#023953",livingetc:"#FFFFFF",loudersound:"#DC0F17",marieclaireus:"#FFFFFF",marieclaireuk:"#FFFFFF",musicradar:"#006EA9",shortlist:"#2853E0",t3:"#DF0A14",theweek:"#DF0A14",theweekjuniorus:"#10A0B0",tomshardware:"#D8373B",wallpaper:"#FFFFFF",whathifi:"#E02928",whowhatwear:"#FFFFFF",windowscentral:"#CE0E5F",womanandhome:"#2F746E"},Br={tomsguide:"https://proof.vanilla.tools/media/images/brandLogos/tomsguide.png",techradar:"https://proof.vanilla.tools/media/images/brandLogos/techradar.png",tomshardware:"https://proof.vanilla.tools/media/images/brandLogos/tomshardware.png",pcgamer:"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png",gamesradar:"https://proof.vanilla.tools/media/images/brandLogos/gamesradar.png",creativebloq:"https://proof.vanilla.tools/media/images/brandLogos/creativebloq.png",space:"https://proof.vanilla.tools/media/images/brandLogos/space.png",livescience:"https://proof.vanilla.tools/media/images/brandLogos/livescience.png",cinemablend:"https://proof.vanilla.tools/media/images/brandLogos/cinemablend.png",marieclaireus:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireus.png",marieclaireuk:"https://proof.vanilla.tools/media/images/brandLogos/marieclaireuk.png",homesandgardens:"https://proof.vanilla.tools/media/images/brandLogos/homesandgardens.png",whowhatwear:"https://proof.vanilla.tools/media/images/brandLogos/whowhatwear.png",idealhome:"https://proof.vanilla.tools/media/images/brandLogos/idealhome.png",womanandhome:"https://proof.vanilla.tools/media/images/brandLogos/womanandhome.png",livingetc:"https://proof.vanilla.tools/media/images/brandLogos/livingetc.png",t3:"https://proof.vanilla.tools/media/images/brandLogos/t3.png",whathifi:"https://proof.vanilla.tools/media/images/brandLogos/whathifi.png",digitalcameraworld:"https://proof.vanilla.tools/media/images/brandLogos/digitalcameraworld.png",fitandwell:"https://proof.vanilla.tools/media/images/brandLogos/fitandwell.png",golfmonthly:"https://proof.vanilla.tools/media/images/brandLogos/golfmonthly.png",musicradar:"https://proof.vanilla.tools/media/images/brandLogos/musicradar.png",windowscentral:"https://proof.vanilla.tools/media/images/brandLogos/windowscentral.png",cyclingnews:"https://proof.vanilla.tools/media/images/brandLogos/cyclingnews.png",cyclingweekly:"https://proof.vanilla.tools/media/images/brandLogos/cyclingweekly.png",loudersound:"https://proof.vanilla.tools/media/images/brandLogos/loudersound.png",guitarworld:"https://proof.vanilla.tools/media/images/brandLogos/guitarworld.png",guitarplayer:"https://proof.vanilla.tools/media/images/brandLogos/guitarplayer.png",wallpaper:"https://proof.vanilla.tools/media/images/brandLogos/wallpaper.png",fourfourtwo:"https://proof.vanilla.tools/media/images/brandLogos/fourfourtwo.png",shortlist:"https://proof.vanilla.tools/media/images/brandLogos/shortlist.png",advnture:"https://proof.vanilla.tools/media/images/brandLogos/advnture.png",countrylife:"https://proof.vanilla.tools/media/images/brandLogos/countrylife.png",gardeningknowhow:"https://proof.vanilla.tools/media/images/brandLogos/gardeningknowhow.png",gnomesingardens:"https://proof.vanilla.tools/media/images/brandLogos/gnomesingardens.png",kiplinger:"https://proof.vanilla.tools/media/images/brandLogos/kiplinger.png",moneyweek:"https://proof.vanilla.tools/media/images/brandLogos/moneyweek.png",toptenreviews:"https://proof.vanilla.tools/media/images/brandLogos/toptenreviews.png"},Hu={tomsguide:"Tom's Guide",techradar:"TechRadar",tomshardware:"Tom's Hardware",pcgamer:"PC Gamer",gamesradar:"GamesRadar+",creativebloq:"Creative Bloq",space:"Space",livescience:"Live Science",cinemablend:"CinemaBlend",marieclaireus:"Marie Claire US",marieclaireuk:"Marie Claire UK",homesandgardens:"Homes & Gardens",whowhatwear:"Who What Wear",idealhome:"Ideal Home",womanandhome:"Woman & Home",livingetc:"Living Etc",t3:"T3",whathifi:"What Hi-Fi?",digitalcameraworld:"Digital Camera World",fitandwell:"Fit & Well",golfmonthly:"Golf Monthly",musicradar:"MusicRadar",androidcentral:"Android Central",imore:"iMore",windowscentral:"Windows Central",cyclingnews:"Cycling News",cyclingweekly:"Cycling Weekly",loudersound:"Louder Sound",guitarworld:"Guitar World",guitarplayer:"Guitar Player",theweek:"The Week",theweekjuniorus:"The Week Junior US",wallpaper:"Wallpaper",decanter:"Decanter",fourfourtwo:"FourFourTwo",shortlist:"ShortList",advnture:"Advnture",countrylife:"Country Life",gardeningknowhow:"Gardening Know How",gnomesingardens:"Gnomes in Gardens",kiplinger:"Kiplinger",moneyweek:"Money Week",toptenreviews:"Top 10 Reviews"},f0={pcgamer:[{key:"steam",href:"https://steamcommunity.com/groups/pcgamer",label:"PC Gamer on Steam"},{key:"x",href:"https://twitter.com/pcgamer",label:"PC Gamer on X"},{key:"facebook",href:"https://www.facebook.com/pcgamermagazine",label:"PC Gamer on Facebook"},{key:"instagram",href:"https://www.instagram.com/pcgamer_mag/?hl=en",label:"PC Gamer on Instagram"},{key:"youtube",href:"https://www.youtube.com/user/pcgamer",label:"PC Gamer on YouTube"},{key:"twitch",href:"https://www.twitch.tv/pcgamer",label:"PC Gamer on Twitch"},{key:"tiktok",href:"https://www.tiktok.com/@pcgamer_mag?lang=en",label:"PC Gamer on TikTok"}],homesandgardens:[{key:"instagram",href:"https://www.instagram.com/homesandgardensofficial",label:"Homes & Gardens on Instagram"},{key:"facebook",href:"https://www.facebook.com/homesandgardens/",label:"Homes & Gardens on Facebook"},{key:"x",href:"https://x.com/homesandgardens",label:"Homes & Gardens on X"},{key:"tiktok",href:"https://www.tiktok.com/@homesandgardensofficial",label:"Homes & Gardens on TikTok"},{key:"pinterest",href:"https://pinterest.com/homesgardensofficial/",label:"Homes & Gardens on Pinterest"}],whowhatwear:[{key:"x",href:"https://twitter.com/WhoWhatWear",label:"Who What Wear on X"},{key:"instagram",href:"https://www.instagram.com/whowhatwear/",label:"Who What Wear on Instagram"},{key:"facebook",href:"https://www.facebook.com/WhoWhatWear/",label:"Who What Wear on Facebook"},{key:"pinterest",href:"https://www.pinterest.co.uk/whowhatwearuk/",label:"Who What Wear on Pinterest"},{key:"tiktok",href:"https://www.tiktok.com/@whowhatwear.uk",label:"Who What Wear on TikTok"}]};var Nt=B(O(),1);function g0(e){return String(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").trim().toLowerCase()}function Qw(e){let t=ne(String(e.brand||"")).trim(),n=ne(String(e.productName||e.title||"")).trim(),a=g0(t),l=g0(n);return a.length>0&&l.startsWith(a)&&!/^[a-z0-9]/.test(l.slice(a.length))||!t?n:`${t} ${n}`.trim()}function m0({couponStatus:e,deal:t,editorMode:n,isDescriptionExpanded:a,isSelected:l,onDescriptionToggle:i,onOpenVouchers:r,onSelectionChange:o,website:u}){let c=ne(String(t.currency||"")),s=t.rawMsrp?c+t.rawMsrp:null,f=Qw(t),d=ne(String(t.title||"")),m=Hu[u||"tomsguide"]||u||"Tom's Guide",v=(u||"tomsguide").includes(".")?(u||"").startsWith("http")?u:`https://${u}`:`https://www.${u||"tomsguide"}.com`,A=(t.documentUrl||"").replace(/^\/+/,""),b=A.startsWith("http://")||A.startsWith("https://")?A:`${v}/${A}`,h=String(t.sourceArticleUrl||t.documentUrl||t.url||"").replace(/^\/+/,""),g=h.startsWith("http://")||h.startsWith("https://")?h:`${v}/${h}`,y=!!t.hasCommerceOffer;return(0,Nt.jsxs)("div",{className:"tg-df-card","data-brand":t.modelBrand||t.brand||void 0,"data-currency":t.isoCurrencyCode||c||void 0,"data-deal-id":t.externalProductId||t.id||void 0,"data-merchant":t.merchant||void 0,"data-merchant-id":t.merchantId||void 0,"data-model-id":t.modelId||void 0,"data-previous-price":t.rawMsrp||void 0,"data-price":t.rawPrice||void 0,"data-product-key":t.productKey||void 0,"data-product-name":t.productName||t.title||void 0,"data-review-product":t.isReviewProduct?"true":void 0,"data-source-article-url":t.isReviewProduct?g:void 0,children:[n&&(0,Nt.jsx)("input",{type:"checkbox",className:"tg-df-deal-checkbox",checked:l,onChange:p=>o(p.target.checked)}),(0,Nt.jsx)(r0,{couponStatus:e,deal:t,onOpenVouchers:r}),(0,Nt.jsxs)("div",{className:"tg-df-card-body",children:[(0,Nt.jsx)("h3",{className:"tg-df-card-title",title:d,children:(0,Nt.jsx)("a",{href:t.url,"data-fcaw-affiliate-link":y?"":void 0,className:y?"hawk-affiliate-link-container":void 0,target:"_blank",rel:y?"sponsored nofollow noopener":"noopener",style:{textDecoration:"none",color:"inherit"},children:(0,Nt.jsx)("strong",{children:f})})}),(0,Nt.jsx)(o0,{label:t.isBuyingGuideProduct?"":`${m} rating:`,starRating:t.starRating,color:t.isReviewProduct?"var(--tg-df-blue)":void 0}),t.isBuyingGuideProduct||t.isReviewProduct?(0,Nt.jsx)(c0,{cons:t.cons,expanded:a,fullReviewUrl:t.isReviewProduct&&h?g:void 0,onToggle:i,pros:t.pros,subtitle:t.isReviewProduct?t.description:t.subtitle,truncateSubtitle:t.isReviewProduct}):t.description?(0,Nt.jsx)(s0,{text:t.description,expanded:a,onToggle:i}):null,(0,Nt.jsx)(i0,{authorUrl:b,deal:t,msrpFormatted:s,sourceArticleUrl:g})]})]})}var ue=B(O(),1);function Kw(){return(0,ue.jsx)(ue.Fragment,{children:Array.from({length:6}).map((e,t)=>(0,ue.jsxs)("div",{className:"tg-df-card",children:[(0,ue.jsx)("div",{className:"tg-df-card-image-box tg-df-skeleton"}),(0,ue.jsxs)("div",{className:"tg-df-card-body",children:[(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title"}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short",style:{marginBottom:"24px"}}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text title",style:{width:"80%"}}),(0,ue.jsx)("div",{className:"tg-df-skeleton tg-df-skeleton-text short"}),(0,ue.jsx)("div",{className:"tg-df-card-cta tg-df-skeleton",style:{width:"100%",height:"40px",marginTop:"auto",border:"none"}})]})]},t))})}function Zw(e,t){return{"@context":"https://schema.org","@type":"ItemList",itemListElement:e.slice(0,t).map((n,a)=>{let l="USD";return n.currency==="\xA3"?l="GBP":n.currency==="\u20AC"?l="EUR":n.currency==="A$"?l="AUD":n.currency==="CA$"&&(l="CAD"),{"@type":"ListItem",position:a+1,item:{"@type":"Product",name:n.title,image:n.image||"",description:n.description||"",brand:{"@type":"Brand",name:n.brand||""},offers:{"@type":"Offer",priceCurrency:l,price:n.rawPrice||0,url:n.url||"",seller:{"@type":"Organization",name:n.merchant||""}}}}}).filter(n=>n.item.name)}}function y0({couponMap:e,deals:t,displayCount:n,editorMode:a,error:l,expandedDealIds:i,hasMore:r,loading:o,loadingMore:u,loadMoreStartCount:c,onDescriptionToggle:s,onLoadMore:f,onOpenVouchers:d,query:m,selectedDeals:v,setSelectedDeals:A,website:b}){let h=u&&c!=null?c:n,g=!u&&c!=null&&c<h?c:null,y=p=>p.map(C=>(0,ue.jsx)(h0.default.Fragment,{children:(0,ue.jsx)(m0,{couponStatus:e[C.merchant],deal:C,editorMode:a,isDescriptionExpanded:i.has(C.id),isSelected:v.has(C.id),onDescriptionToggle:()=>s(C.id),onOpenVouchers:d,onSelectionChange:R=>{let T=new Map(v);R?T.set(C.id,C):T.delete(C.id),A(T)},website:b})},C.id));return(0,ue.jsx)("div",{className:"tg-df-grid-wrapper",children:(0,ue.jsx)("div",{className:"tg-df-grid article-body tg-df-grid-auto",id:"tg-df-grid",children:o?(0,ue.jsx)(Kw,{}):l?(0,ue.jsx)("div",{className:"tg-df-message",children:"Failed to load deals. Please try again."}):t.length===0?(0,ue.jsx)("div",{className:"tg-df-message",children:!m||m.length<=2||m.toLowerCase()==="everything"?"No deals found for this author.":`No savings squad match your search for "${m}".`}):(0,ue.jsxs)(ue.Fragment,{children:[y(t.slice(0,g??h)),g!=null&&(0,ue.jsx)("div",{"aria-live":"polite",className:"tg-df-load-more-boundary",style:{alignItems:"center",color:"var(--tg-df-text-muted)",display:"flex",fontSize:"13px",fontWeight:600,gridColumn:"1 / -1",justifyContent:"center",marginTop:"16px",minHeight:"40px",overflowAnchor:"none"},children:"More products"}),g!=null&&y(t.slice(g,h)),r&&(0,ue.jsx)("div",{className:"tg-df-load-more-control",style:{width:"100%",display:"flex",justifyContent:"center",marginTop:"16px",gridColumn:"1 / -1",overflowAnchor:"none"},children:(0,ue.jsx)("button",{type:"button",className:"tg-df-tag-outline",style:{padding:"8px 24px",borderRadius:"100px",fontWeight:600,fontSize:"14px",cursor:"pointer"},"aria-busy":u,disabled:u,onClick:p=>{p.preventDefault(),p.stopPropagation(),f()},children:u?"Loading more products\u2026":"Load More"})}),t.length>0&&(0,ue.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(Zw(t,h))}})]})})})}var p0=B(O(),1);var mn=B(dt(),1),tn=B(O(),1);function Uu({onScrollLeft:e,onScrollRight:t,showLeft:n,showRight:a}){return(0,tn.jsxs)(tn.Fragment,{children:[(0,tn.jsx)("button",{"aria-label":"Scroll left",className:"tg-df-scroll-btn left tg-df-desktop-only",onClick:e,style:{display:n?"flex":"none"},type:"button",children:(0,tn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,tn.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,tn.jsx)("button",{"aria-label":"Scroll right",className:"tg-df-scroll-btn right tg-df-desktop-only",onClick:t,style:{display:a?"flex":"none"},type:"button",children:(0,tn.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,tn.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})}function Gu(e){let t=(0,mn.useRef)(null),[n,a]=(0,mn.useState)(!1),[l,i]=(0,mn.useState)(!1),r=(0,mn.useCallback)(()=>{let u=t.current;u&&(a(u.scrollLeft>1),i(Math.ceil(u.scrollLeft+u.clientWidth)<u.scrollWidth-1))},[]);(0,mn.useLayoutEffect)(()=>{let u=t.current;if(!u)return;r();let c=requestAnimationFrame(r),s=typeof ResizeObserver>"u"?null:new ResizeObserver(r);return s?.observe(u),()=>{cancelAnimationFrame(c),s?.disconnect()}},[e,r]);let o=(0,mn.useCallback)(u=>{t.current?.scrollBy({left:u,behavior:"smooth"})},[]);return{onScroll:r,railRef:t,scrollLeft:()=>o(-240),scrollRight:()=>o(240),showLeft:n,showRight:l}}var Pn=B(O(),1);function oi({containerClassName:e,itemClassName:t,items:n,loading:a,loadingKey:l,onItemClick:i,rowClassName:r,showCounters:o}){let u=Gu(n.length);return n.length===0&&!a?null:(0,Pn.jsxs)("div",{className:e,style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[n.length>0&&(0,Pn.jsx)(Uu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,Pn.jsx)("div",{className:r,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none"},onScroll:u.onScroll,children:n.length>0?n.map(c=>(0,Pn.jsxs)("button",{className:t,onClick:()=>i(c.key),style:{border:"none",borderRight:"1px solid var(--tg-df-border)",padding:"12px 20px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"1px",cursor:"pointer",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"6px",...t==="tg-df-brand-row-item"?{transition:"all 0.2s ease"}:{},background:c.selected?"var(--tg-df-bg-secondary)":"var(--tg-df-bg)",color:c.selected?"var(--tg-df-text-primary)":"var(--tg-df-text-muted)",fontWeight:c.selected?600:500},children:[c.label," ",l===c.key&&(0,Pn.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading",style:{borderWidth:"2px",height:"12px",width:"12px"}}),o!==!1&&(0,Pn.jsx)("span",{style:{color:"var(--tg-df-blue)",fontSize:"10px",...t==="tg-df-brand-row-item"?{fontWeight:400}:{}},children:c.count})]},c.key)):[1,2,3,4,5].map(c=>(0,Pn.jsx)("div",{className:"tg-df-skeleton",style:{height:"36px",width:"80px",borderRadius:"18px",flexShrink:0,margin:"8px 12px"}},`${r}-skeleton-${c}`))})]})}var b0=B(O(),1);function v0({airedaleBrands:e,brands:t,loading:n,refreshing:a,onBrandToggle:l,selectedBrands:i,showAuthorCounters:r}){let o=e.length>0?e:t||[],u=o.slice(0,15).map(c=>({count:c.count||0,key:c.formatted_value,label:c.formatted_value,selected:i?.includes(c.formatted_value)||!1}));return(0,b0.jsx)(oi,{containerClassName:"tg-df-brands-row-container",itemClassName:"tg-df-brand-row-item",items:u,loading:n&&o.length===0,loadingKey:a?i?.[0]:null,onItemClick:c=>l?.(c),rowClassName:"tg-df-brands-row",showCounters:r})}var w0=B(O(),1);function A0({activeDealTag:e,airedaleTagCounts:t,airedaleTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>{let c=u.split(":::"),s=c[0];return{count:t[u]||0,key:s,label:c[1]||u,selected:e===s}});return(0,w0.jsx)(oi,{containerClassName:"tg-df-categories-row-container",itemClassName:"tg-df-category-row-item",items:o,loading:a&&n.length===0,loadingKey:l?e:null,onItemClick:i,rowClassName:"tg-df-categories-row",showCounters:r})}var C0=B(O(),1);function S0({activeFreeformTags:e,freeformTagCounts:t,freeformTags:n,loading:a,refreshing:l,onTagClick:i,showAuthorCounters:r}){let o=n.map(u=>({count:t[u.handle]||0,key:u.handle,label:u.label,selected:e.includes(u.handle)}));return(0,C0.jsx)(oi,{containerClassName:"tg-df-freeform-tags-row-container",itemClassName:"tg-df-freeform-tag-row-item",items:o,loading:a&&n.length===0,loadingKey:l&&e.at(-1)||null,onItemClick:i,rowClassName:"tg-df-freeform-tags-row",showCounters:r})}var Be=B(O(),1),Ww=4;function R0({authors:e,clickedAuthorOverride:t,loading:n,refreshing:a,onAuthorClick:l,overriddenAuthorHandle:i,overriddenAuthorName:r,website:o}){let u=Gu(e.length);return e.length===0&&!n?null:(0,Be.jsxs)("div",{className:"tg-df-authors-row-container",style:{borderBottom:"1px solid var(--tg-df-border)",position:"relative"},children:[e.length>0&&(0,Be.jsx)(Uu,{onScrollLeft:u.scrollLeft,onScrollRight:u.scrollRight,showLeft:u.showLeft,showRight:u.showRight}),(0,Be.jsx)("div",{className:"tg-df-authors-row tg-df-mobile-authors",onScroll:u.onScroll,ref:u.railRef,style:{display:"flex",overflowX:"auto",scrollbarWidth:"none",msOverflowStyle:"none",gap:"24px",padding:"4px 16px 2px 16px",alignItems:"flex-start"},children:e.length>0?e.map((c,s)=>{let f=Br[c.brandKey]||Br[o||"tomsguide"],d=t&&(i===c.handle||r===c.fullName);return(0,Be.jsxs)("div",{className:"tg-df-author-row-item",onClick:()=>l(c),style:{cursor:"pointer",display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px",opacity:t?d?1:.4:1},children:[(0,Be.jsxs)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px",borderRadius:"50%",boxShadow:d?"0 0 0 3px var(--tg-df-blue, #1F69FF)":"none"},children:[(0,Be.jsx)("img",{src:ii(c.image),alt:c.fullName,decoding:"async",loading:s<Ww?"eager":"lazy",style:{width:"100%",height:"100%",borderRadius:"50%",objectFit:"cover",filter:t&&!d?"grayscale(100%)":"none"}}),d&&(0,Be.jsx)("span",{"aria-label":`Clear ${c.fullName} selection`,className:"tg-df-author-clear-badge",title:"Click again to clear selection",style:{alignItems:"center",backgroundColor:"#dc2626",border:"2px solid var(--tg-df-bg, #fff)",borderRadius:"50%",boxShadow:"0 1px 3px rgb(0 0 0 / 25%)",color:"#fff",display:"flex",fontSize:"15px",fontWeight:700,height:"20px",justifyContent:"center",lineHeight:1,position:"absolute",right:"-5px",top:"-5px",width:"20px",zIndex:1},children:(0,Be.jsx)("span",{"aria-hidden":"true",style:{display:"block",transform:"translateY(-1px)"},children:"\xD7"})}),f&&(0,Be.jsx)("img",{src:f,alt:"",className:"tg-df-author-brand-logo",decoding:"async",loading:"lazy",style:{position:"absolute",bottom:"-4px",right:"-4px",width:"24px",height:"24px",borderRadius:"50%",border:"2px solid var(--tg-df-bg, #fff)",backgroundColor:"#000",objectFit:"contain",filter:t&&!d?"grayscale(100%)":"none"}})]}),(0,Be.jsxs)("div",{style:{textAlign:"center"},children:[(0,Be.jsxs)("div",{className:"tg-df-author-row-name",style:{fontSize:"13px",fontWeight:700,color:"var(--tg-df-text)",lineHeight:"1.2"},children:[c.name,a&&d&&(0,Be.jsx)("span",{className:"tg-df-coupon-spinner","aria-label":"Loading author products",style:{borderWidth:"2px",display:"inline-block",height:"11px",marginLeft:"4px",width:"11px"}})]}),c.role&&(0,Be.jsx)("div",{className:"tg-df-author-row-role",style:{fontSize:"11px",color:"var(--tg-df-text-muted)",lineHeight:"1.2",marginTop:"2px",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis",wordBreak:"break-word"},children:c.role})]})]},c.handle)}):[1,2,3,4].map(c=>(0,Be.jsxs)("div",{className:"tg-df-author-row-item",style:{display:"flex",flexDirection:"column",alignItems:"center",width:"72px",flexShrink:0,gap:"4px"},children:[(0,Be.jsx)("div",{className:"tg-df-author-img-wrapper",style:{position:"relative",width:"64px",height:"64px"},children:(0,Be.jsx)("div",{className:"tg-df-skeleton",style:{width:"100%",height:"100%",borderRadius:"50%"}})}),(0,Be.jsxs)("div",{style:{textAlign:"center",width:"100%"},children:[(0,Be.jsx)("div",{className:"tg-df-skeleton",style:{height:"12px",width:"80%",margin:"0 auto 4px auto",borderRadius:"2px"}}),(0,Be.jsx)("div",{className:"tg-df-skeleton",style:{height:"10px",width:"60%",margin:"0 auto",borderRadius:"2px"}})]})]},`author-skeleton-${c}`))})]})}var Za=B(O(),1);function T0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,freeformTagCounts:i,freeformTags:r,allAuthorsList:o,brands:u,clickedAuthorOverride:c,loading:s,refreshing:f,onAuthorClick:d,onBrandToggle:m,onTagClick:v,onFreeformTagClick:A,overriddenAuthorHandle:b,overriddenAuthorName:h,selectedBrands:g,showAuthorRail:y,showAuthorCounters:p,showBrandRail:C,showCategoryRail:R,showFreeformTagRail:T,website:M}){let S=R!==!1&&l.length>0||T!==!1&&r.length>0||C!==!1&&(n.length>0||!!u?.length)||y&&o.length>0;return!(y||R!==!1||T!==!1||C!==!1)||!S&&!s?null:(0,Za.jsxs)("div",{id:"tg-df-spreadsheet-filters",style:{display:"block",marginBottom:"16px"},children:[y&&(0,Za.jsx)(R0,{authors:o,clickedAuthorOverride:c,loading:s&&o.length===0,refreshing:f,onAuthorClick:d,overriddenAuthorHandle:b,overriddenAuthorName:h,website:M}),R!==!1&&(0,Za.jsx)(A0,{activeDealTag:e,airedaleTagCounts:a,airedaleTags:l,loading:s,refreshing:f,onTagClick:v,showAuthorCounters:p}),T!==!1&&(0,Za.jsx)(S0,{activeFreeformTags:t,freeformTagCounts:i,freeformTags:r,loading:s,refreshing:f,onTagClick:A,showAuthorCounters:p}),C!==!1&&(0,Za.jsx)(v0,{airedaleBrands:n,brands:u,loading:s,refreshing:f,onBrandToggle:m,selectedBrands:g,showAuthorCounters:p})]})}var x0=B(dt(),1);var E0=[{value:"date_desc",label:"Most recent"},{value:"rating_desc",label:"Highest rating"},{value:"scored_first",label:"Scored products first"}];function Nr({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}){return!!(a&&e!==!0&&t===!1&&n===!1)}function qu({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a,lightweightReviewDelivery:l,showPriceDiscountFilters:i,showReviewSort:r}){return!!(l&&i===!1&&r===!1&&Nr({includeBuyingGuideProducts:e,includeCollections:t,includeDeals:n,includeReviewProducts:a}))}function Pu(e=!0){return e?E0:E0.filter(t=>t.value!=="scored_first")}function va(e,t=!0){return!t&&e==="scored_first"?"date_desc":e||"date_desc"}var L=B(O(),1),D0=[{value:"all",label:"All Prices",shortLabel:""},{value:"under50",label:"Under $50",shortLabel:"< $50"},{value:"50_100",label:"$50 - $100",shortLabel:"$50-$100"},{value:"100_200",label:"$100 - $200",shortLabel:"$100-$200"},{value:"200_500",label:"$200 - $500",shortLabel:"$200-$500"},{value:"over500",label:"Over $500",shortLabel:"> $500"}],Iw=[{value:"0",label:"Any discount"},...[5,10,15,20,25,30,40,50,60,70].map(e=>({value:String(e),label:`Min ${e}% off`}))];function Jw({open:e}){return(0,L.jsx)("svg",{"aria-hidden":"true",className:e?"is-open":void 0,width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,L.jsx)("path",{d:"m6 9 6 6 6-6"})})}function Fn(){return(0,L.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,L.jsx)("polyline",{points:"20 6 9 17 4 12"})})}function M0({activeDealTag:e,activeFreeformTags:t,airedaleBrands:n,airedaleTagCounts:a,airedaleTags:l,brands:i,discountAmount:r,enabled:o,freeformTagCounts:u,freeformTags:c,includeScoredFirst:s,onBrandSelect:f,onBrandToggle:d,onDiscountAmountChange:m,onFreeformTagClear:v,onFreeformTagToggle:A,onPriceRangeChange:b,onReviewSortChange:h,onTagClear:g,onTagClick:y,priceRange:p,reviewSort:C,selectedBrands:R,showCounters:T,showBrandRail:M,showCategoryRail:S,showFreeformTagRail:D,showPriceDiscountFilters:G,showReviewSort:Se}){let[ie,Y]=(0,x0.useState)(null);if(!o)return null;let ze=l.map(x=>{let X=x.split(":::");return{count:a[x]||0,handle:X[0],label:X[1]||x}}),Ee=n.length>0?n:i||[],ut=ze.find(x=>x.handle===e),q=p||"all",Ge=!r||r==="all"?"0":r,pe=D0.find(x=>x.value===q),De=G!==!1,et=va(C,s),tl=Pu(s),At=et==="rating_desc"?"Highest rating":et==="scored_first"?"Scored first":"Most recent",Pr=x=>{Y(X=>X===x?null:x)},qe=[];return S!==!1&&qe.push({active:!!e,label:`CATEGORIES${ut?` (${ut.label})`:""}`,menu:"categories"}),D!==!1&&qe.push({active:t.length>0,label:`KEYWORDS${t.length>0?` (${t.length})`:""}`,menu:"keywords"}),M!==!1&&qe.push({active:R.length>0,label:`BRANDS${R.length>0?` (${R.length})`:""}`,menu:"brands"}),De&&qe.push({active:q!=="all",label:`PRICES${pe?.shortLabel?` (${pe.shortLabel})`:""}`,menu:"prices"}),(De||Se)&&qe.push({active:Se?et!=="date_desc":Ge!=="0",label:Se?`SORT REVIEWS (${At})`:`DISCOUNTS${Ge!=="0"?` (${Ge}%+)`:""}`,menu:Se?"review-sort":"discounts"}),(0,L.jsxs)("div",{className:"tg-df-mobile-2x2-container",children:[(0,L.jsx)("div",{className:`tg-df-mobile-2x2-grid tg-df-mobile-2x2-grid--${qe.length%2===0?"even":"odd"}`,children:qe.map(x=>(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-grid-cell${x.active?" has-active-filter":""}${ie===x.menu?" active":""}`,"aria-expanded":ie===x.menu,onClick:()=>Pr(x.menu),children:[(0,L.jsx)("span",{children:x.label}),(0,L.jsx)(Jw,{open:ie===x.menu})]},x.menu))}),S!==!1&&ie==="categories"&&(0,L.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${e?"":" selected"}`,onClick:()=>{g(),Y(null)},children:[(0,L.jsx)("span",{children:"All Categories"}),!e&&(0,L.jsx)(Fn,{})]}),ze.map(x=>{let X=e===x.handle;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{y(x.handle),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X?(0,L.jsx)(Fn,{}):T!==!1?(0,L.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},x.handle)})]}),M!==!1&&ie==="brands"&&(0,L.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${R.length===0?" selected":""}`,onClick:()=>f?.([]),children:[(0,L.jsx)("span",{children:"All Brands"}),R.length===0&&(0,L.jsx)(Fn,{})]}),Ee.map(x=>{let X=x.formatted_value,$=R.includes(X);return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${$?" selected":""}`,onClick:()=>d?.(X),children:[(0,L.jsx)("span",{children:X}),$?(0,L.jsx)(Fn,{}):T!==!1&&x.count?(0,L.jsx)("span",{className:"tg-df-mobile-cell-badge",children:x.count}):null]},X)})]}),D!==!1&&ie==="keywords"&&(0,L.jsxs)("div",{className:"tg-df-mobile-menu-drawer",children:[(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${t.length===0?" selected":""}`,onClick:()=>{v(),Y(null)},children:[(0,L.jsx)("span",{children:"All Keywords"}),t.length===0&&(0,L.jsx)(Fn,{})]}),c.map(x=>{let X=t.includes(x.handle);return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>A(x.handle),children:[(0,L.jsx)("span",{children:x.label}),X?(0,L.jsx)(Fn,{}):T!==!1&&u[x.handle]?(0,L.jsx)("span",{className:"tg-df-mobile-cell-badge",children:u[x.handle]}):null]},x.handle)})]}),ie==="prices"&&(0,L.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:D0.map(x=>{let X=q===x.value;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{b?.(x.value),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X&&(0,L.jsx)(Fn,{})]},x.value)})}),ie==="discounts"&&(0,L.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:Iw.map(x=>{let X=Ge===x.value;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{m?.(x.value),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X&&(0,L.jsx)(Fn,{})]},x.value)})}),ie==="review-sort"&&(0,L.jsx)("div",{className:"tg-df-mobile-menu-drawer",children:tl.map(x=>{let X=et===x.value;return(0,L.jsxs)("button",{type:"button",className:`tg-df-mobile-menu-item${X?" selected":""}`,onClick:()=>{h?.(x.value),Y(null)},children:[(0,L.jsx)("span",{children:x.label}),X&&(0,L.jsx)(Fn,{})]},x.value)})})]})}var Wa=B(dt(),1);var Q=B(O(),1);function _0({airedaleBrands:e,airedaleTags:t,discountAmount:n,hidden:a,includeScoredFirst:l,onDiscountAmountChange:i,onPriceRangeChange:r,onReviewSortChange:o,priceRange:u,reviewSort:c,showReviewSort:s,showPriceDiscountFilters:f}){let d=(0,Wa.useRef)(null),[m,v]=(0,Wa.useState)(!1),[A,b]=(0,Wa.useState)(!1),h=Pu(l),g=va(c,l),y=()=>{if(!d.current)return;let{scrollLeft:p,scrollWidth:C,clientWidth:R}=d.current;v(p>0),b(Math.ceil(p+R)<C-5)};return(0,Wa.useEffect)(()=>(y(),window.addEventListener("resize",y),setTimeout(y,100),setTimeout(()=>{document.querySelector(".tg-df-categories-row")?.dispatchEvent(new Event("scroll")),document.querySelector(".tg-df-brands-row")?.dispatchEvent(new Event("scroll"))},150),()=>window.removeEventListener("resize",y)),[t,e]),(0,Q.jsx)("div",{className:"tg-df-controls",id:"tg-df-controls",style:{display:a?"none":"flex",marginTop:"12px",marginBottom:"16px",justifyContent:"center"},children:(0,Q.jsxs)("div",{className:"tg-df-filters-container",style:{position:"relative",width:"100%",maxWidth:"800px",margin:"0 auto"},children:[(0,Q.jsx)("button",{className:"tg-df-scroll-btn left",style:{display:m?"flex":"none"},onClick:()=>d.current?.scrollBy({left:-200,behavior:"smooth"}),children:(0,Q.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,Q.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,Q.jsx)("button",{className:"tg-df-scroll-btn right",style:{display:A?"flex":"none"},onClick:()=>d.current?.scrollBy({left:200,behavior:"smooth"}),children:(0,Q.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,Q.jsx)("path",{d:"M9 18l6-6-6-6"})})}),(0,Q.jsxs)("div",{className:"tg-df-filters",ref:d,onScroll:y,children:[(0,Q.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-legacy-price-wrapper",style:{display:f!==!1?"flex":"none"},children:[(0,Q.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Q.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,Q.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-price-filter","aria-label":"Filter Prices",value:u||"all",onChange:p=>r?.(p.target.value),children:[(0,Q.jsx)("option",{value:"all",children:"All Prices"}),(0,Q.jsx)("option",{value:"under50",children:"Under $50"}),(0,Q.jsx)("option",{value:"50_100",children:"$50 - $100"}),(0,Q.jsx)("option",{value:"100_200",children:"$100 - $200"}),(0,Q.jsx)("option",{value:"200_500",children:"$200 - $500"}),(0,Q.jsx)("option",{value:"over500",children:"Over $500"})]})]}),(0,Q.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-discount-filter-wrapper",style:{display:f!==!1&&!s?"flex":"none"},children:[(0,Q.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,Q.jsx)("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"})}),(0,Q.jsxs)("select",{className:"tg-df-filter-select",id:"tg-df-discount-filter","aria-label":"Discount Amount",value:n||"all",onChange:p=>i?.(p.target.value),children:[(0,Q.jsx)("option",{value:"all",children:"Any discount"}),[5,10,15,20,25,30,40,50,60,70].map(p=>(0,Q.jsxs)("option",{value:p,children:["Min ",p,"%"]},p))]})]}),(0,Q.jsxs)("div",{className:"tg-df-sort-wrapper",id:"tg-df-review-sort-wrapper",style:{display:s?"flex":"none"},children:[(0,Q.jsx)("svg",{className:"tg-df-sort-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,Q.jsx)("path",{d:"M4 7h16M7 12h10m-7 5h4"})}),(0,Q.jsx)("select",{className:"tg-df-filter-select",id:"tg-df-review-sort","aria-label":"Sort Reviews",value:g,onChange:p=>o?.(p.target.value),children:h.map(p=>(0,Q.jsx)("option",{value:p.value,children:p.label},p.value))})]})]})]})})}var ye=B(dt(),1);function Or(e,t){return e.filter(n=>{let a=n.handle.toLowerCase(),l=n.fullName.toLowerCase(),i=n.name.toLowerCase();return t.some(r=>{let o=r.articleauthorhandle||[],u=r.articleauthor||[],c=r.articleauthortext||[];return[...o,...u,...c].some(s=>{let f=String(s||"").toLowerCase();return f===a||f===l||f===i})})})}function Fu(e,t){return e.map((n,a)=>({index:a,profile:n,productCount:t[n.handle]||0})).sort((n,a)=>a.productCount-n.productCount||n.index-a.index).map(({profile:n})=>n)}function ju(e,t){return e==="all-authors"||t==="all-authors"||t==="All authors"||!e&&!t}function Yu(e,t,n){let a=e;if((t||n)&&t!=="all-authors"&&n!=="all-authors"&&n!=="All authors"){if(t){let l=t.toLowerCase(),i=e.filter(r=>r.articleauthorhandle&&r.articleauthorhandle.some(o=>o.toLowerCase()===l));if(i.length>0)a=i;else if(n){let r=n.toLowerCase(),o=e.filter(u=>u.articleauthor&&u.articleauthor.some(c=>c.toLowerCase()===r));o.length>0&&(a=o)}}else if(n){let l=n.toLowerCase();a=e.filter(i=>i.articleauthor&&i.articleauthor.some(r=>r.toLowerCase()===l))}}return a}function cf(e,t,n){let a=0;if(t&&e.articleauthorhandle){let l=e.articleauthorhandle.findIndex(i=>i.toLowerCase()===t.toLowerCase());l>=0&&(a=l)}else if(n&&e.articleauthor){let l=e.articleauthor.findIndex(i=>i.toLowerCase()===n.toLowerCase());l>=0&&(a=l)}return a}function Vu(e,t,n){let a=cf(e,t,n),l=i=>typeof i=="string"?ne(i):i||"";return{authorName:e.articleauthortext?l(e.articleauthortext[a]):e.articleauthor?l(e.articleauthor[a]):"",authorRole:e.articleauthorrole?l(e.articleauthorrole[a]):"",authorImage:e.articleauthormedia?e.articleauthormedia[a]:""}}function kr(e,t){let n=new Map;return e.forEach(a=>{if(!a.articleauthor)return;let l=t;if(a.documenturl)try{let f=new URL(a.documenturl).hostname.replace("www.","").split(".");f.length>0&&(l=f[0].toLowerCase())}catch{}let i=a.articleauthorhandle||[],r=a.articleauthor||[],o=a.articleauthortext||[],u=a.articleauthorrole||[],c=a.articleauthormedia||[];r.forEach((s,f)=>{if(!s||s==="null"||s.toLowerCase()==="all authors")return;let d=i[f]&&i[f]!=="null"?i[f]:s.toLowerCase().replace(/\s+/g,"-");if(!d||d==="null")return;let m=o[f]&&o[f]!=="null"?o[f]:s,v=u[f]&&u[f]!=="null"?u[f]:"",A=ne(String(m)),b=ne(String(v)),h=c[f]&&c[f]!=="null"?c[f]:"",g=A.split(" ")[0],y=Mr(a,f,"short"),p=Mr(a,f,"long"),C=zu(a,f),R=n.get(d);!R&&A&&h?n.set(d,{...p?{bioLong:p}:{},...y?{bioShort:y}:{},name:g,fullName:A,handle:d,role:b,image:h,brandKey:l,...C.length>0?{socialNetworks:C}:{}}):R&&(!R.bioShort&&y&&(R.bioShort=y),!R.bioLong&&p&&(R.bioLong=p),!R.socialNetworks?.length&&C.length>0&&(R.socialNetworks=C))})}),Array.from(n.values())}var E=B(O(),1);function N0(e){let t=(0,ye.useRef)(""),n=(0,ye.useRef)(null),a=(0,ye.useCallback)(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),l=(0,ye.useCallback)(r=>{a(),t.current=r},[a]),i=(0,ye.useCallback)((r,o,u=!1)=>{if(!e)return;if(r===t.current){a();return}let c=()=>{n.current=null,t.current=r,e(o)};a(),u?c():n.current=window.setTimeout(c,350)},[a,e]);return(0,ye.useEffect)(()=>a,[a]),{save:i,synchronise:l}}function B0({contentKey:e,defaultText:t,kind:n,onChange:a,value:l}){let i=(0,ye.useRef)(null),r=(0,ye.useRef)(e),[o,u]=(0,ye.useState)(!1),c=l??t,s=!!a,{save:f,synchronise:d}=N0(a);(0,ye.useLayoutEffect)(()=>{let g=r.current!==e;i.current&&(g||document.activeElement!==i.current)&&(i.current.innerHTML!==c&&(i.current.innerHTML=c),d(c)),r.current=e},[e,d,c]);let m=(g=!1)=>{if(!i.current)return;let y=i.current.innerHTML;f(y,y===t?void 0:y,g)},v=(g,y)=>{document.execCommand(g,!1,y),m(!0)},A=n==="kicker"?{fontSize:"0.875rem",color:"#6B7280",fontStyle:"normal",margin:"0 0 0.25rem 0"}:{fontSize:"2.25rem",fontWeight:300,color:"#111827",margin:"0 0 0.25rem 0",lineHeight:1.1,letterSpacing:"-0.02em"},b=n==="kicker"?"tg-df-author-curated-by tg-df-author-kicker":"tg-df-author-name",h=()=>n==="kicker"?(0,E.jsx)("p",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}}):(0,E.jsx)("h2",{ref:i,className:b,contentEditable:s||void 0,dangerouslySetInnerHTML:s?void 0:{__html:c},onBlur:s?()=>{u(!1),m(!0)}:void 0,onFocus:s?()=>u(!0):void 0,onInput:s?()=>m():void 0,suppressContentEditableWarning:s,style:{...A,outline:s&&o?"2px solid #3b82f6":"none",borderRadius:"4px",cursor:s?"text":"default"}});return s?(0,E.jsxs)("div",{className:"tg-df-author-header-text-shell",style:{position:"relative"},children:[o&&(0,E.jsxs)("div",{className:"tg-df-author-header-text-toolbar",role:"toolbar","aria-label":`${n==="kicker"?"Shop by text":"Site or author name"} formatting`,style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"0.25rem",margin:"0 auto 0.375rem",width:"fit-content",padding:"0.25rem 0.5rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",fontSize:"11px",zIndex:10},children:[(0,E.jsx)("span",{style:{color:"#64748b",padding:"2px 2px 2px 0"},children:"Editing"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("bold"),title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>v("italic"),title:"Italic",children:(0,E.jsx)("em",{children:"I"})}),(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{let g=prompt("Enter URL:");g&&v("createLink",g)},title:"Add link",children:"\u{1F517}"}),l!==void 0&&(0,E.jsx)("button",{type:"button",onMouseDown:g=>g.preventDefault(),onClick:()=>{i.current&&(i.current.innerHTML=t),d(t),a?.(void 0)},title:"Restore default",children:"Reset"})]}),h()]}):h()}function $w({contentKey:e,initialBio:t,defaultPlaceholder:n,onBioChange:a,stabilizeHeight:l=!1}){let r=(0,ye.useRef)(null),o=(0,ye.useRef)(e),u=(0,ye.useRef)(n),c=(0,ye.useRef)(!1),[s,f]=(0,ye.useState)(!1),[d,m]=(0,ye.useState)(!1),[v,A]=(0,ye.useState)(!1),b=t||n,h=l&&b.replace(/<[^>]*>/g,"").trim().length>240,g=!!a,{save:y,synchronise:p}=N0(a);(0,ye.useLayoutEffect)(()=>{let S=o.current!==e,D=u.current!==n;S&&(c.current=!1);let G=!t&&D&&!c.current;r.current&&(S||document.activeElement!==r.current||G)&&(r.current.innerHTML!==b&&(r.current.innerHTML=b),p(b)),o.current=e,u.current=n},[b,e,n,t,p]),(0,ye.useLayoutEffect)(()=>{m(!1)},[e]),(0,ye.useLayoutEffect)(()=>{if(!h||!r.current){A(!1);return}let S=r.current,D=()=>{A(S.scrollHeight>S.clientHeight+1)};if(D(),typeof ResizeObserver>"u")return;let G=new ResizeObserver(D);return G.observe(S),()=>G.disconnect()},[b,e,d,h]);let C=(S,D=null)=>{if(c.current=!0,document.execCommand(S,!1,D||void 0),r.current){let G=r.current.innerHTML;y(G,G===n?"":G,!0)}},R=(S=!1)=>{if(!r.current)return;let D=r.current.innerHTML;y(D,D===n?"":D,S)};return(0,E.jsxs)("div",{style:{position:"relative",maxWidth:"42rem",margin:"0 auto 0.5rem auto",padding:"0.25rem 0.5rem"},className:`tg-df-author-bio-shell${l?" tg-df-author-bio-shell--stable":""}`,children:[g&&s&&(0,E.jsxs)("div",{role:"toolbar","aria-label":"Introduction text formatting",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"0.375rem",marginBottom:"0.5rem",padding:"0.25rem 0.625rem",background:"#ffffff",border:"1px solid #cbd5e1",borderRadius:"9999px",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",width:"fit-content",margin:"0 auto 0.5rem auto",fontSize:"12px",userSelect:"none",zIndex:10},children:[(0,E.jsx)("span",{style:{fontSize:"11px",color:"#64748b",fontWeight:500,marginRight:"2px"},children:"Editing \u2014 saves when you click away"}),(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:()=>C("bold"),style:{fontWeight:"bold",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Bold",children:"B"}),(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:()=>C("italic"),style:{fontStyle:"italic",padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Italic",children:"I"}),(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:()=>{let S=prompt("Enter URL:");S&&C("createLink",S)},style:{padding:"2px 8px",borderRadius:"4px",background:"#f1f5f9",cursor:"pointer",border:"1px solid #e2e8f0"},title:"Add Link",children:"\u{1F517}"}),t&&(0,E.jsx)("button",{type:"button",onMouseDown:S=>S.preventDefault(),onClick:S=>{S.preventDefault(),S.stopPropagation(),r.current&&(r.current.innerHTML=n),c.current=!1,p(n),a&&a("")},style:{fontSize:"10px",padding:"2px 8px",borderRadius:"4px",background:"#fee2e2",color:"#991b1b",cursor:"pointer",border:"1px solid #fca5a5"},title:"Reset Bio",children:"Reset"})]}),(0,E.jsx)("div",{ref:r,contentEditable:g?!0:void 0,suppressContentEditableWarning:g,onFocus:g?()=>{f(!0)}:void 0,onBlur:g?()=>{f(!1),R(!0),c.current=!1}:void 0,onInput:g?()=>{c.current=!0}:void 0,className:`tg-df-author-bio ${g?"wysiwyg-bio-editable":"tg-df-author-bio--static"}${h?d?" tg-df-author-bio--expanded":" tg-df-author-bio--clamped":""}`,style:{color:"#4b5563",lineHeight:1.6,fontWeight:300,fontSize:"0.9375rem",textAlign:"center",outline:g&&s?"2px solid #3b82f6":"none",borderRadius:"6px",padding:"0.375rem 0.5rem",cursor:g?"text":"default",transition:"all 0.15s ease-in-out"}}),h?(0,E.jsx)("div",{className:"tg-df-author-bio-toggle-slot",children:(0,E.jsx)("button",{type:"button",className:"tg-df-author-bio-toggle","aria-expanded":d,onClick:()=>m(S=>!S),style:{visibility:v||d?"visible":"hidden"},children:d?"Show less":"Read more"})}):null]})}function e2(e){let t=(e||"").toLowerCase();return t==="linkedin"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.28 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.75M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"})}):t==="twitter"||t==="x"?(0,E.jsx)("svg",{className:"icon-svg",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,E.jsx)("path",{fill:"currentColor",d:"M18 2h4l-8 9 9 11h-7l-5-7-6 7H2l7-9L1 2h7l5 6zm-1 18h2L7 4H5z"})}):t==="email"||t==="mail"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}),(0,E.jsx)("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]}):t==="instagram"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"5",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"12",cy:"12",r:"4.25",fill:"none",stroke:"currentColor",strokeWidth:"2.25"}),(0,E.jsx)("circle",{cx:"17.4",cy:"6.7",r:"1.25",fill:"currentColor"})]}):t==="steam"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("circle",{fill:"#0f1618",cx:"12",cy:"12",r:"12"}),(0,E.jsx)("path",{d:"m18.22 8.9a2.269 2.269 0 1 1 -2.27-2.265 2.267 2.267 0 0 1 2.27 2.265zm2.258.005a4.534 4.534 0 0 1 -4.533 4.526h-.1l-4.087 2.911v.161a3.4 3.4 0 0 1 -6.74.669l-4.549-1.879c-.032-.109-.057-.219-.085-.329a11.973 11.973 0 0 1 -.384-2.964c0-.214.02-.423.032-.635 0-.1.008-.206.016-.308l6.394 2.643a3.385 3.385 0 0 1 1.915-.591c.065 0 .127 0 .191.005l2.865-4.145v-.062a4.533 4.533 0 0 1 9.066 0zm-9.763 6.618a2.55 2.55 0 0 0 -3.262-1.411l1.525.63a1.877 1.877 0 1 1 -1.446 3.464l-1.475-.606a2.529 2.529 0 0 0 1.315 1.25 2.559 2.559 0 0 0 3.339-1.374 2.526 2.526 0 0 0 .004-1.951zm8.251-6.618a3.021 3.021 0 1 0 -3.021 3.015 3.022 3.022 0 0 0 3.021-3.013z",fill:"#fff"})]}):t==="youtube"?(0,E.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"})}):t==="twitch"?(0,E.jsxs)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[(0,E.jsx)("path",{d:"m24 12a12 12 0 1 1 -12-12 12 12 0 0 1 12 12z",fill:"#111"}),(0,E.jsx)("path",{d:"m12.308 17.167-1.833 1.833h-1.818v-1.833h-3.357v-9.733l.925-2.434h12.475v8.517l-3.648 3.65zm5.175-10.95h-10.043v8.824h2.743v1.833l1.817-1.833h3.342l2.14-2.126zm-5.483 6.083v-3.65h-1.218v3.65zm3.342 0v-3.65h-1.216v3.65z",fill:"#fff"})]}):t==="facebook"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m13.079 19h-2.9v-7h-1.441v-2.408h1.442v-1.456c0-1.96.813-3.136 3.136-3.136h1.933v2.408h-1.2c-.91 0-.965.35-.965.966v1.218h2.183l-.257 2.408h-1.931z",fill:"currentColor"})}):t==="pinterest"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.336 5c-3.822 0-5.754 2.744-5.754 5.025a3.065 3.065 0 0 0 1.652 3.066.279.279 0 0 0 .407-.2l.154-.644a.373.373 0 0 0-.113-.448 2.341 2.341 0 0 1-.532-1.582 3.812 3.812 0 0 1 3.961-3.849 3.009 3.009 0 0 1 3.346 3.08c0 2.323-1.022 4.283-2.547 4.283a1.253 1.253 0 0 1-1.273-1.554 17.616 17.616 0 0 0 .713-2.856 1.081 1.081 0 0 0-1.092-1.2c-.854 0-1.553.881-1.553 2.071a2.954 2.954 0 0 0 .266 1.274l-1.038 4.383a9.389 9.389 0 0 0-.027 3.065.109.109 0 0 0 .2.042 8.737 8.737 0 0 0 1.457-2.631l.561-2.212a2.3 2.3 0 0 0 1.959 1.008c2.59 0 4.34-2.366 4.34-5.516a4.8 4.8 0 0 0-5.087-4.605z",fill:"currentColor"})}):t==="substack"?(0,E.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z"})}):t==="threads"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12.186 24h-.007c-3.582-.024-6.332-1.22-8.173-3.555C2.26 18.212 1.5 15.228 1.5 11.83 1.5 8.16 2.673 5.097 4.902 2.935 7.026.877 10.02 0 13.565 0c3.784 0 6.81 1.028 8.995 3.056 2.008 1.862 3.013 4.417 2.91 7.391-.122 3.518-1.57 6.136-4.304 7.781-1.892 1.138-4.103 1.62-6.57 1.433-.122.392-.266.769-.434 1.127-.514 1.096-1.18 1.96-1.982 2.569-.884.67-1.933 1.01-3.118 1.01-1.34 0-2.42-.42-3.21-1.248-.78-.82-1.17-1.89-1.17-3.18 0-1.512.52-2.73 1.545-3.62 1.018-.883 2.45-1.33 4.258-1.33.56 0 1.11.04 1.63.12-.04-.53-.13-1.02-.27-1.46-.26-.81-.71-1.45-1.34-1.92-.62-.47-1.42-.71-2.38-.71-1.09 0-2.02.29-2.77.87-.29.22-.68.17-.9-.12l-.76-1.03c-.22-.3-.16-.71.13-.93C7.43 5.37 8.95 4.9 10.8 4.9c1.64 0 2.99.41 4.02 1.22 1.04.81 1.73 1.93 2.06 3.33.15.65.25 1.42.3 2.31 1.68-.31 3.05-1.05 4.08-2.2 1.01-1.13 1.52-2.58 1.52-4.31 0-2.43-.84-4.32-2.5-5.62C18.63 1.32 16.32.5 13.56.5c-3.03 0-5.54.73-7.27 2.21C4.48 4.27 3.5 6.78 3.5 10c0 3.1.66 5.62 1.96 7.49 1.34 1.93 3.38 2.92 6.07 2.95 1.76.02 3.32-.34 4.64-1.07.28-.15.63-.05.78.22l.55.98c.15.28.05.63-.22.78-1.63.9-3.55 1.35-5.7 1.35z"})}):t==="tiktok"?(0,E.jsx)("svg",{className:"icon-svg",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:(0,E.jsx)("path",{d:"m12.308 5.012c.763-.012 1.522 0 2.281-.012a3.636 3.636 0 0 0 1.02 2.434 4.12 4.12 0 0 0 2.473 1.043v2.349a6.177 6.177 0 0 1-2.449-.564 7.207 7.207 0 0 1-.947-.543c0 1.705.008 3.406-.01 5.105a4.442 4.442 0 0 1-.789 2.3 4.343 4.343 0 0 1-3.448 1.872 4.254 4.254 0 0 1-2.379-.6 4.393 4.393 0 0 1-2.127-3.331c-.014-.292-.019-.584-.007-.868a4.395 4.395 0 0 1 5.091-3.9c.013.864-.021 1.727-.021 2.591a2.007 2.007 0 0 0-2.558 1.237 2.316 2.316 0 0 0-.079.939 1.992 1.992 0 0 0 3.658.736 1.39 1.39 0 0 0 .239-.62c.057-1.043.034-2.082.041-3.126.006-2.351-.007-4.7.011-7.041z",fill:"currentColor"})}):t==="bluesky"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.879.139 2.588-.02 3.868.002 5.03c.08 4.201 1.84 10.024 3.931 12.397 2.091 2.373 4.545 1.573 5.467.927.817-.573 1.564-1.611 2.6-2.92 1.036 1.309 1.783 2.347 2.6 2.92.922.646 3.376 1.446 5.467-.927 2.091-2.373 3.851-8.196 3.931-12.397.022-1.162-.137-2.442-.9-3.151-.659-.613-1.664-.935-4.3-1.074C16.046 4.747 13.087 8.686 12 10.8z"})}):t==="github"?(0,E.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor",children:(0,E.jsx)("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"})}):t==="rss"?(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("path",{d:"M4 11a9 9 0 0 1 9 9"}),(0,E.jsx)("path",{d:"M4 4a16 16 0 0 1 16 16"}),(0,E.jsx)("circle",{cx:"5",cy:"19",r:"1"})]}):(0,E.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,E.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,E.jsx)("path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"}),(0,E.jsx)("path",{d:"M2 12h20"})]})}function O0({authorCount:e=0,authorArticlesList:t,authorBioLength:n,customBio:a,customHeaderKicker:l,customHeaderTitle:i,effectiveAuthorHandle:r,effectiveAuthorName:o,isReviewWidget:u=!1,onBioChange:c,onHeaderKickerChange:s,onHeaderTitleChange:f,selectedProfile:d,showAuthorBio:m=!0,showAuthorIdentity:v=!0,showSocialButtons:A=!0,stabilizeBio:b=!1,totalDealCount:h=0,website:g}){let y=ju(r,o),p=g||"tomsguide",C=Hu[p]||p,R=Br[p],T=r?.toLowerCase(),M=o?.toLowerCase(),S=t.find(pe=>T&&pe.articleauthorhandle?.some(De=>De?.toLowerCase()===T)||M&&pe.articleauthor?.some(De=>De?.toLowerCase()===M))||null,D=S?cf(S,r,o):0,G=d?.image||(S?l0(S,D):""),Se=d?n==="short"?d.bioShort||"":d.bioLong||d.bioShort||"":S?Mr(S,D,n):"",ie=y?`Our team is dedicated to researching, reviewing and recommending the latest and best products in all the categories that matter to you. Below you can shop the latest ${h} ${u?"review ":""}recommendations from ${e} ${C} ${u?"editor tests":"editors"}.`:Se||`Handpicked deals and recommendations curated by ${o||"our expert editorial team"}.`,Y=d?.role||"",ze=y?f0[p]||[]:d?.socialNetworks||[];!y&&S&&(Y||(Y=a0(S,D)),ze.length===0&&(ze=zu(S,D)));let Ee=d?.fullName||o||"Author Name",ut=y?`site:${p}`:`author:${d?.handle||r||Ee}`,q=A&&ze.length>0,Ge=!y&&!!Y||q;return(0,E.jsxs)("div",{className:"tg-df-author-card",style:{textAlign:"center",padding:"1.75rem 1rem 0.25rem 1rem",margin:"0 auto",maxWidth:"48rem"},children:[v&&(y?(0,E.jsx)("div",{className:"tg-df-author-media-slot tg-df-author-image-container",style:{margin:"0 auto 0.75rem auto",textAlign:"center",minHeight:"180px",display:"flex",alignItems:"center",justifyContent:"center"},children:R?(0,E.jsx)("img",{src:R,alt:C,className:"tg-df-site-logo",style:{maxHeight:"150px",maxWidth:"520px",objectFit:"contain",margin:"0 auto",display:"block"}}):(0,E.jsx)("div",{style:{fontSize:"1.75rem",fontWeight:700,color:"#111827"},children:C})}):(0,E.jsx)("div",{className:"tg-df-author-media-slot",children:(0,E.jsxs)("div",{className:"tg-df-author-profile-image-wrapper",children:[G?(0,E.jsx)("img",{src:ii(G),alt:Ee,className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",objectFit:"cover",display:"block"}}):(0,E.jsx)("div",{className:"tg-df-author-image",style:{width:"180px",height:"180px",borderRadius:"50%",background:"#e2e8f0",display:"block"}}),R?(0,E.jsx)("img",{src:R,alt:"",className:"tg-df-author-profile-brand-logo"}):null]})})),v&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(B0,{contentKey:`${ut}:kicker`,defaultText:u?"Reviews shop by":"Shop by",kind:"kicker",onChange:s,value:l}),(0,E.jsx)(B0,{contentKey:`${ut}:title`,defaultText:y?C:Ee,kind:"title",onChange:f,value:i}),Ge&&(0,E.jsxs)("div",{className:`tg-df-author-meta-slot${y?" tg-df-author-meta-slot--site":""}${q?"":" tg-df-author-meta-slot--no-social"}`,children:[!y&&Y?(0,E.jsx)("div",{className:"tg-df-author-role",id:"tg-df-author-role-display",style:{fontSize:"0.9375rem",fontWeight:500,color:"var(--tg-df-blue, #1F69FF)",margin:"0 0 0.5rem 0",lineHeight:1.3},children:Y}):null,q?(0,E.jsx)("div",{className:"tg-df-author-social-links",children:ze.map(pe=>(0,E.jsx)("a",{href:pe.href,target:"_blank",rel:"noopener noreferrer",title:pe.label,"aria-label":pe.label,className:"tg-df-author-social-btn","data-social-key":pe.key.toLowerCase(),children:e2(pe.key)},pe.key))}):null]})]}),m&&(0,E.jsx)($w,{contentKey:ut,initialBio:a,defaultPlaceholder:ie,onBioChange:c,stabilizeHeight:b})]})}var W=B(O(),1);function sf(e){if(!e||typeof e!="object")return"";if(e.type==="voucher_code"&&e.display_value)return e.display_value;let t=Array.isArray(e)?e:Object.keys(e).filter(n=>Object.prototype.hasOwnProperty.call(e,n)).map(n=>e[n]);for(let n of t){let a=sf(n);if(a)return a}return""}function t2({endTime:e}){if(!e)return null;let t=e;!isNaN(Number(t))&&String(t).length===10&&(t=Number(t)*1e3);let n=new Date(t),a=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"});return(0,W.jsxs)("span",{className:"tg-df-voucher-expiry",children:[(0,W.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginRight:"4px"},children:[(0,W.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,W.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),"Expires ",a.format(n)]})}function k0({error:e,loading:t,merchant:n,onClose:a,vouchers:l}){return(0,W.jsx)("div",{className:`tg-df-modal-backdrop ${n?"active":""}`,onClick:i=>{i.target===i.currentTarget&&a()},children:(0,W.jsxs)("div",{className:"tg-df-modal",children:[(0,W.jsxs)("div",{className:"tg-df-modal-header",children:[(0,W.jsx)("h3",{className:"tg-df-modal-title",children:n?`${n} Coupons & Deals`:"Available Coupons & Deals"}),(0,W.jsx)("button",{className:"tg-df-modal-close",onClick:a,children:(0,W.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,W.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,W.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),(0,W.jsx)("div",{className:"tg-df-modal-body",children:t?(0,W.jsx)("div",{className:"tg-df-message",children:(0,W.jsx)("div",{className:"tg-df-coupon-spinner",style:{width:"24px",height:"24px",borderColor:"#ccc",borderTopColor:"#3b82f6"}})}):e?(0,W.jsx)("div",{className:"tg-df-message",children:"Failed to load vouchers."}):l.length===0?(0,W.jsxs)("div",{className:"tg-df-message",children:["No active vouchers found for ",n,"."]}):l.map((i,r)=>{let o=i.offer?.name||i.offer?.title||i.name||i.title||i.model_name||"Voucher",u=i.offer?.link||i.offer?.url||i.link||i.url||"#",c=i.merchant,s=Array.isArray(c)?c[0]?.logo_url||"":c?.logo_url||"",f=sf(i.offer)||sf(i)||i.offer?.voucher_code||i.voucher_code||"",d=i.offer?.end_time||i.end_time||"";return(0,W.jsxs)("a",{href:u,target:"_blank",rel:"noopener nofollow",className:"tg-df-voucher-item",children:[s?(0,W.jsx)("img",{src:s,alt:"Logo",className:"tg-df-voucher-logo"}):(0,W.jsx)("div",{className:"tg-df-voucher-logo",style:{background:"#e2e8f0"}}),(0,W.jsxs)("div",{className:"tg-df-voucher-content",children:[(0,W.jsx)("h4",{className:"tg-df-voucher-title",children:o}),(0,W.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px",marginTop:"8px"},children:[f&&(0,W.jsxs)("span",{className:"tg-df-voucher-code",title:"Copy to clipboard",onClick:m=>{m.preventDefault(),m.stopPropagation();let v=m.currentTarget;navigator.clipboard.writeText(f).then(()=>{v.classList.add("copied");let A=v.querySelector(".tg-df-voucher-code-text"),b=v.querySelector(".tg-df-voucher-copy-icon"),h=A.innerText,g=b.innerHTML;A.innerText="Copied!",b.innerHTML='<polyline points="20 6 9 17 4 12"><\/polyline>',setTimeout(()=>{v.classList.remove("copied"),A&&(A.innerText=h),b&&(b.innerHTML=g)},2e3)})},children:[(0,W.jsx)("span",{className:"tg-df-voucher-code-text",children:f}),(0,W.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:"6px",flexShrink:0},className:"tg-df-voucher-copy-icon",children:[(0,W.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,W.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})]}),d&&(0,W.jsx)(t2,{endTime:d})]})]})]},r)})})]})})}var N=B(dt(),1);function ui(e){if(!e||!e.articlepage)return[];try{let t=e.articlepage;if(!Array.isArray(t))return typeof t=="string"?JSON.parse(t):t;if(t.length===0)return[];let n=t[0];return typeof n=="string"?JSON.parse(n):Array.isArray(n)?n:n&&typeof n=="object"&&"type"in n?t:n}catch{return[]}}function ci(e,t=!1,{includeCollections:n=!0,includeDeals:a=!0}={}){let l=t?e.filter(r=>r.type==="buying-guide"):[];if(l.length>0)return l;let i=e.filter(r=>r.type==="deal"||r.type==="featured-product");return a&&!n&&!t?i.filter(r=>r.type==="deal"):i}function si(e,t){if(!t||t.length===0)return!0;let n=e&&(e.brand||e.retailer)||"";if(!n)return!1;let a=n.replace(/^\d+\.\s*/,"").trim().toLowerCase();return t.some(l=>{let i=l.trim().toLowerCase();return a===i||a.startsWith(`${i} `)||a.includes(i)||i.includes(a)})}function bt(e){return!e||e==="auto"?"US":e}function nn(e){return e==="GB"||e==="UK"?"GBP":e==="AU"?"AUD":e==="CA"?"CAD":["DE","FR","IT","ES","NL"].includes(e)?"EUR":"USD"}function L0(e,t){if(e.isBuyingGuideProduct||e.isReviewProduct)return!0;if(t==="unavailable")return!1;let n=String(e.isoCurrency||e.currency||"").trim().toUpperCase();return({$:"USD",A$:"AUD",CA$:"CAD","\xA3":"GBP","\u20AC":"EUR"}[n]||n)===nn(t)}function di(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=a?n.currency||(n.price&&typeof n.price=="object"?n.price.currency:""):l.currency||(typeof l=="string"?l:"")||n.currency||"";!i&&n.variants&&n.variants.length>0&&(i=n.variants[0].currency||"");let r="$",o="USD",u=(i||"").toString().toUpperCase().trim();return u==="GBP"||u==="\xA3"||u.includes("POUND")||u.includes("163")?(r="\xA3",o="GBP"):u==="EUR"||u==="\u20AC"||u.includes("EURO")||u.includes("8364")?(r="\u20AC",o="EUR"):u==="AUD"||u==="A$"?(r="A$",o="AUD"):u==="CAD"||u==="CA$"?(r="CA$",o="CAD"):u==="USD"||u==="$"||u.includes("DOLLAR")||u.includes("36")?(r="$",o="USD"):(o=nn(t),o==="GBP"?r="\xA3":o==="AUD"?r="A$":o==="CAD"?r="CA$":o==="EUR"&&(r="\u20AC")),{isoCurr:o,currencyStr:r}}function Xu(e){let t=e.data||{},n=e.type==="featured-product",a=t.price||{},l=0,i=0;return n?(l=typeof a=="number"?a:a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):t.msrp?parseFloat(t.msrp):0):(l=a.amount?parseFloat(a.amount):0,i=a.amountWas?parseFloat(a.amountWas):0),{rawPrice:l,rawMsrp:i}}function ba(e,t){if(!t||t==="all"||e<=0)return!0;if(t==="under50"&&e>=50||t==="over50"&&e<=50||t==="over30"&&e<=30||t==="over500"&&e<=500)return!1;if(t.includes("_")){let[n,a]=t.split("_").map(Number);if(n&&e<n||a&&e>a)return!1}return!0}function Aa(e,t,n){if(!n||n==="0"||n==="all")return!0;let a=parseInt(n);return!(!isNaN(a)&&a>0&&(!t||t<=e||Math.round((1-e/t)*100)<a))}var Qu=[0,50,100,150,200,250,300,350,400,450],df={parameter:"articleControlTag",value:"type_buying_guide"},n2={includeAllContent:!1,pageStarts:Qu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"}]},a2={pcgamer:{includeAllContent:!1,pageStarts:Qu,scopes:[{parameter:"articleType",value:"deals"},{parameter:"articleControlTag",value:"sig-product-collection"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["deals","type_deal","channel_gaming_hardware"]}],buyingGuideScopes:[df]},homesandgardens:{includeAllContent:!1,pageStarts:Qu,scopes:[{parameter:"articleType",value:"collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"sig-product-collection",inventoryKind:"collections"},{parameter:"articleControlTag",value:"van-hawk-collection-widget",inventoryKind:"collections"},{parameter:"articleControlTag",value:"shopping",requiredArticleType:"news",inventoryKind:"collections"},{parameter:"articleType",value:"deals",inventoryKind:"deals"},{parameter:"articleControlTag",value:"type_deal",requiredArticleType:"news",requiredControlTags:["shopping","type_deal"],inventoryKind:"deals"}],buyingGuideScopes:[{parameter:"articleType",value:"buying guide"},df]},whowhatwear:{includeAllContent:!0,pageStarts:Qu,scopes:[{}]}};function Ku(e,{includeBuyingGuideProducts:t=!1,includeCollections:n=!0,includeDeals:a=!0}={}){let l=a2[e]||n2;if(l.includeAllContent)return l;let i=l.scopes.filter(r=>r.inventoryKind==="collections"?n:r.inventoryKind==="deals"?a:r.value==="sig-product-collection"?n:a);return t?{...l,scopes:[...i,...l.buyingGuideScopes||[df]]}:{...l,scopes:i}}function ff(e){if(Array.isArray(e))return e;let t=e.data;return t&&Array.isArray(t)?t:[]}function z0(e){let t=new Set;return e.filter(n=>{let a=n.id||n.articleid||n.url;return!a||t.has(a)?!1:(t.add(a),!0)})}function Kt(e){return typeof e.articletype=="string"?e.articletype.toLowerCase():Array.isArray(e.articletype)&&e.articletype.length>0?e.articletype[0].toLowerCase():""}function Lr(e){return String(e||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function gf(e){return[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]].map(Lr)}function l2(e){return Kt(e)==="review"&&gf(e).some(t=>t.includes("channelgaminghardware"))}function H0(e,t,n){let a=Kt(e),l=gf(e),i=c=>l.some(s=>s.includes(c)),r=a==="news"&&i("shopping")&&i("deal")&&i("typedeal"),o=a==="deals"||r,u=a==="collection"||i("sigproductcollection")||i("vanhawkcollectionwidget")||a==="news"&&i("shopping")&&!r||a==="idea"&&i("shopping")&&(i("sigproductcollection")||i("vanhawkcollectionwidget"));return t&&o||n&&u}function Ia(e,t=!0,n=!0,a){if(a==="homesandgardens")return H0(e,t,n);let l=Kt(e),i=gf(e),r=l==="deals"||i.some(u=>u.includes("typedeal")),o=i.some(u=>u.includes("sigproductcollection"));return t&&r||n&&o}function U0(e,t,n=!1,a=!1,l=!0,i=!0){if(a&&Kt(e)==="review")return t!=="pcgamer"||l2(e);if(t==="homesandgardens")return Kt(e)==="buying guide"?n:H0(e,i,l);let r=Ku(t,{includeBuyingGuideProducts:n,includeCollections:l,includeDeals:i});if(r.includeAllContent)return i&&l?!0:n||Ia(e,i,l);let o=Kt(e),u=[...Array.isArray(e.articlecontroltag)?e.articlecontroltag:[],...Array.isArray(e.articletagtypetaghandle)?e.articletagtypetaghandle:[]],c=f=>!f.requiredArticleType||o===f.requiredArticleType.toLowerCase(),s=f=>!f.requiredControlTags||f.requiredControlTags.every(d=>u.some(m=>typeof m=="string"&&Lr(m).includes(Lr(d))));return r.scopes.some(f=>!c(f)||!s(f)?!1:f.parameter==="articleType"?o===f.value.toLowerCase():f.parameter==="articleControlTag"?u.some(d=>typeof d=="string"&&Lr(d).includes(Lr(f.value))):!1)}function mf(e,t){let n=e.map(a=>({...a}));return t.filter(a=>(a.isBuyingGuideProduct||a.isReviewProduct)&&a.brand).forEach(a=>{let l=String(a.brand).trim();if(!l)return;let i=n.find(r=>r.formatted_value.toLowerCase()===l.toLowerCase());i?i.count++:n.push({formatted_value:l,count:1})}),n.sort((a,l)=>l.count-a.count)}function Zu(e,t){let n={};return e.forEach(a=>{if(!a.articlepage)return;let l=ui(a),i=ci(l,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});(t.includeDeals===!1||t.includeCollections===!1)&&!i.some(r=>r.type==="buying-guide")&&!Ia(a,t.includeDeals,t.includeCollections,t.website)||i.forEach(r=>{if(di(r,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:o,rawMsrp:u}=Xu(r);if(!ba(o,t.priceRange)||!Aa(o,u,t.discountAmount))return;let c=r.data||{},s=c.brand||c.retailer;if(!s)return;let f=s.replace(/^\d+\.\s*/,"").trim(),d=f.toLowerCase(),m=Object.keys(n).find(v=>v.toLowerCase()===d);m?n[m]++:(f===f.toLowerCase()&&(f=f.replace(/\b\w/g,v=>v.toUpperCase())),n[f]=1)})}),Object.keys(n).map(a=>({formatted_value:a,count:n[a]})).sort((a,l)=>l.count-a.count)}function i2(e){return String(e||"").trim().toLowerCase()}function Wu(e){return(Array.isArray(e)?e:[e]).map(i2).filter(Boolean)}function r2(e){let t=Wu(e.articletype),n=[...Wu(e.articlecontroltag),...Wu(e.articletagtypetaghandle)];return t.includes("deals")||n.some(a=>a.replace(/[\s-]+/g,"_")==="type_deal")}function q0(e){let t=Array.isArray(e)?e[0]:e,n=new Date(String(t||"")).getTime();return Number.isFinite(n)?n:null}function o2(e){for(let t of[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]){let n=q0(t);if(n!==null)return n}return null}function u2(e){for(let t of[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]){let n=q0(t);if(n!==null)return n}return null}function G0(e){return Wu(e.articletype).includes("review")}function c2(e,t=new Date,n=0){let a=r2(e)?1:G0(e)?36:n;if(a<=0)return!0;let l=G0(e)?u2(e):o2(e);if(l===null)return!0;let i=new Date(t);return i.setMonth(i.getMonth()-a),l>=i.getTime()}function Ja(e,t,n=0){return e.filter(a=>c2(a,t,n))}var s2=15;function F0(e){return Array.isArray(e.articlemedia)?e.articlemedia[0]:""}function zr(e){return Array.isArray(e.documenturl)?e.documenturl[0]:e.documenturl||""}function d2(e){return Ot(String(e||"").replace(/^\d+\.\s*/,"").trim())}function $e(e){return Array.isArray(e)?e.map($e).find(Boolean)||"":typeof e=="string"||typeof e=="number"?String(e).trim():""}function hf(e,t=!1){return(t?[e.datepublished,e.publisheddate,e.createddate,e.contentmodifieddate,e.modifieddate]:[e.contentmodifieddate,e.modifieddate,e.createddate,e.datepublished,e.publisheddate]).map($e).find(Boolean)||""}function f2(e,t,n){let a=$e(e).match(/^\s*(\d+)\s*[.)]\s*/)?.[1];return a||[t.rank,t.position,t.number,t.productNumber,t.product_number].map($e).map(i=>i.match(/^\s*(\d+)\s*$/)?.[1]||"").find(Boolean)||String(n+1)}function g2(e){let t=$e(e);try{t=new URL(t).pathname}catch{}return t=t.split(/[?#]/)[0].split("/").filter(Boolean).at(-1)||"",t.split(/[-_]+/).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function m2(e){return $e(e.documenthandle)||$e(e.document_handle)||zr(e)||$e(e.documentname)||$e(e.documentnametext)}function h2(e,t){if(!t)return"";let n=t.length>s2?"Ranked":t;return`#${e} ${n}`}function y2(e){if(typeof e=="object"&&e)return String(e["data-model-name"]||"");try{return String(JSON.parse(String(e||""))["data-model-name"]||"")}catch{return""}}function p2(e){let t=e.brand||e.productBrand||e.manufacturer||e.maker||"";return typeof t=="string"?Ot(t.replace(/^\d+\.\s*/,"").trim()):""}function v2(e){let t=e.price&&typeof e.price=="object"?e.price:{},n=Number(t.salePrice||t.price||e.salePrice||e.current_price||(typeof e.price=="number"?e.price:0)),a=Number(t.wasPrice||t.msrp||e.was_price||e.msrp||0),l=e.url||e.link?.url||e.link?.href||"";return{currency:t.currency||e.currency||"",rawMsrp:Number.isFinite(a)?a:0,rawPrice:Number.isFinite(n)?n:0,url:l}}function yf(e){let t=e?.review||{},n=t.rating??t.starRating??t.score??e?.rating??e?.starRating??e?.score,a=Number(n);if(!Number.isFinite(a)||a<=0)return null;let l=a>5?a/20:a;return Math.min(l,5)}function j0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,imageUrl:i}){let r=t.data||{},o=r.review||{},u=d2(r.title),c=f2(r.title,r,a),s=g2(m2(e)),f=zr(e),d=v2(r),m=!!d.url,v=m?d.url:o.url||f,A=i||F0(e);return{id:`airedale-buying-guide-${n}-${a}`,url:v,image:A,fallbackImage:A,title:u,brand:p2(r),productName:u,merchant:"",rawPrice:d.rawPrice,rawMsrp:d.rawMsrp,price:d.rawPrice>0?String(d.rawPrice):"",msrp:d.rawMsrp>0?String(d.rawMsrp):"",currency:d.currency,isoCurrency:"",isCheckPrice:d.rawPrice<=0,savingLabel:"",savingType:"none",isPrime:!1,starRating:yf(r),description:"",text:"",subtitle:Ot(r.subtitle||""),pros:Array.isArray(r.pros)?r.pros:[],cons:Array.isArray(r.cons)?r.cons:[],...l,documentUrl:zr(e),modifiedDate:hf(e),isFeatured:!1,isBuyingGuideProduct:!0,buyingGuideBadge:h2(c,s),hawkModelName:y2(r.hawk),hasCommerceOffer:m,sourceArticleUrl:f}}function b2(e){return fi(e)||$e(e.documentnametext)||$e(e.documentname)}function Iu(e){if(Array.isArray(e))return e.map(Iu).find(Boolean)||"";if(e&&typeof e=="object"){let n=e,a=$e(n["data-widget-type"]||n.dataWidgetType||n.widgetType).toLowerCase(),l=$e(n["data-model-name"]||n.dataModelName||n.modelName);return a==="review"&&l?l:Object.values(n).map(Iu).find(Boolean)||""}if(typeof e!="string")return"";let t=[e,e.replace(/\\"/g,'"').replace(/\\u0022/gi,'"')];for(let n of t){try{let l=Iu(JSON.parse(n));if(l)return l}catch{}let a=n.match(/["']data-widget-type["']\s*:\s*["']review["'][\s\S]{0,1500}?["']data-model-name["']\s*:\s*["']([^"']+)["']/i);if(a?.[1])return a[1].trim()}return""}function fi(e){let t=$e(e.articlehawkmodels);if(t)return t;for(let n of[e.articlepage,e.articlebodypageblock,e.articlepageblock,e.fepjson,e.articlebodyclean]){let a=Iu(n);if(a)return a}return""}function P0(e){return(Array.isArray(e)?e:[e]).map(t=>Ot($e(t))).filter(Boolean)}function Y0({article:e,articleIdentity:t,authorProfile:n}){let a=Ot(fi(e)),l=Ot(b2(e)),i=zr(e),r=F0(e),o=Ot($e(e.productverdict));return{id:`airedale-review-${t}`,url:i,image:r,fallbackImage:r,title:l,brand:"",productName:l,merchant:"",rawPrice:0,rawMsrp:0,price:"",msrp:"",currency:"",isoCurrency:"",isCheckPrice:!0,savingLabel:"",savingType:"none",isPrime:!1,starRating:yf({rating:e.productrating}),description:o,text:o,...n,documentUrl:i,modifiedDate:hf(e,!0),isFeatured:!1,isReviewProduct:!0,hawkModelName:a||l,hasCommerceOffer:!1,sourceArticleUrl:i,pros:P0(e.productpros),cons:P0(e.productcons)}}function Ot(e){return typeof e=="string"?ne(e):e}function V0({article:e,block:t,articleIdentity:n,blockIndex:a,authorProfile:l,currencyString:i,isoCurrency:r,presentation:o,pricing:u}){let c=t.data||{},{isFeatured:s,externalUrl:f,summaryTitle:d,description:m,imageUrl:v,merchantName:A}=o,{rawPrice:b,rawMsrp:h,savingLabel:g}=u;return{id:`airedale-${n}-${a}`,url:f,image:v,fallbackImage:v,title:Ot(d),brand:Ot(c.brand||""),productName:Ot(c.productName||""),merchant:Ot(A),rawPrice:b,rawMsrp:h,price:b>0?b.toString():"",msrp:h>0?h.toString():"",currency:i,isoCurrency:r,isCheckPrice:!b,savingLabel:g,savingType:h>b?"amount":"none",isPrime:!1,starRating:yf(c),description:Ot(m),text:Ot(c.text||""),...l,documentUrl:zr(e),modifiedDate:hf(e),isFeatured:s,hasCommerceOffer:!!f}}function X0(e,t){let n=t.data||{},a=t.type==="featured-product",l=n.link||{},i=n.image||{};n.brand&&(n.brand=n.brand.replace(/^\d+\.\s*/,"").trim());let r=a?n.url:l.href||null,o=a?n.name||n.brand:n.productName||l.label||(Array.isArray(e.articlename)?e.articlename[0]:e.articlename),u=a?n.strapline||"":n.text||"";if(!a&&!n.productName&&n.text){let f=n.text.split(/<br\s*\/?>/i);if(f.length>1)o=f[0].replace(/<[^>]+>/g,"").trim(),u=f.slice(1).join(" ").replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();else{let d=n.text.match(/<strong>(.*?)<\/strong>/);d&&(o=d[1].replace(/<[^>]+>/g,"").trim(),o.endsWith(":")&&(o=o.slice(0,-1)))}}let c=a?i.mos:i.src||null;c?.startsWith("//")&&(c=`https:${c}`),u=u.replace(/<br\s*\/?>/gi," ").replace(/<\/?(p|div)[^>]*>/gi," ").replace(/<[^>]+>/g,"").replace(/\s+/g," ").replace(/View Deal$/i,"").trim();let s=n.retailer||"";if(!s&&r)try{s=new URL(r).hostname.replace("www.","").split(".")[0],s=s.charAt(0).toUpperCase()+s.slice(1)}catch{}return s||(s="Retailer"),{isFeatured:a,externalUrl:r,summaryTitle:o,description:u,imageUrl:c,merchantName:s}}function Q0(e,t){let n=e.data||{},a=e.type==="featured-product",l=n.price||{},i=0,r=0;a?(i=typeof n.salePrice=="number"&&n.salePrice>0?n.salePrice:typeof n.price=="number"?n.price:0,r=typeof n.salePrice=="number"&&typeof n.price=="number"&&n.price>n.salePrice?n.price:0):(i=l.amount?parseFloat(l.amount):0,r=l.amountWas?parseFloat(l.amountWas):0);let o=0,u="";return i>0&&r>i&&(o=parseFloat((r-i).toFixed(2)),u=`Save ${t}${o}`),{rawPrice:i,rawMsrp:r,savingLabel:u}}function A2(e,t){let n=e.indexOf(t);if(n<1)return"";let a=e[n-1]?.data||{},i=a.slides?.[0]?.image||a.image||a;return i?.src||i?.mos||""}function Hr(e,{activeRegionCode:t,targetIso:n,selectedBrands:a,priceRange:l,discountAmount:i,authorHandle:r,authorName:o,createFallbackIdentity:u=Math.random,includeBuyingGuideProducts:c=!1,includeCollections:s=!0,includeDeals:f=!0,includeReviewProducts:d=!1,website:m}){let v=[],A=new Set;return e.forEach(b=>{if(d&&Kt(b)==="review"){v.push(Y0({article:b,articleIdentity:b.id||u(),authorProfile:Vu(b,r,o)}));return}if(!b.articlepage)return;let h=ui(b),g=ci(h,c,{includeCollections:s,includeDeals:f});(f===!1||s===!1)&&!g.some(y=>y.type==="buying-guide")&&!Ia(b,f,s,m)||g.forEach((y,p)=>{if(y.type==="buying-guide"){v.push(j0({article:b,block:y,articleIdentity:b.id||u(),blockIndex:p,authorProfile:Vu(b,r,o),imageUrl:A2(h,y)}));return}let{isoCurr:C,currencyStr:R}=di(y,t);if(C!==n)return;let T=y.data||{},M=X0(b,y),{externalUrl:S}=M,D=Q0(y,R),{rawPrice:G,rawMsrp:Se}=D;if(!(a&&a.length>0&&!si(T,a))&&ba(G,l)&&Aa(G,Se,i)){if(S){if(A.has(S))return;A.add(S)}v.push(V0({article:b,block:y,articleIdentity:b.id||u(),blockIndex:p,authorProfile:Vu(b,r,o),currencyString:R,isoCurrency:C,presentation:M,pricing:D}))}})}),v}function gi(e,t){return Hr(e,{...t,selectedBrands:[],priceRange:"all",discountAmount:"0"})}function K0(e,t){return Hr(e,t)}function Ur(e){return(Array.isArray(e)?e:[e]).filter(n=>typeof n=="string").map(n=>n.trim())}function Ju(e){return e?.trim().toLowerCase()==="freeform"}function pf(e){return!!e&&!/[^\p{L}\p{N}\s]/u.test(e)}function vf(e){let t=Ur(e.articletag),n=Ur(e.articletaghandle),a=Ur(e.articletagtype),l=new Map;t.forEach((o,u)=>{let c=n[u];!Ju(a[u])||!c||!pf(o)||l.set(c.toLowerCase(),{handle:c,label:o,requestValue:o})});let i=Ur(e.articletagtypetag),r=Ur(e.articletagtypetaghandle);return i.forEach((o,u)=>{let[c,...s]=o.split("|"),[f,...d]=(r[u]||"").split("|"),m=s.join("|").trim(),v=d.join("|").trim();!Ju(c)||!Ju(f)||!v||!pf(m)||l.has(v.toLowerCase())||l.set(v.toLowerCase(),{handle:v,label:m,requestValue:m})}),r.forEach(o=>{let[u,...c]=o.split("|"),s=c.join("|").trim();!Ju(u)||!s||!pf(s)||l.has(s.toLowerCase())||l.set(s.toLowerCase(),{handle:s,label:s})}),[...l.values()]}function Z0(e,t){if(t)return e.find(n=>n.handle.toLowerCase()===t.toLowerCase())?.requestValue}function mi(e,t){let n=(Array.isArray(t)?t:[t]).filter(a=>typeof a=="string").map(a=>a.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(a=>vf(a).some(l=>n.includes(l.handle.toLowerCase())))}function w2(e){let t=new Map;return Array.isArray(e.articlecategory)?(e.articlecategory.forEach(n=>{if(typeof n!="string")return;let a=n.trim();a===a.toLowerCase()&&(a=a.replace(/\b\w/g,l=>l.toUpperCase())),a&&!t.has(a.toLowerCase())&&t.set(a.toLowerCase(),{handle:a,label:a})}),[...t.values()]):[]}function W0(e,t,n){let a={},l={},i={};e.forEach(u=>{let c=[];if(t.includeReviewProducts&&Kt(u)==="review"&&c.push(u.id||u.documenturl||u.documenthandle||""),u.articlepage)try{let s=ui(u),f=ci(s,t.includeBuyingGuideProducts,{includeCollections:t.includeCollections,includeDeals:t.includeDeals});if((t.includeDeals===!1||t.includeCollections===!1)&&!f.some(d=>d.type==="buying-guide")&&!Ia(u,t.includeDeals,t.includeCollections,t.website))return;f.forEach(d=>{if(d.type==="buying-guide"){c.push(d.id||JSON.stringify(d.data||{}));return}if(di(d,t.activeRegionCode).isoCurr!==t.targetIso)return;let{rawPrice:m,rawMsrp:v}=Xu(d);if(!ba(m,t.priceRange)||!Aa(m,v,t.discountAmount))return;let A=d.data||{};if(t.selectedBrands&&t.selectedBrands.length>0&&!si(A,t.selectedBrands))return;let h=d.type==="featured-product"?A.primaryLink:A.link,g=A.url||A.link&&A.link.url||h&&h.url;c.push(g||JSON.stringify(A))})}catch{}c.length!==0&&n(u).forEach(s=>{let f=s.handle.toLowerCase(),d=Object.keys(a).find(m=>m.toLowerCase()===f);d||(d=s.handle,a[d]=new Set,l[d]=s.label,i[d]=s.requestValue),c.forEach(m=>a[d].add(m))})});let r={};return Object.keys(a).forEach(u=>{r[u]=a[u].size}),{tags:Object.keys(r).map(u=>({handle:u,label:l[u]||u,requestValue:i[u]})).sort((u,c)=>r[c.handle]-r[u.handle]),tagCounts:r}}function $u(e,t){let{tags:n,tagCounts:a}=W0(e,t,w2);return{tags:n.map(l=>l.label),tagCounts:a}}function ec(e,t){let{tags:n,tagCounts:a}=W0(e,t,vf);return{tags:n,tagCounts:a}}function S2(e,t){return e.documentUrl||e.sourceArticleUrl||e.articleId||`deal-${t}`}function hn(e,t,n){if(t!=="mix"||n!=="date_desc")return e;let a=new Map;e.forEach((o,u)=>{let c=S2(o,u),s=a.get(c)||[];s.push(o),a.set(c,s)});let l=[],i=0,r=!0;for(;r;)r=!1,a.forEach(o=>{let u=o[i];u&&(l.push(u),r=!0)}),i+=1;return l}var I0="compact-v1",C2={brand:"",currency:"",hasCommerceOffer:!1,isoCurrency:"",isCheckPrice:!0,isFeatured:!1,isPrime:!1,merchant:"",merchantId:"",msrp:"",price:"",rawMsrp:0,rawPrice:0,savingLabel:"",savingType:"none"},R2={hasCommerceOffer:!0,hawkPricePending:!1,rawMsrp:0,rawPrice:0};function J0(e){return e.map(t=>{if(!t.isReviewProduct)return t;let n=String(t.sourceArticleUrl||t.documentUrl||t.url||""),a=t.fallbackImage??t.image??"",l={...C2,...t,fallbackImage:a,image:t.image??a,sourceArticleUrl:n,documentUrl:t.documentUrl??n,url:t.url??n,title:t.title??t.productName??"",text:t.text??t.description??"",hawkPricePending:t.hawkPricePending??!!t.hawkModelName,pros:t.pros??[],cons:t.cons??[]};return t.hawkRegionalCommerce&&(l.hawkRegionalCommerce=Object.fromEntries(Object.entries(t.hawkRegionalCommerce).map(([i,r])=>{let o=r,u=o.productName??l.productName,c=o.rawPrice??0,s=o.rawMsrp??0;return[i,{...R2,...o,fallbackImage:o.fallbackImage??a,image:o.image??a,productName:u,title:o.title??u??l.title,price:o.price??(c?String(c):""),msrp:o.msrp??(s?String(s):"")}]}))),l})}function tc(e,t,n=100){let a=new Set(e.slice(0,t).map((i,r)=>i.id||`visible-${r}`)),l=e.slice(0,t).filter(i=>i.isReviewProduct).length;return e.filter((i,r)=>{let o=i.id||`visible-${r}`;return a.has(o)?!0:i.isReviewProduct?(l+=1,l<=n):!1})}function $0(e,t){let n=new Map(t.map((a,l)=>[a.id||`enriched-${l}`,a]));return e.map((a,l)=>n.get(a.id||`enriched-${l}`)||a)}var T2=new Set(["deal","featured-product","gallery","buying-guide","text","section"]);function nc(e){return!!e&&typeof e=="object"}function ev(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function tv(e){try{let t=ev(e);if(!Array.isArray(t)||!t[0])return;let n=t[0],a=typeof n=="string"?ev(n):Array.isArray(n)?n:nc(n)&&"type"in n?t:n;if(!Array.isArray(a))return;let l=a.filter(i=>nc(i)&&T2.has(i.type)).map(i=>i.type==="text"&&i.data?{type:"text",data:{paragraphs:Array.isArray(i.data.paragraphs)?i.data.paragraphs.slice(0,3):void 0,text:typeof i.data.text=="string"?i.data.text.slice(0,500):void 0}}:i.type==="section"&&i.data?{type:"section",data:{text:i.data.text,heading:i.data.heading,title:i.data.title}}:i);return l.length>0?[JSON.stringify(l)]:void 0}catch{return}}function nv(e){if(!Array.isArray(e))return[];let t=!1;return e.map(n=>{if(!nc(n))return n;let a=n.articlepage?tv(n.articlepage):void 0,l=!!(n.articleauthormedia||n.articleauthorrole),i=!!(!t&&(n.articleauthorbio||n.articleauthorlongbio||n.articleauthorsocialnetworks));return i&&(t=!0),{id:n.id,articlename:n.articlename,documentname:n.documentname,documentnametext:n.documentnametext,documenthandle:n.documenthandle,articlecategory:n.articlecategory,articletag:n.articletag,articletaghandle:n.articletaghandle,articletagtype:n.articletagtype,articletagtypetag:n.articletagtypetag,articletagtypetaghandle:n.articletagtypetaghandle,articlecontroltag:n.articlecontroltag,articletype:n.articletype,articleauthor:n.articleauthor,articleauthorhandle:n.articleauthorhandle,articleauthortext:n.articleauthortext,...l?{articleauthorrole:n.articleauthorrole,articleauthormedia:n.articleauthormedia}:{},articlestrapline:n.articlestrapline,articlesocialtitle:n.articlesocialtitle,documenturl:n.documenturl,articlemedia:n.articlemedia,articlehawkmodels:n.articlehawkmodels,productrating:n.productrating,productpros:n.productpros,productcons:n.productcons,productverdict:n.productverdict,contentmodifieddate:n.contentmodifieddate,modifieddate:n.modifieddate,createddate:n.createddate,datepublished:n.datepublished,publisheddate:n.publisheddate,...i?{articleauthorbio:n.articleauthorbio,articleauthorlongbio:n.articleauthorlongbio,articleauthorsocialnetworks:n.articleauthorsocialnetworks}:{},...a?{articlepage:a}:{}}})}function av(e){return Array.isArray(e)?e.map(t=>{if(!nc(t))return t;let n=t.articlepage?tv(t.articlepage):void 0;return{id:t.id,articleid:t.articleid,articlename:t.articlename,documentname:t.documentname,documentnametext:t.documentnametext,documenthandle:t.documenthandle,articleauthor:t.articleauthor,articleauthorhandle:t.articleauthorhandle,articleauthortext:t.articleauthortext,articleauthorrole:t.articleauthorrole,articleauthormedia:t.articleauthormedia,articleauthorbio:t.articleauthorbio,articleauthorlongbio:t.articleauthorlongbio,articleauthorsocialnetworks:t.articleauthorsocialnetworks,articlecategory:t.articlecategory,articletag:t.articletag,articletaghandle:t.articletaghandle,articletagtype:t.articletagtype,articletagtypetag:t.articletagtypetag,articletagtypetaghandle:t.articletagtypetaghandle,articletype:t.articletype,articlestrapline:t.articlestrapline,articlesocialtitle:t.articlesocialtitle,documenturl:t.documenturl,articlemedia:t.articlemedia,articlehawkmodels:t.articlehawkmodels,productrating:t.productrating,productpros:t.productpros,productcons:t.productcons,productverdict:t.productverdict,url:t.url,contentmodifieddate:t.contentmodifieddate,modifieddate:t.modifieddate,createddate:t.createddate,datepublished:t.datepublished,publisheddate:t.publisheddate,content:t.content,dek:t.dek,image_thumbnail:t.image_thumbnail,intro:t.intro,paragraphs:t.paragraphs,strapline:t.strapline,subtitle:t.subtitle,title:t.title,...n?{articlepage:n}:{}}}):[]}function hi(e){if(!e?.modifiedDate)return 0;let t=Array.isArray(e.modifiedDate)?e.modifiedDate[0]:e.modifiedDate,n=new Date(t).getTime();return Number.isNaN(n)?0:n}function $a(e){return e?.hasCommerceOffer===!0?!0:e?.hasCommerceOffer===!1?!1:!!(!e?.isBuyingGuideProduct&&!e?.isReviewProduct&&e?.url)}function an(e,t,n=!0){let a=!0;t==="date_desc"?e.sort((l,i)=>hi(i)-hi(l)):t==="price_asc"?e.sort((l,i)=>l.rawPrice-i.rawPrice):t==="price_desc"?e.sort((l,i)=>i.rawPrice-l.rawPrice):t==="discount_desc"?e.sort((l,i)=>{let r=l.rawMsrp>l.rawPrice?l.rawMsrp-l.rawPrice:0;return(i.rawMsrp>i.rawPrice?i.rawMsrp-i.rawPrice:0)-r}):t==="rating_desc"?e.sort((l,i)=>{let r=Number(l.starRating)||0;return(Number(i.starRating)||0)-r||hi(i)-hi(l)}):t==="scored_first"?e.sort((l,i)=>{let r=Number(l.starRating)>0?1:0;return(Number(i.starRating)>0?1:0)-r||hi(i)-hi(l)}):a=!1,a&&n&&e.sort((l,i)=>Number($a(i))-Number($a(l)))}function lv(e,t,n){let a=e;if(!a&&t){let l=n.find(i=>i.toLowerCase()===t?.toLowerCase());l&&(a=l)}return a}function Gr(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(a=>a.articlecategory&&Array.isArray(a.articlecategory)&&a.articlecategory.some(l=>{if(!l||typeof l!="string")return!1;let i=l.toLowerCase(),r=i.split(":::");return i===n||r[0]===n||i.includes(n)}))}function iv(e){let t=bt(e.region);return{activeRegionCode:t,targetIso:nn(t)}}function el(e,t,{discountAmount:n,priceRange:a}={}){let l=!!(a&&a!=="all"),i=!!(n&&n!=="0"&&n!=="all");return!t?.length&&!l&&!i?e:e.filter(r=>!r.isBuyingGuideProduct&&!r.isReviewProduct?!0:t?.length&&!si({brand:r.brand},t)||l&&(!Number(r.rawPrice)||!ba(Number(r.rawPrice),a))?!1:Aa(Number(r.rawPrice)||0,Number(r.rawMsrp)||0,n))}function E2(e,t){let n=e.articleauthorhandle||[],a=e.articleauthor||[],l=e.articleauthortext||[],i=new Set([t.handle.toLowerCase(),t.fullName.toLowerCase(),t.name.toLowerCase()]);return[...n,...a,...l].some(r=>i.has(String(r||"").toLowerCase()))}function bf(e,t,n){let a=Object.fromEntries(e.map(l=>[l.handle,0]));return t.forEach(l=>{let i=gi([l],n).length;i!==0&&e.forEach(r=>{E2(l,r)&&(a[r.handle]+=i)})}),a}function Af(e,t){let n=Yu(e,t.authorHandle,t.authorName),a=t.selectedArticleId?n.filter(v=>v.id===t.selectedArticleId):n,{activeRegionCode:l,targetIso:i}=iv(t),{tags:r,tagCounts:o}=$u(a,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),u=lv(t.activeDealTag,t.query,r),c=Gr(a,u),{tags:s,tagCounts:f}=ec(c,{activeRegionCode:l,targetIso:i,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),m=(t.activeFreeformTags?.length?t.activeFreeformTags:t.activeFreeformTag?[t.activeFreeformTag]:[]).flatMap(v=>{let A=s.find(b=>b.handle.toLowerCase()===v.toLowerCase());return A?[A.handle]:[]});return{activeDealTag:u,activeFreeformTag:m[0]||null,activeFreeformTags:m,activeRegionCode:l,authorArticles:n,freeformTagCounts:f,freeformTags:s,tagCounts:o,tags:r,targetArticles:mi(c,m),targetIso:i}}function ac(e,t,n,a){let l=Zu(e,{activeRegionCode:n,targetIso:a,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),i=Hr(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});an(i,t.sort,t.prioritiseCommercialProducts);let r=hn(el(i,t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange}),t.productSelection,t.sort).map(o=>(o.isBuyingGuideProduct||o.isReviewProduct)&&o.hawkModelName?{...o,hawkPricePending:!0}:o);return{brands:l,displayedDeals:r,extractedDeals:i}}function rv(e,t){let{activeRegionCode:n,targetIso:a}=iv(t),l=kr(e,t.website||"tomsguide"),i=e.filter(o=>gi([o],{activeRegionCode:n,targetIso:a,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}).length>0),r=el(Hr(e,{activeRegionCode:n,targetIso:a,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),t.selectedBrands,{discountAmount:t.discountAmount,priceRange:t.priceRange});return{authorCount:Or(l,i).length,deals:r}}function ov({allArticles:e,authorArticles:t,inventoryArticles:n,bakeReviewInventory:a,brands:l,couponMap:i,currentDealTag:r,currentFreeformTags:o,displayedDeals:u,options:c,resultCount:s,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}){let h=kr(e,c.website||"tomsguide"),g=bf(h,n,{activeRegionCode:bt(c.region),targetIso:nn(bt(c.region)),selectedBrands:c.selectedBrands,priceRange:c.priceRange,discountAmount:c.discountAmount,includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}),y=Or(h,e.filter(C=>gi([C],{activeRegionCode:bt(c.region),targetIso:nn(bt(c.region)),includeBuyingGuideProducts:c.includeBuyingGuideProducts,includeCollections:c.includeCollections,includeDeals:c.includeDeals,includeReviewProducts:c.includeReviewProducts,website:c.website}).length>0)),p=Number(s)||12;return{activeDealTag:r,activeFreeformTag:o[0]||null,activeFreeformTags:o,allDeals:a?tc(u,p):u,authorArticles:nv(t),authors:Fu(y,g),brands:l,couponMap:i,deals:u.slice(0,p),reviewInventoryBaked:a,tagCounts:f,tags:d,freeformTagCounts:m,freeformTags:v,totalAuthorCount:A,totalDealCount:b}}function D2(e){return e&&e.widget&&e.widget.data&&Array.isArray(e.widget.data.offers)?e.widget.data.offers:e&&e.data&&Array.isArray(e.data.offers)?e.data.offers:Array.isArray(e)?e:e&&Array.isArray(e.offers)?e.offers:e&&e.offers&&Array.isArray(e.offers.offer)?e.offers.offer:e&&Array.isArray(e.data)?e.data:[]}function uv(e,t,n){let a={...n},l=new Set;return D2(e).forEach(r=>{let o="";r.merchant_name?o=r.merchant_name:r.merchant&&r.merchant[0]&&r.merchant[0].name?o=r.merchant[0].name:r.merchant&&r.merchant.name?o=r.merchant.name:r.retailer&&(o=r.retailer),o&&l.add(o.toLowerCase())}),t.forEach(r=>{a[r]=l.has(r.toLowerCase())?"has":"none"}),a}function cv(e){let t=[];return e?.widget?.data?.offers?t=e.widget.data.offers:e?.data?.offers?t=e.data.offers:Array.isArray(e)?t=e:e?.offers?.offer?t=Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers&&(t=Array.isArray(e.offers)?e.offers:[e.offers]),t}async function sv({couponMap:e,couponUrl:t,fetcher:n=fetch,merchants:a}){if(!t)return e;try{let l=await n(t.toString());return uv(await l.json(),a,e)}catch{let l={...e};return a.forEach(i=>{l[i]="none"}),l}}function dv({enrichingBuyingGuides:e,error:t,loading:n,loadingMore:a,refreshingFeed:l}){return t?"error":a?"loading_more":n?"loading_inventory":l?"refreshing_inventory":e?"enriching_visible_cards":"ready"}function fv(e,t){let n=Yu(Ja(e),t.authorHandle,t.authorName),a=bt(t.region),l=nn(a),{tags:i,tagCounts:r}=$u(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),o=Zu(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,website:t.website}),{tags:u,tagCounts:c}=ec(n,{activeRegionCode:a,targetIso:l,priceRange:t.priceRange,discountAmount:t.discountAmount,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website}),s=K0(n,{activeRegionCode:a,targetIso:l,selectedBrands:t.selectedBrands,priceRange:t.priceRange,discountAmount:t.discountAmount,authorHandle:t.authorHandle,authorName:t.authorName,includeBuyingGuideProducts:t.includeBuyingGuideProducts,includeCollections:t.includeCollections,includeDeals:t.includeDeals,includeReviewProducts:t.includeReviewProducts,website:t.website});an(s,t.sort,t.prioritiseCommercialProducts);let f=hn(s,t.productSelection,t.sort);return{authorArticles:n,brands:o,deals:f,tagCounts:r,tags:i,freeformTagCounts:c,freeformTags:u}}var x2="fc-author-commerce-widget",yn="airedale-feeds";var lc=null;function gv(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function wf(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error),e.onabort=()=>n(e.error)})}function Sf(){return lc||(typeof window>"u"||typeof window.indexedDB>"u"?Promise.resolve(null):(lc=new Promise(e=>{let t=window.indexedDB.open(x2,13);t.onupgradeneeded=()=>{let n=t.result;n.objectStoreNames.contains(yn)||n.createObjectStore(yn,{keyPath:"key"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),lc))}function mv({authorHandle:e,authorName:t,includeBuyingGuideProducts:n,includeCollections:a,includeDeals:l,includeReviewProducts:i,articleCategory:r,articleTag:o,pageStarts:u,reviewPageStarts:c,loadAllReviewPages:s,website:f}){return["v13",f||"tomsguide",e||"",t||"",n?"buying-guides":"",a===!1?"no-collections":"collections",l===!1?"no-deals":"deals",i?"reviews":"",r||"",o||"",u?.join(",")||"",c?.join(",")||"",s===!1?"review-pages-partial":""].map(d=>encodeURIComponent(d)).join("|")}async function M2(e){let t=await Sf();if(!t)return;let n=t.transaction(yn,"readwrite"),a=wf(n);n.objectStore(yn).delete(e),await a}async function hv(e,t=Date.now()){try{let n=await Sf();if(!n)return null;let a=n.transaction(yn,"readonly"),l=await gv(a.objectStore(yn).get(e));if(!l||l.schemaVersion!==13||!Array.isArray(l.articles)||l.articles.length===0)return null;let i=Math.max(0,t-l.cachedAt);return i>864e5?(M2(e),null):{articles:l.articles,cachedAt:l.cachedAt,isFresh:i<=6e5}}catch{return null}}async function _2(e){let t=e.transaction(yn,"readwrite"),n=wf(t),a=t.objectStore(yn);(await gv(a.getAll())).sort((i,r)=>r.cachedAt-i.cachedAt).slice(10).forEach(i=>a.delete(i.key)),await n}async function yv(e,t,n=Date.now()){if(t.length!==0)try{let a=await Sf();if(!a)return;let l=a.transaction(yn,"readwrite"),i=wf(l);l.objectStore(yn).put({articles:t,cachedAt:n,key:e,schemaVersion:13}),await i,await _2(a)}catch{}}var Cf=[];var Ef=[],Rf=0;function pv(){for(;Rf<4&&Ef.length>0;){let e=Ef.shift();if(!e)return;Rf+=1,e.run().then(e.resolve,e.reject).finally(()=>{Rf-=1,pv()})}}function B2(e){return new Promise((t,n)=>{Ef.push({reject:n,resolve:t,run:e}),pv()})}function Tf(e){Cf.push(e),Cf.length>100&&Cf.shift()}async function ic(e,t,n=4){let a=new Array(e.length),l=0,i=Math.min(Math.max(1,n),e.length);return await Promise.all(Array.from({length:i},async()=>{for(;l<e.length;){let r=l;l+=1,a[r]=await t(e[r],r)}})),a}async function yi(e,t){return B2(async()=>{let n=t.fetcher||fetch,a=Date.now(),l=new AbortController,i=!1,r=()=>l.abort();if(t.signal?.aborted)return Tf({durationMs:0,outcome:"aborted",source:t.source,startedAt:a}),{data:null,response:null};t.signal?.addEventListener("abort",r,{once:!0});let o=setTimeout(()=>{i=!0,l.abort()},8e3);try{let u=await n(e,{signal:l.signal}),c=u.ok?await u.json():null;return Tf({durationMs:Date.now()-a,outcome:u.ok?"succeeded":"failed",source:t.source,startedAt:a}),{data:c,response:u}}catch{return Tf({durationMs:Date.now()-a,outcome:i?"timed_out":t.signal?.aborted?"aborted":"failed",source:t.source,startedAt:a}),{data:null,response:null}}finally{clearTimeout(o),t.signal?.removeEventListener("abort",r)}})}var xf="https://airedale.futurecdn.net/feeds/feed_1786707986217.json",N2="https://airedale.futurecdn.net/feeds/feed_1786702796175.json",O2="https://airedale.futurecdn.net/feeds/feed_1787582137748.json",k2=2,Df=new Map,vv=new Map;function L2(e){return!e.parameter||!e.value?"":`&${e.parameter}=${encodeURIComponent(e.value)}`}function z2(e,t="",n=!1,a,l,{includeCollections:i=!0,includeDeals:r=!0}={},o){let u=Ku(e,{includeBuyingGuideProducts:n,includeCollections:i,includeDeals:r}),c=a?`&articleCategory=${encodeURIComponent(a)}`:"",s=o?`&articleTag=${encodeURIComponent(o)}`:"";return u.scopes.flatMap(f=>(l||u.pageStarts).map(d=>`${xf}?site=${e}&limit=${50}&start=${d}${L2(f)}${t}${c}${s}`))}function bv(e,t="",n,a=0,l){let i=e==="pcgamer"?"&articleControlTag=channel_gaming_hardware":"",r=n?`&articleCategory=${encodeURIComponent(n)}`:"",o=l?`&articleTag=${encodeURIComponent(l)}`:"";return`${N2}?site=${encodeURIComponent(e)}&articleType=review&limit=${50}&start=${a}${i}${t}${r}${o}`}function H2(e,t){return t!=="pcgamer"?e:e.map(n=>{let a=Array.isArray(n.articlecontroltag)?n.articlecontroltag:[];return a.some(l=>String(l).replace(/[^a-z0-9]/gi,"").toLowerCase()==="channelgaminghardware")?n:{...n,articlecontroltag:[...a,"channel_gaming_hardware"]}})}function U2(e,t){return`${O2}?site=${encodeURIComponent(e)}&documentHandle=${encodeURIComponent(t)}&limit=1`}async function G2(e,t){let n=`${e}|${t}`,a=vv.get(n);if(a)return a;let l=yi(U2(e,t),{source:"review-model-resolver"}).then(({data:i})=>i?ff(i)[0]:null).then(i=>i?fi(i):"").catch(()=>"");return vv.set(n,l),l}async function Mf(e,t,n,a="date_desc"){let l=o=>{let u=[o.datepublished,o.publisheddate,o.createddate,o.contentmodifieddate,o.modifieddate].find(s=>s!=null&&String(s).trim()),c=new Date(Array.isArray(u)?u[0]:u).getTime();return Number.isFinite(c)?c:0},i=o=>{let u=Array.isArray(o.productrating)?o.productrating[0]:o.productrating;return Number(u)||0},r=e.filter(o=>Kt(o)==="review"&&!fi(o)&&typeof o.documenthandle=="string"&&o.documenthandle.trim()).sort((o,u)=>{let c=i(o),s=i(u);return a==="rating_desc"?s-c||l(u)-l(o):a==="scored_first"&&+(s>0)-+(c>0)||l(u)-l(o)}).slice(0,n);return await Promise.all(r.map(async o=>{let u=await G2(t,o.documenthandle);u&&(o.articlehawkmodels=[u])})),e}function Sv(e,t){let n=()=>{yv(e,av(t))};if(typeof window<"u"&&typeof window.requestIdleCallback=="function"){window.requestIdleCallback(n,{timeout:2e3});return}setTimeout(n,0)}function q2(e,t){return e&&e!=="all-authors"?`&articleAuthorHandle=${encodeURIComponent(e)}`:t&&t!=="All authors"&&t!=="all-authors"?`&articleAuthor=${encodeURIComponent(t)}`:""}function P2({articleCategory:e,articleTag:t,authorParameter:n}){return!!(n&&!e&&!t)}async function Cv({authorHandle:e,authorName:t,fallbackAuthorName:n,includeBuyingGuideProducts:a,includeCollections:l,includeDeals:i,includeReviewProducts:r,onProgress:o,articleCategory:u,articleTag:c,pageStarts:s,reviewPageStarts:f,loadAllReviewPages:d,signal:m,throwOnFailure:v,website:A}){let b=A||"tomsguide",h=q2(e,t),g=[],y=!1,p=!0,C=S=>U0(S,b,a,r,l,i),R=()=>z0(g).map(S=>{let D=fi(S);return D&&!String(S.articlehawkmodels||"").trim()?{...S,articlehawkmodels:[D]}:S}).filter(C),T=()=>{let S=R();S.length>0&&o?.(S)};try{let S=z2(b,h,a,u,s,{includeCollections:l,includeDeals:i},c),D=[];r&&(f||[0]).forEach(q=>{let Ge=bv(b,h,u,q,c);D.push(Ge),S.push(Ge)});let G=async(q,Ge=D.includes(q)?"review-feed":"author-feed")=>{let pe=await yi(q,{signal:m,source:Ge});for(let At=0;At<k2&&!pe.response?.ok&&!m?.aborted;At+=1)pe=await yi(q,{signal:m,source:Ge});let{data:De,response:et}=pe,tl={data:De,isPcGamerHardwareReviewFeed:b==="pcgamer"&&Ge.startsWith("review-feed"),response:et,reviewTotalCount:D.includes(q)&&Number(et?.headers.get("x-total-count"))||null};if(De){let At=ff(De);g.push(...tl.isPcGamerHardwareReviewFeed?H2(At,b):At)}return tl},Se=S.filter(q=>Number(new URL(q).searchParams.get("start")||0)===0),ie=S.filter(q=>!Se.includes(q)),Y=await ic(Se,q=>G(q));T();let ze=await ic(ie,q=>G(q)),Ee=[...Y,...ze];y=Ee.length>0&&Ee.every(q=>!q.response?.ok);let ut=Ee.find(q=>q.reviewTotalCount!==null)?.reviewTotalCount;if(d!==!1&&f&&ut&&ut>f.length*50){let q=new Set(f),Ge=[];for(let De=0;De<ut;De+=50)q.has(De)||Ge.push(De);let pe=await ic(Ge,async De=>await G(bv(b,h,u,De,c),"review-feed-page"));Ee.push(...pe)}p=Ee.every(q=>q.response?.ok)}catch(S){p=!1}if(v&&y)throw new Error("The author feed could not be loaded");let M=R();if(M.length===0&&P2({authorParameter:h,articleCategory:u,articleTag:c}))try{let S=await yi(`${xf}?site=${b}&limit=150${h}`,{signal:m,source:"author-feed-fallback"});if(!S.response?.ok&&n&&(S=await yi(`${xf}?site=${b}&limit=150&articleAuthor=${encodeURIComponent(n)}`,{signal:m,source:"author-feed-fallback"})),S.data){let D=S.data,G=Array.isArray(D)?D:D.data||[];G.length>0&&(M=G.slice(0,150))}}catch(S){}return{articles:M.filter(C),complete:!m?.aborted&&p}}function Av(e,t){let n=Df.get(e);if(n)return n;let a=Cv(t).then(l=>(l.complete&&l.articles.length>0&&Sv(e,l.articles),l)).finally(()=>{Df.delete(e)});return Df.set(e,a),a}async function wv(e,t){let n=await Cv(t);return n.complete&&n.articles.length>0&&Sv(e,n.articles),n}async function Rv({onBackgroundRefresh:e,onProgress:t,...n}){let a=mv(n),l=await hv(a);return l?(t?.(l.articles),l.isFresh||(n.signal?wv(a,n):Av(a,n)).then(({articles:o,complete:u})=>{u&&o.length>0&&e?.(o)}),l.articles):(await(n.signal?wv(a,{...n,onProgress:t}):Av(a,{...n,onProgress:t}))).articles}function Tv(e,t){let n=e.shipping?.prime===!0,a=e.merchant?.name||e.merchant_name||e.retailer||"Retailer";typeof e.merchant=="string"&&(a=e.merchant);let l=null,i=0,r=String(e.model_id||e.id||"");if(r&&t)if(t[r]&&t[r].score!=null)l=parseFloat(t[r].score);else{let o=Object.values(t).find(u=>String(u.model_id)===r||String(u.id)===r);o&&o.score!=null&&(l=parseFloat(o.score))}return l!=null&&(i=Math.round((l>10?l/20:l/2)*2)/2),{isPrime:n,merchant:a,starRating:i>0?i:null}}function Ev(e){let t=String(e.price||e.current_price||"0"),n=String(e.was_price||e.msrp||e.original_price||"0"),a=parseFloat(t.replace(/[^0-9.]/g,""))||0,l=parseFloat(n.replace(/[^0-9.]/g,""))||0,i=a===0||t==="0.00"||t==="0",r=e.currency&&typeof e.currency=="string"?e.currency:e.currency_symbol&&typeof e.currency_symbol=="string"?e.currency_symbol:"$",o=ne(e.percentage_saving_label||"");!o&&l>a&&a>0&&(o=Math.round((l-a)/l*100)+"% OFF");let u=r;return u.includes("&")&&(u.includes("36")?u="$":u.includes("163")||u.includes("pound")?u="\xA3":(u.includes("8364")||u.includes("euro"))&&(u="\u20AC")),{rawPrice:a,rawMsrp:l,currency:u,isCheckPrice:i,savingLabel:o}}function Dv({query:e,region:t,retailer:n,selectedBrands:a,offerType:l,priceRange:i,discountAmount:r,resultCount:o}){let u=new URL("https://search-api.fie.future.net.uk/widget.php");if(u.searchParams.append("model_name",e),t&&t!=="auto"&&u.searchParams.append("area",t),n&&u.searchParams.append("filter_merchant_name",n),a&&a.length>0&&u.searchParams.append("filter_label[text_brand]",a.join(",")),l&&u.searchParams.append("offer",l),i&&i!=="all"){if(i==="under50")u.searchParams.append("filter_max_price","50");else if(i==="over50")u.searchParams.append("filter_min_price","50");else if(i==="over30")u.searchParams.append("filter_min_price","30");else if(i==="over500")u.searchParams.append("filter_min_price","500");else if(i.includes("_")){let[c,s]=i.split("_");c&&u.searchParams.append("filter_min_price",c),s&&u.searchParams.append("filter_max_price",s)}}if(r&&r!=="0"){let c=(100-parseInt(r))/100;u.searchParams.append("min_discount_ratio",c.toString())}return u.searchParams.append("filter_product_types","deals"),u.searchParams.append("rows",String(o||"12")),u}function xv(e){return e?.widget?.data?.offers?e.widget.data.offers:e?.data?.offers?e.data.offers:Array.isArray(e)?e:e?.offers?.offer?Array.isArray(e.offers.offer)?e.offers.offer:[e.offers.offer]:e?.offers?Array.isArray(e.offers)?e.offers:[e.offers]:[]}function Mv(e){let t=[];return e.forEach(n=>{let a=[];Array.isArray(n.offers)?a=n.offers:Array.isArray(n.offer)?a=n.offer:n.offers&&typeof n.offers=="object"?a=[n.offers]:n.offer&&typeof n.offer=="object"&&(a=[n.offer]),a.length>0?a.forEach(l=>{t.push({...n,...l})}):t.push(n)}),t}function _v(e){return e?.widget?.data?.model_info?e.widget.data.model_info:e?.data?.model_info?e.data.model_info:{}}var _f=new Map,F2=3e3,j2=["GB","US"],Bv=6,Y2=["brand","currency","fallbackImage","hasCommerceOffer","hawkPricePending","image","isCheckPrice","merchant","merchantId","modelId","msrp","price","productKey","productName","rawMsrp","rawPrice","savingLabel","title","url"];function Bf(e){return String(e||"").trim().toLowerCase()}function Lv(e){return e==="UK"?"GB":e}function V2(e,t){let n=String(t||"").trim().toUpperCase(),l={AU:["A$","AUD"],CA:["CA$","CAD"],DE:["\u20AC","EUR"],ES:["\u20AC","EUR"],FR:["\u20AC","EUR"],GB:["\xA3","GBP","GB\xA3"],IT:["\u20AC","EUR"],NL:["\u20AC","EUR"],US:["$","USD","US$"]}[e];return!l||l.includes(n)}function Nv(e,t){return String(e.id||`hawk-deal-${t}`)}function X2(e){return e.map(t=>({...t,hasCommerceOffer:!1,hawkPricePending:!!t.hawkModelName,image:t.fallbackImage||t.image||"",isCheckPrice:!0,merchant:"",merchantId:"",msrp:"",price:"",productKey:"",rawMsrp:0,rawPrice:0,savingLabel:"",url:t.sourceArticleUrl||t.documentUrl||t.url}))}function Q2(e){return Y2.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})}function zv(e){return!!((e.isBuyingGuideProduct||e.isReviewProduct)&&e.hawkModelName)}function K2(e){return e.model_image_url||e.model_image||e.product_image||e.image_url||e.image||""}function Z2(e){return e.link||e.url||e.offer_link||""}function W2(e,t){let n=String(t.model_id||t.id||"");return n&&e[n]?e[n]:Object.values(e).find(a=>String(a?.model_id||a?.id||"")===n)||{}}async function Ov(e,t,n){let a=`${t}|${Bf(e)}`;return _f.has(a)||_f.set(a,(async()=>{let l;try{let i=new AbortController;l=setTimeout(()=>i.abort(),F2);let r=await n(Dv({query:e,region:t,resultCount:12}).toString(),{signal:i.signal});if(!r.ok)return null;let o=await r.json(),u=Mv(xv(o)),c=Bf(e),s=u.find(m=>Bf(m.model_name||m.model)===c)||u[0]||null;if(!s)return null;let f=_v(o),d=W2(f,s);return{brand:String(d?.brand||s.brand||"").trim(),modelInfo:f,offer:s}}catch{return null}finally{l&&clearTimeout(l)}})()),_f.get(a)}function kv(e,t,n){return e.map(a=>{let l=String(a.hawkModelName);if(!zv(a)||!t.has(l))return a;let i=t.get(l);if(!i)return{...a,hawkPricePending:!1};let{offer:r}=i.lookup,o=Ev(r),u=Tv(r,i.lookup.modelInfo),c=K2(r),s=Z2(r),f=ne(String(r.model_name||r.model||a.hawkModelName||a.productName||a.title||"").trim());return!(i.region===n&&s&&V2(n,o.currency))?{...a,brand:i.lookup.brand||a.brand,fallbackImage:c?a.image:a.fallbackImage,hawkPricePending:!1,image:c||a.image,productName:f||a.productName,title:f||a.title}:{...a,brand:i.lookup.brand||r.brand||a.brand,currency:o.currency||a.currency,fallbackImage:c?a.image:a.fallbackImage,hasCommerceOffer:!0,hawkPricePending:!1,image:c||a.image,isCheckPrice:o.isCheckPrice,merchant:u.merchant||a.merchant,merchantId:typeof r.merchant=="object"&&r.merchant?.id||"",modelId:r.model_id||"",msrp:o.rawMsrp>0?String(o.rawMsrp):"",price:o.rawPrice>0?String(o.rawPrice):"",productKey:r.product_key||"",productName:f||a.productName,rawMsrp:o.rawMsrp,rawPrice:o.rawPrice,savingLabel:o.savingLabel,title:f||a.title,url:s||a.url}})}async function pi(e,t,n=fetch,a,l=[],i){let r=Lv(t),o=new Map,u=e.filter(zv).map(f=>String(f.hawkModelName)),c=new Set(u),s=Array.from(new Set([...l.filter(f=>c.has(f)),...u])).slice(0,a);for(let f=0;f<s.length;f+=Bv)await Promise.all(s.slice(f,f+Bv).map(async d=>{let m=await Ov(d,r,n),v=m||r==="GB"?null:await Ov(d,"GB",n);o.set(d,m?{lookup:m,region:r}:v?{lookup:v,region:"GB"}:null),i?.(kv(e,o,r))}));return kv(e,o,r)}async function Hv(e,t=fetch){let n=X2(e),a=await Promise.all(j2.map(async i=>[i,await pi(n,i,t)])),l=new Map;return a.forEach(([i,r])=>{r.forEach((o,u)=>{if(!o.hasCommerceOffer)return;let c=Nv(o,u),s=l.get(c)||{};s[i]=Q2(o),l.set(c,s)})}),e.map((i,r)=>{let o=l.get(Nv(i,r));return o?{...i,hawkRegionalCommerce:o}:i})}function Nf(e,t){let n=Lv(t);return e.map(a=>{let l=a.hawkRegionalCommerce?.[n];return l?{...a,...l,hawkPricePending:!1}:a})}function Uv(e,t){let n=Array.from(new Set(e.map(i=>i.merchant).filter(Boolean))),a={};if(n.forEach(i=>{a[i]="loading"}),n.length===0)return{merchants:n,couponMap:a,couponUrl:null};let l=new URL("https://search-api.fie.future.net.uk/widget.php");return l.searchParams.append("model_name","Everything"),l.searchParams.append("filter_merchant_name",n.join(",")),l.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),l.searchParams.append("sort","voucher"),l.searchParams.append("rows","120"),l.searchParams.append("origin","widgets-clientside"),l.searchParams.append("combine_product_types","1"),l.searchParams.append("language","en-GB"),l.searchParams.append("all_filters","false"),l.searchParams.append("exclude_unlabelled","false"),l.searchParams.append("include_specs","false"),t&&t!=="auto"&&l.searchParams.append("area",t),{merchants:n,couponMap:a,couponUrl:l}}function Gv(e,t){let n=new URL("https://search-api.fie.future.net.uk/widget.php");return n.searchParams.append("model_name","Everything"),n.searchParams.append("language","en-GB"),t&&t!=="auto"&&n.searchParams.append("area",t),n.searchParams.append("combine_product_types","1"),n.searchParams.append("filter_merchant_name",e),n.searchParams.append("all_filters","false"),n.searchParams.append("exclude_unlabelled","false"),n.searchParams.append("include_specs","false"),n.searchParams.append("sort","voucher"),n.searchParams.append("distinct_merchants","natural"),n.searchParams.append("filter_product_types","vouchers,offer_deals,newsletter"),n.searchParams.append("rows","50"),n.searchParams.append("origin","widgets-clientside"),n}function Of(e,t,n=!0){if(!e?.length)return e||[];if(t==="date_desc"&&!n)return e;let a=[...e];return an(a,t,n),a}function oc(e,t,n,a=!0){if(n!=="date_desc"||!e?.length)return t;let l=(c,s)=>String(c.id||s),i=new Map(t.map((c,s)=>[l(c,s),c])),r=new Set,o=e.flatMap((c,s)=>{let f=l(c,s);r.add(f);let d=i.get(f);return d?[d]:[]}),u=t.filter((c,s)=>!r.has(l(c,s)));return a?[...o.filter($a),...u.filter($a),...o.filter(c=>!$a(c)),...u.filter(c=>!$a(c))]:[...o,...u]}function qv({activeDealTag:e,activeFreeformTag:t,clickedAuthorOverride:n,compactEmbed:a,compactInventoryExplored:l,compactLoadRequested:i,initialActiveDealTag:r,initialActiveFreeformTag:o,reviewInventoryBaked:u}){return!!(a&&u&&!n&&!i&&!l&&(!e||e===r)&&(!t||t===o))}var Pv=[0,50,100,150,200,250,300,350,400,450],kf=4;function Fv(e){return(Array.isArray(e)?e:[e]).reduce((n,a)=>{if(typeof a!="string"||!a.trim())return n;let l=a.trim();return n.some(i=>i.toLowerCase()===l.toLowerCase())?n:[...n,l]},[])}function J2(e,t){return e.length===t.length&&e.every((n,a)=>n===t[a])}function Lf(e){return e.map(t=>t.trim().toLowerCase()).sort().join("|")}function zf(e){let t=e.initialData,n=qu(e),a=!!(e.preloadReviewInventory&&!n),l=!!(e.preloadReviewInventory&&e.includeReviewProducts&&!e.compactEmbed),i=n?Number(e.resultCount)||12:100,r=n?!1:e.prioritiseCommercialProducts,o=bt(e.region),u=Nf(t?.allDeals||t?.deals||[],o).filter(_=>L0(_,o)),c=va(n?"date_desc":e.sort,!Nr(e)),s=!!(e.priceRange&&e.priceRange!=="all")||!!(e.discountAmount&&e.discountAmount!=="0"&&e.discountAmount!=="all"),f=Ja(t?.authorArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),d=Ja(t?.authorInteractionArticles||[],void 0,Number(e.editorialMaxAgeMonths)||0),[m,v]=(0,N.useState)(()=>Of(u,c,r)),[A,b]=(0,N.useState)(t?.totalDealCount??t?.allDeals?.length??t?.deals?.length??0),[h,g]=(0,N.useState)(t?.totalAuthorCount??t?.authors?.length??0),[y,p]=(0,N.useState)(!t),[C,R]=(0,N.useState)(!1),[T,M]=(0,N.useState)(!1),[S,D]=(0,N.useState)(!1),[G,Se]=(0,N.useState)(t?.couponMap||{}),[ie,Y]=(0,N.useState)(f),[ze,Ee]=(0,N.useState)(f),[ut,q]=(0,N.useState)(t?.tags||[]),[Ge,pe]=(0,N.useState)(t?.tagCounts||{}),[De,et]=(0,N.useState)(t?.freeformTags||[]),[tl,At]=(0,N.useState)(t?.freeformTagCounts||{}),[Pr,qe]=(0,N.useState)(t?.brands||[]),[x,X]=(0,N.useState)(()=>{let _=t?.activeDealTag||e.query;return _&&_.toLowerCase()!=="everything"?_:null}),[$,nl]=(0,N.useState)(()=>Fv(t?.activeFreeformTags||t?.activeFreeformTag)),[r1,vi]=(0,N.useState)(f),[cc,al]=(0,N.useState)(null),[tt,Fr]=(0,N.useState)(!1),[ll,jr]=(0,N.useState)(""),[il,Yr]=(0,N.useState)(""),[o1,u1]=(0,N.useState)(0),[Zt,sc]=(0,N.useState)(e.resultCount?parseInt(e.resultCount):12),[Pf,dc]=(0,N.useState)(!1),[c1,Vr]=(0,N.useState)(null),[fc,s1]=(0,N.useState)(!1),[gc,d1]=(0,N.useState)([0]),Xr=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`:""),mc=(0,N.useRef)(t?`${e.website||"tomsguide"}|${e.authorHandle||""}|${e.authorName||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}|age-${e.editorialMaxAgeMonths||"none"}`:""),f1=(0,N.useRef)(e.website||"tomsguide"),hc=(0,N.useRef)(e.website||"tomsguide"),Ff=(0,N.useRef)(u.length>0),jf=(0,N.useRef)(null),rl=(0,N.useRef)(new Map),g1=(0,N.useRef)({activeDealTag:String(x||"").trim().toLowerCase(),freeformTags:Lf(Fv(t?.activeFreeformTags||t?.activeFreeformTag)),discountAmount:e.discountAmount,priceRange:e.priceRange}),jn=(0,N.useRef)(!1),xe=(0,N.useRef)(!1),bi=(0,N.useRef)(!1),Yf=(_,re,I=tt?ll:e.authorHandle,ve=tt?il:e.authorName)=>[e.website||"tomsguide",I||"",ve||"",bt(e.region),String(_||"").trim().toLowerCase(),Lf(re),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),Vf=(_,re)=>{let I=g1.current;return!!(e.compactEmbed&&t?.brands?.length&&String(_||"").trim().toLowerCase()===I.activeDealTag&&Lf(re)===I.freeformTags&&e.priceRange===I.priceRange&&e.discountAmount===I.discountAmount)},Qr=(_,re)=>{let I=rl.current.get(Yf(_,re));if(I){qe(I);return}if(Vf(_,re)){qe(t?.brands||[]);return}},ol=()=>jn.current||n?void 0:e.productSelection;(0,N.useEffect)(()=>{al(null)},[e.authorName,e.authorHandle]),(0,N.useLayoutEffect)(()=>{let _=e.website||"tomsguide";hc.current!==_&&(hc.current=_,v(()=>[]),Y(()=>[]),Ee(()=>[]),vi(()=>[]),q(()=>[]),pe({}),et(()=>[]),At({}),qe(()=>[]),rl.current.clear(),Se({}),Fr(!1),jr(""),Yr(""),al(null),X(null),nl([]),g(0),b(0),M(!1),dc(!1),Vr(null),bi.current=!1,R(!0),p(!0))},[e.website]),(0,N.useEffect)(()=>{e.compactEmbed||typeof document>"u"||setTimeout(()=>{document.dispatchEvent(new CustomEvent("processArticle"))},100)},[m,Zt,e.query,x,$]),(0,N.useEffect)(()=>{e.resultCount&&(sc(parseInt(e.resultCount,10)||12),Vr(null))},[e.resultCount]),(0,N.useEffect)(()=>{Vr(null)},[x,$,e.authorHandle,e.authorName,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands,e.sort]),(0,N.useEffect)(()=>{if(!t||!e.includeBuyingGuideProducts&&!e.includeReviewProducts||e.compactEmbed&&(xe.current||e.refreshDealsOnViewport))return;let _=bt(e.region),re=Nf(t.allDeals||t.deals||[],_);if(_==="unavailable"){let Wt=re.map(ln=>(ln.isBuyingGuideProduct||ln.isReviewProduct)&&ln.hawkModelName?{...ln,hawkPricePending:!1}:ln);an(Wt,c,r),v(hn(Wt,ol(),c));return}let I=el(re,e.selectedBrands),ve=Number(e.resultCount)||12,Sa=typeof navigator>"u"?void 0:navigator.connection,Ca=!Sa?.saveData&&!Sa?.effectiveType?.includes("2g")&&(!e.compactEmbed||!!e.warmInventory),wi=s?I:t.reviewInventoryBaked?I.slice(0,Zt+(Ca?ve:0)):re;if(!wi.some(Wt=>(Wt.isBuyingGuideProduct||Wt.isReviewProduct)&&Wt.hawkModelName))return;let cl=!0;return M(!0),pi(wi,_).then(Wt=>{if(!cl)return;let ln=t.reviewInventoryBaked?$0(re,Wt):Wt,Zr=el(ln,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(nt=>(nt.isBuyingGuideProduct||nt.isReviewProduct)&&nt.hawkModelName?{...nt,hawkPricePending:!1}:nt);an(Zr,c,r),v(hn(Zr,ol(),c)),qe(nt=>t?.brands?.length?nt:mf(nt,Wt))}).finally(()=>{cl&&M(!1)}),()=>{cl=!1}},[t,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,e.selectedBrands,e.discountAmount,e.priceRange,c,e.productSelection,Zt,e.resultCount,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,x,$]),(0,N.useEffect)(()=>{let _=!0,re=new AbortController,I=bi.current,ve=!e.refreshDealsOnViewport&&qv({activeDealTag:x,activeFreeformTag:$[0]||null,clickedAuthorOverride:tt,compactEmbed:e.compactEmbed,compactInventoryExplored:xe.current,compactLoadRequested:fc,initialActiveDealTag:t?.activeDealTag,initialActiveFreeformTag:t?.activeFreeformTag,reviewInventoryBaked:t?.reviewInventoryBaked}),Sa=u.length>0,Ca=!!(n&&e.compactEmbed&&!xe.current),wi=!!(Ca&&e.warmInventory&&ie.length===0&&m.length>0),cl=!!(ve||e.compactEmbed&&Sa&&ie.length===0&&!tt&&!fc&&!xe.current&&!e.refreshDealsOnViewport&&(!n||!e.warmInventory));return!cl&&!I&&!wi&&(R(!0),e.compactEmbed&&xe.current&&v([])),(async()=>{D(!1),M(!1);let ln=m.length>0||ut.length>0||De.length>0||Pr.length>0,Zr=cl;try{if(!e.authorName&&!e.authorHandle){v([]),Y([]),vi([]),q([]),et([]),qe([]),al(null),X(null),nl([]),p(!0);return}let nt=tt?ll:e.authorHandle,Wr=tt?il:e.authorName,Ir=`${e.website||"tomsguide"}|${nt||""}|${Wr||""}|${e.includeBuyingGuideProducts?"buying-guides":""}|${e.includeReviewProducts?"reviews":""}|${e.includeDeals===!1?"no-deals":"deals"}|${e.includeCollections===!1?"no-collections":"collections"}`,yc=`${Ir}|${e.compactEmbed&&x||""}|${e.compactEmbed?$.join(","):""}|${e.compactEmbed&&xe.current?"expanded":e.refreshDealsOnViewport?"viewport-refresh":"initial"}|lightweight-pages-${Ca?gc.join(","):"all"}|age-${e.editorialMaxAgeMonths||"none"}`,It=ie,Kf=ut,O1=Z0(De,$.length===1?$[0]:null),Zf=()=>({activeDealTag:x,activeFreeformTag:$[0]||null,activeFreeformTags:$,authorHandle:nt,authorName:Wr,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,priceRange:e.priceRange,prioritiseCommercialProducts:r,productSelection:ol(),query:e.query,region:e.region,selectedArticleId:cc,selectedBrands:e.selectedBrands,sort:c,website:e.website}),Wf=mc.current!==yc||It.length===0,Ra=[],pc=!1,If=(de,zt=!1)=>{if(!_||zt&&pc)return;let pn=el(de,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange});an(pn,c,r);let Ei=hn(pn,ol(),c);v(oc(Ra,Ei,c,r))};if(Zr){p(!1),R(!1);return}if(Wf){let de=Xr.current.split("|")[0],zt=e.website||"tomsguide",pn=!!(Xr.current&&de!==zt);!I&&!wi&&R(!!e.compactEmbed||!ln),pn&&(It=[],Kf=[],v(()=>[]),Y(()=>[]),Ee(()=>[]),vi(()=>[]),q(()=>[]),pe({}),et(()=>[]),At({}),qe(()=>[]),Se({}),Fr(!1),jr(""),Yr(""),p(!0));let Ei=Ff.current&&Xr.current===Ir&&It.length===0&&!xe.current;Ff.current=!1,!Ei&&!ln&&p(!0);let no=xa=>{if(!_||xa.length===0)return;let ce=Zf(),at=Af(xa,ce),{displayedDeals:ao}=ac(at.targetArticles,ce,at.activeRegionCode,at.targetIso);ao.length!==0&&(Ra=ao,v(Ra),p(!1),e.includeReviewProducts&&Mf(at.targetArticles,e.website||"tomsguide",Math.min(Zt,kf),c).then(()=>{if(!_||pc)return;let vn=ac(at.targetArticles,ce,at.activeRegionCode,at.targetIso);Ra=vn.displayedDeals,v(Ra);let Di=vn.displayedDeals.filter(st=>st.isReviewProduct&&st.hawkModelName).slice(0,kf).map(st=>String(st.hawkModelName));pi(vn.extractedDeals,at.activeRegionCode,void 0,kf,Di,st=>If(st,!0))}))};if(It=await Rv({authorHandle:nt,authorName:Wr,fallbackAuthorName:e.authorName,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,articleCategory:e.compactEmbed&&x||void 0,articleTag:e.compactEmbed?O1:void 0,pageStarts:e.compactEmbed&&!e.warmInventory&&!xe.current?[0]:void 0,reviewPageStarts:e.includeReviewProducts?Ca?gc:!e.compactEmbed||xe.current?Pv:void 0:void 0,loadAllReviewPages:!Ca,throwOnFailure:!!(e.compactEmbed&&xe.current),onBackgroundRefresh:xa=>{if(!_||mc.current!==yc)return;let ce=Ja(xa,void 0,Number(e.editorialMaxAgeMonths)||0);Y(ce),tt||Ee(ce),u1(at=>at+1)},onProgress:no,signal:re.signal,website:e.website}),!_)return;if(It=Ja(It,void 0,Number(e.editorialMaxAgeMonths)||0),Xr.current=Ir,mc.current=yc,Ei&&It.length===0){p(!1);return}_&&(Y(It),tt||Ee(It),R(!1))}let Jr=Zf(),k1=Af(It,Jr),{activeDealTag:Ta,activeRegionCode:Si,authorArticles:Jf,activeFreeformTags:Ea,freeformTagCounts:$f,freeformTags:$r,tagCounts:eg,tags:Ci,targetArticles:Da,targetIso:L1}=k1,Ri=e.compactEmbed&&x&&!Ta?x:Ta,Ti=e.compactEmbed&&$.length>0&&Ea.length===0?$:Ea,z1=Ci.length>0?Ci:Ri?[Ri]:Ci,H1=$r.length>0?$r:Ti.length>0?t?.freeformTags?.filter(de=>Ti.includes(de.handle))||[]:$r,U1={...eg,...Ri&&!Ta?{[Ri]:0}:{}},G1={...$f,...Object.fromEntries(Ea.length===0?Ti.map(de=>[de,0]):[])},eo=Yf(Ta,Ea,nt,Wr),tg=[Ir,Si,Ta||"",Ea.join(","),e.selectedBrands.join(","),e.priceRange,e.discountAmount,e.includeBuyingGuideProducts?"guides":"",e.includeReviewProducts?"reviews":"",e.includeDeals===!1?"no-deals":"deals",e.includeCollections===!1?"no-collections":"collections"].join("|"),sl=null,dl=null;if(!tt){let de=jf.current;if(de?.key===tg&&de.articleCount===Da.length)sl=de.deals.length,dl=de.authorCount;else{let zt=rv(Da,Jr);sl=zt.deals.length,dl=zt.authorCount,jf.current={articleCount:Da.length,authorCount:dl,deals:zt.deals,key:tg}}}Kf=Ci;let Lt;_&&(q(z1),pe(U1),et(H1),At(G1)),e.includeReviewProducts&&await Mf(Da,e.website||"tomsguide",l?Math.min(Da.length,i):Zt,c);let{brands:vc,displayedDeals:bc,extractedDeals:to}=ac(Da,Jr,Si,L1),{merchants:q1,couponMap:Ac,couponUrl:P1}=Uv(bc,e.region);_&&Se(Ac);let F1=de=>{!_||!Lt||(Lt={...Lt,couponMap:de},window.__AUTHOR_PRELOAD_DATA__=Lt,e.onDataLoaded&&e.onDataLoaded(Lt))};if(sv({couponMap:Ac,couponUrl:P1,merchants:q1}).then(de=>{_&&(Se(de),F1(de))}),_){Wf&&X(Ri),J2($,Ti)||nl(Ti),vi(Jf);let de=oc(Ra,bc,c,r);if(pc=!0,v(de),sl!==null){let zt=t?.totalDealCount||0,pn=Ca&&zt>sl;b(pn?zt:sl),g(pn?Math.max(t?.totalAuthorCount||0,dl||0):dl||0)}!rl.current.has(eo)&&Vf(Ta,Ea)&&rl.current.set(eo,t?.brands||[]),qe(rl.current.get(eo)||vc),p(!1),Lt=ov({allArticles:It,authorArticles:Jf,bakeReviewInventory:a&&!e.compactEmbed,brands:vc,couponMap:Ac,currentDealTag:Ta,currentFreeformTags:Ea,displayedDeals:de,inventoryArticles:Da,options:Jr,resultCount:e.resultCount,tagCounts:eg,tags:Ci,freeformTagCounts:$f,freeformTags:$r,totalAuthorCount:dl??h,totalDealCount:sl??A}),window.__AUTHOR_PRELOAD_DATA__=Lt,e.onDataLoaded&&e.onDataLoaded(Lt)}if((e.includeBuyingGuideProducts||e.includeReviewProducts)&&Si!=="unavailable"){let de=Zt,zt=l?to.filter(ce=>ce.isReviewProduct&&ce.hawkModelName).slice(0,i).map(ce=>String(ce.hawkModelName)):[],pn=bc.filter(ce=>(ce.isBuyingGuideProduct||ce.isReviewProduct)&&ce.hawkModelName).map(ce=>String(ce.hawkModelName));to.some(ce=>(ce.isBuyingGuideProduct||ce.isReviewProduct)&&ce.hawkModelName)&&M(!0);let no=pi(to,Si,void 0,s?void 0:e.includeReviewProducts?l?i:de:void 0,[...zt,...pn],If).then(async ce=>{if(!_)return;let at=el(ce,e.selectedBrands,{discountAmount:e.discountAmount,priceRange:e.priceRange}).map(st=>(st.isBuyingGuideProduct||st.isReviewProduct)&&st.hawkModelName?{...st,hawkPricePending:!1}:st);an(at,c,r);let ao=hn(at,ol(),c),vn=oc(Ra,ao,c,r),Di=mf(vc,ce);if(rl.current.set(eo,Di),v(vn),qe(Di),s&&b(at.length),Lt){let st=a&&!e.compactEmbed,ng=l,ag=st?tc(vn,Number(e.resultCount)||12):ng?vn.slice(0,i):vn,j1=ng?await Hv(ag):ag;if(!_)return;let wc={...Lt,allDeals:j1,deals:vn.slice(0,de),brands:Di,totalDealCount:s?at.length:Lt.totalDealCount};Lt=wc,window.__AUTHOR_PRELOAD_DATA__=wc,e.onDataLoaded&&e.onDataLoaded(wc)}}).finally(()=>{_&&M(!1)}),xa=to.slice(de,de+(Number(e.resultCount)||12));e.includeReviewProducts&&e.warmInventory&&!s&&!I&&xa.some(ce=>ce.hawkModelName)&&no.then(()=>{_&&pi(xa,Si)}),I&&await no}}catch(nt){_&&D(!0)}finally{_&&(p(!1),R(!1),dc(!1),bi.current=!1)}})(),()=>{_=!1,re.abort()}},[e.query,e.region,e.selectedBrands,e.website,e.resultCount,Zt,c,e.priceRange,e.discountAmount,x,$,e.authorName,e.authorHandle,e.website,e.authorBioLength,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,s,a,l,i,r,n,gc,e.productSelection,e.compactEmbed,e.warmInventory,e.refreshDealsOnViewport,e.editorialMaxAgeMonths,cc,tt,ll,il,o1,fc]);let Kr=e.website||"tomsguide",ct=hc.current!==Kr,wa=(0,N.useMemo)(()=>ct?[]:f1.current===Kr&&t?.authors?t.authors:kr(ze.length>0?ze:ie,Kr),[ie,Kr,ze,t?.authors,ct]),m1=tt?ll:e.authorHandle,h1=tt?il:e.authorName,y1=wa.find(_=>_.handle===m1||_.fullName===h1),ul=ze.length>0?ze:ie,Xf=(0,N.useMemo)(()=>{if(ul.length===0)return wa;let _=bt(e.region),re=nn(_),I=mi(Gr(ul,x),$),ve=bf(wa,I,{activeRegionCode:_,targetIso:re,selectedBrands:e.selectedBrands,priceRange:e.priceRange,discountAmount:e.discountAmount,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website});return Fu(wa,ve)},[x,$,wa,ul,e.discountAmount,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.priceRange,e.region,e.selectedBrands]),p1=(0,N.useMemo)(()=>{if(ct)return[];if(ul.length===0&&t?.authors?.length||e.compactEmbed&&!x&&$.length===0&&t?.authors?.length)return wa;let _=bt(e.region),re=nn(_),I=mi(Gr(ul,x),$).filter(ve=>gi([ve],{activeRegionCode:_,targetIso:re,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,website:e.website}).length>0);return Or(Xf,I)},[x,$,ul,ct,tt,t?.authors?.length,e.compactEmbed,e.includeBuyingGuideProducts,e.includeCollections,e.includeDeals,e.includeReviewProducts,e.region,Xf,e.website]),Qf=(_,re)=>{let I=ze.length>0?ze:ie.length>0?ie:d;if(I.length===0)return;let ve=fv(I,{authorHandle:_,authorName:re,discountAmount:e.discountAmount,priceRange:e.priceRange,region:e.region,selectedBrands:e.selectedBrands,sort:c,includeBuyingGuideProducts:e.includeBuyingGuideProducts,includeCollections:e.includeCollections,includeDeals:e.includeDeals,includeReviewProducts:e.includeReviewProducts,prioritiseCommercialProducts:r,website:e.website,productSelection:void 0});al(null),X(null),nl([]),vi(ve.authorArticles),q(ve.tags),pe(ve.tagCounts),et(ve.freeformTags),At(ve.freeformTagCounts),qe(ve.brands),v(ve.deals),p(!1)},v1=()=>{!e.compactEmbed||!t||(v(hn(Of(t.deals||t.allDeals||[],c,r),ol(),c)),q(t.tags||[]),pe(t.tagCounts||{}),et(t.freeformTags||[]),At(t.freeformTagCounts||{}),qe(t.brands||[]),Se(t.couponMap||{}),g(t.totalAuthorCount??t.authors?.length??0),b(t.totalDealCount??t.deals?.length??t.allDeals?.length??0))},b1=_=>{jn.current=!0,xe.current=!0,R(!0),tt&&(ll===_.handle||il===_.fullName)?(e.compactEmbed&&t?v1():Qf(e.authorHandle,e.authorName),Fr(!1),jr(""),Yr("")):(Qf(_.handle,_.fullName),Fr(!0),jr(_.handle),Yr(_.fullName)),e.onQueryChange?.("")},A1=_=>{jn.current=!0,xe.current=!0,R(!0);let re=x===_?null:_;Qr(re,$),X(re),e.onQueryChange?.("")},w1=()=>{jn.current=!0,xe.current=!0,R(!0)},S1=()=>{jn.current=!0,xe.current=!0,R(!0),Qr(null,$),X(null),e.onQueryChange?.("")},C1=_=>{jn.current=!0,xe.current=!0,R(!0);let re=$.some(I=>I.toLowerCase()===_.toLowerCase())?$.filter(I=>I.toLowerCase()!==_.toLowerCase()):[...$,_];Qr(x,re),nl(re)},R1=()=>{jn.current=!0,xe.current=!0,R(!0),Qr(x,[]),nl([])},T1=_=>{jn.current=!0,xe.current=!0,R(!0),al(_)},E1=()=>{if(bi.current)return;bi.current=!0,dc(!0);let _=Zt+(e.resultCount?parseInt(e.resultCount,10):12);!!(n&&e.compactEmbed&&!xe.current)&&ie.length>0&&m.length<_&&d1(ve=>{let Sa=Pv[ve.length];return Sa===void 0?ve:[...ve,Sa]}),sc(ve=>(Vr(ve),ve+(e.resultCount?parseInt(e.resultCount,10):12)));let I=!!(t?.reviewInventoryBaked&&m.length>Zt);e.compactEmbed&&ie.length===0&&!I&&(R(!0),s1(!0))},Ai=e.compactEmbed&&!e.refreshDealsOnViewport,D1=Ai&&t?.tags?.length?t.tags:ut,x1=Ai&&t?.tags?.length?t.tagCounts||{}:Ge,M1=Ai&&!xe.current&&t?.brands?.length?t.brands:Pr,_1=Ai&&t?.freeformTags?.length&&(!xe.current||$.length===1)?t.freeformTags:De,B1=Ai&&t?.freeformTags?.length&&(!xe.current||$.length===1)?t.freeformTagCounts||{}:tl,N1=dv({enrichingBuyingGuides:T,error:S,loading:y,loadingMore:Pf,refreshingFeed:C});return{activeDealTag:x,activeFreeformTags:$,airedaleBrands:ct?[]:M1,airedaleTagCounts:ct?{}:x1,airedaleTags:ct?[]:D1,airedaleFreeformTagCounts:ct?{}:B1,airedaleFreeformTags:ct?[]:_1,allAuthorsList:p1,authorArticlesList:ct?[]:r1,clickedAuthorOverride:tt,couponMap:G,deals:ct?[]:m,displayCount:Zt,error:S,enrichingBuyingGuides:T,effectiveAuthorProfile:ct?void 0:y1,loading:y,loadingMore:Pf,loadMoreStartCount:c1,markProductSelectionInteracted:w1,hasMore:m.length>Zt||!!e.compactEmbed&&A>m.length,loadMore:E1,refreshingFeed:C,overriddenAuthorHandle:ll,overriddenAuthorName:il,selectedArticleId:cc,setActiveDealTag:X,clearDealTag:S1,clearFreeformTags:R1,selectArticle:T1,setDisplayCount:sc,setSelectedArticleId:al,status:N1,toggleAuthorOverride:b1,toggleDealTag:A1,toggleFreeformTag:C1,totalAuthorCount:ct?0:h,totalDealCount:ct?0:A}}var $2=B(dt(),1);var qr=B(dt(),1);function jv(e){let[t,n]=(0,qr.useState)(null),[a,l]=(0,qr.useState)([]),[i,r]=(0,qr.useState)(!1),[o,u]=(0,qr.useState)(!1);return{close:()=>n(null),error:o,loading:i,merchant:t,open:async f=>{n(f),r(!0),u(!1),l([]);try{let d=Gv(f,e),m=await fetch(d.toString());if(!m.ok)throw new Error("API Error");l(cv(await m.json()))}catch(d){u(!0)}finally{r(!1)}},vouchers:a}}var Ye=B(O(),1);function eS(e){return new Set(e.map(t=>Array.isArray(t.authorName)?t.authorName[0]:t.authorName).map(t=>String(t||"").trim().toLowerCase()).filter(Boolean)).size}var tS=new Map,nS=()=>{};function Vv({data:e,editorBar:t,editorMode:n=!1,props:a,selectedDeals:l=tS,setSelectedDeals:i=nS}){let r=jv(a.region),[o,u]=(0,Yv.useState)(new Set),c=d0[a.website||""]||"#1F69FF",s=a.backgroundColor?a.backgroundColor==="white"?"#ffffff":a.backgroundColor==="transparent"?"transparent":a.backgroundColor==="light_blue"?"#E7F0FF":void 0:void 0,f=ju(a.authorHandle,a.authorName),d=Nr(a),m=qu(a),v=va(m?"date_desc":a.sort,!d),A=!!(a.showReviewSort&&a.includeReviewProducts),b=a.showPriceDiscountFilters!==!1||A,h=!a.authorFullBleed,g=!e.clickedAuthorOverride,y=e.totalDealCount||e.deals.length,p=e.totalAuthorCount||eS(e.deals),C=e.status==="loading_inventory"||e.status==="refreshing_inventory"||e.status==="enriching_visible_cards",R=e.status==="loading_inventory"||(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards")&&e.deals.length===0,M=!!(a.showReviewSort&&a.includeReviewProducts&&(e.status==="refreshing_inventory"||e.status==="enriching_visible_cards"))?"Loading and sorting available review products":e.status==="enriching_visible_cards"?"Adding live product images and prices":e.status==="refreshing_inventory"?"Updating products":`Loading ${a.website||"site"} authors and products`,S=Y=>{e.markProductSelectionInteracted(),a.onBrandToggle?.(Y)},D=Y=>{e.markProductSelectionInteracted(),a.onBrandSelect?.(Y)},G=Y=>{e.markProductSelectionInteracted(),a.onPriceRangeChange?.(Y)},Se=Y=>{e.markProductSelectionInteracted(),a.onDiscountAmountChange?.(Y)},ie=Y=>{e.markProductSelectionInteracted(),a.onSortChange?.(Y)};return(0,Ye.jsx)("div",{className:"tg-df-widget-host",style:{"--tg-df-blue":c.toUpperCase()==="#FFFFFF"?"#000000":c},"data-vizualizer-embed":"true","data-tg-df-full-bleed":a.authorFullBleed?"true":"false","data-tg-df-mobile-dropdowns":a.mobileDropdowns?"true":"false","data-tg-df-sticky-mobile-filters":a.stickyMobileFilters===!1?"false":"true",children:(0,Ye.jsxs)("div",{className:"tg-df-container article-body",style:a.backgroundColor?{backgroundColor:s}:void 0,children:[(a.showAuthorIdentity!==!1||a.showAuthorBio!==!1)&&(0,Ye.jsx)("div",{className:"tg-df-author-embed",style:{width:"100%",fontFamily:"inherit"},children:(0,Ye.jsx)("div",{className:"tg-df-author-section",style:{display:"block",opacity:1,overflow:"visible",background:"transparent",border:"none"},children:(0,Ye.jsx)(O0,{authorArticlesList:e.authorArticlesList,authorBioLength:a.authorBioLength,customBio:g?a.customBio:void 0,customHeaderKicker:a.customHeaderKicker,customHeaderTitle:a.customHeaderTitle,effectiveAuthorHandle:e.clickedAuthorOverride?e.overriddenAuthorHandle:a.authorHandle,effectiveAuthorName:e.clickedAuthorOverride?e.overriddenAuthorName:a.authorName,isReviewWidget:d,onBioChange:g?a.onBioChange:void 0,onHeaderKickerChange:a.onHeaderKickerChange,onHeaderTitleChange:a.onHeaderTitleChange,selectedProfile:e.effectiveAuthorProfile,showAuthorBio:a.showAuthorBio,showAuthorIdentity:a.showAuthorIdentity,showSocialButtons:a.showSocialButtons,stabilizeBio:f,authorCount:p,totalDealCount:y,website:a.website})})}),t,a.showCollectionsDropdown&&(0,Ye.jsx)(t0,{articles:e.authorArticlesList,authorHandle:a.authorHandle,authorName:a.authorName||a.author,onChange:e.selectArticle,selectedArticleId:e.selectedArticleId,shortenedHeadlines:a.shortenedHeadlines}),C&&(0,Ye.jsxs)("div",{role:"status","aria-live":"polite","aria-label":M,style:{alignItems:"center",display:"flex",justifyContent:"center",marginBottom:"16px",minHeight:"72px"},children:[(0,Ye.jsx)("span",{className:"tg-df-coupon-spinner","aria-hidden":"true",style:{borderWidth:"3px",height:"24px",width:"24px"}}),(0,Ye.jsxs)("span",{style:{color:"#4B5563",fontSize:"14px",marginLeft:"10px"},children:[M,"\u2026"]})]}),(0,Ye.jsx)(T0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,allAuthorsList:e.allAuthorsList,brands:a.brands,clickedAuthorOverride:e.clickedAuthorOverride,loading:e.loading,refreshing:e.refreshingFeed,onAuthorClick:e.toggleAuthorOverride,onBrandToggle:S,onFreeformTagClick:e.toggleFreeformTag,onTagClick:e.toggleDealTag,overriddenAuthorHandle:e.overriddenAuthorHandle,overriddenAuthorName:e.overriddenAuthorName,selectedBrands:a.selectedBrands,showAuthorRail:f&&a.showAuthorRail!==!1,showAuthorCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,website:a.website}),(0,Ye.jsx)(M0,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleBrands:e.airedaleBrands,airedaleTagCounts:e.airedaleTagCounts,airedaleTags:e.airedaleTags,brands:a.brands,discountAmount:a.discountAmount,enabled:a.mobileDropdowns||h,freeformTagCounts:e.airedaleFreeformTagCounts,freeformTags:e.airedaleFreeformTags,onBrandSelect:D,onBrandToggle:S,onDiscountAmountChange:Se,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,onPriceRangeChange:G,onReviewSortChange:ie,onTagClear:e.clearDealTag,onTagClick:e.toggleDealTag,priceRange:a.priceRange,reviewSort:v,selectedBrands:a.selectedBrands||[],showCounters:a.showAuthorCounters,showBrandRail:a.showBrandRail,showCategoryRail:a.showCategoryRail,showFreeformTagRail:a.showFreeformTagRail,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),b&&(0,Ye.jsx)(_0,{airedaleBrands:e.airedaleBrands,airedaleTags:e.airedaleTags,discountAmount:a.discountAmount,hidden:!!e.selectedArticleId,onDiscountAmountChange:Se,onPriceRangeChange:G,onReviewSortChange:ie,priceRange:a.priceRange,reviewSort:v,showPriceDiscountFilters:a.showPriceDiscountFilters,showReviewSort:A,includeScoredFirst:!d}),(0,Ye.jsx)(e0,{articles:e.authorArticlesList,selectedArticleId:e.selectedArticleId}),(a.showCategoryRail!==!1||a.showFreeformTagRail!==!1||a.showBrandRail!==!1)&&(0,Ye.jsx)(Jp,{activeDealTag:e.activeDealTag,activeFreeformTags:e.activeFreeformTags,airedaleTags:e.airedaleTags,freeformTags:e.airedaleFreeformTags,discountAmount:a.discountAmount,onBrandSelect:D,onBrandToggle:S,onDiscountAmountChange:Se,onPriceRangeChange:G,onTagClear:e.clearDealTag,onFreeformTagClear:e.clearFreeformTags,onFreeformTagToggle:e.toggleFreeformTag,priceRange:a.priceRange,selectedBrands:a.selectedBrands||[]}),(0,Ye.jsx)(y0,{couponMap:e.couponMap,deals:e.deals,displayCount:e.displayCount,editorMode:n,error:e.error,expandedDealIds:o,hasMore:e.hasMore,loading:R,loadingMore:e.loadingMore,loadMoreStartCount:e.loadMoreStartCount,onDescriptionToggle:Y=>u(ze=>{let Ee=new Set(ze);return Ee.has(Y)?Ee.delete(Y):Ee.add(Y),Ee}),onLoadMore:e.loadMore,onOpenVouchers:r.open,query:a.query,selectedDeals:l,setSelectedDeals:i,website:a.website}),(0,Ye.jsx)(k0,{error:r.error,loading:r.loading,merchant:r.merchant,onClose:r.close,vouchers:r.vouchers})]})})}var Qv=B(O(),1),Xv=e=>{let t={...e,editorMode:!1},n=zf(t);return(0,Qv.jsx)(Vv,{data:n,props:t})};var U={authorBioLength:"short",authorFullBleed:!0,authorHandle:"all-authors",authorName:"All authors",backgroundColor:"transparent",customBio:"",customHeaderKicker:void 0,customHeaderTitle:void 0,discountAmount:"0",editorMode:!1,editorialMaxAgeMonths:"12",includeBuyingGuideProducts:!0,includeCollections:!0,includeDeals:!0,includeReviewProducts:!1,mobileDropdowns:!0,stickyMobileFilters:!0,offerType:"",preloadReviewInventory:!1,lightweightReviewDelivery:!1,prioritiseCommercialProducts:!0,priceRange:"all",productSelection:"latest",query:"Everything",region:"auto",resultCount:"12",retailer:"",selectedBrands:[],showAuthorBio:!0,showAuthorCounters:!0,showAuthorIdentity:!0,showAuthorRail:!0,showBrandRail:!0,showCategoryRail:!0,showCollectionsDropdown:!1,showPriceDiscountFilters:!0,showReviewSort:!1,showSocialButtons:!0,showCountdown:!1,showHeaderDetails:!0,showFreeformTagRail:!0,sort:"date_desc",viewMode:"author",website:"whowhatwear",widgetSubtitle:"Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.",widgetTitle:"Top Deals Handpicked by Our Editors"};function Ie(e,t){return typeof e=="string"?e:t}function we(e,t){return typeof e=="boolean"?e:t}function Kv(e){let t=e||{},n=t.authorBioLength==="long"?"long":"short",a=t.productSelection==="mix"?"mix":"latest";return{...U,...t,authorBioLength:n,authorFullBleed:we(t.authorFullBleed,U.authorFullBleed),authorHandle:Ie(t.authorHandle,U.authorHandle),authorName:Ie(t.authorName,U.authorName),backgroundColor:Ie(t.backgroundColor,U.backgroundColor),customBio:Ie(t.customBio,U.customBio),customHeaderKicker:typeof t.customHeaderKicker=="string"?t.customHeaderKicker:void 0,customHeaderTitle:typeof t.customHeaderTitle=="string"?t.customHeaderTitle:void 0,discountAmount:Ie(t.discountAmount,U.discountAmount),editorMode:we(t.editorMode,U.editorMode),editorialMaxAgeMonths:Ie(t.editorialMaxAgeMonths,U.editorialMaxAgeMonths),includeBuyingGuideProducts:we(t.includeBuyingGuideProducts,U.includeBuyingGuideProducts),includeCollections:we(t.includeCollections,U.includeCollections),includeDeals:we(t.includeDeals,U.includeDeals),includeReviewProducts:we(t.includeReviewProducts,U.includeReviewProducts),mobileDropdowns:we(t.mobileDropdowns,U.mobileDropdowns),stickyMobileFilters:we(t.stickyMobileFilters,U.stickyMobileFilters),offerType:Ie(t.offerType,U.offerType),preloadReviewInventory:we(t.preloadReviewInventory,U.preloadReviewInventory),lightweightReviewDelivery:we(t.lightweightReviewDelivery,U.lightweightReviewDelivery),prioritiseCommercialProducts:we(t.prioritiseCommercialProducts,U.prioritiseCommercialProducts),priceRange:Ie(t.priceRange,U.priceRange),productSelection:a,query:Ie(t.query,U.query),region:Ie(t.region,U.region),resultCount:Ie(t.resultCount,U.resultCount),retailer:Ie(t.retailer,U.retailer),selectedBrands:Array.isArray(t.selectedBrands)?t.selectedBrands.filter(l=>typeof l=="string"):[],showAuthorBio:we(t.showAuthorBio,U.showAuthorBio),showAuthorCounters:we(t.showAuthorCounters,U.showAuthorCounters),showAuthorIdentity:we(t.showAuthorIdentity,U.showAuthorIdentity),showAuthorRail:we(t.showAuthorRail,U.showAuthorRail),showBrandRail:we(t.showBrandRail,U.showBrandRail),showCategoryRail:we(t.showCategoryRail,U.showCategoryRail),showCollectionsDropdown:we(t.showCollectionsDropdown,U.showCollectionsDropdown),showPriceDiscountFilters:we(t.showPriceDiscountFilters,U.showPriceDiscountFilters),showReviewSort:we(t.showReviewSort,U.showReviewSort),showSocialButtons:we(t.showSocialButtons,U.showSocialButtons),showCountdown:we(t.showCountdown,U.showCountdown),showHeaderDetails:we(t.showHeaderDetails,U.showHeaderDetails),showFreeformTagRail:we(t.showFreeformTagRail,U.showFreeformTagRail),sort:Ie(t.sort,U.sort),viewMode:Ie(t.viewMode,U.viewMode),website:Ie(t.website,U.website),widgetSubtitle:Ie(t.widgetSubtitle,U.widgetSubtitle),widgetTitle:Ie(t.widgetTitle,U.widgetTitle)}}function Zv(e,t={}){return{...e,brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}}function Wv(e,t){try{window.hawk?.analytics?.freyr?.push({name:e,data:t}),window.dispatchEvent(new CustomEvent("hawk-analytics-update")),window.freyr?.cmd.push(()=>{window.freyr?.pushAndUpdate?.(e,t)})}catch{}}function Iv(){window.dataLayer=window.dataLayer||[],window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.hawk=window.hawk||{},window.hawk.analytics=window.hawk.analytics||{},window.hawk.analytics.freyr=window.hawk.analytics.freyr||[],window.freyr=window.freyr||{cmd:[]},window.freyr.cmd=window.freyr.cmd||[];let e="https://freyr.futurecdn.net/freyr.js",t=window.location.hostname;if(!(window.navigator.webdriver||window.navigator.userAgent.includes("Headless"))&&!!t&&t!=="localhost"&&t!=="127.0.0.1"&&!t.includes("run.app")&&!document.querySelector(`script[src="${e}"]`)){let l=document.createElement("script");l.src=e,l.async=!0,document.head.appendChild(l)}}function aS(e){let t=Number.parseFloat(e.rawPrice||e.price)||null,n=Number.parseFloat(e.rawMsrp||e.msrp)||null;return{product:{primary:{id:e.externalProductId||e.id||e.matchId||null,name:e.productName||e.title||"",type:"deal",price:t,previousPrice:n,currency:e.isoCurrencyCode||e.currency||"USD",preorder:!1,labels:e.modelBrand||e.brand?[{type:"brand",value:e.modelBrand||e.brand}]:[],link:e.url||null,originalLink:e.originalLink||e.url||null,revenueId:e.revenueId||null,startTime:null,endTime:null,voucherCode:null,voucherAudience:null,voucherPercentageSaving:n&&t&&n>t?Math.round((1-t/n)*100):null,voucherMoneySaving:null,voucherType:null,offerExclusive:!1,offerScope:null,globalId:e.productKey||null,inStock:e.inStock!==!1,contractProvider:null,contractMinutes:null,contractTexts:null,contractData:null,contractLength:null,contractMonthlyPrice:null,contractCurrency:e.isoCurrencyCode||e.currency||"USD"}},merchant:{id:e.merchantId||null,name:e.merchant||"Retailer",url:e.merchantUrl||null,network:e.merchantNetwork||null},model:{id:e.modelId||null,brand:e.modelBrand||e.brand||null,name:e.productName||e.title||"",parent:e.modelParent||null}}}var lS=new Set(["subid1","ascsubtag","clickref","u1"]);function iS(e){return e.match(/(?:^|[-_])(\d{10,})(?=$|[-_])/)?.[1]||null}function rS(e){let t=new Set,n=a=>{if(!a||t.has(a))return null;t.add(a);let l;try{l=new URL(a)}catch{return null}for(let[i,r]of l.searchParams)if(lS.has(i.toLowerCase())){let o=iS(r);if(o)return o}for(let i of l.searchParams.values())if(/^https?:\/\//i.test(i)){let r=n(i);if(r)return r}return null};return n(e)}function Jv({areaClicked:e,clickType:t,deals:n,index:a,queryName:l}){let i={event:"hawkEvent",category:"Affiliates",affiliate:{action:{type:t,id:"author-widget",event:t==="appeared"?"viewed":"Click from",timestamp:Date.now()},component:{flag:"Editor",product:"deals",category:"Signal Deal Finder Author widget",type:t==="appeared"?"review":"signal product",label:l||n[0]?.productName||n[0]?.title||"",index:a??-1,linkCount:n.length,blockLayout:"",areaClicked:e}},products:n.slice(0,20).map(aS),reviews:[],_clear:!0,"gtm.uniqueEventId":Date.now()%1e4};Wv("hawkEvent",i)}function $v(e,t){e.length&&Jv({areaClicked:"",clickType:"appeared",deals:e,index:null,queryName:t})}function e1(e,t){if(e?.deals?.length)return e.deals;let n=Number(t)||12;return e?.allDeals?.slice(0,n)||[]}function t1(e){e.addEventListener("click",t=>{let n=t.target;if(!(n instanceof Element))return;let a=n.closest("a[data-fcaw-affiliate-link][href], a.hawk-affiliate-link-deal-widget[href], a.hawk-affiliate-link-container[href], a.hawk-affiliate-link-deal-button[href]"),l=n.closest(".tg-df-card"),i=!!(!a?.dataset.fcawRevenueId&&(a?.hasAttribute("data-hl-processed")||a?.hasAttribute("data-fcaw-hawklinks-requested")));a&&l&&!i&&Jv({areaClicked:"Signal Product Card",clickType:"retailer",deals:[{brand:l.dataset.brand,currency:l.dataset.currency,id:l.dataset.dealId,merchant:l.dataset.merchant,merchantId:l.dataset.merchantId,modelId:l.dataset.modelId,productKey:l.dataset.productKey,rawMsrp:l.dataset.previousPrice,rawPrice:l.dataset.price,originalLink:a.dataset.fcawOriginalLink||a.href,revenueId:a.dataset.fcawRevenueId||rS(a.href),title:l.dataset.productName,url:a.href}],index:Array.from(e.querySelectorAll(".tg-df-card")).indexOf(l)});let r=n.closest('button, select, [role="button"]');r&&Wv("elementInteraction",{element:{action:"click",id:r.id||void 0,class:r.className||void 0,name:r.getAttribute("name")||r.getAttribute("aria-label")||void 0,text:r.textContent?.trim()||void 0,label:r.getAttribute("aria-label")||void 0}})})}var qf=B(O(),1),oS='fc-author-commerce-widget[data-fcaw-version="1"]',uS="(max-width: 599px)",cS=600,sS='[class*="membership-expandable-banner"]',dS=/^jump\s+to\b/i,Uf="data-fcaw-jump-navigation-suppressed",fS=50,gS=1e4,mS=["[data-sticky-header]","[data-header-sticky]",'[role="banner"]',".navigation__container",".site-header",".main-header",".header__container",'[class*="membership-expandable-banner"] [class*="skinny-banner"]','[class*="membership-expandable-banner"] [id="skinnyBanner"]',"nav","header"].join(","),hS=`  :host {    display: block !important;    width: 100% !important;    min-width: 0 !important;    max-width: none !important;    isolation: isolate !important;    contain: style !important;  }  :host([data-fcaw-full-bleed="true"]) {    width: min(      1200px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1200px !important;    margin-left: var(      --fcaw-full-bleed-offset,      calc(50% - min(600px, 50vw))    ) !important;    margin-right: 0 !important;    position: relative !important;  }  :host([data-fcaw-full-bleed="true"]) #tg-df-spreadsheet-filters {    width: min(      1500px,      var(--fcaw-viewport-width, 100vw)    ) !important;    max-width: 1500px !important;    margin-left: calc(      (        100% -        min(1500px, var(--fcaw-viewport-width, 100vw))      ) / 2    ) !important;    margin-right: 0 !important;  }  :host, :host *, :host *::before, :host *::after {    box-sizing: border-box;  }`,Hf=new WeakMap;function yS(){if(document.querySelector("style[data-fcaw-jump-navigation-protection]"))return;let e=document.createElement("style");e.setAttribute("data-fcaw-jump-navigation-protection",""),e.textContent=`    [${Uf}="true"] {      opacity: 0 !important;      pointer-events: none !important;      visibility: hidden !important;    }  `,document.head.appendChild(e)}function pS(){let e=Array.from(document.querySelectorAll("span, p, div, strong, b")).filter(n=>n.childElementCount===0&&dS.test(n.textContent?.trim()||"")),t=new Set;for(let n of e)for(let a=n.parentElement;a&&a!==document.body;a=a.parentElement)if(getComputedStyle(a).position==="sticky"){t.add(a);break}return[...t]}function vS(e,t,n){let a=Hf.get(e)||new Set;n?a.add(t):a.delete(t),a.size>0?(Hf.set(e,a),e.setAttribute(Uf,"true")):(Hf.delete(e),e.removeAttribute(Uf))}function bS(e){if(e.dataset.fcawFullBleed!=="true"||typeof IntersectionObserver>"u")return;let t=pS().filter(a=>!a.contains(e));if(t.length===0)return;yS(),new IntersectionObserver(([a])=>{t.forEach(l=>vS(l,e,a.isIntersecting))},{threshold:0}).observe(e)}function AS({host:e,initialData:t,initialProps:n}){let[a]=(0,kt.useState)(i1),l=CS(t,a),[i,r]=(0,kt.useState)(n.query),[o,u]=(0,kt.useState)(n.selectedBrands),[c,s]=(0,kt.useState)(n.priceRange),[f,d]=(0,kt.useState)(n.discountAmount),[m,v]=(0,kt.useState)(n.sort),[A,b]=(0,kt.useState)(!1),h=!!(A&&n.compactEmbed&&n.includeDeals!==!1),g=(0,kt.useRef)(!1);return(0,kt.useEffect)(()=>{let y=()=>{g.current||(g.current=!0,$v(e1(l,n.resultCount),n.query))};if(typeof IntersectionObserver>"u"){y();return}let p=new IntersectionObserver(([C])=>{C?.isIntersecting&&(y(),p.disconnect())},{threshold:.1});return p.observe(e),()=>p.disconnect()},[e,l,n.query]),(0,kt.useEffect)(()=>{if(typeof IntersectionObserver>"u"){b(!0);return}let y=new IntersectionObserver(([p])=>{p?.isIntersecting&&(b(!0),y.disconnect())},{rootMargin:"800px 0px"});return y.observe(e),()=>y.disconnect()},[e]),(0,qf.jsx)(Xv,{...n,region:a||"unavailable",initialData:l,warmInventory:A,refreshDealsOnViewport:h,query:i,selectedBrands:o,priceRange:c,discountAmount:f,sort:m,editorMode:!1,onQueryChange:r,onBrandSelect:u,onBrandToggle:y=>u(p=>p.includes(y)?p.filter(C=>C!==y):[...p,y]),onPriceRangeChange:s,onDiscountAmountChange:d,onSortChange:v})}function wS(e){try{let t=document.cookie.match(new RegExp(`(?:^|;\\s*)${e}=([^;]*)`));return t?decodeURIComponent(t[1]):void 0}catch{return}}function uc(e){let n=String(e||"").trim().toUpperCase().replace("_","-").split("-").at(-1);return n==="UK"?"GB":["US","GB","AU","CA","DE","FR","IT","ES","NL"].includes(n||"")?n:void 0}function i1(){let e=new URLSearchParams(window.location.search).get("area");return uc(e)||uc(wS("FTR_Country_Code"))||uc(document.documentElement.getAttribute("data-locale"))||uc(window.navigator.language)}function n1(e,t){let n=e.querySelector(t);if(n?.textContent)try{return JSON.parse(n.textContent)}catch(a){console.warn("Author widget configuration could not be parsed.",a);return}}function SS(e){return e?.reviewInventoryFormat!==I0||!e.allDeals?e:{...e,allDeals:J0(e.allDeals)}}function CS(e,t){let n=t?e?.regionalDealManifests?.[t]:void 0;if(!n)return e;let a=e?.regionalDealRailData?.[t];return{...e,allDeals:void 0,deals:n,...a}}function a1(e){e.querySelectorAll("a[href]").forEach(t=>{(t.hasAttribute("data-fcaw-affiliate-link")||t.classList.contains("hawk-affiliate-link-deal-widget")||t.classList.contains("hawk-affiliate-link-container")||t.classList.contains("hawk-affiliate-link-deal-button"))&&(t.rel="sponsored nofollow noopener")})}function RS(e){let t=e.closest(".tg-df-card"),n=t?.dataset.fcawRevenueId||e.dataset.fcawRevenueId;if(n)return n;let a=[window.location.href,t?.dataset.productName||"",t?.dataset.merchant||"",t?.dataset.modelId||"",new Date().toDateString(),"tomsguide"].join("|"),l=0;for(let r=0;r<a.length;r+=1)l=(l<<5)-l+a.charCodeAt(r),l|=0;let i=String(Math.abs(l));for(;i.length<19;)l=(l<<5)-l+i.length,l|=0,i+=String(Math.abs(l));return i=i.slice(0,19),t&&(t.dataset.fcawRevenueId=i),i}function TS(e){let t=e.dataset.fcawOriginalLink||e.href;if(!t.includes("hawk-custom-tracking"))return!1;let n=i1();if(!n)return!1;let a=RS(e);return e.dataset.fcawOriginalLink=t,e.dataset.fcawRevenueId=a,e.href=t.replaceAll("hawk-custom-tracking",`tomsguide-${n.toLowerCase()}-${a}`),e.setAttribute("data-fcaw-hawklinks-requested","true"),!0}function ES(){return!!window.hawklinks?.version}function DS(e){let t=!1,n,a,l=()=>Array.from(e.querySelectorAll(".article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-widget[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-container[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested]), .article-body a[data-fcaw-affiliate-link].hawk-affiliate-link-deal-button[href]:not([data-hl-processed]):not([data-fcaw-hawklinks-requested])")),i=()=>{t=!1;let u=l();if(u.length===0)return;let c=u.filter(s=>!TS(s));if(c.length!==0){if(!ES()){let s=Date.now();a??=s,!n&&s-a<gS&&(n=window.setTimeout(()=>{n=void 0,r()},fS));return}a=void 0,c.forEach(s=>s.setAttribute("data-fcaw-hawklinks-requested","true")),document.dispatchEvent(new CustomEvent("processArticle",{detail:{element:e}}))}},r=()=>{t||(t=!0,window.setTimeout(i,0))},o=new MutationObserver(r);return o.observe(e,{attributes:!0,attributeFilter:["href"],childList:!0,subtree:!0}),r(),()=>{o.disconnect(),n&&window.clearTimeout(n)}}function xS(e){if(e.dataset.fcawFullBleed!=="true")return;let t=()=>{let n=document.documentElement.clientWidth||window.innerWidth,a=Math.min(1200,n),l=Math.max(0,(n-a)/2),i=e.parentElement?.getBoundingClientRect().left||0;e.style.setProperty("--fcaw-full-bleed-offset",`${l-i}px`),e.style.setProperty("--fcaw-viewport-width",`${n}px`)};t(),window.addEventListener("resize",t,{passive:!0}),typeof ResizeObserver<"u"&&e.parentElement&&new ResizeObserver(t).observe(e.parentElement)}function MS(e){let t=window.matchMedia(uS),n=!1,a=new Set,l=new Map,i,r=()=>t.matches||e.getBoundingClientRect().width<cS,o=()=>{n||(n=!0,window.requestAnimationFrame(s))},u=()=>{if(typeof MutationObserver>"u")return;let f=new Set(Array.from(document.querySelectorAll(sS)));l.forEach((d,m)=>{f.has(m)&&m.isConnected||(d.disconnect(),l.delete(m))}),f.forEach(d=>{if(l.has(d))return;let m=new MutationObserver(o);m.observe(d,{attributes:!0,attributeFilter:["class","style"],childList:!0,subtree:!0}),l.set(d,m)})},c=f=>{let d=new Set(f);a.forEach(m=>{d.has(m)||(i?.unobserve(m),m.removeEventListener("transitionend",o),a.delete(m))}),f.forEach(m=>{a.has(m)||(i?.observe(m),m.addEventListener("transitionend",o),a.add(m))})},s=()=>{if(n=!1,u(),!r()){c([]),e.style.removeProperty("--fcaw-mobile-sticky-offset");return}let f=Number.parseFloat(getComputedStyle(e).getPropertyValue("--fcaw-publisher-sticky-offset"));if(Number.isFinite(f)&&f>=0){c([]),e.style.setProperty("--fcaw-mobile-sticky-offset",`${f}px`);return}let d=Array.from(document.querySelectorAll(mS)).filter(v=>{if(v.contains(e))return!1;let A=getComputedStyle(v).position;return A==="fixed"||A==="sticky"});c(d);let m=d.reduce((v,A)=>{let b=A.getBoundingClientRect();return b.top>2||b.bottom<=0||b.height<=0||b.height>window.innerHeight*.5?v:Math.max(v,b.bottom)},0);e.style.setProperty("--fcaw-mobile-sticky-offset",`${Math.ceil(m)}px`)};return typeof ResizeObserver<"u"&&(i=new ResizeObserver(o),i.observe(e)),s(),window.addEventListener("scroll",o,{capture:!0,passive:!0}),window.addEventListener("resize",o,{passive:!0}),t.addEventListener?.("change",o),()=>{window.removeEventListener("scroll",o,!0),window.removeEventListener("resize",o),t.removeEventListener?.("change",o),i?.disconnect(),a.forEach(f=>f.removeEventListener("transitionend",o)),a.clear(),l.forEach(f=>f.disconnect()),l.clear()}}function _S(e){if(e.dataset.fcawEnhanced==="true")return;let t=n1(e,"script[data-fcaw-config]");if(!t)return;let n={...Zv(Kv(t),{brands:t.brands,shortenedHeadlines:t.shortenedHeadlines}),compactEmbed:t.compactEmbed,editorMode:!1,warmInventory:t.warmInventory},a=n1(e,"script[data-fcaw-preload]"),l=SS(a),i=e.querySelector("[data-fcaw-fallback]");if(!i)return;xS(e),bS(e),n.stickyMobileFilters!==!1&&MS(e),a1(i);let r=e.shadowRoot||e.attachShadow({mode:"open"}),o=e.querySelector(":scope > style[data-fcaw-host-protection]");if(o&&r.appendChild(o),!r.querySelector("style[data-fcaw-shadow-protection]")){let c=document.createElement("style");c.setAttribute("data-fcaw-shadow-protection",""),c.textContent=hS,r.appendChild(c)}i.querySelectorAll(":scope > style").forEach(c=>{r.appendChild(c)});let u=document.createElement("div");for(u.setAttribute("data-fcaw-mount","");i.firstChild;)u.appendChild(i.firstChild);i.remove(),r.appendChild(u),e.dataset.fcawEnhanced="true",Iv(),e.dataset.fcawAnalyticsReady="true",t1(r),DS(r),(0,l1.createRoot)(u).render((0,qf.jsx)(AS,{host:e,initialData:l,initialProps:n})),window.setTimeout(()=>a1(r),0)}function Gf(){document.querySelectorAll(oS).forEach(_S)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Gf,{once:!0}):Gf();new MutationObserver(Gf).observe(document.documentElement,{childList:!0,subtree:!0});})();/*! Bundled license information:react/cjs/react.production.js:  (**   * @license React   * react.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)scheduler/cjs/scheduler.production.js:  (**   * @license React   * scheduler.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom.production.js:  (**   * @license React   * react-dom.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react-dom/cjs/react-dom-client.production.js:  (**   * @license React   * react-dom-client.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)react/cjs/react-jsx-runtime.production.js:  (**   * @license React   * react-jsx-runtime.production.js   *   * Copyright (c) Meta Platforms, Inc. and affiliates.   *   * This source code is licensed under the MIT license found in the   * LICENSE file in the root directory of this source tree.   *)*/</script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'This is not a theoretical risk—it is an active threat': The NSA, FBI, CISA and more warn of AI-assisted hacks against critical US infrastructure and facilities ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A cybersecurity advisory jointly authored by multiple US agencies, including the NSA, CISA, FBI, DOE, and EPA, warns the owners and operators of industrial facilities of an "active cyber threat" to Siemens S7 programmable logic controllers.</p><p>"The threat actors are conducting reconnaissance and capability development against US-based Siemens PLC installations using AI-generated exploitation scripts disguised as legitimate monitoring tools," <a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa26-231a" target="_blank">says the advisory</a>.</p><p>"The US critical infrastructure sectors most targeted by this threat activity include critical manufacturing, energy, water and wastewater, chemical, food and agriculture, and commercial facilities. This is not a theoretical risk—it is an active threat."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>Essentially, it reads like a list of some of the most important infrastructure facilities behind the lives of the average US citizen (via <a href="https://www.theregister.com/security/2026/08/19/not-a-theoretical-risk-feds-warn-as-attackers-use-ai-made-code-to-hack-critical-infrastructure-controllers/5289960" target="_blank">The Register</a>). The threat actors are said to be leveraging open source automation libraries to create custom tools that mimic existing monitoring solutions, which are capable of evading detection by security teams.</p><p>These tools and scripts are said to be conducting read/write operations on data blocks, "potentially for reconnaissance, capability testing, or pre-positioning for effects operations."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mFkytw2xMwt8YqnsfRjQj4" name="GettyImages-1706985510-1920x1080size.jpg" alt="A stylised photograph of a person acting as a hacker, break into servers and infecting them with a virus, as show by computer monitors displaying green text and codes Their System with a Virus" src="https://cdn.mos.cms.futurecdn.net/mFkytw2xMwt8YqnsfRjQj4-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Witthaya Prasongsin via Getty Images)</span></figcaption></figure><p>The advisory notes that the use of AI to generate exploits represents "an evolution in threat actor capabilities," and that it "dramatically [reduces] the technical expertise and time required to develop working ICS exploitation scripts and malicious tools."</p><p>The advisory also says that, as the Siemens S7 Series PLCs are used in other sectors, including the Defense Industrial Base (DIB), they could also be targeted. As for the potential damage that could be caused, the list is rather long.</p><p>The potential effects include the disruption of critical industry processes, increased safety incidents affecting personnel through the "manipulation of safety interlocks, emergency shutdown systems, or process parameters," equipment damage and extended operational downtime, the compromise of sensitive operational data, and "cascading impacts across interconnected systems affecting supply chains, dependent facilities, and integrated business operations."</p><p>All very bad things, I think you'll agree. As for what organisations can do about it, the advice includes multiple steps for detecting anomalies that may indicate a compromise, and a series of "hardening actions" involving firmware updates, patches, network segmentation, and more.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SM8hnsh8PPqNMXUJSPvVmW" name="AMD Hack Password.jpg" alt="Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg" src="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chris Ratcliffe/Bloomberg via Getty Images)</span></figcaption></figure><p>While the advisory doesn't attribute blame to any particular government or cybercriminal group, <a href="https://www.halcyon.ai/press/after-two-decades-in-federal-cybersecurity-cynthia-kaiser-hits-the-private-sector" target="_blank">Cynthia Kaiser</a>, the former deputy assistant director of the FBI's Cyber Division (now the senior vice president of the Halcyon Ransom Research Center) has some thoughts related to recent <a href="https://www.reuters.com/legal/litigation/minnesota-it-officials-disclose-coordinated-cyberattack-more-than-30-local-water-2026-07-28/" target="_blank">water system cybersecurity breaches</a>.</p><p>"This appears to be a continuation of the same suite of activity we suspect is affiliated with Iran targeting PLCs," said Kaiser, <a href="https://www.theregister.com/security/2026/08/19/not-a-theoretical-risk-feds-warn-as-attackers-use-ai-made-code-to-hack-critical-infrastructure-controllers/5289960#:~:text=Cynthia%20Kaiser%2C%20Halcyon%20Ransomware%20Research%20Center%20SVP" target="_blank">speaking to The Register</a>. "Iran-affiliated actors and adversaries are actively targeting a wide swath of operational technology because these PLCs underpin essential health, safety, and critical infrastructure across society."</p><p>Regardless of the cause, it's rare to read an official US government cybersecurity advisory with a tone of such immediacy. In its conclusion, the report asserts that "organizations should treat this cybersecurity advisory with urgency." Gulp.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/this-is-not-a-theoretical-risk-it-is-an-active-threat-the-nsa-fbi-cisa-and-more-warn-of-ai-assisted-hacks-against-critical-us-infrastructure-and-facilities/</link>
                                                                            <description>
                            <![CDATA[ Energy, water management, manufacturing facilities and more are said to be vulnerable. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">g4RoFzGwuEsCPSR4C4oJ35</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 20 Aug 2026 10:43:34 +0000</pubDate>                                                                                                                                <updated>Thu, 20 Aug 2026 10:43:40 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg">
                                                            <media:credit><![CDATA[Urbazon via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An FBI agent using a comuter.]]></media:description>                                                            <media:text><![CDATA[An FBI agent using a comuter.]]></media:text>
                                <media:title type="plain"><![CDATA[An FBI agent using a comuter.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A cybersecurity advisory jointly authored by multiple US agencies, including the NSA, CISA, FBI, DOE, and EPA, warns the owners and operators of industrial facilities of an "active cyber threat" to Siemens S7 programmable logic controllers.</p><p>"The threat actors are conducting reconnaissance and capability development against US-based Siemens PLC installations using AI-generated exploitation scripts disguised as legitimate monitoring tools," <a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa26-231a" target="_blank">says the advisory</a>.</p><p>"The US critical infrastructure sectors most targeted by this threat activity include critical manufacturing, energy, water and wastewater, chemical, food and agriculture, and commercial facilities. This is not a theoretical risk—it is an active threat."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>Essentially, it reads like a list of some of the most important infrastructure facilities behind the lives of the average US citizen (via <a href="https://www.theregister.com/security/2026/08/19/not-a-theoretical-risk-feds-warn-as-attackers-use-ai-made-code-to-hack-critical-infrastructure-controllers/5289960" target="_blank">The Register</a>). The threat actors are said to be leveraging open source automation libraries to create custom tools that mimic existing monitoring solutions, which are capable of evading detection by security teams.</p><p>These tools and scripts are said to be conducting read/write operations on data blocks, "potentially for reconnaissance, capability testing, or pre-positioning for effects operations."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mFkytw2xMwt8YqnsfRjQj4" name="GettyImages-1706985510-1920x1080size.jpg" alt="A stylised photograph of a person acting as a hacker, break into servers and infecting them with a virus, as show by computer monitors displaying green text and codes Their System with a Virus" src="https://cdn.mos.cms.futurecdn.net/mFkytw2xMwt8YqnsfRjQj4-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Witthaya Prasongsin via Getty Images)</span></figcaption></figure><p>The advisory notes that the use of AI to generate exploits represents "an evolution in threat actor capabilities," and that it "dramatically [reduces] the technical expertise and time required to develop working ICS exploitation scripts and malicious tools."</p><p>The advisory also says that, as the Siemens S7 Series PLCs are used in other sectors, including the Defense Industrial Base (DIB), they could also be targeted. As for the potential damage that could be caused, the list is rather long.</p><p>The potential effects include the disruption of critical industry processes, increased safety incidents affecting personnel through the "manipulation of safety interlocks, emergency shutdown systems, or process parameters," equipment damage and extended operational downtime, the compromise of sensitive operational data, and "cascading impacts across interconnected systems affecting supply chains, dependent facilities, and integrated business operations."</p><p>All very bad things, I think you'll agree. As for what organisations can do about it, the advice includes multiple steps for detecting anomalies that may indicate a compromise, and a series of "hardening actions" involving firmware updates, patches, network segmentation, and more.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SM8hnsh8PPqNMXUJSPvVmW" name="AMD Hack Password.jpg" alt="Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg" src="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chris Ratcliffe/Bloomberg via Getty Images)</span></figcaption></figure><p>While the advisory doesn't attribute blame to any particular government or cybercriminal group, <a href="https://www.halcyon.ai/press/after-two-decades-in-federal-cybersecurity-cynthia-kaiser-hits-the-private-sector" target="_blank">Cynthia Kaiser</a>, the former deputy assistant director of the FBI's Cyber Division (now the senior vice president of the Halcyon Ransom Research Center) has some thoughts related to recent <a href="https://www.reuters.com/legal/litigation/minnesota-it-officials-disclose-coordinated-cyberattack-more-than-30-local-water-2026-07-28/" target="_blank">water system cybersecurity breaches</a>.</p><p>"This appears to be a continuation of the same suite of activity we suspect is affiliated with Iran targeting PLCs," said Kaiser, <a href="https://www.theregister.com/security/2026/08/19/not-a-theoretical-risk-feds-warn-as-attackers-use-ai-made-code-to-hack-critical-infrastructure-controllers/5289960#:~:text=Cynthia%20Kaiser%2C%20Halcyon%20Ransomware%20Research%20Center%20SVP" target="_blank">speaking to The Register</a>. "Iran-affiliated actors and adversaries are actively targeting a wide swath of operational technology because these PLCs underpin essential health, safety, and critical infrastructure across society."</p><p>Regardless of the cause, it's rare to read an official US government cybersecurity advisory with a tone of such immediacy. In its conclusion, the report asserts that "organizations should treat this cybersecurity advisory with urgency." Gulp.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ OpenAI says it'd be a shame if something were to happen to your servers like what happened to Hugging Face, better use our AI models to protect yourself ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Several of OpenAI's models <a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">breached a cyber security testing environment</a> last month, found their way onto the internet, and attacked <a href="https://huggingface.co/" target="_blank">Hugging Face</a> servers in what is now apparently called the OpenAI-Hugging Face Incident. And now OpenAI has <a href="https://openai.com/index/the-defenders-window/" target="_blank">revealed what it's doing</a> to help defend, err, itself. Defend itself from the kinds of attacks its own models committed against Hugging Face. Though it is sharing this "in the hopes it’ll be useful to other organizations."</p><p>To be clear about the extent of what happened last month: OpenAI models were being benchmarked, in a supposedly secure sandboxed environment, against <a href="https://github.com/sunblaze-ucb/exploitgym" target="_blank">ExploitGym</a>, which was done to test their cyber capabilities. They used a zero-day vulnerability to escalate privileges and eventually achieve internet access, where it began attacking Hugging Face servers and...</p><p>Actually, I'll just let OpenAI explain in its own words:</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>"In the OpenAI-Hugging Face Incident, an agentic collective was able to autonomously penetrate not just OpenAI research infrastructure but also the production infrastructure of another company, chaining together vulnerabilities ranging from previously-unknown security flaws to using credentials to user accounts that had been leaked onto the internet.</p><p>"The Hugging Face incident showed that we underestimated the real-world cyber capabilities of our AI models."</p><p>However, the company thinks that while "security is still a cat-and-mouse game," nevertheless, "AI may shift its economics in ways that fundamentally advantage defenders."</p><p>"For example," OpenAI says, "we are starting to train our models specifically to write superhumanly secure code."</p><p>Presumably that's because there will be a risk of superhumanly attacks. What a world we now live in.</p><p>Anyway, apparently there are four main pillars to OpenAI's approach to secure itself:</p><ol start="1"><li>Use its own models to help secure its code.</li><li>Put its models to work defending its infrastructure continuously.</li><li>Use frontier intelligence to "continuously enumerate, probe, and identify potential attack paths."</li><li>Invest heavily in "fundamentals at scale" such as architecture and controls like network isolation, monitoring, and so on.</li></ol><p>As for other companies, OpenAI recommends a bunch of things that sound very reasonable, such as running secuirty assessments against their own systems, making security reviews part of their development process, and so on. But a large portion of OpenAI's recommendations for others is—would you have guessed it?—using an AI agent such as, drumroll please... OpenAI's very own Codex.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eQ4QvnT5n24R9f4nQNq5MP" name="GettyImages-1245391728.jpg" alt="OpenAI logo displayed on a phone screen and ChatGPT website displayed on a laptop screen are seen in this illustration photo taken in Krakow, Poland on December 5, 2022." src="https://cdn.mos.cms.futurecdn.net/eQ4QvnT5n24R9f4nQNq5MP-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jakub Porzycki/NurPhoto via Getty Images)</span></figcaption></figure><p>"Give your team a security agent. Start using Codex," says OpenAI. Though it does follow up with "or another capable agentic coding and security tool."</p><p>Then, amongst other things, "equip that agent with security expertise... have the agent help fix what it finds... incrementally automate detection triage... [and] have an AI-assisted forensic investigation capability ready before you need it."</p><p>So, to sum up: OpenAI models attack Hugging Face, and OpenAI recommends companies use OpenAI's models to defend from such attacks. Highlighting both sides of this equation—the danger of the threat, the models' capabilities, and the necessity for defence—certainly makes for good marketing for OpenAI, I'll say that much.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/openai-says-itd-be-a-shame-if-something-were-to-happen-to-your-servers-like-what-happened-to-hugging-face-better-use-our-ai-models-to-protect-yourself/</link>
                                                                            <description>
                            <![CDATA[ Call 1-800-ChatGPT in case of cyber emergency? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">betsEqApbgZi7UZUiVesgL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VvPU3YjojBEFdmzjZJKAwA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Aug 2026 15:22:49 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VvPU3YjojBEFdmzjZJKAwA-1920-80.jpg">
                                                            <media:credit><![CDATA[OpenAI]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[OpenAI representatives using a rotary phone to call ChatGPT via the 1-800-ChatGPT phone number]]></media:description>                                                            <media:text><![CDATA[OpenAI representatives using a rotary phone to call ChatGPT via the 1-800-ChatGPT phone number]]></media:text>
                                <media:title type="plain"><![CDATA[OpenAI representatives using a rotary phone to call ChatGPT via the 1-800-ChatGPT phone number]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VvPU3YjojBEFdmzjZJKAwA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Several of OpenAI's models <a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">breached a cyber security testing environment</a> last month, found their way onto the internet, and attacked <a href="https://huggingface.co/" target="_blank">Hugging Face</a> servers in what is now apparently called the OpenAI-Hugging Face Incident. And now OpenAI has <a href="https://openai.com/index/the-defenders-window/" target="_blank">revealed what it's doing</a> to help defend, err, itself. Defend itself from the kinds of attacks its own models committed against Hugging Face. Though it is sharing this "in the hopes it’ll be useful to other organizations."</p><p>To be clear about the extent of what happened last month: OpenAI models were being benchmarked, in a supposedly secure sandboxed environment, against <a href="https://github.com/sunblaze-ucb/exploitgym" target="_blank">ExploitGym</a>, which was done to test their cyber capabilities. They used a zero-day vulnerability to escalate privileges and eventually achieve internet access, where it began attacking Hugging Face servers and...</p><p>Actually, I'll just let OpenAI explain in its own words:</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>"In the OpenAI-Hugging Face Incident, an agentic collective was able to autonomously penetrate not just OpenAI research infrastructure but also the production infrastructure of another company, chaining together vulnerabilities ranging from previously-unknown security flaws to using credentials to user accounts that had been leaked onto the internet.</p><p>"The Hugging Face incident showed that we underestimated the real-world cyber capabilities of our AI models."</p><p>However, the company thinks that while "security is still a cat-and-mouse game," nevertheless, "AI may shift its economics in ways that fundamentally advantage defenders."</p><p>"For example," OpenAI says, "we are starting to train our models specifically to write superhumanly secure code."</p><p>Presumably that's because there will be a risk of superhumanly attacks. What a world we now live in.</p><p>Anyway, apparently there are four main pillars to OpenAI's approach to secure itself:</p><ol start="1"><li>Use its own models to help secure its code.</li><li>Put its models to work defending its infrastructure continuously.</li><li>Use frontier intelligence to "continuously enumerate, probe, and identify potential attack paths."</li><li>Invest heavily in "fundamentals at scale" such as architecture and controls like network isolation, monitoring, and so on.</li></ol><p>As for other companies, OpenAI recommends a bunch of things that sound very reasonable, such as running secuirty assessments against their own systems, making security reviews part of their development process, and so on. But a large portion of OpenAI's recommendations for others is—would you have guessed it?—using an AI agent such as, drumroll please... OpenAI's very own Codex.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eQ4QvnT5n24R9f4nQNq5MP" name="GettyImages-1245391728.jpg" alt="OpenAI logo displayed on a phone screen and ChatGPT website displayed on a laptop screen are seen in this illustration photo taken in Krakow, Poland on December 5, 2022." src="https://cdn.mos.cms.futurecdn.net/eQ4QvnT5n24R9f4nQNq5MP-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jakub Porzycki/NurPhoto via Getty Images)</span></figcaption></figure><p>"Give your team a security agent. Start using Codex," says OpenAI. Though it does follow up with "or another capable agentic coding and security tool."</p><p>Then, amongst other things, "equip that agent with security expertise... have the agent help fix what it finds... incrementally automate detection triage... [and] have an AI-assisted forensic investigation capability ready before you need it."</p><p>So, to sum up: OpenAI models attack Hugging Face, and OpenAI recommends companies use OpenAI's models to defend from such attacks. Highlighting both sides of this equation—the danger of the threat, the models' capabilities, and the necessity for defence—certainly makes for good marketing for OpenAI, I'll say that much.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ It's time to update Asus Armoury Crate and several other Asus software tools again, as another high severity security vulnerability has been discovered ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Asus Armoury Crate is not my favourite bit of software. It looks all high-tech on the surface, but any time I use it for more than five minutes, I'm reminded of the fact it's rather messy. It's also <a href="https://www.pcgamer.com/hardware/its-time-to-update-asus-armoury-crate-folks-the-latest-vulnerability-could-allow-hackers-to-compromise-your-os/" target="_blank">hit the headlines previously</a> for patched security vulnerability issues—and good news, folks, here we go again.</p><p>Per the <a href="https://www.asus.com/security-advisory/" target="_blank">Asus security advisory board</a>, Armoury Crate, Asus GPU Tweak III, and GPU Tweak II should all be updated to ensure "optimal protection," after the discovery of a new security vulnerability.</p><p>Listed as <a href="https://www.cve.org/CVERecord?id=CVE-2026-8917" target="_blank">CVE-2026-8917</a>, the issue has been given a score of 8.4 out of 10, with a "high" severity rating. Which is, funnily enough, the exact same rating as the previous issue we wrote about last year. "An IOCTLY vulnerability allows a local attacker to write a specific value to an arbitrary memory address, potentially leading to privilege escalation," says the posting. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>Well, that sounds like something that should be patched up at the earliest possible moment. The CVE listing doesn't mention Armoury Crate specifically, but the Asus page mentions that "a component used" by the software is part of the update, so time to get installing.</p><p><a href="https://www.asus.com/campaign/GPU-Tweak-III/uk/index.php" target="_blank">GPU Tweak III</a>, II, and AI Suite 3 will need the latest versions installing from their respective support pages, whereas Armoury Crate can be updated from within the app itself. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YmQsDwaSRNwF7tv3K4z7GH" name="Asusarmorycrate" alt="A screenshot from the Asus Armoury Crate software loaded on an Asus ROG Zephyrus G16" src="https://cdn.mos.cms.futurecdn.net/YmQsDwaSRNwF7tv3K4z7GH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>As an aside, Asus isn't the only company that patches out security vulnerabilities for its software on a regular basis, so if you've got something hanging around in your system tray from another hardware provider (particularly system/mobo software that came with your machine), it's a good idea to check for updates on a regular basis.</p><p>It's a dangerous world out there, and new security holes are patched all the time. Get thee to the update menu, and keep your ear to the ground.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/its-time-to-update-asus-armoury-crate-and-several-other-asus-software-tools-again-as-another-high-severity-security-vulnerability-has-been-discovered/</link>
                                                                            <description>
                            <![CDATA[ Sounds like a nasty one. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6K4dpmwzoswtEii9LTUyD8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DKTyR3yjtymYu9qMqpzmxd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 11 Aug 2026 16:00:40 +0000</pubDate>                                                                                                                                <updated>Tue, 11 Aug 2026 16:01:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DKTyR3yjtymYu9qMqpzmxd-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus Armoury Crate application on a gradient background.]]></media:description>                                                            <media:text><![CDATA[Asus Armoury Crate application on a gradient background.]]></media:text>
                                <media:title type="plain"><![CDATA[Asus Armoury Crate application on a gradient background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DKTyR3yjtymYu9qMqpzmxd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Asus Armoury Crate is not my favourite bit of software. It looks all high-tech on the surface, but any time I use it for more than five minutes, I'm reminded of the fact it's rather messy. It's also <a href="https://www.pcgamer.com/hardware/its-time-to-update-asus-armoury-crate-folks-the-latest-vulnerability-could-allow-hackers-to-compromise-your-os/" target="_blank">hit the headlines previously</a> for patched security vulnerability issues—and good news, folks, here we go again.</p><p>Per the <a href="https://www.asus.com/security-advisory/" target="_blank">Asus security advisory board</a>, Armoury Crate, Asus GPU Tweak III, and GPU Tweak II should all be updated to ensure "optimal protection," after the discovery of a new security vulnerability.</p><p>Listed as <a href="https://www.cve.org/CVERecord?id=CVE-2026-8917" target="_blank">CVE-2026-8917</a>, the issue has been given a score of 8.4 out of 10, with a "high" severity rating. Which is, funnily enough, the exact same rating as the previous issue we wrote about last year. "An IOCTLY vulnerability allows a local attacker to write a specific value to an arbitrary memory address, potentially leading to privilege escalation," says the posting. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>Well, that sounds like something that should be patched up at the earliest possible moment. The CVE listing doesn't mention Armoury Crate specifically, but the Asus page mentions that "a component used" by the software is part of the update, so time to get installing.</p><p><a href="https://www.asus.com/campaign/GPU-Tweak-III/uk/index.php" target="_blank">GPU Tweak III</a>, II, and AI Suite 3 will need the latest versions installing from their respective support pages, whereas Armoury Crate can be updated from within the app itself. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YmQsDwaSRNwF7tv3K4z7GH" name="Asusarmorycrate" alt="A screenshot from the Asus Armoury Crate software loaded on an Asus ROG Zephyrus G16" src="https://cdn.mos.cms.futurecdn.net/YmQsDwaSRNwF7tv3K4z7GH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>As an aside, Asus isn't the only company that patches out security vulnerabilities for its software on a regular basis, so if you've got something hanging around in your system tray from another hardware provider (particularly system/mobo software that came with your machine), it's a good idea to check for updates on a regular basis.</p><p>It's a dangerous world out there, and new security holes are patched all the time. Get thee to the update menu, and keep your ear to the ground.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft reportedly using TPM chips to weed out Windows piracy ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Microsoft's Trusted Platform Module, specifically TPM 2.0, has been part of Windows 11's system requirements <a href="https://www.pcgamer.com/windows-11-demands-tpm-20-and-heres-what-that-means-for-you/" target="_blank">since the operating system's introduction in 2021</a>. Now that the TPM is ubiquitous, being included with most CPUs for many years, Microsoft is looking to leverage it "to activate Windows devices at scale."</p><p>Currently, the enterprise sector activates Windows via Microsoft's Key Management Service (KMS), but according to the <a href="https://techcommunity.microsoft.com/blog/windows-itpro-blog/strengthening-key-management-service---kms-with-hardware-based-trust/4539465" target="_blank">Windows IT Pro Blog</a>, "modern organizations increasingly require stronger assurances around device identity and activation integrity." Basically, hackers can already clone or fake KMS server software, so the TPM is intended to provide a hardware-level security check to curb this.</p><p>The blog post then very briefly breaks down how TPM attestation works. Essentially, the KMS host flashes its TPM credentials to prove its hardware identity. These TPM credentials also reveal whether the KMS host has been tampered with or not, and Microsoft checks these before it allows the host to activate any devices. When everything appears to be in order, the KMS host will be allowed to "securely serve activation requests for Windows devices in the organization."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>Microsoft goes on to say, "Starting with upcoming Windows Server releases, KMS hosts must prove they are running on verified, uncompromised hardware before activating clients."</p><p>Basically, TPM-attestation will become mandatory for KMS hosts at some point in the future. That doesn't mean loads for most of us PC gamers with presumably totally legitimate copies of our operating system of choice. But hey, maybe you dabble in the dark art of system administration professionally and this is actually good to know. That said, I must admit the wording 'starting with' gives me the creeps.</p><p>At any rate, from August 2026 "Windows Server 2025 will provide readiness messaging to help administrators assess whether a KMS host is ready for hardware-based security, giving teams time to plan upgrades before enforcement begins."</p><p>With even the vaguest notion of the hardware environments some sysadmins are compelled to shepherd, I'm wishing them only the best on their upcoming migration. Here's hoping it's at worst only a medium-sized headache, and one that doesn't spread to our poor civilian PCs.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/windows/microsoft-reportedly-using-tpm-chips-to-weed-out-windows-piracy/</link>
                                                                            <description>
                            <![CDATA[ Spare a thought for the system administrators. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KXUVnWZsKJoiFKa89NCtva</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mrtpuw5E2woseBiU6JaG2A-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 29 Jul 2026 09:26:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mrtpuw5E2woseBiU6JaG2A-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Windows 11]]></media:description>                                                            <media:text><![CDATA[Windows 11]]></media:text>
                                <media:title type="plain"><![CDATA[Windows 11]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mrtpuw5E2woseBiU6JaG2A-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Microsoft's Trusted Platform Module, specifically TPM 2.0, has been part of Windows 11's system requirements <a href="https://www.pcgamer.com/windows-11-demands-tpm-20-and-heres-what-that-means-for-you/" target="_blank">since the operating system's introduction in 2021</a>. Now that the TPM is ubiquitous, being included with most CPUs for many years, Microsoft is looking to leverage it "to activate Windows devices at scale."</p><p>Currently, the enterprise sector activates Windows via Microsoft's Key Management Service (KMS), but according to the <a href="https://techcommunity.microsoft.com/blog/windows-itpro-blog/strengthening-key-management-service---kms-with-hardware-based-trust/4539465" target="_blank">Windows IT Pro Blog</a>, "modern organizations increasingly require stronger assurances around device identity and activation integrity." Basically, hackers can already clone or fake KMS server software, so the TPM is intended to provide a hardware-level security check to curb this.</p><p>The blog post then very briefly breaks down how TPM attestation works. Essentially, the KMS host flashes its TPM credentials to prove its hardware identity. These TPM credentials also reveal whether the KMS host has been tampered with or not, and Microsoft checks these before it allows the host to activate any devices. When everything appears to be in order, the KMS host will be allowed to "securely serve activation requests for Windows devices in the organization."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>Microsoft goes on to say, "Starting with upcoming Windows Server releases, KMS hosts must prove they are running on verified, uncompromised hardware before activating clients."</p><p>Basically, TPM-attestation will become mandatory for KMS hosts at some point in the future. That doesn't mean loads for most of us PC gamers with presumably totally legitimate copies of our operating system of choice. But hey, maybe you dabble in the dark art of system administration professionally and this is actually good to know. That said, I must admit the wording 'starting with' gives me the creeps.</p><p>At any rate, from August 2026 "Windows Server 2025 will provide readiness messaging to help administrators assess whether a KMS host is ready for hardware-based security, giving teams time to plan upgrades before enforcement begins."</p><p>With even the vaguest notion of the hardware environments some sysadmins are compelled to shepherd, I'm wishing them only the best on their upcoming migration. Here's hoping it's at worst only a medium-sized headache, and one that doesn't spread to our poor civilian PCs.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nearly half of organisations falling victim to ransomware encryption pay up, says report—although half of those often negotiate the payment down first ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Cybersecurity provider Sophos has released a report entitled "<a href="https://www.sophos.com/en-us/content/state-of-ransomware" target="_blank">The State of Ransomware 2026</a>," pulling together responses from 2,158 survey participants, ranging from IT directors to company executives, in regards to ransomware incidents. </p><p><a href="https://www.sophos.com/en-us/blog/sophos-state-of-ransomware-2026" target="_blank">Comparing the results</a> to previous reports indicates that ransom demands themselves are actually decreasing—although 48% of organisations whose data was encrypted paid their attackers.</p><p>The median ransom payment is now said to be $769,000, down from a neat $1 million from the previous year's study, with the median demand dropping to $698,000. Interestingly, 51% of organisations that paid a ransom coughed up less than the demanded amount, which the report says is due to victims "often [being] successful in negotiating a lower amount than originally demanded."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Together, malicious emails and phishing are said to account for half of all reported incidents, with exploited vulnerabilities dropping 14% year-over-year. Sophos notes that "patching alone will not close the gap," and recommends that businesses invest in advanced email protection, user awareness training, and similar methods to prevent future attacks.</p><p>79% of recorded attacks started with an identity-based approach, essentially relying on stolen (or user-provided) access credentials to initiate a breach. However, Sophos notes that when ransomware attacks start with a firewall vulnerability, 59% of those demands are for $1 million or more.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tv5e8eVbT7uQcLL7Dtt3bZ" name="hacking-omg.jpg" alt="Person typing on a laptop with red and blue lighting" src="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Westend61)</span></figcaption></figure><p>In terms of which sectors paid up, the lowest category was retail, with a 32% payment rate. However, according to Sophos' data, 72% of local and state government organisations surveyed bit the bullet after falling victim to ransomware, and duly paid at least some of the demands.</p><p>It's a bit of a rollercoaster of a report. On the one hand, median ransom demands and payments going down is definitely a good thing, along with backup-based recovery rates jumping to 66% in terms of encrypted data cases, up 12% from the previous year.</p><p>On the other, 56% of attacks succeeded in encrypting data, up 11% YOY. The average recovery cost has jumped to $1.7 million, another 11% increase. And a mere 34% of small organisations managed to stop attacks before encryption or extortion, compared to 46% of large organisations with between 3,001 and 5,000 employees.</p><p>In essence, a ransomware incident is often pretty devastating for organisations large and small, and it's your user credentials where attackers are gaining ground. Keep an eye on those emails, folks. Who exactly is HackerMan69, anyway?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/nearly-half-of-organisations-falling-victim-to-ransomware-encryption-pay-up-says-report-although-half-of-those-often-negotiate-the-payment-down-first/</link>
                                                                            <description>
                            <![CDATA[ Bad news, our data is being held hostage for money. Good news, I've got them down to a fairer price. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">k63qegzVm5xKn9epiaz6wk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LV5houHniU8eox8FuabjWQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Jul 2026 15:15:23 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LV5houHniU8eox8FuabjWQ-1920-80.jpg">
                                                            <media:credit><![CDATA[Rockstar]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A man holding a gun drives a boat as money flies out the back in GTA Online]]></media:description>                                                            <media:text><![CDATA[A man holding a gun drives a boat as money flies out the back in GTA Online]]></media:text>
                                <media:title type="plain"><![CDATA[A man holding a gun drives a boat as money flies out the back in GTA Online]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LV5houHniU8eox8FuabjWQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Cybersecurity provider Sophos has released a report entitled "<a href="https://www.sophos.com/en-us/content/state-of-ransomware" target="_blank">The State of Ransomware 2026</a>," pulling together responses from 2,158 survey participants, ranging from IT directors to company executives, in regards to ransomware incidents. </p><p><a href="https://www.sophos.com/en-us/blog/sophos-state-of-ransomware-2026" target="_blank">Comparing the results</a> to previous reports indicates that ransom demands themselves are actually decreasing—although 48% of organisations whose data was encrypted paid their attackers.</p><p>The median ransom payment is now said to be $769,000, down from a neat $1 million from the previous year's study, with the median demand dropping to $698,000. Interestingly, 51% of organisations that paid a ransom coughed up less than the demanded amount, which the report says is due to victims "often [being] successful in negotiating a lower amount than originally demanded."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Together, malicious emails and phishing are said to account for half of all reported incidents, with exploited vulnerabilities dropping 14% year-over-year. Sophos notes that "patching alone will not close the gap," and recommends that businesses invest in advanced email protection, user awareness training, and similar methods to prevent future attacks.</p><p>79% of recorded attacks started with an identity-based approach, essentially relying on stolen (or user-provided) access credentials to initiate a breach. However, Sophos notes that when ransomware attacks start with a firewall vulnerability, 59% of those demands are for $1 million or more.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tv5e8eVbT7uQcLL7Dtt3bZ" name="hacking-omg.jpg" alt="Person typing on a laptop with red and blue lighting" src="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Westend61)</span></figcaption></figure><p>In terms of which sectors paid up, the lowest category was retail, with a 32% payment rate. However, according to Sophos' data, 72% of local and state government organisations surveyed bit the bullet after falling victim to ransomware, and duly paid at least some of the demands.</p><p>It's a bit of a rollercoaster of a report. On the one hand, median ransom demands and payments going down is definitely a good thing, along with backup-based recovery rates jumping to 66% in terms of encrypted data cases, up 12% from the previous year.</p><p>On the other, 56% of attacks succeeded in encrypting data, up 11% YOY. The average recovery cost has jumped to $1.7 million, another 11% increase. And a mere 34% of small organisations managed to stop attacks before encryption or extortion, compared to 46% of large organisations with between 3,001 and 5,000 employees.</p><p>In essence, a ransomware incident is often pretty devastating for organisations large and small, and it's your user credentials where attackers are gaining ground. Keep an eye on those emails, folks. Who exactly is HackerMan69, anyway?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A hacker has reportedly wiped out parts of the land registry database of Romania, bringing its real-estate market to a shuddering halt ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A hacker going by the name of ByteToBreach has broken in to Romania's cadastre, or land registry, and  reportedly wiped information from its databases. Sources speaking to <a href="https://news.risky.biz/risky-bulletin-hacker-wipes-romanias-entire-land-registry-database/" target="_blank">Risky Business</a> have told the outlet that the hacker entered the system using valid credentials, exfiltrated the data within, and later wiped info from its servers after a failed extortion attempt.</p><p><a href="https://www.kelacyber.com/blog/bytetobreach-a-deep-dive-into-a-persistent-data-leak-operator/" target="_blank">ByteToBreach</a> is reported to be the same hacker that breached the <a href="https://darkwebinformer.com/full-source-code-of-swedens-e-government-platform-leaked-from-compromised-cgi-sverige-infrastructure/" target="_blank">Swedish government's e-portal</a> earlier this year, among other alleged acts of hackery. The stolen data was said to be announced for sale on two forums.</p><p>In the meantime, the country's real-estate market appears to have been <a href="https://therecord.media/romania-cyberattack-land-registry" target="_blank">heavily disrupted</a>. Romanian news outlet <a href="https://jurnaluldearges.ro/notarita-ana-stan-sunt-in-co-fortat-hackerii-au-spart-cadastrul-458711/" target="_blank">Jurnalul De Arges</a> reports a post originating from notary Ana Stan that reads: "I am a notary. Since Tuesday I cannot issue a land registry extract, I cannot authenticate a sale, I cannot register a mortgage."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>While citizens and notaries are unable to obtain proof of ownership, new real-estate transactions have been brought to a shuddering halt. The disruption also falls mere weeks before the government's <a href="https://www.romania-insider.com/romania-real-estate-cyberattack-land-registration-2026#:~:text=Many%20such%20transactions%20would%20have%20taken%20place%2C%20since%20VAT%20for%20new%20homes%20increases%20from%209%25%20to%2021%25%20from%20August%201%20onwards." target="_blank">plans to raise the VAT on new homes to 21% from 9%</a> come into effect, which means those hoping to complete their real-estate dealings before the deadline face an anxious wait for normal service to resume.<br><br>The National Agency for Cadastre and Real Estate Advertising (ANCPI) has <a href="https://web.archive.org/web/20260719172925/https://www.ancpi.ro/" target="_blank">released a statement</a>, which begins as follows (via machine translation): "Currently, the IT infrastructure of ANCPI is undergoing a comprehensive reinstallation and consolidation process."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6TGQnBqmmkzUUKj64xg7ma" name="GettyImages-1358210974.jpg" alt="Back angle Hacker wearing hoodies cloth motivation emotion and typing coding to hacking cryptocurrency from internet at home" src="https://cdn.mos.cms.futurecdn.net/6TGQnBqmmkzUUKj64xg7ma-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: skaman306 via Getty Images)</span></figcaption></figure><p>"Contrary to some information appearing in the public space, at the time of the incident, ANCPI had several locations designated for storing backup copies, a measure that ensures redundancy and the possibility of data restoration in the event of cybersecurity incidents," the statement continues.</p><p>The agency also released <a href="https://www.ancpi.ro/" target="_blank">a separate statement</a> contradicting reports that the entire database had been wiped, stating that "the institution's technical and legal databases have not been affected."</p><p><a href="https://www.euronews.ro/articole/exclusiv-hackerul-care-sustine-ca-a-atacat-cadastrul-le-cere-scuze-romanilor-si-i" target="_blank">Euronews Romania</a> claims to have spoken to ByteToBreach over Signal, and asked them what their message was for the authorities and citizens of Romania. The hacker was reported to have said: "I'm sorry for the problems I caused for citizens and for the IT team now working hard at ANCPU."</p><p>The outlet also wanted to know whether users should be concerned if their data was compromised, to which the claimed perpetrator is said to have responded: "I don't sell this data to just anyone."</p><p>Which is... not entirely reassuring, I grant you. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/a-hacker-has-reportedly-wiped-out-parts-of-the-land-registry-database-of-romania-bringing-its-real-estate-market-to-a-shuddering-halt/</link>
                                                                            <description>
                            <![CDATA[ Backups are said to be on the way. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SRLxpHEWyQCoc3aAv3Nngg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xSQGndKsA5GtZNjPg6DGgb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Jul 2026 16:19:27 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xSQGndKsA5GtZNjPg6DGgb-1920-80.jpg">
                                                            <media:credit><![CDATA[Colossal Order]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of a golden tower in Cities: Skylines, from the Africa In Miniature content pack.]]></media:description>                                                            <media:text><![CDATA[An image of a golden tower in Cities: Skylines, from the Africa In Miniature content pack.]]></media:text>
                                <media:title type="plain"><![CDATA[An image of a golden tower in Cities: Skylines, from the Africa In Miniature content pack.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xSQGndKsA5GtZNjPg6DGgb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A hacker going by the name of ByteToBreach has broken in to Romania's cadastre, or land registry, and  reportedly wiped information from its databases. Sources speaking to <a href="https://news.risky.biz/risky-bulletin-hacker-wipes-romanias-entire-land-registry-database/" target="_blank">Risky Business</a> have told the outlet that the hacker entered the system using valid credentials, exfiltrated the data within, and later wiped info from its servers after a failed extortion attempt.</p><p><a href="https://www.kelacyber.com/blog/bytetobreach-a-deep-dive-into-a-persistent-data-leak-operator/" target="_blank">ByteToBreach</a> is reported to be the same hacker that breached the <a href="https://darkwebinformer.com/full-source-code-of-swedens-e-government-platform-leaked-from-compromised-cgi-sverige-infrastructure/" target="_blank">Swedish government's e-portal</a> earlier this year, among other alleged acts of hackery. The stolen data was said to be announced for sale on two forums.</p><p>In the meantime, the country's real-estate market appears to have been <a href="https://therecord.media/romania-cyberattack-land-registry" target="_blank">heavily disrupted</a>. Romanian news outlet <a href="https://jurnaluldearges.ro/notarita-ana-stan-sunt-in-co-fortat-hackerii-au-spart-cadastrul-458711/" target="_blank">Jurnalul De Arges</a> reports a post originating from notary Ana Stan that reads: "I am a notary. Since Tuesday I cannot issue a land registry extract, I cannot authenticate a sale, I cannot register a mortgage."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>While citizens and notaries are unable to obtain proof of ownership, new real-estate transactions have been brought to a shuddering halt. The disruption also falls mere weeks before the government's <a href="https://www.romania-insider.com/romania-real-estate-cyberattack-land-registration-2026#:~:text=Many%20such%20transactions%20would%20have%20taken%20place%2C%20since%20VAT%20for%20new%20homes%20increases%20from%209%25%20to%2021%25%20from%20August%201%20onwards." target="_blank">plans to raise the VAT on new homes to 21% from 9%</a> come into effect, which means those hoping to complete their real-estate dealings before the deadline face an anxious wait for normal service to resume.<br><br>The National Agency for Cadastre and Real Estate Advertising (ANCPI) has <a href="https://web.archive.org/web/20260719172925/https://www.ancpi.ro/" target="_blank">released a statement</a>, which begins as follows (via machine translation): "Currently, the IT infrastructure of ANCPI is undergoing a comprehensive reinstallation and consolidation process."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6TGQnBqmmkzUUKj64xg7ma" name="GettyImages-1358210974.jpg" alt="Back angle Hacker wearing hoodies cloth motivation emotion and typing coding to hacking cryptocurrency from internet at home" src="https://cdn.mos.cms.futurecdn.net/6TGQnBqmmkzUUKj64xg7ma-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: skaman306 via Getty Images)</span></figcaption></figure><p>"Contrary to some information appearing in the public space, at the time of the incident, ANCPI had several locations designated for storing backup copies, a measure that ensures redundancy and the possibility of data restoration in the event of cybersecurity incidents," the statement continues.</p><p>The agency also released <a href="https://www.ancpi.ro/" target="_blank">a separate statement</a> contradicting reports that the entire database had been wiped, stating that "the institution's technical and legal databases have not been affected."</p><p><a href="https://www.euronews.ro/articole/exclusiv-hackerul-care-sustine-ca-a-atacat-cadastrul-le-cere-scuze-romanilor-si-i" target="_blank">Euronews Romania</a> claims to have spoken to ByteToBreach over Signal, and asked them what their message was for the authorities and citizens of Romania. The hacker was reported to have said: "I'm sorry for the problems I caused for citizens and for the IT team now working hard at ANCPU."</p><p>The outlet also wanted to know whether users should be concerned if their data was compromised, to which the claimed perpetrator is said to have responded: "I don't sell this data to just anyone."</p><p>Which is... not entirely reassuring, I grant you. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ It's probably time to update 7-Zip as the app has just been patched to fix a pretty big vulnerability ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you use 7-Zip for your file compression and decompression you might want to update, as there's been a pretty big vulnerability patched. And yes, I mean manually update, as 7-Zip doesn't auto-update. </p><p>You can download and run a new installer from the <a href="https://www.7-zip.org/download.html" target="_blank">7-Zip website</a>. If you're updated to version 26.02 (or later, if you're reading this in the future) then you'll be fine. To check this, go to Help > About 7-Zip in the app.</p><p>The vulnerability, as <a href="https://www.zerodayinitiative.com/advisories/ZDI-26-444/" target="_blank">explained by Zero Day Initiative</a> (via <a href="https://www.techspot.com/news/113175-7-zip-patches-flaw-could-run-malware-opening.html" target="_blank">TechSpot</a>), "allows remote attackers to execute arbitrary code on affected installations of 7-Zip. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>"The specific flaw exists within the processing of XZ chunked data. Crafted XZ-compressed data can trigger an overflow of a heap-based buffer. An attacker can leverage this vulnerability to execute code in the context of the current process."</p><p>It sounds like you'd have to try to use a compromised compressed file in 7-Zip for the exploit to work. This might initially sound like a bit of a nothing burger because compromised files can <em>obviously </em>compromise your PC (duh). </p><p>But I'd say the difference here is we don't usually expect the act of decompression itself to cause anything malicious. It seems this vulnerability means that's the kind of thing that could happen, with a compromised file using 7-Zip's exploitable code to do so.</p><p>It's worth noting that we've heard word of exploits for other file archivers previously, <a href="https://www.pcgamer.com/software/security/google-says-a-winrar-exploit-for-windows-is-in-widespread-use-by-government-backed-threat-actors-linked-to-russia-and-china/" target="_blank">such as WinRAR</a>. Those also have been patched. In other words, 7-Zip isn't unique in this regard, and in fact the patch advisory was released just a few weeks after the vulnerability was reported to 7-Zip by Lunbun LLC (Landon Peng), according to Zero Day Initiative. </p><p>And remember, this fix <em>requires a </em>manual update. So, if you're a 7-Zip user it's definitely worth getting a new version downloaded.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/its-probably-time-to-update-7-zip-as-the-app-has-just-been-patched-to-fix-a-pretty-big-vulnerability/</link>
                                                                            <description>
                            <![CDATA[ It will need to be manually updated to version 26.02 or later. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LoCfaUiikzXiBihcqqisph</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uBhs753KfVz8NZXHfnaZ33-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Jul 2026 16:18:30 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uBhs753KfVz8NZXHfnaZ33-1920-80.jpg">
                                                            <media:credit><![CDATA[Igor Pavlov, 7-Zip]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot of 7-Zip with its About window open, showing version 26.02 which fixes a vulnerability.]]></media:description>                                                            <media:text><![CDATA[A screenshot of 7-Zip with its About window open, showing version 26.02 which fixes a vulnerability.]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot of 7-Zip with its About window open, showing version 26.02 which fixes a vulnerability.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uBhs753KfVz8NZXHfnaZ33-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you use 7-Zip for your file compression and decompression you might want to update, as there's been a pretty big vulnerability patched. And yes, I mean manually update, as 7-Zip doesn't auto-update. </p><p>You can download and run a new installer from the <a href="https://www.7-zip.org/download.html" target="_blank">7-Zip website</a>. If you're updated to version 26.02 (or later, if you're reading this in the future) then you'll be fine. To check this, go to Help > About 7-Zip in the app.</p><p>The vulnerability, as <a href="https://www.zerodayinitiative.com/advisories/ZDI-26-444/" target="_blank">explained by Zero Day Initiative</a> (via <a href="https://www.techspot.com/news/113175-7-zip-patches-flaw-could-run-malware-opening.html" target="_blank">TechSpot</a>), "allows remote attackers to execute arbitrary code on affected installations of 7-Zip. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>"The specific flaw exists within the processing of XZ chunked data. Crafted XZ-compressed data can trigger an overflow of a heap-based buffer. An attacker can leverage this vulnerability to execute code in the context of the current process."</p><p>It sounds like you'd have to try to use a compromised compressed file in 7-Zip for the exploit to work. This might initially sound like a bit of a nothing burger because compromised files can <em>obviously </em>compromise your PC (duh). </p><p>But I'd say the difference here is we don't usually expect the act of decompression itself to cause anything malicious. It seems this vulnerability means that's the kind of thing that could happen, with a compromised file using 7-Zip's exploitable code to do so.</p><p>It's worth noting that we've heard word of exploits for other file archivers previously, <a href="https://www.pcgamer.com/software/security/google-says-a-winrar-exploit-for-windows-is-in-widespread-use-by-government-backed-threat-actors-linked-to-russia-and-china/" target="_blank">such as WinRAR</a>. Those also have been patched. In other words, 7-Zip isn't unique in this regard, and in fact the patch advisory was released just a few weeks after the vulnerability was reported to 7-Zip by Lunbun LLC (Landon Peng), according to Zero Day Initiative. </p><p>And remember, this fix <em>requires a </em>manual update. So, if you're a 7-Zip user it's definitely worth getting a new version downloaded.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Meet GigaWiper, a tricksy new malware that can wipe your PC's storage drives squeaky clean and spy on your desktop all at once ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I run a single SSD gaming PC, which I'm aware is giving me a wonderful case of 'single-point-of-failure-itus.' Which is why my ears (eyes?) perked up when I read about GigaWiper, a wonderfully-named malware that can potentially do terrible things to your storage drives.</p><p>Microsoft has published <a href="https://www.microsoft.com/en-us/security/blog/2026/07/09/gigawiper-anatomy-of-a-destructive-backdoor-assembled-from-multiple-malware/" target="_blank">an analysis</a> into GigaWiper's capabilities, and it looks to be a multi-faceted, tricksy piece of malware with a pretty unique USP (via <a href="https://www.malwarebytes.com/blog/news/2026/07/this-new-windows-malware-can-take-over-your-pc-and-wipe-it-clean" target="_blank">MalwareBytes</a>). It appears to be the result of several malware families stitched together, and is capable of wiping your drives at the physical disk level, "overwriting raw disk content and removing partition metadata." </p><p>The nasty little beastie has several ways to irreversibly destroy your data. There's a Windows drive secure wiper for starters, which targets an installation and performs multiple overwrites using different byte patterns, making the original data virtually impossible to retrieve.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Another method identifies physical disk drives, confirms which drive contains a Windows installation, removes the partition references from your other drives, overwrites the raw disk content with randomized data, and reboots your system for good measure. </p><p>Keep your fork, there's more. Another Crucio-based wiper imitates traditional ransomware, but instead of demanding payment, encrypts your files and then "throws away the encryption key" instead, according to MalwareBytes. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DynonQrXiuN2b4oy9y8R3f" name="malware.jpg" alt="Malware" src="https://cdn.mos.cms.futurecdn.net/DynonQrXiuN2b4oy9y8R3f-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Pixabay (Elchinator))</span></figcaption></figure><p>GigaWiper's all-in-one approach also means it's capable of capturing your screen, streaming your desktop, and allowing remote control of your machine via an outside TCP server, all while hiding itself under the cover of a scheduled OneDrive task. Jolly good. </p><p>The good news for us home PC users is that GigaWiper seems to be targeted towards organisations rather than individual machines, and can only operate after breaching a PC in the first place—so the usual "keep your security software updated" advice should be enough for the majority.</p><p>For sysadmins, though, Microsoft recommends <a href="https://www.microsoft.com/en-us/security/blog/2026/07/09/gigawiper-anatomy-of-a-destructive-backdoor-assembled-from-multiple-malware/#:~:text=destroy%20infected%20systems.-,Defending%20against%20destructive%20threats,-To%20harden%20networks" target="_blank">multiple network-hardening methods</a> (including "tenant-wide tamper protection") to stop breaches before they occur. This is one piece of Malware you really don't want running rampant through your IT infrastructure, so I'd take this as yet another reason to have a thorough review of your security practices.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/meet-gigawiper-a-tricksy-new-malware-that-can-wipe-your-pcs-storage-drives-squeaky-clean-and-spy-on-your-desktop-all-at-once/</link>
                                                                            <description>
                            <![CDATA[ I guess I could do with the free space... ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">h5k7NWMomGenCTVw2UYY46</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kp8WNzkz7PpxjFvhKppv5X-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 20 Jul 2026 10:42:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kp8WNzkz7PpxjFvhKppv5X-1920-80.jpg">
                                                            <media:credit><![CDATA[FuturLab]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A cleaner standing in front of a house]]></media:description>                                                            <media:text><![CDATA[A cleaner standing in front of a house]]></media:text>
                                <media:title type="plain"><![CDATA[A cleaner standing in front of a house]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kp8WNzkz7PpxjFvhKppv5X-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I run a single SSD gaming PC, which I'm aware is giving me a wonderful case of 'single-point-of-failure-itus.' Which is why my ears (eyes?) perked up when I read about GigaWiper, a wonderfully-named malware that can potentially do terrible things to your storage drives.</p><p>Microsoft has published <a href="https://www.microsoft.com/en-us/security/blog/2026/07/09/gigawiper-anatomy-of-a-destructive-backdoor-assembled-from-multiple-malware/" target="_blank">an analysis</a> into GigaWiper's capabilities, and it looks to be a multi-faceted, tricksy piece of malware with a pretty unique USP (via <a href="https://www.malwarebytes.com/blog/news/2026/07/this-new-windows-malware-can-take-over-your-pc-and-wipe-it-clean" target="_blank">MalwareBytes</a>). It appears to be the result of several malware families stitched together, and is capable of wiping your drives at the physical disk level, "overwriting raw disk content and removing partition metadata." </p><p>The nasty little beastie has several ways to irreversibly destroy your data. There's a Windows drive secure wiper for starters, which targets an installation and performs multiple overwrites using different byte patterns, making the original data virtually impossible to retrieve.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Another method identifies physical disk drives, confirms which drive contains a Windows installation, removes the partition references from your other drives, overwrites the raw disk content with randomized data, and reboots your system for good measure. </p><p>Keep your fork, there's more. Another Crucio-based wiper imitates traditional ransomware, but instead of demanding payment, encrypts your files and then "throws away the encryption key" instead, according to MalwareBytes. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DynonQrXiuN2b4oy9y8R3f" name="malware.jpg" alt="Malware" src="https://cdn.mos.cms.futurecdn.net/DynonQrXiuN2b4oy9y8R3f-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Pixabay (Elchinator))</span></figcaption></figure><p>GigaWiper's all-in-one approach also means it's capable of capturing your screen, streaming your desktop, and allowing remote control of your machine via an outside TCP server, all while hiding itself under the cover of a scheduled OneDrive task. Jolly good. </p><p>The good news for us home PC users is that GigaWiper seems to be targeted towards organisations rather than individual machines, and can only operate after breaching a PC in the first place—so the usual "keep your security software updated" advice should be enough for the majority.</p><p>For sysadmins, though, Microsoft recommends <a href="https://www.microsoft.com/en-us/security/blog/2026/07/09/gigawiper-anatomy-of-a-destructive-backdoor-assembled-from-multiple-malware/#:~:text=destroy%20infected%20systems.-,Defending%20against%20destructive%20threats,-To%20harden%20networks" target="_blank">multiple network-hardening methods</a> (including "tenant-wide tamper protection") to stop breaches before they occur. This is one piece of Malware you really don't want running rampant through your IT infrastructure, so I'd take this as yet another reason to have a thorough review of your security practices.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Turns out Microsoft's Secure Boot was little better than a busted lock for about a decade ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Software development, much like making a stew that's a perfect umami bomb in every bite, is a tricky business. Every major commercial product is touched by many hands, and sometimes the chefs leave cardamom and bay leaves in the mix. Okay, perhaps I've overstretched the metaphor—what you need to know is that apparently Microsoft's Secure Boot was basically busted for the last decade.</p><p>Rather than leftover bones in the broth, old system images could be exploited to bypass a system's motherboard-level protection to execute dubious code during system boot. It's bad enough that this effectively makes Secure Boot redundant, but worse still, any malicious firmware installed this way could then survive swapping out the hard drive or persist past reinstalling your operating system.</p><p>The affected images were UEFI shim bootloaders, which were first introduced to extend Secure Boot support to Linux devices (though they can also be installed on Windows devices).  <a href="https://www.welivesecurity.com/en/eset-research/forgotten-uefi-shims-undermining-secure-boot/" target="_blank">ESET researchers identified and reported 11 of these vulnerable shims back in February</a>. Microsoft has revoked the permission it once granted to the affected shims, so that bad actors can't continue to leverage them as a bypass (via <a href="https://arstechnica.com/security/2026/07/microsoft-secure-boot-has-been-broken-for-most-of-its-existence/" target="_blank">Ars Technica</a>).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>At the risk of oversimplifying, 'Unified Extensible Firmware Interface (UEFI)' is a firmware architecture spec that initialises hardware and then allows it to transfer control to your OS during startup. As a safety precaution designed to root out boot kits, Secure Boot requires a cryptographically signed certificate from UEFI apps before they can run.</p><p>Shims, then, are little bridges of code that allow a motherboard's UEFI firmware to communicate with operating systems like Linux. Shims allow Linux to boot with Secure Boot enabled, without also requiring a key for every distro to be registered within your motherboard's NVRAM settings. </p><p>Third-party boot components, like shims, are often signed with the 'Microsoft Corporation UEFI CA 2011' certificate so that they play nice with Secure Boot. You may remember that <a href="https://www.pcgamer.com/software/windows/secure-boot-certificates-used-by-anti-cheat-software-are-set-to-expire-in-june-but-new-ones-are-already-in-the-mail/" target="_blank">some of the 2011 certificates used by anti-cheat software expired recently</a>.</p><p>Anyway, the vulnerabilities resulting from these old shims affected both Linux and Windows users. The 11 shims were part of various tools and software packages, including Linux distros and PC diagnostics software (<a href="https://kb.cert.org/vuls/id/616257" target="_blank">CERT has compiled a helpful list</a>). Another twist in the tale is that bad actors could also introduce their own copy of an affected shim to a vulnerable system.</p><p>Microsoft only revoked the shims' permissions in June's monthly patch release. It's all well and good staying on top of these updates, but ESET have highlighted that at least one of the vulnerabilities they reported <a href="https://github.com/rhboot/shim/commit/d241bbbdbfb98b4f878342ef180e3994205b170a" target="_blank">had already been well documented a decade ago</a>. The fact that it lingered on for so long, without its permissions being revoked, feels like a huge oversight on Microsoft's part.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/operating-systems/turns-out-microsofts-secure-boot-was-little-better-than-a-busted-lock-for-about-a-decade/</link>
                                                                            <description>
                            <![CDATA[ Are you up to date? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ehV2TtTYdZ7QWnz9VHYQcZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ckGtqxQkw2q6BJBQc6BMUY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 16 Jul 2026 14:49:23 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ckGtqxQkw2q6BJBQc6BMUY-1920-80.jpg">
                                                            <media:credit><![CDATA[Gigabyte]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gigabyte&#039;s BIOS screen showing Secure Boot options.]]></media:description>                                                            <media:text><![CDATA[Gigabyte&#039;s BIOS screen showing Secure Boot options.]]></media:text>
                                <media:title type="plain"><![CDATA[Gigabyte&#039;s BIOS screen showing Secure Boot options.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ckGtqxQkw2q6BJBQc6BMUY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Software development, much like making a stew that's a perfect umami bomb in every bite, is a tricky business. Every major commercial product is touched by many hands, and sometimes the chefs leave cardamom and bay leaves in the mix. Okay, perhaps I've overstretched the metaphor—what you need to know is that apparently Microsoft's Secure Boot was basically busted for the last decade.</p><p>Rather than leftover bones in the broth, old system images could be exploited to bypass a system's motherboard-level protection to execute dubious code during system boot. It's bad enough that this effectively makes Secure Boot redundant, but worse still, any malicious firmware installed this way could then survive swapping out the hard drive or persist past reinstalling your operating system.</p><p>The affected images were UEFI shim bootloaders, which were first introduced to extend Secure Boot support to Linux devices (though they can also be installed on Windows devices).  <a href="https://www.welivesecurity.com/en/eset-research/forgotten-uefi-shims-undermining-secure-boot/" target="_blank">ESET researchers identified and reported 11 of these vulnerable shims back in February</a>. Microsoft has revoked the permission it once granted to the affected shims, so that bad actors can't continue to leverage them as a bypass (via <a href="https://arstechnica.com/security/2026/07/microsoft-secure-boot-has-been-broken-for-most-of-its-existence/" target="_blank">Ars Technica</a>).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>At the risk of oversimplifying, 'Unified Extensible Firmware Interface (UEFI)' is a firmware architecture spec that initialises hardware and then allows it to transfer control to your OS during startup. As a safety precaution designed to root out boot kits, Secure Boot requires a cryptographically signed certificate from UEFI apps before they can run.</p><p>Shims, then, are little bridges of code that allow a motherboard's UEFI firmware to communicate with operating systems like Linux. Shims allow Linux to boot with Secure Boot enabled, without also requiring a key for every distro to be registered within your motherboard's NVRAM settings. </p><p>Third-party boot components, like shims, are often signed with the 'Microsoft Corporation UEFI CA 2011' certificate so that they play nice with Secure Boot. You may remember that <a href="https://www.pcgamer.com/software/windows/secure-boot-certificates-used-by-anti-cheat-software-are-set-to-expire-in-june-but-new-ones-are-already-in-the-mail/" target="_blank">some of the 2011 certificates used by anti-cheat software expired recently</a>.</p><p>Anyway, the vulnerabilities resulting from these old shims affected both Linux and Windows users. The 11 shims were part of various tools and software packages, including Linux distros and PC diagnostics software (<a href="https://kb.cert.org/vuls/id/616257" target="_blank">CERT has compiled a helpful list</a>). Another twist in the tale is that bad actors could also introduce their own copy of an affected shim to a vulnerable system.</p><p>Microsoft only revoked the shims' permissions in June's monthly patch release. It's all well and good staying on top of these updates, but ESET have highlighted that at least one of the vulnerabilities they reported <a href="https://github.com/rhboot/shim/commit/d241bbbdbfb98b4f878342ef180e3994205b170a" target="_blank">had already been well documented a decade ago</a>. The fact that it lingered on for so long, without its permissions being revoked, feels like a huge oversight on Microsoft's part.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Latest Microsoft Patch Tuesday updates stamp out a record 622 security vulnerabilities, as the company's AI-enhanced bug hunt looks to bear fruit ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As much as AI has its drawbacks, it'd be wrong to say it doesn't have its uses. Case in point, Microsoft's previous commitment to leverage <a href="https://www.pcgamer.com/software/ai/more-windows-security-updates-to-come-as-microsoft-leverages-ai-vulnerability-detection-but-only-the-highest-confidence-findings-reach-the-engineering-team/" target="_blank">AI vulnerability detection in Windows security updates</a> looks to be bearing fruit, as the latest <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Jul" target="_blank">Patch Tuesday release</a> fixes an astonishing 622 CVEs across its products.</p><p>Which is a new record, according to <a href="https://www.theregister.com/security/2026/07/14/patchpocalypse-now-microsoft-tops-last-months-record-with-622-patch-tuesday-cves/5271434" target="_blank">The Register</a>, more than tripling the previous 206 CVE figure. Over 500 of those security fixes are Windows-related, including a fix for a <a href="https://www.crowdstrike.com/en-us/blog/patch-tuesday-analysis-july-2026/#:~:text=Yes-,Disclosed%20Zero%2DDay%20Vulnerability%20in%20Windows%20BitLocker,-CVE%2D2026%2D50661" target="_blank">zero-day vulnerability</a> in Windows BitLocker, possibly related to exploits <a href="https://www.pcgamer.com/hardware/security-researcher-describes-freshly-uncovered-windows-11-vulnerability-as-one-of-the-most-insane-discoveries-i-ever-found/" target="_blank">uncovered by security researcher Nightmare-Eclipse</a> earlier this year.</p><p>The new cumulative update for Windows 11 is entitled <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/07/july-14-2026-kb5101650-os-builds-26200-8875-and-26100-8875" target="_blank">KB5101650</a>, and it's not just CVE issues that receive a tune-up. The update also patches a nasty little bug that <a href="https://www.pcgamer.com/software/windows/a-nasty-windows-11-bug-is-taking-upwards-of-500-gb-worth-of-storage-and-is-surprisingly-difficult-to-spot-but-theres-a-fix/" target="_blank">could potentially take up 500 GB of your storage space</a> unnecessarily, related to a file within the Capability Access Manager.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>The feature is responsible for Windows 11 app permissions, but a file entitled "CapabilityAccessManager.db-wal" could potentially balloon in size, taking up precious storage space amid the current <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">SSD and memory crisis</a>—which is unfortunate timing. Anyway, the bug is reportedly squashed, so we can all sleep easy in our beds tonight.</p><p>KB5101650 also allows users to defer Windows updates to a specific day with a 35-day period, which is an Insider feature that now looks to be rolling out to all Windows 11 PCs. Windows Latest has experimented with delaying further than the 35-day limit, and found that you can<a href="https://www.windowslatest.com/2026/07/14/windows-11-kb5101650-out-with-features-like-screen-tint-bluetooth-upgrade-point-in-time-direct-download-update/#:~:text=you%20can%20unpause%20them%20and%20re%2Dpause%20updates%20as%20many%20times%20as%20you%20want" target="_blank"> un-pause and then re-pause an update</a> for as long as you want. Which might come in handy, if anything particularly system-breaking comes up.</p><p>Speaking of which, Microsoft <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/07/july-14-2026-kb5101650-os-builds-26200-8875-and-26100-8875#:~:text=with%20Intel%20processors-,Important,-This%20update%20might" target="_blank">warns</a> that "This update might not be available for a limited number of Dell devices with Intel processors," which is apparently down to an incompatibility issue that can "potentially cause unexpected shutdowns, poor performance, increased heat, and battery drain."</p><p>"We are working together with Dell to prevent the affected models from experiencing the issue and plan to release a resolution for affected devices in the coming days," says MS. Well, it couldn't all be good news, could it?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/windows/latest-microsoft-patch-tuesday-updates-stamp-out-a-record-622-security-vulnerabilities-as-the-companys-ai-enhanced-bug-hunt-looks-to-bear-fruit/</link>
                                                                            <description>
                            <![CDATA[ Squish, squish, squish. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vuVbdvHz3dA2uBNmdfxrhG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yEMK6QNhtXcquwrZJYVkoB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Jul 2026 10:30:52 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/yEMK6QNhtXcquwrZJYVkoB-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A photo of a gaming monitor displaying queued Windows updates]]></media:description>                                                            <media:text><![CDATA[A photo of a gaming monitor displaying queued Windows updates]]></media:text>
                                <media:title type="plain"><![CDATA[A photo of a gaming monitor displaying queued Windows updates]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yEMK6QNhtXcquwrZJYVkoB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As much as AI has its drawbacks, it'd be wrong to say it doesn't have its uses. Case in point, Microsoft's previous commitment to leverage <a href="https://www.pcgamer.com/software/ai/more-windows-security-updates-to-come-as-microsoft-leverages-ai-vulnerability-detection-but-only-the-highest-confidence-findings-reach-the-engineering-team/" target="_blank">AI vulnerability detection in Windows security updates</a> looks to be bearing fruit, as the latest <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Jul" target="_blank">Patch Tuesday release</a> fixes an astonishing 622 CVEs across its products.</p><p>Which is a new record, according to <a href="https://www.theregister.com/security/2026/07/14/patchpocalypse-now-microsoft-tops-last-months-record-with-622-patch-tuesday-cves/5271434" target="_blank">The Register</a>, more than tripling the previous 206 CVE figure. Over 500 of those security fixes are Windows-related, including a fix for a <a href="https://www.crowdstrike.com/en-us/blog/patch-tuesday-analysis-july-2026/#:~:text=Yes-,Disclosed%20Zero%2DDay%20Vulnerability%20in%20Windows%20BitLocker,-CVE%2D2026%2D50661" target="_blank">zero-day vulnerability</a> in Windows BitLocker, possibly related to exploits <a href="https://www.pcgamer.com/hardware/security-researcher-describes-freshly-uncovered-windows-11-vulnerability-as-one-of-the-most-insane-discoveries-i-ever-found/" target="_blank">uncovered by security researcher Nightmare-Eclipse</a> earlier this year.</p><p>The new cumulative update for Windows 11 is entitled <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/07/july-14-2026-kb5101650-os-builds-26200-8875-and-26100-8875" target="_blank">KB5101650</a>, and it's not just CVE issues that receive a tune-up. The update also patches a nasty little bug that <a href="https://www.pcgamer.com/software/windows/a-nasty-windows-11-bug-is-taking-upwards-of-500-gb-worth-of-storage-and-is-surprisingly-difficult-to-spot-but-theres-a-fix/" target="_blank">could potentially take up 500 GB of your storage space</a> unnecessarily, related to a file within the Capability Access Manager.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>The feature is responsible for Windows 11 app permissions, but a file entitled "CapabilityAccessManager.db-wal" could potentially balloon in size, taking up precious storage space amid the current <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">SSD and memory crisis</a>—which is unfortunate timing. Anyway, the bug is reportedly squashed, so we can all sleep easy in our beds tonight.</p><p>KB5101650 also allows users to defer Windows updates to a specific day with a 35-day period, which is an Insider feature that now looks to be rolling out to all Windows 11 PCs. Windows Latest has experimented with delaying further than the 35-day limit, and found that you can<a href="https://www.windowslatest.com/2026/07/14/windows-11-kb5101650-out-with-features-like-screen-tint-bluetooth-upgrade-point-in-time-direct-download-update/#:~:text=you%20can%20unpause%20them%20and%20re%2Dpause%20updates%20as%20many%20times%20as%20you%20want" target="_blank"> un-pause and then re-pause an update</a> for as long as you want. Which might come in handy, if anything particularly system-breaking comes up.</p><p>Speaking of which, Microsoft <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/07/july-14-2026-kb5101650-os-builds-26200-8875-and-26100-8875#:~:text=with%20Intel%20processors-,Important,-This%20update%20might" target="_blank">warns</a> that "This update might not be available for a limited number of Dell devices with Intel processors," which is apparently down to an incompatibility issue that can "potentially cause unexpected shutdowns, poor performance, increased heat, and battery drain."</p><p>"We are working together with Dell to prevent the affected models from experiencing the issue and plan to release a resolution for affected devices in the coming days," says MS. Well, it couldn't all be good news, could it?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ More Windows security updates to come as Microsoft leverages AI vulnerability detection, but 'only the highest-confidence findings reach the engineering team' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm pretty staunchly opposed to the use of generative AI—for me, it's the one-two punch of dubiously sourced datasets and the argument that these models can replace the human creatives they so often rip off. That said, even I'm a little bit intrigued by AI's application in cybersecurity.</p><p>Case in point, <a href="https://blogs.windows.com/windowsexperience/2026/07/09/evolving-windows-vulnerability-management-to-meet-the-speed-of-ai-powered-discovery/" target="_blank">Microsoft recently shared</a> that it is deploying AI to "identify [issues] faster, prioritize risk, and scale vulnerability discovery across the Windows codebase" as well as "reduce the time between discovery and customer protection." Specifically, Microsoft Security leverages a <a href="https://www.microsoft.com/en-us/security/blog/2026/05/12/defense-at-ai-speed-microsofts-new-multi-model-agentic-security-system-tops-leading-industry-benchmark/?msockid=04f1bfc0b3526a7132b0a8b6b2926b6b" target="_blank">multi-model agentic scanning harness</a>—or MDASH, for short.</p><p>MDASH uses multiple different AI models, including "leading third-party AI vulnerability discovery models," on dedicated Cloud infrastructure to scan for vulnerabilities within Windows. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>The executive vice president of Windows + Devices, Pavan Davuluri, explains, "A scanner pipeline scans critical binaries and validates candidates using multi-model debate across multiple model families. Confirmed candidates then flow to a separate, Windows-specific prove pipeline that helps eliminate remaining false positives, so only the highest-confidence findings reach the engineering team."</p><p>Multiple times, the emphasis is placed on the use of AI tools "to reduce the time from discovery to protection," whereas 'human expertise' is still what handles key security decisions and fixes.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Re9eSiM6o8LrTf8ANCQQ47" name="Windows Event.jpg" alt="Microsoft Windows Event" src="https://cdn.mos.cms.futurecdn.net/Re9eSiM6o8LrTf8ANCQQ47-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Davuluri goes on to add, "As AI helps defenders discover more issues, customers will see a higher volume of security updates included in each security release. This is evidence that defenders are getting better at identifying and addressing issues. Our focus is to effectively utilize these AI tools to support faster protection, stronger engineering systems and more actionable guidance for customers."</p><p>Microsoft is far from the only company leveraging AI, with <a href="https://www.pcgamer.com/software/browsers/defenders-finally-have-a-chance-to-win-decisively-firefox-cto-raves-about-claude-mythos-bug-hunting-capabilities-after-it-finds-271-vulnerabilities/" target="_blank">Firefox's CTO raving about Claude Mythos' bug-hunting capabilities</a> after it found 271 vulnerabilities in the browser earlier this year. Last year, we also <a href="https://www.pcgamer.com/software/ai/an-ai-holds-the-top-slot-in-a-leaderboard-that-ranks-people-who-hunt-for-system-vulnerabilities-used-by-hackers/" target="_blank">saw an AI hold the top spot in a leaderboard that ranks people who hunt for system vulnerabilities</a>.</p><p>Obviously, I'm still not thrilled by the fact that these cybersecurity applications are necessitated by <a href="https://www.pcgamer.com/software/ai/google-has-published-a-list-of-ways-ai-is-currently-being-used-by-threat-actors-to-more-efficiently-hack-you/" target="_blank">threat actors increasingly using AI in their attacks</a>. For example, <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">one AI-assisted hacking group hit targets with a complicated 'social engineering' scam</a> involving deepfaked CEOs, spoofed Zoom calls, and a malicious troubleshooting program.</p><p>That said, both LLMs and AI agents can also be manipulated themselves, with security researchers finding that both <a href="https://www.pcgamer.com/software/ai/security-researchers-have-leveraged-bad-maths-to-get-around-ai-safety-guardrails-naming-the-attack-method-after-one-of-2007s-best-pc-games/" target="_blank">bad maths</a> and <a href="https://www.pcgamer.com/software/ai/poets-are-now-cybersecurity-threats-researchers-used-adversarial-poetry-to-jailbreak-ai-and-it-worked-62-percent-of-the-time/" target="_blank">even poetry</a> can be leveraged to get around AI models' safety guard rails. With all sides leveraging machine learning to some degree, it's hard not to feel like it's a bit of a race to the bottom—or wonder which side will win out.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/more-windows-security-updates-to-come-as-microsoft-leverages-ai-vulnerability-detection-but-only-the-highest-confidence-findings-reach-the-engineering-team/</link>
                                                                            <description>
                            <![CDATA[ Humans still make the key decisions and handle fixes, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TY8HVfPQmvkdbRUq3M7cCF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kc77wf7a29YuNrdx6Ugct9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 13 Jul 2026 16:24:41 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kc77wf7a29YuNrdx6Ugct9-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft/Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft campus ]]></media:description>                                                            <media:text><![CDATA[Microsoft campus ]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft campus ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kc77wf7a29YuNrdx6Ugct9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm pretty staunchly opposed to the use of generative AI—for me, it's the one-two punch of dubiously sourced datasets and the argument that these models can replace the human creatives they so often rip off. That said, even I'm a little bit intrigued by AI's application in cybersecurity.</p><p>Case in point, <a href="https://blogs.windows.com/windowsexperience/2026/07/09/evolving-windows-vulnerability-management-to-meet-the-speed-of-ai-powered-discovery/" target="_blank">Microsoft recently shared</a> that it is deploying AI to "identify [issues] faster, prioritize risk, and scale vulnerability discovery across the Windows codebase" as well as "reduce the time between discovery and customer protection." Specifically, Microsoft Security leverages a <a href="https://www.microsoft.com/en-us/security/blog/2026/05/12/defense-at-ai-speed-microsofts-new-multi-model-agentic-security-system-tops-leading-industry-benchmark/?msockid=04f1bfc0b3526a7132b0a8b6b2926b6b" target="_blank">multi-model agentic scanning harness</a>—or MDASH, for short.</p><p>MDASH uses multiple different AI models, including "leading third-party AI vulnerability discovery models," on dedicated Cloud infrastructure to scan for vulnerabilities within Windows. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>The executive vice president of Windows + Devices, Pavan Davuluri, explains, "A scanner pipeline scans critical binaries and validates candidates using multi-model debate across multiple model families. Confirmed candidates then flow to a separate, Windows-specific prove pipeline that helps eliminate remaining false positives, so only the highest-confidence findings reach the engineering team."</p><p>Multiple times, the emphasis is placed on the use of AI tools "to reduce the time from discovery to protection," whereas 'human expertise' is still what handles key security decisions and fixes.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Re9eSiM6o8LrTf8ANCQQ47" name="Windows Event.jpg" alt="Microsoft Windows Event" src="https://cdn.mos.cms.futurecdn.net/Re9eSiM6o8LrTf8ANCQQ47-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Davuluri goes on to add, "As AI helps defenders discover more issues, customers will see a higher volume of security updates included in each security release. This is evidence that defenders are getting better at identifying and addressing issues. Our focus is to effectively utilize these AI tools to support faster protection, stronger engineering systems and more actionable guidance for customers."</p><p>Microsoft is far from the only company leveraging AI, with <a href="https://www.pcgamer.com/software/browsers/defenders-finally-have-a-chance-to-win-decisively-firefox-cto-raves-about-claude-mythos-bug-hunting-capabilities-after-it-finds-271-vulnerabilities/" target="_blank">Firefox's CTO raving about Claude Mythos' bug-hunting capabilities</a> after it found 271 vulnerabilities in the browser earlier this year. Last year, we also <a href="https://www.pcgamer.com/software/ai/an-ai-holds-the-top-slot-in-a-leaderboard-that-ranks-people-who-hunt-for-system-vulnerabilities-used-by-hackers/" target="_blank">saw an AI hold the top spot in a leaderboard that ranks people who hunt for system vulnerabilities</a>.</p><p>Obviously, I'm still not thrilled by the fact that these cybersecurity applications are necessitated by <a href="https://www.pcgamer.com/software/ai/google-has-published-a-list-of-ways-ai-is-currently-being-used-by-threat-actors-to-more-efficiently-hack-you/" target="_blank">threat actors increasingly using AI in their attacks</a>. For example, <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">one AI-assisted hacking group hit targets with a complicated 'social engineering' scam</a> involving deepfaked CEOs, spoofed Zoom calls, and a malicious troubleshooting program.</p><p>That said, both LLMs and AI agents can also be manipulated themselves, with security researchers finding that both <a href="https://www.pcgamer.com/software/ai/security-researchers-have-leveraged-bad-maths-to-get-around-ai-safety-guardrails-naming-the-attack-method-after-one-of-2007s-best-pc-games/" target="_blank">bad maths</a> and <a href="https://www.pcgamer.com/software/ai/poets-are-now-cybersecurity-threats-researchers-used-adversarial-poetry-to-jailbreak-ai-and-it-worked-62-percent-of-the-time/" target="_blank">even poetry</a> can be leveraged to get around AI models' safety guard rails. With all sides leveraging machine learning to some degree, it's hard not to feel like it's a bit of a race to the bottom—or wonder which side will win out.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ An alleged member of a hacking group was caught, thanks to one hated Windows feature ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Windows GDID (Global Device Identifier), its own telemetry service, has drawn ire from users for some time. Turns out the data it tracks can be used by law enforcement to incriminate alleged hackers, which is both a decent outcome and sort of worrisome if you think about it too much. </p><p>As noted by <a href="https://www.techspot.com/news/113005-one-windows-most-hated-features-helped-catch-19.html" target="_blank">TechSpot</a>, the US Department of Justice Office of Public Affairs recently <a href="https://www.justice.gov/opa/pr/alleged-member-criminal-cyber-hacking-group-scattered-spider-arrested-finland-and-extradited" target="_blank">announced</a> the arrest of 19-year-old Peter Stokes. Linked to the hacking group Scattered Spider, who are reportedly responsible for 100 network intrusions and over $100 million in ransom payments, the thing that reportedly incriminated him was his Windows GDID. </p><p>Back in May last year, Scattered Spider reportedly called the IT helpdesk of a jewellery seller posing as employees and managed to talk them into handing over password reset details. This then gave the group access to three accounts, for which Scattered Spider asked for $8 million in ransom money. Though the jeweller didn't pay, it did reportedly cost the brand $2 million. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>Despite using a VPN and a tunnelling service to mask his traffic, Stokes was reportedly caught due to his GDID, which logged information on the device. A court order seemingly forced Microsoft to hand over all the evidence linking Stokes to that machine, and this was used by the US government to justify its arrest. </p><p>This wasn't helped by the fact that Stokes seemingly showed off his wealth by posting photos of fancy hotels on Snapchat. The <a href="https://www.justice.gov/usao-ndil/media/1450651/dl?inline" target="_blank">39-page judgment</a> details not only the GDID link but the Snapchat bragging. </p><p>Stokes was seemingly stopped at the airport by law enforcement, and he was reportedly carrying two hard drives with evidence in them, linking him to the crime. </p><p>Though stopping potential hackers is in the interest of those who don't want to be hacked, the way law enforcement caught Stokes is only more likely to stoke fears around GDID. Proton, a privacy-focused mail, drive, and VPN service provider, <a href="https://protonvpn.com/blog/windows-is-spyware?ref=internationalcyberdigest.com" target="_blank">discusses</a> "Windows as spyware", and though in this case, "the system worked as intended", it argues "GDID raises important questions about user consent and who actually owns the hardware you pay for."</p><p>Proton makes note of the fact that users don't explicitly consent to GDID and its data tracking trappings. "In all of Microsoft’s extensive online documentation, GlobalDeviceId merits a single mention <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/reference/tables/ucupdatealert#:~:text=In%20the%20case%20of%20Client,Microsoft%20internal%20Global%20Device%20Identifier." target="_blank">buried</a> in a highly obscure technical document that no one is ever likely to read."</p><p>As you might be able to guess, Proton's advice is that if you want to do away with GDID, <a href="http://youtube.com/watch?v=cg6UKrz8zws&time_continue=0&source_ve_path=MjM4NTE&embeds_referring_euri=https%3A%2F%2Fwww.reddit.com%2F&embeds_referring_origin=https%3A%2F%2Fwww.reddit.com" target="_blank">you should swap to Linux</a>. And with the <a href="https://www.pcgamer.com/gaming-industry/microsofts-year-of-shame/" target="_blank">last few years Microsoft has had</a>, it's easy to see why one might want to move away from its software. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/an-alleged-member-of-a-hacking-group-was-caught-thanks-to-one-hated-windows-feature/</link>
                                                                            <description>
                            <![CDATA[ Good news and bad news then? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">daEXFs9TETArRLDs9SxPS3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Re9eSiM6o8LrTf8ANCQQ47-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 09 Jul 2026 10:48:36 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Re9eSiM6o8LrTf8ANCQQ47-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Windows Event]]></media:description>                                                            <media:text><![CDATA[Microsoft Windows Event]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Windows Event]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Re9eSiM6o8LrTf8ANCQQ47-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Windows GDID (Global Device Identifier), its own telemetry service, has drawn ire from users for some time. Turns out the data it tracks can be used by law enforcement to incriminate alleged hackers, which is both a decent outcome and sort of worrisome if you think about it too much. </p><p>As noted by <a href="https://www.techspot.com/news/113005-one-windows-most-hated-features-helped-catch-19.html" target="_blank">TechSpot</a>, the US Department of Justice Office of Public Affairs recently <a href="https://www.justice.gov/opa/pr/alleged-member-criminal-cyber-hacking-group-scattered-spider-arrested-finland-and-extradited" target="_blank">announced</a> the arrest of 19-year-old Peter Stokes. Linked to the hacking group Scattered Spider, who are reportedly responsible for 100 network intrusions and over $100 million in ransom payments, the thing that reportedly incriminated him was his Windows GDID. </p><p>Back in May last year, Scattered Spider reportedly called the IT helpdesk of a jewellery seller posing as employees and managed to talk them into handing over password reset details. This then gave the group access to three accounts, for which Scattered Spider asked for $8 million in ransom money. Though the jeweller didn't pay, it did reportedly cost the brand $2 million. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>Despite using a VPN and a tunnelling service to mask his traffic, Stokes was reportedly caught due to his GDID, which logged information on the device. A court order seemingly forced Microsoft to hand over all the evidence linking Stokes to that machine, and this was used by the US government to justify its arrest. </p><p>This wasn't helped by the fact that Stokes seemingly showed off his wealth by posting photos of fancy hotels on Snapchat. The <a href="https://www.justice.gov/usao-ndil/media/1450651/dl?inline" target="_blank">39-page judgment</a> details not only the GDID link but the Snapchat bragging. </p><p>Stokes was seemingly stopped at the airport by law enforcement, and he was reportedly carrying two hard drives with evidence in them, linking him to the crime. </p><p>Though stopping potential hackers is in the interest of those who don't want to be hacked, the way law enforcement caught Stokes is only more likely to stoke fears around GDID. Proton, a privacy-focused mail, drive, and VPN service provider, <a href="https://protonvpn.com/blog/windows-is-spyware?ref=internationalcyberdigest.com" target="_blank">discusses</a> "Windows as spyware", and though in this case, "the system worked as intended", it argues "GDID raises important questions about user consent and who actually owns the hardware you pay for."</p><p>Proton makes note of the fact that users don't explicitly consent to GDID and its data tracking trappings. "In all of Microsoft’s extensive online documentation, GlobalDeviceId merits a single mention <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/reference/tables/ucupdatealert#:~:text=In%20the%20case%20of%20Client,Microsoft%20internal%20Global%20Device%20Identifier." target="_blank">buried</a> in a highly obscure technical document that no one is ever likely to read."</p><p>As you might be able to guess, Proton's advice is that if you want to do away with GDID, <a href="http://youtube.com/watch?v=cg6UKrz8zws&time_continue=0&source_ve_path=MjM4NTE&embeds_referring_euri=https%3A%2F%2Fwww.reddit.com%2F&embeds_referring_origin=https%3A%2F%2Fwww.reddit.com" target="_blank">you should swap to Linux</a>. And with the <a href="https://www.pcgamer.com/gaming-industry/microsofts-year-of-shame/" target="_blank">last few years Microsoft has had</a>, it's easy to see why one might want to move away from its software. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft says 'cryptographically relevant quantum computers could arrive sooner than previously expected' as it bumps its QSP timeline to 2029 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For years now, security researchers have been preparing to fight against cryptanalytic attacks from future quantum computers. But Microsoft has had to push up its timeline, as those attacks seem much closer than otherwise anticipated. </p><p>As reported by <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-accelerates-quantum-safe-roadmap-as-risks-grow/" target="_blank">Bleepingcomputer</a>, Microsoft recently published a <a href="https://www.microsoft.com/en-us/security/blog/2026/06/30/microsoft-advances-quantum-safe-security-as-the-risk-timeline-shifts/" target="_blank">blog post</a> informing users of its new deadline. Microsoft plans to accelerate its Quantum Safe Program (QSP) to be quantum-apocalypse-ready by 2029. </p><p>Microsoft says that post-quantum cryptography "was framed as a future problem: important, inevitable, but distant. That perspective is evolving as technology advances and organizations prepare for the scale and complexity of the transition ahead."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>Q-Day (or Y2Q) is the name given to the moment when quantum computers become so powerful that they can crack current encryption techniques with ease. That is what the original timeline was based around. Now, though, Microsoft believes "cryptographically relevant quantum computers could arrive sooner than previously expected—and the work required to prepare is significant so organizations need to start now."</p><p>There's also the 'harvest now, decrypt later' method to consider, in which threat actors take in whatever data they can find now in order to analyse and crack the info when quantum-cracking technology comes online. This means that companies are looking to make their data secure from quantum decryption in advance. It's not good enough to be secure now. Companies have to be secure in the future.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kc77wf7a29YuNrdx6Ugct9" name="Microsoft Campus.jpg" alt="Microsoft campus" src="https://cdn.mos.cms.futurecdn.net/kc77wf7a29YuNrdx6Ugct9-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft/Getty Images)</span></figcaption></figure><p>Most computers right now encrypt data with algorithms based on mathematical problems that can be easily solved with quantum computers, so post-quantum cryptography is intended to go one layer deeper. </p><p>However, even if the work is successful, it is still unproven. We still don't know if a future quantum computer could potentially crack newly made algorithms, partly because… well, we don't have access to future technology. Microsoft argues its QSP goes beyond future cryptography and is only part of a "broader effort to strengthen long-term resilience across identity, infrastructure, data, and supply-chain security."</p><p>From here, Microsoft says that customers should make themselves aware of the plan to bring forward this quantum safe timeline and learn more about how to implement it when they do. It seems like the next few years are very important for researchers, and security developers will have to do their best to outpace attackers.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/microsoft-says-cryptographically-relevant-quantum-computers-could-arrive-sooner-than-previously-expected-as-it-bumps-its-qsp-timeline-to-2029/</link>
                                                                            <description>
                            <![CDATA[ As attacks get more advanced, security must follow. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TqVxohRqcEL7cNd9JfMnC3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 15:48:33 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg">
                                                            <media:credit><![CDATA[Bethesda]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Fallout hacking minigame]]></media:description>                                                            <media:text><![CDATA[Fallout hacking minigame]]></media:text>
                                <media:title type="plain"><![CDATA[Fallout hacking minigame]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For years now, security researchers have been preparing to fight against cryptanalytic attacks from future quantum computers. But Microsoft has had to push up its timeline, as those attacks seem much closer than otherwise anticipated. </p><p>As reported by <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-accelerates-quantum-safe-roadmap-as-risks-grow/" target="_blank">Bleepingcomputer</a>, Microsoft recently published a <a href="https://www.microsoft.com/en-us/security/blog/2026/06/30/microsoft-advances-quantum-safe-security-as-the-risk-timeline-shifts/" target="_blank">blog post</a> informing users of its new deadline. Microsoft plans to accelerate its Quantum Safe Program (QSP) to be quantum-apocalypse-ready by 2029. </p><p>Microsoft says that post-quantum cryptography "was framed as a future problem: important, inevitable, but distant. That perspective is evolving as technology advances and organizations prepare for the scale and complexity of the transition ahead."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>Q-Day (or Y2Q) is the name given to the moment when quantum computers become so powerful that they can crack current encryption techniques with ease. That is what the original timeline was based around. Now, though, Microsoft believes "cryptographically relevant quantum computers could arrive sooner than previously expected—and the work required to prepare is significant so organizations need to start now."</p><p>There's also the 'harvest now, decrypt later' method to consider, in which threat actors take in whatever data they can find now in order to analyse and crack the info when quantum-cracking technology comes online. This means that companies are looking to make their data secure from quantum decryption in advance. It's not good enough to be secure now. Companies have to be secure in the future.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kc77wf7a29YuNrdx6Ugct9" name="Microsoft Campus.jpg" alt="Microsoft campus" src="https://cdn.mos.cms.futurecdn.net/kc77wf7a29YuNrdx6Ugct9-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft/Getty Images)</span></figcaption></figure><p>Most computers right now encrypt data with algorithms based on mathematical problems that can be easily solved with quantum computers, so post-quantum cryptography is intended to go one layer deeper. </p><p>However, even if the work is successful, it is still unproven. We still don't know if a future quantum computer could potentially crack newly made algorithms, partly because… well, we don't have access to future technology. Microsoft argues its QSP goes beyond future cryptography and is only part of a "broader effort to strengthen long-term resilience across identity, infrastructure, data, and supply-chain security."</p><p>From here, Microsoft says that customers should make themselves aware of the plan to bring forward this quantum safe timeline and learn more about how to implement it when they do. It seems like the next few years are very important for researchers, and security developers will have to do their best to outpace attackers.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A malware dev has committed a magnificent self-own after an AI-coded malicious package leaked its own GitHub private token ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We're continually warned about the prospect of <a href="https://www.pcgamer.com/software/ai/great-now-even-malware-is-using-llms-to-rewrite-its-code-says-google-as-it-documents-new-phase-of-ai-abuse/" target="_blank">AI-generated malware</a> these days, but there is one important factor working in our favour: sometimes, it's kinda rubbish. </p><p><a href="https://www.ox.security/blog/malware-slop-new-malicious-npm-package-leaks-its-own-github-private-token/" target="_blank">Ox Security</a> researchers have discovered an info-stealing malicious npm package called mouse5212-super-formatter, designed to target Claude users. The nasty little blighter reached 676 downloads before being unmasked, after the apparently AI-coded malware leaked its own GitHub private token (via <a href="https://www.theregister.com/cyber-crime/2026/05/27/supply-chain-brain-drain-npm-attacker-foolishly-leaks-own-github-private-token/5247424" target="_blank">The Registry</a>).</p><p>The researchers say the infostealer posed as an internal "archive deployment sync utility", but in reality, it "authenticates to GitHub (using an environment token or a hard-coded fallback), checks whether a target repository exists, creates it if needed, then recursively walks a local directory and uploads every file through the GitHub Contents API."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The malware then stores stolen files under a random per-run folder name, while also writing a fake network connections log to make "execution look like diagnostics rather than theft." </p><p>The GitHub private token allowed the researchers to trace the stolen files and analyse the malware, raising suspicions of AI coding involvement. The threat actor's GitHub account linked to the package has since been deleted.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6TGQnBqmmkzUUKj64xg7ma" name="GettyImages-1358210974.jpg" alt="Back angle Hacker wearing hoodies cloth motivation emotion and typing coding to hacking cryptocurrency from internet at home" src="https://cdn.mos.cms.futurecdn.net/6TGQnBqmmkzUUKj64xg7ma-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: skaman306 via Getty Images)</span></figcaption></figure><p>My favourite part? OX Security has put together <a href="https://www.ox.security/blog/malware-slop-new-malicious-npm-package-leaks-its-own-github-private-token/#:~:text=them%20as%20compromised.-,Technical%20Analysis,-By%20analyzing%20the" target="_blank">a handy chart</a> to show how it all works, labelling its type as "Infostealer/Malware-Slop." Damn.</p><p>"While threat actors have been leveraging their techniques in recent years, this is a good example showing how some... are using AI to generate malware without understanding basic opsec concepts and best practices," says the company.</p><p>"Now that the bar to create malicious code [has been] reduced significantly, we’re going to see more threat actors getting into the game–uploading more sloppy malwares, mostly mimicking APT groups to get a slice of the cake until npm starts automatically blocking malware completely."</p><p>Well, this particularly insecure, err, security risk appears to have been neutralised, and we can all rest easy in our beds tonight. Hey, just be glad we're still in the early days of the AI self-owning age. If things keep developing at the current rate, these stories are going to become a lot less fun as the years go on.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/a-malware-dev-has-committed-a-magnificent-self-own-after-an-ai-coded-malicious-package-leaked-its-own-github-private-token/</link>
                                                                            <description>
                            <![CDATA[ Whoops. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kuderUisPS69GMfoc5mTjW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dkeXN7DukoyNgwQ6AeBkg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 28 May 2026 16:30:30 +0000</pubDate>                                                                                                                                <updated>Thu, 28 May 2026 16:30:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dkeXN7DukoyNgwQ6AeBkg-1920-80.jpg">
                                                            <media:credit><![CDATA[Sony Santa Monica ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A still from the God of War Ragnarok trailer showing someone looking up at the sky in surprise]]></media:description>                                                            <media:text><![CDATA[A still from the God of War Ragnarok trailer showing someone looking up at the sky in surprise]]></media:text>
                                <media:title type="plain"><![CDATA[A still from the God of War Ragnarok trailer showing someone looking up at the sky in surprise]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dkeXN7DukoyNgwQ6AeBkg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We're continually warned about the prospect of <a href="https://www.pcgamer.com/software/ai/great-now-even-malware-is-using-llms-to-rewrite-its-code-says-google-as-it-documents-new-phase-of-ai-abuse/" target="_blank">AI-generated malware</a> these days, but there is one important factor working in our favour: sometimes, it's kinda rubbish. </p><p><a href="https://www.ox.security/blog/malware-slop-new-malicious-npm-package-leaks-its-own-github-private-token/" target="_blank">Ox Security</a> researchers have discovered an info-stealing malicious npm package called mouse5212-super-formatter, designed to target Claude users. The nasty little blighter reached 676 downloads before being unmasked, after the apparently AI-coded malware leaked its own GitHub private token (via <a href="https://www.theregister.com/cyber-crime/2026/05/27/supply-chain-brain-drain-npm-attacker-foolishly-leaks-own-github-private-token/5247424" target="_blank">The Registry</a>).</p><p>The researchers say the infostealer posed as an internal "archive deployment sync utility", but in reality, it "authenticates to GitHub (using an environment token or a hard-coded fallback), checks whether a target repository exists, creates it if needed, then recursively walks a local directory and uploads every file through the GitHub Contents API."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The malware then stores stolen files under a random per-run folder name, while also writing a fake network connections log to make "execution look like diagnostics rather than theft." </p><p>The GitHub private token allowed the researchers to trace the stolen files and analyse the malware, raising suspicions of AI coding involvement. The threat actor's GitHub account linked to the package has since been deleted.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6TGQnBqmmkzUUKj64xg7ma" name="GettyImages-1358210974.jpg" alt="Back angle Hacker wearing hoodies cloth motivation emotion and typing coding to hacking cryptocurrency from internet at home" src="https://cdn.mos.cms.futurecdn.net/6TGQnBqmmkzUUKj64xg7ma-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: skaman306 via Getty Images)</span></figcaption></figure><p>My favourite part? OX Security has put together <a href="https://www.ox.security/blog/malware-slop-new-malicious-npm-package-leaks-its-own-github-private-token/#:~:text=them%20as%20compromised.-,Technical%20Analysis,-By%20analyzing%20the" target="_blank">a handy chart</a> to show how it all works, labelling its type as "Infostealer/Malware-Slop." Damn.</p><p>"While threat actors have been leveraging their techniques in recent years, this is a good example showing how some... are using AI to generate malware without understanding basic opsec concepts and best practices," says the company.</p><p>"Now that the bar to create malicious code [has been] reduced significantly, we’re going to see more threat actors getting into the game–uploading more sloppy malwares, mostly mimicking APT groups to get a slice of the cake until npm starts automatically blocking malware completely."</p><p>Well, this particularly insecure, err, security risk appears to have been neutralised, and we can all rest easy in our beds tonight. Hey, just be glad we're still in the early days of the AI self-owning age. If things keep developing at the current rate, these stories are going to become a lot less fun as the years go on.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Security researcher describes freshly uncovered Windows 11 vulnerability as 'one of the most insane discoveries I ever found.' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A security researcher going by the GitHub handle Nightmare-Eclipse disclosed a potentially nasty BitLocker bypass in Windows 11 earlier this month. Dubbed <a href="https://github.com/Nightmare-Eclipse/YellowKey" target="_blank">YellowKey</a>, the exploit allows an attacker to read the contents of a BitLocker-encrypted drive by abusing standard behavior of the Windows Recovery Environment. </p><p>Nightmare-Eclipse adds that, as far as their testing is concerned, the vulnerability only appears to be present in Windows 11. The security researcher describes it as "one of the most insane discoveries I ever found."</p><p>This week <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45585" target="_blank">Microsoft acknowledged the vulnerability</a>, and criticised the public sharing of the YellowKey proof of concept, saying this violates "coordinated vulnerability best practices." The company has since designated the vulnerability <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-45585" target="_blank">CVE-2026-45585</a>, and provided some mitigation guidance, but the BitLocker bypass remains unpatched at time of writing. That said, the fact this attack requires physical access to a targeted device offers some amount of mitigation in itself.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>Cybersecurity firm <a href="https://eclypsium.com/blog/yellowkey-bitlocker-bypass-windows-recovery-environment/" target="_blank">Eclypsium breaks the vulnerability down in a recent blog post</a>, explaining YellowKey works by leveraging the Windows Recovery Environment to "grant a fully unlocked command shell against drives that the operating system continues to treat as encrypted." In theory, all that would be needed to launch the attack would be "a stolen Windows 11 laptop and a USB stick."</p><p>The company also elaborates that the vulnerability doesn't appear to be present in Windows 10 because "the responsible WinRE component behaves differently in that codebase." Beyond that, it adds, "The vulnerable filesystems on the attacker-supplied media include NTFS, FAT32, and exFAT, which removes any meaningful constraint on how the payload is staged."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hYQgGNSjwjKrvyVuLEkzQM" name="GettyImages-1248551713.jpg" alt="Hacker hacking away on a keyboard." src="https://cdn.mos.cms.futurecdn.net/hYQgGNSjwjKrvyVuLEkzQM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty images - Rapeepong Puttakumwong)</span></figcaption></figure><p>Nightmare-Eclipse theorises the bypass is more of a backdoor. "The component that is responsible for this bug is not present anywhere (even in the internet) except inside WinRE image." They explain, "And what makes it raise suspicions is the fact that the exact same component is also present with the exact same name in a normal Windows installation but without the functionalities that trigger the BitLocker bypass issue."</p><p>Microsoft has not confirmed this theory, referring to the issue as "a security feature bypass vulnerability". As you might already suspect, it is far from the only vulnerability uncovered in Windows 11 this year. Just last month, another <a href="https://www.pcgamer.com/software/security/cybersecurity-experts-raise-the-alarm-over-windows-recall-again-the-vault-door-is-titanium-the-wall-next-to-it-is-drywall/" target="_blank">security researcher warned how the new and improved Recall could be leveraged by bad actors</a>. As <em>if </em>I needed another reason to be wary of AI integration.</p><p>It's not just AI features proving a security headache though, with the newest and improv-iest version of <a href="https://www.pcgamer.com/software/windows/thanks-to-microsoft-adding-all-those-extra-features-to-notepad-it-now-unfortunately-sports-one-more-an-exploitation-vulnerability-with-a-high-security-rating/" target="_blank">Notepad finding itself with a remote code execution vulnerability</a>. At the very least, remote code execution is not something you have to worry about with the YellowKey BitLocker bypass. It's a slim win, but I'm sure someone at Microsoft will take it.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/security-researcher-describes-freshly-uncovered-windows-11-vulnerability-as-one-of-the-most-insane-discoveries-i-ever-found/</link>
                                                                            <description>
                            <![CDATA[ The king in yellow. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rtRUAiCr8WEsayLdV3Mhg8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tMKjmXc5Gj7Rx9NRLV4HY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 21 May 2026 11:28:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tMKjmXc5Gj7Rx9NRLV4HY-1920-80.jpg">
                                                            <media:credit><![CDATA[Beata Zawrzel/NurPhoto via Getty Images/Surasak Suwanmake via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Windows 11 displayed on a laptop, keyboard and pen resting on the keyboard. Overlaid on top of this image is a photo illustration of a hacker, code pouring out from beneath the brim of their hood.]]></media:description>                                                            <media:text><![CDATA[Windows 11 displayed on a laptop, keyboard and pen resting on the keyboard. Overlaid on top of this image is a photo illustration of a hacker, code pouring out from beneath the brim of their hood.]]></media:text>
                                <media:title type="plain"><![CDATA[Windows 11 displayed on a laptop, keyboard and pen resting on the keyboard. Overlaid on top of this image is a photo illustration of a hacker, code pouring out from beneath the brim of their hood.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tMKjmXc5Gj7Rx9NRLV4HY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A security researcher going by the GitHub handle Nightmare-Eclipse disclosed a potentially nasty BitLocker bypass in Windows 11 earlier this month. Dubbed <a href="https://github.com/Nightmare-Eclipse/YellowKey" target="_blank">YellowKey</a>, the exploit allows an attacker to read the contents of a BitLocker-encrypted drive by abusing standard behavior of the Windows Recovery Environment. </p><p>Nightmare-Eclipse adds that, as far as their testing is concerned, the vulnerability only appears to be present in Windows 11. The security researcher describes it as "one of the most insane discoveries I ever found."</p><p>This week <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45585" target="_blank">Microsoft acknowledged the vulnerability</a>, and criticised the public sharing of the YellowKey proof of concept, saying this violates "coordinated vulnerability best practices." The company has since designated the vulnerability <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-45585" target="_blank">CVE-2026-45585</a>, and provided some mitigation guidance, but the BitLocker bypass remains unpatched at time of writing. That said, the fact this attack requires physical access to a targeted device offers some amount of mitigation in itself.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>Cybersecurity firm <a href="https://eclypsium.com/blog/yellowkey-bitlocker-bypass-windows-recovery-environment/" target="_blank">Eclypsium breaks the vulnerability down in a recent blog post</a>, explaining YellowKey works by leveraging the Windows Recovery Environment to "grant a fully unlocked command shell against drives that the operating system continues to treat as encrypted." In theory, all that would be needed to launch the attack would be "a stolen Windows 11 laptop and a USB stick."</p><p>The company also elaborates that the vulnerability doesn't appear to be present in Windows 10 because "the responsible WinRE component behaves differently in that codebase." Beyond that, it adds, "The vulnerable filesystems on the attacker-supplied media include NTFS, FAT32, and exFAT, which removes any meaningful constraint on how the payload is staged."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hYQgGNSjwjKrvyVuLEkzQM" name="GettyImages-1248551713.jpg" alt="Hacker hacking away on a keyboard." src="https://cdn.mos.cms.futurecdn.net/hYQgGNSjwjKrvyVuLEkzQM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty images - Rapeepong Puttakumwong)</span></figcaption></figure><p>Nightmare-Eclipse theorises the bypass is more of a backdoor. "The component that is responsible for this bug is not present anywhere (even in the internet) except inside WinRE image." They explain, "And what makes it raise suspicions is the fact that the exact same component is also present with the exact same name in a normal Windows installation but without the functionalities that trigger the BitLocker bypass issue."</p><p>Microsoft has not confirmed this theory, referring to the issue as "a security feature bypass vulnerability". As you might already suspect, it is far from the only vulnerability uncovered in Windows 11 this year. Just last month, another <a href="https://www.pcgamer.com/software/security/cybersecurity-experts-raise-the-alarm-over-windows-recall-again-the-vault-door-is-titanium-the-wall-next-to-it-is-drywall/" target="_blank">security researcher warned how the new and improved Recall could be leveraged by bad actors</a>. As <em>if </em>I needed another reason to be wary of AI integration.</p><p>It's not just AI features proving a security headache though, with the newest and improv-iest version of <a href="https://www.pcgamer.com/software/windows/thanks-to-microsoft-adding-all-those-extra-features-to-notepad-it-now-unfortunately-sports-one-more-an-exploitation-vulnerability-with-a-high-security-rating/" target="_blank">Notepad finding itself with a remote code execution vulnerability</a>. At the very least, remote code execution is not something you have to worry about with the YellowKey BitLocker bypass. It's a slim win, but I'm sure someone at Microsoft will take it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Devs, be careful what you plug in: GitHub security breach was apparently facilitated by a 'poisoned Visual Studio Code extension' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>GitHub, arguably <em>the </em>place for developers to store and share code, has been the target of a cyberattack. The Microsoft-owned platform reported on Tuesday that its internal repositories experienced unauthorised access, although it does not appear to have exposed customer information outside of that.</p><p>"Our current assessment is that the activity involved exfiltration of GitHub-internal repositories only," <a href="https://x.com/github/status/2056949168208552080" target="_blank">GitHub shared most recently on X</a>, "The attacker’s current claims of ~3,800 repositories are directionally consistent with our investigation so far."</p><p>The attack reportedly took place via a compromised employee device "involving a poisoned [Visual Studio] Code extension." GitHub did not name the specific developer extension that was leveraged in the breach, nor the attacker. GitHub continues, "We removed the malicious extension version, isolated the endpoint, and began incident response immediately."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>Backdoors placed in useful extensions is not a novel route of attack. For example, one bad actor snaffling up <a href="https://www.pcgamer.com/hardware/someone-has-apparently-snaffled-up-31-wordpress-plugins-and-wedged-a-backdoor-in-each-one/" target="_blank">31 WordPress plugins and placing a backdoor in all of them</a>. For another, security researchers claimed last year that <a href="https://www.pcgamer.com/software/browsers/security-researcher-claims-35-chrome-extensions-with-4-000-000-installs-include-some-kind-of-spyware-or-infostealer/" target="_blank">35 Chrome extensions with over 4,000,000 installs 'include some kind of spyware or infostealer'</a></p><p>GitHub's highest-impact credentials have now been rotated, and the platform says it is continuing to keep an eye out for any further unauthorised access. The platform will share a full report on the security incident in the near future.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2240px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wbsryXKDFeuXYYZGsVt3yL" name="github crash.jpg" alt="GitHub logo over red code" src="https://cdn.mos.cms.futurecdn.net/wbsryXKDFeuXYYZGsVt3yL-1920-80.jpg" mos="" align="middle" fullscreen="" width="2240" height="1260" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EDUARD MUZHEVSKYI / SCIENCE PHOTO LIBRARY, Github)</span></figcaption></figure><p><a href="https://www.bleepingcomputer.com/news/security/github-confirms-breach-of-3-800-repos-via-malicious-vscode-extension/" target="_blank">According to Bleeping Computer</a>, hacker group TeamPCP have since claimed responsibility for the GitHub attack via the Breached cybercrime forum. The group says it's gained access to both GitHub source code, plus over "4,000 repos of private code." However, the cybercriminals' motivations are not so clear cut; the alleged attackers write, "As always this is not a ransom; we do not care about extorting Github."</p><p>"One buyer and we shred the data on our end," the group continues, "It looks like our retirement is soon, so if no buyer is found we will leak it [for] free. If you are interested, send your offers to the communications below. We are not interested in under 50k—the best offer will get it."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/devs-be-careful-what-you-plug-in-github-security-breach-was-apparently-facilitated-by-a-poisoned-visual-studio-code-extension/</link>
                                                                            <description>
                            <![CDATA[ A full incident report is on the way. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jbfK78P7w2rjoEAULmQzfX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mwTpDXjfLnj26YQL33UfzJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 May 2026 16:38:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mwTpDXjfLnj26YQL33UfzJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images - NurPhoto / Contributor]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Github Logo on a phone in front of the words &quot;Let&#039;s build from here&quot;]]></media:description>                                                            <media:text><![CDATA[The Github Logo on a phone in front of the words &quot;Let&#039;s build from here&quot;]]></media:text>
                                <media:title type="plain"><![CDATA[The Github Logo on a phone in front of the words &quot;Let&#039;s build from here&quot;]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mwTpDXjfLnj26YQL33UfzJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>GitHub, arguably <em>the </em>place for developers to store and share code, has been the target of a cyberattack. The Microsoft-owned platform reported on Tuesday that its internal repositories experienced unauthorised access, although it does not appear to have exposed customer information outside of that.</p><p>"Our current assessment is that the activity involved exfiltration of GitHub-internal repositories only," <a href="https://x.com/github/status/2056949168208552080" target="_blank">GitHub shared most recently on X</a>, "The attacker’s current claims of ~3,800 repositories are directionally consistent with our investigation so far."</p><p>The attack reportedly took place via a compromised employee device "involving a poisoned [Visual Studio] Code extension." GitHub did not name the specific developer extension that was leveraged in the breach, nor the attacker. GitHub continues, "We removed the malicious extension version, isolated the endpoint, and began incident response immediately."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>Backdoors placed in useful extensions is not a novel route of attack. For example, one bad actor snaffling up <a href="https://www.pcgamer.com/hardware/someone-has-apparently-snaffled-up-31-wordpress-plugins-and-wedged-a-backdoor-in-each-one/" target="_blank">31 WordPress plugins and placing a backdoor in all of them</a>. For another, security researchers claimed last year that <a href="https://www.pcgamer.com/software/browsers/security-researcher-claims-35-chrome-extensions-with-4-000-000-installs-include-some-kind-of-spyware-or-infostealer/" target="_blank">35 Chrome extensions with over 4,000,000 installs 'include some kind of spyware or infostealer'</a></p><p>GitHub's highest-impact credentials have now been rotated, and the platform says it is continuing to keep an eye out for any further unauthorised access. The platform will share a full report on the security incident in the near future.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2240px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wbsryXKDFeuXYYZGsVt3yL" name="github crash.jpg" alt="GitHub logo over red code" src="https://cdn.mos.cms.futurecdn.net/wbsryXKDFeuXYYZGsVt3yL-1920-80.jpg" mos="" align="middle" fullscreen="" width="2240" height="1260" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EDUARD MUZHEVSKYI / SCIENCE PHOTO LIBRARY, Github)</span></figcaption></figure><p><a href="https://www.bleepingcomputer.com/news/security/github-confirms-breach-of-3-800-repos-via-malicious-vscode-extension/" target="_blank">According to Bleeping Computer</a>, hacker group TeamPCP have since claimed responsibility for the GitHub attack via the Breached cybercrime forum. The group says it's gained access to both GitHub source code, plus over "4,000 repos of private code." However, the cybercriminals' motivations are not so clear cut; the alleged attackers write, "As always this is not a ransom; we do not care about extorting Github."</p><p>"One buyer and we shred the data on our end," the group continues, "It looks like our retirement is soon, so if no buyer is found we will leak it [for] free. If you are interested, send your offers to the communications below. We are not interested in under 50k—the best offer will get it."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Web infrastructure company Cloudflare says Claude Mythos reasoning 'looks like the work of a senior researcher' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's been difficult as a layman in cybersecurity to figure out how seriously we should take all the hype and fear over Anthropic's Claude Mythos AI. But now I have something a little more concrete to grasp onto, as Cloudflare has been busy <a href="https://blog.cloudflare.com/cyber-frontier-models/" target="_blank">figuring out exactly what Mythos seems good for</a>. </p><p>The AI model recently swept through the cybersecurity industry and caused a stir by showing the magnitude of AI's potential threat to software security—for instance, finding <a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">thousands of vulnerabilities in every OS and major web browser</a>. But as a mere plebian sitting far from the techbro classes, and despite banks and other institutions <a href="https://www.reuters.com/business/finance/anthropics-mythos-sends-us-banks-rushing-plug-cyber-holes-2026-05-12/" target="_blank">rushing to reckon with it</a>, I'd not been sure exactly how much stock to put behind the stink the AI model was causing. Checking over Cloudflare's analysis earlier today, however, has given me a little bit of a better idea. </p><p>The company has been part of Anthropic's <a href="https://www.anthropic.com/glasswing" target="_blank">Project Glasswing</a>. The idea behind this project (and presumably Mythos in general) seems to be to get in ahead of any bad actors in the AI arms race. It essentially has Anthropic as the 'good guy' that gets companies secured against the latest AI threats to cybersecurity, by using AI to identify the same threats a bad actor might.</p><p>Anthropic explains: "Claude Mythos Preview is a general-purpose, unreleased frontier model that reveals a stark fact: AI models have reached a level of coding capability where they can surpass all but the most skilled humans at finding and exploiting software vulnerabilities… Project Glasswing is an urgent attempt to put these capabilities to work for defensive purposes."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>Glasswing gives selected important tech companies access to Mythos Preview to "scan and secure both first-party and open-source systems", with Anthropic giving up to $100 million of credits for them to use. The companies include Amazon Web Services, Apple, Google, Microsoft, Nvidia, and more, including Cloudflare.</p><p>It might seem strange to have your cybersecurity strategy raise vulnerabilities to light that bad actors could, in theory, exploit, but that's nothing new: companies often hire '<a href="https://en.wikipedia.org/wiki/Red_team" target="_blank">red teams</a>' to do such things so they can patch them. This is essentially the same idea, but on a whole new scale, given the use of AI. </p><p>Overall, Cloudflare is impressed with Mythos, saying it's a "real step forward... not just a refinement of what came before... what changed with Mythos Preview is that a model can now take those low-severity bugs (which would traditionally sit invisible in a backlog) and chain them into a single, more severe exploit."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NSshYFCwhM3hJ3MHBb38Eo" name="GettyImages-2259623291" alt="An image showing the Claude AI logo displayed on the screen of a smartphone placed on a reflective surface onto which lines of computer code are projected." src="https://cdn.mos.cms.futurecdn.net/NSshYFCwhM3hJ3MHBb38Eo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: NurPhoto via Getty Images)</span></figcaption></figure><p>Two features that Cloudflare says stood out about Mythos during the company's testing were its "exploit chain construction" (ie, its ability to chain vulnerabilities together intelligently into a single attack) and "proof generation" (ie, actually demonstrating that what it comes up with works).  </p><p>The model isn't perfect, however—would one expect a "preview" to be so? Cloudflare, for instance, found it would sometimes pop up guardrails that didn't make sense, preventing legitimate security research.</p><p>The company also seems to suggest that a lot of people have been thinking about Mythos somewhat incorrectly, focusing on how quickly it can find vulnerabilities for quick patching. And it discovered (the hard way) that it's better to use the AI model in a more directed and split-up way rather than just setting one Mythos agent to a big review with hands off.</p><p>If you just set it to check out a giant codebase, it might struggle to maintain relevant context throughout the entire process in a way that a human researcher wouldn't. "Using the model directly in a coding agent turns out to be fine for manual investigation when a researcher already has a lead and wants a second pair of eyes. However, it's the wrong tool for achieving high coverage."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QMfrCQqzyLtHjPLZuNM47f" name="New Project (38)" alt="A Cloudflare diagram of the 'vulnerability discovery harness' it uses for Claude Mythos." src="https://cdn.mos.cms.futurecdn.net/QMfrCQqzyLtHjPLZuNM47f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure><p>The company ultimately found that using Mythos effectively means using a 'harness' that narrows its scope, relying on a second agent to clear signal from noise, and using multiple agents along the chain as well as in parallel. In other words, it seems like having lots of Mythos 'worker' with specific tasks works better than trying to have one super-worker Mythos taking on the entire codebase.</p><p>Moving forward, rather than using Mythos solely with a focus on patching faster, Cloudflare thinks people's focus should be on architecture:</p><p>"The harder question is what the architecture around the vulnerability should look like. The principle is to make exploitation harder for an attacker even when a bug exists, so that the gap between when a vulnerability is disclosed and when it is patched matters less. </p><p>That means defenses that sit in front of the application and block the bug from being reached. It means designing the application so that a flaw in one part of the code cannot give an attacker access to other parts. It means being able to roll out a fix to every place the code is running at the same moment, rather than waiting on individual teams to deploy it."</p><p>Exactly how Cloudflare plans to use Mythos in this way is something the company is still keeping close to its chest, but it says it will "share more on what that means for customers in the weeks ahead."</p><p>Cloudflare is far from unfamiliar with AI. The company has <a href="https://www.pcgamer.com/software/ai/increasingly-the-distinction-between-bots-and-humans-is-moot-says-one-of-the-biggest-web-infrastructure-companies/" target="_blank">previously said</a> that "increasingly the distinction between bots and humans is moot", at least when it comes to how websites (which often run through Cloudflare servers) treat users. So I suppose it's no surprise the company is diving into a heavily agentic approach to cybersecurity. Though if Mythos really is as much of a leap ahead as the company is suggesting, it might be a case of 'get to it before your adversaries do'—the AI arms race churns on whether we want it or not.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/web-infrastructure-company-cloudflare-says-claude-mythos-reasoning-looks-like-the-work-of-a-senior-researcher/</link>
                                                                            <description>
                            <![CDATA[ Cloudflare has been figuring out how to best use the model. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZmAJmPWb52bSRU2d64eJDY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dwfifLuqm6nwyPvp9ubVbS-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 May 2026 15:36:28 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/dwfifLuqm6nwyPvp9ubVbS-1920-80.png">
                                                            <media:credit><![CDATA[Cheng Xin via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[CHONGQING, CHINA - JULY 29: In this photo illustration, a person holds a smartphone displaying the logo of Cloudflare Inc. (NYSE: NET), an American web infrastructure and website security company, with the company&#039;s cloud logo visible in the background, on July 29, 2025 in Chongqing, China. (Photo illustration by Cheng Xin/Getty Images)]]></media:description>                                                            <media:text><![CDATA[CHONGQING, CHINA - JULY 29: In this photo illustration, a person holds a smartphone displaying the logo of Cloudflare Inc. (NYSE: NET), an American web infrastructure and website security company, with the company&#039;s cloud logo visible in the background, on July 29, 2025 in Chongqing, China. (Photo illustration by Cheng Xin/Getty Images)]]></media:text>
                                <media:title type="plain"><![CDATA[CHONGQING, CHINA - JULY 29: In this photo illustration, a person holds a smartphone displaying the logo of Cloudflare Inc. (NYSE: NET), an American web infrastructure and website security company, with the company&#039;s cloud logo visible in the background, on July 29, 2025 in Chongqing, China. (Photo illustration by Cheng Xin/Getty Images)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dwfifLuqm6nwyPvp9ubVbS-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been difficult as a layman in cybersecurity to figure out how seriously we should take all the hype and fear over Anthropic's Claude Mythos AI. But now I have something a little more concrete to grasp onto, as Cloudflare has been busy <a href="https://blog.cloudflare.com/cyber-frontier-models/" target="_blank">figuring out exactly what Mythos seems good for</a>. </p><p>The AI model recently swept through the cybersecurity industry and caused a stir by showing the magnitude of AI's potential threat to software security—for instance, finding <a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">thousands of vulnerabilities in every OS and major web browser</a>. But as a mere plebian sitting far from the techbro classes, and despite banks and other institutions <a href="https://www.reuters.com/business/finance/anthropics-mythos-sends-us-banks-rushing-plug-cyber-holes-2026-05-12/" target="_blank">rushing to reckon with it</a>, I'd not been sure exactly how much stock to put behind the stink the AI model was causing. Checking over Cloudflare's analysis earlier today, however, has given me a little bit of a better idea. </p><p>The company has been part of Anthropic's <a href="https://www.anthropic.com/glasswing" target="_blank">Project Glasswing</a>. The idea behind this project (and presumably Mythos in general) seems to be to get in ahead of any bad actors in the AI arms race. It essentially has Anthropic as the 'good guy' that gets companies secured against the latest AI threats to cybersecurity, by using AI to identify the same threats a bad actor might.</p><p>Anthropic explains: "Claude Mythos Preview is a general-purpose, unreleased frontier model that reveals a stark fact: AI models have reached a level of coding capability where they can surpass all but the most skilled humans at finding and exploiting software vulnerabilities… Project Glasswing is an urgent attempt to put these capabilities to work for defensive purposes."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>Glasswing gives selected important tech companies access to Mythos Preview to "scan and secure both first-party and open-source systems", with Anthropic giving up to $100 million of credits for them to use. The companies include Amazon Web Services, Apple, Google, Microsoft, Nvidia, and more, including Cloudflare.</p><p>It might seem strange to have your cybersecurity strategy raise vulnerabilities to light that bad actors could, in theory, exploit, but that's nothing new: companies often hire '<a href="https://en.wikipedia.org/wiki/Red_team" target="_blank">red teams</a>' to do such things so they can patch them. This is essentially the same idea, but on a whole new scale, given the use of AI. </p><p>Overall, Cloudflare is impressed with Mythos, saying it's a "real step forward... not just a refinement of what came before... what changed with Mythos Preview is that a model can now take those low-severity bugs (which would traditionally sit invisible in a backlog) and chain them into a single, more severe exploit."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NSshYFCwhM3hJ3MHBb38Eo" name="GettyImages-2259623291" alt="An image showing the Claude AI logo displayed on the screen of a smartphone placed on a reflective surface onto which lines of computer code are projected." src="https://cdn.mos.cms.futurecdn.net/NSshYFCwhM3hJ3MHBb38Eo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: NurPhoto via Getty Images)</span></figcaption></figure><p>Two features that Cloudflare says stood out about Mythos during the company's testing were its "exploit chain construction" (ie, its ability to chain vulnerabilities together intelligently into a single attack) and "proof generation" (ie, actually demonstrating that what it comes up with works).  </p><p>The model isn't perfect, however—would one expect a "preview" to be so? Cloudflare, for instance, found it would sometimes pop up guardrails that didn't make sense, preventing legitimate security research.</p><p>The company also seems to suggest that a lot of people have been thinking about Mythos somewhat incorrectly, focusing on how quickly it can find vulnerabilities for quick patching. And it discovered (the hard way) that it's better to use the AI model in a more directed and split-up way rather than just setting one Mythos agent to a big review with hands off.</p><p>If you just set it to check out a giant codebase, it might struggle to maintain relevant context throughout the entire process in a way that a human researcher wouldn't. "Using the model directly in a coding agent turns out to be fine for manual investigation when a researcher already has a lead and wants a second pair of eyes. However, it's the wrong tool for achieving high coverage."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QMfrCQqzyLtHjPLZuNM47f" name="New Project (38)" alt="A Cloudflare diagram of the 'vulnerability discovery harness' it uses for Claude Mythos." src="https://cdn.mos.cms.futurecdn.net/QMfrCQqzyLtHjPLZuNM47f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Cloudflare)</span></figcaption></figure><p>The company ultimately found that using Mythos effectively means using a 'harness' that narrows its scope, relying on a second agent to clear signal from noise, and using multiple agents along the chain as well as in parallel. In other words, it seems like having lots of Mythos 'worker' with specific tasks works better than trying to have one super-worker Mythos taking on the entire codebase.</p><p>Moving forward, rather than using Mythos solely with a focus on patching faster, Cloudflare thinks people's focus should be on architecture:</p><p>"The harder question is what the architecture around the vulnerability should look like. The principle is to make exploitation harder for an attacker even when a bug exists, so that the gap between when a vulnerability is disclosed and when it is patched matters less. </p><p>That means defenses that sit in front of the application and block the bug from being reached. It means designing the application so that a flaw in one part of the code cannot give an attacker access to other parts. It means being able to roll out a fix to every place the code is running at the same moment, rather than waiting on individual teams to deploy it."</p><p>Exactly how Cloudflare plans to use Mythos in this way is something the company is still keeping close to its chest, but it says it will "share more on what that means for customers in the weeks ahead."</p><p>Cloudflare is far from unfamiliar with AI. The company has <a href="https://www.pcgamer.com/software/ai/increasingly-the-distinction-between-bots-and-humans-is-moot-says-one-of-the-biggest-web-infrastructure-companies/" target="_blank">previously said</a> that "increasingly the distinction between bots and humans is moot", at least when it comes to how websites (which often run through Cloudflare servers) treat users. So I suppose it's no surprise the company is diving into a heavily agentic approach to cybersecurity. Though if Mythos really is as much of a leap ahead as the company is suggesting, it might be a case of 'get to it before your adversaries do'—the AI arms race churns on whether we want it or not.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Interpol's 'Operation Ramz' has arrested over 200 people for phishing scams, malware threats, and security breaches ]]></title>
                                                                                                <dc:content><![CDATA[ <p>International police organisation Interpol has announced the arrest of 201 individuals as part of "<a href="https://www.interpol.int/en/News-and-Events/News/2026/201-arrests-in-first-of-its-kind-cybercrime-operation-in-MENA-region" target="_blank">Operation Ramz</a>", a multinational effort to target phishing operations, malware threats, and "cyber scams" in the Middle East and North Africa region.</p><p>The "first of its kind" operation involved the participation of 13 countries and resulted in the seizure of 53 servers alongside the arrests. 3,867 victims of cybercrime were confirmed via nearly 8,000 pieces of data pulled from said servers (via <a href="https://www.bleepingcomputer.com/news/security/interpol-operation-ramz-seizes-53-malware-phishing-servers/" target="_blank">Bleeping Computer</a>).</p><p>"In a world where cybercriminals exploit the digital landscape without borders, Operation Ramz demonstrates the effectiveness of global collaboration," said Neal Jetton, Interpol's director of cybercrime.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>"Interpol is dedicated to working with its member countries and private sector partners to take down malicious infrastructure, disrupt criminal groups and bring perpetrators to justice.”</p><p>The press release highlights several countries involved in the effort, including Qatar, Jordan, Oman, Algeria, and Morocco. In the case of Jordan, Interpol claims that 15 individuals were discovered by police to be running an investment scam that mimicked a legitimate trading platform, but were later determined to be victims of human trafficking.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mFkytw2xMwt8YqnsfRjQj4" name="GettyImages-1706985510-1920x1080size.jpg" alt="A stylised photograph of a person acting as a hacker, break into servers and infecting them with a virus, as show by computer monitors displaying green text and codes Their System with a Virus" src="https://cdn.mos.cms.futurecdn.net/mFkytw2xMwt8YqnsfRjQj4-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Witthaya Prasongsin via Getty Images)</span></figcaption></figure><p>Interpol says the individuals originated from elsewhere in Asia, but had been recruited under a false promise of employment before having their passports confiscated and being forced to participate in the scheme. Two people accused of orchestrating the fraudulent operation were arrested.</p><p>Another deferred method of operation occurred in Qatar, according to Interpol. There, investigators found multiple compromised devices that were being used to spread malicious threats, all while their owners were left completely unaware that their electronics had been hijacked.</p><p>Which is a pretty unnerving thought. Us PC users are usually pretty savvy to the idea that our machines need securing against outside threats, but it's important to remember that routers, phones, and other, less-obvious devices can also be vulnerable to attack, often without your knowledge. </p><p>Basically, think about security when using any electronic device. None of us want a knock on the door and a chat with the authorities, do we?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/interpols-operation-ramz-has-arrested-over-200-people-for-phishing-scams-malware-threats-and-all-sorts-of-internet-neer-do-well-behaviour/</link>
                                                                            <description>
                            <![CDATA[ Knock knock, it's the cyber police. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vn7m8x779i8RrrGJSpUD9K</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oiLtyNerA9NERKHemTzTB6-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 19 May 2026 16:29:18 +0000</pubDate>                                                                                                                                <updated>Tue, 19 May 2026 16:48:52 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/oiLtyNerA9NERKHemTzTB6-1920-80.png">
                                                            <media:credit><![CDATA[rob dobi via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A hooded figure is depicted running with a large sack, from which slips of paper featuring asterisks (symbolizing passwords or confidential information) are falling out. The background is solid red, creating a striking contrast and emphasizing the theme of cyber theft or data breach.]]></media:description>                                                            <media:text><![CDATA[A hooded figure is depicted running with a large sack, from which slips of paper featuring asterisks (symbolizing passwords or confidential information) are falling out. The background is solid red, creating a striking contrast and emphasizing the theme of cyber theft or data breach.]]></media:text>
                                <media:title type="plain"><![CDATA[A hooded figure is depicted running with a large sack, from which slips of paper featuring asterisks (symbolizing passwords or confidential information) are falling out. The background is solid red, creating a striking contrast and emphasizing the theme of cyber theft or data breach.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oiLtyNerA9NERKHemTzTB6-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>International police organisation Interpol has announced the arrest of 201 individuals as part of "<a href="https://www.interpol.int/en/News-and-Events/News/2026/201-arrests-in-first-of-its-kind-cybercrime-operation-in-MENA-region" target="_blank">Operation Ramz</a>", a multinational effort to target phishing operations, malware threats, and "cyber scams" in the Middle East and North Africa region.</p><p>The "first of its kind" operation involved the participation of 13 countries and resulted in the seizure of 53 servers alongside the arrests. 3,867 victims of cybercrime were confirmed via nearly 8,000 pieces of data pulled from said servers (via <a href="https://www.bleepingcomputer.com/news/security/interpol-operation-ramz-seizes-53-malware-phishing-servers/" target="_blank">Bleeping Computer</a>).</p><p>"In a world where cybercriminals exploit the digital landscape without borders, Operation Ramz demonstrates the effectiveness of global collaboration," said Neal Jetton, Interpol's director of cybercrime.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>"Interpol is dedicated to working with its member countries and private sector partners to take down malicious infrastructure, disrupt criminal groups and bring perpetrators to justice.”</p><p>The press release highlights several countries involved in the effort, including Qatar, Jordan, Oman, Algeria, and Morocco. In the case of Jordan, Interpol claims that 15 individuals were discovered by police to be running an investment scam that mimicked a legitimate trading platform, but were later determined to be victims of human trafficking.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mFkytw2xMwt8YqnsfRjQj4" name="GettyImages-1706985510-1920x1080size.jpg" alt="A stylised photograph of a person acting as a hacker, break into servers and infecting them with a virus, as show by computer monitors displaying green text and codes Their System with a Virus" src="https://cdn.mos.cms.futurecdn.net/mFkytw2xMwt8YqnsfRjQj4-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Witthaya Prasongsin via Getty Images)</span></figcaption></figure><p>Interpol says the individuals originated from elsewhere in Asia, but had been recruited under a false promise of employment before having their passports confiscated and being forced to participate in the scheme. Two people accused of orchestrating the fraudulent operation were arrested.</p><p>Another deferred method of operation occurred in Qatar, according to Interpol. There, investigators found multiple compromised devices that were being used to spread malicious threats, all while their owners were left completely unaware that their electronics had been hijacked.</p><p>Which is a pretty unnerving thought. Us PC users are usually pretty savvy to the idea that our machines need securing against outside threats, but it's important to remember that routers, phones, and other, less-obvious devices can also be vulnerable to attack, often without your knowledge. </p><p>Basically, think about security when using any electronic device. None of us want a knock on the door and a chat with the authorities, do we?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Discord just got the privacy feature it probably should have had for years, introducing end-to-end encryption for very nearly every voice and video call ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Discord has just announced that all voice and video calls that take place on its platform will now enjoy end-to-end encryption.</p><p>You may be forgiven for thinking the platform already had this in place, but that's not the case. The platform began 'experimenting' with end-to-end encryption <a href="https://discord.com/blog/encryption-for-voice-and-video-on-discord" target="_blank">back in 2023</a>, but has only just <a href="https://discord.com/blog/every-voice-and-video-call-on-discord-is-now-end-to-end-encrypted" target="_blank">made it the standard for almost every call</a>.</p><p>I say 'almost' because the major exception is voice and video calls taking place on a server's stage channel. Otherwise, for standard server channels, the switch is automatic with no need to opt in. The company says that right now, "every voice and video call on Discord, whether in DMs, group DMs, voice channels, or Go Live streams, is end-to-end encrypted by default."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>The vice president of technology at <a href="https://www.pcgamer.com/uk/discord/" target="_blank">Discord</a>, Mark Smith, dove into some depth about the multi-year process of implementing end-to-end call encryption. Long story short, <a href="https://discord.com/blog/meet-dave-e2ee-for-audio-video" target="_blank">2024 saw the introduction of DAVE</a> (no, <a href="https://www.pcgamer.com/author/dave-james/" target="_blank">not that one</a>), Discord's very own encryption protocol. If you'd like to take a closer look at DAVE (still not that one), <a href="https://github.com/discord/libdave" target="_blank">Discord has made it open-source via GitHub</a>.</p><p>Smith explains, "We began migrating calls on desktop and mobile and started proving that E2EE could operate at Discord's scale without compromising the experience people expect from us."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="id4wHipjYPcsESTxAdLoj3" name="LinusDiscord1" alt="Linus Torvalds holds a small PC onto the screen of which Discord has been photoshopped clumsily." src="https://cdn.mos.cms.futurecdn.net/id4wHipjYPcsESTxAdLoj3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jim Sugar via Getty Images / Discord)</span></figcaption></figure><p>Then in 2025, <a href="https://discord.com/blog/bringing-dave-to-all-discord-platforms" target="_blank">DAVE was extended to every remaining Discord platform</a>, such as the browser-based app and console-based apps. Smith writes, "At the beginning of March 2026, we completed that migration."</p><p>That's the briefest of overviews, but already hints at what a social beast Discord has become, and just how many moving parts this migration had to account for. "The thing that makes Discord's voice and video infrastructure unusual isn't just scale — it's diversity," Mark Smith writes, "A single Discord call can have someone on a laptop, someone on their phone, someone on a PlayStation, someone on an Xbox, and someone in a web browser, all in the same conversation at the same time." </p><p>He goes on to add, "Every one of those participants expects Discord’s high-quality, low-latency communications, regardless of what device they're on. Building an E2EE protocol that works seamlessly across all of those surfaces simultaneously is, to my knowledge, unlike anything else that's been shipped. DAVE is likely one of the internet’s most platform-diverse E2EE voice and video implementations."</p><p>It's definitely an impressive project that represents a recommitment to user privacy. You may remember that the embattled social platform experienced a lot of pushback over proposed age verification measures, particularly after <a href="https://www.pcgamer.com/hardware/discord-says-70-000-age-verification-id-photos-may-have-been-leaked-in-recent-security-breach-that-also-includes-names-usernames-emails-credit-cards-and-ip-addresses/" target="_blank">the potential exposure of 70,000 users' personal data in a data breach last year</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cQky3vgcKgB2hQgKLThUsn" name="discord-hackers.jpg" alt="Discord hackers distribute malware that can stay persistent for months" src="https://cdn.mos.cms.futurecdn.net/cQky3vgcKgB2hQgKLThUsn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TheDigitalArtist - Pixabay & Discord)</span></figcaption></figure><p>Though <a href="https://www.pcgamer.com/software/platforms/discord-delays-its-global-age-verification-rollout-and-cuts-ties-with-peter-thiel-backed-verification-vendor-after-upsetting-almost-everyone-on-earth-weve-made-mistakes/" target="_blank">the platform has delayed rolling out age checks globally</a> in light of criticism, the platform has already deployed age verification in the UK in accordance with local law there (<a href="https://www.pcgamer.com/gaming-industry/theres-no-reason-for-discord-to-comply-in-advance-with-social-media-age-verification-laws-instead-of-fighting-for-their-users-says-eff-expert/" target="_blank">though critics argue the platform did not need to comply in advance</a>). As a long-time user in the UK, <a href="https://www.pcgamer.com/hardware/discord-clarifies-it-is-not-requiring-everyone-to-complete-a-face-scan-or-upload-an-id-and-will-confirm-your-age-group-using-information-we-already-have/" target="_blank">I've managed to avoid these latest checks</a>. All the same, here's hoping that the user privacy win of end-to-end encryption isn't soon undone by poorly implemented age checks in the near future.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/discord-just-got-the-privacy-feature-it-probably-should-have-had-for-years-introducing-end-to-end-encryption-for-very-nearly-every-voice-and-video-call/</link>
                                                                            <description>
                            <![CDATA[ "Likely one of the internet’s most platform-diverse E2EE voice and video implementations." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xxkTPAeER4TBPA5HGWQjFL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bK4uZhxvRgcb85EAubQrc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 19 May 2026 15:11:24 +0000</pubDate>                                                                                                                                <updated>Tue, 19 May 2026 15:12:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bK4uZhxvRgcb85EAubQrc-1920-80.jpg">
                                                            <media:credit><![CDATA[Jakub Porzycki/NurPhoto via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Discord logo displayed on a phone screen and Discord website displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on November 5, 2022.]]></media:description>                                                            <media:text><![CDATA[Discord logo displayed on a phone screen and Discord website displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on November 5, 2022.]]></media:text>
                                <media:title type="plain"><![CDATA[Discord logo displayed on a phone screen and Discord website displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on November 5, 2022.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bK4uZhxvRgcb85EAubQrc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Discord has just announced that all voice and video calls that take place on its platform will now enjoy end-to-end encryption.</p><p>You may be forgiven for thinking the platform already had this in place, but that's not the case. The platform began 'experimenting' with end-to-end encryption <a href="https://discord.com/blog/encryption-for-voice-and-video-on-discord" target="_blank">back in 2023</a>, but has only just <a href="https://discord.com/blog/every-voice-and-video-call-on-discord-is-now-end-to-end-encrypted" target="_blank">made it the standard for almost every call</a>.</p><p>I say 'almost' because the major exception is voice and video calls taking place on a server's stage channel. Otherwise, for standard server channels, the switch is automatic with no need to opt in. The company says that right now, "every voice and video call on Discord, whether in DMs, group DMs, voice channels, or Go Live streams, is end-to-end encrypted by default."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>The vice president of technology at <a href="https://www.pcgamer.com/uk/discord/" target="_blank">Discord</a>, Mark Smith, dove into some depth about the multi-year process of implementing end-to-end call encryption. Long story short, <a href="https://discord.com/blog/meet-dave-e2ee-for-audio-video" target="_blank">2024 saw the introduction of DAVE</a> (no, <a href="https://www.pcgamer.com/author/dave-james/" target="_blank">not that one</a>), Discord's very own encryption protocol. If you'd like to take a closer look at DAVE (still not that one), <a href="https://github.com/discord/libdave" target="_blank">Discord has made it open-source via GitHub</a>.</p><p>Smith explains, "We began migrating calls on desktop and mobile and started proving that E2EE could operate at Discord's scale without compromising the experience people expect from us."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="id4wHipjYPcsESTxAdLoj3" name="LinusDiscord1" alt="Linus Torvalds holds a small PC onto the screen of which Discord has been photoshopped clumsily." src="https://cdn.mos.cms.futurecdn.net/id4wHipjYPcsESTxAdLoj3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jim Sugar via Getty Images / Discord)</span></figcaption></figure><p>Then in 2025, <a href="https://discord.com/blog/bringing-dave-to-all-discord-platforms" target="_blank">DAVE was extended to every remaining Discord platform</a>, such as the browser-based app and console-based apps. Smith writes, "At the beginning of March 2026, we completed that migration."</p><p>That's the briefest of overviews, but already hints at what a social beast Discord has become, and just how many moving parts this migration had to account for. "The thing that makes Discord's voice and video infrastructure unusual isn't just scale — it's diversity," Mark Smith writes, "A single Discord call can have someone on a laptop, someone on their phone, someone on a PlayStation, someone on an Xbox, and someone in a web browser, all in the same conversation at the same time." </p><p>He goes on to add, "Every one of those participants expects Discord’s high-quality, low-latency communications, regardless of what device they're on. Building an E2EE protocol that works seamlessly across all of those surfaces simultaneously is, to my knowledge, unlike anything else that's been shipped. DAVE is likely one of the internet’s most platform-diverse E2EE voice and video implementations."</p><p>It's definitely an impressive project that represents a recommitment to user privacy. You may remember that the embattled social platform experienced a lot of pushback over proposed age verification measures, particularly after <a href="https://www.pcgamer.com/hardware/discord-says-70-000-age-verification-id-photos-may-have-been-leaked-in-recent-security-breach-that-also-includes-names-usernames-emails-credit-cards-and-ip-addresses/" target="_blank">the potential exposure of 70,000 users' personal data in a data breach last year</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cQky3vgcKgB2hQgKLThUsn" name="discord-hackers.jpg" alt="Discord hackers distribute malware that can stay persistent for months" src="https://cdn.mos.cms.futurecdn.net/cQky3vgcKgB2hQgKLThUsn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TheDigitalArtist - Pixabay & Discord)</span></figcaption></figure><p>Though <a href="https://www.pcgamer.com/software/platforms/discord-delays-its-global-age-verification-rollout-and-cuts-ties-with-peter-thiel-backed-verification-vendor-after-upsetting-almost-everyone-on-earth-weve-made-mistakes/" target="_blank">the platform has delayed rolling out age checks globally</a> in light of criticism, the platform has already deployed age verification in the UK in accordance with local law there (<a href="https://www.pcgamer.com/gaming-industry/theres-no-reason-for-discord-to-comply-in-advance-with-social-media-age-verification-laws-instead-of-fighting-for-their-users-says-eff-expert/" target="_blank">though critics argue the platform did not need to comply in advance</a>). As a long-time user in the UK, <a href="https://www.pcgamer.com/hardware/discord-clarifies-it-is-not-requiring-everyone-to-complete-a-face-scan-or-upload-an-id-and-will-confirm-your-age-group-using-information-we-already-have/" target="_blank">I've managed to avoid these latest checks</a>. All the same, here's hoping that the user privacy win of end-to-end encryption isn't soon undone by poorly implemented age checks in the near future.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft continues to build towards a passwordless future by phasing out an authentication method that's become 'a leading source of fraud' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Everyone wants your data, so that means everyone would like you to make an account with them. I don't know about you, but more accounts simply means more passwords I'm bound to forget—at least there's multi-factor authentication methods like SMS codes, right? Well, soon that won't be the case for your personal Microsoft account.</p><p>Traditionally, codes sent via text to your phone have been deployed as an authentication method when you log in, or as a way to recover your Microsoft account when you inevitably forget your password. Unfortunately for forgetful folks such as myself, <a href="https://support.microsoft.com/en-us/accounts-billing/manage/microsoft-to-stop-sending-sms-codes-for-personal-accounts" target="_blank">Microsoft has chosen to phase out SMS codes</a> in both cases (via <a href="https://www.windowslatest.com/2026/05/19/microsoft-is-killing-sms-codes-for-microsoft-account-sign-in-aggressively-pushes-passkeys-on-windows-11/" target="_blank">Windows Latest</a>).</p><p>According to Microsoft, "SMS-based authentication is now a leading source of fraud, and by moving to passwordless accounts, passkeys, and verified email, we're helping you stay ahead of evolving threats while making account access simpler and more seamless."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>So, if SMS codes are out and Microsoft truly believes "the future of authentication is passwordless," what does that leave? Primarily, <a href="https://support.microsoft.com/en-us/account-billing/create-and-save-a-passkey-e92cd3e0-11fa-4630-a5ea-3ccc0396b3d9" target="_blank">Passkeys</a>. These can take the form of a PIN, but biometric passkeys, like a face or fingerprint scan, avoid the whole 'a sequence of characters you can forget' problem. That said, it requires handing over yet more data that I'm personally reluctant to give up to big tech.</p><p>This isn't the first time the company has said it wants <a href="https://www.pcgamer.com/software/operating-systems/microsoft-says-it-wants-to-completely-ditch-passwords-as-it-makes-passwordless-login-the-default-for-all-new-accounts/" target="_blank">to completely ditch traditional passwords</a>. As much as <a href="https://www.pcgamer.com/hardware/today-i-learned-motorola-was-once-developing-a-password-pill-that-turns-your-body-into-an-authentication-token-we-have-demoed-this-working-and-authenticating-a-phone/" target="_blank">Motorola's 'password pill'</a> captures the imagination, it was far from practical. As such, Microsoft is pitching Passkeys as a faster, "phishing-resistant" way to log in as this method uses your device's local, "built-in authentication (like Face ID, fingerprint, or PIN)."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.88%;"><img id="f4tei8tW9372mYpFwNSeEJ" name="Microsoft security 2" alt="Microsoft security" src="https://cdn.mos.cms.futurecdn.net/f4tei8tW9372mYpFwNSeEJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2048" height="1165" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>This makes sense. For a start, SMS codes are displayed in plain text and sent over mobile networks that committed bad actors can fairly easily breach at a distance. On-device authentication cuts out that vulnerable network—though <a href="https://www.pcgamer.com/software/security/cybersecurity-experts-raise-the-alarm-over-windows-recall-again-the-vault-door-is-titanium-the-wall-next-to-it-is-drywall/" target="_blank">security researchers have already exposed how Windows Recall could be leveraged by bad actors</a> to get around Microsoft's best security intentions, so, as always, it's important to remember that device security should be maintained across the board.</p><p>No authentication measure is 100% secure, but limiting a forgetful user's login options is a headache. I would use a password manager like LastPass, but security researchers argue such services are <a href="https://www.pcgamer.com/hardware/three-of-the-biggest-password-managers-are-vulnerable-to-a-cornucopia-of-practical-attacks-say-security-researchers/" target="_blank">vulnerable to 'a cornucopia of practical attacks'</a>, though some of my colleagues swear by them (the two Jacobs swear by BitWarden). </p><p>At any rate, you won't be able to get auto-filling from a PWM before you log into the OS. At least if I forget a password, no one has a hope of retrieving it from my grey matter besides me.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/microsoft-continues-to-build-towards-a-passwordless-future-by-phasing-out-an-authentication-method-thats-become-a-leading-source-of-fraud/</link>
                                                                            <description>
                            <![CDATA[ Bad news for forgetful folks like me. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">uSmpNcEApNi2gSpjt8XSDd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iL6D95t98F3a3oPkTLE4A-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 19 May 2026 10:48:22 +0000</pubDate>                                                                                                                                <updated>Tue, 19 May 2026 10:48:29 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/iL6D95t98F3a3oPkTLE4A-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft]]></media:description>                                                            <media:text><![CDATA[Microsoft]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iL6D95t98F3a3oPkTLE4A-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Everyone wants your data, so that means everyone would like you to make an account with them. I don't know about you, but more accounts simply means more passwords I'm bound to forget—at least there's multi-factor authentication methods like SMS codes, right? Well, soon that won't be the case for your personal Microsoft account.</p><p>Traditionally, codes sent via text to your phone have been deployed as an authentication method when you log in, or as a way to recover your Microsoft account when you inevitably forget your password. Unfortunately for forgetful folks such as myself, <a href="https://support.microsoft.com/en-us/accounts-billing/manage/microsoft-to-stop-sending-sms-codes-for-personal-accounts" target="_blank">Microsoft has chosen to phase out SMS codes</a> in both cases (via <a href="https://www.windowslatest.com/2026/05/19/microsoft-is-killing-sms-codes-for-microsoft-account-sign-in-aggressively-pushes-passkeys-on-windows-11/" target="_blank">Windows Latest</a>).</p><p>According to Microsoft, "SMS-based authentication is now a leading source of fraud, and by moving to passwordless accounts, passkeys, and verified email, we're helping you stay ahead of evolving threats while making account access simpler and more seamless."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>So, if SMS codes are out and Microsoft truly believes "the future of authentication is passwordless," what does that leave? Primarily, <a href="https://support.microsoft.com/en-us/account-billing/create-and-save-a-passkey-e92cd3e0-11fa-4630-a5ea-3ccc0396b3d9" target="_blank">Passkeys</a>. These can take the form of a PIN, but biometric passkeys, like a face or fingerprint scan, avoid the whole 'a sequence of characters you can forget' problem. That said, it requires handing over yet more data that I'm personally reluctant to give up to big tech.</p><p>This isn't the first time the company has said it wants <a href="https://www.pcgamer.com/software/operating-systems/microsoft-says-it-wants-to-completely-ditch-passwords-as-it-makes-passwordless-login-the-default-for-all-new-accounts/" target="_blank">to completely ditch traditional passwords</a>. As much as <a href="https://www.pcgamer.com/hardware/today-i-learned-motorola-was-once-developing-a-password-pill-that-turns-your-body-into-an-authentication-token-we-have-demoed-this-working-and-authenticating-a-phone/" target="_blank">Motorola's 'password pill'</a> captures the imagination, it was far from practical. As such, Microsoft is pitching Passkeys as a faster, "phishing-resistant" way to log in as this method uses your device's local, "built-in authentication (like Face ID, fingerprint, or PIN)."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.88%;"><img id="f4tei8tW9372mYpFwNSeEJ" name="Microsoft security 2" alt="Microsoft security" src="https://cdn.mos.cms.futurecdn.net/f4tei8tW9372mYpFwNSeEJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2048" height="1165" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>This makes sense. For a start, SMS codes are displayed in plain text and sent over mobile networks that committed bad actors can fairly easily breach at a distance. On-device authentication cuts out that vulnerable network—though <a href="https://www.pcgamer.com/software/security/cybersecurity-experts-raise-the-alarm-over-windows-recall-again-the-vault-door-is-titanium-the-wall-next-to-it-is-drywall/" target="_blank">security researchers have already exposed how Windows Recall could be leveraged by bad actors</a> to get around Microsoft's best security intentions, so, as always, it's important to remember that device security should be maintained across the board.</p><p>No authentication measure is 100% secure, but limiting a forgetful user's login options is a headache. I would use a password manager like LastPass, but security researchers argue such services are <a href="https://www.pcgamer.com/hardware/three-of-the-biggest-password-managers-are-vulnerable-to-a-cornucopia-of-practical-attacks-say-security-researchers/" target="_blank">vulnerable to 'a cornucopia of practical attacks'</a>, though some of my colleagues swear by them (the two Jacobs swear by BitWarden). </p><p>At any rate, you won't be able to get auto-filling from a PWM before you log into the OS. At least if I forget a password, no one has a hope of retrieving it from my grey matter besides me.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Owner of $400,000 in bitcoin was locked out of their account a decade ago and they just used Claude to get back in  ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You may think getting locked out of your account because you've forgotten the password is annoying, but have you ever gotten locked out and lost almost half a million dollars in the process? That's what happened to X user <a href="https://x.com/cprkrn/status/2054586810475364536" target="_blank">@cprkrn</a>, when they stored five bitcoin ($402k at the time of writing) in an account in 2015 and forgot how to get back in. </p><p>As reported by <a href="https://www.tomshardware.com/tech-industry/cryptocurrency/bitcoin-trader-recovers-usd400-000-using-claude-ai-after-losing-wallet-password-11-years-ago-bot-tried-3-5-trillion-passwords-before-decrypting-an-old-wallet-backup" target="_blank">Tom's Hardware</a>, cprkrn used Anthropic's AI model, Claude, to get access again. After using 'like 7 trillion passwords ', they found a password that happened to be the one before the current one. </p><p>Thinking they had no way back in, they reportedly dumped their college computer into Claude, which found an old wallet file that, once decrypted, got them into their account. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>This computer had a mnemonic device that they seemingly didn't spot, and Claude put that together with the rest of their account details to get into the account. The LLM didn't hack into the account, or anything so elaborate, it just found the pieces to get into the account, lost in an old computer.  </p><p>If you're wondering how and why they lost their password for an account that is so valuable, <a href="https://x.com/cprkrn/status/2054593989177757763?s=20" target="_blank">they were apparently</a> "Locked out 11+ years because I got stoned and changed the password."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2054593989177757763"><p lang="en" dir="ltr">I tried like 7 trillion passwords lmfaoFound this old pneumonic a few weeks ago that ended up being the old password before I changed itThought I was screwedLast ditch effort dumped my whole college computer into ClaudeIt found an OLD wallet file that the pneumonic…<a href="https://twitter.com/cantworkitout/status/2054593989177757763">May 13, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>There's an ironic silver lining here, in that we don't know if cprkm would have held onto the bitcoin so long if they hadn't lost access. According to the <a href="https://blockchair.com/bitcoin/address/14VJySbsKraEJbtwk9ivnr1fXs6QuofuE6?utm_referrer=https%3A%2F%2Ft.co%2F#history" target="_blank">account history</a>, 5 bitcoin were purchased on April Fools' Day in 2015. By this point, the cryptocurrency was worth around $245. Now, one bitcoin fetches $60,000. That's a fair jump in value, though it is down from its peak of $90,000 in October, 2025. </p><p>Still, cprkrn would have been aware that they had somewhere close to half a million dollars in a locked account for years now. They report that dumping their computer into Claude was their 'last ditch effort' to get the account back. </p><p>You may be wondering what they plan on doing with all that cash now that they finally have it back. Their answer? <a href="https://x.com/cprkrn/status/2054699774561959991?s=20" target="_blank">Asking electronic artist and DJ Deadmau5 to play at their wedding</a>. I suppose there are technically worse ways to spend the money.  </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/owner-of-usd400-000-in-bitcoin-was-locked-out-of-their-account-a-decade-ago-and-they-just-used-claude-to-get-back-in/</link>
                                                                            <description>
                            <![CDATA[ They technically could have saved money by not cashing out earlier. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BLBE8YgLavbc57B6ARKhsU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JP56t7mvBwVyFkWrgpVzN3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 10:30:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JP56t7mvBwVyFkWrgpVzN3-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images / Chris McGrath]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gold Bitcoins are seen in the window of a Bitcoin and cryptocurrency exchange office on November 08, 2024 in Istanbul, Turkey. Bitcoin has soared to new record highs nearing 77,000 in the days after Donald Trump&#039;s re-election and on his campaign promise to support Bitcoin and the cryptocurrency market. ]]></media:description>                                                            <media:text><![CDATA[Gold Bitcoins are seen in the window of a Bitcoin and cryptocurrency exchange office on November 08, 2024 in Istanbul, Turkey. Bitcoin has soared to new record highs nearing 77,000 in the days after Donald Trump&#039;s re-election and on his campaign promise to support Bitcoin and the cryptocurrency market. ]]></media:text>
                                <media:title type="plain"><![CDATA[Gold Bitcoins are seen in the window of a Bitcoin and cryptocurrency exchange office on November 08, 2024 in Istanbul, Turkey. Bitcoin has soared to new record highs nearing 77,000 in the days after Donald Trump&#039;s re-election and on his campaign promise to support Bitcoin and the cryptocurrency market. ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JP56t7mvBwVyFkWrgpVzN3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You may think getting locked out of your account because you've forgotten the password is annoying, but have you ever gotten locked out and lost almost half a million dollars in the process? That's what happened to X user <a href="https://x.com/cprkrn/status/2054586810475364536" target="_blank">@cprkrn</a>, when they stored five bitcoin ($402k at the time of writing) in an account in 2015 and forgot how to get back in. </p><p>As reported by <a href="https://www.tomshardware.com/tech-industry/cryptocurrency/bitcoin-trader-recovers-usd400-000-using-claude-ai-after-losing-wallet-password-11-years-ago-bot-tried-3-5-trillion-passwords-before-decrypting-an-old-wallet-backup" target="_blank">Tom's Hardware</a>, cprkrn used Anthropic's AI model, Claude, to get access again. After using 'like 7 trillion passwords ', they found a password that happened to be the one before the current one. </p><p>Thinking they had no way back in, they reportedly dumped their college computer into Claude, which found an old wallet file that, once decrypted, got them into their account. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>This computer had a mnemonic device that they seemingly didn't spot, and Claude put that together with the rest of their account details to get into the account. The LLM didn't hack into the account, or anything so elaborate, it just found the pieces to get into the account, lost in an old computer.  </p><p>If you're wondering how and why they lost their password for an account that is so valuable, <a href="https://x.com/cprkrn/status/2054593989177757763?s=20" target="_blank">they were apparently</a> "Locked out 11+ years because I got stoned and changed the password."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2054593989177757763"><p lang="en" dir="ltr">I tried like 7 trillion passwords lmfaoFound this old pneumonic a few weeks ago that ended up being the old password before I changed itThought I was screwedLast ditch effort dumped my whole college computer into ClaudeIt found an OLD wallet file that the pneumonic…<a href="https://twitter.com/cantworkitout/status/2054593989177757763">May 13, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>There's an ironic silver lining here, in that we don't know if cprkm would have held onto the bitcoin so long if they hadn't lost access. According to the <a href="https://blockchair.com/bitcoin/address/14VJySbsKraEJbtwk9ivnr1fXs6QuofuE6?utm_referrer=https%3A%2F%2Ft.co%2F#history" target="_blank">account history</a>, 5 bitcoin were purchased on April Fools' Day in 2015. By this point, the cryptocurrency was worth around $245. Now, one bitcoin fetches $60,000. That's a fair jump in value, though it is down from its peak of $90,000 in October, 2025. </p><p>Still, cprkrn would have been aware that they had somewhere close to half a million dollars in a locked account for years now. They report that dumping their computer into Claude was their 'last ditch effort' to get the account back. </p><p>You may be wondering what they plan on doing with all that cash now that they finally have it back. Their answer? <a href="https://x.com/cprkrn/status/2054699774561959991?s=20" target="_blank">Asking electronic artist and DJ Deadmau5 to play at their wedding</a>. I suppose there are technically worse ways to spend the money.  </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ There's a devious hacking scheme that involves a hijacked Microsoft Teams account, a fake IT helpdesk, and a covert infection tool ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Hackers aren't known for punching above the belt, but one recent scam feels so devious it's made me even more wary of the next time IT tries to reach out to me. The scam uses hijacked Microsoft Teams account to pose as an IT helpdesk, which then convinces users to download malicious files. </p><p>As noted by <a href="https://gbhackers.com/hackers-hijack-microsoft-teams/" target="_blank">GBHackers</a>, some versions of this scam use fresh Microsoft Teams accounts to impersonate existing users, but others use accounts gained in this scam to further scam others. </p><p>Once contact is established with a user, they are encouraged to access a bespoke chat client, which lends the hack an air of legitimacy. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>From here, users are encouraged to run a command via PowerShell that then secretly unpacks a WinPython environment. This is all under the guise of it being a "diagnostic tool". The ModeloRAT can start to infect the PC without any obvious signs of what is even happening. </p><p>The hack in question has two separate components to it: one searches for and retrieves data covertly, while the other establishes a connection to a different device. GBHackers notes "Run‑key persistence is still present but is now paired with a scheduled task using a randomly generated name, increasing resiliency and making cleanup harder if only one mechanism is removed."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xKBnoERaRRpKUrwbaPyPHT" name="fallout hacking game.jpg" alt="Fallout hacking minigame" src="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bethesda)</span></figcaption></figure><p>The goal of the ModeloRAT malware software is to embed itself into corporate environments so that it can do what it likes with all that harvested data. GBHackers reports it "was able to execute without detections from several major endpoint detection and response (EDR) products, and related samples showed zero antivirus hits on VirusTotal at the time of analysis."</p><p>This form of social engineering is becoming ever more popular. Just yesterday, I found out about a <a href="https://www.pcgamer.com/software/security/a-jobstealer-trojan-virus-has-popped-up-that-attacks-pcs-via-fake-job-interviews/" target="_blank">password-stealing Trojan virus that managed to get into users' PCs with fake job interviews</a>.</p><p>Social engineering scams are getting even more sophisticated in the age of AI, too. A few months ago, another scheme was found, <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">where hackers would pose as CEOs with deepfake technology</a> and set up a bogus troubleshooting program to help with technical problems. As you might be able to guess, that troubleshooting program was a virus.  </p><p>As always, the best defence against hacks and scams is verifying the identity of folks who contact you, especially if they're trying to make you download a dodgy file or click on a suspect link.  </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/theres-a-devious-hacking-scheme-that-involves-a-hijacked-microsoft-teams-account-a-fake-it-helpdesk-and-a-covert-infection-tool/</link>
                                                                            <description>
                            <![CDATA[ IT's a pretty bad one. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8jknwt9gd3QUxFCTYVgGeN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LSQReDFmyiXJPKj2vGJhEe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 13 May 2026 15:07:20 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LSQReDFmyiXJPKj2vGJhEe-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images / Gabby Jones / Bloomberg ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Microsoft Teams app on a laptop arranged in New York, US, on Tuesday, June 25, 2024. Microsoft Corp. risks a hefty European Union fine after regulators accused the company of abusing its market power by bundling the Teams video-conferencing app to its other business software.]]></media:description>                                                            <media:text><![CDATA[The Microsoft Teams app on a laptop arranged in New York, US, on Tuesday, June 25, 2024. Microsoft Corp. risks a hefty European Union fine after regulators accused the company of abusing its market power by bundling the Teams video-conferencing app to its other business software.]]></media:text>
                                <media:title type="plain"><![CDATA[The Microsoft Teams app on a laptop arranged in New York, US, on Tuesday, June 25, 2024. Microsoft Corp. risks a hefty European Union fine after regulators accused the company of abusing its market power by bundling the Teams video-conferencing app to its other business software.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LSQReDFmyiXJPKj2vGJhEe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Hackers aren't known for punching above the belt, but one recent scam feels so devious it's made me even more wary of the next time IT tries to reach out to me. The scam uses hijacked Microsoft Teams account to pose as an IT helpdesk, which then convinces users to download malicious files. </p><p>As noted by <a href="https://gbhackers.com/hackers-hijack-microsoft-teams/" target="_blank">GBHackers</a>, some versions of this scam use fresh Microsoft Teams accounts to impersonate existing users, but others use accounts gained in this scam to further scam others. </p><p>Once contact is established with a user, they are encouraged to access a bespoke chat client, which lends the hack an air of legitimacy. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>From here, users are encouraged to run a command via PowerShell that then secretly unpacks a WinPython environment. This is all under the guise of it being a "diagnostic tool". The ModeloRAT can start to infect the PC without any obvious signs of what is even happening. </p><p>The hack in question has two separate components to it: one searches for and retrieves data covertly, while the other establishes a connection to a different device. GBHackers notes "Run‑key persistence is still present but is now paired with a scheduled task using a randomly generated name, increasing resiliency and making cleanup harder if only one mechanism is removed."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xKBnoERaRRpKUrwbaPyPHT" name="fallout hacking game.jpg" alt="Fallout hacking minigame" src="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bethesda)</span></figcaption></figure><p>The goal of the ModeloRAT malware software is to embed itself into corporate environments so that it can do what it likes with all that harvested data. GBHackers reports it "was able to execute without detections from several major endpoint detection and response (EDR) products, and related samples showed zero antivirus hits on VirusTotal at the time of analysis."</p><p>This form of social engineering is becoming ever more popular. Just yesterday, I found out about a <a href="https://www.pcgamer.com/software/security/a-jobstealer-trojan-virus-has-popped-up-that-attacks-pcs-via-fake-job-interviews/" target="_blank">password-stealing Trojan virus that managed to get into users' PCs with fake job interviews</a>.</p><p>Social engineering scams are getting even more sophisticated in the age of AI, too. A few months ago, another scheme was found, <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">where hackers would pose as CEOs with deepfake technology</a> and set up a bogus troubleshooting program to help with technical problems. As you might be able to guess, that troubleshooting program was a virus.  </p><p>As always, the best defence against hacks and scams is verifying the identity of folks who contact you, especially if they're trying to make you download a dodgy file or click on a suspect link.  </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Teaching software company strikes a deal with hackers to get customer data back, defying FBI guidance ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Education technology company Instructure has "reached an agreement" with the hacker group that breached its systems for a second time earlier this month. Most recently, hacker group ShinyHunters had exfiltrated hundreds of gigabytes of data from the company's cloud-based learning management system Canvas.</p><p>This breach potentially exposed the names, email addresses, and private messages of about <a href="https://www.pcgamer.com/hardware/rockstar-ransom-hackers-claim-to-have-stolen-the-data-of-280-million-teachers-school-staff-and-students-in-canvas-attack/" target="_blank">280 million Canvas users</a>. ShinyHunters had threatened to leak this data if Instructure did not make contact before a May 12 deadline, though Instructure <a href="https://www.instructure.com/incident_update" target="_blank">now reports</a> that the stolen data has been returned.</p><p>The company has additionally received "digital confirmation of data destruction (shred logs)" from ShinyHunters, and the assurance that "no Instructure customers will be extorted as a result of this incident, publicly or otherwise" (via <a href="https://techcrunch.com/2026/05/12/instructure-strikes-deal-with-hackers-who-breached-it-twice/" target="_blank">TechCrunch</a>). To date, Instructure has not disclosed the full terms of the agreements—financial or otherwise.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p><a href="https://www.bbc.co.uk/news/articles/cdepzg83x87o" target="_blank">According to the BBC</a>, a previous version of Instructure's security incident update read, "While there is never complete certainty when dealing with cyber criminals, we believe it was important to take every step within our control to give customers additional peace of mind, to the extent possible."</p><p>Official guidance frequently urges ransomware victims <em>not </em>to pay up. To begin with, <a href="https://www.fbi.gov/how-we-can-help-you/scams-and-safety/common-frauds-and-scams/ransomware" target="_blank">one of the FBI's ransomware info pages</a> advises that the bureau "does not support paying a ransom in response to a ransomware attack." The FBI also <a href="https://x.com/FBICyberDiv/status/2052910397196292460" target="_blank">alluded to the Canvas breach in a post on X last week</a>, writing, "If you are contacted directly by anyone claiming to have your data, we recommend you not send payment or respond to their demands."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZKEZ5pcnnfswatquMwibBG" name="Grand Theft Auto VI Trailer 1 00-01-10.jpg" alt="gta 6 trailer" src="https://cdn.mos.cms.futurecdn.net/ZKEZ5pcnnfswatquMwibBG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Rockstar)</span></figcaption></figure><p>Besides the Canvas cyberattack, <a href="https://www.pcgamer.com/hardware/the-same-group-that-tried-to-ransom-rockstar-over-gta-6-says-it-has-breached-user-data-from-armenian-geforce-now-servers/" target="_blank">ShinyHunters has most recently breached Nvidia's GeForce Now</a>—the hacker group claims that it "pulled their entire database straight from the backend." The group also <a href="https://www.pcgamer.com/games/grand-theft-auto/hackers-demand-ransom-from-gta6-studio-rockstar-threaten-to-leak-stolen-data/" target="_blank">demanded a ransom from GTA 6 studio Rockstar last month</a>, though it was soon revealed that <a href="https://www.pcgamer.com/games/rockstar-hackers-release-their-stolen-data-reveal-that-rockstar-was-right-to-not-pay-them-anything-for-it/" target="_blank">they didn't have all that much to leak in the end</a>.</p><p>It has not yet been confirmed if or how much Instructure paid ShinyHunters in order to retrieve its stolen data. At the time of writing, the company's latest security incident update does not explain why the company chose to broker an agreement with the cybercriminal group. That said, Instructure leadership apparently intends to offer some clarity in an upcoming webinar, detailing "information about the cyber attack and our activities to harden the system."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/teaching-software-company-strikes-a-deal-with-hackers-to-get-customer-data-back-defying-fbi-guidance/</link>
                                                                            <description>
                            <![CDATA[ A strange choice with details to follow. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">c9YTbxtvzg554DfZWBCLUj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 13 May 2026 14:01:53 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg">
                                                            <media:credit><![CDATA[Urbazon via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An FBI agent using a comuter.]]></media:description>                                                            <media:text><![CDATA[An FBI agent using a comuter.]]></media:text>
                                <media:title type="plain"><![CDATA[An FBI agent using a comuter.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/toD7dricW9DJqnsPdwk9XH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Education technology company Instructure has "reached an agreement" with the hacker group that breached its systems for a second time earlier this month. Most recently, hacker group ShinyHunters had exfiltrated hundreds of gigabytes of data from the company's cloud-based learning management system Canvas.</p><p>This breach potentially exposed the names, email addresses, and private messages of about <a href="https://www.pcgamer.com/hardware/rockstar-ransom-hackers-claim-to-have-stolen-the-data-of-280-million-teachers-school-staff-and-students-in-canvas-attack/" target="_blank">280 million Canvas users</a>. ShinyHunters had threatened to leak this data if Instructure did not make contact before a May 12 deadline, though Instructure <a href="https://www.instructure.com/incident_update" target="_blank">now reports</a> that the stolen data has been returned.</p><p>The company has additionally received "digital confirmation of data destruction (shred logs)" from ShinyHunters, and the assurance that "no Instructure customers will be extorted as a result of this incident, publicly or otherwise" (via <a href="https://techcrunch.com/2026/05/12/instructure-strikes-deal-with-hackers-who-breached-it-twice/" target="_blank">TechCrunch</a>). To date, Instructure has not disclosed the full terms of the agreements—financial or otherwise.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p><a href="https://www.bbc.co.uk/news/articles/cdepzg83x87o" target="_blank">According to the BBC</a>, a previous version of Instructure's security incident update read, "While there is never complete certainty when dealing with cyber criminals, we believe it was important to take every step within our control to give customers additional peace of mind, to the extent possible."</p><p>Official guidance frequently urges ransomware victims <em>not </em>to pay up. To begin with, <a href="https://www.fbi.gov/how-we-can-help-you/scams-and-safety/common-frauds-and-scams/ransomware" target="_blank">one of the FBI's ransomware info pages</a> advises that the bureau "does not support paying a ransom in response to a ransomware attack." The FBI also <a href="https://x.com/FBICyberDiv/status/2052910397196292460" target="_blank">alluded to the Canvas breach in a post on X last week</a>, writing, "If you are contacted directly by anyone claiming to have your data, we recommend you not send payment or respond to their demands."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZKEZ5pcnnfswatquMwibBG" name="Grand Theft Auto VI Trailer 1 00-01-10.jpg" alt="gta 6 trailer" src="https://cdn.mos.cms.futurecdn.net/ZKEZ5pcnnfswatquMwibBG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Rockstar)</span></figcaption></figure><p>Besides the Canvas cyberattack, <a href="https://www.pcgamer.com/hardware/the-same-group-that-tried-to-ransom-rockstar-over-gta-6-says-it-has-breached-user-data-from-armenian-geforce-now-servers/" target="_blank">ShinyHunters has most recently breached Nvidia's GeForce Now</a>—the hacker group claims that it "pulled their entire database straight from the backend." The group also <a href="https://www.pcgamer.com/games/grand-theft-auto/hackers-demand-ransom-from-gta6-studio-rockstar-threaten-to-leak-stolen-data/" target="_blank">demanded a ransom from GTA 6 studio Rockstar last month</a>, though it was soon revealed that <a href="https://www.pcgamer.com/games/rockstar-hackers-release-their-stolen-data-reveal-that-rockstar-was-right-to-not-pay-them-anything-for-it/" target="_blank">they didn't have all that much to leak in the end</a>.</p><p>It has not yet been confirmed if or how much Instructure paid ShinyHunters in order to retrieve its stolen data. At the time of writing, the company's latest security incident update does not explain why the company chose to broker an agreement with the cybercriminal group. That said, Instructure leadership apparently intends to offer some clarity in an upcoming webinar, detailing "information about the cyber attack and our activities to harden the system."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hackers are using fake job interviews to load applicants' PCs with a password-stealing Trojan ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As is ever the case, hackers are a devious old bunch, and this time, they're using your desire to finally get a job to stick a virus on your PC. Ironically named 'JobStealer', one Trojan virus is buried in a fake video conferencing app. </p><p>As pointed out by antivirus software <a href="https://news.drweb.ru/show/?i=15253&lng=ru&c=5" target="_blank">Dr.Web</a>, bad actors contact users looking for jobs and invite them to interview via a video conference website intended to look like a real one, which prompts users to download its software. </p><p>In many of these cases, the software has connected social media accounts to make it all seem real. Bad actors are also spoofing real sites like Webex to add legitimacy to their attacks. If you happen to get contacted by one of these scammers on Mac, the site will encourage you to even run the virus via the terminal or a disk image file that runs the terminal for you—a clear red flag. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>The 'Jobstealer' virus is a pretty involved one that collects data on the system itself, its browser extensions, passwords, notes and more. All that data is then placed in a ZIP archive and uploaded to a server. As is so often the case with viruses right now, this one primarily aims to steal cryptocurrency wallets. </p><p>There is currently both a macOS and Windows version of the software available to download. There are also versions for iOS, Android, and Linux, though Dr.Web has not yet seen distribution of the virus on these platforms. Still, their presence indicates that there may be plans to roll the virus out to other platforms in the future. Dr.Web does point out that its antivirus software can get rid of JobStealer, though, so it's at least detectable and removable. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tv5e8eVbT7uQcLL7Dtt3bZ" name="hacking-omg.jpg" alt="Person typing on a laptop with red and blue lighting" src="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Examples of the fake websites, as noted by Dr.Web. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Westend61)</span></figcaption></figure><p>Faking credentials of employers has become a more common hacking tactic in recent times, thanks in part to the prevalence of AI. Earlier this year, <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">researchers spotted a complicated social engineering scam that used deepfakes versions of CEOs to spoof Zoom calls</a> and prompt users to download troubleshooting software to fix software issues. As you may be able to guess, that troubleshooting software is in fact a virus. </p><p>As is ever the case, scams that rely on tricking the most desperate are a reliable method for bad actors. Just make sure to double and triple-check the credentials of the next employer who reaches out to you. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/a-jobstealer-trojan-virus-has-popped-up-that-attacks-pcs-via-fake-job-interviews/</link>
                                                                            <description>
                            <![CDATA[ No job and a new virus. What a nightmare. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SvsZdheoVMKDMVdpypWgKc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 12 May 2026 10:31:31 +0000</pubDate>                                                                                                                                <updated>Tue, 12 May 2026 11:09:29 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg">
                                                            <media:credit><![CDATA[Chris Ratcliffe/Bloomberg via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg]]></media:description>                                                            <media:text><![CDATA[Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg]]></media:text>
                                <media:title type="plain"><![CDATA[Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As is ever the case, hackers are a devious old bunch, and this time, they're using your desire to finally get a job to stick a virus on your PC. Ironically named 'JobStealer', one Trojan virus is buried in a fake video conferencing app. </p><p>As pointed out by antivirus software <a href="https://news.drweb.ru/show/?i=15253&lng=ru&c=5" target="_blank">Dr.Web</a>, bad actors contact users looking for jobs and invite them to interview via a video conference website intended to look like a real one, which prompts users to download its software. </p><p>In many of these cases, the software has connected social media accounts to make it all seem real. Bad actors are also spoofing real sites like Webex to add legitimacy to their attacks. If you happen to get contacted by one of these scammers on Mac, the site will encourage you to even run the virus via the terminal or a disk image file that runs the terminal for you—a clear red flag. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>The 'Jobstealer' virus is a pretty involved one that collects data on the system itself, its browser extensions, passwords, notes and more. All that data is then placed in a ZIP archive and uploaded to a server. As is so often the case with viruses right now, this one primarily aims to steal cryptocurrency wallets. </p><p>There is currently both a macOS and Windows version of the software available to download. There are also versions for iOS, Android, and Linux, though Dr.Web has not yet seen distribution of the virus on these platforms. Still, their presence indicates that there may be plans to roll the virus out to other platforms in the future. Dr.Web does point out that its antivirus software can get rid of JobStealer, though, so it's at least detectable and removable. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tv5e8eVbT7uQcLL7Dtt3bZ" name="hacking-omg.jpg" alt="Person typing on a laptop with red and blue lighting" src="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Examples of the fake websites, as noted by Dr.Web. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Westend61)</span></figcaption></figure><p>Faking credentials of employers has become a more common hacking tactic in recent times, thanks in part to the prevalence of AI. Earlier this year, <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">researchers spotted a complicated social engineering scam that used deepfakes versions of CEOs to spoof Zoom calls</a> and prompt users to download troubleshooting software to fix software issues. As you may be able to guess, that troubleshooting software is in fact a virus. </p><p>As is ever the case, scams that rely on tricking the most desperate are a reliable method for bad actors. Just make sure to double and triple-check the credentials of the next employer who reaches out to you. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A killswitch has been pitched for the Linux kernel that could shut down vulnerable functions while users wait for patches ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you've ever felt anxious about the security of your machine while you wait for a solution to some vulnerability, a proposed change to the Linux kernel may interest you. <a href="https://lore.kernel.org/all/20260507070547.2268452-1-sashal@kernel.org/" target="_blank">Pitched</a> by Nvidia staff Sasha Levin, it's effectively a killswitch that could shut down some functions while waiting for a more official solution. </p><p>As spotted by <a href="https://www.theregister.com/oses/2026/05/11/linux-kernel-maintainers-pitch-emergency-killswitch-after-copyfail-and-dirty-frag-chaos/5237801" target="_blank">The Information</a>, Levin writes, "Killswitch lets a privileged operator make a chosen kernel function return a fixed value without executing its body, as a temporary mitigation for a security bug while a real fix is being prepared"</p><p>Levin notes that when a security issue becomes public, many users of Linux are technically made more vulnerable until the patch is sent out into the world. You would naturally have to stay more vigilant and use the killswitch manually when issues are made known, but it gives some extra agency over your rig. Though the main focus are the commercial users that are most vulnerable, not your everyday Linux user.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>Levine continues, "For most users, the cost of 'this socket family stops working for the day' is</p><p>much smaller than the cost of running a known vulnerable kernel until the fix lands."</p><p>This killswitch was suggested just a week after researchers caught a root exploit called "<a href="https://blog.cloudflare.com/copy-fail-linux-vulnerability-mitigation/" target="_blank">Copyfail</a>". Effectively, this exploit can escalate user privileges by replacing code, and that user can exploit escalated user privileges to attack machines. Over on the Cybersecurity Reddit, <a href="https://www.reddit.com/r/cybersecurity/comments/1t2z1xa/comment/ojrpi6o/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">one user says</a>, "That script is stupidly easy to run and gain root."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XiVwBANybbwmEEkWwKQzRf" name="linux-pc-gaming" alt="Blade 14 gaming laptop running PopOS with an Xbox Wireless controller in front of it" src="https://cdn.mos.cms.futurecdn.net/XiVwBANybbwmEEkWwKQzRf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There was a period of time in between Copyfail being spotted and patches rolling out where users were left more vulnerable than before, and this is the perfect use case for the likes of this killswitch. </p><p>It's naturally not the most elegant solution to problems, given it simply shuts down parts of the machine, but that level of granular control could be a good thing, especially in the hands of the already rather granular Linux community. </p><p>Not everyone is fully on board with it, though, and understandably so. <a href="https://www.reddit.com/r/cybersecurity/comments/1t9bn66/comment/ol10yt3/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">One Reddit user, with over 100 upvotes</a>, argues it is "Useful as a last-resort mitigation, but scary if people treat it like a patch. Easy to imagine this breaking production in creative ways." </p><p>Even more negatively, <a href="https://www.reddit.com/r/cybersecurity/comments/1t9bn66/comment/ol0wa6u/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">another argues</a> it's a "security feature that may be worse than the vulnerability."</p><p>Some believe the 'nuclear option' is far too extreme, and even when it works, it could incentivise some to simply lock down functions rather than actually patching their machine. And that's before mentioning users could shut down processes they probably shouldn't with it. It seems like the nuclear option could be good or bad, depending on who has the button.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/linux/a-killswitch-has-been-pitched-for-the-linux-kernel-that-could-shut-down-vulnerable-functions-while-users-wait-for-patches/</link>
                                                                            <description>
                            <![CDATA[ Is the 'nuclear option' sometimes the best one? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3mXAvKJDrwQ2M48jy5iJCU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/r7kH7a3UqjhfFT7a798xhm-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 11 May 2026 16:17:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Linux]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/r7kH7a3UqjhfFT7a798xhm-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Origami Linux on a Dell XPS 13 laptop]]></media:description>                                                            <media:text><![CDATA[Origami Linux on a Dell XPS 13 laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Origami Linux on a Dell XPS 13 laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/r7kH7a3UqjhfFT7a798xhm-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you've ever felt anxious about the security of your machine while you wait for a solution to some vulnerability, a proposed change to the Linux kernel may interest you. <a href="https://lore.kernel.org/all/20260507070547.2268452-1-sashal@kernel.org/" target="_blank">Pitched</a> by Nvidia staff Sasha Levin, it's effectively a killswitch that could shut down some functions while waiting for a more official solution. </p><p>As spotted by <a href="https://www.theregister.com/oses/2026/05/11/linux-kernel-maintainers-pitch-emergency-killswitch-after-copyfail-and-dirty-frag-chaos/5237801" target="_blank">The Information</a>, Levin writes, "Killswitch lets a privileged operator make a chosen kernel function return a fixed value without executing its body, as a temporary mitigation for a security bug while a real fix is being prepared"</p><p>Levin notes that when a security issue becomes public, many users of Linux are technically made more vulnerable until the patch is sent out into the world. You would naturally have to stay more vigilant and use the killswitch manually when issues are made known, but it gives some extra agency over your rig. Though the main focus are the commercial users that are most vulnerable, not your everyday Linux user.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>Levine continues, "For most users, the cost of 'this socket family stops working for the day' is</p><p>much smaller than the cost of running a known vulnerable kernel until the fix lands."</p><p>This killswitch was suggested just a week after researchers caught a root exploit called "<a href="https://blog.cloudflare.com/copy-fail-linux-vulnerability-mitigation/" target="_blank">Copyfail</a>". Effectively, this exploit can escalate user privileges by replacing code, and that user can exploit escalated user privileges to attack machines. Over on the Cybersecurity Reddit, <a href="https://www.reddit.com/r/cybersecurity/comments/1t2z1xa/comment/ojrpi6o/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">one user says</a>, "That script is stupidly easy to run and gain root."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XiVwBANybbwmEEkWwKQzRf" name="linux-pc-gaming" alt="Blade 14 gaming laptop running PopOS with an Xbox Wireless controller in front of it" src="https://cdn.mos.cms.futurecdn.net/XiVwBANybbwmEEkWwKQzRf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There was a period of time in between Copyfail being spotted and patches rolling out where users were left more vulnerable than before, and this is the perfect use case for the likes of this killswitch. </p><p>It's naturally not the most elegant solution to problems, given it simply shuts down parts of the machine, but that level of granular control could be a good thing, especially in the hands of the already rather granular Linux community. </p><p>Not everyone is fully on board with it, though, and understandably so. <a href="https://www.reddit.com/r/cybersecurity/comments/1t9bn66/comment/ol10yt3/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">One Reddit user, with over 100 upvotes</a>, argues it is "Useful as a last-resort mitigation, but scary if people treat it like a patch. Easy to imagine this breaking production in creative ways." </p><p>Even more negatively, <a href="https://www.reddit.com/r/cybersecurity/comments/1t9bn66/comment/ol0wa6u/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">another argues</a> it's a "security feature that may be worse than the vulnerability."</p><p>Some believe the 'nuclear option' is far too extreme, and even when it works, it could incentivise some to simply lock down functions rather than actually patching their machine. And that's before mentioning users could shut down processes they probably shouldn't with it. It seems like the nuclear option could be good or bad, depending on who has the button.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft reiterates that it's totally fine with Edge storing passwords in cleartext, despite security researchers' concerns ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Earlier this week, we reported that a researcher found <a href="https://www.pcgamer.com/hardware/microsoft-edge-saves-passwords-in-cleartext-by-design-and-researchers-argue-this-turns-into-a-credential-harvest-on-shared-pcs/" target="_blank">Microsoft Edge saves passwords in cleartext </a>in the memory of your machine. This means you can seemingly bypass even the likes of 2FA if you have access to someone's rig. At the time, Microsoft said this was 'by design', and it has affirmed the same statement in a correspondence with me. </p><p>I've been told, "Safety and security are foundational to Microsoft Edge. Access to browser data as described in the reported scenario would require the device to already be compromised."</p><p>This is true. Being able to get into the terminal to find the passwords on Edge does require having admin access on the machine, and that's already a severe breach of your security. However, this technique gets around many security restrictions already in place, should someone get hold of your machine, so it seems like a heightened risk for little reward. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>As pointed out by the <a href="https://isc.sans.edu/diary/32954" target="_blank">Internet Storm Center</a>, you can actually get all that information by simply creating a dump memory file of the browser via Task Manager and using strings to search through that dump file for passwords. That means someone could get access in mere moments, with not too much technical know-how. </p><p><a href="https://x.com/L1v1ng0ffTh3L4N/status/2051308329880719730" target="_blank">Tom Jøran Sønstebyseter Rønning</a>, the researcher who drew attention to this, says that Edge is the only Chromium-based browser they've tested that behaves like this.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2051406295828250963"><p lang="en" dir="ltr">❗️🚨 Microsoft Edge keeps every saved password in process memory as cleartext from the moment it launches. Microsoft's responsed when reported: "by design." All of them. Including credentials for sites you won't open this session.Researcher @L1v1ng0ffTh3L4N tested every major… pic.twitter.com/AIG4EPkPjq<a href="https://twitter.com/cantworkitout/status/2051406295828250963">May 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Microsoft tells me: "Design choices in this area involve balancing performance, usability, and security, and we continue to review it against evolving threats. Browsers access password data in memory to help users sign in quickly and securely—this is an expected feature of the application. We recommend users install the latest security updates and antivirus software to help protect against security threats." </p><p>The latest security updates and antivirus software will not protect from this specific problem. Though a user getting admin privilege might seem far-fetched, it's worth noting that many Windows users will simply use their standard account at an administrator level. This means that, should you leave it open in a cafe or even in an office space, one could theoretically nab any passwords on Edge in a short time. </p><p>As International <a href="https://x.com/IntCyberDigest/status/2051406295828250963" target="_blank">Cyber Digest points out</a>, "In shared environments, this turns into a credential harvest. On a terminal server, an attacker with admin rights can read the memory of every logged-on user process."</p><p>It's never a bad idea to brush up on your cybersecurity knowledge, but this is as good a time as any to remind you to lock down your account if you have to step away. And that's especially true if you are on Microsoft Edge. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/microsoft-reiterates-that-its-totally-fine-with-edge-storing-passwords-in-cleartext-despite-security-researchers-concerns/</link>
                                                                            <description>
                            <![CDATA[ An attacker would need access to your pc to use it but why leave it open anyways? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pT5PsDrTdxsQ2tTyodZaVQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/e7FykHnZ2ufzXBvQQ2VA6U-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 14:38:17 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/e7FykHnZ2ufzXBvQQ2VA6U-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images/Jakub Porzycki/NurPhoto]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Edge logo displayed on a phone screen and Microsoft logo displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on February 7, 2023.]]></media:description>                                                            <media:text><![CDATA[Edge logo displayed on a phone screen and Microsoft logo displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on February 7, 2023.]]></media:text>
                                <media:title type="plain"><![CDATA[Edge logo displayed on a phone screen and Microsoft logo displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on February 7, 2023.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/e7FykHnZ2ufzXBvQQ2VA6U-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Earlier this week, we reported that a researcher found <a href="https://www.pcgamer.com/hardware/microsoft-edge-saves-passwords-in-cleartext-by-design-and-researchers-argue-this-turns-into-a-credential-harvest-on-shared-pcs/" target="_blank">Microsoft Edge saves passwords in cleartext </a>in the memory of your machine. This means you can seemingly bypass even the likes of 2FA if you have access to someone's rig. At the time, Microsoft said this was 'by design', and it has affirmed the same statement in a correspondence with me. </p><p>I've been told, "Safety and security are foundational to Microsoft Edge. Access to browser data as described in the reported scenario would require the device to already be compromised."</p><p>This is true. Being able to get into the terminal to find the passwords on Edge does require having admin access on the machine, and that's already a severe breach of your security. However, this technique gets around many security restrictions already in place, should someone get hold of your machine, so it seems like a heightened risk for little reward. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W3px8O"></div>                            </div>                            <script src="https://kwizly.com/embed/W3px8O.js" async></script><p>As pointed out by the <a href="https://isc.sans.edu/diary/32954" target="_blank">Internet Storm Center</a>, you can actually get all that information by simply creating a dump memory file of the browser via Task Manager and using strings to search through that dump file for passwords. That means someone could get access in mere moments, with not too much technical know-how. </p><p><a href="https://x.com/L1v1ng0ffTh3L4N/status/2051308329880719730" target="_blank">Tom Jøran Sønstebyseter Rønning</a>, the researcher who drew attention to this, says that Edge is the only Chromium-based browser they've tested that behaves like this.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2051406295828250963"><p lang="en" dir="ltr">❗️🚨 Microsoft Edge keeps every saved password in process memory as cleartext from the moment it launches. Microsoft's responsed when reported: "by design." All of them. Including credentials for sites you won't open this session.Researcher @L1v1ng0ffTh3L4N tested every major… pic.twitter.com/AIG4EPkPjq<a href="https://twitter.com/cantworkitout/status/2051406295828250963">May 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Microsoft tells me: "Design choices in this area involve balancing performance, usability, and security, and we continue to review it against evolving threats. Browsers access password data in memory to help users sign in quickly and securely—this is an expected feature of the application. We recommend users install the latest security updates and antivirus software to help protect against security threats." </p><p>The latest security updates and antivirus software will not protect from this specific problem. Though a user getting admin privilege might seem far-fetched, it's worth noting that many Windows users will simply use their standard account at an administrator level. This means that, should you leave it open in a cafe or even in an office space, one could theoretically nab any passwords on Edge in a short time. </p><p>As International <a href="https://x.com/IntCyberDigest/status/2051406295828250963" target="_blank">Cyber Digest points out</a>, "In shared environments, this turns into a credential harvest. On a terminal server, an attacker with admin rights can read the memory of every logged-on user process."</p><p>It's never a bad idea to brush up on your cybersecurity knowledge, but this is as good a time as any to remind you to lock down your account if you have to step away. And that's especially true if you are on Microsoft Edge. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'A single 732-byte Python script can be used to obtain root on essentially all Linux distributions shipped since 2017': Time to update your kernel ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Gaming on Linux has never been better—but that doesn't mean your distros are free from security threats. Case in point is a severe vulnerability nicknamed 'Copy Fail,' which allows a local user to dig into the guts of the OS and give themselves root privileges merely by writing four bytes of controlled data into the page cache of any readable file.</p><p>The security research team at <a href="https://xint.io/blog/copy-fail-linux-distributions" target="_blank">Theori disclosed the vulnerability last Wednesday</a>, though CISA reports that threat actors have since been observed using the exploit in the wild. The security flaw has been given the designation <a href="https://www.cve.org/CVERecord?id=CVE-2026-31431" target="_blank">CVE-2026-31431</a> and marked with a high severity score of 7.8 (via <a href="https://www.bleepingcomputer.com/news/security/cisa-says-copy-fail-flaw-now-exploited-to-root-linux-systems/" target="_blank">Bleeping Computer</a>).</p><p>This is because Copy Fail could potentially leave a large number of Linux users exposed—if you've not updated your kernel in a hot minute, now would be the time. Theori puts it succinctly in its write-up, summarising, "A single 732-byte Python script can [be used to] obtain root on essentially all Linux distributions shipped since 2017."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>As such, CISA <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search=CVE-2026-31431&field_date_added_wrapper=all&field_cve=&sort_by=field_date_added&items_per_page=20&url=" target="_blank">added the vulnerability to its Known Exploited Vulnerabilities Catalog</a>. In accordance with '<a href="https://www.cisa.gov/news-events/directives/bod-22-01-reducing-significant-risk-known-exploited-vulnerabilities" target="_blank">Binding Operational Directive (BOD) 22-01</a>', this move in turn requires <a href="https://www.cisa.gov/news-events/directives/federal-civilian-executive-branch-agencies-list" target="_blank">Federal Civilian Executive Branch agencies</a> based throughout the USA to update their systems by May 15 in order to protect their systems against this active threat.</p><p>CISA warns, "This type of vulnerability is a frequent attack vector for malicious cyber actors and poses significant risks to the federal enterprise."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="moJu4CGvCX5NeT5qQNPPeX" name="ubuntu-login" alt="Ubuntu's user screen in the settings." src="https://cdn.mos.cms.futurecdn.net/moJu4CGvCX5NeT5qQNPPeX-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ubuntu)</span></figcaption></figure><p>Cybersecurity firm Theori also offers <a href="https://copy.fail/" target="_blank">a more digestible Copy Fail guide</a>. This includes the security research team's original Proof of Concept script so "defenders can verify their own systems and validate vendor patches." It's worth clarifying that this script requires local access to a machine running Linux, and that the security vulnerability is <em>not </em>an example of remote code execution.</p><p>The team found the same script works in Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1, and SUSE 16, but obviously, plenty of other Linux distros are also affected.</p><p>This news follows claims made last week by Canonical—the company that created Ubuntu—that its web infrastructure was under a "<a href="https://www.pcgamer.com/software/security/canonical-the-company-that-makes-ubuntu-linux-says-its-web-infrastructure-is-under-a-sustained-cross-border-attack/" target="_blank">sustained, cross-border attack</a>". Though the Copy Fail vulnerability was disclosed by Theori around the same time, the exploit may not be to blame. Canonical has yet to provide an update after <a href="https://x.com/ubuntu/status/2050112955132297652" target="_blank">its X post on May 1st</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/linux/a-single-732-byte-python-script-can-be-used-to-obtain-root-on-essentially-all-linux-distributions-shipped-since-2017-time-to-update-your-kernel/</link>
                                                                            <description>
                            <![CDATA[ Batten down the distros. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BY79qQzhwpsbumfRgKd3D4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YF9oxZF4B6pytrLsSXL8gQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 16:23:44 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Linux]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YF9oxZF4B6pytrLsSXL8gQ-1920-80.jpg">
                                                            <media:credit><![CDATA[JUAN BARRETO/AFP via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A view of a gentoo (Pygoscelis papua) penguin at the Paradise Bay in the Gerlache Strait -which separates the Palmer Archipelago from the Antarctic Peninsula, on January 20, 2024. Scientists and researchers from various countries are collaborating on projects during the X Antarctic Expedition aboard the Colombian research vessel &#039;ARC Simon Bolivar,&#039; designed exclusively to develop scientific projects. These initiatives involve analyzing the current condition of the Antarctic sea, studying atmospheric pressure, and monitoring the species inhabiting this region of the planet. ]]></media:description>                                                            <media:text><![CDATA[A view of a gentoo (Pygoscelis papua) penguin at the Paradise Bay in the Gerlache Strait -which separates the Palmer Archipelago from the Antarctic Peninsula, on January 20, 2024. Scientists and researchers from various countries are collaborating on projects during the X Antarctic Expedition aboard the Colombian research vessel &#039;ARC Simon Bolivar,&#039; designed exclusively to develop scientific projects. These initiatives involve analyzing the current condition of the Antarctic sea, studying atmospheric pressure, and monitoring the species inhabiting this region of the planet. ]]></media:text>
                                <media:title type="plain"><![CDATA[A view of a gentoo (Pygoscelis papua) penguin at the Paradise Bay in the Gerlache Strait -which separates the Palmer Archipelago from the Antarctic Peninsula, on January 20, 2024. Scientists and researchers from various countries are collaborating on projects during the X Antarctic Expedition aboard the Colombian research vessel &#039;ARC Simon Bolivar,&#039; designed exclusively to develop scientific projects. These initiatives involve analyzing the current condition of the Antarctic sea, studying atmospheric pressure, and monitoring the species inhabiting this region of the planet. ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YF9oxZF4B6pytrLsSXL8gQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Gaming on Linux has never been better—but that doesn't mean your distros are free from security threats. Case in point is a severe vulnerability nicknamed 'Copy Fail,' which allows a local user to dig into the guts of the OS and give themselves root privileges merely by writing four bytes of controlled data into the page cache of any readable file.</p><p>The security research team at <a href="https://xint.io/blog/copy-fail-linux-distributions" target="_blank">Theori disclosed the vulnerability last Wednesday</a>, though CISA reports that threat actors have since been observed using the exploit in the wild. The security flaw has been given the designation <a href="https://www.cve.org/CVERecord?id=CVE-2026-31431" target="_blank">CVE-2026-31431</a> and marked with a high severity score of 7.8 (via <a href="https://www.bleepingcomputer.com/news/security/cisa-says-copy-fail-flaw-now-exploited-to-root-linux-systems/" target="_blank">Bleeping Computer</a>).</p><p>This is because Copy Fail could potentially leave a large number of Linux users exposed—if you've not updated your kernel in a hot minute, now would be the time. Theori puts it succinctly in its write-up, summarising, "A single 732-byte Python script can [be used to] obtain root on essentially all Linux distributions shipped since 2017."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>As such, CISA <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search=CVE-2026-31431&field_date_added_wrapper=all&field_cve=&sort_by=field_date_added&items_per_page=20&url=" target="_blank">added the vulnerability to its Known Exploited Vulnerabilities Catalog</a>. In accordance with '<a href="https://www.cisa.gov/news-events/directives/bod-22-01-reducing-significant-risk-known-exploited-vulnerabilities" target="_blank">Binding Operational Directive (BOD) 22-01</a>', this move in turn requires <a href="https://www.cisa.gov/news-events/directives/federal-civilian-executive-branch-agencies-list" target="_blank">Federal Civilian Executive Branch agencies</a> based throughout the USA to update their systems by May 15 in order to protect their systems against this active threat.</p><p>CISA warns, "This type of vulnerability is a frequent attack vector for malicious cyber actors and poses significant risks to the federal enterprise."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="moJu4CGvCX5NeT5qQNPPeX" name="ubuntu-login" alt="Ubuntu's user screen in the settings." src="https://cdn.mos.cms.futurecdn.net/moJu4CGvCX5NeT5qQNPPeX-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ubuntu)</span></figcaption></figure><p>Cybersecurity firm Theori also offers <a href="https://copy.fail/" target="_blank">a more digestible Copy Fail guide</a>. This includes the security research team's original Proof of Concept script so "defenders can verify their own systems and validate vendor patches." It's worth clarifying that this script requires local access to a machine running Linux, and that the security vulnerability is <em>not </em>an example of remote code execution.</p><p>The team found the same script works in Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1, and SUSE 16, but obviously, plenty of other Linux distros are also affected.</p><p>This news follows claims made last week by Canonical—the company that created Ubuntu—that its web infrastructure was under a "<a href="https://www.pcgamer.com/software/security/canonical-the-company-that-makes-ubuntu-linux-says-its-web-infrastructure-is-under-a-sustained-cross-border-attack/" target="_blank">sustained, cross-border attack</a>". Though the Copy Fail vulnerability was disclosed by Theori around the same time, the exploit may not be to blame. Canonical has yet to provide an update after <a href="https://x.com/ubuntu/status/2050112955132297652" target="_blank">its X post on May 1st</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft Edge saves passwords in cleartext 'by design' and researchers argue 'this turns into a credential harvest' on shared PCs ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A Norwegian cybersecurity researcher recently spotted that passwords in Microsoft Edge are saved in memory in cleartext. Thus exposing <em>all</em> passwords to anyone that might wish to peek behind the curtain, providing they can gain access to the PC through other means, including a shared admin.</p><p>The researcher, <a href="https://x.com/L1v1ng0ffTh3L4N/status/2051308329880719730" target="_blank">Tom Jøran Sønstebyseter Rønning</a>, says, "Edge is the only Chromium‑based browser I’ve tested that behaves this way."</p><p>When Rønning reported this to Microsoft, they were reportedly told this behaviour is "by design." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Rønning clarifies that Edge decrypts every credential at startup, regardless of whether you visit a site using those credentials. This doesn't mean that one can simply access those passwords with little know-how, though. A user needs administrative access to a terminal server, which is already a major breach on a computer, but from here, "they can access the memory of all logged‑on user processes."</p><p>Importantly, one could have administrative rights on one account and use that to compromise the stored credentials for other logged-in users. Rønning posted an Edge password dumper tool on <a href="https://github.com/L1v1ng0ffTh3L4N/EdgeSavedPasswordsDumper/tree/main" target="_blank">GitHub </a>that simulates this process.</p><p>One could argue that if a user has admin rights, they can already cause havoc on a rig if they have access, and that's true. But something worth considering is that many PC users will have admin rights on their accounts as a default. And even if you have admin rights, you often have to use passwords to get access to password managers, or even use two-factor authentication. Cleartext saved passwords, as argued by <a href="https://x.com/IntCyberDigest/status/2051406295828250963" target="_blank">International Cyber Digest</a>, means "in shared environments, this turns into a credential harvest."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2051308329880719730"><p lang="en" dir="ltr">Microsoft Edge loads all your saved passwords into memory in cleartext — even when you’re not using them. pic.twitter.com/ci0ZLEYFLB<a href="https://twitter.com/cantworkitout/status/2051308329880719730">May 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Last year, researcher <a href="https://x.com/LopezLucio666/status/2051648029019799590" target="_blank">@LopezLucio666</a> reported this to Microsoft, and it said, "after careful investigation, this case has been assessed as not a vulnerability and no security and does not meet Microsoft's bar for immediate servicing."</p><p>Chrome, inversely, decrypts credentials when required, so it doesn't keep them decrypted in memory at all times. It binds decryption to an authenticated Chrome process, which means other processes on the machine can't duplicate the process of Chrome's encryption keys. </p><p>Microsoft's "<a href="https://learn.microsoft.com/en-us/deployedge/microsoft-edge-security-password-manager-security" target="_blank">password manager security</a>" web page / FAQ does briefly address this point, but argues "Even if an attacker has admin rights or offline access and can get to the locally stored data, the system is designed to prevent the attacker from getting the plaintext passwords of a user who isn't logged in. "</p><p>The research of Rønning and others suggests the system is not quite doing its job in preventing attackers from getting those plaintext passwords, so hopefully the noise around its discovery can urge Microsoft to give it another look. We have reached out to Microsoft for comment on this story. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/microsoft-edge-saves-passwords-in-cleartext-by-design-and-researchers-argue-this-turns-into-a-credential-harvest-on-shared-pcs/</link>
                                                                            <description>
                            <![CDATA[ You do need admin rights to get that far, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MsmKLt3LM2Q7PqiHbcwrZ8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/J6q9JPs7o8VPPwCEheXaQN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 15:54:41 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/J6q9JPs7o8VPPwCEheXaQN-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Edge]]></media:description>                                                            <media:text><![CDATA[Microsoft Edge]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Edge]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/J6q9JPs7o8VPPwCEheXaQN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A Norwegian cybersecurity researcher recently spotted that passwords in Microsoft Edge are saved in memory in cleartext. Thus exposing <em>all</em> passwords to anyone that might wish to peek behind the curtain, providing they can gain access to the PC through other means, including a shared admin.</p><p>The researcher, <a href="https://x.com/L1v1ng0ffTh3L4N/status/2051308329880719730" target="_blank">Tom Jøran Sønstebyseter Rønning</a>, says, "Edge is the only Chromium‑based browser I’ve tested that behaves this way."</p><p>When Rønning reported this to Microsoft, they were reportedly told this behaviour is "by design." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Rønning clarifies that Edge decrypts every credential at startup, regardless of whether you visit a site using those credentials. This doesn't mean that one can simply access those passwords with little know-how, though. A user needs administrative access to a terminal server, which is already a major breach on a computer, but from here, "they can access the memory of all logged‑on user processes."</p><p>Importantly, one could have administrative rights on one account and use that to compromise the stored credentials for other logged-in users. Rønning posted an Edge password dumper tool on <a href="https://github.com/L1v1ng0ffTh3L4N/EdgeSavedPasswordsDumper/tree/main" target="_blank">GitHub </a>that simulates this process.</p><p>One could argue that if a user has admin rights, they can already cause havoc on a rig if they have access, and that's true. But something worth considering is that many PC users will have admin rights on their accounts as a default. And even if you have admin rights, you often have to use passwords to get access to password managers, or even use two-factor authentication. Cleartext saved passwords, as argued by <a href="https://x.com/IntCyberDigest/status/2051406295828250963" target="_blank">International Cyber Digest</a>, means "in shared environments, this turns into a credential harvest."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2051308329880719730"><p lang="en" dir="ltr">Microsoft Edge loads all your saved passwords into memory in cleartext — even when you’re not using them. pic.twitter.com/ci0ZLEYFLB<a href="https://twitter.com/cantworkitout/status/2051308329880719730">May 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Last year, researcher <a href="https://x.com/LopezLucio666/status/2051648029019799590" target="_blank">@LopezLucio666</a> reported this to Microsoft, and it said, "after careful investigation, this case has been assessed as not a vulnerability and no security and does not meet Microsoft's bar for immediate servicing."</p><p>Chrome, inversely, decrypts credentials when required, so it doesn't keep them decrypted in memory at all times. It binds decryption to an authenticated Chrome process, which means other processes on the machine can't duplicate the process of Chrome's encryption keys. </p><p>Microsoft's "<a href="https://learn.microsoft.com/en-us/deployedge/microsoft-edge-security-password-manager-security" target="_blank">password manager security</a>" web page / FAQ does briefly address this point, but argues "Even if an attacker has admin rights or offline access and can get to the locally stored data, the system is designed to prevent the attacker from getting the plaintext passwords of a user who isn't logged in. "</p><p>The research of Rønning and others suggests the system is not quite doing its job in preventing attackers from getting those plaintext passwords, so hopefully the noise around its discovery can urge Microsoft to give it another look. We have reached out to Microsoft for comment on this story. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia confirms some user data may have been stolen in the Armenian GeForce Now breach, but not passwords ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Last week, hacking group ShinyHunters took to a black hat hacking forum to share that it had successfully breached Nvidia's GeForce Now and was looking to sell "millions of real user records" to the highest bidder. However, Nvidia seems to claim that's not quite the case. </p><p>As originally spotted by <a href="https://thecybersecguru.com/news/nvidia-geforce-now-data-breach/" target="_blank">The Cybersec Guru</a>, ShinyHunters claims to have "pulled their entire database straight from the backend" with users' first and last names, email addresses, dates of birth, membership status, 2FA status, and more. </p><p>The mention of 2FA status is important here, as bad actors could effectively ignore any account with extra protective measures to get a better hit rate when trying to get access to users' accounts. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>However, according to a statement given to <a href="https://videocardz.com/newz/nvidia-confirms-geforce-now-partner-security-breach-says-its-own-systems-were-not-affected" target="_blank">VideoCardz</a> from Nvidia: </p><p>"Our investigation found no impact to Nvidia-operated services. The issue is limited to systems run by a third-party GeForce Now Alliance partner based in Armenia. We are working closely with the partner to support their investigation and resolution. Impacted users will be notified by GFN.am.” </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZidW5wMAjuuxws3At4Jgo" name="C (23)" alt="The CyberSec Guru's screenshot of ShinyHunters, attempting to sell GeForce Now user data from its breach" src="https://cdn.mos.cms.futurecdn.net/ZidW5wMAjuuxws3At4Jgo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: The CyberSec Guru)</span></figcaption></figure><p>Nvidia has pointed me to <a href="https://gfn.am/hy/blog/%D5%A1%D5%B6%D5%BE%D5%BF%D5%A1%D5%B6%D5%A3%D5%B8%D6%82%D5%A9%D5%B5%D5%A1%D5%B6-%D5%B4%D5%AB%D5%BB%D5%A1%D5%A4%D5%A5%D5%BA/" target="_blank">GFN.am's statement </a>(and a translation of it), noting that hackers did not get access to passwords but may have got may have got the following: </p><ul><li>E-mail address</li><li>Telephone number, if registered through a mobile operator</li><li>Date of birth</li><li>Name and surname if logged in through Google</li><li>GFN.AM username</li></ul><p>That same statement says, "Following the discovery of the incident, the Society has taken immediate measures to eliminate the causes of unauthorized access, as well as additional organizational and technical measures have been implemented to increase the level of protection of information systems and prevent similar situations in the future."</p><p>Unless you live in Armenia and have an account through Nvidia's Armenian GeForce Now provider (GFN.am), you are unlikely to be affected by the breach, but Armenian users should keep an eye on the site and activate 2FA at a minimum.</p><p>This unfortunately does not necessarily account for users who no longer subscribe to the service, so hopefully they will get other forms of communication too. </p><p>Still, even after all of this is done, ShinyHunters claims it has a list of email addresses, so it's worth being extra vigilant of phishing and spam emails going forward. </p><p>If the name ShinyHunters is familiar to you, there's a good chance it is because, just last month, it <a href="https://www.pcgamer.com/games/grand-theft-auto/hackers-demand-ransom-from-gta6-studio-rockstar-threaten-to-leak-stolen-data/" target="_blank">demanded a ransom for Rockstar</a> in regard to data it managed to steal. </p><p>After Rockstar refused to pay the fee, ShinyHunters revealed the data, and <a href="https://www.pcgamer.com/games/rockstar-hackers-release-their-stolen-data-reveal-that-rockstar-was-right-to-not-pay-them-anything-for-it/" target="_blank">our Andy Chalk reckons Rockstar was right not to pay.</a> We don't know what processes Nvidia will implement from here, but here's hoping its providers continue to brush up on their cybersecurity. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/the-same-group-that-tried-to-ransom-rockstar-over-gta-6-says-it-has-breached-user-data-from-armenian-geforce-now-servers/</link>
                                                                            <description>
                            <![CDATA[ If you use GeForce Now in Armenia, it may be a good idea to change your password and activate 2FA. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Zn5jFEdeSAMdTxC8DZcXfM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/fw8W4TABYfc649FPtndt9Z-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 14:32:18 +0000</pubDate>                                                                                                                                <updated>Thu, 07 May 2026 14:32:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/fw8W4TABYfc649FPtndt9Z-1920-80.jpg">
                                                            <media:credit><![CDATA[NVIDIA]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[NVIDIA GeForce NOW cloud gaming platform running on multiple devices]]></media:description>                                                            <media:text><![CDATA[NVIDIA GeForce NOW cloud gaming platform running on multiple devices]]></media:text>
                                <media:title type="plain"><![CDATA[NVIDIA GeForce NOW cloud gaming platform running on multiple devices]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/fw8W4TABYfc649FPtndt9Z-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last week, hacking group ShinyHunters took to a black hat hacking forum to share that it had successfully breached Nvidia's GeForce Now and was looking to sell "millions of real user records" to the highest bidder. However, Nvidia seems to claim that's not quite the case. </p><p>As originally spotted by <a href="https://thecybersecguru.com/news/nvidia-geforce-now-data-breach/" target="_blank">The Cybersec Guru</a>, ShinyHunters claims to have "pulled their entire database straight from the backend" with users' first and last names, email addresses, dates of birth, membership status, 2FA status, and more. </p><p>The mention of 2FA status is important here, as bad actors could effectively ignore any account with extra protective measures to get a better hit rate when trying to get access to users' accounts. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>However, according to a statement given to <a href="https://videocardz.com/newz/nvidia-confirms-geforce-now-partner-security-breach-says-its-own-systems-were-not-affected" target="_blank">VideoCardz</a> from Nvidia: </p><p>"Our investigation found no impact to Nvidia-operated services. The issue is limited to systems run by a third-party GeForce Now Alliance partner based in Armenia. We are working closely with the partner to support their investigation and resolution. Impacted users will be notified by GFN.am.” </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZidW5wMAjuuxws3At4Jgo" name="C (23)" alt="The CyberSec Guru's screenshot of ShinyHunters, attempting to sell GeForce Now user data from its breach" src="https://cdn.mos.cms.futurecdn.net/ZidW5wMAjuuxws3At4Jgo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: The CyberSec Guru)</span></figcaption></figure><p>Nvidia has pointed me to <a href="https://gfn.am/hy/blog/%D5%A1%D5%B6%D5%BE%D5%BF%D5%A1%D5%B6%D5%A3%D5%B8%D6%82%D5%A9%D5%B5%D5%A1%D5%B6-%D5%B4%D5%AB%D5%BB%D5%A1%D5%A4%D5%A5%D5%BA/" target="_blank">GFN.am's statement </a>(and a translation of it), noting that hackers did not get access to passwords but may have got may have got the following: </p><ul><li>E-mail address</li><li>Telephone number, if registered through a mobile operator</li><li>Date of birth</li><li>Name and surname if logged in through Google</li><li>GFN.AM username</li></ul><p>That same statement says, "Following the discovery of the incident, the Society has taken immediate measures to eliminate the causes of unauthorized access, as well as additional organizational and technical measures have been implemented to increase the level of protection of information systems and prevent similar situations in the future."</p><p>Unless you live in Armenia and have an account through Nvidia's Armenian GeForce Now provider (GFN.am), you are unlikely to be affected by the breach, but Armenian users should keep an eye on the site and activate 2FA at a minimum.</p><p>This unfortunately does not necessarily account for users who no longer subscribe to the service, so hopefully they will get other forms of communication too. </p><p>Still, even after all of this is done, ShinyHunters claims it has a list of email addresses, so it's worth being extra vigilant of phishing and spam emails going forward. </p><p>If the name ShinyHunters is familiar to you, there's a good chance it is because, just last month, it <a href="https://www.pcgamer.com/games/grand-theft-auto/hackers-demand-ransom-from-gta6-studio-rockstar-threaten-to-leak-stolen-data/" target="_blank">demanded a ransom for Rockstar</a> in regard to data it managed to steal. </p><p>After Rockstar refused to pay the fee, ShinyHunters revealed the data, and <a href="https://www.pcgamer.com/games/rockstar-hackers-release-their-stolen-data-reveal-that-rockstar-was-right-to-not-pay-them-anything-for-it/" target="_blank">our Andy Chalk reckons Rockstar was right not to pay.</a> We don't know what processes Nvidia will implement from here, but here's hoping its providers continue to brush up on their cybersecurity. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Canonical, the company that makes Ubuntu Linux, says its web infrastructure is under a 'sustained, cross-border attack' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Canonical, the company behind the most popular Linux distro, says its web infrastructure is currently under a "sustained, cross-border attack."</p><p>Affected sites and services seem to run across the entire Ubuntu gamut, from its website to its blog and even potentially its repos. According to what user reports I could gleam from online forums—given official status pages are down—the problems have been ongoing for hours even if Canonical only officially commented on it recently. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2050112955132297652"><p lang="en" dir="ltr">Canonical’s web infrastructure is under a sustained, cross-border attack and we are working to address it.We will provide more information in our official channels as soon as we are able to.<a href="https://twitter.com/cantworkitout/status/2050112955132297652">May 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Importantly, <a href="https://www.reddit.com/r/Ubuntu/comments/1t07tb2/canonical_ubuntu_being_targeted_by_a_ddos_attack/" target="_blank">there are reports</a> of the security repo servers at security.ubuntu.com being either slow or down for many users, and indeed when I tried the website it didn't load. Repositories are how Ubuntu users get their updates, and the security repo is, of course, a very important one, as it allows users to download and install important security updates and patches. It is worth noting, however, that updates should still be able to be installed from different mirror repos, which you can choose by selecting one in the 'Download from' dropdown in the Software & Updates tool.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Even the <a href="https://status.canonical.com/" target="_blank">page that lists server statuses</a> is disabled by Canonical. It instead reiterates the same message that Canonical posted to X.</p><p>All this follows the disclosure yesterday of a recently discovered <a href="https://www.cve.org/CVERecord?id=CVE-2026-31431" target="_blank">vulnerability nicknamed "Copy Fail"</a> which cybersecurity research firm <a href="https://xint.io/blog/copy-fail-linux-distributions#what-makes-copy-fail-different-0" target="_blank">Theori, on Xint.io</a>, explains as meaning the discovery that a "single 732-byte Python script can edit a setuid binary and obtain root on essentially all Linux distributions shipped since 2017."</p><p>It's not known, however, whether this vulnerability has anything to do with the current attack. In fact, Canonical saying that it's a "sustained, cross-border attack" could imply it's not vulnerability-related attack but simply a wide-scale DDoS or something similar. If it is to do with Copy Fail, then perhaps it's only indirectly so—possibly to attempt to prevent some from installing updates that fix the vulnerability.</p><p>Cybersecurity company <a href="https://x.com/VECERTRadar/status/2050027038216536473?s=20" target="_blank">Vercert Analyzer claims</a> that hacktivist group 'The Islamic Cyber ​​Resistance in Iraq – 313 Team' has claimed responsibility for the attack(s) and has sent an extortion message to the Ubuntu team. Though we can't confirm this ourselves and will be waiting for more word from Canonical itself. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/canonical-the-company-that-makes-ubuntu-linux-says-its-web-infrastructure-is-under-a-sustained-cross-border-attack/</link>
                                                                            <description>
                            <![CDATA[ A whole range of Ubuntu sites and services seem to be affected. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UrddhdmsrRvvJ2FoUe2XZ3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/moJu4CGvCX5NeT5qQNPPeX-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 01 May 2026 08:46:17 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 10:30:42 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/moJu4CGvCX5NeT5qQNPPeX-1920-80.png">
                                                            <media:credit><![CDATA[Ubuntu]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ubuntu&#039;s user screen in the settings.]]></media:description>                                                            <media:text><![CDATA[Ubuntu&#039;s user screen in the settings.]]></media:text>
                                <media:title type="plain"><![CDATA[Ubuntu&#039;s user screen in the settings.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/moJu4CGvCX5NeT5qQNPPeX-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Canonical, the company behind the most popular Linux distro, says its web infrastructure is currently under a "sustained, cross-border attack."</p><p>Affected sites and services seem to run across the entire Ubuntu gamut, from its website to its blog and even potentially its repos. According to what user reports I could gleam from online forums—given official status pages are down—the problems have been ongoing for hours even if Canonical only officially commented on it recently. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2050112955132297652"><p lang="en" dir="ltr">Canonical’s web infrastructure is under a sustained, cross-border attack and we are working to address it.We will provide more information in our official channels as soon as we are able to.<a href="https://twitter.com/cantworkitout/status/2050112955132297652">May 1, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Importantly, <a href="https://www.reddit.com/r/Ubuntu/comments/1t07tb2/canonical_ubuntu_being_targeted_by_a_ddos_attack/" target="_blank">there are reports</a> of the security repo servers at security.ubuntu.com being either slow or down for many users, and indeed when I tried the website it didn't load. Repositories are how Ubuntu users get their updates, and the security repo is, of course, a very important one, as it allows users to download and install important security updates and patches. It is worth noting, however, that updates should still be able to be installed from different mirror repos, which you can choose by selecting one in the 'Download from' dropdown in the Software & Updates tool.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Even the <a href="https://status.canonical.com/" target="_blank">page that lists server statuses</a> is disabled by Canonical. It instead reiterates the same message that Canonical posted to X.</p><p>All this follows the disclosure yesterday of a recently discovered <a href="https://www.cve.org/CVERecord?id=CVE-2026-31431" target="_blank">vulnerability nicknamed "Copy Fail"</a> which cybersecurity research firm <a href="https://xint.io/blog/copy-fail-linux-distributions#what-makes-copy-fail-different-0" target="_blank">Theori, on Xint.io</a>, explains as meaning the discovery that a "single 732-byte Python script can edit a setuid binary and obtain root on essentially all Linux distributions shipped since 2017."</p><p>It's not known, however, whether this vulnerability has anything to do with the current attack. In fact, Canonical saying that it's a "sustained, cross-border attack" could imply it's not vulnerability-related attack but simply a wide-scale DDoS or something similar. If it is to do with Copy Fail, then perhaps it's only indirectly so—possibly to attempt to prevent some from installing updates that fix the vulnerability.</p><p>Cybersecurity company <a href="https://x.com/VECERTRadar/status/2050027038216536473?s=20" target="_blank">Vercert Analyzer claims</a> that hacktivist group 'The Islamic Cyber ​​Resistance in Iraq – 313 Team' has claimed responsibility for the attack(s) and has sent an extortion message to the Ubuntu team. Though we can't confirm this ourselves and will be waiting for more word from Canonical itself. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ State cybersecurity agencies around the world are advising extra care over home routers as they could be used in 'China-nexus' covert networks ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Just a month after the <a href="https://www.pcgamer.com/hardware/networking/the-fcc-says-foreign-routers-pose-an-unacceptable-risk-and-now-require-special-approval-to-be-sold-in-the-us/" target="_blank">FCC banned foreign consumer-grade routers</a> that lack the special permissions to be sold, the Cybersecurity and Infrastructure Security Agency (CISA), along with the National Cyber Security Centre (NCSC-UK) and other security orgs, has <a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa26-113a" target="_blank">advised users of their risks</a>. Compromised home routers, it seems, are the new cybersecurity bugbears.</p><p>This is because, as CISA puts it: "Over the past few years there has been a major shift in the tactics, techniques and procedures (TTPs) used by China-nexus cyber actors, moving away from the use of individually procured infrastructure, and towards the use of externally provisioned, large-scale networks of compromised devices."</p><p>'Covert networks' have supposedly been used "for each phase of their Cyber Kill Chains, from performing scans as part of reconnaissance, to the delivery of malware, communicating with said malware, and exfiltrating stolen data from a victim."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>The attackers will exploit vulnerable devices, including home routers, and then sit there, using them as little nodes in their broader covert network infrastructure.</p><p>"Covert networks mostly consist of compromised SOHO routers, but they also pull in any vulnerable device they can exploit at scale" says the CISA report. Examples include webcams, firewalls, and NAS devices. If they're end-of-life (EOL) and not receiving security updates, the risk increases.</p><p>"If a particular threat group could now come from one of many covert networks," CISA says, "each with potentially hundreds of thousands of endpoints, and each used by multiple threat actors, old network defense paradigms of static malicious IP block lists will be less effective."</p><p>"A description of all known covert networks in detail, including how they are constructed and how they communicate, would immediately be out of date."</p><p>Last month, the US Federal Communications Commission (FCC) added "all consumer-grade routers produced in foreign countries" to the Covered List, meaning they'll require special permission to be sold in the US. Which, of course, does nothing to solve any compromised routers that are already sitting in homes and offices around the country.  </p><p>Firmware security company <a href="https://eclypsium.com/blog/cisa-cybsersecurity-advisory-router-botnets-fcc-router-ban/" target="_blank">Eclypsium says</a> that, with this and now the CISA advisory, "the message is clear: the SOHO router supply chain is being framed as a meaningful source of cyber risk to U.S. critical infrastructure" </p><p>However, Eclypsium says that this is "only part of the picture... a router ban can reduce some risk at the edges. It does not fundamentally change the attacker playbook."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xKBnoERaRRpKUrwbaPyPHT" name="fallout hacking game.jpg" alt="Fallout hacking minigame" src="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bethesda)</span></figcaption></figure><p>The most important thing, according to Eclypsium, is "defending the enterprise edge of critical infrastructure companies", and one of the biggest gaps on this front is a "lack of device integrity visibility", meaning device trust should be "continuously re-established, not assumed." </p><p>In other words, repeated security validation for devices across its entire lifespan. We need to be "continuously validating what is already inside the organization’s walls."</p><p>CISA recommends "active hunting" for the most at-risk organisations, sniffing out IP addresses that are likely part of a covert network, and to generally act more dynamically and actively to keep defenses shored up. For organisations that aren't quite as at risk, but still somewhat so, the agency advises things like zero-trust connection policies and IP address allow lists rather than deny lists for remote work.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ngq4HJFyDVZxseMf2oNVvH" name="TP-Link_GE800_7684.jpg" alt="TP-Link Archer GE800 router" src="https://cdn.mos.cms.futurecdn.net/ngq4HJFyDVZxseMf2oNVvH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For organisations that aren't at risk, however, recommendations are broadly what should already be expected, such as understanding what connections you should be seeing and implementing multi-factor authentication.</p><p>There are also some more general recommendations, and you probably won't be surprised to see that these include keeping devices up to date and using modern systems and software. For the home user, just ensuring your device is still live and receiving security updates is, as always, the way to go. I wouldn't fancy being a larger organisation having to do much more to deal with these "covert networks",  though.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/state-cybersecurity-agencies-around-the-world-are-advising-extra-care-over-home-routers-as-they-could-be-used-in-china-nexus-covert-networks/</link>
                                                                            <description>
                            <![CDATA[ Though at least one security company thinks there are more important measures to take than those CISA suggests. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RSML5hT8KsEyt9xZWFURNU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9RrLbYubNhAfrxZDcaY7N9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 29 Apr 2026 11:09:37 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9RrLbYubNhAfrxZDcaY7N9-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A photo showing a top-down view of a TP-Link Archer BE9700 Wi-Fi 7 router.]]></media:description>                                                            <media:text><![CDATA[A photo showing a top-down view of a TP-Link Archer BE9700 Wi-Fi 7 router.]]></media:text>
                                <media:title type="plain"><![CDATA[A photo showing a top-down view of a TP-Link Archer BE9700 Wi-Fi 7 router.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9RrLbYubNhAfrxZDcaY7N9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Just a month after the <a href="https://www.pcgamer.com/hardware/networking/the-fcc-says-foreign-routers-pose-an-unacceptable-risk-and-now-require-special-approval-to-be-sold-in-the-us/" target="_blank">FCC banned foreign consumer-grade routers</a> that lack the special permissions to be sold, the Cybersecurity and Infrastructure Security Agency (CISA), along with the National Cyber Security Centre (NCSC-UK) and other security orgs, has <a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa26-113a" target="_blank">advised users of their risks</a>. Compromised home routers, it seems, are the new cybersecurity bugbears.</p><p>This is because, as CISA puts it: "Over the past few years there has been a major shift in the tactics, techniques and procedures (TTPs) used by China-nexus cyber actors, moving away from the use of individually procured infrastructure, and towards the use of externally provisioned, large-scale networks of compromised devices."</p><p>'Covert networks' have supposedly been used "for each phase of their Cyber Kill Chains, from performing scans as part of reconnaissance, to the delivery of malware, communicating with said malware, and exfiltrating stolen data from a victim."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>The attackers will exploit vulnerable devices, including home routers, and then sit there, using them as little nodes in their broader covert network infrastructure.</p><p>"Covert networks mostly consist of compromised SOHO routers, but they also pull in any vulnerable device they can exploit at scale" says the CISA report. Examples include webcams, firewalls, and NAS devices. If they're end-of-life (EOL) and not receiving security updates, the risk increases.</p><p>"If a particular threat group could now come from one of many covert networks," CISA says, "each with potentially hundreds of thousands of endpoints, and each used by multiple threat actors, old network defense paradigms of static malicious IP block lists will be less effective."</p><p>"A description of all known covert networks in detail, including how they are constructed and how they communicate, would immediately be out of date."</p><p>Last month, the US Federal Communications Commission (FCC) added "all consumer-grade routers produced in foreign countries" to the Covered List, meaning they'll require special permission to be sold in the US. Which, of course, does nothing to solve any compromised routers that are already sitting in homes and offices around the country.  </p><p>Firmware security company <a href="https://eclypsium.com/blog/cisa-cybsersecurity-advisory-router-botnets-fcc-router-ban/" target="_blank">Eclypsium says</a> that, with this and now the CISA advisory, "the message is clear: the SOHO router supply chain is being framed as a meaningful source of cyber risk to U.S. critical infrastructure" </p><p>However, Eclypsium says that this is "only part of the picture... a router ban can reduce some risk at the edges. It does not fundamentally change the attacker playbook."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xKBnoERaRRpKUrwbaPyPHT" name="fallout hacking game.jpg" alt="Fallout hacking minigame" src="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="576" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bethesda)</span></figcaption></figure><p>The most important thing, according to Eclypsium, is "defending the enterprise edge of critical infrastructure companies", and one of the biggest gaps on this front is a "lack of device integrity visibility", meaning device trust should be "continuously re-established, not assumed." </p><p>In other words, repeated security validation for devices across its entire lifespan. We need to be "continuously validating what is already inside the organization’s walls."</p><p>CISA recommends "active hunting" for the most at-risk organisations, sniffing out IP addresses that are likely part of a covert network, and to generally act more dynamically and actively to keep defenses shored up. For organisations that aren't quite as at risk, but still somewhat so, the agency advises things like zero-trust connection policies and IP address allow lists rather than deny lists for remote work.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ngq4HJFyDVZxseMf2oNVvH" name="TP-Link_GE800_7684.jpg" alt="TP-Link Archer GE800 router" src="https://cdn.mos.cms.futurecdn.net/ngq4HJFyDVZxseMf2oNVvH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For organisations that aren't at risk, however, recommendations are broadly what should already be expected, such as understanding what connections you should be seeing and implementing multi-factor authentication.</p><p>There are also some more general recommendations, and you probably won't be surprised to see that these include keeping devices up to date and using modern systems and software. For the home user, just ensuring your device is still live and receiving security updates is, as always, the way to go. I wouldn't fancy being a larger organisation having to do much more to deal with these "covert networks",  though.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Someone has apparently snaffled up 31 WordPress plugins and wedged a backdoor in each one ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Rather than juggling way too many tabs in Chrome, I sweep them all into <a href="https://chromewebstore.google.com/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=en&pli=1">OneTab</a> and promptly forget about them—extensions and plugins are great. If I still had my own blog, I'd probably use them for all sorts of things, but third-party platform add-ons also represent a security concern.</p><p>It's important to double-check the provenance of anything you're considering adding, though I suspect few attackers will be quite as ambitious as the person who bought 30 WordPress plugins and then installed backdoors in all of them.</p><p>That's according to<a href="https://anchor.host/someone-bought-30-wordpress-plugins-and-planted-a-backdoor-in-all-of-them/" target="_blank"> Austin Ginder</a>, the founder of Anchor Hosting. He began to investigate after noticing the previously dormant Countdown Timer Ultimate had begun pushing out malicious code. A number of the affected plugins have since been taken offline (via <a href="https://techcrunch.com/2026/04/14/someone-planted-backdoors-in-dozens-of-wordpress-plugins-used-in-thousands-of-websites/" target="_blank">TechCrunch</a>).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>Countdown Timer Ultimate was originally built by a team called Essential Plugin. Due to a decline in revenue, the founders sold their entire business on Flippa, a private marketplace for buying and selling online outfits like Essential Plugin. <a href="https://flippa.com/blog/how-to-sell-a-wordpress-plugin-business-for-6-figures-on-flippa/" target="_blank">The platform itself shared a case study on the six-figure sale in 2025</a>. According to Ginder's timeline, the new owner allegedly planted the backdoor barely a month after that glowing post went up on Flippa.</p><p>The backdoor wasn't weaponised until about April 5, 2026, according to the blog, with the WordPress plugins team moving to shut down all 31 of Essential Plugin's offerings. Quick action is definitely welcome in a situation like this, but Ginder criticises the fact that no users would have suspected anything was up until the attack began.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tv5e8eVbT7uQcLL7Dtt3bZ" name="hacking-omg.jpg" alt="Person typing on a laptop with red and blue lighting" src="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Westend61)</span></figcaption></figure><p>He writes, "WordPress.org has no mechanism to flag or review plugin ownership transfers. There is no 'change of control' notification to users. No additional code review triggered by a new committer."</p><p>Worse still, Ginder reports this sort of hijack is not uncommon. Ginder shares one story from 2017 where someone "purchased the Display Widgets plugin (200,000 installs) for $15,000 and injected payday loan spam." He also shares another story from earlier this very month, where someone launched <a href="https://anchor.host/how-i-caught-a-wordpress-plugin-supply-chain-attack/" target="_blank">a supply chain attack via the previously trusted Widget Logic WordPress plugin</a>.</p><p>For context, the <a href="https://essentialplugin.com/wordpress-development-company/" target="_blank">Essential plugin team's website</a> is still live, touting "15,000+ Global Happy Customers." That's a lot of users who could have been potentially affected—how many of them would have no idea until either WordPress took the plugins down, or they independently stumbled across news coverage of the polluted plugins themselves? It's hard not to see Ginder's argument.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/someone-has-apparently-snaffled-up-31-wordpress-plugins-and-wedged-a-backdoor-in-each-one/</link>
                                                                            <description>
                            <![CDATA[ Don't blog without the proper protections in place, folks. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QQLyxwFawMzzoDoEpjme9j</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Apr 2026 16:28:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg">
                                                            <media:credit><![CDATA[Chris Ratcliffe/Bloomberg via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg]]></media:description>                                                            <media:text><![CDATA[Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg]]></media:text>
                                <media:title type="plain"><![CDATA[Computer code and text displayed on computer screens. Photographer: Chris Ratcliffe/Bloomberg]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SM8hnsh8PPqNMXUJSPvVmW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Rather than juggling way too many tabs in Chrome, I sweep them all into <a href="https://chromewebstore.google.com/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=en&pli=1">OneTab</a> and promptly forget about them—extensions and plugins are great. If I still had my own blog, I'd probably use them for all sorts of things, but third-party platform add-ons also represent a security concern.</p><p>It's important to double-check the provenance of anything you're considering adding, though I suspect few attackers will be quite as ambitious as the person who bought 30 WordPress plugins and then installed backdoors in all of them.</p><p>That's according to<a href="https://anchor.host/someone-bought-30-wordpress-plugins-and-planted-a-backdoor-in-all-of-them/" target="_blank"> Austin Ginder</a>, the founder of Anchor Hosting. He began to investigate after noticing the previously dormant Countdown Timer Ultimate had begun pushing out malicious code. A number of the affected plugins have since been taken offline (via <a href="https://techcrunch.com/2026/04/14/someone-planted-backdoors-in-dozens-of-wordpress-plugins-used-in-thousands-of-websites/" target="_blank">TechCrunch</a>).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>Countdown Timer Ultimate was originally built by a team called Essential Plugin. Due to a decline in revenue, the founders sold their entire business on Flippa, a private marketplace for buying and selling online outfits like Essential Plugin. <a href="https://flippa.com/blog/how-to-sell-a-wordpress-plugin-business-for-6-figures-on-flippa/" target="_blank">The platform itself shared a case study on the six-figure sale in 2025</a>. According to Ginder's timeline, the new owner allegedly planted the backdoor barely a month after that glowing post went up on Flippa.</p><p>The backdoor wasn't weaponised until about April 5, 2026, according to the blog, with the WordPress plugins team moving to shut down all 31 of Essential Plugin's offerings. Quick action is definitely welcome in a situation like this, but Ginder criticises the fact that no users would have suspected anything was up until the attack began.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tv5e8eVbT7uQcLL7Dtt3bZ" name="hacking-omg.jpg" alt="Person typing on a laptop with red and blue lighting" src="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Westend61)</span></figcaption></figure><p>He writes, "WordPress.org has no mechanism to flag or review plugin ownership transfers. There is no 'change of control' notification to users. No additional code review triggered by a new committer."</p><p>Worse still, Ginder reports this sort of hijack is not uncommon. Ginder shares one story from 2017 where someone "purchased the Display Widgets plugin (200,000 installs) for $15,000 and injected payday loan spam." He also shares another story from earlier this very month, where someone launched <a href="https://anchor.host/how-i-caught-a-wordpress-plugin-supply-chain-attack/" target="_blank">a supply chain attack via the previously trusted Widget Logic WordPress plugin</a>.</p><p>For context, the <a href="https://essentialplugin.com/wordpress-development-company/" target="_blank">Essential plugin team's website</a> is still live, touting "15,000+ Global Happy Customers." That's a lot of users who could have been potentially affected—how many of them would have no idea until either WordPress took the plugins down, or they independently stumbled across news coverage of the polluted plugins themselves? It's hard not to see Ginder's argument.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Defenders finally have a chance to win, decisively': Firefox CTO raves about Claude Mythos' bug hunting capabilities after it finds 271 vulnerabilities ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When you create anything, whether that be software or a short story about two characters that never meet, there's no telling what a fresh pair of eyes will bring to the work. Once a work breaches containment, your adoring audience may reward you with a short work of fanfiction—or make you kick yourself by immediately sniffing out a zero-day exploit. Well, Firefox claims that thanks to AI, 'the zero-days are numbered.'</p><p><a href="https://blog.mozilla.org/en/firefox/hardening-firefox-anthropic-red-team/" target="_blank">Firefox teamed up with Anthropic’s Frontier Red Team</a> earlier this year to leverage AI tools in finding and securing zero-day exploits before they have a chance to be unearthed in the real world. As part of that collaboration, Mozilla recently <a href="https://blog.mozilla.org/en/firefox/ai-security-zero-day-vulnerabilities/" target="_blank">applied an early version of Claude Mythos to the Firefox bug hunt</a>.</p><p>The bot found 271 vulnerabilities, which the browser team were then able to fix and ship as part of Firefox 150. Coupled with reports of Claude Mythos finding thousands of vulnerabilities in '<a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">every major operating system and every major web browser, along with a range of other important pieces of software</a>' earlier this month, this could be a security game-changer.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>Firefox CTO Bobby Holley is quick to note that none of the bugs found by Claude Mythos "couldn’t have been found by an elite human researcher," but also highlights that much of security is a battle fought "to a draw."</p><p>"Vendors of critical internet-exposed software like Firefox take security extremely seriously and have teams of people who get out of bed every morning thinking about how to keep users safe," he explains, "Nevertheless, we’ve all long quietly acknowledged that bringing exploits to zero was an unrealistic goal."</p><p>This is largely because it can be so time-consuming for even a team of 'elite human researchers' to pore over source code and look for exploits. Holley reflects on the sense of 'vertigo' these sorts of AI-assisted findings brought up for the browser team, sharing, "Just one such bug would have been red-alert in 2025, and so many at once makes you stop to wonder whether it’s even possible to keep up."</p><p>But ultimately, Holley is hopeful for the future of security supported by AI assistance: "Our work isn’t finished, but we’ve turned the corner and can glimpse a future much better than just keeping up. Defenders finally have a chance to win, decisively."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/browsers/defenders-finally-have-a-chance-to-win-decisively-firefox-cto-raves-about-claude-mythos-bug-hunting-capabilities-after-it-finds-271-vulnerabilities/</link>
                                                                            <description>
                            <![CDATA[ That's one heck of a fly swatter, Anthropic. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cuD6FmgYG4DJJ5QKvpt5q4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JFixp63yhVS9YLjvmczgBd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Apr 2026 10:41:29 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Browsers]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JFixp63yhVS9YLjvmczgBd-1920-80.jpg">
                                                            <media:credit><![CDATA[Mozilla]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mozilla Firefox logo on gradient background]]></media:description>                                                            <media:text><![CDATA[Mozilla Firefox logo on gradient background]]></media:text>
                                <media:title type="plain"><![CDATA[Mozilla Firefox logo on gradient background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JFixp63yhVS9YLjvmczgBd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When you create anything, whether that be software or a short story about two characters that never meet, there's no telling what a fresh pair of eyes will bring to the work. Once a work breaches containment, your adoring audience may reward you with a short work of fanfiction—or make you kick yourself by immediately sniffing out a zero-day exploit. Well, Firefox claims that thanks to AI, 'the zero-days are numbered.'</p><p><a href="https://blog.mozilla.org/en/firefox/hardening-firefox-anthropic-red-team/" target="_blank">Firefox teamed up with Anthropic’s Frontier Red Team</a> earlier this year to leverage AI tools in finding and securing zero-day exploits before they have a chance to be unearthed in the real world. As part of that collaboration, Mozilla recently <a href="https://blog.mozilla.org/en/firefox/ai-security-zero-day-vulnerabilities/" target="_blank">applied an early version of Claude Mythos to the Firefox bug hunt</a>.</p><p>The bot found 271 vulnerabilities, which the browser team were then able to fix and ship as part of Firefox 150. Coupled with reports of Claude Mythos finding thousands of vulnerabilities in '<a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">every major operating system and every major web browser, along with a range of other important pieces of software</a>' earlier this month, this could be a security game-changer.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>Firefox CTO Bobby Holley is quick to note that none of the bugs found by Claude Mythos "couldn’t have been found by an elite human researcher," but also highlights that much of security is a battle fought "to a draw."</p><p>"Vendors of critical internet-exposed software like Firefox take security extremely seriously and have teams of people who get out of bed every morning thinking about how to keep users safe," he explains, "Nevertheless, we’ve all long quietly acknowledged that bringing exploits to zero was an unrealistic goal."</p><p>This is largely because it can be so time-consuming for even a team of 'elite human researchers' to pore over source code and look for exploits. Holley reflects on the sense of 'vertigo' these sorts of AI-assisted findings brought up for the browser team, sharing, "Just one such bug would have been red-alert in 2025, and so many at once makes you stop to wonder whether it’s even possible to keep up."</p><p>But ultimately, Holley is hopeful for the future of security supported by AI assistance: "Our work isn’t finished, but we’ve turned the corner and can glimpse a future much better than just keeping up. Defenders finally have a chance to win, decisively."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Security researchers hacked the demo version of the European Commission's new age verification app in less than two minutes ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I've said it before, and I'll say it again: I'm really not keen on handing over any of my personally identifying details to a third-party age verification vendor. Whether it be a scan of my face, my official ID, or my <em>payment card, </em>I'd rather not engage with yet another potential point of failure for my data to leak out from. Unfortunately, we are rapidly approaching a widely age-gated internet.</p><p>As such, the European Commission has been working on developing an app to use across online services in EU member states. EC president Ursula von der Leyen <a href="https://ec.europa.eu/commission/presscorner/detail/en/statement_26_817" target="_blank">recently stated</a> that this age verification app is "technically ready" and will "soon [be] available for citizens to use." <a href="https://github.com/eu-digital-identity-wallet/av-app-android-wallet-ui" target="_blank">A demo of the Android app is available via GitHub</a>—though security researchers claim they were able to bypass the security practices of this version in under two minutes (via <a href="https://www.sofx.com/eu-declared-age-app-ready-while-github-flagged-it-unfit-then-hackers-bypassed-it-in-2-minutes/" target="_blank">SOFX</a>).</p><p>UK-based security consultant <a href="https://x.com/Paul_Reviews/status/2044723123287666921" target="_blank">Paul Moore took to X to demonstrate</a> just how easy it is to steal the contents of someone else's 'identity wallet' and present it as your own. Moore tagged von der Leyen in his post, before writing, "This product will be the catalyst for an enormous breach at some point. It's just a matter of time."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>The app currently requires users to input a six-digit PIN. However, Moore's screen recording demonstrates you can easily scrub a user's previous PIN from the app’s eudi-wallet.xml configuration file, set a fresh PIN via the app, and then use that to gain access to the verified credentials saved to the device. This bypass could be used by bad actors—or the youngsters in your life who know how to unlock your phone and possess enough technical know-how to find the .xml in question.</p><p>The European Commission <a href="https://www.politico.eu/article/eu-brussels-launched-age-checking-app-hackers-say-took-them-2-minutes-break-it/" target="_blank">clarified to Politico last week</a> that this exploit was present in the demo version, but that the bypass would not be present in the full release. Digital spokesperson Thomas Regnier introduced some wiggle room, explaining, "When we say it's a final version, it's still a demo version...the code will be constantly updated and improved."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pdDL8Uyn7FY6vpFU6Q55nB" name="GTA Online Age Verification" alt="Grand Theft Auto Online" src="https://cdn.mos.cms.futurecdn.net/pdDL8Uyn7FY6vpFU6Q55nB-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Rockstar Games)</span></figcaption></figure><p>The whole episode follows <a href="https://www.pcgamer.com/hardware/scientists-warn-against-crappy-age-verification-if-implemented-without-careful-consideration-the-new-regulation-might-cause-more-harm-than-good/" target="_blank">a joint statement from 400 security researchers</a> sent to the European Commission last month. This statement raised a number of concerns, including how easy it is to bypass existing age estimation services (our James <a href="https://www.pcgamer.com/hardware/brits-can-get-around-discords-age-verification-thanks-to-death-strandings-photo-mode-bypassing-the-measure-introduced-with-the-uks-online-safety-act-we-tried-it-and-it-works-thanks-kojima/" target="_blank">has written about two</a> <a href="https://www.pcgamer.com/hardware/someone-has-already-made-a-free-in-browser-3d-model-to-bypass-discord-age-verification-that-works-on-any-potato-computer/" target="_blank">different methods</a>).</p><p>Still, chief spokesperson Paula Pinho stood by President von der Leyen's original statement, telling reporters, "Yes, [the final version of the app] is ready. Maybe we can add, 'and it can always be improved'." So it often goes in software development—but given the app in question is the result of <a href="https://digital-strategy.ec.europa.eu/en/funding/call-tenders-development-consultancy-and-support-age-verification-solution" target="_blank">a €4 million tender</a>, that's going to be little comfort to grumpy guts like me or folks who genuinely just want to keep their kids safe online.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/security-researchers-hacked-the-demo-version-of-the-european-commissions-new-age-verification-app-in-less-than-two-minutes/</link>
                                                                            <description>
                            <![CDATA[ Still a far cry from 'actually ready'. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qUASGKDjc8FhtyK2icyJbG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Apr 2026 14:24:43 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-1920-80.jpg">
                                                            <media:credit><![CDATA[boonchai wedmakawand via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens.]]></media:description>                                                            <media:text><![CDATA[A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens.]]></media:text>
                                <media:title type="plain"><![CDATA[A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've said it before, and I'll say it again: I'm really not keen on handing over any of my personally identifying details to a third-party age verification vendor. Whether it be a scan of my face, my official ID, or my <em>payment card, </em>I'd rather not engage with yet another potential point of failure for my data to leak out from. Unfortunately, we are rapidly approaching a widely age-gated internet.</p><p>As such, the European Commission has been working on developing an app to use across online services in EU member states. EC president Ursula von der Leyen <a href="https://ec.europa.eu/commission/presscorner/detail/en/statement_26_817" target="_blank">recently stated</a> that this age verification app is "technically ready" and will "soon [be] available for citizens to use." <a href="https://github.com/eu-digital-identity-wallet/av-app-android-wallet-ui" target="_blank">A demo of the Android app is available via GitHub</a>—though security researchers claim they were able to bypass the security practices of this version in under two minutes (via <a href="https://www.sofx.com/eu-declared-age-app-ready-while-github-flagged-it-unfit-then-hackers-bypassed-it-in-2-minutes/" target="_blank">SOFX</a>).</p><p>UK-based security consultant <a href="https://x.com/Paul_Reviews/status/2044723123287666921" target="_blank">Paul Moore took to X to demonstrate</a> just how easy it is to steal the contents of someone else's 'identity wallet' and present it as your own. Moore tagged von der Leyen in his post, before writing, "This product will be the catalyst for an enormous breach at some point. It's just a matter of time."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>The app currently requires users to input a six-digit PIN. However, Moore's screen recording demonstrates you can easily scrub a user's previous PIN from the app’s eudi-wallet.xml configuration file, set a fresh PIN via the app, and then use that to gain access to the verified credentials saved to the device. This bypass could be used by bad actors—or the youngsters in your life who know how to unlock your phone and possess enough technical know-how to find the .xml in question.</p><p>The European Commission <a href="https://www.politico.eu/article/eu-brussels-launched-age-checking-app-hackers-say-took-them-2-minutes-break-it/" target="_blank">clarified to Politico last week</a> that this exploit was present in the demo version, but that the bypass would not be present in the full release. Digital spokesperson Thomas Regnier introduced some wiggle room, explaining, "When we say it's a final version, it's still a demo version...the code will be constantly updated and improved."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pdDL8Uyn7FY6vpFU6Q55nB" name="GTA Online Age Verification" alt="Grand Theft Auto Online" src="https://cdn.mos.cms.futurecdn.net/pdDL8Uyn7FY6vpFU6Q55nB-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Rockstar Games)</span></figcaption></figure><p>The whole episode follows <a href="https://www.pcgamer.com/hardware/scientists-warn-against-crappy-age-verification-if-implemented-without-careful-consideration-the-new-regulation-might-cause-more-harm-than-good/" target="_blank">a joint statement from 400 security researchers</a> sent to the European Commission last month. This statement raised a number of concerns, including how easy it is to bypass existing age estimation services (our James <a href="https://www.pcgamer.com/hardware/brits-can-get-around-discords-age-verification-thanks-to-death-strandings-photo-mode-bypassing-the-measure-introduced-with-the-uks-online-safety-act-we-tried-it-and-it-works-thanks-kojima/" target="_blank">has written about two</a> <a href="https://www.pcgamer.com/hardware/someone-has-already-made-a-free-in-browser-3d-model-to-bypass-discord-age-verification-that-works-on-any-potato-computer/" target="_blank">different methods</a>).</p><p>Still, chief spokesperson Paula Pinho stood by President von der Leyen's original statement, telling reporters, "Yes, [the final version of the app] is ready. Maybe we can add, 'and it can always be improved'." So it often goes in software development—but given the app in question is the result of <a href="https://digital-strategy.ec.europa.eu/en/funding/call-tenders-development-consultancy-and-support-age-verification-solution" target="_blank">a €4 million tender</a>, that's going to be little comfort to grumpy guts like me or folks who genuinely just want to keep their kids safe online.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A 17-year-old Excel vulnerability is currently being exploited by threat actors, and it's been flagged by the US' cyber defence agency ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Though the world of hacking is only getting more and more advanced, some exploits have seemingly stuck around unchanged for years. Originally filed back in February 2009, one curious vulnerability has caught the eyes of the US government. </p><p>Published in <a href="https://www.cisa.gov/news-events/alerts/2026/04/14/cisa-adds-two-known-exploited-vulnerabilities-catalog" target="_blank">a report </a>this week by the American Cybersecurity and Infrastructure Security Agency (CISA), a 17-year-old exploit in Microsoft Office has been flagged as being actively exploited by threat actors (via <a href="https://www.theregister.com/2026/04/15/excel_exploit/?td=rt-3a" target="_blank">The Register</a>). The specifics on how to do this exploit have not been shared, but the record was last updated in 2018, implying some new information was found almost a decade after it was first spotted. </p><p>It seemingly allows remote attacks to execute code via a specifically crafted Excel document. In its first outing, this attack was used to install a Trojan dropper on a device, which would then inject further malware. The ability to upload nefarious software remotely is naturally a rather dangerous exploit. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>This exploit has a severity score of 8.8, which is very high. However, that does not automatically mean it was super popular or common: the rating is a measure of how severe the consequences of an exploit are, paired with factors like ease-of-use. But even so, a score this high means bad news. </p><p>The reason it was added to CISA's list of vulnerabilities is that it is now considered active, which implies some threat actor, or group of threat actors, has managed to use the same method today. Microsoft did patch the problem back when it first showed up, but CISA has given it two weeks to patch it once more. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2044048527966216215"><p lang="en" dir="ltr">📢 Stay informed on the latest vulnerabilities with @CISAgov's Vulnerability Bulletin & gain valuable insights into emerging threats. 💡Check out the latest updates: https://t.co/uawsKV3yTD #Cybersecurity #InfoSec #VulnerabilityManagement pic.twitter.com/ue6PtW8sDd<a href="https://twitter.com/cantworkitout/status/2044048527966216215">April 14, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Alongside this, CISA has also flagged up a brand new exploit which uses Microsoft Office SharePoint to "perform spoofing over a network." This one is less severe, at a score of 6.5, though it is considered active and is even automatable. This means the likes of AI agents can do this exploit en masse. </p><p>AI is a major proponent of the growth of cybercrimes, with it being a focal point of the nearly <a href="https://www.pcgamer.com/software/security/us-victims-lost-nearly-usd21-billion-to-cybercrime-last-year-says-fbi-with-crypto-and-ai-complaints-among-the-costliest/" target="_blank">$21 billion lost to cybercrime scams last year.</a> Not only have we seen AI used in the research of scams and the automation of them, but we've also seen some rather devious schemes with it, including <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">deepfaking CEOs to prompt users to troubleshoot,</a> only for the troubleshooting program to contain nasty files.</p><p>Just because the world is adopting AI into every approach doesn't mean that threat actors won't pull out the classics when they seemingly work so well. Some things never change. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/a-17-year-old-excel-vulnerability-is-currently-being-exploited-by-threat-actors-and-its-been-flagged-by-the-us-cyber-defence-agency/</link>
                                                                            <description>
                            <![CDATA[ The little exploit that could. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mSSvZ3mWsu9XVz4A4qwX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 16 Apr 2026 14:16:13 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg">
                                                            <media:credit><![CDATA[Bethesda]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Fallout hacking minigame]]></media:description>                                                            <media:text><![CDATA[Fallout hacking minigame]]></media:text>
                                <media:title type="plain"><![CDATA[Fallout hacking minigame]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xKBnoERaRRpKUrwbaPyPHT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Though the world of hacking is only getting more and more advanced, some exploits have seemingly stuck around unchanged for years. Originally filed back in February 2009, one curious vulnerability has caught the eyes of the US government. </p><p>Published in <a href="https://www.cisa.gov/news-events/alerts/2026/04/14/cisa-adds-two-known-exploited-vulnerabilities-catalog" target="_blank">a report </a>this week by the American Cybersecurity and Infrastructure Security Agency (CISA), a 17-year-old exploit in Microsoft Office has been flagged as being actively exploited by threat actors (via <a href="https://www.theregister.com/2026/04/15/excel_exploit/?td=rt-3a" target="_blank">The Register</a>). The specifics on how to do this exploit have not been shared, but the record was last updated in 2018, implying some new information was found almost a decade after it was first spotted. </p><p>It seemingly allows remote attacks to execute code via a specifically crafted Excel document. In its first outing, this attack was used to install a Trojan dropper on a device, which would then inject further malware. The ability to upload nefarious software remotely is naturally a rather dangerous exploit. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>This exploit has a severity score of 8.8, which is very high. However, that does not automatically mean it was super popular or common: the rating is a measure of how severe the consequences of an exploit are, paired with factors like ease-of-use. But even so, a score this high means bad news. </p><p>The reason it was added to CISA's list of vulnerabilities is that it is now considered active, which implies some threat actor, or group of threat actors, has managed to use the same method today. Microsoft did patch the problem back when it first showed up, but CISA has given it two weeks to patch it once more. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2044048527966216215"><p lang="en" dir="ltr">📢 Stay informed on the latest vulnerabilities with @CISAgov's Vulnerability Bulletin & gain valuable insights into emerging threats. 💡Check out the latest updates: https://t.co/uawsKV3yTD #Cybersecurity #InfoSec #VulnerabilityManagement pic.twitter.com/ue6PtW8sDd<a href="https://twitter.com/cantworkitout/status/2044048527966216215">April 14, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Alongside this, CISA has also flagged up a brand new exploit which uses Microsoft Office SharePoint to "perform spoofing over a network." This one is less severe, at a score of 6.5, though it is considered active and is even automatable. This means the likes of AI agents can do this exploit en masse. </p><p>AI is a major proponent of the growth of cybercrimes, with it being a focal point of the nearly <a href="https://www.pcgamer.com/software/security/us-victims-lost-nearly-usd21-billion-to-cybercrime-last-year-says-fbi-with-crypto-and-ai-complaints-among-the-costliest/" target="_blank">$21 billion lost to cybercrime scams last year.</a> Not only have we seen AI used in the research of scams and the automation of them, but we've also seen some rather devious schemes with it, including <a href="https://www.pcgamer.com/software/ai/ai-assisted-hacking-group-hits-targets-with-a-complicated-social-engineering-scam-that-involves-deepfaked-ceos-spoofed-zoom-calls-and-a-malicious-troubleshooting-program/" target="_blank">deepfaking CEOs to prompt users to troubleshoot,</a> only for the troubleshooting program to contain nasty files.</p><p>Just because the world is adopting AI into every approach doesn't mean that threat actors won't pull out the classics when they seemingly work so well. Some things never change. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Seems like opting out of website cookies doesn't actually guarantee you are opted out of website cookies ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you click on almost any major website, you'll surely have notice that you get asked about cookies. These files store your preferences and help companies track your data. However, it turns out that even if you decline to use them, there's a good chance you're still being tracked.</p><p>A recent audit from <a href="https://globalprivacyaudit.org/2026/california" target="_blank">webXray</a> has found that "major technology companies simply ignore globally defined opt-out signals" (via <a href="https://www.techspot.com/news/112073-clicking-reject-cookies-might-not-actually-do-anything.html" target="_blank">TechSpot</a>). The report states that it observed 194 online advertising services ignore standard opt-out services, plus cookie banners certified by Google that reportedly "fail to prevent Google from setting cookies after users opt out with a globally standard signal."</p><p>webXray studied 242 ad tech vendors in total, which means an 80% failure rate to adequately opt-out users, according to the report. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>The analysis shows that 55% of sites set ad cookies despite users opting out, and 78% of cookie banners failed to protect their users. It argues that companies' liability exposure racks up to a whopping $5.8 Billion.</p><p>webXray has examined Google's own cookie system and reckons that when it sends an encoded cookie, it then reportedly responds by creating a new advertising cookie named IDE. The report says, "This non-compliance is easy to spot, hiding in plain sight," and makes the case that Google should instead respond to encrypted cookies with a 451 code, stating "unavailable for legal reasons." webXray states that Google failed to adequately opt-out users in 86% of cookies, with over 11,000 cookies set, despite user preferences. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2044030354852323436"><p lang="en" dir="ltr">Today we release our California Privacy Audit. Top: Google, Meta, and Microsoft set cookies despite presence of Global Privacy Control opt-outs, 100% of Google-Certified Cookie Banners failed to provide full protection, with major vendors failing:https://t.co/zJKHaQ42vg<a href="https://twitter.com/cantworkitout/status/2044030354852323436">April 14, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Microsoft and Meta are also highlighted in the report. It's claimed that both companies fail to adequately respect cookie opt-out requests. It states Microsoft creates a new MUID cookie, even when sent an encoded one, and reports it failing to opt-out users in 50% of attempts. This means that over 7,500 cookies were sent, despite opting out. </p><p>The report argues Meta's Pixel tracking code fails to check for opt-out signals, with it getting a 59% opt-out failure rate in testing. That works out to over 1,200 cookies set despite opting out. </p><p>webXray concludes that cookies are now a "legal minefield that puts users at risk", and one can hope the worry of legal fees and other penalties will eventually correct the problem. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/seems-like-opting-out-of-website-cookies-doesnt-actually-guarantee-you-are-opted-out-of-website-cookies/</link>
                                                                            <description>
                            <![CDATA[ That's not very tasty. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">YvfRUkDs7wAeyo8ZqNrsn7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bYZdn47Fa7mFXjEdNrYk5J-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Apr 2026 15:28:56 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bYZdn47Fa7mFXjEdNrYk5J-1920-80.jpg">
                                                            <media:credit><![CDATA[DashNet]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[cookie clicker]]></media:description>                                                            <media:text><![CDATA[cookie clicker]]></media:text>
                                <media:title type="plain"><![CDATA[cookie clicker]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bYZdn47Fa7mFXjEdNrYk5J-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you click on almost any major website, you'll surely have notice that you get asked about cookies. These files store your preferences and help companies track your data. However, it turns out that even if you decline to use them, there's a good chance you're still being tracked.</p><p>A recent audit from <a href="https://globalprivacyaudit.org/2026/california" target="_blank">webXray</a> has found that "major technology companies simply ignore globally defined opt-out signals" (via <a href="https://www.techspot.com/news/112073-clicking-reject-cookies-might-not-actually-do-anything.html" target="_blank">TechSpot</a>). The report states that it observed 194 online advertising services ignore standard opt-out services, plus cookie banners certified by Google that reportedly "fail to prevent Google from setting cookies after users opt out with a globally standard signal."</p><p>webXray studied 242 ad tech vendors in total, which means an 80% failure rate to adequately opt-out users, according to the report. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>The analysis shows that 55% of sites set ad cookies despite users opting out, and 78% of cookie banners failed to protect their users. It argues that companies' liability exposure racks up to a whopping $5.8 Billion.</p><p>webXray has examined Google's own cookie system and reckons that when it sends an encoded cookie, it then reportedly responds by creating a new advertising cookie named IDE. The report says, "This non-compliance is easy to spot, hiding in plain sight," and makes the case that Google should instead respond to encrypted cookies with a 451 code, stating "unavailable for legal reasons." webXray states that Google failed to adequately opt-out users in 86% of cookies, with over 11,000 cookies set, despite user preferences. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2044030354852323436"><p lang="en" dir="ltr">Today we release our California Privacy Audit. Top: Google, Meta, and Microsoft set cookies despite presence of Global Privacy Control opt-outs, 100% of Google-Certified Cookie Banners failed to provide full protection, with major vendors failing:https://t.co/zJKHaQ42vg<a href="https://twitter.com/cantworkitout/status/2044030354852323436">April 14, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Microsoft and Meta are also highlighted in the report. It's claimed that both companies fail to adequately respect cookie opt-out requests. It states Microsoft creates a new MUID cookie, even when sent an encoded one, and reports it failing to opt-out users in 50% of attempts. This means that over 7,500 cookies were sent, despite opting out. </p><p>The report argues Meta's Pixel tracking code fails to check for opt-out signals, with it getting a 59% opt-out failure rate in testing. That works out to over 1,200 cookies set despite opting out. </p><p>webXray concludes that cookies are now a "legal minefield that puts users at risk", and one can hope the worry of legal fees and other penalties will eventually correct the problem. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Cybersecurity experts raise the alarm over Windows Recall again: 'The vault door is titanium. The wall next to it is drywall' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Remember Windows Recall? The AI feature that essentially screenshots nearly everything you do on your PC in order to present users with a timeline of activity they can rewind back through? It was meant to be available on Copilot+ AI PCs from June 2024 but got, ahem, <em>recalled </em>a number of times amid cybersecurity concerns. The feature has since been redesigned, but security researchers are raising the alarm again.</p><p><a href="https://www.pcgamer.com/gaming-industry/microsoft-is-finally-rolling-out-its-controversial-recall-feature-that-screenshots-everything-you-do-again-but-only-for-select-users/" target="_blank">Windows Insiders have had access to the redesigned Recall since last year</a>, but allegedly the more things change, the more they stay the same. Case in point, after already breaking the original Recall, <a href="https://www.linkedin.com/posts/alexhagenah_breaking-%F0%9D%90%96%F0%9D%90%A2%F0%9D%90%A7%F0%9D%90%9D%F0%9D%90%A8%F0%9D%90%B0%F0%9D%90%AC-%F0%9D%90%91%F0%9D%90%9E%F0%9D%90%9C%F0%9D%90%9A%F0%9D%90%A5%F0%9D%90%A5-again-activity-7447864305460547585-P72P/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAGe5_YBNBxfcDaC5YJlW57cvMMdg5ZCG-g" target="_blank">security researcher Alexander Hagenah has created another tool</a> that can expose the refreshed Recall's various vulnerabilities by extracting and displaying the data it captures (via <a href="https://www.theverge.com/report/912101/microsoft-windows-recall-new-security-concerns-response" target="_blank">The Verge</a>).</p><p>Microsoft previously described Recall's security model in a <a href="https://blogs.windows.com/windowsexperience/2024/09/27/update-on-recall-security-and-privacy-architecture/" target="_blank">September 2024 blog post</a>, sharing, "Recall snapshots and associated data are protected by secure VBS Enclaves." Basically, all of that potentially sensitive data is meant to be cordoned off in a "locked box that can only be accessed after permission is granted by the user through Windows Hello." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>Unfortunately, Hagenah says, "My research shows that the vault is real, but the trust boundary ends too early.”</p><p>Hagenah's tool is called <a href="https://github.com/xaitax/TotalRecall" target="_blank">TotalRecall Reloaded</a>, but how does it work? Very simply, it will camp out quietly in the background of your desktop, and then ride the coat tails of your access to the Recall timeline when you next open the 'locked box' via a Windows Hello prompt. From there, TotalRecall Reloaded can reportedly snaffle the contents of the entire vault like a hydrocolloid bandage on a zit.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3008px;"><p class="vanilla-image-block" style="padding-top:68.09%;"><img id="DToEFoLamXRdV4D2CZVomm" name="Recall Homepage" alt="Windows 11 Recall" src="https://cdn.mos.cms.futurecdn.net/DToEFoLamXRdV4D2CZVomm-1920-80.png" mos="" align="middle" fullscreen="" width="3008" height="2048" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft wrote back in 2024 that asking users for biometric credentials each time they want to access Recall would restrict "attempts by latent malware trying to ’ride along’ with a user authentication to steal data." Unfortunately, Hagenah says his tool creates "precisely the scenario Microsoft’s architecture is supposed to restrict."</p><p>As such, Hagenah claims he responsibly disclosed his security research to Microsoft last month—but this leads me to perhaps the most infuriating twist in this tale. According to Hagenah, Microsoft told him that what he found was 'not a vulnerability'.</p><p>In a statement to The Verge, Microsoft Security's corporate vice president David Weston said, "We appreciate Alexander Hagenah for identifying and responsibly reporting this issue. After careful investigation, we determined that the access patterns demonstrated are consistent with intended protections and existing controls, and do not represent a bypass of a security boundary or unauthorized access to data. The authorization period has a timeout and anti-hammering protection that limit the impact of malicious queries.”</p><p>Given that Recall can hoard everything from browsing history, to whatever text may have crossed your screen in the form of emails, private messages, and so on, it may be difficult to understand Microsoft's stance here. Though in its view, this doesn't qualify as a vulnerability.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cxN83wR25nSNPzozd5nGVW" name="MS Recall" alt="Microsoft Recall" src="https://cdn.mos.cms.futurecdn.net/cxN83wR25nSNPzozd5nGVW-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>At the risk of over-simplifying, TotalRecall Reloaded isn't forcing Windows to do anything it doesn't already do, and a fully fledged fix would likely involve overhauling the OS's foundations. Microsoft is also hoping that prompting for biometric credentials every time a user wants to use Recall will curtail malicious activity.</p><p>To Microsoft's credit, Hagenah did praise Recall's "rock solid" VBS Enclave—though the issue isn't that the 'locked box' has a dodgy door. “The fundamental problem isn’t the crypto, the enclave, the authentication, or the PPL. It’s sending decrypted content to an unprotected process for rendering," Hagenah says, "The vault door is titanium. The wall next to it is drywall.”</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/cybersecurity-experts-raise-the-alarm-over-windows-recall-again-the-vault-door-is-titanium-the-wall-next-to-it-is-drywall/</link>
                                                                            <description>
                            <![CDATA[ Hacking tool supposedly creates "precisely the scenario Microsoft’s architecture is supposed to restrict." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EaNf5XVtxmLREN4Ef6ahAR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RaSZxEp25MGHEghVEtKBuJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Apr 2026 15:16:25 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/RaSZxEp25MGHEghVEtKBuJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Jason Redmond / AFP via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Corporate Vice President, Windows and Devices Pavan Davuluri speaks about Recall during the Microsoft May 20 Briefing event at Microsoft in Redmond, Washington, on May 20, 2024. Microsoft unveiled a new category of PC on Monday that features generative artificial intelligence tools built directly into Windows, the company&#039;s world leading operating system. The tech giant estimates that more than 50 million &quot;AI PCs&quot; will be sold over the next 12 months, given the appetite for devices powered by ChatGPT-style technology. (Photo by Jason Redmond / AFP) (Photo by JASON REDMOND/AFP via Getty Images)]]></media:description>                                                            <media:text><![CDATA[Microsoft Corporate Vice President, Windows and Devices Pavan Davuluri speaks about Recall during the Microsoft May 20 Briefing event at Microsoft in Redmond, Washington, on May 20, 2024. Microsoft unveiled a new category of PC on Monday that features generative artificial intelligence tools built directly into Windows, the company&#039;s world leading operating system. The tech giant estimates that more than 50 million &quot;AI PCs&quot; will be sold over the next 12 months, given the appetite for devices powered by ChatGPT-style technology. (Photo by Jason Redmond / AFP) (Photo by JASON REDMOND/AFP via Getty Images)]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Corporate Vice President, Windows and Devices Pavan Davuluri speaks about Recall during the Microsoft May 20 Briefing event at Microsoft in Redmond, Washington, on May 20, 2024. Microsoft unveiled a new category of PC on Monday that features generative artificial intelligence tools built directly into Windows, the company&#039;s world leading operating system. The tech giant estimates that more than 50 million &quot;AI PCs&quot; will be sold over the next 12 months, given the appetite for devices powered by ChatGPT-style technology. (Photo by Jason Redmond / AFP) (Photo by JASON REDMOND/AFP via Getty Images)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RaSZxEp25MGHEghVEtKBuJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Remember Windows Recall? The AI feature that essentially screenshots nearly everything you do on your PC in order to present users with a timeline of activity they can rewind back through? It was meant to be available on Copilot+ AI PCs from June 2024 but got, ahem, <em>recalled </em>a number of times amid cybersecurity concerns. The feature has since been redesigned, but security researchers are raising the alarm again.</p><p><a href="https://www.pcgamer.com/gaming-industry/microsoft-is-finally-rolling-out-its-controversial-recall-feature-that-screenshots-everything-you-do-again-but-only-for-select-users/" target="_blank">Windows Insiders have had access to the redesigned Recall since last year</a>, but allegedly the more things change, the more they stay the same. Case in point, after already breaking the original Recall, <a href="https://www.linkedin.com/posts/alexhagenah_breaking-%F0%9D%90%96%F0%9D%90%A2%F0%9D%90%A7%F0%9D%90%9D%F0%9D%90%A8%F0%9D%90%B0%F0%9D%90%AC-%F0%9D%90%91%F0%9D%90%9E%F0%9D%90%9C%F0%9D%90%9A%F0%9D%90%A5%F0%9D%90%A5-again-activity-7447864305460547585-P72P/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAGe5_YBNBxfcDaC5YJlW57cvMMdg5ZCG-g" target="_blank">security researcher Alexander Hagenah has created another tool</a> that can expose the refreshed Recall's various vulnerabilities by extracting and displaying the data it captures (via <a href="https://www.theverge.com/report/912101/microsoft-windows-recall-new-security-concerns-response" target="_blank">The Verge</a>).</p><p>Microsoft previously described Recall's security model in a <a href="https://blogs.windows.com/windowsexperience/2024/09/27/update-on-recall-security-and-privacy-architecture/" target="_blank">September 2024 blog post</a>, sharing, "Recall snapshots and associated data are protected by secure VBS Enclaves." Basically, all of that potentially sensitive data is meant to be cordoned off in a "locked box that can only be accessed after permission is granted by the user through Windows Hello." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>Unfortunately, Hagenah says, "My research shows that the vault is real, but the trust boundary ends too early.”</p><p>Hagenah's tool is called <a href="https://github.com/xaitax/TotalRecall" target="_blank">TotalRecall Reloaded</a>, but how does it work? Very simply, it will camp out quietly in the background of your desktop, and then ride the coat tails of your access to the Recall timeline when you next open the 'locked box' via a Windows Hello prompt. From there, TotalRecall Reloaded can reportedly snaffle the contents of the entire vault like a hydrocolloid bandage on a zit.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3008px;"><p class="vanilla-image-block" style="padding-top:68.09%;"><img id="DToEFoLamXRdV4D2CZVomm" name="Recall Homepage" alt="Windows 11 Recall" src="https://cdn.mos.cms.futurecdn.net/DToEFoLamXRdV4D2CZVomm-1920-80.png" mos="" align="middle" fullscreen="" width="3008" height="2048" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft wrote back in 2024 that asking users for biometric credentials each time they want to access Recall would restrict "attempts by latent malware trying to ’ride along’ with a user authentication to steal data." Unfortunately, Hagenah says his tool creates "precisely the scenario Microsoft’s architecture is supposed to restrict."</p><p>As such, Hagenah claims he responsibly disclosed his security research to Microsoft last month—but this leads me to perhaps the most infuriating twist in this tale. According to Hagenah, Microsoft told him that what he found was 'not a vulnerability'.</p><p>In a statement to The Verge, Microsoft Security's corporate vice president David Weston said, "We appreciate Alexander Hagenah for identifying and responsibly reporting this issue. After careful investigation, we determined that the access patterns demonstrated are consistent with intended protections and existing controls, and do not represent a bypass of a security boundary or unauthorized access to data. The authorization period has a timeout and anti-hammering protection that limit the impact of malicious queries.”</p><p>Given that Recall can hoard everything from browsing history, to whatever text may have crossed your screen in the form of emails, private messages, and so on, it may be difficult to understand Microsoft's stance here. Though in its view, this doesn't qualify as a vulnerability.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cxN83wR25nSNPzozd5nGVW" name="MS Recall" alt="Microsoft Recall" src="https://cdn.mos.cms.futurecdn.net/cxN83wR25nSNPzozd5nGVW-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>At the risk of over-simplifying, TotalRecall Reloaded isn't forcing Windows to do anything it doesn't already do, and a fully fledged fix would likely involve overhauling the OS's foundations. Microsoft is also hoping that prompting for biometric credentials every time a user wants to use Recall will curtail malicious activity.</p><p>To Microsoft's credit, Hagenah did praise Recall's "rock solid" VBS Enclave—though the issue isn't that the 'locked box' has a dodgy door. “The fundamental problem isn’t the crypto, the enclave, the authentication, or the PPL. It’s sending decrypted content to an unprotected process for rendering," Hagenah says, "The vault door is titanium. The wall next to it is drywall.”</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ CPUID's download page has been hacked, with its popular processor and PC info tools replaced with links to files containing malware (Update: Fixed) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There are lots of great software tools out there that can tell you all kinds of things about your gaming PC, and perhaps two of the most well-known by enthusiasts are CPU-Z and HWMonitor. However, two sharp-eyed Redditors spotted that while everything seems all normal on the official download page, the links will give you files that are anything but official.</p><p>Reddit users <a href="https://www.reddit.com/r/pcmasterrace/comments/1sh4e5l/warning_hwmonitor_163_download_on_the_official/" target="_blank">DMkiIIer</a> and <a href="https://www.reddit.com/r/pcmasterrace/comments/1shbnxn/cpuid_got_compromised_via_hijack_link_to_the/" target="_blank">OthoAi5657</a> posted their discovery just a few hours ago, and the findings have been confirmed by <a href="https://x.com/vxunderground/status/2042483067655262461" target="_blank">vx-underground on </a><a href="http://x.in">X.</a></p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/pcmasterrace/comments/1sh4e5l/warning_hwmonitor_163_download_on_the_official">WARNING! HWMonitor 1.63 Download on the official "cpuid" page is a Virus!!!</a><figcaption><cite> from <a href="https://www.reddit.com/r/pcmasterrace">r/pcmasterrace</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>In short, what look like normal download links for CPU-Z and HWMonitor, producing seemingly correct files, appear to result in your getting a file with an altered name, Russian setup language, and a different wrapper for the installation screen.</p><p>Oh, and an immediate warning from anti-virus software.</p><p>Adding to the confusion is that, instead of getting something like 'hwmonitor_1.63.exe' as your download, the file is labelled 'HWiNFO_Monitor_Setup.exe'. This has led some people to report on social media that HWInfo has been affected by malware, but this is absolutely <em>not</em> the case.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>While I haven't used HWMonitor in a long time, I do fire up CPU-Z quite often when I'm hardware testing. For example, if I want to check what BIOS version a motherboard sample is sporting, CPU-Z can tell me that within a matter of seconds. Admittedly, so can HWInfo, it's just that the program takes longer to get going than CPU-Z does.</p><p>Worryingly, this is no simple hijack of CPUID, either. According to vx-underground, "This is not your typical run-of-the-mill malware. This malware is deeply trojanized, distributes from a compromised domain, performs file masquerading, is multi-staged, operates (almost) entirely in-memory, and uses some interesting methods to evade EDRs and/or AVs such as proxying NTDLL functionality from a .NET assembly."</p><p>"This is the same Threat Group who was masquerading FileZilla in early March, 2026. They've been busy."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2042483067655262461"><p lang="en" dir="ltr">Mr. Titus Tech is correct. cpuid-dot-com is indeed delivering malware right now.As I began poking this with I stick I discovered this is not your typical run-of-the-mill malware. This malware is deeply trojanized, distributes from a compromised domain (cpuid-dot-com), performs… https://t.co/ubkXmG7LKV pic.twitter.com/jPlAMmpijN<a href="https://twitter.com/cantworkitout/status/2042483067655262461">April 10, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The hack vx-underground is referring to was <a href="https://www.malwarebytes.com/blog/threat-intel/2026/03/a-fake-filezilla-site-hosts-a-malicious-download" target="_blank">subtle but also very devious</a>, though it's certainly not the only instance of FileZilla (an FTP client) being the target for malware. As to who's behind all of this, that's not certain at all, but if it is indeed the same group that targeted CPUID and FileZilla, then other popular PC software tools could well be next.</p><p>Your best defence in all of this is to use a good anti-virus/malware package, keep it regularly updated, and make sure you scan any programs or compressed files that you download. In the case of common software tools, you can also try downloading several copies, from different sources, and comparing the file names, sizes, and digital signatures. If they're all legitimate, they will be identical in every respect.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/cpuids-download-page-has-been-hacked-with-its-popular-processor-and-pc-info-tools-replaced-with-links-to-files-containing-malware/</link>
                                                                            <description>
                            <![CDATA[ Staff at CPUID have reportedly fixed the issue now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LTAciQp9UcNApWtAjYxLkN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qku9TEsNL4xzJmxxEddxz4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 10 Apr 2026 10:07:20 +0000</pubDate>                                                                                                                                <updated>Fri, 10 Apr 2026 16:28:49 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick, gaming, and computers all first met in the early 1980s. After leaving university, he became a physics and IT teacher and started writing about tech in the late 1990s. That resulted in him working with MadOnion to write the help files for 3DMark and PCMark. After a short stint working at Beyond3D.com, Nick joined Futuremark (MadOnion rebranded) full-time, as editor-in-chief for its PC gaming section, YouGamers. After the site shutdown, he became an engineering and computing lecturer for many years, but missed the writing bug. Cue four years at TechSpot.com covering everything and anything to do with tech and PCs. He freely admits to being far too obsessed with GPUs and open-world grindy RPGs, but who isn&#039;t these days?&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qku9TEsNL4xzJmxxEddxz4-1920-80.jpg">
                                                            <media:credit><![CDATA[CPUID]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A stylized screenshot of the software tool CPU-Z, against a colorful background]]></media:description>                                                            <media:text><![CDATA[A stylized screenshot of the software tool CPU-Z, against a colorful background]]></media:text>
                                <media:title type="plain"><![CDATA[A stylized screenshot of the software tool CPU-Z, against a colorful background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qku9TEsNL4xzJmxxEddxz4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There are lots of great software tools out there that can tell you all kinds of things about your gaming PC, and perhaps two of the most well-known by enthusiasts are CPU-Z and HWMonitor. However, two sharp-eyed Redditors spotted that while everything seems all normal on the official download page, the links will give you files that are anything but official.</p><p>Reddit users <a href="https://www.reddit.com/r/pcmasterrace/comments/1sh4e5l/warning_hwmonitor_163_download_on_the_official/" target="_blank">DMkiIIer</a> and <a href="https://www.reddit.com/r/pcmasterrace/comments/1shbnxn/cpuid_got_compromised_via_hijack_link_to_the/" target="_blank">OthoAi5657</a> posted their discovery just a few hours ago, and the findings have been confirmed by <a href="https://x.com/vxunderground/status/2042483067655262461" target="_blank">vx-underground on </a><a href="http://x.in">X.</a></p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/pcmasterrace/comments/1sh4e5l/warning_hwmonitor_163_download_on_the_official">WARNING! HWMonitor 1.63 Download on the official "cpuid" page is a Virus!!!</a><figcaption><cite> from <a href="https://www.reddit.com/r/pcmasterrace">r/pcmasterrace</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>In short, what look like normal download links for CPU-Z and HWMonitor, producing seemingly correct files, appear to result in your getting a file with an altered name, Russian setup language, and a different wrapper for the installation screen.</p><p>Oh, and an immediate warning from anti-virus software.</p><p>Adding to the confusion is that, instead of getting something like 'hwmonitor_1.63.exe' as your download, the file is labelled 'HWiNFO_Monitor_Setup.exe'. This has led some people to report on social media that HWInfo has been affected by malware, but this is absolutely <em>not</em> the case.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>While I haven't used HWMonitor in a long time, I do fire up CPU-Z quite often when I'm hardware testing. For example, if I want to check what BIOS version a motherboard sample is sporting, CPU-Z can tell me that within a matter of seconds. Admittedly, so can HWInfo, it's just that the program takes longer to get going than CPU-Z does.</p><p>Worryingly, this is no simple hijack of CPUID, either. According to vx-underground, "This is not your typical run-of-the-mill malware. This malware is deeply trojanized, distributes from a compromised domain, performs file masquerading, is multi-staged, operates (almost) entirely in-memory, and uses some interesting methods to evade EDRs and/or AVs such as proxying NTDLL functionality from a .NET assembly."</p><p>"This is the same Threat Group who was masquerading FileZilla in early March, 2026. They've been busy."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2042483067655262461"><p lang="en" dir="ltr">Mr. Titus Tech is correct. cpuid-dot-com is indeed delivering malware right now.As I began poking this with I stick I discovered this is not your typical run-of-the-mill malware. This malware is deeply trojanized, distributes from a compromised domain (cpuid-dot-com), performs… https://t.co/ubkXmG7LKV pic.twitter.com/jPlAMmpijN<a href="https://twitter.com/cantworkitout/status/2042483067655262461">April 10, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The hack vx-underground is referring to was <a href="https://www.malwarebytes.com/blog/threat-intel/2026/03/a-fake-filezilla-site-hosts-a-malicious-download" target="_blank">subtle but also very devious</a>, though it's certainly not the only instance of FileZilla (an FTP client) being the target for malware. As to who's behind all of this, that's not certain at all, but if it is indeed the same group that targeted CPUID and FileZilla, then other popular PC software tools could well be next.</p><p>Your best defence in all of this is to use a good anti-virus/malware package, keep it regularly updated, and make sure you scan any programs or compressed files that you download. In the case of common software tools, you can also try downloading several copies, from different sources, and comparing the file names, sizes, and digital signatures. If they're all legitimate, they will be identical in every respect.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hackers claim they've breached a Chinese supercomputer and are demanding huge amounts of crypto for the data, but security researchers are sceptical ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Earlier this year, dark web hackers claimed to have exfiltrated a huge amount of data from the National Supercomputing Center (NSCC) in Tianjin, China. The hacker group FlamingChina claims that it stole 10 petabytes of data pertaining to advanced science and defence agencies within China. However, a number of security researchers have since cast doubt on the leak's legitimacy.</p><p>As far as I can tell, NetAskari was the first to bring the data leak to wider attention back in February 2026 <a href="https://x.com/NetAskari/status/2023044109833810006?s=20" target="_blank">via X</a>, before further <a href="https://netaskari.substack.com/p/chinas-massive-data-leak-of-military" target="_blank">delving into a sample of the leaked files on their SubStack</a>.</p><p>According to them, a dark web forum user going by the handle 'airborneshark1' initially offered a sample of the full leak for $3,000 USD (in cryptocurrency, of course), before offering up all 10 petabytes to the highest bidder.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>NetAskari was able to obtain a multi-gigabyte sample of the allegedly stolen data. This includes screenshots of the internal system directory layout and user credentials as supporting evidence that some kind of hack did take place.</p><p>Beyond that, this sample also included PDFs of reports and handbooks, radar test data, and physics simulation renderings depicting "the effect of payloads and weapon systems against certain targets and materials."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2034632403696656542"><p lang="en" dir="ltr">❗️The leaked sample data from China's National Supercomputing Center in Tianjin includes a video of what seems to be a simulation of a bunker buster bomb, designed to penetrate bunkers and damage underground structures. https://t.co/AC2PmfTZTj pic.twitter.com/Br4vQqLCVi<a href="https://twitter.com/cantworkitout/status/2034632403696656542">March 19, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>China's NSCC undertakes supercomputing tasks from about 6,000 clients, potentially explaining the breadth of files.</p><p><a href="https://edition.cnn.com/2026/04/08/china/china-supercomputer-hackers-hnk-intl" target="_blank">CNN has since picked up the story</a>, reaching out to China’s Ministry of Science and Technology as well as the Cyberspace Administration of China for comment. At the time of writing, there has been no official comment on the data breach. That could be for a number of security reasons, but there's also a chance that this leak is simply not legitimate.</p><p>For instance, security researcher and malware archivist Vx-underground <a href="https://x.com/vxunderground/status/2042037604283990088" target="_blank">expressed their scepticism via X</a>, writing, "Something about this story is very strange to me. I've been doing cybersecurity stuff for a long, long time [...] I have not seen the moniker 'FlamingChina' before."</p><p>NetAskari notes that the hacker group FlamingChina has had a Telegram channel since at least February 5. That said, they also say this is less likely a permanent 'base of operations', so to speak and more likely just a short-term alias.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2042037604283990088"><p lang="en" dir="ltr">Chinese government super computer (allegedly) compromised and (allegedly) 10PB exfiltrated.The source is CNN.Something about this story is very strange to me. I've been doing cybersecurity stuff for a long, long time. I'm usually on top of most cybersecurity incidents,… pic.twitter.com/tFLrDet4MW<a href="https://twitter.com/cantworkitout/status/2042037604283990088">April 9, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>They also write that getting 10 petabytes out of any high-security facility without being noticed over months and months would be quite a feat if it were legitimate. "Did they truly get 10 PB!? We don't know. To extract such an amount of data means, you have to be lodged in the system over a longer period of time," NetAskari writes.</p><p>"Most likely with the help of someone from the inside. Even if the cyber security is a little bit shoddy, eventually someone probably would notice a constant data extraction process of this size."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2109px;"><p class="vanilla-image-block" style="padding-top:67.43%;"><img id="BTvwifuqkVLC9Kj7mjxrNi" name="GettyImages-1942927607.jpg" alt="An illustration of a silhouetted thief in motion running while carrying a stolen fingerprint. The overall aesthetic is bold and dynamic." src="https://cdn.mos.cms.futurecdn.net/BTvwifuqkVLC9Kj7mjxrNi-1920-80.jpg" mos="" align="middle" fullscreen="" width="2109" height="1422" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>CNN posits a botnet-based approach that could have distributed the extraction of data across many sources simultaneously, thereby making such an attack difficult to trace.</p><p>Vx-underground is more intrigued about the practicalities of holding on to all of that data. "I'm also very curious [about] the 10 PETABYTES of data exfiltrated because [that] is an unfathomable number," they write, "10PB is 10,000 TB. Even in cold storage that's roughly $43,000/month. If it's 'hot storage' you're looking at something like, $150,000/month, that doesn't even include the fees for moving the data which would be ASTRONOMICAL."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2122px;"><p class="vanilla-image-block" style="padding-top:66.54%;"><img id="qSpfj64SGsd4MVkEqi3Vmg" name="GettyImages-2225582668" alt="Hacker in hoodie dark theme Hacker in a blue hoody standing in front of a coding background with binary streams and information security terms cybersecurity concept - stock photo" src="https://cdn.mos.cms.futurecdn.net/qSpfj64SGsd4MVkEqi3Vmg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2122" height="1412" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>CNN itself reached out to a number of experts to speak to the authenticity of the leak's contents, including Dakota Cary. A consultant at SentinelOne, a cybersecurity firm focusing on China, Cary told CNN that the leak's contents were what he would expect given the alleged source, elaborating, "You would use supercomputer centers for large computational tasks. The swath of samples that the sellers put out kind of really speaks to the breadth of customers that this supercomputing center had."</p><p>That doesn't sound like the most damning evidence to me. Cary also went on to share that China has had "really poor cybersecurity for a very long time across a wide number of industries and organizations." He went on to tell CNN, "If you look at what Chinese policymakers say themselves, cybersecurity in China has not been good. They would say it’s still improving at this point in time."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/hackers-claim-theyve-breached-a-chinese-supercomputer-and-are-demanding-huge-amounts-of-crypto-for-the-data-but-security-researchers-are-sceptical/</link>
                                                                            <description>
                            <![CDATA[ The jury is still out on this one. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XD4X8xoorxbrfNrNvXZ8f8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jY4T9qtnQJh2MSVgPD2Sc4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 09 Apr 2026 14:34:38 +0000</pubDate>                                                                                                                                <updated>Thu, 09 Apr 2026 14:34:44 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jY4T9qtnQJh2MSVgPD2Sc4-1920-80.jpg">
                                                            <media:credit><![CDATA[Bloomberg Creative - Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Flag of China]]></media:description>                                                            <media:text><![CDATA[Flag of China]]></media:text>
                                <media:title type="plain"><![CDATA[Flag of China]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jY4T9qtnQJh2MSVgPD2Sc4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Earlier this year, dark web hackers claimed to have exfiltrated a huge amount of data from the National Supercomputing Center (NSCC) in Tianjin, China. The hacker group FlamingChina claims that it stole 10 petabytes of data pertaining to advanced science and defence agencies within China. However, a number of security researchers have since cast doubt on the leak's legitimacy.</p><p>As far as I can tell, NetAskari was the first to bring the data leak to wider attention back in February 2026 <a href="https://x.com/NetAskari/status/2023044109833810006?s=20" target="_blank">via X</a>, before further <a href="https://netaskari.substack.com/p/chinas-massive-data-leak-of-military" target="_blank">delving into a sample of the leaked files on their SubStack</a>.</p><p>According to them, a dark web forum user going by the handle 'airborneshark1' initially offered a sample of the full leak for $3,000 USD (in cryptocurrency, of course), before offering up all 10 petabytes to the highest bidder.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>NetAskari was able to obtain a multi-gigabyte sample of the allegedly stolen data. This includes screenshots of the internal system directory layout and user credentials as supporting evidence that some kind of hack did take place.</p><p>Beyond that, this sample also included PDFs of reports and handbooks, radar test data, and physics simulation renderings depicting "the effect of payloads and weapon systems against certain targets and materials."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2034632403696656542"><p lang="en" dir="ltr">❗️The leaked sample data from China's National Supercomputing Center in Tianjin includes a video of what seems to be a simulation of a bunker buster bomb, designed to penetrate bunkers and damage underground structures. https://t.co/AC2PmfTZTj pic.twitter.com/Br4vQqLCVi<a href="https://twitter.com/cantworkitout/status/2034632403696656542">March 19, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>China's NSCC undertakes supercomputing tasks from about 6,000 clients, potentially explaining the breadth of files.</p><p><a href="https://edition.cnn.com/2026/04/08/china/china-supercomputer-hackers-hnk-intl" target="_blank">CNN has since picked up the story</a>, reaching out to China’s Ministry of Science and Technology as well as the Cyberspace Administration of China for comment. At the time of writing, there has been no official comment on the data breach. That could be for a number of security reasons, but there's also a chance that this leak is simply not legitimate.</p><p>For instance, security researcher and malware archivist Vx-underground <a href="https://x.com/vxunderground/status/2042037604283990088" target="_blank">expressed their scepticism via X</a>, writing, "Something about this story is very strange to me. I've been doing cybersecurity stuff for a long, long time [...] I have not seen the moniker 'FlamingChina' before."</p><p>NetAskari notes that the hacker group FlamingChina has had a Telegram channel since at least February 5. That said, they also say this is less likely a permanent 'base of operations', so to speak and more likely just a short-term alias.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2042037604283990088"><p lang="en" dir="ltr">Chinese government super computer (allegedly) compromised and (allegedly) 10PB exfiltrated.The source is CNN.Something about this story is very strange to me. I've been doing cybersecurity stuff for a long, long time. I'm usually on top of most cybersecurity incidents,… pic.twitter.com/tFLrDet4MW<a href="https://twitter.com/cantworkitout/status/2042037604283990088">April 9, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>They also write that getting 10 petabytes out of any high-security facility without being noticed over months and months would be quite a feat if it were legitimate. "Did they truly get 10 PB!? We don't know. To extract such an amount of data means, you have to be lodged in the system over a longer period of time," NetAskari writes.</p><p>"Most likely with the help of someone from the inside. Even if the cyber security is a little bit shoddy, eventually someone probably would notice a constant data extraction process of this size."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2109px;"><p class="vanilla-image-block" style="padding-top:67.43%;"><img id="BTvwifuqkVLC9Kj7mjxrNi" name="GettyImages-1942927607.jpg" alt="An illustration of a silhouetted thief in motion running while carrying a stolen fingerprint. The overall aesthetic is bold and dynamic." src="https://cdn.mos.cms.futurecdn.net/BTvwifuqkVLC9Kj7mjxrNi-1920-80.jpg" mos="" align="middle" fullscreen="" width="2109" height="1422" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>CNN posits a botnet-based approach that could have distributed the extraction of data across many sources simultaneously, thereby making such an attack difficult to trace.</p><p>Vx-underground is more intrigued about the practicalities of holding on to all of that data. "I'm also very curious [about] the 10 PETABYTES of data exfiltrated because [that] is an unfathomable number," they write, "10PB is 10,000 TB. Even in cold storage that's roughly $43,000/month. If it's 'hot storage' you're looking at something like, $150,000/month, that doesn't even include the fees for moving the data which would be ASTRONOMICAL."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2122px;"><p class="vanilla-image-block" style="padding-top:66.54%;"><img id="qSpfj64SGsd4MVkEqi3Vmg" name="GettyImages-2225582668" alt="Hacker in hoodie dark theme Hacker in a blue hoody standing in front of a coding background with binary streams and information security terms cybersecurity concept - stock photo" src="https://cdn.mos.cms.futurecdn.net/qSpfj64SGsd4MVkEqi3Vmg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2122" height="1412" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>CNN itself reached out to a number of experts to speak to the authenticity of the leak's contents, including Dakota Cary. A consultant at SentinelOne, a cybersecurity firm focusing on China, Cary told CNN that the leak's contents were what he would expect given the alleged source, elaborating, "You would use supercomputer centers for large computational tasks. The swath of samples that the sellers put out kind of really speaks to the breadth of customers that this supercomputing center had."</p><p>That doesn't sound like the most damning evidence to me. Cary also went on to share that China has had "really poor cybersecurity for a very long time across a wide number of industries and organizations." He went on to tell CNN, "If you look at what Chinese policymakers say themselves, cybersecurity in China has not been good. They would say it’s still improving at this point in time."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>