- ID de exploración:
- b54c5c78-cf46-49b7-882b-32730ad5bc38Finalizado
- URL enviada:
- https://www.nexusmods.com/thesims4/mods/2342
- Informe finalizado:
Enlaces: 43 encontrados
Los enlaces salientes identificados en la página
Enlace | TEXTO |
---|---|
https://next.nexusmods.com/thesims4/collections?sortBy=total_downloads | All collections |
https://next.nexusmods.com/thesims4/collections?sortBy=listed_at | Recently added |
https://next.nexusmods.com/thesims4/collections?sortBy=endorsements_count | Most endorsed |
https://next.nexusmods.com/thesims4/collections?sortBy=overall_rating | Highest rated |
https://modding.wiki/en/nexusmods/collections/about | Explore |
https://users.nexusmods.com/account/billing/premium | Upgrade |
https://forums.nexusmods.com/forum/8406-modding-discussion | Forums |
https://wiki.nexusmods.com/index.php/Main_Page | Wiki |
https://www.patreon.com/nexusmods | Support authors |
https://discord.gg/nexusmods | Discord |
Variables JavaScript: 290 encontradas
Las variables JavaScript globales cargadas en el objeto de ventana de una página son variables declaradas fuera de las funciones y a las que se puede acceder desde cualquier lugar del código en el ámbito actual
Nombre | Tipo |
---|---|
0 | object |
1 | object |
2 | object |
3 | object |
4 | object |
5 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
AdSlots | object |
Mensajes de registro de la consola: 6 encontrados
Mensajes registrados en la consola web
Tipo | Categoría | Registrar |
---|---|---|
error | network |
|
log | other |
|
warning | other |
|
warning | other |
|
warning | other |
|
warning | other |
|
HTML
El cuerpo HTML sin procesar de la página
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="en" style="" data-previous-scroll-y="-0px" class="sp-message-open"><head>
<title>Get to Work - Aliens Reloaded at The Sims 4 Nexus - Mods and community</title>
<link rel="preload" href="https://static.anonymised.io/light/loader.js" as="script">
<link rel="preload" href="https://boot.pbstck.com/v1/tag/27a51c72-c5c4-48bf-b8e9-3ef1c4a43b5b" as="script">
<link rel="preload" href="https://btloader.com/tag?o=5684350990417920&upapi=true" as="script">
<link rel="preload" href="https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js" as="script">
<link rel="preload" href="https://z.moatads.com/networknheader13924283968/moatheader.js" as="script">
<link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-0CPE0JFSCT" as="script">
<link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script">
<link rel="preload" href="https://cdn.pbxai.com/736376db-e1cc-45b9-91e1-f3ccf5a10d38.js" as="script">
<script src="https://static.anonymised.io/light/loader.js" async="" nnid="nn-482cb016" id="idward-plugin-js" idw_client_id="NTU=" idw_hide_button="true"></script><script src="https://boot.pbstck.com/v1/adm/4f1bddd4-4eb4-4afe-835e-e6ea9e7c7104" async="" nnid="nn-598d6d9"></script><script src="https://btloader.com/tag?o=5684350990417920&upapi=true" async="" nnid="nn-78bf31fb"></script><script src="https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js" async="" nnid="nn-31ce57da"></script><script src="https://www.googletagmanager.com/gtag/js?id=G-0CPE0JFSCT" async="" nnid="nn-77ed23dc"></script><script src="https://scripts.webcontentassessor.com/scripts/1e7f8b38994af8028d05bef928a68c0ed2fb53fe81f8895e52809d09cd9cce16" nnid="nn-295b3d35"></script><script src="https://kumo.network-n.com/dist/1.54.6/solar-mobile.js" async="" nnid="nn-65496087"></script><script src="https://kumo.network-n.com/dist/1.54.6/quantcast.js" async="" nnid="nn-226e70f7"></script><script src="https://kumo.network-n.com/dist/1.54.6/primis.js" async="" nnid="nn-614637a5"></script><script src="https://kumo.network-n.com/dist/1.54.6/gpt-positions.js" async="" nnid="nn-7185788f"></script><script src="https://kumo.network-n.com/dist/1.54.6/galaxy-board.js" async="" nnid="nn-22dc72ec"></script><script src="https://kumo.network-n.com/dist/1.54.6/celtra-bfab.js" async="" nnid="nn-d065c80"></script><script src="https://kumo.network-n.com/dist/1.54.6/anonymised.js" async="" nnid="nn-339269d4"></script><script src="https://kumo.network-n.com/dist/1.54.6/analytics.js" async="" nnid="nn-3ff01f3"></script><script src="https://kumo.network-n.com/dist/1.54.6/pubstack-adm.js" async="" nnid="nn-390e6eed"></script><script src="https://kumo.network-n.com/dist/1.54.6/tagging.js" async="" nnid="nn-4d3a091c"></script><script src="https://kumo.network-n.com/dist/1.54.6/comscore.js" async="" nnid="nn-3bf88124"></script><script src="https://kumo.network-n.com/dist/1.54.6/mediatrust.js" async="" nnid="nn-5b1c5781"></script><script src="https://kumo.network-n.com/dist/1.54.6/blockthrough.js" async="" nnid="nn-675b3cdd"></script><script src="https://kumo.network-n.com/dist/1.54.6/cmp-sourcepoint.js" async="" nnid="nn-45beeeab"></script><script src="https://rules.quantcount.com/rules-p-bcgV-fdjlWlQo.js" async=""></script><script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-N0TELNQ37M&l=nexusDataLayer&cx=c&gtm=45He4bk0v866853703za200"></script><script src="https://secure.quantserve.com/quant.js" async="" type="text/javascript"></script><script async="" src="https://pw.nexusmods.com/js/container_aHn6giK8.js"></script><script async="" src="//pw.nexusmods.com/matomo.js"></script><script async="" src="https://www.googletagmanager.com/gtm.js?id=GTM-KCVF2WQ&l=nexusDataLayer"></script><script async="" src="https://sb.scorecardresearch.com/cs/38976705/beacon.js"></script><script>window.AdSlots = window.AdSlots || {cmd: []};</script>
<script async="" src="https://kumo.network-n.com/dist/app.js" site="nexus-mods"></script>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content=" ">
<meta name="msapplication-TileColor" content="#FFFFFF">
<meta name="msapplication-TileImage" content="https://images.nexusmods.com/favicons/ReskinOrange/mstile-144x144.png">
<meta name="msapplication-square70x70logo" content="https://images.nexusmods.com/favicons/ReskinOrange/mstile-70x70.png">
<meta name="msapplication-square150x150logo" content="https://images.nexusmods.com/favicons/ReskinOrange/mstile-150x150.png">
<meta name="msapplication-wide310x150logo" content="https://images.nexusmods.com/favicons/ReskinOrange/mstile-310x150.png">
<meta name="msapplication-square310x310logo" content="https://images.nexusmods.com/favicons/ReskinOrange/mstile-310x310.png">
<meta name="description" content="This mod introduces expanded gameplay for aliens, alien/human hybrids (aka part-aliens), and the people around them. This includes new socials and interactions, traits, relationship types, alien abili">
<meta property="og:site_name" content="Nexus Mods :: The Sims 4">
<meta property="og:url" content="https://www.nexusmods.com/thesims4/mods/2342">
<meta property="og:type" content="article">
<meta property="og:title" content="Get to Work - Aliens Reloaded">
<meta property="og:description" content="This mod introduces expanded gameplay for aliens, alien/human hybrids (aka part-aliens), and the people around them. This includes new socials and interactions, traits, relationship types, alien abili">
<meta property="og:image" content="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1729980316-308911225.png">
<meta name="twitter:title" content="Get to Work - Aliens Reloaded">
<meta name="twitter:description" content="This mod introduces expanded gameplay for aliens, alien/human hybrids (aka part-aliens), and the people around them. This includes new socials and interactions, traits, relationship types, alien abili">
<meta name="twitter:image" content="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1729980316-308911225.png">
<meta property="twitter:label1" content="Version">
<meta property="twitter:data1" content="v3.1">
<meta property="twitter:label2" content="Total Views">
<meta property="twitter:data2" content="0">
<!-- defaut meta twitter card -->
<meta content="summary_large_image" name="twitter:card">
<meta content="@NexusSites" name="twitter:site">
<!-- imported links -->
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:400,500,700,300">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700,900,300">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700&text=0123456789">
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon.png">
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="https://images.nexusmods.com/favicons/ReskinOrange/apple-touch-icon-152x152.png">
<link rel="shortcut icon" sizes="196x196" href="https://images.nexusmods.com/favicons/ReskinOrange/firefox_app_128x128.png">
<link rel="shortcut icon" sizes="96x96" href="https://images.nexusmods.com/favicons/ReskinOrange/firefox_app_128x128.png">
<link rel="shortcut icon" sizes="230x230" href="https://images.nexusmods.com/favicons/ReskinOrange/favicon-230x230.png">
<link rel="shortcut icon" sizes="32x32" href="https://images.nexusmods.com/favicons/ReskinOrange/favicon-32x32.png">
<link rel="shortcut icon" sizes="16x16" href="https://images.nexusmods.com/favicons/ReskinOrange/favicon-16x16.png">
<link rel="shortcut icon" href="https://images.nexusmods.com/favicons/ReskinOrange/favicon.ico">
<!-- imported links end -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="../../../assets/stylesheets/highstock/highstock-7.1.3.css">
<link rel="stylesheet" type="text/css" href="../../../assets/stylesheets/highstock/overrides.css">
<link href="https://www.nexusmods.com/assets/dist/app-22ASJEBN.css" rel="stylesheet" type="text/css">
<!-- imported scripts -->
<!-- imported scripts end -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.0.0/papaparse.min.js"></script>
<!-- Google Tag Manager (Nexus) -->
<script>
window.nexusDataLayer = window.nexusDataLayer || [];
window.nexusDataLayer.push({
login_status: "Guest",
});
</script>
<script>
window.nexusDataLayer.push({
game_name: "The Sims 4",
});
</script>
<script>
window.nexusDataLayer.push({"mod_name":"Get to Work - Aliens Reloaded","mod_id":2342,"mod_author_id":66957546});
</script>
<!-- Begin comScore Tag -->
<script>
var _comscore = _comscore || [];
_comscore.push({ c1: "2", c2: "38976705" });
(function() {
var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true;
s.src = "https://sb.scorecardresearch.com/cs/38976705/beacon.js";
el.parentNode.insertBefore(s, el);
})();
</script>
<noscript>
<img src="https://sb.scorecardresearch.com/p?c1=2&c2=38976705&cv=3.6.0&cj=1">
</noscript>
<!-- End comScore Tag -->
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','nexusDataLayer','GTM-KCVF2WQ');
</script>
<!-- End Google Tag Manager (Nexus) -->
<script src="https://unpkg.com/unleash-proxy-client@latest/build/main.min.js" type="text/javascript" defer=""></script>
<script type="text/javascript">
window.blockingAds = false;
function rtrrabaenoethamlodcchkcbawekte(blocking = false) {
var mins = 5;
var days = mins / ( 24 * 60 );
window.blockingAds = blocking;
const isBlocked = blocking;
var currentStoredStatus = Cookies.get('ab');
var newStatus = null;
var skipWrite = false;
if (currentStoredStatus === undefined)
{
newStatus = isBlocked ? 1 : 0;
}
else
{
var arrStoredStatus = currentStoredStatus.split("|");
if ( arrStoredStatus.length !== 2 )
{
newStatus = isBlocked ? 1 : 0;
}
else
{
var numericStoredStatus = parseInt( arrStoredStatus[0] );
if ( numericStoredStatus === 0 && isBlocked === true )
{
newStatus = 2;
}
else if ( numericStoredStatus === 1 && isBlocked !== true )
{
newStatus = 0;
}
else
{
newStatus = currentStoredStatus;
skipWrite = true;
}
}
}
if ( skipWrite !== true )
{
var now = Math.round( $.now() / 1000 );
var secs = mins * 60;
var expiry = now + secs;
Cookies.set('ab', newStatus + '|' + expiry, { expires: days });
}
}
function areAdsBlocked(){
return window.blockingAds;
}
</script>
<script type="text/javascript">
window.unleashClient = {
isEnabled: function() {
return false;
}
};
</script>
<script>
var actionLogOffset = new Array();
var notifications_game_id = 641;
var notifications_game_domain_name = "thesims4";
var file_upload_url = 'https://upload.nexusmods.com';
var upload_url = "https://file-metadata.nexusmods.com/file";
var upload_bucket = "nexus-files-s3";
var upload_metadata_bucket = "nexus-files-s3-meta";
var upload_service = "https://upload.nexusmods.com";
window.current_game_id = 641;
var user_service_url = 'https://users.nexusmods.com';
var notification_service_url = 'https://notifications.nexusmods.com';
window.notificationsDisabled = false;
window.notificationsActive = true;
window.notificationsGameSpecific = false;
window.env = {};
window.env.NEXT_PUBLIC_MODERATION_PUBLIC_GRAPHQL_URI = "https://moderation-router.nexusmods.com/graphql";
window.env.INVISION_GRAPHQL_URL = "https://invision-router.nexusmods.com/graphql";
window.env.NOTIFICATIONS_GRAPHQL_URL = "https://notifications-router.nexusmods.com/graphql";
</script>
<script src="https://www.nexusmods.com/assets/dist/app-YR7577GQ.js"></script><style id="_goober"> @keyframes go2264125279{from{transform:scale(0) rotate(45deg);opacity:0;}to{transform:scale(1) rotate(45deg);opacity:1;}}@keyframes go3020080000{from{transform:scale(0);opacity:0;}to{transform:scale(1);opacity:1;}}@keyframes go463499852{from{transform:scale(0) rotate(90deg);opacity:0;}to{transform:scale(1) rotate(90deg);opacity:1;}}@keyframes go1268368563{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}@keyframes go1310225428{from{transform:scale(0) rotate(45deg);opacity:0;}to{transform:scale(1) rotate(45deg);opacity:1;}}@keyframes go651618207{0%{height:0;width:0;opacity:0;}40%{height:0;width:6px;opacity:1;}100%{opacity:1;height:10px;}}@keyframes go901347462{from{transform:scale(0.6);opacity:0.4;}to{transform:scale(1);opacity:1;}}.go4109123758{z-index:9999;}.go4109123758 > *{pointer-events:auto;}</style>
<script>
$(document).data('nexus.game_id', 641 );
$(document).data('nexus.blocked_tags', "");
$(document).data('nexus.blocked_authors', "");
$(document).data('nexus.include_adult', 0);
$(document).data('nexus.adult_blur', 0);
</script>
<script>
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:1264276,hjsv:6};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
</script><script async="" src="https://static.hotjar.com/c/hotjar-1264276.js?sv=6"></script>
<!-- Toastr lib -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" rel="stylesheet" type="text/css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js" type="text/javascript"></script>
<script src="https://www.nexusmods.com/Contents/Scripts/abtest_ab.js?" type="text/javascript"></script><script>
if(document.getElementById('eSTdHLCPsMFO')){
rtrrabaenoethamlodcchkcbawekte(false);
} else {
rtrrabaenoethamlodcchkcbawekte(true);
}
</script><script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//pw.nexusmods.com/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script><script>
var _mtm = window._mtm = window._mtm || [];
_mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'});
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src='https://pw.nexusmods.com/js/container_aHn6giK8.js'; s.parentNode.insertBefore(g,s);
</script><script type="text/javascript">
var _qevents = _qevents || [];
(function() {
var elem = document.createElement('script');
elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";
elem.async = true;
elem.type = "text/javascript";
var scpt = document.getElementsByTagName('script')[0];
scpt.parentNode.insertBefore(elem, scpt);
})();
_qevents.push({
qacct:"p-bcgV-fdjlWlQo"
});
</script><script async="" src="https://script.hotjar.com/modules.86621fa4aeada5bcf025.js" charset="utf-8"></script><style>@media only screen and (min-width:900px){.bfa-maximum div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{top:var(--nnVideoOffsetTop,140px)!important}.bfa-loaded.bfa-collapsed div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{bottom:100px!important;top:auto!important}}</style><style>.galaxy-maximum div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{bottom:510px!important}.galaxy-loaded div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{bottom:265px!important;top:auto!important}.galaxy-loaded .notranslate.celtra-placement-sticky img{display:none}</style><style>.nn-sticky{width:100%;display:flex;justify-content:center;position:fixed;bottom:var(--cmpHeight,0);left:0;right:0;z-index:9999;pointer-events:none}.nn-sticky>div{margin:0;padding:0;position:relative;z-index:9999;pointer-events:auto}.nn-sticky .close-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:40px;height:40px;position:absolute;right:-5px;top:0;margin-top:-40px;border-radius:40px;cursor:pointer;outline:none;background:#555;z-index:9999;pointer-events:auto}.nn-sticky .close-btn:after{content:"";background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M10 10l20 20m0-20L10 30' stroke='%23fff' stroke-width='4'/%3E%3C/svg%3E") no-repeat 50% 50%;background-size:25px;width:100%;height:100%;display:block}.nn_sticky_ad>div{position:-webkit-sticky!important;position:sticky!important;top:15px;min-height:0!important}</style><style>[id^=primis_playerSekindoSPlayer]{margin-bottom:var(--cmpHeight)!important}</style><style>@media only screen and (max-width:480px){.solar-loaded div[id*=primis_playerSekindoSPlayer]{bottom:auto!important}.solar-loaded div[id*=primis_playerSekindoSPlayer][style*="overflow: visible; position: fixed"]{bottom:200px!important}.solar-loaded .avp-floating-container.avp-bottom-right{bottom:300px!important}}</style><meta name="pbstck_context:website" content="NexusMods-651189ba36d9f"><meta name="pbstck_context:device" content="mobile"><meta name="pbstck_context:country" content="ES"><script charset="utf-8" src="https://cdn.privacy-mgmt.com/unified/4.27.2/gdpr-tcf.00cd3b6a2692e330e4ec.bundle.js"></script><script charset="utf-8" src="https://cdn.privacy-mgmt.com/unified/4.27.2/usnat-uspapi.25b8b71f04c7ff439a79.bundle.js"></script><script src="https://static.anonymised.io/light/bundle.js?v=0.3.19" async="" nnid="nn-482cb016" id="idward-plugin-js" idw_client_id="NTU=" idw_hide_button="true"></script><script type="text/javascript">(function(){ var kleanads=function(e){"use strict";var t,i,n;!function(e){e.HISTORY_MUTATION="_pbstck_kleanads_historyMutation",e.PAGE_CHANGE="_pbstck_kleanads_pageChange",e.REFRESH_INIT="_pbstck_kleanads_refreshInit"}(t||(t={})),function(e){e.SPA_RELOAD="admSPAReload"}(i||(i={})),function(e){e.REPLACE_STATE="replaceState",e.PUSH_STATE="pushState"}(n||(n={}));const s=e=>{window.history[e]=new Proxy(window.history[e],{apply(i,n,s){const o=window.location.href,a=i.apply(n,s),r=new CustomEvent(t.HISTORY_MUTATION,{detail:{referrer:o,stateObj:s[0],title:s[1],url:s[2],type:e}});return dispatchEvent(r),a}})},o=()=>{s(n.REPLACE_STATE),s(n.PUSH_STATE)};function a(e){const t=document.createElement("meta");t.setAttribute("name","pbstck_context:pbstck_ab_test"),t.content=e,document.head.appendChild(t)}function r(e,t){const i=document.createElement("meta");i.setAttribute("name",`pbstck:${e}`),i.content=t,document.head.appendChild(i)}function d(e){const t={};e.document.querySelectorAll('meta[name^="ad:"]').forEach((e=>{const i=function(e){var t;const i=(null===(t=e.attributes.getNamedItem("name"))||void 0===t?void 0:t.value)||"";return i.startsWith("ad:")?i.slice(3):i}(e);i&&(t[i]=function(e){var t;const i=(null===(t=e.attributes.getNamedItem("content"))||void 0===t?void 0:t.value)||"";return i.split(",")}(e))}));const i=new URLSearchParams(e.location.search);for(const e of i.keys())e.startsWith("ad:")&&(t[e.slice(3)]=i.getAll(e));return t}function l(){const e=document.head.querySelector('meta[name="ad:no_cmp"]');return!!e&&"true"===e.content}const c={advertisers:[],orders:[],lineItems:[]},u="adm";class h{constructor(e,t,i,n=1){this.tagId=e,this.kleanadsVersion=t,this.throttling=n,this.device=i||"na"}handleMessage(e,t,i){const n={source:"kleanads",type:"log",level:e,message:t,tagId:this.tagId,kleanadsVersion:this.kleanadsVersion,href:window.location.href,device:this.device,...i};var s,o;s=n,o=this.throttling,100*Math.random()<o&&navigator.sendBeacon("https://intake.pbstck.com/v1/trace",JSON.stringify(s))}error(e){this.handleMessage("error",e)}warn(e){this.handleMessage("warn",e)}logWithPayload(e,t){this.handleMessage("info",e,t)}}var f;const g=/kleanads:debug/.test(window.location.href),p=!!(null===(f=window.localStorage)||void 0===f?void 0:f.getItem)&&null!==window.localStorage.getItem("kleanads"),v="kleanads";let m,b="na",y="na",A="na";function S(){return g||p}function I(e,t){return`[${e}] [${performance.now().toFixed(2)}] ${t}`}function C(e){A=e}function w(e,...t){S()&&console.log(I(v,e),...t)}function E(e,...t){if(S()){const i="background: #4D5E98;color: #fff; padding: 2px 4px;font-weight:bold;text-transform:capitalize;border-radius: 1px; margin:0 2px;";console.debug("%cDEBUG",i,I(v,e),...t)}}function _(e,...t){S()&&console.warn(I(v,e),...t),null==m||m.warn(e)}function k(e,...t){S()&&console.error(I(v,e),...t),null==m||m.error(e),navigator.sendBeacon(`https://intake.pbstck.com/v1/intake/error?tId=${b}&v=${y}&s=${A}&c=1`,JSON.stringify([{message:e}]))}function T(e,t){null==m||m.logWithPayload(e,t)}function O(e,t){const i={type:"customEvent",eventName:e,message:t};window.postMessage(i,"*")}function R(e){return null!==document.getElementById(e)}function $(e){const t=document.getElementById(e);if(t){return t.getBoundingClientRect().top}return w(`[DOM] div ${e} not found during get distance from top`),0}function L(e,t){return new Promise(((i,n)=>e().then(i).catch((i=>{return t>1?(s=100,new Promise((e=>setTimeout(e,s)))).then(L.bind(null,e,t-1)).then((e=>e)).catch(n):n(i);var s}))))}const P=async(e,t=3)=>L((()=>import(e)),t).then((e=>e)).catch((i=>{throw k(`Failed to load module ${e} after ${t} retries`,i),new Error("Too many failed attempt to load external module.")})),N=(e,t)=>{const i=function(e,t){const i=document.createElement("script");return i.setAttribute("src",e),i}(e);i.setAttribute("async","true"),i.setAttribute("data-kleanads","true"),document.head.append(i)};async function U(e,t){const{beforeStart:i}=t,n=function(e,t){var i;return(null!==(i=e.extraScripts)&&void 0!==i?i:[]).filter((i=>i.tagId===e.tagId&&!!i.beforeStart===t))}(e,i);if(n.length>0){w("[extra-script]",i?"Loading extraScripts before config":"Loading extraScripts after consent");const e=n.filter((({synchronous:e})=>!e)).flatMap((e=>e.scripts)),t=n.filter((({synchronous:e})=>e)).flatMap((e=>e.scripts));if(e.length>0&&(w(`[extra-script] downloading async extra scripts ${e.join("\n")}`),e.forEach((e=>N(e)))),t.length>0){w(`[extra-script] downloading sync extra scripts ${t.join("\n")}`);for(const e of t)try{await P(e)}catch(e){_("[extra-script] Error while loading sync extra script",e)}}}}function x(e,t){return e.size<t.size?1:e.size>t.size?-1:0}function D(e){return e.filter(V)}function j(e){if("fluid"===e)return"fluid";const[t,i]=e.split("x");return[parseInt(t,10),parseInt(i,10)]}function M(e){return e>=100||e>=Math.floor(100*Math.random())+1}function B(e){if(100!==e.reduce(((e,t)=>e+t),0))return w("[drawComplexAbTests] The sum of all probabilities should be equal to 100 and is not, we use the first version of the ab test"),1;const t=e.reduce(((e,t)=>(e.length?e.push(e[e.length-1]+t):e.push(t),e)),[]),i=Math.floor(100*Math.random())+1;return t.findIndex((e=>i<=e))+1}function V(e){return Array.isArray(e)&&2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}const F=["master","master-1","master-2","master-3","companion",void 0],z=(e,t)=>F.indexOf(e.roadblock)-F.indexOf(t.roadblock)||$(e.divId)-$(t.divId),W=(e,t)=>"fluid"===e&&"fluid"===t||e[0]===t[0]&&e[1]===t[1],G=e=>!!e.sizes.find((e=>W(e,[1800,1e3])));function H(e){var t;const i=null!==(t=e.values)&&void 0!==t?t:[];return e.value?e.value:i}const J=(e,t)=>{var i;return{...t,bids:e.bidders.map((e=>({bidder:e.bidder,params:e.params}))),mediaTypes:{video:null===(i=e.instreamParams)||void 0===i?void 0:i.mediaTypeParams}}},K=(e,t)=>({...t,bids:e.bidders.filter((e=>e.mediaTypes.includes("Outstream"))).map((e=>({bidder:e.bidder,params:e.params}))),mediaTypes:{video:{context:"outstream",playerSize:[640,480],mimes:["video/mp4","video/ogg","video/webm","application/javascript"],protocols:[1,2,3,4,5,6,7,8,11,12,13,14],api:[1,2,3,5,6,7],playbackmethod:[2,3,4],skip:1,linearity:2,startdelay:0,placement:3,plcmt:4,maxduration:30,playVideoVisibleThreshold:25,nonViewableBehavior:"pause"}},renderer:{url:"https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js",options:{adText:"",aspectRatio:"16:9",skippable:{enabled:!0,skipButtonText:"SKIP"}}}}),Y=["adyoulike"],q=(e,t)=>{const i=e.bidders,n=e.biddersSkin?i.filter((t=>{var i;return null===(i=e.biddersSkin)||void 0===i?void 0:i.includes(t.bidder)})):i,s={...t,bids:n.filter((e=>!Y.includes(e.bidder))).map((e=>({bidder:e.bidder,params:e.params}))),mediaTypes:{banner:{sizes:[[1800,1e3]]}}},o=D(e.sizes).filter((e=>!W(e,[1800,1e3])));if(o.length>0){return[{...t,bids:i.map((e=>({bidder:e.bidder,params:e.params}))),mediaTypes:{banner:{sizes:o}}},s]}return[s]},X=(e,t)=>({...t,bids:e.bidders.filter((e=>e.mediaTypes.includes("Banner"))).map((e=>({bidder:e.bidder,params:e.params}))),mediaTypes:{banner:{sizes:D(e.sizes)}}}),Q=(e,t)=>({...t,bids:e.bidders.filter((e=>e.mediaTypes.includes("Native"))).map((e=>({bidder:e.bidder,params:e.params}))),mediaTypes:{native:e.nativeParams}});function Z(e,t){var i;const n=e.floors;n&&t&&(n.values.banner=Math.max(n.values.banner,t));const s={code:e.divId,pubstack:{adUnitName:e.adServerAdUnitName,adUnitPath:ee(e)},floors:n,ortb2Imp:e.ortb2Imp},o=e.getTargetings();if(o.find((e=>"ad_index"===e.key))){const e=null===(i=o.find((e=>"ad_index"===e.key)))||void 0===i?void 0:i.value;s.pubstack&&(s.pubstack.tags=[`ad_index:${e}`])}const a=e.mediaTypes;if(a.includes("Instream"))return[J(e,s)];const r=[];return a.includes("Banner")&&(G(e)?r.push(...q(e,s)):e.sizes.length>0&&r.push(X(e,s))),a.includes("Outstream")&&r.push(K(e,s)),a.includes("Native")&&r.push(Q(e,s)),r}function ee(e){var t;const i=[...e.getTargetings()],n=(null!==(t=e.pubstackDeclarationTargetingKeys)&&void 0!==t?t:[]).map((e=>{const t=i.find((t=>t.key===e));if(t)return t;{const t=d(window)[e];return t?{key:e,values:t}:void 0}})).filter((e=>!!e)).map((e=>`${e.key}=${function(e){const t=e.values?e.values.join(","):"";return e.value?e.value:t}(e)}`)).join("&"),s=e.adUnitPath.includes("?")?"&":"?";return n.length>0?`${e.adUnitPath}${s}${n}`:e.adUnitPath}class te{constructor(){this.uprEnabled=!0,this.disableGptPreAuction=!1,this.kleanadsRunCount=1}setUprState(e,t){switch("true"===function(e,t){const i=`meta[name="${t}"]`,n=e.document.querySelector(i);return null!==n?n.getAttribute("content"):null}(window,"adm_feature:upr_disabled")&&(e="disabled"),e){case"disabled":this.uprEnabled=!1;break;case"tested":this.uprEnabled=M(null!=t?t:50),this.uprTested=!0;break;default:this.uprEnabled=!0}}setKleanadsRunCount(e){this.kleanadsRunCount=e}static getInstance(){return te.instance||(te.instance=new te),te.instance}}const ie="ad_floor-rule",ne="prkv";function se(e){if("string"==typeof e)return!0;if(Array.isArray(e)){for(const t of e)if("string"!=typeof t)return!1;return!0}return!1}function oe(e,t){const i=e.getTargeting(t);i&&i.length>0&&e.clearTargeting(t)}const ae="bid_bidder",re="bid_size",de="bid_mediatype",le="[instream] [Dailymotion]";class ce{constructor(e,t,i,n){this.callbackAdded=!1,this.configSetOnce=!1,this.adReadyToFetchReceivedOnce=!1,this.adReadyToFetchCallback=()=>{},this.declaredAdUnit="",this.pubstackWindow=e,this.pageContext=t,this.device=i,this.targetings=he(this.device,this.pubstackWindow),this.instreamType=null!=n?n:"dailymotion-v1"}declareAdUnit(e){"dailymotion-v3"===this.instreamType&&""===this.declaredAdUnit&&(this.declaredAdUnit=e.divId,this.executeWhenAdServerReady((()=>{const t=this.pubstackWindow.dailymotion;t?t.getPlayer(e.divId).then((t=>{var i;t.on(null===(i=this.pubstackWindow.dailymotion)||void 0===i?void 0:i.events.AD_READYTOFETCH,(()=>{w(`${le} ${e.divId} event AD_READYTOFETCH received`),this.adReadyToFetchReceivedOnce||(this.adReadyToFetchReceivedOnce=!0),this.adReadyToFetchCallback()}))})):k(`${le} unable to get dailymotion on the page`)})))}setApsTargetings(e){var t;if(0!==e.length){w(`${le} putting targeting keys for aps auction of winning bidder`,e[0]);try{const i=null===(t=e[0].helpers)||void 0===t?void 0:t.qsParams();if(i)return void this.targetings.push(i.slice(1));const n=e[0].qsParams;if(n)return void this.targetings.push(n.slice(1))}catch(e){k(`${le} error setting APS targetings`,e)}}}executeWhenAdServerReady(e){this.pubstackWindow.dailymotion?e():setTimeout(this.executeWhenAdServerReady.bind(this,e),100)}async callAdServer(e,t){var i,n,s;const o=e.divId;if("dailymotion-v3"===this.instreamType&&e.divId!==this.declaredAdUnit)return void k(`${le} ${e.divId} call ad server but it is not the same divId as the one declared ${this.declaredAdUnit}`);w(`${le} ${o} call ad server`);const a=await(null===(i=this.pubstackWindow.dailymotion)||void 0===i?void 0:i.getPlayer(o));if(!a)return void k(`${le} no player found for ${o}`);w(`${le} ${o} player:`,a);const r=await a.getState();switch(this.customConfig=function(e,t,i,n){var s,o;const a=function(e){return e.getTargetings().map(ue)}(e);w(`${le} adUnitTargetings`,a);const r=Array.from(i.entries()).filter((([,e])=>!!e)).map((([e,t])=>`${e}=${t}`)),d=a.concat(t).concat(r).join("&"),l={...null===(s=e.instreamParams)||void 0===s?void 0:s.vast,vpmute:n.playerIsMuted?1:0},c=Object.keys(l).map((function(e){return`${e}=${l[e]}`})).join("&"),u=null===(o=e.instreamParams)||void 0===o?void 0:o.adDeactivationContext;let h=!1;if(u){const e=i.get(u.key);h=!!e&&u.values.includes(e)}const f={dynamiciu:e.adUnitPath,keyvalues:d,keyvalues2:c};return h?{...f,premium:"true"}:f}(e,this.targetings,this.pageContext,r),w(`${le} generated customConfig`,this.customConfig),this.instreamType){case"dailymotion-v1":w(`${le} ${o} setCustomConfig`,this.customConfig),a.setCustomConfig(this.customConfig),w(`${le} ad server called ${o}`),document.dispatchEvent(new CustomEvent("admDailymotionReady",{detail:{divId:o}})),w(`${le} ${o} admDailymotionReady event dispatched`);break;case"dailymotion-v2":this.callbackAdded||(w(`${le} ${o} add callback to event ${null===(n=this.pubstackWindow.dailymotion)||void 0===n?void 0:n.events.AD_READYTOFETCH}`),a.on(null===(s=this.pubstackWindow.dailymotion)||void 0===s?void 0:s.events.AD_READYTOFETCH,(()=>{w(`${le} ${o} event AD_READYTOFETCH received, setCustomConfig`,this.customConfig),this.customConfig&&a.setCustomConfig(this.customConfig),t&&(w(`${le} ${o} event AD_READYTOFETCH, call "onCallFinished"`),t())})),this.callbackAdded=!0);break;case"dailymotion-v3":!this.configSetOnce&&this.adReadyToFetchReceivedOnce?(w(`${le} ${e.divId} event AD_READYTOFETCH already received, setting customConfig"`,this.customConfig),this.customConfig&&(a.setCustomConfig(this.customConfig),this.configSetOnce=!0),t&&(w(`${le} ${e.divId} event AD_READYTOFETCH, call "onCallFinished"`),t())):this.adReadyToFetchCallback=()=>{w(`${le} ${e.divId} event AD_READYTOFETCH callback, setting customConfig"`,this.customConfig),this.customConfig&&a.setCustomConfig(this.customConfig)}}}setPbjsTargetings(e,t){if(e){w(`${le} put pbjs targeting keys for ${t.divId}`);const i=e.getAdserverTargetingForAdUnitCode(t.divId);for(const e of Object.keys(i)){const n=i[e];se(n)?this.targetings.push(`${e}=${n}`):_(`${le} [targeting] unable to set targeting ${e}=${n} on adUnit ${t.divId}`)}}else k(`${le} no pbjs given: unable to put header bidding targetings`)}cleanTargetings(){this.targetings.splice(0),this.targetings.push(...he(this.device,this.pubstackWindow))}}function ue(e){const t=H(e);return`${e.key}=${"string"==typeof t?t:t.join(",")}`}function he(e,t){const i=[],n=d(t);Object.keys(n).forEach((e=>{const t=n[e].join(",");i.push(`${e}=${t}`)})),i.push(`${u}=1`),i.push(`device=${e}`);const s=te.getInstance().grapeshotValues;(null==s?void 0:s.length)&&i.push(`gs_cat=${s.join(",")}`);try{const e=JSON.parse(t.localStorage._pdfps).slice(0,250).join(",");""!==e?i.push(`permutive=${e}`):w(`[${le}] no permutive targeting found`)}catch(e){w(`[${le}] error reading permutive targeting, ${e}`)}return i}var fe,ge,pe;!function(e){e.BEGIN_INIT="begin_init",e.CMP_RESPONSE_AVAILABLE="cmp_response_available",e.MAIN_THREAD_END="main_thread_end",e.GOOGLETAG_READY="googletag_ready",e.APSTAG_READY="apstag_ready",e.PREBID_READY="prebid_ready"}(fe||(fe={})),function(e){e.BEGIN_CONFIGURE="begin_configure",e.BEGIN_START="begin_start",e.SPA_RELOAD="spa_reload"}(ge||(ge={})),function(e){e.START_AUCTION="start_auction",e.END_PBJS_AUCTION="end_pbjs_auction",e.END_APS_AUCTION="end_aps_auction",e.START_AD_SERVER_CALL="start_ad_server_call",e.SLOT_RENDER_ENDED_TIME="slot_render_ended_time",e.SLOT_RESPONSE_RECEIVED_TIME="slot_response_received_time"}(pe||(pe={}));const ve=[],me=[],be="getEntriesByName"in performance&&"measure"in performance&&"mark"in performance;function ye(e){ve.includes(e)||(Te(e),ve.push(e))}function Ae(e){Te(e)}function Se(e,t){const i=ke(e,t);me.includes(i)||(Te(i),me.push(i))}function Ie(e){return function(e){if(be)return performance.getEntriesByName(e).map((e=>e.startTime));return[]}(e)}function Ce(e){if(ve.includes(e))return function(e){if(be)return performance.getEntriesByName(e)[0].startTime;return}(e)}function we(e,t){if(ve.includes(e)&&ve.includes(t))return Oe(e,t)}function Ee(e,t,i){const n=ke(e,i);if(ve.includes(t)&&me.includes(n))return Oe(t,n)}function _e(e,t,i){const n=ke(e,t),s=ke(e,i);if(me.includes(n)&&me.includes(s))return Oe(n,s)}function ke(e,t){return`${e}_${t}`}function Te(e){be&&(performance.mark(e.toString()),E(`[performance] [mark] ${e}: ${performance.getEntriesByName(e)[0].startTime.toFixed(2)}`))}function Oe(e,t){if(be){const i=`measure_${e}_${t}`,n=performance.getEntriesByName(i);if(0!==n.length&&"measure"===n[0].entryType)return n[0].duration;try{return performance.measure(i,e,t).duration}catch{return}}}var Re;!function(e){e.UNKNOWN="unknown",e.WAIT_USER_CONSENT="wait_user_consent",e.WAIT_USER_REFUSED="wait_user_refused"}(Re||(Re={}));let $e=Re.UNKNOWN;function Le(e){$e=e}const Pe=[];function Ne(e,t){Pe.includes(e)||(T("[metric] adunit",{...De(e,t)}),Pe.push(e))}const Ue=new Map;function xe(e){const t=function(e){const t=performance.getEntriesByName(e);return t.length>0&&"mark"===t[0].entryType}(fe.GOOGLETAG_READY);Ue.set(e,t)}function De(e,t){return{adUnit:e,consentType:$e,eventOrigin:t,startAuctionFromConsent:Ee(e,fe.CMP_RESPONSE_AVAILABLE,pe.START_AUCTION),pbjsAuctionDuration:_e(e,pe.START_AUCTION,pe.END_PBJS_AUCTION),apsAuctionDuration:_e(e,pe.START_AUCTION,pe.END_APS_AUCTION),startAdServerCallFromConsent:Ee(e,fe.CMP_RESPONSE_AVAILABLE,pe.START_AD_SERVER_CALL),slotRenderEndedFromConsent:Ee(e,fe.CMP_RESPONSE_AVAILABLE,pe.SLOT_RENDER_ENDED_TIME),adServerResponseDuration:_e(e,pe.START_AD_SERVER_CALL,pe.SLOT_RESPONSE_RECEIVED_TIME),totalAdCallDuration:_e(e,pe.START_AUCTION,pe.SLOT_RENDER_ENDED_TIME),isGoogletagReadyAtPbjsAuctionEnd:Ue.get(e)}}function je(){const e=Ce(fe.BEGIN_INIT),t=Ie(ge.BEGIN_CONFIGURE),i=Ie(ge.BEGIN_START),n=Ie(ge.SPA_RELOAD),s=function(e){if(e.length>=2)return e[e.length-1]-e[e.length-2];return}(n),o={countSpaReloads:n.length,countConfigures:t.length,countStarts:i.length};e&&t.length>0&&(o.initToConfigure=t[t.length-1]-e),t.length>0&&i.length>0&&(o.configureToStart=i[i.length-1]-t[t.length-1]),s?o.diffSpaReload=s:t[0]&&n[0]&&(o.diffSpaReload=n[0]-t[0]),T("[metric] start",o)}const Me="[consent]";function Be(e){return new Promise(((t,i)=>{!function(e,t,i){(n=e,new Promise(((e,t)=>Ve(n,e)))).then((()=>{try{!function(e,t){const i=function(e){return e.__tcfapi}(e);i("addEventListener",2,(e=>{if(e&&("useractioncomplete"===e.eventStatus||"tcloaded"===e.eventStatus)){E(`${Me} Consent status`,e.eventStatus),ye(fe.CMP_RESPONSE_AVAILABLE);const i=function(e){if(!e.purpose.consents||0===Object.keys(e.purpose.consents).length)return!1;for(const t in e.purpose.consents)if(!e.purpose.consents[t])return!1;return!0}(e);Le(i?Re.WAIT_USER_CONSENT:Re.WAIT_USER_REFUSED),t(i)}}))}(e,t)}catch(e){k(`${Me} Error while loading tcf api`,e),i(e)}})).catch((e=>{k(`${Me} Error while loading tcf api`,e),i(e)}));var n}(e,t,i)}))}function Ve(e,t,i){const n=e.__tcfapi;n&&function(e){if("function"!=typeof e)throw new Error("__tcfapi is not a function");return!0}(n)?t():setTimeout((()=>Ve(e,t)),100)}const Fe="[context]";function ze(e){return e.map((e=>({key:e.key.toLowerCase(),defaultValue:e.defaultValue?e.defaultValue.toLowerCase():void 0,otherValues:e.otherValues?e.otherValues.map((e=>e.toLowerCase())):[]})))}function We(e,t,i){(function(e,t,i){const n=[],s=ze(t).filter((e=>void 0!==e.defaultValue)).map((e=>e.key.toLowerCase())),o=[];e.document.querySelectorAll('meta[name^="pbstck_context:"]').forEach((e=>{var t;const i=null===(t=e.attributes.getNamedItem("name"))||void 0===t?void 0:t.value.substring(15).toLowerCase();i&&o.push(i)}));for(const e of i)s.includes(e)&&!o.includes(e)&&n.push(e);return n})(e,t,i).forEach((e=>{_(`[context] Missing ${e} context key used in adunit path`)}))}const Ge={pbjsFinished:!1,apsFinished:!1},He="[executor] [instream]";class Je{constructor(e,t,i,n){this.rank=1,this.adServer=e,this.pbjs=t,this.aps=i,this.kleanadsRunCount=n}executeAdCall(e){setTimeout((()=>{Ne(e.divId,"executorTimeout")}),2e4),this.adServer.declareAdUnit(e),this.adUnitAuctionStatus?_(`${He} cannot make a new ad call, existing one on ${e.divId}.`):(w(`${He} executeAdCall for adunit`,e),this.startAuction(e))}executeRefresh(e){this.adServer.cleanTargetings();const t={labels:["pubstackRefresh",`pubstackRefreshRank:${e.rank}`]};this.startAuction(e.adUnit,t)}startAuction(e,t){this.adUnitAuctionStatus=Ge,Se(e.divId,pe.START_AUCTION),w(`${He} starting auctions for ${e.divId}`);const i=te.getInstance().kleanadsRunCount;if(this.pbjs){const n=this.pbjs.getPbjs();this.pbjs.startPbjsAuction([e],(()=>{this.kleanadsRunCount===i?this.pbjsFinished(n,e):w(`${He} kleanads run count has changed (from ${this.kleanadsRunCount} to ${i}), avoid calling pbjsFinished`)}),t)}this.aps&&this.aps.startApsAuction([e],(t=>{this.kleanadsRunCount===i?this.apsFinished(e,t):w(`${He} kleanads run count has changed (from ${this.kleanadsRunCount} to ${i}), avoid calling apsFinished`)})),this.pbjs||this.aps||this.adServer.executeWhenAdServerReady((()=>{this.kleanadsRunCount===i?this.callAdServer(e):w(`${He} kleanads run count has changed (from ${this.kleanadsRunCount} to ${i}), avoid calling AdServer`)}))}isAlreadyMonetized(){return!!this.adUnitAuctionStatus}pbjsFinished(e,t){w(`${He} pbjs end callback for ${t.divId}`,e.getAllPrebidWinningBids()),Se(t.divId,pe.END_PBJS_AUCTION),xe(t.divId),this.adServer.executeWhenAdServerReady((()=>{w(`${He} pbjs end callback ad server ready ${t.divId}`),this.adServer.setPbjsTargetings(e,t),this.adUnitAuctionStatus&&(this.adUnitAuctionStatus.pbjsFinished=!0),this.canCallAdServer()&&this.callAdServer(t)}))}apsFinished(e,t){w(`${He} aps end callback ${e.divId}`,t),Se(e.divId,pe.END_APS_AUCTION),this.adServer.executeWhenAdServerReady((()=>{w(`${He} aps end callback ad server ready ${e.divId}`),this.adServer.setApsTargetings(t),this.adUnitAuctionStatus&&(this.adUnitAuctionStatus.apsFinished=!0),this.canCallAdServer()&&this.callAdServer(e)}))}canCallAdServer(){const e=this.adUnitAuctionStatus;return this.aps&&!this.pbjs?e&&e.apsFinished:this.pbjs&&!this.aps?e&&e.pbjsFinished:this.pbjs&&this.aps?e&&e.apsFinished&&e.pbjsFinished:void 0}callAdServer(e){Se(e.divId,pe.START_AD_SERVER_CALL),this.adServer.callAdServer(e,(()=>{w(`${He} onCallFinished called, adding setTimeout to a new auction`),setTimeout((()=>{this.executeRefresh({adUnit:e,rank:this.rank}),this.rank++}),5e3)})),w(`${He} ad server called ${e.divId}`)}}let Ke=4400;const Ye="[APS]";let qe=!1,Xe=!1;function Qe(e){const t=e.apstag;if(t.kleanadsBlocker){w(`${Ye} getting apstag from blocker's methods`);const e=t;return{...t,fetchBids:e.fetchBidsKleanads,setDisplayBids:e.setDisplayBidsKleanads}}return t}class Ze{constructor(e,t){this.pubstackWindow=e,this.apsPubId=t}setEnableApsForTests(e){!function(e){k(`${Ye} this function should be used only for testing purpose`),qe=e}(e)}load(){!function(e){function t(t,i){var n,s;null===(s=null===(n=Qe(e))||void 0===n?void 0:n._Q)||void 0===s||s.push([t,i])}qe=!0,e.apstag||(e.apstag={_Q:[]}),e.apstag.init=(...e)=>t("i",e),e.apstag.fetchBids=(...e)=>t("f",e),e.apstag.setDisplayBids=()=>{},e.apstag.targetingKeys=()=>[],N("//c.amazon-adsystem.com/aax2/apstag.js")}(this.pubstackWindow)}startApsAuction(e,t){if(!qe)return w(`${Ye} skipping auction for adunits [${e.map((e=>e.divId)).join(",")}]`),void t([]);if(!Xe)return _(`${Ye} cannot start auction: apstag is not initialized`),void t([]);const i=Qe(this.pubstackWindow);if(!i)return _(`${Ye} cannot find apstag on the page`),void t([]);const n=function(e){return e.filter((e=>e.headerBiddingEnabled)).reduce(((e,t)=>{const i=t.mediaTypes;if(i.includes("Instream")){const t={slotID:"videoSlot",mediaType:"video",sizes:[[640,480]]};return[...e,t]}if(i.includes("Banner")){const i={slotID:t.divId,slotName:t.slotName,sizes:D(t.sizes)};return i.sizes.length?[...e,i]:e}if(i.includes("Outstream")){const i={slotID:t.divId,mediaType:"video",sizes:[[640,480]]};return[...e,i]}return[]}),[])}(e);if(0===n.length)return E(`${Ye} no slot created, not calling fetchbids`,n),void t([]);E(`${Ye} apsSlots created`,n);let s=!1;setTimeout((()=>{s||(_(`${Ye} fetchbids did not response before ${Ke}ms, calling callback`),s=!0,t([]))}),Ke),i.fetchBids({slots:n},(e=>{s||(s=!0,t(e))})),w(`${Ye} called fetchBids`,n)}initAps(e,t){if(qe){Ke=e+1400,E(`${Ye} configuring failsafe timeout to ${Ke}`);const i=Qe(this.pubstackWindow);if(!i)return void _(`${Ye} cannot find apstag on the page`);const n=null==t?void 0:t.config;i.init({pubID:this.apsPubId,adServer:"googletag",bidTimeout:e,deals:!0,videoAdServer:"DFP",schain:n},(()=>{E(`${Ye} apstag init done`),ye(fe.APSTAG_READY),T("[metric] apstag",{consentType:$e,apstagReady:we(fe.CMP_RESPONSE_AVAILABLE,fe.APSTAG_READY)})})),Xe=!0}else w(`${Ye} apstag init skipped`)}}const et="[GAM]",tt="pbstck_ab_test",it="xp_variant",nt=[3,1];let st=!1;const ot=[];function at(e){return new Promise(((t,i)=>dt(e,t,i)))}const rt=50;function dt(e,t,i){if(e.googletag)try{e.googletag.apiReady?t():setTimeout((()=>dt(e,t,i)),rt)}catch(e){i(e)}else setTimeout((()=>dt(e,t,i)),rt)}function lt(e,t,i,n,s){at(e).then((()=>{var o,a;w(`${et} googletag ready, starting initialization`),e.googletag.pubads().disableInitialLoad(),(null==n?void 0:n.disableSingleRequest)?E(`${et} single request disabled`):e.googletag.pubads().enableSingleRequest()||k("unable to enable single request"),function(e,t,i){const n=e.googletag.pubads();t.forEach(((e,t)=>{e&&n.setTargeting(t,e)}));const s=d(e);E("[targetings] setting page level targetings from meta declaration",s),Object.keys(s).forEach((e=>{n.setTargeting(e,s[e])})),n.setTargeting(u,"1");const o=te.getInstance().grapeshotValues;(null==o?void 0:o.length)&&(E(`${et} grapeshot: setting gs_cat gam targeting values`,o),n.setTargeting("gs_cat",o));const a=null==i?void 0:i.filter((e=>e.gamTargeting));(null==a?void 0:a.length)&&(E(`${et} setting ab_test gam targeting values`,a),a.forEach((e=>{n.setTargeting(e.name,e.value)})));if(te.getInstance().uprTested){E(`${et} setting xp_variant/pbstck_ab_test gam targeting value any previous value will be ignored`);const e=`floor_optimization:${te.getInstance().uprEnabled}`;n.setTargeting(it,e),n.setTargeting(tt,e)}}(e,t,s),n&&n.ppidValue&&e.googletag.pubads().setPublisherProvidedId(n.ppidValue),n&&(null==n?void 0:n.threadYieldConfig)&&e.googletag.setConfig({threadYield:n.threadYieldConfig}),e.googletag.enableServices(),(null===(o=null==i?void 0:i.lazyLoadingGoogle)||void 0===o?void 0:o.googleFetchMarginPercent)&&(null===(a=null==i?void 0:i.lazyLoadingGoogle)||void 0===a?void 0:a.googleRenderMarginPercent)&&e.googletag.pubads().enableLazyLoad({fetchMarginPercent:i.lazyLoadingGoogle.googleFetchMarginPercent,renderMarginPercent:i.lazyLoadingGoogle.googleRenderMarginPercent,mobileScaling:i.lazyLoadingGoogle.googleMobileScaling}),e.googletag.pubads().setCentering(!0),w("googletag initialized"),st=!0,ot.forEach((e=>e())),ye(fe.GOOGLETAG_READY),T("[metric] googletag",{consentType:$e,googletagReady:we(fe.CMP_RESPONSE_AVAILABLE,fe.GOOGLETAG_READY),adUnitWithAuctionEnded:Array.from(Ue.keys())}),E("GAM","googletag slotRenderEnded listener added"),e.googletag.pubads().addEventListener("slotRenderEnded",ct),e.googletag.pubads().addEventListener("slotResponseReceived",ut)}))}const ct=e=>{const t=e.slot,i=t.getSlotElementId();Se(i,pe.SLOT_RENDER_ENDED_TIME),Ne(i,"slotRenderEnded"),function(e,t){oe(t,ie),oe(t,ne),E(`removed price rule targetings (${ne} & ${ie}) from slot ${e}`)}(i,t),E(`slot render ended for ${i}`)},ut=e=>{const t=e.slot.getSlotElementId();E(`slot response received for ${t}`),Se(t,pe.SLOT_RESPONSE_RECEIVED_TIME)};function ht(e,t){for(const i of e.getTargetings()){const n=H(i),s=i.key;t.setTargeting(s,n),E(`${et} adding targeting (${s}, ${n}) to adunit ${e.divId}`)}t.setTargeting("ad_adunitname",[e.adServerAdUnitName])}function ft(e){st?e():ot.push(e)}class gt{constructor(e,t){this.externalTargetingDeclarations=[],this.googletagSlotsInitialized={},this.pubstackWindow=e,this.prebidOrderIds=t}prebidReady(){}init(e,t,i,n){lt(this.pubstackWindow,e,t,i,n)}declareAdUnits(e){return this.declareGoogleSlots(e)}registerExternalTargetingDeclaration(e){this.externalTargetingDeclarations.push(e)}clean(){this.externalTargetingDeclarations=[],this.executeWhenAdServerReady((()=>{w(`${et} cleaning slots`,this.pubstackWindow.googletag.pubads().getSlots().map((e=>e.getSlotElementId())),this.pubstackWindow.googletag.pubads().getSlots());const e=[];this.pubstackWindow.googletag.pubads().getSlots().forEach((t=>{const i=this.pubstackWindow.googletag.destroySlots([t]);E(`${et} slot ${t.getSlotElementId()} destroyed ? ${i}`),i||(e.push(t),w(`${et} slot ${t.getSlotElementId()} not destroyed, retrying later`))})),e.length?k(`${et} unable to destroy slot ${pt(e)}`):E(`${et} all slots destroyed`),this.pubstackWindow.googletag.pubads().removeEventListener("slotRenderEnded",ct),this.pubstackWindow.googletag.pubads().removeEventListener("slotResponseReceived",ut),ot.splice(0)}))}setPbjsTargetings(e,t){e?(E(`${et} try to put pbjs targeting keys for ${t.map((e=>e.divId)).join(",")}`),t.forEach((t=>{const i=this.getSlot(t,"setPbjsTargetings");i&&function(e,t,i){i.getTargetingKeys().forEach((e=>{"bid_"!==e.substring(0,4)&&"hb_"!==e.substring(0,3)||i.clearTargeting(e)}));const n=t.getAdserverTargetingForAdUnitCode(e.divId);for(const t of Object.keys(n)){const s=n[t];se(s)?i.setTargeting(t,s):_(`[targeting] unable to set targeting ${t}=${s} on adUnit ${e.divId}`)}i.setTargeting("kuc_version","2408211643")}(t,e,i)}))):k(`${et} no pbjs given: unable to put header bidding targetings`)}setApsTargetings(e,t){E(`${et} putting targeting keys for aps auction`,t),function(e){var t;null===(t=Qe(e))||void 0===t||t.setDisplayBids()}(this.pubstackWindow)}setRefreshTargeting(e){const t=this.getSlot(e.adUnit,"setPbjsTargetings");var i,n;t&&(i=t,n=e.rank,i.setTargeting("ad_refresh","1"),i.setTargeting("pbstck_refresh","1"),i.setTargeting("ad_refresh-rank",function(e){return e<10?`${e}`:"10-more"}(n)))}callAdServer(e){E(`${et} preparing call to GAM for ${e.map((e=>e.divId)).join(",")}`,e);const t=this.pubstackWindow.googletag.pubads().getSlots(),i=e.map((e=>({adUnit:e,slot:t.find((t=>t.getSlotElementId()===e.divId))}))).filter((e=>!!e.slot));i.forEach((({adUnit:e,slot:t})=>ht(e,t)));const n=i.map((({slot:e})=>e));w(`${et} calling GAM with ${n.length} slots`,pt(n)),O("googletag:refresh",{slotIds:n.map((e=>e.getSlotElementId()))}),this.refresh(n)}refresh(e){e.every((e=>this.googletagSlotsInitialized[e.getSlotElementId()]))?this.pubstackWindow.googletag.pubads().refresh(e):setTimeout((()=>this.refresh(e)),50)}executeWhenAdServerReady(e){st?e():ot.push(e)}renderListener(e){ft((()=>{this.renderListenerCallback=t=>{const i=t.slot,n=t.campaignId,s={divId:i.getSlotElementId(),creativeId:t.creativeId,lineItemId:t.lineItemId,orderId:n,size:vt(t),isEmpty:t.isEmpty,advertiserId:t.advertiserId};if(n&&this.prebidOrderIds.includes(n)){const e=i.getTargeting(ae);e&&(s.hb_bidder=Array.isArray(e)?e[0]:e);const t=i.getTargeting(re);t&&t[0]&&(s.size=j(t[0]));const n=i.getTargeting(de);n&&(s.hb_mediaType=Array.isArray(n)?n[0]:n)}e(s)},this.pubstackWindow.googletag.pubads().addEventListener("slotRenderEnded",this.renderListenerCallback)}))}removeRenderListener(){this.renderListenerCallback&&(E("GAM","removing render listener"),this.pubstackWindow.googletag.pubads().removeEventListener("slotRenderEnded",this.renderListenerCallback))}getSlot(e,t){const i=this.pubstackWindow.googletag.pubads().getSlots().filter((t=>t.getSlotElementId()===e.divId));if(0!==i.length)return i.length>1&&k(`${et} multiple slot found for adunit ${e.divId} on operation ${t}`),i[0];k(`${et} slot not found for adunit ${e.divId} on operation ${t}`)}declareGoogleSlots(e){return new Promise((t=>{ft((()=>{const i=e.sort(z),n=[],s=[];i.forEach((e=>{var t,i,o;if("interstitial"===e.outOfPageType){const t=window.googletag.defineOutOfPageSlot(e.adUnitPath,googletag.enums.OutOfPageFormat.INTERSTITIAL);t?(t.addService(googletag.pubads()),n.push(t),s.push(t),ht(e,t)):k(`${et} unable to create interstitial slot for ${e.divId}`)}else if(document.getElementById(e.divId)){let n;if("default"===e.outOfPageType)n=null===(t=window.googletag.defineOutOfPageSlot(e.adUnitPath,e.divId))||void 0===t?void 0:t.addService(googletag.pubads());else{const t=[nt,...e.sizes,...null!==(i=e.extraAdServerSizes)&&void 0!==i?i:[]];n=null===(o=window.googletag.defineSlot(e.adUnitPath,t,e.divId))||void 0===o?void 0:o.addService(googletag.pubads())}n?(E(`${et} slot created, displaying ${e.divId}`),googletag.display(e.divId),s.push(n)):k(`${et} unable to create slot for ${e.divId}`)}else E(`${et} unable to display ${e.divId}, the div does not exist`)}));const o=s.map((e=>`\n${e.getSlotElementId()} (${e.getAdUnitPath()})`)).join();if(w(`${et} slots defined for ${o}`),n.forEach((e=>{E(`${et} calling googletag.display for interstitial slot`,e),googletag.display(e)})),n.length>0&&googletag.pubads().refresh(n),this.externalTargetingDeclarations.length>0){const e=performance.now();let i;const n=new Promise((e=>{i=setTimeout((()=>{_(`${et} failsafe promise for external targeting declarations, some targetings may be missing`),e()}),3e3)}));Promise.race([Promise.all(this.externalTargetingDeclarations.map((e=>e(s)))).then((()=>{i&&clearTimeout(i)})),n]).then((()=>{const i=performance.now();E(`${et} external targetings declarations took ${i-e}ms`),s.forEach((e=>{this.googletagSlotsInitialized[e.getSlotElementId()]=!0})),t()}))}else s.forEach((e=>{this.googletagSlotsInitialized[e.getSlotElementId()]=!0})),t()}))}))}}function pt(e){return e.map((e=>({id:e.getSlotElementId(),path:e.getAdUnitPath()})))}function vt(e){return e.size}const mt="[Local-AdServer]";class bt{constructor(){this.managedDivs=[],this.callbacks=[]}prebidReady(e){this.pbjs=e}callAdServer(e){this.pbjs?(w(`${mt} callAdServer`,e),e.forEach((e=>{if(this.managedDivs.includes(e.divId)){const t=this.pbjs.getHighestCpmBids(e.divId);if(t.length>0){const e=t[0];try{!function(e,t){var i,n;if(w(`${mt} renderOne`,t),!t||!t.adId)throw new Error(`${mt} no winning bid or adId provided ${t}`);{const s=document.getElementById(t.adUnitCode);if(!s)throw new Error(`${mt} unable to find div ${t.adUnitCode}`);{const o=s.getElementsByTagName("iframe");w(`${mt} found ${o.length} iframe to remove`),Array.from(o).forEach((e=>e.remove()));const a=document.createElement("iframe");a.scrolling="no",a.frameBorder="0",a.marginHeight="0",a.name=`prebid_ads_iframe_${t.adUnitCode}`,a.title="3rd party ad content",null===(i=a.sandbox)||void 0===i||i.add("allow-forms","allow-popups","allow-popups-to-escape-sandbox","allow-same-origin","allow-scripts","allow-top-navigation-by-user-activation"),a.setAttribute("aria-label","Advertisment"),a.style.setProperty("border","0"),a.style.setProperty("margin","0"),a.style.setProperty("overflow","hidden"),s.appendChild(a);const r=null===(n=a.contentWindow)||void 0===n?void 0:n.document;if(!r)throw new Error(`${mt} error while getting document from iframe`);{e.renderAd(r,t.adId);const i="/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}",n=r.createElement("style");n.appendChild(r.createTextNode(i)),r.head.appendChild(n)}}}}(this.pbjs,e);const t={divId:e.adUnitCode,isEmpty:!1,hb_bidder:e.adserverTargeting.bid_bidder,hb_mediaType:e.adserverTargeting.bid_mediatype,size:e.adserverTargeting.bid_size?j(e.adserverTargeting.bid_size):null,advertiserId:null,lineItemId:null,orderId:null,creativeId:null};this.renderListenerCallback(t)}catch(e){k(`${mt} unable to render: ${e}`)}}else{const t={divId:e.divId,isEmpty:!0,size:null,advertiserId:null,lineItemId:null,orderId:null,creativeId:null};this.renderListenerCallback(t)}}}))):k(`${mt} pbjs is not available`)}clean(){w(`${mt} cleanAdUnits - START`),this.managedDivs.forEach((e=>{const t=document.getElementById(e);if(t){const e=t.getElementsByTagName("iframe");w(`${mt} found ${e.length} iframe to remove`),Array.from(e).forEach((e=>e.remove()))}})),this.managedDivs=[],w(`${mt} cleanAdUnits - END`,this.managedDivs)}declareAdUnits(e){return w(`${mt} declareAdUnits (adUnits, managedDivs)`,e,this.managedDivs),e.forEach((e=>{this.managedDivs.includes(e.divId)?k(`${mt} adUnit already declared ${e.divId}`):this.managedDivs.push(e.divId)})),Promise.resolve(void 0)}executeWhenAdServerReady(e){w(`${mt} executeWhenAdServerReady`,e),e()}init(e,t,i,n){w(`${mt} init (nothing to do), this are the input params:`,e,t,i,n)}removeRenderListener(){w(`${mt} removeRenderListener`),this.callbacks=[]}renderListenerCallback(e){w(`${mt} renderListenerCallback called event:`,e),this.callbacks.forEach((t=>t(e)))}renderListener(e){w(`${mt} renderListener`,e),this.callbacks.push(e)}setApsTargetings(){}setPbjsTargetings(){}setRefreshTargeting(){}registerExternalTargetingDeclaration(){}}function yt(e,t,i,n,s){const o=`${n}_${s}`;navigator.sendBeacon(`https://intake.pbstck.com/v1/intake/gam-impression?sId=${t}&tId=${e}&c=1&s=${o}&v=${i}`)}class At{constructor(){this.name="AdServer",this.scriptLoaded=!1,this.loaded=!1}get adServer(){return this._adServer}isLoaded(){return this.loaded}async load(){this.loaded=!0}async onAfterConsentRefused({config:e}){var t;if(!this._adServer)switch(e.consentlessMode){case"GAM":this._adServer=new gt(window,(null===(t=e.globalRefreshConfig)||void 0===t?void 0:t.prebidOrderIds)||[]),this._adServer.renderListener((t=>{t.isEmpty||yt(e.tagId,e.stack.scopeId,e.kleanadsVersion,e.stack.stackId,e.stackVersion)})),this.scriptLoaded||(N("https://pagead2.googlesyndication.com/tag/js/gpt.js"),this.scriptLoaded=!0);break;case"local":this._adServer=new bt;break;default:w("AdServerModule - onAfterConsentRefused - no ad server configured for consentless")}}async onAfterConsentAccepted({config:e}){var t;this._adServer||(this._adServer=new gt(window,(null===(t=e.globalRefreshConfig)||void 0===t?void 0:t.prebidOrderIds)||[]),this._adServer.renderListener((t=>{t.isEmpty||yt(e.tagId,e.stack.scopeId,e.kleanadsVersion,e.stack.stackId,e.stackVersion)})),this.scriptLoaded||(N("https://securepubads.g.doubleclick.net/tag/js/gpt.js"),this.scriptLoaded=!0))}async onStackConfigLoad({config:e,stackConfig:t}){this._adServer?this._adServer.init(e.pageContext,t.lazyLoading,t.gamConfig,t.runningABTest):k("AdServerModule - onStackConfigLoad - no ad server configured")}async onPrepareAdUnits({toPreparedAdUnits:e}){var t;const i=(null!=e?e:[]).filter((e=>!e.mediaTypes.includes("Instream")));return null===(t=this._adServer)||void 0===t?void 0:t.declareAdUnits(i)}async onAfterPrebidReady({prebid:e}){const t=e.getPbjs();this._adServer?this._adServer.prebidReady(t):k("AdServerModule - onAfterPrebidReady - no ad server configured")}async clean(){this._adServer?this._adServer.clean():k("AdServerModule - clean - no ad server configured")}}function St(e,t,i,n,s,o){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var r,d=n.kind,l="getter"===d?"get":"setter"===d?"set":"value",c=!t&&e?n.static?e:e.prototype:null,u=t||(c?Object.getOwnPropertyDescriptor(c,n.name):{}),h=!1,f=i.length-1;f>=0;f--){var g={};for(var p in n)g[p]="access"===p?{}:n[p];for(var p in n.access)g.access[p]=n.access[p];g.addInitializer=function(e){if(h)throw new TypeError("Cannot add initializers after decoration has completed");o.push(a(e||null))};var v=(0,i[f])("accessor"===d?{get:u.get,set:u.set}:u[l],g);if("accessor"===d){if(void 0===v)continue;if(null===v||"object"!=typeof v)throw new TypeError("Object expected");(r=a(v.get))&&(u.get=r),(r=a(v.set))&&(u.set=r),(r=a(v.init))&&s.unshift(r)}else(r=a(v))&&("field"===d?s.unshift(r):u[l]=r)}c&&Object.defineProperty(c,n.name,u),h=!0}function It(e,t,i){for(var n=arguments.length>2,s=0;s<t.length;s++)i=n?t[s].call(e,i):t[s].call(e);return n?i:void 0}function Ct(e,t,i){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:i?"".concat(i," ",t):t})}function wt(e){return function(t,i){return class extends t{constructor(){super(...arguments),this.deferLoadingTo=e}}}}"function"==typeof SuppressedError&&SuppressedError;let Et=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];return t=class{constructor(){this.name="Aps"}get aps(){return this._aps}isLoaded(){return!!this._aps}async load({stackConfig:e}){var t;this._aps=function(e,t){if(e&&t.some((e=>e.headerBiddingEnabled&&(e.isInstream||e.canOutstream||e.sizes.some((e=>"fluid"!==e)))))){w(`${Ye} downloading amazon apstag`);const t=new Ze(window,e);return t.load(),t}}(null===(t=e.tamConfig)||void 0===t?void 0:t.apsPubId,e.adUnits)}async onStackConfigLoad({config:e,stackConfig:t}){var i,n,s,o,a;const r=(null===(i=t.tamConfig)||void 0===i?void 0:i.disableSchain)||null===(n=t.prebidConfig)||void 0===n?void 0:n.pbjsConfig.schain;null===(s=this._aps)||void 0===s||s.initAps(null!==(a=null===(o=t.prebidConfig)||void 0===o?void 0:o.adCallTimeout)&&void 0!==a?a:e.adCallTimeout,r)}async clean(){}},Ct(t,"ApsModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();const _t="[ModuleService]";class kt{constructor(e,t){this.modules=t,this.lifecycleState={config:e},E(_t,`${t.length} modules registered : ${t.map((e=>e.name)).join(", ")}`)}getModules(){return this.modules}getLoadedModuleInstance(e){return this.modules.filter((e=>e.isLoaded())).find((t=>t instanceof e))}async loadModules(e){e.length&&E(_t,`Loading modules : ${e.map((e=>e.name)).join(", ")}`);for(const t of e)try{await t.load(this.lifecycleState)}catch(e){k(_t,`Error while loading module ${t.name}`,e)}}async loadInitialModules(){const e=this.modules.filter((e=>!e.deferLoadingTo&&!e.isLoaded()));E(_t,`Loading initial modules. ${e.length} modules to load`),await this.loadModules(e)}async modulesDispatchEvent(e,...t){this.lifecycleState={...this.lifecycleState,...t[0]};const i=this.lifecycleState,n=this.modules.filter((t=>t.deferLoadingTo===e&&!t.isLoaded()));return E(_t,`event call: ${e}. ${n.map((e=>e.name)).join(", ")}`),await this.loadModules(n),new Promise((t=>{var n;const s=this.modules.filter((t=>t.isLoaded()&&t[e]&&"function"==typeof t[e]));E(_t,`event call: ${e}. ${s.map((e=>e.name)).join(", ")}`);const o=[];for(const t of s){const s=null===(n=t[e])||void 0===n?void 0:n.call(t,i);s instanceof Promise&&o.push(s)}t(o)}))}async modulesCleanUp(){const e=this.modules.filter((e=>e.isLoaded()));e.length&&E(_t,`Cleaning modules : ${e.map((e=>e.name)).join(", ")}`);for(const t of e)await t.clean(this.lifecycleState);this.modules=[]}}const Tt=[];for(let e=0;e<256;++e)Tt.push((e+256).toString(16).slice(1));let Ot;const Rt=new Uint8Array(16);function $t(){if(!Ot){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ot=crypto.getRandomValues.bind(crypto)}return Ot(Rt)}var Lt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Pt(e,t,i){if(Lt.randomUUID&&!t&&!e)return Lt.randomUUID();const n=(e=e||{}).random||(e.rng||$t)();return n[6]=15&n[6]|64,n[8]=63&n[8]|128,function(e,t=0){return(Tt[e[t+0]]+Tt[e[t+1]]+Tt[e[t+2]]+Tt[e[t+3]]+"-"+Tt[e[t+4]]+Tt[e[t+5]]+"-"+Tt[e[t+6]]+Tt[e[t+7]]+"-"+Tt[e[t+8]]+Tt[e[t+9]]+"-"+Tt[e[t+10]]+Tt[e[t+11]]+Tt[e[t+12]]+Tt[e[t+13]]+Tt[e[t+14]]+Tt[e[t+15]]).toLowerCase()}(n)}const Nt="[pbjs][initPbjs][sublime]";function Ut(e,t){const i=function(e,t){var i;const n=e.filter((e=>e.bidders.find((e=>Dt(e.bidder,t)))));if(0===n.length)return;if(n.length>1)return void _(`${Nt} Sublime bidder has multiple adUnits ${n.map((e=>e.divId)).join("")}`,n);const s=null===(i=n[0].bidders.find((e=>Dt(e.bidder,t))))||void 0===i?void 0:i.params;if(s){const e=s.zoneId;if(e&&("string"==typeof e||"number"==typeof e))return`${e}`}else _(`${Nt} unable to extract Sublime zoneId from ${n[0].divId}`,n[0])}(e,t);if(i){const e=`https://sac.ayads.co/sublime/${i}/prebid`;E(`${Nt} loading sublime script ${e}`),N(e)}}function xt(e,t){const i=function(){window.sublime=window.sublime||{};const e=window.sublime.notifyId||Pt();return window.sublime.notifyId=e,e}();return Dt(e.bidder,t)?(E(`${Nt} generate notify id`),{...e,params:{...e.params,notifyId:i}}):e}function Dt(e,t=[]){return"sublime"===e||(null==t?void 0:t.some((t=>"sublime"===t.bidderSource&&t.bidderLabel===e)))}const jt=(e,t)=>e.delimiter===t.delimiter&&"|"===e.delimiter&&e.fields.length+1===t.fields.length&&e.fields.every(((e,i)=>e===t.fields[i])),Mt=1900,Bt="[pbjs]";function Vt(e,t=[]){const i=null==t?void 0:t.map((e=>e.bidderSource));return Array.from(new Set(e.flatMap((e=>e.bidders)).map((e=>e.bidder)).concat(i)))}function Ft(e,t,i,n,s){var o,a,r,d;E(`${Bt}[initPbjs] Start prebid initialization`);const{currency:l,userSync:c,priceGranularity:u,bidderAdjustments:h,bidderAliases:f,bidderConfigs:g,floors:p,analytics:v,schain:m,outbrain:b,realTimeData:y,allowLocalStorage:A,fledgeForGpt:S,paapi:I,dsaConfig:C,s2sConfig:k,enableTIDs:O}=i,R=Vt(t,f);if(e.setConfig(n),l&&(E(`${Bt}[initPbjs] set currency config`,l),e.setConfig({currency:l,priceGranularity:"dense"}),u&&(E(`${Bt}[initPbjs] set priceGranularity config`,u),e.setConfig({priceGranularity:u}))),k&&(E(`${Bt}[initPbjs] set prebid server config`,k),e.setConfig({s2sConfig:k})),c){const t=null!==(o=null==k?void 0:k.bidders)&&void 0!==o?o:[],i=($=f,["optidigital","richaudience","justpremium","impactify","smilewanted","onetag","connectad","adagio","appnexus"].flatMap((e=>function(e,t){return[e,...(null==t?void 0:t.filter((t=>t.bidderSource===e)).map((e=>e.bidderLabel)))||[]]}(e,$)))),n={filterSettings:{iframe:{bidders:[...new Set(i.concat(t))],filter:"include"},image:{bidders:"*",filter:"include"}},...c};E(`${Bt}[initPbjs] set userSync config`,n),e.setConfig({userSync:n})}var $;if(b&&(E(`${Bt}[initPbjs] set Outbrain config:`,b),e.setConfig({outbrain:b})),y&&(E(`${Bt}[initPbjs] set realTimeData config`,y),e.setConfig({realTimeData:y})),p&&(E(`${Bt}[initPbjs] set floors config`,p),e.setConfig({floors:p})),v&&(w(`${Bt}[initPbjs] enable analytics`,v),e.enableAnalytics(v)),m&&(E(`${Bt}[initPbjs] set schain config`,m),e.setConfig({schain:m})),S&&e.setConfig({fledgeForGpt:{enabled:!0}}),I&&e.setConfig({paapi:I}),g){E(`${Bt}[initPbjs] set bidder config`,g);for(const t of g)e.setBidderConfig(t)}const L={};if(h){E(`${Bt}[initPbjs] set bidder adjustments config`,h);for(const e of h)L[e.bidder]={bidCpmAdjustment:function(t){return t*e.adjustment}}}if(A)for(const e of R)L[e]={...L[e],storageAllowed:!0};if(L.standard={adserverTargeting:[{key:ae,val:function(e){return e.bidderCode}},{key:"bid_id",val:function(e){return e.adId}},{key:"bid_cpm",val:function(e){return e.pbCg}},{key:re,val:function(e){return e.size}},{key:de,val:function(e){return e.mediaType}},{key:"bid_videoId",val:function(e){return e.videoCacheKey}}]},s&&te.getInstance().uprEnabled&&(L.standard={adserverTargeting:[...L.standard.adserverTargeting,{key:"prkv",val:e=>zt(e,s)},{key:"ad_floor-rule",val:e=>zt(e,s)}]}),Object.keys(L).length>0&&(e.bidderSettings=L),f){E(`${Bt}[initPbjs] set alias bidder`,f);for(const t of f)e.aliasBidder(t.bidderSource,t.bidderLabel)}if(Gt(t,"sublime",f)&&Ut(t,f),null===(a=e.installedModules)||void 0===a?void 0:a.includes("utiqSystem")){const t=localStorage.getItem("utiqPass");if(t)try{const i=JSON.parse(t),n=null!==(null===(d=null===(r=null==i?void 0:i.connectId)||void 0===r?void 0:r.idGraph)||void 0===d?void 0:d[0].atid);E(`${Bt}[initPbjs] set Utiq key values isUtiqPresent=`,n),e.mergeConfig({ortb2:{site:{keywords:"isUtiqPresent="+n}}})}catch(e){_(`${Bt}[initPbjs] Utiq config is not valid JSON, ${e}`,t)}}C&&(E(`${Bt}[initPbjs] set DSA config`,C),e.mergeConfig({ortb2:{regs:{ext:{dsa:C}}}})),Gt(t,"criteo",f)&&e.setConfig({criteo:{fastBidVersion:"latest"}}),void 0!==O&&(E(`${Bt}[initPbjs] setting enableTIDs to`,O),e.setConfig({enableTIDs:O})),te.getInstance().disableGptPreAuction&&e.setConfig({gptPreAuction:{enabled:!1}}),ye(fe.PREBID_READY),T("[metric] pbjs",{consentType:$e,pbjsReady:we(fe.CMP_RESPONSE_AVAILABLE,fe.PREBID_READY)}),w(`${Bt}[initPbjs] Prebid is initialized`)}function zt(e,t){const i=e.cpm,n=i>0?function(e,t){let i;if(t.forEach((t=>{const n=parseFloat(t.max);n>e&&(i=!i||n<parseFloat(i.max)?t:i)})),!i)return Math.max(...t.map((e=>parseFloat(e.max))));const n=parseFloat(i.increment);return parseFloat((Math.floor(e/n)*n).toFixed(2))}(i,t):0,s=Math.max(...t.map((e=>parseFloat(e.max))));return Math.min(n,s).toFixed(2)}function Wt(e,t,i,n){const s=t.filter((e=>e.headerBiddingEnabled&&e.bidders.length>0));E(`${Bt} using only ad units with prebid enabled`,s);const o=s.flatMap((t=>{if(t.dynamicPrebidFloor){const i=e.getHighestCpmBids(t.divId);if(i.length>0){const e=i[0].cpm;return Z(t,Math.floor(100*e)/100)}}return Z(t)}));if(o.length>0){const t=null==n?void 0:n.timeout,a=null==n?void 0:n.labels,r=function(e){const t=e.getConfig("bidderTimeout");if(t){if("number"==typeof t)return t+Mt;if(parseInt(t))return parseInt(t)+Mt}return 3e3+Mt}(e);let d=!1;setTimeout((()=>{d||(_(`${Bt} prebid requestBids did not response before ${r}ms, calling callback`),d=!0,i())}),r);const l=()=>{d||(d=!0,i())};if(!(e=>1===new Set(e.map((e=>e.floors)).filter((e=>void 0!==e)).map((e=>[...e.schema.fields,e.schema.delimiter].join("")))).size)(s)){const e=(e=>e.map((e=>e.floors)).filter((e=>void 0!==e)).map((e=>e.schema)).reduce(((e,t)=>(e?t.fields.length>e.fields.length&&(e=t):e=t,e)),void 0))(s);e&&(E(`${Bt} floors schema are not the same, unifying schema`),((e,t)=>{e.forEach((i=>{var n;if(i.floors&&(null===(n=i.floors)||void 0===n?void 0:n.schema)!==t){const n=i.floors.schema;if(jt(n,t)){i.floors.schema=t;const e=i.floors.values;i.floors.values={};for(const t of Object.keys(e))i.floors.values[`${t}|*`]=e[t]}else k(`Unable to unify schema for adUnits ${e.map((e=>e.divId)).join(", ")}.`,t)}}))})(s,e))}e.requestBids({timeout:t,adUnits:o,bidsBackHandler:l,labels:a}),w(`${Bt} called requestBids`,o)}else w(`${Bt} no prebid auction to start for [${t.map((e=>e.divId)).join(",")}]`),i()}function Gt(e,t,i){const n=e.flatMap((e=>e.bidders)).map((e=>e.bidder)),s=[...new Set(n)],o=[t,...(null==i?void 0:i.filter((e=>e.bidderSource===t)).map((e=>e.bidderLabel)))||[]];return s.some((e=>null==o?void 0:o.includes(e)))}class Ht{constructor(e){this.pbjs=e.getPbjs()}initPbjs(e,t,i,n){Ft(this.pbjs,e,t,i,n)}extractUniqAdaptersName(e,t=[]){return Vt(e,t)}roundUpToNearestIncrement(e,t){return function(e,t){const i=e.sort(((e,t)=>e.max<t.max?-1:1)),n=i.filter((e=>t<=e.max));if(0===n.length)return w(`${Bt}[Price granularity] round up - initial CpmValue : ${t} // rounded value : ${i[i.length-1].max} `),i[i.length-1].max.toFixed(2);const s=n[0].increment;let o=t%s==0?t:t+(s-t%s);const a=t.toString().split("."),r=a.length>1?a[1].split("").length:0;(o-s).toFixed(r)===t.toFixed(r)&&(o=t);const d=o.toFixed(2);return w(`${Bt}[Price granularity] round up - initial CpmValue : ${t} // rounded value : ${d} `),d}(e,t)}startPbjsAuction(e,t,i){Wt(this.pbjs,e,t,i)}getPbjs(){return this.pbjs}setContextValuesAsTargeting(e,t,i){const n={};for(const[t,i]of e)n[t]=i;for(const e in t)1===t[e].length?n[e]=t[e][0]:n[e]=t[e];this.pbjs.setBidderConfig({bidders:i,config:{ortb2:{site:{ext:{data:n}}},appnexusAuctionKeywords:n}})}}let Jt=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];return t=class{constructor(){this.name="Prebid"}get pbjs(){return this._pbjs}isLoaded(){return!!this._pbjs}async load({config:e,stackConfig:t}){this._pbjs=await async function(e,t){if(t.some((e=>e.headerBiddingEnabled&&e.bidders.length)))try{const t=await P(e);return new Ht(t)}catch(e){return void k("[config] Error while loading the kleanadsPbjs module",e)}}(e.newPrebidUrl,t.adUnits),this._pbjs&&this.aliasWindowPbjs(window,this._pbjs.getPbjs())}async onStackConfigLoad({config:e,stackConfig:t}){var i,n,s;if(!this._pbjs)throw new Error("PrebidModule is not loaded");const o=null!==(n=null===(i=null==t?void 0:t.prebidConfig)||void 0===i?void 0:i.adCallTimeout)&&void 0!==n?n:e.adCallTimeout,a=t.prebidConfig.pbjsConfig,r={gdpr:{cmpApi:"iab",timeout:8e3,defaultGdprScope:!0}},l=this._pbjs.getPbjs().installedModules;l.includes("consentManagementUsp")&&(r.usp={cmpApi:"iab",timeout:8e3}),l.includes("consentManagementGpp")&&(r.gpp={cmpApi:"iab",timeout:8e3}),l.includes("anonymisedRtdProvider")&&(r.gdpr.rules=[{purpose:"storage",enforcePurpose:!0,enforceVendor:!0,vendorExceptions:["anonymised"]}]);const c={bidderTimeout:o,useBidCache:!0,maxRequestsPerOrigin:6,consentManagement:e.noCmp?void 0:r,enableSendAllBids:!1,pageUrl:document.location.href,cache:{url:"https://prebid.adnxs.com/pbc/v1/cache",ignoreBidderCacheKey:!0},timeoutBuffer:400};if(this._pbjs.initPbjs(t.adUnits,a,c,e.priceRuleBuckets),null===(s=null==a?void 0:a.targetingBehaviors)||void 0===s?void 0:s.sendKVTargetings){const i=d(window),n=this._pbjs.extractUniqAdaptersName(t.adUnits,a.bidderAliases).filter((e=>{var t;return!(null===(t=a.targetingBehaviors)||void 0===t?void 0:t.biddersBlackList.includes(e))}));this._pbjs.setContextValuesAsTargeting(e.pageContext,i,n)}}async clean(){var e;this.setDefaultPbjsConfig();const t=null===(e=this._pbjs)||void 0===e?void 0:e.getPbjs();t&&(t.bidderSettings={})}aliasWindowPbjs(e,t){e.pbjs=t}setDefaultPbjsConfig(){var e;null===(e=this._pbjs)||void 0===e||e.getPbjs().setConfig({bidderTimeout:3e3,enableSendAllBids:!0,useBidCache:!1,deviceAccess:!0,timeoutBuffer:400,disableAjaxTimeout:!1,maxNestedIframes:10,priceGranularity:"medium",customPriceBucket:{},mediaTypePriceGranularity:{},bidderSequence:"random",auctionOptions:{},userSync:{syncEnabled:!0,filterSettings:{image:{bidders:"*",filter:"include"}},syncsPerBidder:5,syncDelay:3e3,auctionDelay:0}})}},Ct(t,"PrebidModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();class Kt{constructor(e,t){this.pubstackWindow=e,this.rule=t}isDivIdMatchingRule(e){const t=document.getElementById(e);if(t){const e=t.getBoundingClientRect();return this.rule(this.pubstackWindow,e)}return!1}}const Yt=(e,t,i)=>{if(function(e){return 0===e.top&&0===e.bottom&&0===e.left&&0===e.right&&0===e.width&&0===e.height}(t))return!1;const n=-i*e.innerHeight,s=(1+i)*e.innerHeight>t.top,o=t.bottom>n;return s&&o};function qt(e,t,i,n){const s=e.filter((e=>e.roadblock)).filter((e=>!e.mediaTypes.includes("Instream"))).filter((e=>R(e.divId))),o=e.filter((e=>!e.roadblock)).filter((e=>!e.mediaTypes.includes("Instream"))).filter((e=>R(e.divId))),a=e.filter((e=>e.mediaTypes.includes("Instream"))).filter((e=>R(e.divId)));t.executeAdCallRoadblock(s),a.length>0&&(a.length>1&&_(`cannot monetize multiple instream adunits, using only the first one ${a[0].divId}`),null==i||i.executeAdCall(a[0]));const r=function(e){if(e&&e.lazyLoadingKleanads){const t=e.lazyLoadingKleanads.viewportPercent/100;return E(`[lazyloading] lazy loading enabled with ${t} viewports`),(e,i)=>Yt(e,i,t)}}(n);if(r){const e=new Kt(window,r);s.length>0?setTimeout((()=>Xt(o,e,t)),1e3):Xt(o,e,t)}else s.length>0?setTimeout((()=>t.executeAdCall(o)),1e3):t.executeAdCall(o)}function Xt(e,t,i){const n=e.filter((e=>{var i;return(null===(i=e.anchor)||void 0===i?void 0:i.mode)||e.outOfPageType||t.isDivIdMatchingRule(e.divId)})),s=n.filter((e=>!i.isAlreadyMonetized(e)));i.executeAdCall(s),setTimeout((()=>Xt(e,t,i)),200)}const Qt="[optimization]",Zt=async e=>{try{const t=await ei();if(null==e?void 0:e.prebidConfig.adCallTimeout){const i=t.getTimeout(null==e?void 0:e.prebidConfig.adCallTimeout);E(`${Qt} Ad call timeout optimized from ${null==e?void 0:e.prebidConfig.adCallTimeout} to ${i}`),e.prebidConfig.adCallTimeout=i}}catch(e){k(`${Qt} Error while loading optimization engine`,e)}return e},ei=async()=>new Promise(((e,t)=>{try{const i={env:{}};WebAssembly.instantiateStreaming(fetch("https://cdn-adm.pbstck.com/kleanads/wasm/volt.wasm"),i).then((t=>{E(`${Qt} WebAssembly module loaded successfully`,t),e(t.instance.exports)})).catch((e=>{t(e)}))}catch(e){t(e)}}));var ti,ii,ni,si,oi,ai,ri,di,li,ci;!function(e){e.INSTREAM="instream",e.OUTSTREAM="outstream"}(ti||(ti={})),function(e){e[e.LINEAR=1]="LINEAR",e[e.NON_LINEAR=2]="NON_LINEAR"}(ii||(ii={})),function(e){e[e.IN_STREAM=1]="IN_STREAM",e[e.IN_BANNER=2]="IN_BANNER",e[e.IN_ARTICLE=3]="IN_ARTICLE",e[e.IN_FEED=4]="IN_FEED",e[e.INTERSTITIAL=5]="INTERSTITIAL"}(ni||(ni={})),function(e){e[e.INSTREAM=1]="INSTREAM",e[e.ACCOMPANYING_CONTENT=2]="ACCOMPANYING_CONTENT",e[e.INTERSTITIAL=3]="INTERSTITIAL",e[e.NO_CONTENT=4]="NO_CONTENT"}(si||(si={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.ABOVE_THE_FOLD=1]="ABOVE_THE_FOLD",e[e.LOCKED=2]="LOCKED",e[e.BELOW_THE_FOLD=3]="BELOW_THE_FOLD",e[e.HEADER=4]="HEADER",e[e.FOOTER=5]="FOOTER",e[e.SIDEBAR=6]="SIDEBAR",e[e.FULLSCREEN=7]="FULLSCREEN"}(oi||(oi={})),function(e){e[e.VAST_1_0=1]="VAST_1_0",e[e.VAST_2_0=2]="VAST_2_0",e[e.VAST_3_0=3]="VAST_3_0",e[e.VAST_1_0_WRAPPER=4]="VAST_1_0_WRAPPER",e[e.VAST_2_0_WRAPPER=5]="VAST_2_0_WRAPPER",e[e.VAST_3_0_WRAPPER=6]="VAST_3_0_WRAPPER",e[e.VAST_4_0=7]="VAST_4_0",e[e.VAST_4_0_WRAPPER=8]="VAST_4_0_WRAPPER",e[e.DAAST_1_0=9]="DAAST_1_0",e[e.DAAST_1_0_WRAPPER=10]="DAAST_1_0_WRAPPER",e[e.VAST_4_1=11]="VAST_4_1",e[e.VAST_4_1_WRAPPER=12]="VAST_4_1_WRAPPER",e[e.VAST_4_2=13]="VAST_4_2",e[e.VAST_4_2_WRAPPER=14]="VAST_4_2_WRAPPER"}(ai||(ai={})),function(e){e[e.VPAID_1_0=1]="VPAID_1_0",e[e.VPAID_2_0=2]="VPAID_2_0",e[e.MRAID_1_0=3]="MRAID_1_0",e[e.ORMMA=4]="ORMMA",e[e.MRAID_2_0=5]="MRAID_2_0",e[e.MRAID_3_0=6]="MRAID_3_0",e[e.OMID_1_0=7]="OMID_1_0",e[e.SIMID_1_0=8]="SIMID_1_0",e[e.SIMID_1_1=9]="SIMID_1_1"}(ri||(ri={})),function(e){e[e.AUTO_PLAY_SOUND_ON=1]="AUTO_PLAY_SOUND_ON",e[e.AUTO_PLAY_SOUND_OFF=2]="AUTO_PLAY_SOUND_OFF",e[e.CLICK_TO_PLAY=3]="CLICK_TO_PLAY",e[e.MOUSE_OVER=4]="MOUSE_OVER",e[e.INVIEW_SOUND_ON=5]="INVIEW_SOUND_ON",e[e.INVIEW_SOUND_OFF=6]="INVIEW_SOUND_OFF",e[e.CONTINUOUS_PLAYBACK=7]="CONTINUOUS_PLAYBACK"}(di||(di={})),function(e){e.VIDEO_MP4="video/mp4",e.VIDEO_WEBM="video/webm",e.VIDEO_OGG="video/ogg",e.VIDEO_MPEG="video/mpeg",e.APPLICATION_JAVASCRIPT="application/javascript"}(li||(li={})),function(e){e[e.NON_SKIPPABLE=0]="NON_SKIPPABLE",e[e.SKIPPABLE=1]="SKIPPABLE"}(ci||(ci={}));const ui={playerSize:[[640,480]],context:ti.INSTREAM,api:[ri.VPAID_1_0,ri.VPAID_2_0],linearity:ii.LINEAR,mimes:[li.VIDEO_MP4,li.VIDEO_MPEG,li.APPLICATION_JAVASCRIPT],startdelay:0,minduration:0,maxduration:32,protocols:[ai.VAST_2_0,ai.VAST_2_0_WRAPPER,ai.VAST_3_0,ai.VAST_3_0_WRAPPER,ai.VAST_4_0,ai.VAST_4_0_WRAPPER],placement:ni.IN_STREAM,plcmt:si.INSTREAM,pos:oi.ABOVE_THE_FOLD,playbackmethod:[di.AUTO_PLAY_SOUND_ON],skipafter:0,minbitrate:0,maxbitrate:700,protocol:ai.VAST_4_0_WRAPPER},hi={playerSize:[[640,480]],context:ti.INSTREAM,api:[ri.VPAID_1_0,ri.VPAID_2_0,ri.MRAID_1_0,ri.MRAID_2_0,ri.MRAID_3_0,ri.OMID_1_0],linearity:ii.LINEAR,mimes:[li.VIDEO_MP4,li.VIDEO_OGG,li.VIDEO_WEBM,li.APPLICATION_JAVASCRIPT],maxduration:30,minduration:1,protocols:[ai.VAST_1_0,ai.VAST_2_0,ai.VAST_3_0,ai.VAST_4_0,ai.VAST_1_0_WRAPPER,ai.VAST_2_0_WRAPPER,ai.VAST_3_0_WRAPPER,ai.VAST_4_0_WRAPPER,ai.VAST_4_1,ai.VAST_4_1_WRAPPER,ai.VAST_4_2,ai.VAST_4_2_WRAPPER],startdelay:0,placement:ni.IN_STREAM,plcmt:si.INSTREAM,playbackmethod:[di.AUTO_PLAY_SOUND_OFF,di.CLICK_TO_PLAY,di.MOUSE_OVER],skip:ci.SKIPPABLE,skipafter:0,pos:oi.UNKNOWN,minbitrate:1,maxbitrate:6e3},fi={playerSize:[[640,480]],context:ti.INSTREAM,mimes:[li.VIDEO_MP4,li.VIDEO_WEBM,li.APPLICATION_JAVASCRIPT],minduration:0,maxduration:15,startdelay:0,protocols:[ai.VAST_2_0,ai.VAST_2_0_WRAPPER,ai.VAST_3_0,ai.VAST_3_0_WRAPPER,ai.VAST_4_0,ai.VAST_4_0_WRAPPER,ai.VAST_4_1,ai.VAST_4_1_WRAPPER,ai.VAST_4_2,ai.VAST_4_2_WRAPPER],placement:ni.IN_STREAM,plcmt:si.INSTREAM,linearity:ii.LINEAR,skip:ci.NON_SKIPPABLE,skipmin:0,skipafter:0,minbitrate:1,maxbitrate:6e3,playbackmethod:[di.AUTO_PLAY_SOUND_OFF],pos:oi.ABOVE_THE_FOLD,api:[ri.VPAID_2_0,ri.OMID_1_0,ri.SIMID_1_0,ri.SIMID_1_1]},gi={pubstack:{playerSize:[640,480],mimes:[li.VIDEO_MP4,li.VIDEO_WEBM,li.APPLICATION_JAVASCRIPT],context:ti.INSTREAM},dailymotion:fi,jwplayerHbv:hi,dailymotionPrsm:ui},pi="adServerAdUnitName";function vi(e,t,i,n){const s=[];if("number"!=typeof t&&""===t||s.push(t),i&&0!==i.length){const e=function(e,t){return e.filter((e=>e!==pi)).map((e=>t.get(e))).filter((e=>e)).join("/")}(i,n);e&&s.push(e)}else _("Ad unit path config is missing for this site");const o=`/${s.join("/")}`;return i&&i.includes(pi)?`${o}/${e}`:`${o}`}function mi(e){return new Promise(((t,i)=>{if(window.lucead_loaded)return void t();window.lucead_loaded=!0;const n=document.createElement("script");n.src=`https://s.lucead.com/prebid/${e}.js`,n.onload=()=>t(window.lucead_prebid),n.onerror=i,document.head.appendChild(n)}))}function bi(e){return e&&"string"==typeof e?e:void 0}function yi(e){if(null!=e&&"number"==typeof e)return e}function Ai(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function Si(e,t){if("string"!=typeof e)throw new Error(`Unable to parse JSON: the ${t} field ${e} is not a valid string`);return e}var Ii,Ci,wi;function Ei(e){var t,i,n,s,o,a,r,d,l;if(!Ai(e))throw new Error("unable to parse JSON: adUnit is not valid");const c=Si(e.divId,"divId"),u=Si(e.adUnitName,"adUnitName"),h=function(e,t){if(!Array.isArray(e))throw new Error(`Unable to parse JSON: the ${t} field ${e} is not a valid list of Size`);return e}(e.sizes,"sizes"),f=function(e,t){if(!Array.isArray(e))throw new Error(`Unable to parse JSON: the ${t} field ${e} is not a valid list of PrebidBidder`);for(const t of e)if("string"!=typeof t.bidder)throw new Error(`Unable to parse JSON: the bidder field ${t.bidder} (inside bidders) is not a valid bidder name`);return e}(e.bidders,"bidders"),g=_i(e.parallax,"parallax",!1),p=_i(e.dynamic,"dynamic",!1),v=ki(e.targeting,"targeting"),m=function(e,t){if(!e)return;if(!Array.isArray(e))throw new Error(`Unable to parse JSON: the ${t} field ${e} is not valid KeyValueTargeting list`);const i=[];for(const n of e){const e=ki(n,t);e&&i.push(e)}return i}(e.extraTargetings,"extraTargetings");if(void 0!==e.floors&&!Ai(e.floors))throw new Error("unable to parse JSON: the floors field is not valid");if(void 0!==(null===(t=e.floors)||void 0===t?void 0:t.currency)&&"string"!=typeof(null===(i=e.floors)||void 0===i?void 0:i.currency))throw new Error("unable to parse JSON: the floors field is missing the currency");if(void 0!==(null===(n=e.floors)||void 0===n?void 0:n.schema)&&!Ai(null===(s=e.floors)||void 0===s?void 0:s.schema))throw new Error("unable to parse JSON: the floors field is missing the schema");if(e.floors){if("string"!=typeof(null===(o=e.floors.schema)||void 0===o?void 0:o.delimiter))throw new Error("unable to parse JSON: the floors schema field is missing the delimiter");if(!Array.isArray(null===(a=e.floors.schema)||void 0===a?void 0:a.fields))throw new Error("unable to parse JSON: the floors field schema delimiter is not an array");for(const t of e.floors.schema.fields)if(void 0===t||"string"!=typeof t)throw new Error("unable to parse JSON: the bidder field inside bidders array is not valid")}if(void 0!==(null===(r=e.floors)||void 0===r?void 0:r.values)&&"object"!=typeof(null===(d=e.floors)||void 0===d?void 0:d.values))throw new Error("unable to parse JSON: the floors field is missing the values or they are not well formed");if(void 0!==e.extraAdServerSizes&&!Array.isArray(e.extraAdServerSizes))throw new Error(`unable to parse JSON: the extraAdServerSizes field for adunit ${c} is not valid: ${e.extraAdServerSizes}`);let b,y,A,S;if(void 0!==e.canOutstream&&"boolean"!=typeof e.canOutstream)throw new Error("unable to parse JSON: the canOutstream field is not valid");if(b=e.canOutstream,void 0!==e.isInstream&&"boolean"!=typeof e.isInstream)throw new Error("unable to parse JSON: the isInstream field is not valid");if(y=e.isInstream,e.biddersOutstream){if(!Array.isArray(e.biddersOutstream))throw new Error(`unable to parse JSON: the biddersOutstream field for adunit ${c} is not valid: ${e.biddersOutstream}`);for(const t of e.biddersOutstream)if("string"!=typeof t)throw new Error("unable to parse JSON: the value inside biddersOutstream array is not valid")}switch(e.outOfPageType){case"interstitial":case"default":A=e.outOfPageType;break;default:A=void 0}switch(e.roadblock){case"master":case"master-1":case"master-2":case"master-3":case"companion":S=e.roadblock;break;default:S=void 0}return{divId:c,adUnitName:u,sizes:h,adServerAdUnitName:e.adServerAdUnitName,slotName:e.slotName,bidders:f,parallax:g,dynamic:p,targeting:v,extraTargetings:m,anchor:e.anchor,floors:e.floors,extraAdServerSizes:e.extraAdServerSizes,headerBiddingEnabled:_i(e.headerBiddingEnabled,"headerBiddingEnabled",!0),canOutstream:b,isInstream:y,biddersOutstream:null!==(l=e.biddersOutstream)&&void 0!==l?l:[],outOfPageType:A,roadblock:S}}function _i(e,t,i){if(void 0!==e&&"boolean"!=typeof e)throw new Error(`Unable to parse JSON: the ${t} field ${e} is not a valid boolean`);return null!=e?e:i}function ki(e,t){if(!e)return;if(!Ai(e))throw new Error(`Unable to parse JSON: the ${t} field ${e} is not a valid KeyValueTargeting`);const i=Si(e.key,t),n=bi(e.value),s=function(e){if(e&&Array.isArray(e))return e}(e.values);if(!n&&!s)throw new Error(`Unable to parse JSON: targeting.value(s) is not valid for field ${t}`);return{key:i,value:n,values:s}}function Ti(e){return e.startsWith("css:")?e.replace("css:",""):void 0}!function(e){e.USE_EXISTING_DIV="useExistingDiv",e.CREATE_NEW_DIV="createNewDiv"}(Ii||(Ii={})),function(e){e.Stop="stop",e.Continue="continue",e.InstantSecondChance="instantSecondChance"}(Ci||(Ci={})),function(e){e.DISABLED="DISABLED",e.ENABLED_ALL_SLOTS="ENABLED_ALL_SLOTS"}(wi||(wi={}));const Oi=(e,t,i)=>e.includes("Outstream")?i.includes(t.bidder)?[...e]:[...e.filter((e=>"Outstream"!==e))]:[...e],Ri=e=>{var t;const i=(e=>{var t;const i=[];return e.isInstream?["Instream"]:((e.sizes.length>0||(null!==(t=e.extraAdServerSizes)&&void 0!==t?t:[]).length>0)&&i.push("Banner"),e.canOutstream&&i.push("Outstream"),e.canNative&&i.push("Native"),i)})(e);let n=e.bidders.map((t=>({mediaTypes:Oi(i,t,e.biddersOutstream),bidder:t.bidder,params:t.params})));if(i.includes("Native")&&(null===(t=e.biddersNative)||void 0===t?void 0:t.length)){n=n.map((e=>({...e,mediaTypes:e.mediaTypes.filter((e=>"Native"!==e))})));const t=e.biddersNative.map((e=>({mediaTypes:["Native"],bidder:e.bidder,params:e.params})));n.push(...t)}return{bidders:n,mediaTypes:i}};function $i(e,t,i,n,s){return e.flatMap((e=>{var o,a,r,d,l,c;const u=vi(e.adServerAdUnitName||e.divId,i,n,t);if(e.bidders.forEach((e=>{var t;if("lucead"===e.bidder&&(null===(t=e.params)||void 0===t?void 0:t.siteId)){const{siteId:t,...i}=e.params;e.params={...i,loader:mi(t)}}})),e.dynamic)return function(e,t,i){return function(e){const t=Ti(e.divId)||`[id^="${e.divId}"]`;try{return Array.from(document.querySelectorAll(t))}catch(e){return k(`${t} is not a valid CSS selector, ${e}`),[]}}(e).map((n=>{var s,o,a;const r=n.id;return r||k(`Unable to find an id on DOM element for adUnit.divId ${e.divId}`),{...e,...Ri(e),divId:r,slotName:(null===(s=null==n?void 0:n.attributes.getNamedItem("data-aps-slotname"))||void 0===s?void 0:s.value)||e.slotName||t,dynamic:!1,adUnitPath:(null===(o=null==n?void 0:n.attributes.getNamedItem("data-adunitpath"))||void 0===o?void 0:o.value)||t,adServerAdUnitName:null!==(a=e.adServerAdUnitName)&&void 0!==a?a:e.divId,pubstackDeclarationTargetingKeys:null!=i?i:[],getTargetings:()=>[...[...e.targeting?[e.targeting]:[],...e.extraTargetings||[]],...[...Pi(null==n?void 0:n.attributes),Li(r)]]}}))}(e,u,s);{const t=function(e){const t=Ti(e);try{return t?document.querySelector(t):document.getElementById(e)}catch(t){return k(`${e} is not a valid CSS selector, ${t}`),null}}(e.divId);if(t||"interstitial"===e.outOfPageType||(null===(o=e.anchor)||void 0===o?void 0:o.mode)===Ii.CREATE_NEW_DIV){t&&!(null==t?void 0:t.id)&&k(`Unable to find an id on DOM element for adUnit.divId ${e.divId}`);const i=(null===(a=null==t?void 0:t.attributes.getNamedItem("data-adunitpath"))||void 0===a?void 0:a.value)||u;return[{...e,...Ri(e),divId:null!==(r=null==t?void 0:t.id)&&void 0!==r?r:e.divId,adUnitPath:i,slotName:(null===(d=null==t?void 0:t.attributes.getNamedItem("data-aps-slotname"))||void 0===d?void 0:d.value)||e.slotName||i,adServerAdUnitName:null!==(c=null!==(l=e.adServerAdUnitName)&&void 0!==l?l:null==t?void 0:t.id)&&void 0!==c?c:e.divId,pubstackDeclarationTargetingKeys:null!=s?s:[],getTargetings:()=>[...[...e.targeting?[e.targeting]:[],...e.extraTargetings||[]],...[...Pi(null==t?void 0:t.attributes)]]}]}return E(`Div id missing for ${e.divId}, no further action on this ad unit`),[]}}))}function Li(e){const t=new RegExp("\\D","g");return{key:"ad_index",value:e.replace(t,"")}}function Pi(e){return Array.from(null!=e?e:[]).filter((e=>e.name.startsWith("data-ad-"))).map((e=>({key:e.name.replace("data-ad-",""),value:e.value})))}var Ni,Ui;function xi(e){if(!e)return;if(!Ai(e))throw new Error("unable to parse JSON: lazyLoadingGoogle field is not valid");if(0===Object.keys(e).length||!e.googleFetchMarginPercent&&!e.googleRenderMarginPercent&&!e.googleMobileScaling)return{};const t={};return"number"==typeof e.googleFetchMarginPercent&&(t.googleFetchMarginPercent=e.googleFetchMarginPercent),"number"==typeof e.googleRenderMarginPercent&&(t.googleRenderMarginPercent=e.googleRenderMarginPercent),"number"==typeof e.googleMobileScaling&&(t.googleMobileScaling=e.googleMobileScaling),t}function Di(e){if(null==e)return;if(!Ai(e))throw new Error("unable to parse JSON: lazyLoadingKleanads field is not valid");let t;return"number"!=typeof e.viewportPercent?e.numberOfViewports&&"number"==typeof e.numberOfViewports?t=e.numberOfViewports:(_("unable to parse JSON: the lazyLoadingKleanads field is not valid, falling back to 0 viewport"),t=0):t=e.viewportPercent,{viewportPercent:t}}function ji(e){if(null!=e){if(!Ai(e))throw new Error("unable to parse JSON: lazyLoading field is not valid");if("string"!=typeof e.configName)throw new Error("unable to parse JSON: the lazyLoading's configName field is not valid");return{configName:e.configName,lazyLoadingGoogle:xi(e.lazyLoadingGoogle),lazyLoadingKleanads:Di(e.lazyLoadingKleanads)}}}function Mi(e){if(!Array.isArray(e))throw new Error("unable to parse JSON: the adUnits field is not valid");const t=[];for(const i of e)try{t.push(Ei(i))}catch(e){k("Invalid ad unit configuration",e)}return t}function Bi(e){if(!e)return;if(!Ai(e))throw new Error("unable to parse JSON: the refreshConfig field is not valid");if(!Array.isArray(e.adUnitConfig))throw new Error("unable to parse JSON: the refreshConfig field is not valid");const t=[];for(const i of e.adUnitConfig)try{t.push(Vi(i))}catch(e){k("Invalid refresh configuration",e)}return{adUnitConfig:t}}function Vi(e){if(!Ai(e))throw new Error("unable to parse JSON: the adUnitRefreshConfig field is not valid");if(!Array.isArray(e.specificRules))throw new Error("unable to parse JSON: the adUnitRefreshConfig specificRules field is not valid");if("number"!=typeof e.timer)throw new Error("unable to parse JSON: the adUnitRefreshConfig timer field is not valid");if(void 0===e.adUnitNames)throw new Error("unable to parse JSON: the adUnitRefreshConfig adUnitNames field is missing");if(!Array.isArray(e.adUnitNames))throw new Error("unable to parse JSON: the adUnitRefreshConfig adUnitNames field is not valid");if(void 0!==e.alwaysInView&&"boolean"!=typeof e.alwaysInView)throw new Error("unable to parse JSON: the adUnitRefreshConfig alwaysInView field is not valid");let t,i;if(void 0!==e.refreshBehaviorOnEmpty)switch(e.refreshBehaviorOnEmpty){case"continue":t=Ci.Continue;break;case"instantSecondChance":t=Ci.InstantSecondChance;break;case"stop":t=Ci.Stop;break;default:throw new Error("unable to parse JSON: the adUnitRefreshConfig refreshBehaviorOnEmpty field is not valid")}if(void 0!==e.refreshOutOfFocusConfig){if(!Ai(e.refreshOutOfFocusConfig))throw new Error("unable to parse JSON: the adUnitRefreshConfig refreshOutOfFocusConfig field is not valid");if(void 0===e.refreshOutOfFocusConfig.timerInView||"number"!=typeof e.refreshOutOfFocusConfig.timerInView)throw new Error("unable to parse JSON: the adUnitRefreshConfig refreshOutOfFocusConfig timerInView field is not valid");if(void 0!==e.refreshOutOfFocusConfig.refreshOutOfView&&"boolean"!=typeof e.refreshOutOfFocusConfig.refreshOutOfView)throw new Error("unable to parse JSON: the adUnitRefreshConfig refreshOutOfFocusConfig refreshOutOfView field is not valid");i={timerInView:e.refreshOutOfFocusConfig.timerInView,refreshOutOfView:e.refreshOutOfFocusConfig.refreshOutOfView}}return{adUnitNames:e.adUnitNames,timer:e.timer,capping:yi(e.capping),specificRules:e.specificRules,alwaysInView:e.alwaysInView,refreshBehaviorOnEmpty:t,refreshOutOfFocusConfig:i}}function Fi(e){if(!function(e){if(!e)throw new Error("unable to parse JSON: prebidConfig field is not valid");return Object.keys(e).includes("adCallTimeout")&&Object.keys(e).includes("pbjsConfig")}(e))throw new Error("unable to parse JSON: prebidConfig field is not valid");if("number"!=typeof e.adCallTimeout)throw new Error("unable to parse JSON: the prebidConfig's adCallTimeout field is not valid");return{adCallTimeout:e.adCallTimeout,pbjsConfig:Yi(e.pbjsConfig)}}function zi(e){var t;if(!e)return;if(!Array.isArray(e))throw new Error("unable to parse JSON: the abTest field is not valid");const i=null===(t=e.find((e=>e.configToMerge)))||void 0===t?void 0:t.configToMerge;if(!i)throw new Error("unable to parse JSON: the abTest field is not valid");return i.adUnits?Wi(e,Hi):i.lazyLoading?Wi(e,Ki):i.refreshConfig?Wi(e,Ji):void 0}function Wi(e,t){const i=[];for(const n of e){const e=Gi(n,t);i.push(e)}return i}function Gi(e,t){if(!Ai(e))throw new Error("unable to parse JSON: the abTest field is not valid");return{name:Si(e.name,"name"),ratio:function(e,t){if("number"!=typeof e)throw new Error(`Unable to parse JSON: the ${t} field ${e} is not a valid number`);return e}(e.ratio,"ratio"),configToMerge:t(e.configToMerge)}}function Hi(e){if(e){if(!Ai(e))throw new Error("unable to parse JSON: the configToMerge field is not valid");if(!e.adUnits)throw new Error(`unable to parse JSON: the A/B test contains an invalid variant: ${JSON.stringify(e)}`);return{adUnits:Mi(e.adUnits)}}}function Ji(e){if(e){if(!Ai(e))throw new Error("unable to parse JSON: the configToMerge field is not valid");if(!e.refreshConfig)throw new Error(`unable to parse JSON: the A/B test contains an invalid variant: ${JSON.stringify(e)}`);return{refreshConfig:Bi(e.refreshConfig)}}}function Ki(e){if(e){if(!Ai(e))throw new Error("unable to parse JSON: the configToMerge field is not valid");if(!e.lazyLoading)throw new Error(`unable to parse JSON: the A/B test contains an invalid variant: ${JSON.stringify(e)}`);return{lazyLoading:ji(e.lazyLoading)}}}function Yi(e){if(!Ai(e))throw new Error("unable to parse JSON: pbjsConfig field is not valid");void 0===e.allowLocalStorage&&(e.allowLocalStorage=!0);const t=qi(e,"userSync"),i=qi(e,"outbrain"),n=qi(e,"realTimeData"),s=qi(e,"analytics"),o=qi(e,"currency"),a=qi(e,"bidderConfigs"),r=qi(e,"priceGranularity"),d=qi(e,"floors"),l=qi(e,"schain"),c=function(e){if(e&&Array.isArray(e))return e}(e.bidderAliases);return{...e,...c&&{bidderAliases:c},...t&&{userSync:t},...i&&{outbrain:i},...n&&{realTimeData:n},...s&&{analytics:s},...a&&{bidderConfigs:a},...o&&{currency:o},...r&&{priceGranularity:r},...d&&{floors:d},...l&&{schain:l}}}!function(e){e.firstId="firstId",e.utiqId="utiqId",e.sharedId="sharedId"}(Ni||(Ni={})),function(e){e.id5id="id5Id"}(Ui||(Ui={}));const qi=(e,t)=>{if(!(t in e))return;const i=bi(e[t]);if(i)try{return JSON.parse(i)}catch(e){k(`unable to parse JSON in pbjsConfigFromPartial: ${t} `,e)}};function Xi(e,t){var i;Object.keys(null!=e?e:{}).some((e=>"scope"!==e&&"sites"!==e))&&k("Invalid override object",e);const n=null===(i=null==e?void 0:e.sites)||void 0===i?void 0:i[t],s=null==e?void 0:e.scope;return null!=n?n:s}function Qi(e,t){var i;if(t)return null!==(i=t[e])&&void 0!==i?i:t.type}function Zi(e){var t;const i=("; "+document.cookie).split("; "+e+"=");if(2===i.length)return null===(t=i.pop())||void 0===t?void 0:t.split(";").shift()}function en(e,t){return t.flatMap((t=>[t,...e.filter((e=>e.bidderSource===t)).map((e=>e.bidderLabel))]))}class tn{constructor(e,t){this.stackLoadedConfig={...e,runningABTest:[]},this.pocOverrides=t}withConvertToInstreamAdUnit(){const e=this.pocOverrides.convertToInstreamAdUnits;let t;switch(B([25,25,25,25])){case 1:t=gi.pubstack,this.stackLoadedConfig.runningABTest.push({name:"instreamMediaType",value:"pubstack"});break;case 2:t=gi.dailymotion,this.stackLoadedConfig.runningABTest.push({name:"instreamMediaType",value:"dailymotion"});break;case 3:t=gi.dailymotionPrsm,this.stackLoadedConfig.runningABTest.push({name:"instreamMediaType",value:"dailymotionPrsm"});break;case 4:t=gi.jwplayerHbv,this.stackLoadedConfig.runningABTest.push({name:"instreamMediaType",value:"jwplayerHbv"})}return e&&this.stackLoadedConfig.adUnits.forEach((i=>{var n;const s=e[i.adUnitName];s&&(i.isInstream=!0,i.dynamic=!1,i.parallax=!1,i.anchor=void 0,i.canOutstream=!1,i.biddersOutstream=[],i.floors=s.floors,i.instreamParams={...s.instreamParams,vast:(null===(n=s.instreamParams)||void 0===n?void 0:n.vast)||{},mediaTypeParams:t})})),this}withConvertToNativeAdUnit(){const e=this.pocOverrides.convertToNativeAdUnits;return e&&this.stackLoadedConfig.adUnits.forEach((t=>{var i;const n=e[t.adUnitName];if(n){if(t.canNative=!0,t.nativeParams=n.nativeParams,n.useNativeAlias){const e=e=>e.bidder.includes("native")||e.bidder.endsWith("_na");t.biddersNative=t.bidders.filter((t=>e(t))),t.bidders=t.bidders.filter((t=>!e(t)))}n.nativeOnly&&(t.sizes=[],(null===(i=t.extraAdServerSizes)||void 0===i?void 0:i.includes("fluid"))?t.extraAdServerSizes=["fluid"]:t.extraAdServerSizes=[],t.isInstream=!1,t.parallax=!1,t.anchor=void 0,t.canOutstream=!1,t.biddersOutstream=[])}})),this}withFirstId(){var e,t,i;if(null===(e=this.pocOverrides)||void 0===e?void 0:e.firstId){const e=this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderAliases||[],n=function(){const e=new RegExp("(?:(?:^|.*; *)firstid *= *([^;]*).*$)|^.*$","i"),t=document.cookie.match(e);return t&&t[1]?decodeURIComponent(t[1]):void 0}();if(n){const s=null!==(i=null===(t=this.stackLoadedConfig.prebidConfig.pbjsConfig.userSync)||void 0===t?void 0:t.userIds)&&void 0!==i?i:[];s.push({name:"pubProvidedId",bidders:en(e,["appnexus","pubmatic","rubicon","ix","nexx360","criteo","smartadserver","mediasquare","ogury","freewheel-ssp","outbrain","taboola","adf"]),params:{eids:[{source:"first-id.fr",uids:[{id:n,atype:1,ext:{stype:"ppuid"}}]}]}}),this.stackLoadedConfig.prebidConfig.pbjsConfig.userSync={...this.stackLoadedConfig.prebidConfig.pbjsConfig.userSync,userIds:s}}}return this}withId5Id(){var e,t,i;if(null===(e=this.pocOverrides)||void 0===e?void 0:e.id5id){const e=localStorage.getItem(this.pocOverrides.id5id.pd);e&&(null!==(i=null===(t=this.stackLoadedConfig.prebidConfig.pbjsConfig.userSync)||void 0===t?void 0:t.userIds)&&void 0!==i?i:[]).forEach((t=>{"id5Id"===t.name&&(t.params||(t.params={}),t.params.pd=e)}))}return this}withConvertToInterstitialAdUnit(){const e=this.pocOverrides.convertToInterstitialAdUnits;return e&&this.stackLoadedConfig.adUnits.forEach((t=>{e.includes(t.adUnitName)&&(t.outOfPageType="interstitial",w(`Interstitial adUnit found: ${t.adUnitName}`))})),this}withSkinRenderingSettings(e,t){var i,n,s;const o=null===(i=this.pocOverrides)||void 0===i?void 0:i.skinRenderingSettings,a=null===(n=null==o?void 0:o.stackLevel)||void 0===n?void 0:n[t],r=null===(s=null==o?void 0:o.siteLevel)||void 0===s?void 0:s[e];return(null==r?void 0:r.disableSkinBids)||(null==a?void 0:a.disableSkinBids)?this.stackLoadedConfig.adUnits=this.stackLoadedConfig.adUnits.map((e=>({...e,sizes:e.sizes.filter((e=>!W(e,[1800,1e3])))}))):((null==r?void 0:r.biddersOverride)||(null==a?void 0:a.biddersOverride))&&(this.stackLoadedConfig.adUnits=this.stackLoadedConfig.adUnits.map((e=>{var t;return e.sizes.some((e=>W(e,[1800,1e3])))?{...e,biddersSkin:null!==(t=null==a?void 0:a.biddersOverride)&&void 0!==t?t:null==r?void 0:r.biddersOverride}:e}))),this}withRefreshOutOfFocus(e){var t,i;const n=null===(t=this.pocOverrides)||void 0===t?void 0:t.refreshOutOfFocus;if(n){const t=Xi(n,e);t&&(null===(i=this.stackLoadedConfig.refreshConfig)||void 0===i||i.adUnitConfig.forEach((e=>{e.refreshOutOfFocusConfig=t})))}return this}withPpidSolution(e){var t;const i=Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.ppidSolutions,e);if(i){const e=Array.isArray(i.ppidSolution)?i.ppidSolution:[i.ppidSolution],{type:t,value:n}=function(e){var t,i;for(const n of e)switch(n){case Ni.firstId:return{type:"prebid",value:"first-id.fr"};case Ni.sharedId:return{type:"prebid",value:"pubcid.org"};case Ni.utiqId:return{type:"prebid",value:"utiq.com"};case Ui.id5id:{const e=localStorage.getItem("id5id");if(e)return{type:"other",value:(i=e,JSON.parse(decodeURIComponent(i)).gp)};break}default:{let e=localStorage.getItem(n);if(e)return{type:"other",value:e};if(e=null!==(t=Zi(n))&&void 0!==t?t:null,e)return{type:"other",value:e}}}return{type:"other",value:""}}(e);if("prebid"===t)this.stackLoadedConfig.prebidConfig.pbjsConfig.userSync={...this.stackLoadedConfig.prebidConfig.pbjsConfig.userSync,ppid:n};else this.stackLoadedConfig.gamConfig&&n&&(this.stackLoadedConfig.gamConfig.ppidValue=n)}return this}withRefreshAlwaysInView(){var e;const t=null===(e=this.pocOverrides)||void 0===e?void 0:e.refreshAlwaysInViewAdUnitNames;if(this.stackLoadedConfig.refreshConfig&&t&&t.length>0){const e=[];this.stackLoadedConfig.refreshConfig.adUnitConfig.forEach((i=>{t.forEach((t=>{var n;(null===(n=i.adUnitNames)||void 0===n?void 0:n.includes(t))&&(e.push({...i,alwaysInView:!0,adUnitNames:[t]}),i.adUnitNames.splice(i.adUnitNames.indexOf(t),1))}))})),this.stackLoadedConfig.refreshConfig.adUnitConfig=[...this.stackLoadedConfig.refreshConfig.adUnitConfig.filter((e=>(e.adUnitNames||[]).length>0)),...e]}return this}withrefreshBehaviorOnEmpty(){var e,t;const i=null===(e=this.pocOverrides)||void 0===e?void 0:e.refreshBehaviorOnEmpty;return i&&(null===(t=this.stackLoadedConfig.refreshConfig)||void 0===t||t.adUnitConfig.forEach((e=>{e.refreshBehaviorOnEmpty=i}))),this}withOutbrainConfig(e){var t;if(null===(t=this.pocOverrides)||void 0===t?void 0:t.outbrainConfig){const t=this.pocOverrides.outbrainConfig.find((t=>t.siteId===e)),i=this.pocOverrides.outbrainConfig.find((e=>!e.siteId)),n=t||i;n&&(this.stackLoadedConfig.prebidConfig.pbjsConfig.outbrain={bidderUrl:n.bidderUrl,usersyncUrl:n.usersyncUrl})}return this}withXplnConfig(e){const t=Xi(this.pocOverrides.xplnConfig,e);return t&&(this.stackLoadedConfig.xplnConfig=t),this}withFloorEnforcement(e){var t,i,n,s,o,a;if(null===(t=this.pocOverrides)||void 0===t?void 0:t.floorEnforcement){const t=null===(s=null===(n=null===(i=this.pocOverrides)||void 0===i?void 0:i.floorEnforcement)||void 0===n?void 0:n.sites)||void 0===s?void 0:s[e],r=null===(a=null===(o=this.pocOverrides)||void 0===o?void 0:o.floorEnforcement)||void 0===a?void 0:a.scope;(t||r)&&(this.stackLoadedConfig.prebidConfig.pbjsConfig.floors={...this.stackLoadedConfig.prebidConfig.pbjsConfig.floors,enforcement:{...null!=t?t:r}})}return this}withDynamicPrebidFloors(e){var t,i,n,s,o,a;if(null===(t=this.pocOverrides)||void 0===t?void 0:t.dynamicPrebidFloors){const t=null===(s=null===(n=null===(i=this.pocOverrides)||void 0===i?void 0:i.dynamicPrebidFloors)||void 0===n?void 0:n.sites)||void 0===s?void 0:s[e],r=null===(a=null===(o=this.pocOverrides)||void 0===o?void 0:o.dynamicPrebidFloors)||void 0===a?void 0:a.scope;(t||r)&&this.stackLoadedConfig.adUnits.forEach((e=>{e.dynamicPrebidFloor=!0}))}return this}withFledgeForGpt(){var e,t;if(null===(e=this.pocOverrides)||void 0===e?void 0:e.fledgeForGpt){const e=en(this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderAliases||[],["criteo"]);this.stackLoadedConfig.adUnits.forEach((t=>{var i;t.bidders.find((t=>e.includes(t.bidder)))&&(t.ortb2Imp={...t.ortb2Imp,ext:{...null===(i=t.ortb2Imp)||void 0===i?void 0:i.ext,ae:1}})})),this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderConfigs||(this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderConfigs=[]);const i=this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderConfigs.find((t=>Array.isArray(t.bidders)&&t.bidders.find((t=>e.includes(t)))));i&&i.config?i.config.fledgeEnabled=!0:null===(t=this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderConfigs)||void 0===t||t.push({bidders:[...e],config:{fledgeEnabled:!0}}),this.stackLoadedConfig.prebidConfig.pbjsConfig={...this.stackLoadedConfig.prebidConfig.pbjsConfig,fledgeForGpt:!0}}return this}withRtbHousePaapi(){if(this.pocOverrides.rtbhousePaapi){const e=en(this.stackLoadedConfig.prebidConfig.pbjsConfig.bidderAliases||[],["rtbhouse"]);this.stackLoadedConfig.adUnits.some((t=>t.bidders.some((t=>e.includes(t.bidder)))))&&(this.stackLoadedConfig.prebidConfig.pbjsConfig={...this.stackLoadedConfig.prebidConfig.pbjsConfig,paapi:{enabled:!0,bidders:[...e],defaultForSlots:1,gpt:{autoconfig:!0}}})}return this}withSkinFloor(e){var t,i,n;const s=null===(t=this.pocOverrides)||void 0===t?void 0:t.skinFloor;if(s){const t=null!==(n=null===(i=s.specificFloor)||void 0===i?void 0:i[e])&&void 0!==n?n:s.defaultFloor;this.stackLoadedConfig.adUnits.forEach((e=>{var i;if(e.sizes.some((e=>W(e,[1800,1e3]))))if(e.floors){const n=null===(i=e.floors)||void 0===i?void 0:i.values.banner;n?e.floors={...e.floors,schema:{delimiter:"|",fields:["mediaType","size"]},values:{"banner|*":n,"banner|1800x1000":t}}:k("no banner value found in floors, skin floor cannot be applied.",e.floors)}else e.floors={currency:s.currency,schema:{delimiter:"|",fields:["mediaType","size"]},values:{"banner|1800x1000":t}}}))}return this}withDsaConfig(){var e,t;return(null===(e=this.pocOverrides)||void 0===e?void 0:e.dsaConfig)&&(this.stackLoadedConfig.prebidConfig.pbjsConfig={...this.stackLoadedConfig.prebidConfig.pbjsConfig,dsaConfig:null===(t=this.pocOverrides)||void 0===t?void 0:t.dsaConfig}),this}withPrebidServerConfig(e){var t,i,n,s,o,r;if((null===(t=this.pocOverrides)||void 0===t?void 0:t.prebidServer)&&this.pocOverrides.prebidServer.siteIds.includes(e)){if(M(this.pocOverrides.prebidServer.ratio)){w("Run ABTest hybrid monetization PBJS + PBS");const e=M(void 0!==(null===(i=this.stackLoadedConfig.prebidConfig.pbjsConfig)||void 0===i?void 0:i.priceGranularity)&&this.pocOverrides.prebidServer.ratioPriceGranularity?this.pocOverrides.prebidServer.ratioPriceGranularity:0);this.stackLoadedConfig.prebidConfig.pbjsConfig={...this.stackLoadedConfig.prebidConfig.pbjsConfig,s2sConfig:{...this.pocOverrides.prebidServer.s2sConfig}};let t=null!==(n=this.pocOverrides.prebidServer.metaABTestServerSide)&&void 0!==n?n:"rule2";e&&(null===(o=null===(s=this.stackLoadedConfig.prebidConfig.pbjsConfig.s2sConfig)||void 0===s?void 0:s.extPrebid)||void 0===o?void 0:o.targeting)&&(this.stackLoadedConfig.prebidConfig.pbjsConfig.s2sConfig.extPrebid.targeting.priceGranularity=this.stackLoadedConfig.prebidConfig.pbjsConfig.priceGranularity,t=`${t}_with_pg`,w("Run ABTest for PriceGranularity on Prebid Server side")),a(t)}else a(null!==(r=this.pocOverrides.prebidServer.metaABTestClientSide)&&void 0!==r?r:"rule1")}return this}withRoadblockOrder(e){var t;const i=Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.roadblockOrder,e);return i&&this.stackLoadedConfig.adUnits.forEach((e=>{i[e.adUnitName]&&(e.roadblock=i[e.adUnitName])})),this}withDisableThreadYield(e){var t;const i=window.location.search,n=new URLSearchParams(i);return(Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.disableThreadYield,e)||n.get("disableThreadYield"))&&this.stackLoadedConfig.gamConfig&&(this.stackLoadedConfig.gamConfig.threadYieldConfig=wi.DISABLED),this}withDisableGptPreAuction(e){var t;return Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.disableGptPreAuction,e)&&(te.getInstance().disableGptPreAuction=!0),this}withDisableSchainForTam(e){var t;return Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.disableSchainForTam,e)&&this.stackLoadedConfig.tamConfig&&(this.stackLoadedConfig.tamConfig={...this.stackLoadedConfig.tamConfig,disableSchain:!0}),this}withIASConfig(e){const t=Xi(this.pocOverrides.iasConfig,e);return t&&(this.stackLoadedConfig.iasConfig=t,w("[IAS Module] IAS Config override",t)),this}withDisableSingleRequest(e){var t;const i=Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.disableSingleRequest,e),n=this.stackLoadedConfig.adUnits.some((e=>e.roadblock));return i&&this.stackLoadedConfig.gamConfig&&!n&&(this.stackLoadedConfig.gamConfig.disableSingleRequest=!0),this}withDisableFetchLazyLoading(e){var t,i;return Xi(null===(t=this.pocOverrides)||void 0===t?void 0:t.disableFetchLazyLoading,e)&&(this.stackLoadedConfig.lazyLoading={...this.stackLoadedConfig.lazyLoading,configName:"lazyLoadingGoogle disabled",lazyLoadingGoogle:{...null===(i=this.stackLoadedConfig.lazyLoading)||void 0===i?void 0:i.lazyLoadingGoogle,googleFetchMarginPercent:-1}}),this}build(){return this.stackLoadedConfig}}function nn(e,t,i,n){var s;const{pocOverrides:o,runningABTest:a}=function(e,t){const{overrideABTest:i,...n}=e,s=Xi(i,t);if(!s||!function(e){return"populationB"in e&&"object"==typeof e.populationB&&"ratio"in e&&"number"==typeof e.ratio||(k("ABTest populationB should be an object and ratio a number"),!1)}(s))return{pocOverrides:n,runningABTest:[]};const o=M(s.ratio),a=Object.keys(s.populationB);if(o){return{pocOverrides:Object.assign({...n},{...s.populationB}),runningABTest:[{name:"adm_ab_test",value:"poc:B",gamTargeting:!0},...a.map((e=>({name:e,value:"B"})))]}}return{pocOverrides:n,runningABTest:[{name:"adm_ab_test",value:"poc:A",gamTargeting:!0},...a.map((e=>({name:e,value:"A"})))]}}(null!==(s=t.pocOverrides)&&void 0!==s?s:{},t.tagId),r=new tn(e,o).withConvertToInstreamAdUnit().withConvertToNativeAdUnit().withFirstId().withId5Id().withSkinRenderingSettings(t.tagId,n.stackId).withRefreshAlwaysInView().withrefreshBehaviorOnEmpty().withRefreshOutOfFocus(t.tagId).withXplnConfig(t.tagId).withOutbrainConfig(t.tagId).withFledgeForGpt().withRtbHousePaapi().withSkinFloor(t.tagId).withDsaConfig().withPrebidServerConfig(t.tagId).withPpidSolution(t.tagId).withConvertToInterstitialAdUnit().withFloorEnforcement(t.tagId).withDynamicPrebidFloors(t.tagId).withRoadblockOrder(t.tagId).withDisableThreadYield(t.tagId).withDisableGptPreAuction(t.tagId).withDisableSchainForTam(t.tagId).withIASConfig(t.tagId).withDisableSingleRequest(t.tagId).withDisableFetchLazyLoading(t.tagId).build();return{...r,runningABTest:[...a,...r.runningABTest]}}const sn=e=>!!e.priority&&!!e.conditions,on=e=>!e.priority&&!e.conditions,an=e=>"elements"in e;const rn={AND:({elements:e},t)=>e.every((e=>ln(e,t))),OR:({elements:e},t)=>e.some((e=>ln(e,t)))},dn={IN:({key:e,values:t},i)=>t.some((t=>t===i.get(e))),NOT_IN:({key:e,values:t},i)=>!t.some((t=>t===i.get(e)))};function ln(e,t){return an(e)?rn[e.op](e,t):dn[e.op](e,t)}class cn{constructor(e,t,i){this.config=e,this.stack=t,this.stackVersion=i,this.runningABTest=[]}applyRulesABTest(){const{config:e,winner:t}=(e=>{if(e.abTest){if(!(e.abTest.length<2)){E("[A/B test] variants",e.abTest.map((e=>e.name)).join(", "));const t=B(e.abTest.map((e=>e.ratio))),i=e.abTest[t-1];return E("[A/B test] winner",i.name),{config:{...e,...i.configToMerge},winner:i.name}}k("The A/B test config is invalid: not enough variants")}return{config:e}})(this.config);return this.config=e,t&&this.runningABTest.push({name:"pbstck_ab_test",value:t,gamTargeting:!0}),this}applyPocOverrides(e,t){if(e.pocOverrides){const{runningABTest:t,...i}=nn(this.config,e,0,this.stack);this.config=i,this.runningABTest.push(...t)}return this}applyPageLevelBidderConfig(){return this.config=function(e){var t;const i=null!==(t=e.prebidConfig.pbjsConfig.bidderAliases)&&void 0!==t?t:[];return e.adUnits.forEach((e=>{e.bidders=e.bidders.map((e=>xt(e,i)))})),e}(this.config),this}build(){return{...this.config,stackId:this.stack.stackId,version:this.stackVersion,runningABTest:this.runningABTest}}}async function un(e,t,i,n){const s=function(e,t,i,n){const s=function(e,t,i,n,s){return`${e}/config/${t.scopeId.substring(0,8)}/${n.substring(0,8)}/${t.stackId}/${i}/${s}.json`}(e.configUrl,i,n,e.tagId,t);return s.replace(/([^:]\/)\/+/g,"$1")}(e,t,i,n);return new Promise((e=>{fetch(s).then((t=>{t.text().then((async t=>{const i=function(e){const t=JSON.parse(e);return{...t,lazyLoading:ji(t.lazyLoading),adUnits:Mi(t.adUnits),prebidConfig:Fi(t.prebidConfig),refreshConfig:Bi(t.refreshConfig),abTest:zi(t.abTest)}}(t);e(i)}))})).catch((async t=>{k(`unable to load the configuration ${t}`),e(void 0)}))}))}async function hn(e){return un(e,e.device,e.stack,e.stackVersion).then((t=>{if(t)return function(e,t,i,n,s){return new cn(e,t,i).applyRulesABTest().applyPocOverrides(n,s).applyPageLevelBidderConfig().build()}(t,e.stack,e.stackVersion,e,e.pageContext)}))}const fn={pbjsFinished:!1,apsFinished:!1},gn="[executor] [buffered]";var pn;!function(e){e[e.FirstCall=0]="FirstCall",e[e.Refresh=1]="Refresh"}(pn||(pn={}));class vn{constructor(e,t,i,n){this.buffer=[],this.auctionRunning=!1,this.adUnitAuctionStatus=new Map,this.adServer=e,this.pbjs=t,this.aps=i,this.kleanadsRunCount=n}executeAdCall(e){if(0===e.length)return;setTimeout((()=>{e.forEach((e=>Ne(e.divId,"executorTimeout")))}),2e4);const t=e.filter((e=>!this.adUnitAuctionStatus.has(e.divId))).sort(((e,t)=>$(e.divId)-$(t.divId)));this.logAlreadyMonetizedAdUnits(e,t),w(`${gn} buffering adunits`,e),t.forEach((e=>{this.bufferAdUnits({adUnits:[e],origin:pn.FirstCall})}))}executeAdCallRoadblock(e){if(0===e.length)return;setTimeout((()=>{e.forEach((e=>Ne(e.divId,"executorTimeout")))}),2e4);const t=e.filter((e=>!this.adUnitAuctionStatus.has(e.divId))).sort(z);this.logAlreadyMonetizedAdUnits(e,t),w(`${gn} buffering adunits`,e),O("executor:roadblock",{slotIds:t.map((e=>e.divId))}),this.bufferAdUnits({adUnits:t,origin:pn.FirstCall})}bufferAdUnits(e){var t;switch(this.buffer.push(e),e.origin){case pn.FirstCall:null===(t=e.adUnits)||void 0===t||t.forEach((e=>{this.adUnitAuctionStatus.set(e.divId,fn)}));break;case pn.Refresh:this.adUnitAuctionStatus.set(e.refreshableAdUnit.adUnit.divId,fn);break;default:k(`${gn} unknown buffer entry origin`)}this.startAuctionForBufferedAdUnits()}executeRefresh(e){this.bufferAdUnits({refreshableAdUnit:e,origin:pn.Refresh})}startAuctionForBufferedAdUnits(){if(this.auctionRunning)return void E(`${gn} auction already running, not starting a new one`);const e=this.buffer.shift();if(E(`${gn} adunit taken from buffer`,e),e)switch(e.origin){case pn.FirstCall:this.startAuction(e.adUnits);break;case pn.Refresh:this.startAuction([e.refreshableAdUnit.adUnit],{labels:["pubstackRefresh",`pubstackRefreshRank:${e.refreshableAdUnit.rank}`]});break;default:k(`${gn} unknown buffer entry origin`)}else E(`${gn} no more adunit to monetize in buffer`)}startAuction(e,t){this.auctionRunning=!0,e.forEach((e=>{Se(e.divId,pe.START_AUCTION)})),w(`${gn} starting header bidding for ${e.map((e=>e.divId))}`);const i=te.getInstance().kleanadsRunCount;if(this.pbjs){const n=this.pbjs.getPbjs();this.pbjs.startPbjsAuction(e,(()=>{this.kleanadsRunCount===i?this.pbjsFinished(n,e):w(`${gn} kleanads run count has changed (from ${this.kleanadsRunCount} to ${i}), avoid calling pbjsFinished`)}),t)}this.aps&&this.aps.startApsAuction(e,(t=>{this.kleanadsRunCount===i?this.apsFinished(e,t):w(`${gn} kleanads run count has changed (from ${this.kleanadsRunCount} to ${i}), avoid calling apsFinished`)})),this.pbjs||this.aps||this.adServer.executeWhenAdServerReady((()=>{this.kleanadsRunCount===i?this.callAdServer(e):w(`${gn} kleanads run count has changed (from ${this.kleanadsRunCount} to ${i}), avoid calling AdServer`)}))}isAlreadyMonetized(e){return this.adUnitAuctionStatus.has(e.divId)}logAlreadyMonetizedAdUnits(e,t){if(e.length!==t.length){const t=e.filter((e=>this.adUnitAuctionStatus.has(e.divId)));_(`${gn} cannot make a new ad call, existing one on ${t.map((e=>e.divId)).join(",")}.`)}}pbjsFinished(e,t){E(`${gn} pbjs end callback for ${t.map((e=>e.divId)).join(",")}`,e.getAllPrebidWinningBids()),t.forEach((e=>{Se(e.divId,pe.END_PBJS_AUCTION),xe(e.divId)})),this.adServer.executeWhenAdServerReady((()=>{E(`${gn} pbjs end callback ad server ready ${t.map((e=>e.divId)).join(",")}`),this.adServer.setPbjsTargetings(e,t),t.forEach((e=>{const t=this.adUnitAuctionStatus.get(e.divId);t&&this.adUnitAuctionStatus.set(e.divId,{...t,pbjsFinished:!0})})),this.canCallAdServer(t)&&this.callAdServer(t)}))}apsFinished(e,t){E(`${gn} aps end callback ${e.map((e=>e.divId)).join(",")}`,t),e.forEach((e=>Se(e.divId,pe.END_APS_AUCTION))),this.adServer.executeWhenAdServerReady((()=>{E(`${gn} aps end callback ad server ready ${e.map((e=>e.divId)).join(",")}`),this.adServer.setApsTargetings(e,t),e.forEach((e=>{const t=this.adUnitAuctionStatus.get(e.divId);t&&this.adUnitAuctionStatus.set(e.divId,{...t,apsFinished:!0})})),this.canCallAdServer(e)&&this.callAdServer(e)}))}canCallAdServer(e){const t=e.filter((e=>{const t=this.adUnitAuctionStatus.get(e.divId);return this.aps&&!this.pbjs?t&&t.apsFinished:this.pbjs&&!this.aps?t&&t.pbjsFinished:this.pbjs&&this.aps?t&&t.apsFinished&&t.pbjsFinished:void 0}));return t.length>0&&t.length!==e.length&&k(`${gn} cannot call ad server for ${e.map((e=>e.divId)).join(",")}, some ad units are not ready`),t.length>0}callAdServer(e){if(this.auctionRunning=!1,this.startAuctionForBufferedAdUnits(),e.forEach((e=>{Se(e.divId,pe.START_AD_SERVER_CALL)})),e.length>0){this.adServer.callAdServer(e);const t=e.map((e=>e.divId));w(`${gn} ad server called ${t.join(",")}`)}}}class mn{constructor(e,t,i){this.stackConfig=e,this.kleanAdsConfig=t,this.pageContext=i,this.adUnits=[],this.callbacks=[]}alreadyUsedDivIds(){return this.adUnits.map((e=>e.divId))}setConfig(e,t,i){this.stackConfig=e,this.kleanAdsConfig=t,this.pageContext=i,this.adUnits=[],this.callbacks=[]}async executeWhenAdUnitsFound(e){const t=(i=this.stackConfig,n=this.kleanAdsConfig,s=this.pageContext,bn(i.adUnits,i,n,s)).filter((e=>!this.alreadyUsedDivIds().includes(e.divId)));var i,n,s;if(this.adUnits.push(...t),await e(this.adUnits),this.callbacks.push(e),!this.adUnitObserver){const e=async e=>{const t=function(e,t,i,n){return bn([e],t,i,n)}(e,this.stackConfig,this.kleanAdsConfig,this.pageContext).filter((e=>!this.alreadyUsedDivIds().includes(e.divId))).reduce(((e,t)=>(e.find((e=>e.divId===t.divId))?k(`We tried to prepare two times the same divId, skipping adUnit ${t.adServerAdUnitName} from the list`,t):(e.push(t),E("New adUnit dynamicaly loaded",t.divId)),e)),[]);t.length>0&&(this.adUnits.push(...t),this.callbacks.forEach((async e=>{await e(t)})))};this.startAdUnitObserver(e)}}cleanObserverAndAdUnits(){var e;null===(e=this.adUnitObserver)||void 0===e||e.disconnect(),this.adUnitObserver=void 0,this.adUnits=[]}startAdUnitObserver(e){const t=this.alreadyUsedDivIds(),i=this.stackConfig.adUnits.filter((e=>!t.includes(e.divId)||e.dynamic)),n=document.body;if(!n)return void k("Body not found, cannot start observer");const s=new MutationObserver(function(e,t){return(i,n)=>{i.filter((e=>"childList"===e.type&&e.addedNodes.length>0)).forEach((i=>{Array.from(i.addedNodes).filter((e=>e.nodeType===Node.ELEMENT_NODE)).forEach((i=>{e.forEach((e=>{const n=e.divId.startsWith("css:")?e.divId.replace("css:",""):e.dynamic?`[id^="${e.divId}"]`:`[id="${e.divId}"]`;(i.matches(n)||i.querySelectorAll(n).length>0)&&t(e)}))}))}))}}(i,e));s.observe(n,{childList:!0,subtree:!0}),this.adUnitObserver=s}}function bn(e,t,i,n){var s,o;const a=null!==(o=null===(s=null==t?void 0:t.gamConfig)||void 0===s?void 0:s.adUnitPathConfig)&&void 0!==o?o:[];return $i(e,n,function(e,t){var i,n,s,o,a;const r=null!==(n=null===(i=null==t?void 0:t.gamConfig)||void 0===i?void 0:i.networkId)&&void 0!==n?n:e.networkId,d=(null===(s=null==t?void 0:t.gamConfig)||void 0===s?void 0:s.mcmIds)&&(null===(o=null==t?void 0:t.gamConfig)||void 0===o?void 0:o.mcmIds.length)>0?null===(a=null==t?void 0:t.gamConfig)||void 0===a?void 0:a.mcmIds:e.mcmIds;return r?d?[r,...d].join(","):r:""}(i,t),a,i.pubstackDeclarationTargetingKeys)}let yn=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];return t=class{constructor(){this.name="AdUnitsManager"}get adUnitsManager(){return this._adUnitsManager}isLoaded(){return!!this._adUnitsManager}async load({config:e,stackConfig:t}){this._adUnitsManager=new mn(t,e,e.pageContext)}async onStackConfigLoad({config:e,stackConfig:t}){var i;null===(i=this._adUnitsManager)||void 0===i||i.setConfig(t,e,e.pageContext)}async clean(){var e;null===(e=this._adUnitsManager)||void 0===e||e.cleanObserverAndAdUnits()}},Ct(t,"AdUnitsManagerModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();class An{constructor(e,t){this.element=e,this.dateIn=0,this.pastTimeInView=0,this.isInview=!1,this.alwaysInView=null!=t&&t,this.isTabActivated="visible"===window.document.visibilityState,this.isVisible=!window.document.hidden,this.resetAt=0,this.hasBeenReset=!1}getTimeInView(e){return this.hasBeenReset?e>=this.dateIn&&this.dateIn>0&&(this.isInview||this.alwaysInView)&&this.isTabActivated?this.pastTimeInView+(e-this.dateIn):this.pastTimeInView:0}getTimeOnPage(e){return this.hasBeenReset?e-this.resetAt:0}resetTimer(e){(this.isInview||this.alwaysInView)&&this.isTabActivated&&(this.dateIn=e),this.resetAt=e,this.hasBeenReset=!0,this.pastTimeInView=0}updateTimerOnInViewChange(e,t){this.isInview=e,this.updateTimer(t)}updateTimerOnTabStatusChange(e,t){this.isTabActivated=e,this.updateTimer(t)}updateTimerOnVisibleChange(e,t){this.isVisible=e,this.updateTimer(t)}updateTimer(e){if((this.isInview||this.alwaysInView)&&this.isTabActivated)return 0===this.dateIn?void(this.dateIn=e):this.dateIn>0?void 0:void(this.dateIn=e);this.dateIn>0&&(e>=this.dateIn&&(this.pastTimeInView=this.pastTimeInView+(e-this.dateIn)),this.dateIn=0)}}const Sn={root:null,rootMargin:"0px",threshold:.5},In="[adUnitsObserver]";class Cn{constructor(e,t){this.elements={},this.observer=new IntersectionObserver((e=>{this.handleIntersect(e,this)}),Sn),this.configAlwaysInView=t,e.forEach((e=>{this.elements[e.id]=new An(e,null==t?void 0:t[e.id]),this.observer.observe(e)})),addEventListener("visibilitychange",(()=>{E(`${In} visibilitychange`,window.document.visibilityState),"visible"===window.document.visibilityState?Object.keys(this.elements).forEach((e=>{this.elements[e].updateTimerOnTabStatusChange(!0,Date.now())})):Object.keys(this.elements).forEach((e=>{this.elements[e].updateTimerOnTabStatusChange(!1,Date.now())}))}))}isObserving(e){return e in this.elements}unobserve(e){this.isObserving(e)&&(this.observer.unobserve(this.elements[e].element),delete this.elements[e])}observe(e){var t;this.isObserving(e.id)||(this.elements[e.id]=new An(e,null===(t=this.configAlwaysInView)||void 0===t?void 0:t[e.id]),this.observer.observe(e))}getObservedDivIds(){return Object.keys(this.elements)}getTimeInView(e,t){return this.isObserving(e)?this.elements[e].getTimeInView(t):0}isInView(e){return!!this.isObserving(e)&&this.elements[e].isInview}getTimeOnPage(e,t){return this.isObserving(e)?this.elements[e].getTimeOnPage(t):0}resetTimers(e,t){e.forEach((e=>{this.isObserving(e)&&(E(`${In} reseting time for ${e}`),this.elements[e].resetTimer(t))}))}getAdUnitInViewTimer(e){return this.elements[e]}handleIntersect(e,t){e.forEach((e=>{const i=Date.now();t.elements[e.target.id].updateTimerOnInViewChange(e.isIntersecting,i),E(`${In}`,e.target.id,e.isIntersecting?"in view":"out of view")}))}}const wn="[RefreshState]";class En{constructor(e,t,i){this.adUnitsObserver=new Cn(e,i),this.exclusions=t,this.lastRenderInfo={},this.refreshRank={},this.hasAuctionInProgress={},this.shouldRefreshBeforeTimerEnd={},this.consecutiveSecondChanceAttempts={},e.forEach((e=>{this.refreshRank[e.id]=0,this.hasAuctionInProgress[e.id]=!1,this.shouldRefreshBeforeTimerEnd[e.id]=!1,this.consecutiveSecondChanceAttempts[e.id]=0}))}unobserve(e){E(`${wn} refresh unobserve`,e),this.adUnitsObserver.unobserve(e)}addAdUnits(e){e.forEach((e=>{E(`${wn} refresh addAdUnit`,e.id),this.adUnitsObserver.observe(e),this.refreshRank[e.id]=0,this.hasAuctionInProgress[e.id]=!1}))}getTimeInView(e,t){return this.adUnitsObserver.getTimeInView(e,t)}getTimeOnPage(e,t){return this.adUnitsObserver.getTimeOnPage(e,t)}isInView(e){return this.adUnitsObserver.isInView(e)}needRefresh(e,t,i){var n,s;if(!this.adUnitsObserver.isObserving(e))return!1;if(this.cappingReached(e,i.capping))return!1;if(this.hasAuctionInProgress[e])return!1;if(this.shouldRefreshBeforeTimerEnd[e])return this.shouldRefreshBeforeTimerEnd[e]=!1,!0;const o=this.getTimeInView(e,t),a=this.getTimer(e,i.timer,i.refreshSpecificRules);!function(e,t,i,n,s,o){if(S()){const a=document.getElementById(t),r=null==a?void 0:a.parentElement,d="refresh_kleanads";let l=document.getElementById(`${d}_${t}-refresh-debug`);l||(l=document.createElement("div"),l.id=`${d}_${t}-refresh-debug`,l.style.position="absolute",l.style.bottom="5px",l.style.left="5px",l.style.zIndex="99999999",l.style.backdropFilter="blur(6px)",l.style.textShadow="1px 1px 1px rgba(0, 0, 0, 0.3)",l.style.fontFamily="Arial, sans-serif",l.style.borderRadius="5px",l.style.color="white",l.style.padding="8px 16px",l.style.display="flex",l.style.flexDirection="column",l.style.gap="5px",l.style.textAlign="left",l.style.border="1px solid white",l.style.transition="background-color 250ms linear",null==r||r.prepend(l));let c=document.getElementById(`${d}_${t}-refresh-div-id`);c||(c=document.createElement("span"),c.id=`${d}_${t}-refresh-div-id`,l.appendChild(c)),c.textContent=`${t}`,c.style.fontSize="1rem",c.style.fontWeight="bold";let u=document.getElementById(`${d}_${t}-refresh-debug-timer`);u||(u=document.createElement("span"),u.id=`${d}_${t}-refresh-debug-timer`,l.appendChild(u)),u.textContent=`Time in view : ${Math.floor(i/1e3).toString()}`,u.style.fontSize="1rem";let h=document.getElementById(`${d}_${t}-refresh-debug-refresh-rank`);h||(h=document.createElement("span"),h.id=`${d}_${t}-refresh-debug-refresh-rank`,l.appendChild(h));const f=null!=n?n:"∞";h.textContent=`Refresh rank : ${e.getRefreshRank(t).toString()} / ${f}`,h.style.fontSize="1rem",l.style.backgroundColor=s&&o?"rgba(55, 110, 79, 0.7)":"rgba(140, 71, 79, 0.7)"}}(this,e,o,i.capping,null===(n=this.adUnitsObserver.getAdUnitInViewTimer(e))||void 0===n?void 0:n.isTabActivated,null===(s=this.adUnitsObserver.getAdUnitInViewTimer(e))||void 0===s?void 0:s.isInview);const r=i.refreshOutOfFocusConfig,d=i.alwaysInView,l=this.getLastWinningMediaType(e);if(r&&!d&&"video"!==l){const i=this.getTimeOnPage(e,t),n=this.isInView(e),s=1e3*r.timerInView;return r.refreshOutOfView?o>=s&&i>=a:n&&o>=s&&i>=a}return o>=a}cappingReached(e,t){return!!t&&t<this.getRefreshRank(e)}getTimer(e,t,i){if("video"===this.getLastWinningMediaType(e))return 3e4;const n=this.getLastWinningBidder(e),s=this.getLastSize(e),o=[];return i.forEach((e=>{if(!e.timer)return;const t=!!n&&e.bidders.includes(n)&&0===e.sizes.length,i=s&&e.sizes.find((e=>W(e,s)))&&0===e.bidders.length,a=n&&s&&e.bidders.includes(n)&&e.sizes.find((e=>W(e,s)));(t||i||a)&&o.push(1e3*e.timer)})),o.length>0?Math.max(...o):1e3*t}getObservedDivIds(){return this.adUnitsObserver.getObservedDivIds()}getRefreshRank(e){const t=this.refreshRank[e];return this.adUnitsObserver.isObserving(e)&&t?t:0}updateAdUnitStatus(e,t){const i=e.divId;if(this.refreshRank[i]+=1,this.lastRenderInfo[i]=e,E(`${wn} update status ${i} new refresh rank ${this.refreshRank[i]}`),e.isEmpty){if(t.refreshBehaviorOnEmpty===Ci.Continue)return;if(t.refreshBehaviorOnEmpty===Ci.InstantSecondChance)return void(this.consecutiveSecondChanceAttempts[t.divId]<1&&(this.consecutiveSecondChanceAttempts[t.divId]++,this.shouldRefreshBeforeTimerEnd[t.divId]=!0));E(`${wn} ${i} is excluded from refresh from now on (empty impression)`),this.unobserve(i)}else this.consecutiveSecondChanceAttempts[t.divId]=0;const n=t.refreshSpecificRules.filter((e=>!e.timer)),s=this.getLastWinningBidder(t.divId),o=this.getLastSize(t.divId);(!!n.find((e=>{const t=!!s&&e.bidders.includes(s),i=!!o&&!!e.sizes.find((e=>W(e,o))),n=t&&0===e.sizes.length,a=i&&0===e.bidders.length;return n||a||t&&i}))||this.isExcludedByConfig(t.divId)||this.cappingReached(i,t.capping))&&(E(`${wn} ${i} is excluded from refresh from now on`),this.unobserve(i))}getLastSize(e){var t;return(null===(t=this.lastRenderInfo[e])||void 0===t?void 0:t.size)||void 0}getLastAdvertiserId(e){var t;return(null===(t=this.lastRenderInfo[e])||void 0===t?void 0:t.advertiserId)||void 0}getLastWinningBidder(e){var t;return null===(t=this.lastRenderInfo[e])||void 0===t?void 0:t.hb_bidder}getLastWinningMediaType(e){var t;return null===(t=this.lastRenderInfo[e])||void 0===t?void 0:t.hb_mediaType}resetTimer(e,t){this.adUnitsObserver.resetTimers([e],t),this.hasAuctionInProgress[e]=!1}setAuctionInProgress(e){this.hasAuctionInProgress[e]=!0}isExcludedByConfig(e){const t=this.getLastAdvertiserId(e),i=this.getLastWinningLineItemId(e),n=this.getLastWinningOrderId(e),s=!!t&&this.exclusions.advertisers.includes(t),o=!!n&&this.exclusions.orders.includes(n),a=!!i&&this.exclusions.lineItems.includes(i);return s||o||a}getLastWinningLineItemId(e){var t;return(null===(t=this.lastRenderInfo[e])||void 0===t?void 0:t.lineItemId)||void 0}getLastWinningOrderId(e){var t;return(null===(t=this.lastRenderInfo[e])||void 0===t?void 0:t.orderId)||void 0}}const _n="[refresh]";const kn="[refresh]";async function Tn(e,i,n,s,o){const a=[],r=[],d={},l=new En([],s,d);e.executeWhenAdUnitsFound((async e=>{w(`${kn} adUnits found for refresh`,e),function(e,t){return e.flatMap((e=>{const i=e.adUnitNames.flatMap((e=>t.filter((t=>t.adUnitName.startsWith(e))))),n=e.specificRules.map((e=>e.bidder?{bidders:[e.bidder],sizes:[],timer:e.timer}:e));return i.filter((e=>!!e)).flatMap((t=>({...t,alwaysInView:e.alwaysInView,capping:e.capping,timer:e.timer,refreshSpecificRules:n,refreshBehaviorOnEmpty:e.refreshBehaviorOnEmpty,refreshOutOfFocusConfig:e.refreshOutOfFocusConfig})))}))}(n,e).forEach((e=>{a.push(e),e.alwaysInView&&(d[e.divId]=!0);const t=document.getElementById(e.divId);t?(r.push(t),l.addAdUnits([t])):w(`${kn} element to refresh not found with id`,e.divId)}))})),o.renderListener((e=>function(e,t,i){const n=e.divId,s=t.find((e=>e.divId===n));if(s){const t=e.hb_bidder;i.resetTimer(n,Date.now()),i.updateAdUnitStatus(e,s),t&&E(`${_n} we have a winning bidder for ${n} that is from prebid: ${t}`),E(`${_n} render on`,n)}}(e,a,l)));const c=()=>{const e=[],t=Date.now();l.getObservedDivIds().forEach((i=>{const n=a.find((e=>e.divId===i));n&&l.needRefresh(i,t,n)&&e.push(n)})),e.length>0&&e.forEach((e=>{const t=l.getRefreshRank(e.divId);w(`${kn} refresh on ${e.divId} with rank ${t}`);const n={adUnit:e,rank:t};o.setRefreshTargeting(n),i.executeRefresh(n),l.setAuctionInProgress(e.divId)})),l.getObservedDivIds().length>=0?setTimeout((()=>{c()}),100):w("${LOG_PREFIX} There is no more adUnits observed, stop refreshCycle")};c();window.dispatchEvent(new CustomEvent(t.REFRESH_INIT,{detail:{stopRefresh:e=>{e&&Array.isArray(e)&&(null==e?void 0:e.length)>0?e.forEach((e=>{l.unobserve(e)})):l.getObservedDivIds().forEach((e=>{l.unobserve(e)}))}}}));const u=()=>{window.removeEventListener(t.PAGE_CHANGE,u),w("${LOG_PREFIX} history mutation event received"),o.removeRenderListener(),r.forEach((e=>{l.resetTimer(e.id,Date.now()),l.unobserve(e.id)})),l.refreshRank={},l.lastRenderInfo={}};window.addEventListener(t.PAGE_CHANGE,u)}async function On(e,t){var i,n,s,o,a,r,d;Ae(ge.BEGIN_CONFIGURE),await U(e,{beforeStart:!0});const c=window;w(`Configure kleanads.js (version: ${e.kleanadsVersion}, run count: ${te.getInstance().kleanadsRunCount})`);const u=function(e,t){const i=t.sort(x);for(const t of i)if(e>=t.size)return t.device;return"desktop"}(c.innerWidth,e.screenSizeBreakpoints);!function(e,t,i,n){m=new h(e,t,i,n),b=e,y=t}(e.tagId,e.kleanadsVersion,u,Xi(null===(i=e.pocOverrides)||void 0===i?void 0:i.traceThrottling,e.tagId)),te.getInstance().setUprState(null===(n=e.pocOverrides)||void 0===n?void 0:n.uprState,null===(s=e.pocOverrides)||void 0===s?void 0:s.uprRatio);const f=function(e,t){const i=ze(t),n=new Map(i.map((({key:e,defaultValue:t})=>[e,t])));e.document.querySelectorAll('meta[name^="pbstck_context:"]').forEach((e=>{var t,s;const o=null===(t=e.attributes.getNamedItem("name"))||void 0===t?void 0:t.value.substring(15).toLowerCase(),a=null===(s=e.attributes.getNamedItem("content"))||void 0===s?void 0:s.value.toLowerCase();if(o&&a){const e=i.find((({key:e})=>e===o));e&&(function(e,t){var i;return t.defaultValue===e||(null!==(i=t.otherValues)&&void 0!==i?i:[]).includes(e)}(a,e)?n.set(o,a):_(`${Fe} Unknown ${o} value ${a}`))}}));const s=new URLSearchParams(e.location.search);for(const e of s.keys())e.startsWith("pbstck_context:")&&n.set(e.slice(15),s.get(e)||"");return n}(c,e.context);if(0===f.size)w("[context] No context set");else{let e="";f.forEach(((t,i)=>{e+=`\n${i}=>${t}`})),w(`[context] The following context will be used:${e}`,f)}const g=function(e,t){const i=e.filter(sn).sort(((e,t)=>e.priority-t.priority)),n=e.filter(on);if(0===n.length)return void k("[stacks] Could not find default stack");n.length>1&&k("[stacks] Multiple default stacks found");const s=n[0],o=i.find((e=>ln(e.conditions,t)));return null!=o?o:s}(e.stacks,f);if(!g)return void k("No stack found, stopping monetization");w(`[stacks] served stack: ${g.stackId} ${g.priority||g.conditions?"":"(default stack)"}`);const p=$n(g.versions).toString(),v={...e,device:u,stack:g,stackVersion:p,pageContext:f,consentlessMode:null===(o=e.pocOverrides)||void 0===o?void 0:o.consentlessMode,noCmp:l(),spaMode:null===(r=null===(a=e.spaConfig)||void 0===a?void 0:a[e.tagId])||void 0===r?void 0:r.mode,pubstackWindow:c,instreamType:Qi(e.tagId,null===(d=e.pocOverrides)||void 0===d?void 0:d.instreamConfig)},A=new kt(v,t);await A.loadInitialModules(),C(p);return{configPromise:hn(v),kleanAdsConfig:v,moduleService:A}}async function Rn(e){var t,i,n,s,a,r,d,l;const{configPromise:u,kleanAdsConfig:h,moduleService:f}=e;w("Starting kleanads"),Ae(ge.BEGIN_START),je();const g=h.noCmp||await Be(window);$e!==Re.UNKNOWN&&T("[metric] cmpResponseAvailable",{cmpResponseAvailable:Ce(fe.CMP_RESPONSE_AVAILABLE),fromBeginCmpResponseAvailable:we(fe.BEGIN_INIT,fe.CMP_RESPONSE_AVAILABLE),consentType:$e}),await f.modulesDispatchEvent("onAfterConsent"),await U(h,{beforeStart:!1});const p=h.stacks.find((e=>e.stackId===function(e){var t,i;return null===(i=null===(t=e.pocOverrides)||void 0===t?void 0:t.consentlessStacks)||void 0===i?void 0:i[e.tagId]}(h)));if(g){const e=await f.modulesDispatchEvent("onAfterConsentAccepted");await Promise.all(e)}else{w("Consent refused");const e=await f.modulesDispatchEvent("onAfterConsentRefused");await Promise.all(e),p&&(h.stack=p,h.stackVersion=$n(p.versions).toString(),C(h.stackVersion),w("Using following consentless stack",p.stackId,p))}if(g||h.consentlessMode||p){await f.modulesDispatchEvent("onBeforeStackConfigLoad");const e=g?u:hn(h);let o=await e;if(o&&(null===(t=h.pocOverrides)||void 0===t?void 0:t.optimizationModule)&&(o=await Zt(o),E("[pocOverrides] Optimization module finished")),w("[config] kleanAdsConfig:",h),w("[config] stackLoadedConfig:",o),o){if(h.pocOverrides&&h.pocOverrides.grapeshotTargetings){E("[pocOverrides] Poc Grapeshot enabled");const e=await async function(e){return new Promise((t=>{const i=`${e}${encodeURIComponent(window.location.href)}`,n=document.createElement("script");n.async=!0,n.src=i,n.onload=()=>t(window.gs_channels),setTimeout((()=>t(void 0)),3e3),n.onerror=()=>t(void 0),document.head.append(n)}))}(h.pocOverrides.grapeshotTargetings);te.getInstance().grapeshotValues=e}await f.modulesDispatchEvent("onStackConfigLoad",{stackConfig:o});const e=null===(i=f.getLoadedModuleInstance(Jt))||void 0===i?void 0:i.pbjs;e&&await f.modulesDispatchEvent("onAfterPrebidReady",{prebid:e});const t=null===(n=f.getLoadedModuleInstance(Et))||void 0===n?void 0:n.aps,u=null===(s=f.getLoadedModuleInstance(At))||void 0===s?void 0:s.adServer;u&&await f.modulesDispatchEvent("onAfterAdServerReady",{adServer:u});const g=null===(a=f.getLoadedModuleInstance(yn))||void 0===a?void 0:a.adUnitsManager;if(!u)return void k("no adServer found, stopping monetization");if(!g)return void k("no adUnitManager found, stopping monetization");We(window,h.context,null!==(d=null===(r=o.gamConfig)||void 0===r?void 0:r.adUnitPathConfig)&&void 0!==d?d:[]);const p=te.getInstance().kleanadsRunCount,v=new vn(u,e,t,p),m=o.adUnits.some((e=>e.isInstream))?new Je(new ce(window,h.pageContext,h.device,h.instreamType),e,t,p):void 0,b=async e=>{w("[config] adUnits to monetize:",e),await f.modulesDispatchEvent("onPrepareAdUnits",{toPreparedAdUnits:e}),qt(e,v,m,o.lazyLoading)};await g.executeWhenAdUnitsFound(b);const y=o.refreshConfig;if(h.globalRefreshConfig&&y){const e=Xi(null===(l=h.pocOverrides)||void 0===l?void 0:l.disableRefreshExclusions,h.tagId),t=h.networkId&&!e?await Un(h.configUrl,h.networkId,h.stack.scopeId):c;Tn(g,v,y.adUnitConfig,t,u)}}else k("no input configuration, stopping monetization")}else w("consent not given, no monetization");switch(h.spaMode){case"manual":E("[SPA] manual SPA enabled"),Nn((()=>{E("[SPA] manual page change requested, restarting kleanads.js"),Ln(h,f)}));break;case"auto":E("[SPA] auto SPA enabled"),o(),Pn((()=>{E("[SPA] page change detected, restarting kleanads.js"),Ln(h,f)}))}ye(fe.MAIN_THREAD_END)}function $n(e){const t=e.sort(((e,t)=>e.ratio-t.ratio));return M(void 0!==t[0].ratio?t[0].ratio:100)?t[0].version:t[1].version}const Ln=async(e,t)=>{Ae(ge.SPA_RELOAD);const i=te.getInstance();i.setKleanadsRunCount(i.kleanadsRunCount+1);const n=t.getModules();await t.modulesCleanUp(),w("Restarting kleanads");const s=await On(e,n);s&&Rn(s)},Pn=e=>{const i=new MutationObserver((()=>{s()})),n=e=>{const t=e,n=new URL(t.detail.referrer),s=(o=t.detail.url)?`${o}`.startsWith("http")?new URL(o).pathname:`${o}`:"";var o;n.pathname!==s&&i.observe(document.head,{attributes:!0,childList:!0,subtree:!0})};window.addEventListener(t.HISTORY_MUTATION,n);const s=()=>{window.removeEventListener(t.HISTORY_MUTATION,n),i.disconnect(),window.dispatchEvent(new CustomEvent(t.PAGE_CHANGE)),e()}},Nn=e=>{const n=()=>{s()};window.addEventListener(i.SPA_RELOAD,n);const s=()=>{window.removeEventListener(i.SPA_RELOAD,n),window.dispatchEvent(new CustomEvent(t.PAGE_CHANGE)),e()}},Un=async(e,t,i)=>await fetch(`${e}/refresh-exclusions/${t}/${i}/currentExclusions.json`).then((async e=>e.json().then((e=>e)).catch((e=>{k(`unable to extract line items with no refresh: ${e}`)})))).catch((e=>k(`unable to get line items with no refresh: ${e}`)));let xn=(()=>{let e,t,i=[wt("onAfterConsent")],n=[];return t=class{constructor(){this.name="Collector",this._isLoaded=!1,this._scriptAdded=!1}isLoaded(){return this._isLoaded}async load(){this._isLoaded=!0}async onAfterConsent({config:e}){this._scriptAdded||(setTimeout((()=>{w("Downloading pubstack collector"),N(`https://boot.pbstck.com/v1/tag/${e.tagId}`)}),200),this._scriptAdded=!0)}async clean(){}},Ct(t,"CollectorModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();const Dn="[parallax]";class jn{constructor(e){this.id=e.divId;const t=document.getElementById(this.id);if(!t)throw new Error(`${Dn} container not found for adUnit ${this.id}`);const i=e.sizes.filter((e=>"fluid"!==e)).reduce(((e,[,t])=>t>e?t:e),0);this.adUnitContainerMaxHeightPx=Math.max(i,600)/2,this.minViewableHeightPx=Math.min(this.adUnitContainerMaxHeightPx+10,310),this.adUnitContainer=t;const n=this.adUnitContainer.attachShadow({mode:"open"});n.innerHTML=`\n <div id="${jn.PARALLAX_CLIP_ID}"><slot></slot></div>\n `,this.adUnitContainerShadowRoot=n,this.cacheLatestBidWon(),this.observeMutations(),E(`${Dn} prepared parallax for adUnit ${this.id}`)}getHighestChildRect(e){const t=e.children;if(0===t.length)return;const i=(e=>e.reduce(((e,t)=>{const i=getComputedStyle(e),n=getComputedStyle(t);return parseInt(n.height)>parseInt(i.height)?t:e}),e[0]))(Array.from(t));return i.getBoundingClientRect()}cacheLatestBidWon(){const e=null===window||void 0===window?void 0:window.kleanadsPbjs;if(e)try{e.onEvent("auctionEnd",(e=>{var t;(null===(t=e.adUnitCodes)||void 0===t?void 0:t.includes(this.id))&&(this.latestBidWonInfo=void 0)})),e.onEvent("bidWon",(t=>{if(t.adUnitCode===this.id){const{bidderCode:i,size:n}=t,s=jn.BLOCKED_BIDDERS.some((t=>{var n;return i===t||(null===(n=null==e?void 0:e.aliasRegistry)||void 0===n?void 0:n[i])===t})),o=jn.BLOCKED_SIZES.some((e=>e===n)),a="banner"===(null==t?void 0:t.mediaType);this.latestBidWonInfo={isParallaxable:a&&!o&&!s}}}))}catch(e){_(`${Dn} unable to listen to bidWon event`,e)}else _(`${Dn} pbjs not loaded, unable to listen to bidWon event`)}observeMutations(){this.resizeObserver=new ResizeObserver((e=>{const t=e.some((e=>{var t,i;return Array.from(null!==(i=null===(t=e.target.parentElement)||void 0===t?void 0:t.children)&&void 0!==i?i:[]).some((e=>e.getBoundingClientRect().height>this.adUnitContainerMaxHeightPx))}));(this.latestBidWonInfo?this.latestBidWonInfo.isParallaxable&&t:t)?this.renderParallax():this.cleanUp()})),this.mutationObserver=new MutationObserver((e=>{this.mutationDebounceTimeout&&clearTimeout(this.mutationDebounceTimeout),this.mutationDebounceTimeout=setTimeout((()=>{this.mutationDebounceTimeout=void 0,e.flatMap((e=>Array.from(e.addedNodes))).forEach((e=>{var t;e instanceof HTMLElement&&(null===(t=this.resizeObserver)||void 0===t||t.observe(e))})),e.flatMap((e=>Array.from(e.removedNodes))).forEach((e=>{var t;e instanceof HTMLElement&&(null===(t=this.resizeObserver)||void 0===t||t.unobserve(e))}))}),jn.MUTATION_DEBOUNCE_TIMEOUT_VALUE_MS)})),this.mutationObserver.observe(this.adUnitContainer,{childList:!0})}renderParallax(){var e,t,i;this.adUnitContainer.classList.add(jn.PARALLAX_ADUNIT_CONTAINER_CLASS),null===(e=this.adUnitContainerShadowRoot.getElementById(jn.PARALLAX_CLIP_ID))||void 0===e||e.classList.add(jn.PARALLAX_CLIP_ENABLED_CLASS);const n=this.getHighestChildRect(this.adUnitContainer),s=10+(window.innerHeight-(null!==(t=null==n?void 0:n.height)&&void 0!==t?t:0))/2,o=new CSSStyleSheet;o.insertRule(`#${jn.PARALLAX_CLIP_ID}.${jn.PARALLAX_CLIP_ENABLED_CLASS} { height: ${this.minViewableHeightPx}px; width: ${null!==(i=null==n?void 0:n.width)&&void 0!==i?i:0}px; clip-path: rect(0 auto ${this.minViewableHeightPx}px 0); position: relative; margin: 0 auto; } `),o.insertRule(`#${jn.PARALLAX_CLIP_ID}.${jn.PARALLAX_CLIP_ENABLED_CLASS} ::slotted(*) {\n position: fixed;\n top: ${s}px;\n }`),this.adUnitContainerShadowRoot.adoptedStyleSheets=[o]}cleanUp(){var e;this.adUnitContainer.classList.remove(jn.PARALLAX_ADUNIT_CONTAINER_CLASS),null===(e=this.adUnitContainerShadowRoot.getElementById(jn.PARALLAX_CLIP_ID))||void 0===e||e.classList.remove(jn.PARALLAX_CLIP_ENABLED_CLASS)}}jn.MUTATION_DEBOUNCE_TIMEOUT_VALUE_MS=40,jn.PARALLAX_ADUNIT_CONTAINER_CLASS="adm-parallax",jn.PARALLAX_CLIP_ID="adm-parallax-clip",jn.PARALLAX_CLIP_ENABLED_CLASS="adm-parallax-clip-enabled",jn.BLOCKED_BIDDERS=["invibes","seedtag","kargo"],jn.BLOCKED_SIZES=["1x1"];const Mn=e=>{try{return new jn(e)}catch(t){_(`${Dn} unable to prepareParallax for adUnit ${e.divId}`,t)}};var Bn;class Vn extends HTMLElement{constructor(){super();const e=window.kleanadsPbjs;if(e)try{e.onEvent("bidWon",this.winningBid.bind(this))}catch(e){_("[pbstck-sticky] unable to listen to bidWon event",e)}else _("[pbstck-sticky] pbjs not loaded, unable to listen to bidWon event");this.attachShadow({mode:"open"}),this.mutationObserver=new MutationObserver((e=>{this.isAddingCreative(e)&&(Bn.shouldDisplay=!0),this.updateShadowLayout()})),this.addEventListener("close",(()=>{E('[pbstck-sticky] event "close" caught'),this.close()}))}winningBid(e){e.adUnitCode===this.id&&Bn.biddersNotToDisplay.includes(e.bidderCode)&&(E("[pbstck-sticky] blocked bidder, preventing display",e),Bn.shouldDisplay=!1,this.updateShadowLayout())}close(){E("[pbstck-sticky] closing sticky component"),this.shadowRoot&&(this.mutationObserver.disconnect(),this.shadowRoot.innerHTML="\n <style>\n :host {\n display: none;\n }\n </style>")}isAddingCreative(e){var t,i,n;return(null===(t=e[0])||void 0===t?void 0:t.addedNodes[0])&&(null===(n=null===(i=e[0])||void 0===i?void 0:i.target.parentElement)||void 0===n?void 0:n.id)===this.id}connectedCallback(){this.isConnected&&(this.setAttribute("data-pbstck-component","no-ad"),this.setShadowDom("<div></div>"),this.updateShadowLayout(),this.mutationObserver.observe(this,{subtree:!0,childList:!0}))}disconnectedCallback(){this.mutationObserver.disconnect()}attributeChangedCallback(){this.updateShadowLayout()}getHighestChild(){const e=Array.from(this.children);if(0!==e.length)return Fn(e)}setShadowDom(e){this.shadowRoot&&(Bn.shouldDisplay?this.shadowRoot.innerHTML=`\n <style> \n :host {\n display: block;\n max-height: ${Bn.maxHeight}px;\n overflow: hidden;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n margin: 0;\n padding: 0;\n z-index: 99999999;\n }\n .sticky-button {\n height: 28px;\n width: 28px;\n background: ${Bn.backgroundColor};\n position: absolute;\n bottom: 0;\n right: 0;\n border-radius: 5px 0 0 0;\n box-shadow: rgba(0, 0, 0, 0.2) -2px -2px 3px -1px, rgba(0, 0, 0, 0.1) -1px -1px 2px -1px !important;\n }\n .sticky-button-container {\n height: 30px;\n position: relative;\n }\n .sticky-button-text {\n display: block;\n height: 22px;\n width: 22px;\n padding: 3px;\n }\n .sticky-container {\n background: ${Bn.backgroundColor};\n padding: 8px 0;\n box-shadow: rgba(0, 0, 0, 0.2) 0px -1px 5px -1px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px !important;\n }\n .sticky-container slot > * {\n position: relative;\n }\n ::slotted(*) {\n position: relative;\n }\n .cross {\n display: block;\n }\n .sticky-container slot {\n width: fit-content;\n width: -moz-fit-content;\n block-size: fit-content;\n margin: 0 auto !important;\n display: block;\n }\n }\n </style>\n ${e}`:this.shadowRoot.innerHTML="\n <style>\n :host {\n display: block;\n width: 100%;\n height: 1px;\n background: transparent;\n position: fixed;\n bottom: 0;\n }\n </style><div></div>")}updateShadowLayout(){if(E(`[pbstck-sticky] updating element ${this.id}`),!this.shadowRoot)return;this.setAttribute("data-pbstck-component","sticky");const e=document.createElement("div");e.className="sticky-container";const t=document.createElement("slot");e.append(t),this.setShadowDom(`${e.outerHTML}`);const i=this.getHighestChild();if(i&&Bn.shouldDisplay){i.style.display="block",i.style.margin="0 auto",i.style.bottom="0",i.style.maxHeight=`${Bn.maxCreativeHeight}px`;const e=document.createElement("div");e.className="sticky-button-container";const t=document.createElement("div");t.className="sticky-button";const n=document.createElement("div");n.className="sticky-button-text",n.addEventListener("click",(()=>{E("[pbstck-sticky] Close button pressed"),this.close()}));const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d","M 5.3,18.7 C 5.5,18.9 5.7,19 6,19 6.3,19 6.5,18.9 6.7,18.7 l 5.3,-5.3 5.3,5.3 c 0.2,0.2 0.5,0.3 0.7,0.3 0.2,0 0.5,-0.1 0.7,-0.3 0.4,-0.4 0.4,-1 0,-1.4 L 13.4,12 18.7,6.7 c 0.4,-0.4 0.4,-1 0,-1.4 -0.4,-0.4 -1,-0.4 -1.4,0 L 12,10.6 6.7,5.3 c -0.4,-0.4 -1,-0.4 -1.4,0 -0.4,0.4 -0.4,1 0,1.4 l 5.3,5.3 -5.3,5.3 c -0.4,0.4 -0.4,1 0,1.4 z");const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.setAttribute("viewBox","0 0 24 24"),o.setAttribute("class","cross"),o.setAttribute("height","22px"),o.setAttribute("width","22px"),o.setAttribute("fill","#333"),o.append(s),n.append(o),t.append(n),e.append(t),this.shadowRoot.prepend(e)}}}Bn=Vn,Vn.backgroundColor="rgb(250, 250, 250)",Vn.maxCreativeHeight=216,Vn.buttonHeight=32,Vn.maxHeight=Bn.maxCreativeHeight+Bn.buttonHeight,Vn.shouldDisplay=!1,Vn.biddersNotToDisplay=["ogury","missena","seedtag","kargo","gumgum","bliink"];const Fn=e=>e.reduce(((e,t)=>t.offsetHeight>e.offsetHeight?t:e),e[0]);function zn(e){if(e.anchor){const t=e.divId,i=document.getElementById(t);if(E(`[pbstck-sticky] preparing sticky for ${e.adUnitName}`,e),"pbstck-sticky"===(null==i?void 0:i.localName))return void E(`[pbstck-sticky] div ${t} already prepared`);const n=document.createElement("pbstck-sticky");n.id=t;const s=`adm-sticky-${t}`;if(i)i.id=s,i.appendChild(n);else{const e=document.createElement("div");e.id=s,e.appendChild(n),document.body.appendChild(e)}w(`[pbstck-sticky] prepared sticky for ${e.adUnitName}`,e)}}let Wn=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];return t=class{constructor(){this.name="ContainersModule",this.loaded=!1,this.firstStickyDefined=!1}isLoaded(){return this.loaded}async load(){if("function"==typeof(null===customElements||void 0===customElements?void 0:customElements.define)&&"function"==typeof MutationObserver)try{customElements.define("pbstck-sticky",Vn)}catch(e){k(`[ContainersModule] unable to define custom elements, error "${e}"`)}else _('[ContainersModule] unable to define custom elements, error: "browser not compatible"');this.loaded=!0}async onPrepareAdUnits({toPreparedAdUnits:e}){for(const t of null!=e?e:[])t.parallax&&Mn(t),t.anchor&&!this.firstStickyDefined&&(zn(t),this.firstStickyDefined=!0)}async clean(){}},Ct(t,"ContainersModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();const Gn="adm-ad-loading",Hn="adm-ad-empty",Jn="adm-ad-rendered",Kn="adm-ad-skin",Yn="data-adm-skin",qn=["sublime","justpremium","gumgum","dspx"];let Xn=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];return t=class{constructor(){this.name="CssClass",this._isLoaded=!1}async load(){this._isLoaded=!0}async onAfterAdServerReady({adServer:e}){e.renderListener(this.applyClassBySlotRenderEndedEvent)}async onAfterPrebidReady({prebid:e}){E("[CssClassModule] onAfterPrebidReady event received"),e.getPbjs().onEvent("bidWon",this.applyClassByBidWon)}async applyClassBySlotRenderEndedEvent(e){var t;const i=e.divId,n=document.getElementById(i);n&&(e.isEmpty?(n.classList.replace(Gn,Hn),E(`[CSS Class] slot empty: ${i}`)):(n.classList.replace(Gn,Jn),n.classList.replace(Hn,Jn),(null===(t=e.size)||void 0===t?void 0:t.length)&&1800===e.size[0]&&1e3===e.size[1]?(n.classList.add(Kn),n.setAttribute(Yn,"gam"),E(`[CSS Class] slot rendered is skin: ${i}`)):(n.classList.remove(Kn),n.removeAttribute(Yn)),E(`[CSS Class] slot rendered: ${i}`)))}applyClassByBidWon(e){const t=document.getElementById(e.adUnitCode);"1800x1000"===e.size&&(null==t||t.classList.add(Kn),null==t||t.setAttribute(Yn,"prebid"),qn.includes(e.bidderCode)||null==t||t.classList.add("adm-ad-skin-resizable"),E(`[CSS Class] bidWon is skin: ${e.adUnitCode}`))}async onPrepareAdUnits({toPreparedAdUnits:e}){e&&e.forEach((e=>{const t=document.getElementById(e.divId);t&&t.classList.add(Gn)}))}isLoaded(){return this._isLoaded}clean(){return this._isLoaded=!1,Promise.resolve(void 0)}},Ct(t,"CssClassModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();let Qn=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];return t=class{constructor(){this.name="XplnModule",this.loaded=!1}async load(){this.loaded=!0}async onStackConfigLoad({config:e,stackConfig:t}){var i,n;if((null===(i=t.xplnConfig)||void 0===i?void 0:i.enabled)&&(null===(n=t.xplnConfig)||void 0===n?void 0:n.publisherId)){const i=t.xplnConfig.publisherId;((e,t)=>{const i=e.document.createElement("script"),n=e.document.createElement("script");i.innerHTML=`(function(x,p,l,n,a,i) {\n a=p.createElement(l);a.async=!0;a.src=n;a.xpln=x;\n i=p.currentScript||p.getElementsByTagName(l)[0];i.parentNode.insertBefore(a,i);\n })({xid:'${t}'},document,'script','https://cdn.xpln.tech/page.js');`,n.innerHTML=`(function(x,p,l,n,a,i) {\n self.xpln_targeting=function(){};\n a=x.createElement(p);a.async=!0;\n a.src=l+'${t}'+'/'+location.hostname+'.js';\n i=x.currentScript||x.getElementsByTagName(p)[0];i.parentNode.insertBefore(a,i);\n })(document,'script','https://cdn.xpln.tech/');`,i.type="text/javascript",n.type="text/javascript",i.setAttribute("data-kleanads","true"),n.setAttribute("data-kleanads","true"),e.document.head.appendChild(i),e.document.head.appendChild(n)})(e.pubstackWindow,i)}}async onAfterAdServerReady({config:e,stackConfig:t,adServer:i}){(null==t?void 0:t.xplnConfig)&&(w("XplnModule declare xpln targeting when ready"),i.registerExternalTargetingDeclaration((()=>es(e.pubstackWindow))))}async clean(){this.loaded=!1}isLoaded(){return this.loaded}},Ct(t,"XplnModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})();const Zn=(e,t,i,n)=>t>15?(_("Could not declare XPLN targetings, xpln_targeting function is undefined"),void n()):e.xpln_targeting&&e.xpln_targeting.toString().length>100?(e.xpln_targeting(),w(`XPLN targeting called after ${t} retry`),void i()):void setTimeout((()=>Zn(e,t+1,i,n)),300),es=e=>new Promise(((t,i)=>Zn(e,0,t,i))),ts="[IAS Module]";let is=(()=>{let e,t,i=[wt("onAfterAdServerReady")],n=[];return t=class{constructor(){this.name="IasModule",this.loaded=!1}async load(){this.loaded=!0}async onAfterAdServerReady({config:e,stackConfig:t,adServer:i}){var n;const s=null===(n=t.iasConfig)||void 0===n?void 0:n.pubId;s&&i.registerExternalTargetingDeclaration((t=>this.declareIasTargetingsWhenReady(e.pubstackWindow,s,t)))}async clean(){this.loaded=!1}isLoaded(){return this.loaded}declareIasTargetingsWhenReady(e,t,i){return new Promise(((n,s)=>this.tryDeclareIasTargetings(e,0,t,i,n,s)))}async tryDeclareIasTargetings(e,t,i,n,s,o){if(t>15)return _(`${ts} Could not declare IAS targetings because they could not be retrieved`),void o();const a=this.prepareSlots(n),r=await this.getTargetings(i,a,e);if(w(`${ts} IAS targeting called`,r),r){const e=await r.json();return n.forEach((t=>{if(e.slots[t.getSlotElementId()]&&(void 0!==e.custom["ias-kw"]&&(t.setTargeting("ias-kw",e.custom["ias-kw"]),Object.keys(e.brandSafety).forEach((i=>{t.setTargeting(i,e.brandSafety[i])}))),void 0!==e.fr&&t.setTargeting("fr",e.fr),w(`${ts} IAS targeting called for slot ${t.getSlotElementId()}`,e),t.getSlotElementId()in e.slots&&e.slots[t.getSlotElementId()].vw)){const i=e.slots[t.getSlotElementId()].vw.toString().replaceAll(",","%2C");t.setTargeting("vw",i)}})),E(`${ts} IAS targeting called${t?" after "+t+" tries":""}`),void s()}setTimeout((()=>this.tryDeclareIasTargetings(e,t+1,i,n,s,o)),300)}async getTargetings(e,t,i){let n=`https://pixel.adsafeprotected.com/services/pub?anId=${e}`;t.forEach((e=>{n=n.concat(`&slot=${e}`)})),n=n.concat(`&wr=${this.viewports(i)}&sr=${this.browserSize(i)}&sessionId=${Pt()}&url=${encodeURIComponent(i.location.href)}`),E(`${ts} URL:`,n);try{return await fetch(n.toString())}catch(e){_(`${ts} Error while fetching IAS targetings`,e)}}prepareSlots(e){const t=[];return e.length>0&&e.forEach((e=>{t.push(this.slotsToString(e))})),t}slotsToString(e){return`%7Bid:${e.getSlotElementId()},ss:[${e.getSizes().filter((e=>"fluid"!==e)).map((e=>`${e.width}.${e.height}`)).join(",")}],p:${e.getAdUnitPath()},t:display%7D`}viewports(e){return`${e.innerWidth}.${e.innerHeight}`}browserSize(e){return`${e.screen.width}.${e.screen.height}`}},Ct(t,"IasModule"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),It(t,n)})(),t})(),ns=(()=>{let e,i,n=[wt("onStackConfigLoad")],s=[];return i=class{constructor(){this.name="PublicAccessModule",this._isLoaded=!1}isLoaded(){return this._isLoaded}async load({config:e,stackConfig:i}){e.pubstackWindow._pbstckKleanAds.getBootstrapConfig=()=>{const{pubstackWindow:t,...i}=e;return i},e.pubstackWindow._pbstckKleanAds.getStackConfig=()=>i,e.pubstackWindow._pbstckKleanAds.apiReady=!0,window.addEventListener(t.REFRESH_INIT,(t=>{e.pubstackWindow._pbstckKleanAds.stopRefresh=e=>{var i,n;null===(n=null===(i=null==t?void 0:t.detail)||void 0===i?void 0:i.stopRefresh)||void 0===n||n.call(i,e)},e.pubstackWindow._pbstckKleanAds.refreshApiReady=!0})),this._isLoaded=!0}async clean({config:e}){e.pubstackWindow._pbstckKleanAds.apiReady=!1,e.pubstackWindow._pbstckKleanAds.getBootstrapConfig=()=>{throw new Error("Not ready yet, wait for apiLoaded.")},e.pubstackWindow._pbstckKleanAds.getStackConfig=()=>{throw new Error("Not ready yet, wait for apiLoaded.")}}},Ct(i,"PublicAccessModule"),(()=>{const t="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:i},n,{kind:"class",name:i.name,metadata:t},null,s),i=e.value,t&&Object.defineProperty(i,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t}),It(i,s)})(),i})();let ss=(()=>{let e,t,i=[wt("onStackConfigLoad")],n=[];var s=t=class{constructor(){this.name="SkinRendering",this._isLoaded=!1,this.eligibleForSkinRendering=!1}isLoaded(){return this._isLoaded}async load({config:e,stackConfig:t}){var i,n,s,o,a,r,d,l,c,u;if(this.eligibleForSkinRendering=function(e,t){var i,n,s,o,a,r,d,l,c;return!!(null===(o=null===(s=null===(n=null===(i=e.pocOverrides)||void 0===i?void 0:i.skinRenderingSettings)||void 0===n?void 0:n.siteLevel)||void 0===s?void 0:s[e.tagId])||void 0===o?void 0:o.enabledSkinRenderAdaptation)&&!(null===(l=null===(d=null===(r=null===(a=e.pocOverrides)||void 0===a?void 0:a.skinRenderingSettings)||void 0===r?void 0:r.stackLevel)||void 0===d?void 0:d[e.stack.stackId])||void 0===l?void 0:l.disableSkinRenderAdaptation)&&(null===(c=t.adUnits)||void 0===c?void 0:c.some((e=>e.sizes.some((e=>W(e,[1800,1e3]))))))}(e,t),this.eligibleForSkinRendering){const{maxHeaderHeightPx:t,marginTopPx:h,siteContentWidthPx:f,additionalSkinRenderingCss:g}=null!==(u=null!==(a=null===(o=null===(s=null===(n=null===(i=e.pocOverrides)||void 0===i?void 0:i.skinRenderingSettings)||void 0===n?void 0:n.stackLevel)||void 0===s?void 0:s[e.stack.stackId])||void 0===o?void 0:o.style)&&void 0!==a?a:null===(c=null===(l=null===(d=null===(r=e.pocOverrides)||void 0===r?void 0:r.skinRenderingSettings)||void 0===d?void 0:d.siteLevel)||void 0===l?void 0:l[e.tagId])||void 0===c?void 0:c.style)&&void 0!==u?u:{};this.configuredMaxHeaderHeightPx=t,this.configuredMarginTopPx=h,this.configuredSiteContentWidthPx=f,this.configuredAdditionalSkinRenderingCss=g,this._isLoaded=!0,E("[Skin] Configuration eligible for skin rendering.")}}async onAfterPrebidReady({prebid:e,config:{pubstackWindow:t}}){this.pbjs=e,this.eligibleForSkinRendering&&(this.onBidWonHandler=this.onBidWon.bind(this),this.pbjs.getPbjs().onEvent("bidWon",this.onBidWonHandler),ft((()=>{this.onSlotRenderEndedHandler=this.onSlotRenderEnded.bind(this),t.googletag.pubads().addEventListener("slotRenderEnded",this.onSlotRenderEndedHandler)})))}async clean(){var e;this.onBidWonHandler&&(null===(e=this.pbjs)||void 0===e||e.getPbjs().offEvent("bidWon",this.onBidWonHandler),this.onBidWonHandler=void 0),this.onSlotRenderEndedHandler&&(window.googletag.pubads().removeEventListener("slotRenderEnded",this.onSlotRenderEndedHandler),this.onSlotRenderEndedHandler=void 0),this._isLoaded=!1}onBidWon(e){this.shouldApplyPrebidSkinRendering(e)?this.applySkinCSS(e.adUnitCode,"prebid"):this.removeSkinRendering(e.adUnitCode)}onSlotRenderEnded(e){this.isFromGAM(e)?this.applySkinCSS(e.slot.getSlotElementId(),"gam"):e.size&&!W(e.size,[3,1])&&this.removeSkinRendering(e.slot.getSlotElementId())}removeSkinRendering(e){const t=document.getElementById(e);t&&t.classList.remove(s.SKIN_RENDERING_CSS_CLASS)}shouldApplyPrebidSkinRendering(e){var t;const i=["sublime","justpremium","gumgum"],n=null===(t=this.pbjs)||void 0===t?void 0:t.getPbjs();if(n){const t=i.some((t=>e.bidderCode===t||n.aliasRegistry[e.bidderCode]===t));return"1800x1000"===e.size&&!t}return k("shouldApplyPrebidSkinRendering: unable to get aliasRegistry: prebid is not defined"),!1}isFromGAM(e){var t;return!!(null===(t=e.size)||void 0===t?void 0:t.length)&&1800===e.size[0]&&1e3===e.size[1]}applySkinCSS(e,t){var i,n,o,a;const r=document.getElementById(e);if(r){if("gam"===t)return;E(`[Skin] applying rendering for ${e} from ${t}`);const d=null!==(i=this.configuredMaxHeaderHeightPx)&&void 0!==i?i:250,l=null!==(n=this.configuredMarginTopPx)&&void 0!==n?n:0,c=null!==(o=this.configuredSiteContentWidthPx)&&void 0!==o?o:1e3,u=null!==(a=this.configuredAdditionalSkinRenderingCss)&&void 0!==a?a:"",h=1e3,f=(1800-c)/2,g=f+c,p=document.createElement("style");p.setAttribute("data-kleanads","true"),p.textContent=`\n #${e}.${s.SKIN_RENDERING_CSS_CLASS} {\n /* leave security margin to help display top of creative */\n height: ${d}px;\n /* set it properly in page flow */\n display: block;\n margin-top: ${l}px;\n }\n \n #${e}.${s.SKIN_RENDERING_CSS_CLASS} > div {\n /* horizontally center creative */\n transform: translateX(-50%);\n position: absolute;\n left: 50%;\n \n /* clipping out the unused part of the creative to leave content visible */\n clip-path: polygon(0 0, 0% 100%, ${f}px ${h}px, ${f}px ${d}px, ${g}px ${d}px, ${g}px 100%, 100% 100%, 100% 0%);\n }\n \n ${u}\n `,document.head.appendChild(p),r.classList.add(s.SKIN_RENDERING_CSS_CLASS)}else _(`skin rendering impossible - adUnitDiv not found for ${e}`)}};return Ct(t,"SkinRenderingModule"),(()=>{const o="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;St(null,e={value:t},i,{kind:"class",name:t.name,metadata:o},null,n),s=t=e.value,o&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})})(),t.SKIN_RENDERING_CSS_CLASS="pbstck_skin_rendering",It(t,n),s=t})();const os=[class{constructor(){this.name="Metas",this._isLoaded=!1,this.customFields=[],this.targetings=[]}async load({config:e}){r("kleanads-version",e.kleanadsVersion),this.customFields.push("kleanads-version"),te.getInstance().uprTested&&(r("xp_variant",`floor_optimization:${te.getInstance().uprEnabled}`),this.customFields.push("xp_variant")),this._isLoaded=!0}async onStackConfigLoad({stackConfig:e}){r("config-version",`${e.version}`),r("kleanads-stack-id",e.stackId),this.customFields.push("config-version","kleanads-stack-id"),function(e,t){const i=document.createElement("meta");i.setAttribute("name",`ad:${e}`),i.content=t,document.head.appendChild(i)}("adm_stack",`${e.stackId}_v${e.version}`),this.targetings.push("adm_stack"),e.runningABTest.forEach((e=>{r(e.name,e.value),this.customFields.push(e.name)}))}isLoaded(){return this._isLoaded}async clean(){this.customFields.forEach((e=>{try{!function(e){const t=document.querySelector(`meta[name="pbstck:${e}"]`);t&&t.remove()}(e)}catch(t){_(`Unable to remove CustomField meta tag ${e}`,t)}})),this.customFields=[],this.targetings.forEach((e=>{try{!function(e){const t=document.querySelector(`meta[name="ad:${e}"]`);t&&t.remove()}(e)}catch(t){_(`Unable to remove targeting meta tag ${e}`,t)}})),this.targetings=[],this._isLoaded=!1}},Jt,Et,Wn,At,xn,yn,ss,Xn,Qn,ns,is];class as{static getModules(){return os}}async function rs(e){var t,i,n;if(window._kleanadslock)return void E("kleanads.js already started");window._kleanadslock=!0,ye(fe.BEGIN_INIT);const s=async()=>{const t=await On(e,as.getModules().map((e=>new e)));t&&await Rn(t)};if(null===(t=e.pocOverrides)||void 0===t?void 0:t.waitForEventToInit){const t=setTimeout((()=>{k("Wait for init event is too long")}),6e4),o=()=>{var i;window.removeEventListener((null===(i=e.pocOverrides)||void 0===i?void 0:i.waitForEventToInit)||"",o),clearTimeout(t),s()};E(`[INIT] wait for event ${null===(i=e.pocOverrides)||void 0===i?void 0:i.waitForEventToInit} to start kleanads`),window.addEventListener(null===(n=e.pocOverrides)||void 0===n?void 0:n.waitForEventToInit,o)}else await s()}return window._pbstckKleanAds={initKleanAds:rs,apiReady:!1,getBootstrapConfig:()=>{throw new Error("Not ready yet, wait for apiReady.")},getStackConfig:()=>{throw new Error("Not ready yet, wait for apiReady.")},refreshApiReady:!1,stopRefresh:()=>{throw new Error("Not ready yet, wait for refreshApiReady.")}},e.initKleanAds=rs,e}({});
; window._pbstckKleanAds.initKleanAds({"tagId":"4f1bddd4-4eb4-4afe-835e-e6ea9e7c7104","adCallTimeout":3000,"configUrl":"https://cdn-adm.pbstck.com","screenSizeBreakpoints":[{"size":0,"device":"mobile"},{"size":900,"device":"desktop"}],"metricThrottling":false,"networkId":6928793,"context":[{"key":"website","defaultValue":"pcgamesn-606d99b65a477","otherValues":["alcasthq-6012d84d6d062","discordbotlist-60f14b9e6d5c5","ffxivteamcraft-661fcccde8e76","ffxivteamcraft-desktopsite-66faaf3ea0f2d","futwiz-61d5a5c01c437","limitlesstcg-614daab26ee77","modsfire-65ae97280491d","namemc-6093bb9a4a141","nexusmods-651189ba36d9f","nintendoeverything-6228c25edf4de","pockettactics-60350d9f96d41","psnprofiles-61153fada71b1","serebii-6086a3da3eea5","steamidfinder-5fd8cfb7b8887","trueachievements-60dc74f1647e3","truesteamachievements-607edbb311af4","truetrophies-60a5219020b60","videogameschronicle-66e80c2edeb59","wargamer-6046302081e4c","wiki.gg-66b33c09a0cc8","top.gg-6426bd8ce65ee"]},{"key":"country","defaultValue":"us","otherValues":["ad","ae","af","ag","ai","al","am","ao","aq","ar","as","at","au","aw","ax","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cx","cy","cz","de","dj","dk","dm","do","dz","ec","ee","eg","er","es","et","fi","fj","fk","fo","fr","ga","gb","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","id","ie","il","in","io","iq","ir","it","jo","jp","ke","kh","km","kr","kw","ky","la","lk","lt","lv","md","mv","my","nl","no","nz","pf","ph","pl","pt","ro","rs","sa","se","sg","si","sv","td","tf","th","tn","tr","tt","tw","va","vn","za","pk","is","jm","me","mm","mu","mx","np","pa","pr","py"]},{"key":"test","defaultValue":"","otherValues":["true"]},{"key":"device","defaultValue":"","otherValues":["desktop","desktop-noskins","desktop-small","mobile","desktop-large","desktop-skins"]},{"key":"up_recovery","defaultValue":"false","otherValues":["true"]}],"pubstackDeclarationTargetingKeys":["adm"],"priceRuleBuckets":[{"max":"5","increment":"0.05"}],"globalRefreshConfig":{"prebidOrderIds":[]},"pocOverrides":{"overrideABTest":{"scope":{"ratio":50,"populationB":{"consentlessMode":"local"}}},"pbjsAnalytics":{"scope":[{"provider":"atsAnalytics","options":{"pid":"1310"}}]},"anchorDesktop":{"scope":true},"consentlessMode":"GAM","fledgeForGpt":true,"rtbhousePaapi":true,"refreshOutOfFocus":{"scope":{"timerInView":2},"sites":{"2d3ab3e2-65e5-4cdf-aafc-286ac3d3de4b":{"timerInView":0,"refreshOutOfView":true},"f120c2bf-90d6-473e-9c0a-12821396b380":{"timerInView":0,"refreshOutOfView":true}}},"refreshBehaviorOnEmpty":"stop","refreshAlwaysInViewAdUnitNames":["PCGamesN - LB2","PCGamesN - Mobile LB1","LB Sticky","LB - Sticky Large","Mobile LB Sticky"],"roadblockOrder":{"scope":{"LB1":"master-1","LB Large":"master-1","LB Sticky":"master-2","LB - Sticky Large":"master-2"},"sites":{"3205376f-9b47-4743-aa18-99c6f87c8b9b":{"PCGamesN - LB1":"master-1","PCGamesN - LB2":"master-2"}}}},"stacks":[{"scopeId":"f2521fbf-96a6-4b81-8284-15bcd5ddf73b","siteId":"4f1bddd4-4eb4-4afe-835e-e6ea9e7c7104","stackId":"f239f633-0805-4d61-b925-31679cdc070a","versions":[{"version":35,"ratio":100}],"conditions":null,"priority":null},{"scopeId":"f2521fbf-96a6-4b81-8284-15bcd5ddf73b","siteId":"4f1bddd4-4eb4-4afe-835e-e6ea9e7c7104","stackId":"895f9578-4c7f-4093-86be-f9920470f73e","versions":[{"version":2,"ratio":100}],"conditions":{"op":"AND","elements":[{"op":"IN","key":"country","values":["us","ca","au","gb","de","be","fi","se","no","fr","es","it","nl","dk","ch","at","ie","pt"]}]},"priority":1}],"extraScripts":[{"scripts":["https://cdn-adm.pbstck.com/extra-scripts/basic-scripts-pool/collapse_empty_slots.js"],"tagId":"4f1bddd4-4eb4-4afe-835e-e6ea9e7c7104","synchronous":false,"beforeStart":true},{"scripts":["https://cdn-adm.pbstck.com/extra-scripts/basic-scripts-pool/inject_adm_meta.js","https://cdn-adm.pbstck.com/extra-scripts/basic-scripts-pool/inject_no_cmp_meta.js"],"tagId":"4f1bddd4-4eb4-4afe-835e-e6ea9e7c7104","synchronous":true,"beforeStart":true}],"newPrebidUrl":"https://cdn-adm.pbstck.com/kleanads-prebid/8.50.0-47023693644315314f46ae9d335424f9f644944a.js","kleanadsVersion":"2411141047"}); })();</script><script src="https://cdn-adm.pbstck.com/extra-scripts/basic-scripts-pool/collapse_empty_slots.js" async="true" data-kleanads="true"></script><style>@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@500;600&display=swap);</style><style>#idw-plugin-container {
display: flex;
flex-direction: column;
box-sizing: content-box;
position: fixed;
left: -160px;
bottom: -160px;
z-index: 999999;
background-color: #fff;
height: auto;
max-width: 160px;
width: 160px;
min-width: 160px;
color: #171717;
line-height: 1rem;
outline: 1px solid #171717;
justify-content: flex-start;
-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
opacity: 0;
transition: left .4s, bottom .4s, opacity .1s;
}
#idw-plugin-container.idw-open {
left: 0;
bottom: 0;
opacity: 1;
}
#idw-plugin-buttons {
display: flex;
flex-direction: column;
height: 100%;
width: auto;
}
#idw-plugin-container .pluginBtn {
border: none;
padding: 1px 5px !important;
margin: 0 !important;
width: auto !important;
height: 25px !important;
box-sizing: border-box !important;
border-radius: 0 !important;
text-align: right !important;
font-family: 'Open Sans', sans-serif !important;
line-height: normal !important;
text-transform: none !important;
letter-spacing: normal !important;
font-weight: 600 !important;
font-size: 14px !important;
background-color: #ffffff !important;
transition: background-color 0.2s;
cursor: pointer !important;
}
#idw-plugin-container .pluginBtn:hover {
outline: 1px solid #ffffff !important;
background-color: #171717 !important;
color: #ffffff !important;
}
#idw-open-trigger {
position: fixed;
width: 50px;
height: 50px;
bottom: 0;
left: 0;
z-index: 999999;
cursor: pointer;
-webkit-clip-path: polygon(100% 100%, 0 100%, 0 0);
clip-path: polygon(100% 100%, 0 100%, 0 0);
background-color: #171717 !important;
}
#idw-open-trigger img {
width: 28px;
height: 28px;
position: absolute;
/* padding: 4px; */
bottom: -2px;
left: -2px;
}</style><style>/***************/
/*MEDIA QUERIES*/
/***************/
/*
##Device: Tablets, Ipads (portrait)
##Screen: B/w 768px to 1024px
*/
@media (min-width: 768px) and (max-width: 1024px) {
}
/*
##Device: Most of the Smartphones Mobiles (Portrait)
##Screen: B/w 320px to 479px
*/
@media (min-width: 400px) and (max-width: 480px) {
}</style><style type="text/css">#sp_message_iframe_1202267 { display:block; width: 100%; height: 100%; border: 0 none; } #sp_message_container_1202267 { overflow:auto;-webkit-overflow-scrolling:touch; display: none; position: fixed; z-index: 2147483647; left: 0; right: 0; bottom: 0; top: 0; height: 100%; width: 100%; max-width: 100%; max-height: 100vh;}.sp-message-open { height: 100vh !important; width: 100vw !important } .sp-message-open body { overflow: hidden !important; position: fixed !important; margin-top: 56px !important; top: 0px !important; left: 0px !important; right: 0px !important; }</style><meta name="ad:adm" content="1"><style>
.adm-ad-empty {
display: none;
}
</style><meta name="pbstck:kleanads-version" content="2411141047"><style>
#idw-plugin-container .pluginBtn {
color: undefined !important;
}
#idw-plugin-container .pluginBtn:hover {
background-color: undefined !important;
}
#idw-open-trigger {
background-color: undefined;
}
</style></head>
<div id="eSTdHLCPsMFO" style="display: none;"></div>
<!-- Matomo -->
<!-- End Matomo Code -->
<!-- Matomo Tag Manager -->
<!-- End Matomo Tag Manager -->
<!-- Quantcast Tag -->
<body class="site-nexusmods-b scheme-theme-ReskinOrange game-theme-641 logged-out apage modpage new-head"><noscript>
<div style="display:none;">
<img src="//pixel.quantserve.com/pixel/p-bcgV-fdjlWlQo.gif" border="0" height="1" width="1" alt="Quantcast"/>
</div>
</noscript>
<!-- End Quantcast tag -->
<!-- Google Tag Manager (EG noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W8QDTPT"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (EG noscript) -->
<!-- Google Tag Manager (Nexus noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KCVF2WQ"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (Nexus noscript) -->
<script>
$(document).ready(function() {
if(window.innerWidth < 1920) {
$('.sidebar-sticky').remove()
}
});
</script>
<header id="head" class="new-head">
<div class="rj-header-wrap rj-active-game">
<a class="skip-to-content" href="#mainContent">Skip to content</a>
<a class="headlogo" href="/" alt="Nexus Mods" title="Nexus Mods home">
<div>
<svg xmlns="http://www.w3.org/2000/svg" style="width:135px; height:30px;" version="1.1" x="0px" y="0px" viewBox="0 0 698.3 162.5">
<g>
<g>
<g>
<path d="M44.4,162.5c-0.6,0-1.3,0-1.9-0.1c-1.5-0.2-2.9-0.5-4.5-1c-2.8-0.9-5.2-2.2-6.9-3.2c-3.8-2.2-7.7-4.9-11.8-8.3 c-1.8-1.5-3.6-3.1-5.3-4.7l-1.4-1.4c-1-0.9-1.9-1.9-2.6-3c-1.3-2-2.4-4.6-2.5-8c-0.1-1.1-0.2-2.2-0.2-3.4c0-2.4,0.1-5,0.5-7.5 c0.7-5.2,2.4-9.8,3.7-13.3c0.1-0.3,0.2-0.6,0.3-0.9c-0.4-0.9-0.7-1.9-1.1-2.9C8.9,99.6,7.7,93.8,7.1,88 c-0.6-6.1-0.4-12.3,0.5-18.4c0.2-1.3,0.4-2.6,0.7-3.8C5.9,62.3,2.9,57.3,1,51.5l0-0.1c-0.4-1.2-1.4-4.2-0.8-8 c0.2-1.4,0.5-2.8,1-4.3c0.9-2.8,2.2-5.1,3.2-6.8c2.2-3.8,4.9-7.6,8.2-11.7c1.5-1.8,3-3.6,4.6-5.2l1.4-1.4 c0.7-0.8,1.5-1.5,2.4-2.1c2-1.5,4.8-2.8,8.6-2.9c1.2-0.1,2.5-0.2,3.8-0.2h0.1c2.5,0,5.2,0.2,7.8,0.6c4,0.6,7.6,1.7,10.8,2.9 c2.1-0.9,4.3-1.7,6.6-2.5C64.1,8,69.9,6.8,75.7,6.4C81.8,5.9,88,6.2,93.9,7.2c1.4,0.2,2.8,0.5,4.2,0.8c4.7-3.2,9-5.5,13.5-6.9 l0.1,0c1-0.4,3.2-1.1,6.1-1.1c0.6,0,1.3,0,1.9,0.1c1.5,0.2,2.9,0.5,4.5,1c2.8,0.9,5.2,2.2,6.9,3.2c3.8,2.2,7.7,4.9,11.8,8.3 c1.8,1.5,3.6,3.1,5.3,4.7l1.4,1.4c0.7,0.6,1.4,1.3,1.9,2.1c1.8,2.3,3.2,5.6,3.3,10.2c0.1,1.6,0.1,3.3,0,5 c-0.2,3.7-0.7,7.2-1.6,10.4c-0.7,2.4-1.5,4.8-2.4,7.2c1.8,4.5,3.1,9.1,4,13.8c1.8,9.9,1.6,20.1-0.6,29.9c1.3,1.9,2.5,3.7,3.5,5.5 c1.7,3,3.1,6.1,4.1,9.3c0.4,1.2,1.3,4.2,0.7,8.2c-0.2,1.4-0.6,2.7-1.1,4.2c-1.8,5.1-4.6,9.3-7.1,12.8c-2.7,3.8-5.8,7.5-9,10.9 l-1.2,1.2c-0.7,0.8-1.5,1.5-2.4,2.2c-2,1.5-4.8,2.7-8.6,2.9c-1.2,0.1-2.5,0.2-3.8,0.2h-0.1c-2.7,0-5.4-0.2-8.2-0.7 c-4.5-0.7-8.5-2.1-12.1-3.5c-1.9,0.8-3.9,1.5-5.8,2.1c-5.6,1.7-11.5,2.8-17.4,3.1c-6.1,0.4-12.3-0.1-18.3-1.2 c-0.7-0.1-1.5-0.3-2.2-0.4c-5.2,3.7-9.8,6.1-14.6,7.7l-0.1,0C49.5,161.7,47.3,162.5,44.4,162.5L44.4,162.5z M24.6,134.1l10.6,3.7 c0.9-2.6,1-5.4,0.4-8c0,0.2,0,0.5,0.1,0.7c0,0.3,0.1,0.7,0.1,1.1c-0.1-2-0.8-4.6-2.6-7c-0.7-0.9-1.5-1.7-2.4-2.4l0.5,0.4l0.9,0.9 c-0.8-0.8-1.7-1.6-2.7-2.3L24.6,134.1L24.6,134.1z M123.7,129.4c-0.8,0.8-1.6,1.6-2.3,2.7l11.9,4.6l0-11.1c0,0,0,0,0,0 c-1.1,0-2.2,0.1-3.2,0.4c0.2,0,0.4,0,0.6,0c0.3,0,0.7-0.1,1.1-0.1c-1.8,0.1-4.2,0.7-6.4,2.1c-1.2,0.8-2.2,1.7-3.1,2.9l0.4-0.5 L123.7,129.4L123.7,129.4z M35.8,126.8c0.5,0.4,1,0.8,1.5,1.3c2.6,2.2,5,3.9,7.2,5.2c1.4-0.7,3-1.7,4.7-3 c0.5-0.3,0.9-0.7,1.4-1.1c0.3-0.2,0.5-0.5,0.8-0.7c0.1-0.1,0.3-0.3,0.4-0.4l6.2-6.3l8.4,2.9c0.3,0.1,0.6,0.2,0.8,0.3 c1.8,0.6,3.6,1,5.4,1.4c3.7,0.7,7.6,1,11.4,0.7c3.6-0.2,7.3-0.9,10.7-1.9c1.7-0.5,3.4-1.1,5-1.9c0.8-0.3,1.6-0.7,2.3-1.1 c2-1,4.3-1.6,6.6-1.6c3.6,0,6.3,1.3,7.6,2c0.4,0.2,0.8,0.4,1.3,0.5c2.5,1,5.4,2.2,8,2.6c0.4,0.1,0.9,0.1,1.3,0.2 c1.5-1.7,2.9-3.5,4.2-5.3c0.8-1.1,1.6-2.2,2.3-3.3c-0.1-0.2-0.2-0.4-0.4-0.7c-0.7-1.2-1.5-2.4-2.5-3.9c-0.3-0.5-0.7-0.9-1.1-1.4 c-0.2-0.2-0.3-0.4-0.5-0.6c-4.1-4-5.5-9.7-3.6-15.1c0.1-0.3,0.2-0.6,0.3-0.8c2.3-7.2,2.7-14.9,1.4-22.3c-0.7-3.5-1.7-7-3.2-10.3 c-0.1-0.3-0.3-0.6-0.4-0.9c-3.3-6.1-1.9-11.3-0.7-13.8c0.5-1,0.9-2.1,1.3-3.1c0.8-1.9,1.4-3.9,2-5.7c0.2-0.9,0.4-1.8,0.5-2.9 c-0.5-0.4-1-0.8-1.5-1.3c-2.7-2.2-5-3.9-7.2-5.2c-1.4,0.8-3,1.8-4.8,3c-0.5,0.4-1,0.8-1.5,1.2c-0.1,0.1-0.3,0.2-0.4,0.4 c-2.7,2.6-6.3,4-10,4c-1.8,0-3.5-0.3-5.2-1c-0.4-0.1-0.8-0.3-1.2-0.4c-1.8-0.5-3.6-1-5.5-1.3c-3.7-0.6-7.6-0.8-11.4-0.5 c-3.6,0.3-7.2,1-10.6,2.1c-1.7,0.5-3.3,1.2-4.9,1.9c-0.8,0.3-1.5,0.7-2.3,1.1L59.5,40c-2.1,1.2-4.6,1.8-7,1.8 c-2.2,0-4.4-0.5-6.5-1.5c-0.5-0.2-0.9-0.4-1.4-0.6c-2.4-1-5.3-2.1-7.8-2.4c-0.4-0.1-0.8-0.1-1.1-0.2c-0.4,0.5-0.8,1-1.2,1.4 c-2.2,2.7-3.9,5-5.2,7.3c0.7,1.4,1.7,2.9,2.9,4.7c0.3,0.5,0.7,1,1.1,1.4c0.2,0.3,0.5,0.5,0.7,0.8l5.8,6.1l-2.5,8 c-0.2,0.5-0.3,1-0.5,1.5c-0.5,1.8-0.9,3.7-1.2,5.6c-0.6,3.8-0.7,7.6-0.3,11.5c0.3,3.6,1.1,7.2,2.3,10.6c0.6,1.7,1.3,3.3,2,4.9 c0.1,0.2,0.2,0.4,0.3,0.6c2.1,4.3,2.1,9.1-0.1,13.4c-0.2,0.4-0.4,0.8-0.5,1.2c-0.4,1-0.9,2-1.3,3c-0.8,2.2-1.8,4.8-2.1,7.1 C35.9,126.3,35.8,126.6,35.8,126.8L35.8,126.8z M129.9,38.8c0.8,0.8,1.7,1.6,2.8,2.4l4.9-12.9L127,24.6c-0.9,2.6-1,5.4-0.4,8 c0-0.1,0-0.2,0-0.3c0-0.3,0-0.8,0-1.3v-0.1c0,1.5,0.5,4,2.1,6.4c0.8,1.1,1.7,2.1,2.8,3l-0.5-0.4L129.9,38.8L129.9,38.8z M29.3,26.3l0,11.1c1.1,0,2.2-0.1,3.2-0.4c-0.2,0-0.4,0-0.6,0c-0.3,0-0.7,0.1-1.1,0.1c1.8-0.1,4.2-0.7,6.4-2.1 c1.2-0.8,2.2-1.7,3.1-2.9l-0.4,0.5l-0.9,1c0.8-0.8,1.6-1.7,2.3-2.7L29.3,26.3L29.3,26.3z"></path>
</g>
</g>
<g>
<g>
<g>
<path class="theme-secondary" d="M56.3,88.4l0.7,28.3l-7-5.7c-7.8,12.7-10.3,25-6.6,34.1l1.3,3.2l-3.2-1.4c-7.3-3.2-13.9-7.7-19.4-13.5 l-0.3-0.3l-0.1-0.5c-0.4-3.5-0.2-7.3,0.7-11.2l0-0.1c1.3-4.9,3.2-9.8,5.6-14.7c1.5-3.1,3.3-6.2,5.3-9.2l-6.1-5L56.3,88.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M105.9,74.1l-0.7-28.3l7,5.7c7.8-12.7,10.3-25,6.6-34.1l-1.3-3.2l3.2,1.4c7.3,3.2,13.9,7.7,19.4,13.5 l0.3,0.3l0.1,0.5c0.4,3.5,0.2,7.3-0.7,11.2l0,0.1c-1.3,4.9-3.2,9.8-5.6,14.7c-1.5,3.1-3.3,6.2-5.3,9.2l6.1,5L105.9,74.1z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M88.5,105.4l28.3-0.7l-5.7,7c12.7,7.8,25,10.3,34.1,6.6l3.2-1.3l-1.4,3.2c-3.2,7.3-7.7,13.9-13.5,19.4 l-0.3,0.3l-0.5,0.1c-3.5,0.4-7.3,0.2-11.2-0.7l-0.1,0c-4.9-1.3-9.8-3.2-14.7-5.6c-3.1-1.5-6.2-3.3-9.2-5.3l-5,6.1L88.5,105.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M74.1,57.6l-28.3,0.7l5.7-7c-12.7-7.8-25-10.3-34.1-6.6L14.3,46l1.4-3.2c3.2-7.3,7.7-13.9,13.5-19.4 l0.3-0.3L30,23c3.5-0.4,7.3-0.2,11.2,0.7l0.1,0c4.9,1.3,9.8,3.2,14.7,5.6c3.1,1.5,6.2,3.3,9.2,5.3l5-6.1L74.1,57.6z"></path>
</g>
</g>
<g>
<g>
<circle class="theme-primary" cx="81.4" cy="80.8" r="60.5"></circle>
</g>
</g>
<g>
<path style="fill:#ffffff" d="M59.3,59.5c-3.5-1.6-6.1-3.2-8.7-5.1c-4-2.8-7.7-5.9-10.8-9.2c-7.6-7.7-11.6-15.6-10.5-22.1L27,25.6 c-5.5,5.8-12.8,16-12.9,20.4c0.1,0.5,0.1,0.5,0.1,0.5c1,3.4,2.6,6.8,4.9,10.1l0,0.1c3,4.8,8.9,12.7,29.9,21.9l-3.7,7l28.3-7.6 L63.5,51.5L59.3,59.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M103.3,103.5c3.5,1.6,6.1,3.2,8.7,5.1c4,2.8,7.7,5.9,10.8,9.2c7.6,7.7,11.6,15.6,10.5,22.1l2.3-2.4 c5.5-5.8,12.8-16,12.9-20.4c-0.1-0.5-0.1-0.5-0.1-0.5c-1-3.4-2.6-6.8-4.9-10.1l0-0.1c-3-4.8-8.9-12.7-29.9-21.9l3.7-7l-28.3,7.6 l10.2,26.2L103.3,103.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M104,59.3c1.6-3.5,3.2-6.1,5.1-8.7c2.8-4,5.9-7.7,9.2-10.8c7.7-7.6,15.6-11.6,22.1-10.5L138,27 c-5.8-5.5-16-12.8-20.4-12.9c-0.5,0.1-0.5,0.1-0.5,0.1c-3.4,1-6.8,2.6-10.1,4.9l-0.1,0c-4.8,3-12.7,8.9-21.9,29.9l-7-3.7 l7.6,28.3L112,63.6L104,59.3z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M58.2,103.2c-1.6,3.5-3.2,6.1-5.1,8.7c-2.8,4-5.9,7.7-9.2,10.8c-7.7,7.6-15.6,11.6-22.1,10.5l2.4,2.3 c5.8,5.5,16,12.8,20.4,12.9c0.5-0.1,0.5-0.1,0.5-0.1c3.4-1,6.8-2.6,10.1-4.9l0.1,0c4.8-3,12.7-8.9,21.9-29.9l7,3.7l-7.6-28.3 L50.3,98.9L58.2,103.2z"></path>
</g>
</g>
</g>
<g class="logo-brand-name">
<path style="fill:#ffffff" d="M198.6,131.3h-6V31.9h8.5l29.8,83.9V31.9h6v99.4h-7.2l-31.1-88.6V131.3z"></path>
<path style="fill:#ffffff" d="M281.1,77.9v6h-27.1v41.5h32.7v6h-39.2V31.9h39.2v6h-32.7v40H281.1z"></path>
<path style="fill:#ffffff" d="M321.8,85l-20.2,46.3h-6.4l22.4-51.5l-20.9-47.8h6.8l18.7,42.7l18.9-42.7h6.2l-20.9,47.8l22.3,51.5h-7 L321.8,85z"></path>
<path style="fill:#ffffff" d="M364.5,107.3c0,10.6,4,18.9,14.9,18.9s14.9-8.2,14.9-18.9V31.9h6.1V107c0,14.2-6,25.1-21.2,25.1 c-15.2,0-21.3-10.9-21.3-25.1V31.9h6.5V107.3z"></path>
<path style="fill:#ffffff" d="M452.8,55.9v2.1h-6.2v-2.6c0-10.5-4-18.5-14.8-18.5c-10.8,0-14.8,7.8-14.8,18.3c0,24.1,35.9,24.6,35.9,52 c0,14.3-6.2,24.8-21.4,24.8s-21.4-10.5-21.4-24.8v-5.1h6.2v5.5c0,10.6,4.1,18.3,15,18.3s15-7.7,15-18.3c0-23.9-35.9-24.3-35.9-52 c0-14.9,6.5-24.6,21.2-24.7C446.7,31.1,452.8,41.6,452.8,55.9z"></path>
<path class="theme-primary" d="M495.8,102.5l10.6-70.6h21.7v99.4h-14.8V60.1l-10.8,71.3h-14.8l-11.6-70.3v70.3h-13.6V31.9h21.7L495.8,102.5z"></path>
<path class="theme-primary" d="M537.6,55.8c0-15.9,8.4-25,23.7-25c15.3,0,23.7,9.1,23.7,25v51.7c0,15.9-8.4,25-23.7,25 c-15.3,0-23.7-9.1-23.7-25V55.8z M553.2,108.5c0,7.1,3.1,9.8,8.1,9.8s8.1-2.7,8.1-9.8V54.8c0-7.1-3.1-9.8-8.1-9.8s-8.1,2.7-8.1,9.8 V108.5z"></path>
<path class="theme-primary" d="M594.4,31.9h24.7c15.6,0,23.3,8.7,23.3,24.6v50.3c0,15.9-7.7,24.6-23.3,24.6h-24.7V31.9z M610,46.1v71h8.8 c5,0,7.9-2.6,7.9-9.7V55.8c0-7.1-3-9.7-7.9-9.7H610z"></path>
<path class="theme-primary" d="M672.6,30.8c15.2,0,23,9.1,23,25v3.1h-14.8v-4.1c0-7.1-2.8-9.8-7.8-9.8c-5,0-7.8,2.7-7.8,9.8 c0,20.4,30.5,24.3,30.5,52.7c0,15.9-8,25-23.3,25c-15.3,0-23.3-9.1-23.3-25v-6.1h14.8v7.1c0,7.1,3.1,9.7,8.1,9.7s8.1-2.6,8.1-9.7 c0-20.4-30.5-24.3-30.5-52.7C649.6,39.9,657.4,30.8,672.6,30.8z"></path>
</g>
</svg> </div>
</a>
<div class="rj-nav nav-alignment">
<div class="nav-current-game">
<a href="https://www.nexusmods.com/thesims4" title="The Sims 4">
<img alt="The Sims 4" src="https://staticdelivery.nexusmods.com/images/games/4_3/tile_641.jpg">
<span class="typography-body-md text-neutral-strong">The Sims 4</span>
</a>
<a class="nav-remove-current-game-link" href="/">
<i class="material-icons">close</i>
<span class="sr-only">Clear game filter</span>
</a>
</div>
<button type="button" class="nav-tab-button" data-title="Games">Games <i class="nmicon-chevron-down"></i></button>
<div class="shadow-md nav-tab-wrapper" data-title="Games">
<div class="nav-tab"><div class="nav-links">
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Games</p></li>
<li><a href="/games" class="typography-body-lg typography-link-secondary">All games <span>(3,250)</span></a></li>
<li><a href="/games?sort=new" class="typography-body-lg typography-link-secondary">Recently added <span>(73)</span></a></li>
</ul>
</div>
<div class="nav-my-games">
<p class="typography-title-sm text-neutral-subdued">My games</p>
<div class="nav-games-favourites">
<div class="nav-games-unauthenticated">
<i class="fa fa-gamepad"></i>
<p class="typography-body-md text-neutral-subdued">Your favourited games will be displayed here</p>
</div>
<script>
(function () {
GameFavouriteState.init(0, '.nav-my-games');
})();
</script>
</div>
</div>
</div>
</div> <button type="button" class="nav-tab-button" data-title="Mods">Mods <i class="nmicon-chevron-down"></i></button>
<div class="shadow-md nav-tab-wrapper" data-title="Mods">
<div class="nav-tab"><div class="nav-game-tile">
<img alt="The Sims 4" src="https://staticdelivery.nexusmods.com/images/games/4_3/tile_641.jpg">
<div></div>
</div>
<div class="nav-links">
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Mods</p></li>
<li><a href="https://www.nexusmods.com/thesims4/mods" class="typography-body-lg typography-link-secondary">All mods</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/thisweek" class="typography-body-lg typography-link-secondary">New</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/trending" class="typography-body-lg typography-link-secondary">Trending</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/trendingalltime" class="typography-body-lg typography-link-secondary">Most endorsed</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/top" class="typography-body-lg typography-link-secondary">Top files</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/categories" class="typography-body-lg typography-link-secondary">Mod categories</a></li>
</ul>
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Mod updates</p></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/newrecently" class="typography-body-lg typography-link-secondary">Recent activity</a></li>
</ul>
</div>
<div class="nav-card featured">
<div class="featured-icon">
<i class="fas fa-trophy"></i>
</div>
<h6 class="typography-title-sm text-neutral-moderate">Mods of the month</h6>
<p class="typography-body-md text-neutral-subdued">Explore this month's nominated mods.</p>
<a href="https://www.nexusmods.com/thesims4/mods/motm" class="typography-body-md typography-link-primary">Discover</a>
</div>
<div class="nav-card ">
<h6 class="typography-title-sm text-neutral-moderate">Vortex mod manager</h6>
<p class="typography-body-md text-neutral-subdued">The elegant, powerful and open-source mod manager.</p>
<a href="/site/mods/1" class="typography-body-md typography-link-primary">Download</a>
</div></div>
</div> <button type="button" class="nav-tab-button" data-title="Collections">Collections <i class="nmicon-chevron-down"></i></button>
<div class="shadow-md nav-tab-wrapper" data-title="Collections">
<div class="nav-tab"><div class="nav-game-tile">
<img alt="The Sims 4" src="https://staticdelivery.nexusmods.com/images/games/4_3/tile_641.jpg">
<div></div>
</div>
<div class="nav-links">
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Collections</p></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=total_downloads" class="typography-body-lg typography-link-secondary">All collections</a></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=listed_at" class="typography-body-lg typography-link-secondary">Recently added</a></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=endorsements_count" class="typography-body-lg typography-link-secondary">Most endorsed</a></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=overall_rating" class="typography-body-lg typography-link-secondary">Highest rated</a></li>
</ul>
</div>
<div class="nav-card">
<h6 class="typography-title-sm text-neutral-moderate">Collections tutorials</h6>
<p class="typography-body-md text-neutral-subdued">Learn from the community with tutorials and guides.</p>
<a href="https://modding.wiki/en/nexusmods/collections/about" class="typography-body-md typography-link-primary" target="_blank" rel="noreferrer">Explore</a>
</div>
<div class="nav-card">
<h6 class="typography-title-sm text-neutral-moderate">Vortex mod manager</h6>
<p class="typography-body-md text-neutral-subdued">The elegant, powerful and open-source mod manager.</p>
<a href="/site/mods/1" class="typography-body-md typography-link-primary">Download</a>
</div></div>
</div> <button type="button" class="nav-tab-button" data-title="Media">Media <i class="nmicon-chevron-down"></i></button>
<div class="shadow-md nav-tab-wrapper" data-title="Media">
<div class="nav-tab"><div class="nav-game-tile">
<img alt="The Sims 4" src="https://staticdelivery.nexusmods.com/images/games/4_3/tile_641.jpg">
<div></div>
</div>
<div class="nav-links">
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Images</p></li>
<li><a href="https://www.nexusmods.com/thesims4/images" class="typography-body-lg typography-link-secondary">Latest</a></li>
<li><a href="https://www.nexusmods.com/thesims4/images/recentlyendorsed" class="typography-body-lg typography-link-secondary">Trending</a></li>
<li><a href="https://www.nexusmods.com/thesims4/images/mostendorsed" class="typography-body-lg typography-link-secondary">Most endorsed</a></li>
</ul>
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Videos</p></li>
<li><a href="https://www.nexusmods.com/thesims4/videos" class="typography-body-lg typography-link-secondary">Latest</a></li>
<li><a href="https://www.nexusmods.com/thesims4/videos/recentlyendorsed" class="typography-body-lg typography-link-secondary">Trending</a></li>
<li><a href="https://www.nexusmods.com/thesims4/videos/mostendorsed" class="typography-body-lg typography-link-secondary">Most endorsed</a></li>
</ul>
</div>
<div class="nav-card">
<h6 class="typography-title-sm text-neutral-moderate">Supporter images</h6>
<p class="typography-body-md text-neutral-subdued">Upgrade your account to unlock all media content.</p>
<a href="https://users.nexusmods.com/account/billing/premium" class="typography-body-md typography-link-primary">Upgrade</a>
</div>
</div>
</div> <button type="button" class="nav-tab-button" data-title="Community">Community <i class="nmicon-chevron-down"></i></button>
<div class="shadow-md nav-tab-wrapper" data-title="Community">
<div class="nav-tab"><div class="nav-links-wrapper">
<div class="nav-links">
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Community</p></li>
<li><a href="https://forums.nexusmods.com/forum/8406-modding-discussion" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Forums</a></li>
<li><a href="https://wiki.nexusmods.com/index.php/Main_Page" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Wiki</a></li>
<li><a href="https://www.patreon.com/nexusmods" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Support authors</a></li>
</ul>
<ul>
<li><p class="typography-title-sm text-neutral-subdued">News</p></li>
<li><a href="https://www.nexusmods.com/thesims4/news" class="typography-body-lg typography-link-secondary">All news</a></li>
<li><a href="https://www.nexusmods.com/thesims4/news?tab=site+news" class="typography-body-lg typography-link-secondary">Site news</a></li>
<li><a href="https://www.nexusmods.com/thesims4/news?tab=competition" class="typography-body-lg typography-link-secondary">Competitions</a></li>
<li><a href="https://www.nexusmods.com/thesims4/news?tab=interviews" class="typography-body-lg typography-link-secondary">Interviews</a></li>
</ul>
</div>
<div class="nav-social-links">
<a target="_blank" rel="noreferrer" href="https://discord.gg/nexusmods" title="Join us on Discord">
<img class="icon" alt="Discord" src="/assets/images/footer/Discord.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://twitter.com/nexussites" title="Follow us on Twitter">
<img class="icon" alt="Twitter" src="/assets/images/footer/Twitter.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.tiktok.com/@nexusmodsofficial" title="Follow us on TikTok">
<img class="icon" alt="TikTok" src="/assets/images/footer/TikTok.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.twitch.tv/nexusmodsofficial" title="Follow us on Twitch">
<img class="icon" alt="Twitch" src="/assets/images/footer/Twitch.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.youtube.com/@NexusModsOfficial" title="Follow us on Youtube">
<img class="icon" alt="Youtube" src="/assets/images/footer/Youtube.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.instagram.com/nexusmodsofficial" title="Follow us on Instagram">
<img class="icon" alt="Instagram" src="/assets/images/footer/Instagram.svg">
</a>
</div>
</div>
<div class="nav-news-items">
<a class="nav-news-item" href="/news/15078" title="Helping a Settlement - Glitchfinder">
<div class="nav-news-img-wrapper">
<div class="nav-news-img">
<img onerror="imgError(this);" src="https://staticdelivery.nexusmods.com/images/News/15078_tile_1732550981.png" title="Helping a Settlement - Glitchfinder">
</div>
</div>
<div class="nav-news-title">
<div class="date">Interviews • 25 Nov 2024</div>
<div class="typography-body-md text-neutral-moderate">Helping a Settlement - Glitchfinder</div>
</div>
</a>
<a class="nav-news-item" href="/news/15129" title="Talkin' Stardew - Shannon Hobby">
<div class="nav-news-img-wrapper">
<div class="nav-news-img">
<img onerror="imgError(this);" src="https://staticdelivery.nexusmods.com/images/News/15129_tile_1731930491.png" title="Talkin' Stardew - Shannon Hobby">
</div>
</div>
<div class="nav-news-title">
<div class="date">Interviews • 18 Nov 2024</div>
<div class="typography-body-md text-neutral-moderate">Talkin' Stardew - Shannon Hobby</div>
</div>
</a>
</div></div>
</div> <button type="button" class="nav-tab-button" data-title="Support">Support <i class="nmicon-chevron-down"></i></button>
<div class="shadow-md nav-tab-wrapper" data-title="Support">
<div class="nav-tab"><div class="nav-links">
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Support</p></li>
<li><a href="https://help.nexusmods.com/" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Help</a></li>
<li><a href="https://help.nexusmods.com/article/125-contact-us" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Contact</a></li>
<li><a href="https://help.nexusmods.com/category/26-frequently-asked-questions" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">FAQ</a></li>
</ul>
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Wiki</p></li>
<li><a href="https://wiki.nexusmods.com/index.php/Games" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Game guides</a></li>
<li><a href="https://wiki.nexusmods.com/index.php/Category:Tutorials" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Tutorial</a></li>
<li><a href="https://modding.wiki/en/nexusmods/collections" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Collections</a></li>
<li><a href="https://wiki.nexusmods.com/index.php/Category:Tools" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Tools</a></li>
</ul>
<ul>
<li><p class="typography-title-sm text-neutral-subdued">Vortex</p></li>
<li><a href="https://wiki.nexusmods.com/index.php/Category:Vortex" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">Vortex help</a></li>
<li><a href="https://app.swaggerhub.com/apis-docs/NexusMods/nexus-mods_public_api_params_in_form_data/1.0#/" class="typography-body-lg typography-link-secondary" target="_blank" rel="noreferrer">API documentation</a></li>
<li><a href="https://www.nexusmods.com/about/vortex/" class="typography-body-lg typography-link-secondary">Install Vortex</a></li>
</ul>
</div>
<div class="nav-card">
<h6 class="typography-title-sm text-neutral-moderate">Give feedback</h6>
<p class="typography-body-md text-neutral-subdued">Share your ideas, discuss them with the community, and cast your vote on feedback provided.</p>
<a href="https://feedback.nexusmods.com/" class="typography-body-md typography-link-primary">Give Feedback</a>
</div></div>
</div> </div>
<form class="rj-search" method="POST" action="https://www.nexusmods.com/thesims4/search/">
<input id="gsearch" class="rj-search-input" name="gsearch" data-url="https://api.nexusmods.com/mods" type="text" placeholder="Search The Sims 4" autocomplete="off" aria-label="Search">
<input id="searchtype" type="hidden" name="gsearchtype" value="mods">
<!-- <i class="material-icons">search</i>-->
<div class="rj-search-category-wrapper">
<button type="button" class="rj-search-category-dropdown-toggle">
<div class="rj-search-category">
<span class="rj-search-category-name">Mods</span>
<i class="nmicon-chevron-down"></i>
</div>
</button>
<ul class="rj-search-category-dropdown">
<li class="rj-search-category-option category-selected" data-category-value="mods">Mods</li>
<li class="rj-search-category-option" data-category-value="games">Games</li>
<li class="rj-search-category-option" data-category-value="images">Images</li>
<li class="rj-search-category-option" data-category-value="videos">Videos</li>
<li class="rj-search-category-option" data-category-value="authors">Users</li>
</ul>
</div>
<div id="gsearch_results" class="hidden" style="display: none" tabindex="0"></div>
<button type="button" class="rj-search-button">
<i class="material-icons">search</i>
</button>
</form>
<div class="rj-login-nav">
<a id="login" class="rj-btn rj-btn-clear" href="https://users.nexusmods.com/auth/sign_in?redirect_url=https%3A%2F%2Fwww.nexusmods.com%2Fthesims4%2Fmods%2F2342" title="Log in to Nexus Mods" tabindex="0">Log in</a>
<a class="rj-btn rj-btn-standard" href="https://users.nexusmods.com/register">Register</a>
</div>
</div>
<div class="rj-right-tray rj-upload-tray">
<div class="arrow"></div>
<ul class="rj-right-tray-content rj-upload-tray-content">
<li class="rj-tray-section section-dark link-section">
<a href="https://www.nexusmods.com/thesims4/mods/add">
<div class="section-content">
<i class="material-icons">cloud_upload</i> <span>UPLOAD A <strong>MOD</strong></span>
</div>
</a>
</li>
<li class="rj-tray-section section-dark link-section">
<a href="https://www.nexusmods.com/thesims4/images/add">
<div class="section-content">
<i class="material-icons">add_photo_alternate</i> <span>UPLOAD AN <strong>IMAGE</strong></span>
</div>
</a>
</li>
<li class="rj-tray-section section-dark link-section">
<a href="https://www.nexusmods.com/thesims4/videos/add">
<div class="section-content">
<i class="material-icons">video_call</i> <span>ADD A <strong>VIDEO</strong></span>
</div>
</a>
</li>
</ul>
</div>
<div class="rj-right-tray rj-notifications-tray">
<div class="arrow"></div>
<div class="rj-right-tray-content rj-notifications-tray-content">
<div class="notifications-content-wrapper">
<div class="notifications-header">
<div class="notifications-header-left">
<i class="nmicon-notification"></i>
<span>Notifications</span>
</div>
<div class="notifications-header-right">
<button class="notifications-clear">Mark all as read (<span class="total-count">0</span>)</button>
<a href="https://next.nexusmods.com/settings/notifications" class="notification-preferences-button">
<img src="/assets/images/icons/notifications/preferences-cog.svg" alt="Notification preferences" title="Notification preferences">
</a>
</div>
</div>
<div id="notifications-body" class="notifications-body">
<div class="notifications-list">
<div class="notifications-error">
<button class="notifications-error__banner js-refresh-notifications custom-button" type="button">
<i class="material-icons notifications-error__icon">error_outline</i>
<div class="notifications-error__text">
<p class="notifications-error__header">Oh dear! Something has gone wrong!</p>
<p class="notifications-error__subheader">Try reloading the notifications.</p>
</div>
<i class="material-icons notifications-error__icon">refresh</i>
</button>
<i class="material-icons notifications-error__placeholder">notifications_off</i>
</div>
<ul>
</ul>
<div class="no-notifications">
<i class="nmicon-notification"></i>
<p>No unread notifications right now</p>
<span>You're up to date</span>
</div>
</div>
<div class="notification-load-more">
<a href="https://next.nexusmods.com/notifications/all" class="rj-btn rj-btn-full rj-btn-outline notifications-load-more custom-button" type="button">View All</a>
</div>
<div class="notification-up-to-date">
<p>You're up to date</p>
</div>
</div>
</div> </div>
</div>
<div class="rj-right-tray rj-profile-tray">
<div class="arrow"></div>
<ul class="rj-right-tray-content rj-profile-tray-content">
<li class="user-profile-menu-section">
<div class="section-content">
<div class="profile-pic-wrapper">
<div class="rj-profile-pic">
<img alt="Profile image" src="">
</div>
</div>
<div>
<div class="user-profile-menu-username" title="guest">guest</div>
<div>
<span class="user-profile-menu-free-user">Free plan | </span>
<a class="user-profile-menu-upgrade" href="https://users.nexusmods.com/account/billing/premium?pk_campaign=PremiumAccountDropdown">Upgrade</a>
</div>
</div>
</div>
</li>
<li class="user-profile-menu-divider"></li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="/users/0">
<div class="section-content">
<i class="material-icons">account_circle</i> My profile
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="https://www.nexusmods.com/thesims4/users/myaccount?tab=files">
<div class="section-content">
<svg viewBox="0 0 24 24" role="presentation" class="flex-shrink-0" width="24" height="24">
<path d="M11.985 17.8656L17.6972 13.4184L18.97 12.4328L11.985 7L5 12.4328L6.26506 13.4184L11.985 17.8656Z" style="fill: currentcolor;"></path>
</svg>
My mods
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="https://next.nexusmods.com/my-collections">
<div class="section-content">
<svg viewBox="0 0 24 24" role="presentation" class="flex-shrink-0" width="24" height="24">
<path d="M11.7229 15.369L6.21146 11.084L5 12.0262L11.7304 17.261L18.4607 12.0262L17.2418 11.0765L11.7229 15.369ZM11.7229 19.1079L6.21146 14.823L5 15.7652L11.7304 20.9999L18.4607 15.7652L17.2418 14.8155L11.7229 19.1079ZM11.7304 13.4694L17.2343 9.18445L18.4607 8.23472L11.7304 3L5 8.23472L6.21894 9.18445L11.7304 13.4694Z" style="fill: currentcolor;"></path>
</svg>
My collections
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="/users/myaccount?tab=images">
<div class="section-content">
<i class="material-icons-outlined">image</i> My media
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="/modrewards#/wallet">
<div class="section-content">
<i class="material-icons">account_balance_wallet</i> My wallet
</div>
</a>
</li>
<li class="user-profile-menu-divider"></li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="/mods/trackingcentre">
<div class="section-content">
<svg viewBox="0 0 24 24" role="presentation" class="flex-shrink-0" width="24" height="24">
<path d="M13.7521 11.5118C13.7521 10.1394 15.7161 7.96661 17.1112 7.96661C18.5069 7.96661 20.4704 10.1412 20.4852 11.5127C20.4852 12.1302 19.9993 12.4999 19.2241 12.4999C18.7783 12.4999 18.4095 12.3774 18.0593 12.261C17.7425 12.1557 17.441 12.0555 17.1112 12.0555C16.7866 12.0555 16.4886 12.1546 16.1742 12.2593C15.8229 12.3762 15.451 12.4999 14.9984 12.4999C14.2066 12.4999 13.7366 12.1298 13.7521 11.5118ZM13.2648 6.85595C13.7767 6.73199 14.3415 7.13043 14.5237 7.74349C14.7048 8.3562 14.4395 8.95474 13.9277 9.0787C13.4158 9.20265 12.851 8.80422 12.6687 8.18974C12.4864 7.57703 12.7529 6.9799 13.2648 6.85595ZM16.6191 5.72173C16.8277 6.50568 16.5552 7.23127 16.0126 7.37515C15.4677 7.52036 14.8595 7.01213 14.6505 6.24412C14.4418 5.46018 14.7143 4.73458 15.2569 4.5907C15.8017 4.46266 16.4104 4.93778 16.6191 5.72173ZM19.7001 7.74384C19.8824 7.13078 20.4472 6.74828 20.9591 6.8563C21.4548 6.98026 21.736 7.57703 21.5545 8.19098C21.3699 8.80404 20.8074 9.18654 20.2955 9.07852C19.7836 8.95456 19.5179 8.35708 19.7001 7.74384ZM19.572 6.24412C19.3633 7.01213 18.739 7.51904 18.2099 7.37515C17.6667 7.23172 17.3942 6.48974 17.6034 5.72173C17.8121 4.95372 18.4365 4.44682 18.9656 4.5907C19.5083 4.73449 19.7807 5.47611 19.572 6.24412ZM4.75206 19.4452C4.75206 18.0728 6.71607 15.9 8.11124 15.9C9.50694 15.9 11.4704 18.0745 11.4852 19.4461C11.4852 20.0635 10.9993 20.4333 10.2241 20.4333C9.77829 20.4333 9.40952 20.3107 9.05928 20.1943C8.74255 20.0891 8.44097 19.9888 8.11124 19.9888C7.78661 19.9888 7.48864 20.088 7.17418 20.1926C6.82288 20.3095 6.45099 20.4333 5.99835 20.4333C5.20663 20.4333 4.73659 20.0632 4.75206 19.4452ZM4.2648 14.7893C4.77667 14.6653 5.34146 15.0638 5.52374 15.6768C5.7048 16.2895 5.43954 16.8881 4.92767 17.012C4.41579 17.136 3.85101 16.7376 3.66872 16.1231C3.48637 15.5104 3.75292 14.9133 4.2648 14.7893ZM7.61905 13.6551C7.82771 14.439 7.55524 15.1646 7.01261 15.3085C6.46769 15.4537 5.85948 14.9455 5.65048 14.1775C5.44183 13.3935 5.71429 12.6679 6.25692 12.524C6.80167 12.396 7.4104 12.8711 7.61905 13.6551ZM10.7001 15.6772C10.8824 15.0641 11.4472 14.6816 11.9591 14.7896C12.4548 14.9136 12.736 15.5104 12.5545 16.1243C12.3699 16.7374 11.8074 17.1199 11.2955 17.0119C10.7836 16.8879 10.5179 16.2904 10.7001 15.6772ZM10.572 14.1775C10.3634 14.9455 9.73898 15.4524 9.20987 15.3085C8.66671 15.1651 8.39425 14.4231 8.60343 13.6551C8.81208 12.8871 9.43646 12.3802 9.96556 12.524C10.5083 12.6678 10.7807 13.4095 10.572 14.1775Z" style="fill: currentcolor;"></path>
</svg>
Tracking centre
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="/users/myaccount?tab=download+history">
<div class="section-content">
<i class="material-icons">history</i> Download history
</div>
</a>
</li>
<li class="user-profile-menu-divider"></li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="https://feedback.nexusmods.com/" rel="noreferrer" target="_blank">
<div class="section-content">
<svg viewBox="0 0 24 24" role="presentation" class="flex-shrink-0" width="24" height="24">
<path d="M13 11H11V5H13M13 15H11V13H13M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z" style="fill: currentcolor;"></path>
</svg>
Give Feedback
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="https://users.nexusmods.com">
<div class="section-content">
<i class="material-icons">settings</i> Account settings
</div>
</a>
</li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<a href="https://next.nexusmods.com/settings/preferences">
<div class="section-content">
<i class="material-icons">tune</i> Site preferences
</div>
</a>
</li>
<li class="user-profile-menu-divider"></li>
<li class="user-profile-menu-section user-profile-menu-section--link">
<form method="" action="https://users.nexusmods.com/auth/sign_in?redirect_url=https%3A%2F%2Fwww.nexusmods.com%2Fthesims4%2Fmods%2F2342">
<button type="submit" role="link" class="section-content">
<i class="material-icons">exit_to_app</i> Sign out
</button>
</form>
</li>
</ul>
</div>
</header>
<header id="mobile-head" class="new-head">
<div class="rj-mobile-head-controls">
<div>
<button class="rj-expand-left">
<i class="material-icons">menu</i>
</button>
</div>
<div class="rj-logo-center">
<a class="headlogo" href="/" alt="Nexus Mods" title="Nexus Mods">
<svg xmlns="http://www.w3.org/2000/svg" style="width:148px; height:35px;" version="1.1" x="0px" y="0px" viewBox="0 0 698.3 162.5">
<g>
<g>
<g>
<path d="M44.4,162.5c-0.6,0-1.3,0-1.9-0.1c-1.5-0.2-2.9-0.5-4.5-1c-2.8-0.9-5.2-2.2-6.9-3.2c-3.8-2.2-7.7-4.9-11.8-8.3 c-1.8-1.5-3.6-3.1-5.3-4.7l-1.4-1.4c-1-0.9-1.9-1.9-2.6-3c-1.3-2-2.4-4.6-2.5-8c-0.1-1.1-0.2-2.2-0.2-3.4c0-2.4,0.1-5,0.5-7.5 c0.7-5.2,2.4-9.8,3.7-13.3c0.1-0.3,0.2-0.6,0.3-0.9c-0.4-0.9-0.7-1.9-1.1-2.9C8.9,99.6,7.7,93.8,7.1,88 c-0.6-6.1-0.4-12.3,0.5-18.4c0.2-1.3,0.4-2.6,0.7-3.8C5.9,62.3,2.9,57.3,1,51.5l0-0.1c-0.4-1.2-1.4-4.2-0.8-8 c0.2-1.4,0.5-2.8,1-4.3c0.9-2.8,2.2-5.1,3.2-6.8c2.2-3.8,4.9-7.6,8.2-11.7c1.5-1.8,3-3.6,4.6-5.2l1.4-1.4 c0.7-0.8,1.5-1.5,2.4-2.1c2-1.5,4.8-2.8,8.6-2.9c1.2-0.1,2.5-0.2,3.8-0.2h0.1c2.5,0,5.2,0.2,7.8,0.6c4,0.6,7.6,1.7,10.8,2.9 c2.1-0.9,4.3-1.7,6.6-2.5C64.1,8,69.9,6.8,75.7,6.4C81.8,5.9,88,6.2,93.9,7.2c1.4,0.2,2.8,0.5,4.2,0.8c4.7-3.2,9-5.5,13.5-6.9 l0.1,0c1-0.4,3.2-1.1,6.1-1.1c0.6,0,1.3,0,1.9,0.1c1.5,0.2,2.9,0.5,4.5,1c2.8,0.9,5.2,2.2,6.9,3.2c3.8,2.2,7.7,4.9,11.8,8.3 c1.8,1.5,3.6,3.1,5.3,4.7l1.4,1.4c0.7,0.6,1.4,1.3,1.9,2.1c1.8,2.3,3.2,5.6,3.3,10.2c0.1,1.6,0.1,3.3,0,5 c-0.2,3.7-0.7,7.2-1.6,10.4c-0.7,2.4-1.5,4.8-2.4,7.2c1.8,4.5,3.1,9.1,4,13.8c1.8,9.9,1.6,20.1-0.6,29.9c1.3,1.9,2.5,3.7,3.5,5.5 c1.7,3,3.1,6.1,4.1,9.3c0.4,1.2,1.3,4.2,0.7,8.2c-0.2,1.4-0.6,2.7-1.1,4.2c-1.8,5.1-4.6,9.3-7.1,12.8c-2.7,3.8-5.8,7.5-9,10.9 l-1.2,1.2c-0.7,0.8-1.5,1.5-2.4,2.2c-2,1.5-4.8,2.7-8.6,2.9c-1.2,0.1-2.5,0.2-3.8,0.2h-0.1c-2.7,0-5.4-0.2-8.2-0.7 c-4.5-0.7-8.5-2.1-12.1-3.5c-1.9,0.8-3.9,1.5-5.8,2.1c-5.6,1.7-11.5,2.8-17.4,3.1c-6.1,0.4-12.3-0.1-18.3-1.2 c-0.7-0.1-1.5-0.3-2.2-0.4c-5.2,3.7-9.8,6.1-14.6,7.7l-0.1,0C49.5,161.7,47.3,162.5,44.4,162.5L44.4,162.5z M24.6,134.1l10.6,3.7 c0.9-2.6,1-5.4,0.4-8c0,0.2,0,0.5,0.1,0.7c0,0.3,0.1,0.7,0.1,1.1c-0.1-2-0.8-4.6-2.6-7c-0.7-0.9-1.5-1.7-2.4-2.4l0.5,0.4l0.9,0.9 c-0.8-0.8-1.7-1.6-2.7-2.3L24.6,134.1L24.6,134.1z M123.7,129.4c-0.8,0.8-1.6,1.6-2.3,2.7l11.9,4.6l0-11.1c0,0,0,0,0,0 c-1.1,0-2.2,0.1-3.2,0.4c0.2,0,0.4,0,0.6,0c0.3,0,0.7-0.1,1.1-0.1c-1.8,0.1-4.2,0.7-6.4,2.1c-1.2,0.8-2.2,1.7-3.1,2.9l0.4-0.5 L123.7,129.4L123.7,129.4z M35.8,126.8c0.5,0.4,1,0.8,1.5,1.3c2.6,2.2,5,3.9,7.2,5.2c1.4-0.7,3-1.7,4.7-3 c0.5-0.3,0.9-0.7,1.4-1.1c0.3-0.2,0.5-0.5,0.8-0.7c0.1-0.1,0.3-0.3,0.4-0.4l6.2-6.3l8.4,2.9c0.3,0.1,0.6,0.2,0.8,0.3 c1.8,0.6,3.6,1,5.4,1.4c3.7,0.7,7.6,1,11.4,0.7c3.6-0.2,7.3-0.9,10.7-1.9c1.7-0.5,3.4-1.1,5-1.9c0.8-0.3,1.6-0.7,2.3-1.1 c2-1,4.3-1.6,6.6-1.6c3.6,0,6.3,1.3,7.6,2c0.4,0.2,0.8,0.4,1.3,0.5c2.5,1,5.4,2.2,8,2.6c0.4,0.1,0.9,0.1,1.3,0.2 c1.5-1.7,2.9-3.5,4.2-5.3c0.8-1.1,1.6-2.2,2.3-3.3c-0.1-0.2-0.2-0.4-0.4-0.7c-0.7-1.2-1.5-2.4-2.5-3.9c-0.3-0.5-0.7-0.9-1.1-1.4 c-0.2-0.2-0.3-0.4-0.5-0.6c-4.1-4-5.5-9.7-3.6-15.1c0.1-0.3,0.2-0.6,0.3-0.8c2.3-7.2,2.7-14.9,1.4-22.3c-0.7-3.5-1.7-7-3.2-10.3 c-0.1-0.3-0.3-0.6-0.4-0.9c-3.3-6.1-1.9-11.3-0.7-13.8c0.5-1,0.9-2.1,1.3-3.1c0.8-1.9,1.4-3.9,2-5.7c0.2-0.9,0.4-1.8,0.5-2.9 c-0.5-0.4-1-0.8-1.5-1.3c-2.7-2.2-5-3.9-7.2-5.2c-1.4,0.8-3,1.8-4.8,3c-0.5,0.4-1,0.8-1.5,1.2c-0.1,0.1-0.3,0.2-0.4,0.4 c-2.7,2.6-6.3,4-10,4c-1.8,0-3.5-0.3-5.2-1c-0.4-0.1-0.8-0.3-1.2-0.4c-1.8-0.5-3.6-1-5.5-1.3c-3.7-0.6-7.6-0.8-11.4-0.5 c-3.6,0.3-7.2,1-10.6,2.1c-1.7,0.5-3.3,1.2-4.9,1.9c-0.8,0.3-1.5,0.7-2.3,1.1L59.5,40c-2.1,1.2-4.6,1.8-7,1.8 c-2.2,0-4.4-0.5-6.5-1.5c-0.5-0.2-0.9-0.4-1.4-0.6c-2.4-1-5.3-2.1-7.8-2.4c-0.4-0.1-0.8-0.1-1.1-0.2c-0.4,0.5-0.8,1-1.2,1.4 c-2.2,2.7-3.9,5-5.2,7.3c0.7,1.4,1.7,2.9,2.9,4.7c0.3,0.5,0.7,1,1.1,1.4c0.2,0.3,0.5,0.5,0.7,0.8l5.8,6.1l-2.5,8 c-0.2,0.5-0.3,1-0.5,1.5c-0.5,1.8-0.9,3.7-1.2,5.6c-0.6,3.8-0.7,7.6-0.3,11.5c0.3,3.6,1.1,7.2,2.3,10.6c0.6,1.7,1.3,3.3,2,4.9 c0.1,0.2,0.2,0.4,0.3,0.6c2.1,4.3,2.1,9.1-0.1,13.4c-0.2,0.4-0.4,0.8-0.5,1.2c-0.4,1-0.9,2-1.3,3c-0.8,2.2-1.8,4.8-2.1,7.1 C35.9,126.3,35.8,126.6,35.8,126.8L35.8,126.8z M129.9,38.8c0.8,0.8,1.7,1.6,2.8,2.4l4.9-12.9L127,24.6c-0.9,2.6-1,5.4-0.4,8 c0-0.1,0-0.2,0-0.3c0-0.3,0-0.8,0-1.3v-0.1c0,1.5,0.5,4,2.1,6.4c0.8,1.1,1.7,2.1,2.8,3l-0.5-0.4L129.9,38.8L129.9,38.8z M29.3,26.3l0,11.1c1.1,0,2.2-0.1,3.2-0.4c-0.2,0-0.4,0-0.6,0c-0.3,0-0.7,0.1-1.1,0.1c1.8-0.1,4.2-0.7,6.4-2.1 c1.2-0.8,2.2-1.7,3.1-2.9l-0.4,0.5l-0.9,1c0.8-0.8,1.6-1.7,2.3-2.7L29.3,26.3L29.3,26.3z"></path>
</g>
</g>
<g>
<g>
<g>
<path class="theme-secondary" d="M56.3,88.4l0.7,28.3l-7-5.7c-7.8,12.7-10.3,25-6.6,34.1l1.3,3.2l-3.2-1.4c-7.3-3.2-13.9-7.7-19.4-13.5 l-0.3-0.3l-0.1-0.5c-0.4-3.5-0.2-7.3,0.7-11.2l0-0.1c1.3-4.9,3.2-9.8,5.6-14.7c1.5-3.1,3.3-6.2,5.3-9.2l-6.1-5L56.3,88.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M105.9,74.1l-0.7-28.3l7,5.7c7.8-12.7,10.3-25,6.6-34.1l-1.3-3.2l3.2,1.4c7.3,3.2,13.9,7.7,19.4,13.5 l0.3,0.3l0.1,0.5c0.4,3.5,0.2,7.3-0.7,11.2l0,0.1c-1.3,4.9-3.2,9.8-5.6,14.7c-1.5,3.1-3.3,6.2-5.3,9.2l6.1,5L105.9,74.1z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M88.5,105.4l28.3-0.7l-5.7,7c12.7,7.8,25,10.3,34.1,6.6l3.2-1.3l-1.4,3.2c-3.2,7.3-7.7,13.9-13.5,19.4 l-0.3,0.3l-0.5,0.1c-3.5,0.4-7.3,0.2-11.2-0.7l-0.1,0c-4.9-1.3-9.8-3.2-14.7-5.6c-3.1-1.5-6.2-3.3-9.2-5.3l-5,6.1L88.5,105.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M74.1,57.6l-28.3,0.7l5.7-7c-12.7-7.8-25-10.3-34.1-6.6L14.3,46l1.4-3.2c3.2-7.3,7.7-13.9,13.5-19.4 l0.3-0.3L30,23c3.5-0.4,7.3-0.2,11.2,0.7l0.1,0c4.9,1.3,9.8,3.2,14.7,5.6c3.1,1.5,6.2,3.3,9.2,5.3l5-6.1L74.1,57.6z"></path>
</g>
</g>
<g>
<g>
<circle class="theme-primary" cx="81.4" cy="80.8" r="60.5"></circle>
</g>
</g>
<g>
<path style="fill:#ffffff" d="M59.3,59.5c-3.5-1.6-6.1-3.2-8.7-5.1c-4-2.8-7.7-5.9-10.8-9.2c-7.6-7.7-11.6-15.6-10.5-22.1L27,25.6 c-5.5,5.8-12.8,16-12.9,20.4c0.1,0.5,0.1,0.5,0.1,0.5c1,3.4,2.6,6.8,4.9,10.1l0,0.1c3,4.8,8.9,12.7,29.9,21.9l-3.7,7l28.3-7.6 L63.5,51.5L59.3,59.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M103.3,103.5c3.5,1.6,6.1,3.2,8.7,5.1c4,2.8,7.7,5.9,10.8,9.2c7.6,7.7,11.6,15.6,10.5,22.1l2.3-2.4 c5.5-5.8,12.8-16,12.9-20.4c-0.1-0.5-0.1-0.5-0.1-0.5c-1-3.4-2.6-6.8-4.9-10.1l0-0.1c-3-4.8-8.9-12.7-29.9-21.9l3.7-7l-28.3,7.6 l10.2,26.2L103.3,103.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M104,59.3c1.6-3.5,3.2-6.1,5.1-8.7c2.8-4,5.9-7.7,9.2-10.8c7.7-7.6,15.6-11.6,22.1-10.5L138,27 c-5.8-5.5-16-12.8-20.4-12.9c-0.5,0.1-0.5,0.1-0.5,0.1c-3.4,1-6.8,2.6-10.1,4.9l-0.1,0c-4.8,3-12.7,8.9-21.9,29.9l-7-3.7 l7.6,28.3L112,63.6L104,59.3z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M58.2,103.2c-1.6,3.5-3.2,6.1-5.1,8.7c-2.8,4-5.9,7.7-9.2,10.8c-7.7,7.6-15.6,11.6-22.1,10.5l2.4,2.3 c5.8,5.5,16,12.8,20.4,12.9c0.5-0.1,0.5-0.1,0.5-0.1c3.4-1,6.8-2.6,10.1-4.9l0.1,0c4.8-3,12.7-8.9,21.9-29.9l7,3.7l-7.6-28.3 L50.3,98.9L58.2,103.2z"></path>
</g>
</g>
</g>
<g class="logo-brand-name">
<path style="fill:#ffffff" d="M198.6,131.3h-6V31.9h8.5l29.8,83.9V31.9h6v99.4h-7.2l-31.1-88.6V131.3z"></path>
<path style="fill:#ffffff" d="M281.1,77.9v6h-27.1v41.5h32.7v6h-39.2V31.9h39.2v6h-32.7v40H281.1z"></path>
<path style="fill:#ffffff" d="M321.8,85l-20.2,46.3h-6.4l22.4-51.5l-20.9-47.8h6.8l18.7,42.7l18.9-42.7h6.2l-20.9,47.8l22.3,51.5h-7 L321.8,85z"></path>
<path style="fill:#ffffff" d="M364.5,107.3c0,10.6,4,18.9,14.9,18.9s14.9-8.2,14.9-18.9V31.9h6.1V107c0,14.2-6,25.1-21.2,25.1 c-15.2,0-21.3-10.9-21.3-25.1V31.9h6.5V107.3z"></path>
<path style="fill:#ffffff" d="M452.8,55.9v2.1h-6.2v-2.6c0-10.5-4-18.5-14.8-18.5c-10.8,0-14.8,7.8-14.8,18.3c0,24.1,35.9,24.6,35.9,52 c0,14.3-6.2,24.8-21.4,24.8s-21.4-10.5-21.4-24.8v-5.1h6.2v5.5c0,10.6,4.1,18.3,15,18.3s15-7.7,15-18.3c0-23.9-35.9-24.3-35.9-52 c0-14.9,6.5-24.6,21.2-24.7C446.7,31.1,452.8,41.6,452.8,55.9z"></path>
<path class="theme-primary" d="M495.8,102.5l10.6-70.6h21.7v99.4h-14.8V60.1l-10.8,71.3h-14.8l-11.6-70.3v70.3h-13.6V31.9h21.7L495.8,102.5z"></path>
<path class="theme-primary" d="M537.6,55.8c0-15.9,8.4-25,23.7-25c15.3,0,23.7,9.1,23.7,25v51.7c0,15.9-8.4,25-23.7,25 c-15.3,0-23.7-9.1-23.7-25V55.8z M553.2,108.5c0,7.1,3.1,9.8,8.1,9.8s8.1-2.7,8.1-9.8V54.8c0-7.1-3.1-9.8-8.1-9.8s-8.1,2.7-8.1,9.8 V108.5z"></path>
<path class="theme-primary" d="M594.4,31.9h24.7c15.6,0,23.3,8.7,23.3,24.6v50.3c0,15.9-7.7,24.6-23.3,24.6h-24.7V31.9z M610,46.1v71h8.8 c5,0,7.9-2.6,7.9-9.7V55.8c0-7.1-3-9.7-7.9-9.7H610z"></path>
<path class="theme-primary" d="M672.6,30.8c15.2,0,23,9.1,23,25v3.1h-14.8v-4.1c0-7.1-2.8-9.8-7.8-9.8c-5,0-7.8,2.7-7.8,9.8 c0,20.4,30.5,24.3,30.5,52.7c0,15.9-8,25-23.3,25c-15.3,0-23.3-9.1-23.3-25v-6.1h14.8v7.1c0,7.1,3.1,9.7,8.1,9.7s8.1-2.6,8.1-9.7 c0-20.4-30.5-24.3-30.5-52.7C649.6,39.9,657.4,30.8,672.6,30.8z"></path>
</g>
</svg> </a>
</div>
<div class="rj-user-nav-right">
<button class="rj-expand-search">
<i class="material-icons">search</i>
</button>
<button class="rj-expand-profile">
<i class="material-icons">person</i>
</button>
</div>
</div>
<div class="rj-mobile-menu-shield" tabindex="0"></div>
<div class="nav-mobile-menu">
<div class="nav-mobile-menu-header">
<a class="headlogo" href="/" alt="Nexus Mods" title="Nexus Mods">
<svg xmlns="http://www.w3.org/2000/svg" style="width:148px; height:35px;" version="1.1" x="0px" y="0px" viewBox="0 0 698.3 162.5">
<g>
<g>
<g>
<path d="M44.4,162.5c-0.6,0-1.3,0-1.9-0.1c-1.5-0.2-2.9-0.5-4.5-1c-2.8-0.9-5.2-2.2-6.9-3.2c-3.8-2.2-7.7-4.9-11.8-8.3 c-1.8-1.5-3.6-3.1-5.3-4.7l-1.4-1.4c-1-0.9-1.9-1.9-2.6-3c-1.3-2-2.4-4.6-2.5-8c-0.1-1.1-0.2-2.2-0.2-3.4c0-2.4,0.1-5,0.5-7.5 c0.7-5.2,2.4-9.8,3.7-13.3c0.1-0.3,0.2-0.6,0.3-0.9c-0.4-0.9-0.7-1.9-1.1-2.9C8.9,99.6,7.7,93.8,7.1,88 c-0.6-6.1-0.4-12.3,0.5-18.4c0.2-1.3,0.4-2.6,0.7-3.8C5.9,62.3,2.9,57.3,1,51.5l0-0.1c-0.4-1.2-1.4-4.2-0.8-8 c0.2-1.4,0.5-2.8,1-4.3c0.9-2.8,2.2-5.1,3.2-6.8c2.2-3.8,4.9-7.6,8.2-11.7c1.5-1.8,3-3.6,4.6-5.2l1.4-1.4 c0.7-0.8,1.5-1.5,2.4-2.1c2-1.5,4.8-2.8,8.6-2.9c1.2-0.1,2.5-0.2,3.8-0.2h0.1c2.5,0,5.2,0.2,7.8,0.6c4,0.6,7.6,1.7,10.8,2.9 c2.1-0.9,4.3-1.7,6.6-2.5C64.1,8,69.9,6.8,75.7,6.4C81.8,5.9,88,6.2,93.9,7.2c1.4,0.2,2.8,0.5,4.2,0.8c4.7-3.2,9-5.5,13.5-6.9 l0.1,0c1-0.4,3.2-1.1,6.1-1.1c0.6,0,1.3,0,1.9,0.1c1.5,0.2,2.9,0.5,4.5,1c2.8,0.9,5.2,2.2,6.9,3.2c3.8,2.2,7.7,4.9,11.8,8.3 c1.8,1.5,3.6,3.1,5.3,4.7l1.4,1.4c0.7,0.6,1.4,1.3,1.9,2.1c1.8,2.3,3.2,5.6,3.3,10.2c0.1,1.6,0.1,3.3,0,5 c-0.2,3.7-0.7,7.2-1.6,10.4c-0.7,2.4-1.5,4.8-2.4,7.2c1.8,4.5,3.1,9.1,4,13.8c1.8,9.9,1.6,20.1-0.6,29.9c1.3,1.9,2.5,3.7,3.5,5.5 c1.7,3,3.1,6.1,4.1,9.3c0.4,1.2,1.3,4.2,0.7,8.2c-0.2,1.4-0.6,2.7-1.1,4.2c-1.8,5.1-4.6,9.3-7.1,12.8c-2.7,3.8-5.8,7.5-9,10.9 l-1.2,1.2c-0.7,0.8-1.5,1.5-2.4,2.2c-2,1.5-4.8,2.7-8.6,2.9c-1.2,0.1-2.5,0.2-3.8,0.2h-0.1c-2.7,0-5.4-0.2-8.2-0.7 c-4.5-0.7-8.5-2.1-12.1-3.5c-1.9,0.8-3.9,1.5-5.8,2.1c-5.6,1.7-11.5,2.8-17.4,3.1c-6.1,0.4-12.3-0.1-18.3-1.2 c-0.7-0.1-1.5-0.3-2.2-0.4c-5.2,3.7-9.8,6.1-14.6,7.7l-0.1,0C49.5,161.7,47.3,162.5,44.4,162.5L44.4,162.5z M24.6,134.1l10.6,3.7 c0.9-2.6,1-5.4,0.4-8c0,0.2,0,0.5,0.1,0.7c0,0.3,0.1,0.7,0.1,1.1c-0.1-2-0.8-4.6-2.6-7c-0.7-0.9-1.5-1.7-2.4-2.4l0.5,0.4l0.9,0.9 c-0.8-0.8-1.7-1.6-2.7-2.3L24.6,134.1L24.6,134.1z M123.7,129.4c-0.8,0.8-1.6,1.6-2.3,2.7l11.9,4.6l0-11.1c0,0,0,0,0,0 c-1.1,0-2.2,0.1-3.2,0.4c0.2,0,0.4,0,0.6,0c0.3,0,0.7-0.1,1.1-0.1c-1.8,0.1-4.2,0.7-6.4,2.1c-1.2,0.8-2.2,1.7-3.1,2.9l0.4-0.5 L123.7,129.4L123.7,129.4z M35.8,126.8c0.5,0.4,1,0.8,1.5,1.3c2.6,2.2,5,3.9,7.2,5.2c1.4-0.7,3-1.7,4.7-3 c0.5-0.3,0.9-0.7,1.4-1.1c0.3-0.2,0.5-0.5,0.8-0.7c0.1-0.1,0.3-0.3,0.4-0.4l6.2-6.3l8.4,2.9c0.3,0.1,0.6,0.2,0.8,0.3 c1.8,0.6,3.6,1,5.4,1.4c3.7,0.7,7.6,1,11.4,0.7c3.6-0.2,7.3-0.9,10.7-1.9c1.7-0.5,3.4-1.1,5-1.9c0.8-0.3,1.6-0.7,2.3-1.1 c2-1,4.3-1.6,6.6-1.6c3.6,0,6.3,1.3,7.6,2c0.4,0.2,0.8,0.4,1.3,0.5c2.5,1,5.4,2.2,8,2.6c0.4,0.1,0.9,0.1,1.3,0.2 c1.5-1.7,2.9-3.5,4.2-5.3c0.8-1.1,1.6-2.2,2.3-3.3c-0.1-0.2-0.2-0.4-0.4-0.7c-0.7-1.2-1.5-2.4-2.5-3.9c-0.3-0.5-0.7-0.9-1.1-1.4 c-0.2-0.2-0.3-0.4-0.5-0.6c-4.1-4-5.5-9.7-3.6-15.1c0.1-0.3,0.2-0.6,0.3-0.8c2.3-7.2,2.7-14.9,1.4-22.3c-0.7-3.5-1.7-7-3.2-10.3 c-0.1-0.3-0.3-0.6-0.4-0.9c-3.3-6.1-1.9-11.3-0.7-13.8c0.5-1,0.9-2.1,1.3-3.1c0.8-1.9,1.4-3.9,2-5.7c0.2-0.9,0.4-1.8,0.5-2.9 c-0.5-0.4-1-0.8-1.5-1.3c-2.7-2.2-5-3.9-7.2-5.2c-1.4,0.8-3,1.8-4.8,3c-0.5,0.4-1,0.8-1.5,1.2c-0.1,0.1-0.3,0.2-0.4,0.4 c-2.7,2.6-6.3,4-10,4c-1.8,0-3.5-0.3-5.2-1c-0.4-0.1-0.8-0.3-1.2-0.4c-1.8-0.5-3.6-1-5.5-1.3c-3.7-0.6-7.6-0.8-11.4-0.5 c-3.6,0.3-7.2,1-10.6,2.1c-1.7,0.5-3.3,1.2-4.9,1.9c-0.8,0.3-1.5,0.7-2.3,1.1L59.5,40c-2.1,1.2-4.6,1.8-7,1.8 c-2.2,0-4.4-0.5-6.5-1.5c-0.5-0.2-0.9-0.4-1.4-0.6c-2.4-1-5.3-2.1-7.8-2.4c-0.4-0.1-0.8-0.1-1.1-0.2c-0.4,0.5-0.8,1-1.2,1.4 c-2.2,2.7-3.9,5-5.2,7.3c0.7,1.4,1.7,2.9,2.9,4.7c0.3,0.5,0.7,1,1.1,1.4c0.2,0.3,0.5,0.5,0.7,0.8l5.8,6.1l-2.5,8 c-0.2,0.5-0.3,1-0.5,1.5c-0.5,1.8-0.9,3.7-1.2,5.6c-0.6,3.8-0.7,7.6-0.3,11.5c0.3,3.6,1.1,7.2,2.3,10.6c0.6,1.7,1.3,3.3,2,4.9 c0.1,0.2,0.2,0.4,0.3,0.6c2.1,4.3,2.1,9.1-0.1,13.4c-0.2,0.4-0.4,0.8-0.5,1.2c-0.4,1-0.9,2-1.3,3c-0.8,2.2-1.8,4.8-2.1,7.1 C35.9,126.3,35.8,126.6,35.8,126.8L35.8,126.8z M129.9,38.8c0.8,0.8,1.7,1.6,2.8,2.4l4.9-12.9L127,24.6c-0.9,2.6-1,5.4-0.4,8 c0-0.1,0-0.2,0-0.3c0-0.3,0-0.8,0-1.3v-0.1c0,1.5,0.5,4,2.1,6.4c0.8,1.1,1.7,2.1,2.8,3l-0.5-0.4L129.9,38.8L129.9,38.8z M29.3,26.3l0,11.1c1.1,0,2.2-0.1,3.2-0.4c-0.2,0-0.4,0-0.6,0c-0.3,0-0.7,0.1-1.1,0.1c1.8-0.1,4.2-0.7,6.4-2.1 c1.2-0.8,2.2-1.7,3.1-2.9l-0.4,0.5l-0.9,1c0.8-0.8,1.6-1.7,2.3-2.7L29.3,26.3L29.3,26.3z"></path>
</g>
</g>
<g>
<g>
<g>
<path class="theme-secondary" d="M56.3,88.4l0.7,28.3l-7-5.7c-7.8,12.7-10.3,25-6.6,34.1l1.3,3.2l-3.2-1.4c-7.3-3.2-13.9-7.7-19.4-13.5 l-0.3-0.3l-0.1-0.5c-0.4-3.5-0.2-7.3,0.7-11.2l0-0.1c1.3-4.9,3.2-9.8,5.6-14.7c1.5-3.1,3.3-6.2,5.3-9.2l-6.1-5L56.3,88.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M105.9,74.1l-0.7-28.3l7,5.7c7.8-12.7,10.3-25,6.6-34.1l-1.3-3.2l3.2,1.4c7.3,3.2,13.9,7.7,19.4,13.5 l0.3,0.3l0.1,0.5c0.4,3.5,0.2,7.3-0.7,11.2l0,0.1c-1.3,4.9-3.2,9.8-5.6,14.7c-1.5,3.1-3.3,6.2-5.3,9.2l6.1,5L105.9,74.1z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M88.5,105.4l28.3-0.7l-5.7,7c12.7,7.8,25,10.3,34.1,6.6l3.2-1.3l-1.4,3.2c-3.2,7.3-7.7,13.9-13.5,19.4 l-0.3,0.3l-0.5,0.1c-3.5,0.4-7.3,0.2-11.2-0.7l-0.1,0c-4.9-1.3-9.8-3.2-14.7-5.6c-3.1-1.5-6.2-3.3-9.2-5.3l-5,6.1L88.5,105.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M74.1,57.6l-28.3,0.7l5.7-7c-12.7-7.8-25-10.3-34.1-6.6L14.3,46l1.4-3.2c3.2-7.3,7.7-13.9,13.5-19.4 l0.3-0.3L30,23c3.5-0.4,7.3-0.2,11.2,0.7l0.1,0c4.9,1.3,9.8,3.2,14.7,5.6c3.1,1.5,6.2,3.3,9.2,5.3l5-6.1L74.1,57.6z"></path>
</g>
</g>
<g>
<g>
<circle class="theme-primary" cx="81.4" cy="80.8" r="60.5"></circle>
</g>
</g>
<g>
<path style="fill:#ffffff" d="M59.3,59.5c-3.5-1.6-6.1-3.2-8.7-5.1c-4-2.8-7.7-5.9-10.8-9.2c-7.6-7.7-11.6-15.6-10.5-22.1L27,25.6 c-5.5,5.8-12.8,16-12.9,20.4c0.1,0.5,0.1,0.5,0.1,0.5c1,3.4,2.6,6.8,4.9,10.1l0,0.1c3,4.8,8.9,12.7,29.9,21.9l-3.7,7l28.3-7.6 L63.5,51.5L59.3,59.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M103.3,103.5c3.5,1.6,6.1,3.2,8.7,5.1c4,2.8,7.7,5.9,10.8,9.2c7.6,7.7,11.6,15.6,10.5,22.1l2.3-2.4 c5.5-5.8,12.8-16,12.9-20.4c-0.1-0.5-0.1-0.5-0.1-0.5c-1-3.4-2.6-6.8-4.9-10.1l0-0.1c-3-4.8-8.9-12.7-29.9-21.9l3.7-7l-28.3,7.6 l10.2,26.2L103.3,103.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M104,59.3c1.6-3.5,3.2-6.1,5.1-8.7c2.8-4,5.9-7.7,9.2-10.8c7.7-7.6,15.6-11.6,22.1-10.5L138,27 c-5.8-5.5-16-12.8-20.4-12.9c-0.5,0.1-0.5,0.1-0.5,0.1c-3.4,1-6.8,2.6-10.1,4.9l-0.1,0c-4.8,3-12.7,8.9-21.9,29.9l-7-3.7 l7.6,28.3L112,63.6L104,59.3z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M58.2,103.2c-1.6,3.5-3.2,6.1-5.1,8.7c-2.8,4-5.9,7.7-9.2,10.8c-7.7,7.6-15.6,11.6-22.1,10.5l2.4,2.3 c5.8,5.5,16,12.8,20.4,12.9c0.5-0.1,0.5-0.1,0.5-0.1c3.4-1,6.8-2.6,10.1-4.9l0.1,0c4.8-3,12.7-8.9,21.9-29.9l7,3.7l-7.6-28.3 L50.3,98.9L58.2,103.2z"></path>
</g>
</g>
</g>
<g class="logo-brand-name">
<path style="fill:#ffffff" d="M198.6,131.3h-6V31.9h8.5l29.8,83.9V31.9h6v99.4h-7.2l-31.1-88.6V131.3z"></path>
<path style="fill:#ffffff" d="M281.1,77.9v6h-27.1v41.5h32.7v6h-39.2V31.9h39.2v6h-32.7v40H281.1z"></path>
<path style="fill:#ffffff" d="M321.8,85l-20.2,46.3h-6.4l22.4-51.5l-20.9-47.8h6.8l18.7,42.7l18.9-42.7h6.2l-20.9,47.8l22.3,51.5h-7 L321.8,85z"></path>
<path style="fill:#ffffff" d="M364.5,107.3c0,10.6,4,18.9,14.9,18.9s14.9-8.2,14.9-18.9V31.9h6.1V107c0,14.2-6,25.1-21.2,25.1 c-15.2,0-21.3-10.9-21.3-25.1V31.9h6.5V107.3z"></path>
<path style="fill:#ffffff" d="M452.8,55.9v2.1h-6.2v-2.6c0-10.5-4-18.5-14.8-18.5c-10.8,0-14.8,7.8-14.8,18.3c0,24.1,35.9,24.6,35.9,52 c0,14.3-6.2,24.8-21.4,24.8s-21.4-10.5-21.4-24.8v-5.1h6.2v5.5c0,10.6,4.1,18.3,15,18.3s15-7.7,15-18.3c0-23.9-35.9-24.3-35.9-52 c0-14.9,6.5-24.6,21.2-24.7C446.7,31.1,452.8,41.6,452.8,55.9z"></path>
<path class="theme-primary" d="M495.8,102.5l10.6-70.6h21.7v99.4h-14.8V60.1l-10.8,71.3h-14.8l-11.6-70.3v70.3h-13.6V31.9h21.7L495.8,102.5z"></path>
<path class="theme-primary" d="M537.6,55.8c0-15.9,8.4-25,23.7-25c15.3,0,23.7,9.1,23.7,25v51.7c0,15.9-8.4,25-23.7,25 c-15.3,0-23.7-9.1-23.7-25V55.8z M553.2,108.5c0,7.1,3.1,9.8,8.1,9.8s8.1-2.7,8.1-9.8V54.8c0-7.1-3.1-9.8-8.1-9.8s-8.1,2.7-8.1,9.8 V108.5z"></path>
<path class="theme-primary" d="M594.4,31.9h24.7c15.6,0,23.3,8.7,23.3,24.6v50.3c0,15.9-7.7,24.6-23.3,24.6h-24.7V31.9z M610,46.1v71h8.8 c5,0,7.9-2.6,7.9-9.7V55.8c0-7.1-3-9.7-7.9-9.7H610z"></path>
<path class="theme-primary" d="M672.6,30.8c15.2,0,23,9.1,23,25v3.1h-14.8v-4.1c0-7.1-2.8-9.8-7.8-9.8c-5,0-7.8,2.7-7.8,9.8 c0,20.4,30.5,24.3,30.5,52.7c0,15.9-8,25-23.3,25c-15.3,0-23.3-9.1-23.3-25v-6.1h14.8v7.1c0,7.1,3.1,9.7,8.1,9.7s8.1-2.6,8.1-9.7 c0-20.4-30.5-24.3-30.5-52.7C649.6,39.9,657.4,30.8,672.6,30.8z"></path>
</g>
</svg> </a>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-current-game">
<a href="https://www.nexusmods.com/thesims4" title="The Sims 4">
<img alt="The Sims 4" src="https://staticdelivery.nexusmods.com/images/games/4_3/tile_641.jpg">
<span class="typography-body-xl text-neutral-strong">The Sims 4</span>
</a>
<a href="/">
<i class="material-icons">close</i>
<span class="sr-only">Clear game filter</span>
</a>
</li>
<style></style>
<li><button class="nav-mobile-menu-item text-neutral-strong">
<p class="typography-body-xl">Games</p>
<i class="material-icons">chevron_right</i>
</button>
<div class="nav-mobile-menu-child">
<div class="nav-mobile-menu-header">
<button type="button" class="nav-mobile-menu-back">
<svg class="nav-back-icon" viewBox="0 0 24 24" role="presentation" style="width:1.5rem;height:1.5rem;">
<path d="M17.5101 3.8701L15.7301 2.1001L5.84009 12.0001L15.7401 21.9001L17.5101 20.1301L9.38009 12.0001L17.5101 3.8701Z"></path>
</svg> <span class="sr-only">Back</span>
</button>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-menu-group-title"><span class="text-neutral-subdued typography-title-md">Games</span></li>
<li><a class="nav-mobile-menu-item text-neutral-strong" href="/games"><p class="typography-body-xl">All games <span class="text-neutral-subdued">(3,250)</span></p></a></li>
<li><a class="nav-mobile-menu-item text-neutral-strong" href="/games?sort=new"><p class="typography-body-xl">Recently added <span class="text-neutral-subdued">(73)</span></p></a></li>
</ul>
<ul>
<li class="nav-mobile-menu-group-title"><span class="text-neutral-subdued typography-title-md">My games</span></li>
<div class="nav-mobile-games-wrapper">
<div class="nav-games-unauthenticated">
<i class="fa fa-gamepad"></i>
<p class="typography-body-md text-neutral-subdued">Your favourited games will be displayed here</p>
</div>
<script>
(function () {
GameFavouriteState.init(0, '.nav-mobile-games-wrapper');
})();
</script>
</div>
</ul>
</div>
</div>
</li>
<li><button class="nav-mobile-menu-item text-neutral-strong">
<p class="typography-body-xl">Mods</p>
<i class="material-icons">chevron_right</i>
</button>
<div class="nav-mobile-menu-child">
<div class="nav-mobile-menu-header">
<button type="button" class="nav-mobile-menu-back">
<svg class="nav-back-icon" viewBox="0 0 24 24" role="presentation" style="width:1.5rem;height:1.5rem;">
<path d="M17.5101 3.8701L15.7301 2.1001L5.84009 12.0001L15.7401 21.9001L17.5101 20.1301L9.38009 12.0001L17.5101 3.8701Z"></path>
</svg> <span class="sr-only">Back</span>
</button>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Mods</span></li>
<li><a href="https://www.nexusmods.com/thesims4/mods" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">All mods</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/thisweek" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">New</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/trending" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Trending</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/trendingalltime" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Most endorsed</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/top" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Top files</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/categories" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Mod categories</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/motm" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Mods of the month</p></a></li>
</ul>
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Mod updates</span></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/newrecently" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Recent activity</p></a></li>
</ul>
</div>
</div></li>
<li><button class="nav-mobile-menu-item text-neutral-strong">
<p class="typography-body-xl">Collections</p>
<i class="material-icons">chevron_right</i>
</button>
<div class="nav-mobile-menu-child">
<div class="nav-mobile-menu-header">
<button type="button" class="nav-mobile-menu-back">
<svg class="nav-back-icon" viewBox="0 0 24 24" role="presentation" style="width:1.5rem;height:1.5rem;">
<path d="M17.5101 3.8701L15.7301 2.1001L5.84009 12.0001L15.7401 21.9001L17.5101 20.1301L9.38009 12.0001L17.5101 3.8701Z"></path>
</svg> <span class="sr-only">Back</span>
</button>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Collections</span></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=total_downloads" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">All collections</p></a></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=listed_at" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Recently added</p></a></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=endorsements_count" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Most endorsed</p></a></li>
<li><a href="https://next.nexusmods.com/thesims4/collections?sortBy=overall_rating" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Highest rated</p></a></li>
</ul>
</div>
</div></li>
<li><button class="nav-mobile-menu-item text-neutral-strong">
<p class="typography-body-xl">Media</p>
<i class="material-icons">chevron_right</i>
</button>
<div class="nav-mobile-menu-child">
<div class="nav-mobile-menu-header">
<button type="button" class="nav-mobile-menu-back">
<svg class="nav-back-icon" viewBox="0 0 24 24" role="presentation" style="width:1.5rem;height:1.5rem;">
<path d="M17.5101 3.8701L15.7301 2.1001L5.84009 12.0001L15.7401 21.9001L17.5101 20.1301L9.38009 12.0001L17.5101 3.8701Z"></path>
</svg> <span class="sr-only">Back</span>
</button>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Images</span></li>
<li><a href="https://www.nexusmods.com/thesims4/images" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Latest</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/images/recentlyendorsed" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Trending</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/images/mostendorsed" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Most endorsed</p></a></li>
</ul>
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Videos</span></li>
<li><a href="https://www.nexusmods.com/thesims4/videos" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Latest</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/videos/recentlyendorsed" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Trending</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/videos/mostendorsed" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Most endorsed</p></a></li>
</ul>
</div>
</div></li>
<li><button class="nav-mobile-menu-item text-neutral-strong">
<p class="typography-body-xl">Community</p>
<i class="material-icons">chevron_right</i>
</button>
<div class="nav-mobile-menu-child">
<div class="nav-mobile-menu-header">
<button type="button" class="nav-mobile-menu-back">
<svg class="nav-back-icon" viewBox="0 0 24 24" role="presentation" style="width:1.5rem;height:1.5rem;">
<path d="M17.5101 3.8701L15.7301 2.1001L5.84009 12.0001L15.7401 21.9001L17.5101 20.1301L9.38009 12.0001L17.5101 3.8701Z"></path>
</svg> <span class="sr-only">Back</span>
</button>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Community</span></li>
<li><a href="https://forums.nexusmods.com/forum/8406-modding-discussion" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Forums</p></a></li>
<li><a href="https://wiki.nexusmods.com/index.php/Main_Page" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Wiki</p></a></li>
<li><a href="https://www.patreon.com/nexusmods" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Support authors</p></a></li>
</ul>
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">News</span></li>
<li><a href="https://www.nexusmods.com/thesims4/news" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">All news</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/news?tab=site+news" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Site news</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/news?tab=competition" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Competitions</p></a></li>
<li><a href="https://www.nexusmods.com/thesims4/news?tab=interviews" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Interviews</p></a></li>
</ul>
<div class="nav-social-links">
<a target="_blank" rel="noreferrer" href="https://discord.gg/nexusmods" title="Join us on Discord">
<img class="icon" alt="Discord" src="/assets/images/footer/Discord.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://twitter.com/nexussites" title="Follow us on Twitter">
<img class="icon" alt="Twitter" src="/assets/images/footer/Twitter.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.tiktok.com/@nexusmodsofficial" title="Follow us on TikTok">
<img class="icon" alt="TikTok" src="/assets/images/footer/TikTok.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.twitch.tv/nexusmodsofficial" title="Follow us on Twitch">
<img class="icon" alt="Twitch" src="/assets/images/footer/Twitch.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.youtube.com/@NexusModsOfficial" title="Follow us on Youtube">
<img class="icon" alt="Youtube" src="/assets/images/footer/Youtube.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.instagram.com/nexusmodsofficial" title="Follow us on Instagram">
<img class="icon" alt="Instagram" src="/assets/images/footer/Instagram.svg">
</a>
</div>
</div>
</div></li>
<li><button class="nav-mobile-menu-item text-neutral-strong">
<p class="typography-body-xl">Support</p>
<i class="material-icons">chevron_right</i>
</button>
<div class="nav-mobile-menu-child">
<div class="nav-mobile-menu-header">
<button type="button" class="nav-mobile-menu-back">
<svg class="nav-back-icon" viewBox="0 0 24 24" role="presentation" style="width:1.5rem;height:1.5rem;">
<path d="M17.5101 3.8701L15.7301 2.1001L5.84009 12.0001L15.7401 21.9001L17.5101 20.1301L9.38009 12.0001L17.5101 3.8701Z"></path>
</svg> <span class="sr-only">Back</span>
</button>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Support</span></li>
<li><a href="https://help.nexusmods.com/" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Help</p></a></li>
<li><a href="https://help.nexusmods.com/article/125-contact-us" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Contact</p></a></li>
<li><a href="https://feedback.nexusmods.com/" rel="noreferrer" target="_blank" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Give feedback</p></a></li>
<li><a href="https://help.nexusmods.com/category/26-frequently-asked-questions" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">FAQ</p></a></li>
</ul>
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Wiki</span></li>
<li><a href="https://wiki.nexusmods.com/index.php/Games" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Game guides</p></a></li>
<li><a href="https://wiki.nexusmods.com/index.php/Category:Tutorials" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Tutorial</p></a></li>
<li><a href="https://modding.wiki/en/nexusmods/collections" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Collections</p></a></li>
<li><a href="https://wiki.nexusmods.com/index.php/Category:Tools" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Tools</p></a></li>
</ul>
<ul>
<li class="nav-mobile-menu-group-title"><span class="typography-title-md text-neutral-subdued">Vortex</span></li>
<li><a href="https://wiki.nexusmods.com/index.php/Category:Vortex" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Vortex help</p></a></li>
<li><a href="https://app.swaggerhub.com/apis-docs/NexusMods/nexus-mods_public_api_params_in_form_data/1.0#/" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">API documentation</p></a></li>
<li><a href="https://www.nexusmods.com/about/vortex/" class="nav-mobile-menu-item text-neutral-strong"><p class="typography-body-xl">Install Vortex</p></a></li>
</ul>
</div>
</div></li>
</ul>
</div>
</div>
<div class="nav-mobile-search">
<form class="nav-mobile-search-form" method="POST" action="https://www.nexusmods.com/thesims4/search/">
<input type="hidden" name="currentgame" value="641">
<div class="nav-mobile-search-form-input-wrapper">
<input type="text" placeholder="Search The Sims 4" name="gsearch" autocomplete="off">
<div>
<button class="nav-mobile-search-button">
<i class="material-icons">search</i>
</button>
</div>
</div>
<div class="nav-scrollbar nav-mobile-search-categories-wrapper">
<input id="searchtype" type="hidden" name="gsearchtype" value="mods">
<div class="nav-mobile-search-categories" role="radiogroup">
<button type="button" class="nav-mobile-search-category" role="radio" aria-checked="true" data-category-value="mods">
<i class="material-icons">check</i>
<i class="user-profile-menu-icon-mods"></i>
<span class="typography-body-md">Mods</span>
</button>
<!-- <button type="button" class="nav-mobile-search-category" role="radio" data-category-value="collections">
<i class="material-icons">check</i>
<i class="user-profile-menu-icon-collections"></i>
<span class="typography-body-md">Collections</span>
</button> -->
<button type="button" class="nav-mobile-search-category" role="radio" data-category-value="games">
<i class="material-icons">check</i>
<i class="user-profile-menu-icon-games"></i>
<span class="typography-body-md">Games</span>
</button>
<button type="button" class="nav-mobile-search-category" role="radio" data-category-value="images">
<i class="material-icons">check</i>
<i class="material-icons">image</i>
<span class="typography-body-md">Images</span>
</button>
<button type="button" class="nav-mobile-search-category" role="radio" data-category-value="videos">
<i class="material-icons">check</i>
<i class="material-icons">video_call</i>
<span class="typography-body-md">Videos</span>
</button>
<button type="button" class="nav-mobile-search-category" role="radio" data-category-value="authors">
<i class="material-icons">check</i>
<i class="material-icons">person</i>
<span class="typography-body-md">Users</span>
</button>
</div>
</div>
</form>
</div>
<div class="nav-mobile-profile">
<div class="nav-mobile-profile-header">
<div class="rj-mobile-menu-spacer"></div>
<div class="rj-mobile-menu-game">
<div class="rj-logo-center">
<a class="headlogo" href="/" alt="Nexus Mods" title="Nexus Mods">
<svg xmlns="http://www.w3.org/2000/svg" style="width:148px; height:35px;" version="1.1" x="0px" y="0px" viewBox="0 0 698.3 162.5">
<g>
<g>
<g>
<path d="M44.4,162.5c-0.6,0-1.3,0-1.9-0.1c-1.5-0.2-2.9-0.5-4.5-1c-2.8-0.9-5.2-2.2-6.9-3.2c-3.8-2.2-7.7-4.9-11.8-8.3 c-1.8-1.5-3.6-3.1-5.3-4.7l-1.4-1.4c-1-0.9-1.9-1.9-2.6-3c-1.3-2-2.4-4.6-2.5-8c-0.1-1.1-0.2-2.2-0.2-3.4c0-2.4,0.1-5,0.5-7.5 c0.7-5.2,2.4-9.8,3.7-13.3c0.1-0.3,0.2-0.6,0.3-0.9c-0.4-0.9-0.7-1.9-1.1-2.9C8.9,99.6,7.7,93.8,7.1,88 c-0.6-6.1-0.4-12.3,0.5-18.4c0.2-1.3,0.4-2.6,0.7-3.8C5.9,62.3,2.9,57.3,1,51.5l0-0.1c-0.4-1.2-1.4-4.2-0.8-8 c0.2-1.4,0.5-2.8,1-4.3c0.9-2.8,2.2-5.1,3.2-6.8c2.2-3.8,4.9-7.6,8.2-11.7c1.5-1.8,3-3.6,4.6-5.2l1.4-1.4 c0.7-0.8,1.5-1.5,2.4-2.1c2-1.5,4.8-2.8,8.6-2.9c1.2-0.1,2.5-0.2,3.8-0.2h0.1c2.5,0,5.2,0.2,7.8,0.6c4,0.6,7.6,1.7,10.8,2.9 c2.1-0.9,4.3-1.7,6.6-2.5C64.1,8,69.9,6.8,75.7,6.4C81.8,5.9,88,6.2,93.9,7.2c1.4,0.2,2.8,0.5,4.2,0.8c4.7-3.2,9-5.5,13.5-6.9 l0.1,0c1-0.4,3.2-1.1,6.1-1.1c0.6,0,1.3,0,1.9,0.1c1.5,0.2,2.9,0.5,4.5,1c2.8,0.9,5.2,2.2,6.9,3.2c3.8,2.2,7.7,4.9,11.8,8.3 c1.8,1.5,3.6,3.1,5.3,4.7l1.4,1.4c0.7,0.6,1.4,1.3,1.9,2.1c1.8,2.3,3.2,5.6,3.3,10.2c0.1,1.6,0.1,3.3,0,5 c-0.2,3.7-0.7,7.2-1.6,10.4c-0.7,2.4-1.5,4.8-2.4,7.2c1.8,4.5,3.1,9.1,4,13.8c1.8,9.9,1.6,20.1-0.6,29.9c1.3,1.9,2.5,3.7,3.5,5.5 c1.7,3,3.1,6.1,4.1,9.3c0.4,1.2,1.3,4.2,0.7,8.2c-0.2,1.4-0.6,2.7-1.1,4.2c-1.8,5.1-4.6,9.3-7.1,12.8c-2.7,3.8-5.8,7.5-9,10.9 l-1.2,1.2c-0.7,0.8-1.5,1.5-2.4,2.2c-2,1.5-4.8,2.7-8.6,2.9c-1.2,0.1-2.5,0.2-3.8,0.2h-0.1c-2.7,0-5.4-0.2-8.2-0.7 c-4.5-0.7-8.5-2.1-12.1-3.5c-1.9,0.8-3.9,1.5-5.8,2.1c-5.6,1.7-11.5,2.8-17.4,3.1c-6.1,0.4-12.3-0.1-18.3-1.2 c-0.7-0.1-1.5-0.3-2.2-0.4c-5.2,3.7-9.8,6.1-14.6,7.7l-0.1,0C49.5,161.7,47.3,162.5,44.4,162.5L44.4,162.5z M24.6,134.1l10.6,3.7 c0.9-2.6,1-5.4,0.4-8c0,0.2,0,0.5,0.1,0.7c0,0.3,0.1,0.7,0.1,1.1c-0.1-2-0.8-4.6-2.6-7c-0.7-0.9-1.5-1.7-2.4-2.4l0.5,0.4l0.9,0.9 c-0.8-0.8-1.7-1.6-2.7-2.3L24.6,134.1L24.6,134.1z M123.7,129.4c-0.8,0.8-1.6,1.6-2.3,2.7l11.9,4.6l0-11.1c0,0,0,0,0,0 c-1.1,0-2.2,0.1-3.2,0.4c0.2,0,0.4,0,0.6,0c0.3,0,0.7-0.1,1.1-0.1c-1.8,0.1-4.2,0.7-6.4,2.1c-1.2,0.8-2.2,1.7-3.1,2.9l0.4-0.5 L123.7,129.4L123.7,129.4z M35.8,126.8c0.5,0.4,1,0.8,1.5,1.3c2.6,2.2,5,3.9,7.2,5.2c1.4-0.7,3-1.7,4.7-3 c0.5-0.3,0.9-0.7,1.4-1.1c0.3-0.2,0.5-0.5,0.8-0.7c0.1-0.1,0.3-0.3,0.4-0.4l6.2-6.3l8.4,2.9c0.3,0.1,0.6,0.2,0.8,0.3 c1.8,0.6,3.6,1,5.4,1.4c3.7,0.7,7.6,1,11.4,0.7c3.6-0.2,7.3-0.9,10.7-1.9c1.7-0.5,3.4-1.1,5-1.9c0.8-0.3,1.6-0.7,2.3-1.1 c2-1,4.3-1.6,6.6-1.6c3.6,0,6.3,1.3,7.6,2c0.4,0.2,0.8,0.4,1.3,0.5c2.5,1,5.4,2.2,8,2.6c0.4,0.1,0.9,0.1,1.3,0.2 c1.5-1.7,2.9-3.5,4.2-5.3c0.8-1.1,1.6-2.2,2.3-3.3c-0.1-0.2-0.2-0.4-0.4-0.7c-0.7-1.2-1.5-2.4-2.5-3.9c-0.3-0.5-0.7-0.9-1.1-1.4 c-0.2-0.2-0.3-0.4-0.5-0.6c-4.1-4-5.5-9.7-3.6-15.1c0.1-0.3,0.2-0.6,0.3-0.8c2.3-7.2,2.7-14.9,1.4-22.3c-0.7-3.5-1.7-7-3.2-10.3 c-0.1-0.3-0.3-0.6-0.4-0.9c-3.3-6.1-1.9-11.3-0.7-13.8c0.5-1,0.9-2.1,1.3-3.1c0.8-1.9,1.4-3.9,2-5.7c0.2-0.9,0.4-1.8,0.5-2.9 c-0.5-0.4-1-0.8-1.5-1.3c-2.7-2.2-5-3.9-7.2-5.2c-1.4,0.8-3,1.8-4.8,3c-0.5,0.4-1,0.8-1.5,1.2c-0.1,0.1-0.3,0.2-0.4,0.4 c-2.7,2.6-6.3,4-10,4c-1.8,0-3.5-0.3-5.2-1c-0.4-0.1-0.8-0.3-1.2-0.4c-1.8-0.5-3.6-1-5.5-1.3c-3.7-0.6-7.6-0.8-11.4-0.5 c-3.6,0.3-7.2,1-10.6,2.1c-1.7,0.5-3.3,1.2-4.9,1.9c-0.8,0.3-1.5,0.7-2.3,1.1L59.5,40c-2.1,1.2-4.6,1.8-7,1.8 c-2.2,0-4.4-0.5-6.5-1.5c-0.5-0.2-0.9-0.4-1.4-0.6c-2.4-1-5.3-2.1-7.8-2.4c-0.4-0.1-0.8-0.1-1.1-0.2c-0.4,0.5-0.8,1-1.2,1.4 c-2.2,2.7-3.9,5-5.2,7.3c0.7,1.4,1.7,2.9,2.9,4.7c0.3,0.5,0.7,1,1.1,1.4c0.2,0.3,0.5,0.5,0.7,0.8l5.8,6.1l-2.5,8 c-0.2,0.5-0.3,1-0.5,1.5c-0.5,1.8-0.9,3.7-1.2,5.6c-0.6,3.8-0.7,7.6-0.3,11.5c0.3,3.6,1.1,7.2,2.3,10.6c0.6,1.7,1.3,3.3,2,4.9 c0.1,0.2,0.2,0.4,0.3,0.6c2.1,4.3,2.1,9.1-0.1,13.4c-0.2,0.4-0.4,0.8-0.5,1.2c-0.4,1-0.9,2-1.3,3c-0.8,2.2-1.8,4.8-2.1,7.1 C35.9,126.3,35.8,126.6,35.8,126.8L35.8,126.8z M129.9,38.8c0.8,0.8,1.7,1.6,2.8,2.4l4.9-12.9L127,24.6c-0.9,2.6-1,5.4-0.4,8 c0-0.1,0-0.2,0-0.3c0-0.3,0-0.8,0-1.3v-0.1c0,1.5,0.5,4,2.1,6.4c0.8,1.1,1.7,2.1,2.8,3l-0.5-0.4L129.9,38.8L129.9,38.8z M29.3,26.3l0,11.1c1.1,0,2.2-0.1,3.2-0.4c-0.2,0-0.4,0-0.6,0c-0.3,0-0.7,0.1-1.1,0.1c1.8-0.1,4.2-0.7,6.4-2.1 c1.2-0.8,2.2-1.7,3.1-2.9l-0.4,0.5l-0.9,1c0.8-0.8,1.6-1.7,2.3-2.7L29.3,26.3L29.3,26.3z"></path>
</g>
</g>
<g>
<g>
<g>
<path class="theme-secondary" d="M56.3,88.4l0.7,28.3l-7-5.7c-7.8,12.7-10.3,25-6.6,34.1l1.3,3.2l-3.2-1.4c-7.3-3.2-13.9-7.7-19.4-13.5 l-0.3-0.3l-0.1-0.5c-0.4-3.5-0.2-7.3,0.7-11.2l0-0.1c1.3-4.9,3.2-9.8,5.6-14.7c1.5-3.1,3.3-6.2,5.3-9.2l-6.1-5L56.3,88.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M105.9,74.1l-0.7-28.3l7,5.7c7.8-12.7,10.3-25,6.6-34.1l-1.3-3.2l3.2,1.4c7.3,3.2,13.9,7.7,19.4,13.5 l0.3,0.3l0.1,0.5c0.4,3.5,0.2,7.3-0.7,11.2l0,0.1c-1.3,4.9-3.2,9.8-5.6,14.7c-1.5,3.1-3.3,6.2-5.3,9.2l6.1,5L105.9,74.1z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M88.5,105.4l28.3-0.7l-5.7,7c12.7,7.8,25,10.3,34.1,6.6l3.2-1.3l-1.4,3.2c-3.2,7.3-7.7,13.9-13.5,19.4 l-0.3,0.3l-0.5,0.1c-3.5,0.4-7.3,0.2-11.2-0.7l-0.1,0c-4.9-1.3-9.8-3.2-14.7-5.6c-3.1-1.5-6.2-3.3-9.2-5.3l-5,6.1L88.5,105.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M74.1,57.6l-28.3,0.7l5.7-7c-12.7-7.8-25-10.3-34.1-6.6L14.3,46l1.4-3.2c3.2-7.3,7.7-13.9,13.5-19.4 l0.3-0.3L30,23c3.5-0.4,7.3-0.2,11.2,0.7l0.1,0c4.9,1.3,9.8,3.2,14.7,5.6c3.1,1.5,6.2,3.3,9.2,5.3l5-6.1L74.1,57.6z"></path>
</g>
</g>
<g>
<g>
<circle class="theme-primary" cx="81.4" cy="80.8" r="60.5"></circle>
</g>
</g>
<g>
<path style="fill:#ffffff" d="M59.3,59.5c-3.5-1.6-6.1-3.2-8.7-5.1c-4-2.8-7.7-5.9-10.8-9.2c-7.6-7.7-11.6-15.6-10.5-22.1L27,25.6 c-5.5,5.8-12.8,16-12.9,20.4c0.1,0.5,0.1,0.5,0.1,0.5c1,3.4,2.6,6.8,4.9,10.1l0,0.1c3,4.8,8.9,12.7,29.9,21.9l-3.7,7l28.3-7.6 L63.5,51.5L59.3,59.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M103.3,103.5c3.5,1.6,6.1,3.2,8.7,5.1c4,2.8,7.7,5.9,10.8,9.2c7.6,7.7,11.6,15.6,10.5,22.1l2.3-2.4 c5.5-5.8,12.8-16,12.9-20.4c-0.1-0.5-0.1-0.5-0.1-0.5c-1-3.4-2.6-6.8-4.9-10.1l0-0.1c-3-4.8-8.9-12.7-29.9-21.9l3.7-7l-28.3,7.6 l10.2,26.2L103.3,103.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M104,59.3c1.6-3.5,3.2-6.1,5.1-8.7c2.8-4,5.9-7.7,9.2-10.8c7.7-7.6,15.6-11.6,22.1-10.5L138,27 c-5.8-5.5-16-12.8-20.4-12.9c-0.5,0.1-0.5,0.1-0.5,0.1c-3.4,1-6.8,2.6-10.1,4.9l-0.1,0c-4.8,3-12.7,8.9-21.9,29.9l-7-3.7 l7.6,28.3L112,63.6L104,59.3z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M58.2,103.2c-1.6,3.5-3.2,6.1-5.1,8.7c-2.8,4-5.9,7.7-9.2,10.8c-7.7,7.6-15.6,11.6-22.1,10.5l2.4,2.3 c5.8,5.5,16,12.8,20.4,12.9c0.5-0.1,0.5-0.1,0.5-0.1c3.4-1,6.8-2.6,10.1-4.9l0.1,0c4.8-3,12.7-8.9,21.9-29.9l7,3.7l-7.6-28.3 L50.3,98.9L58.2,103.2z"></path>
</g>
</g>
</g>
<g class="logo-brand-name">
<path style="fill:#ffffff" d="M198.6,131.3h-6V31.9h8.5l29.8,83.9V31.9h6v99.4h-7.2l-31.1-88.6V131.3z"></path>
<path style="fill:#ffffff" d="M281.1,77.9v6h-27.1v41.5h32.7v6h-39.2V31.9h39.2v6h-32.7v40H281.1z"></path>
<path style="fill:#ffffff" d="M321.8,85l-20.2,46.3h-6.4l22.4-51.5l-20.9-47.8h6.8l18.7,42.7l18.9-42.7h6.2l-20.9,47.8l22.3,51.5h-7 L321.8,85z"></path>
<path style="fill:#ffffff" d="M364.5,107.3c0,10.6,4,18.9,14.9,18.9s14.9-8.2,14.9-18.9V31.9h6.1V107c0,14.2-6,25.1-21.2,25.1 c-15.2,0-21.3-10.9-21.3-25.1V31.9h6.5V107.3z"></path>
<path style="fill:#ffffff" d="M452.8,55.9v2.1h-6.2v-2.6c0-10.5-4-18.5-14.8-18.5c-10.8,0-14.8,7.8-14.8,18.3c0,24.1,35.9,24.6,35.9,52 c0,14.3-6.2,24.8-21.4,24.8s-21.4-10.5-21.4-24.8v-5.1h6.2v5.5c0,10.6,4.1,18.3,15,18.3s15-7.7,15-18.3c0-23.9-35.9-24.3-35.9-52 c0-14.9,6.5-24.6,21.2-24.7C446.7,31.1,452.8,41.6,452.8,55.9z"></path>
<path class="theme-primary" d="M495.8,102.5l10.6-70.6h21.7v99.4h-14.8V60.1l-10.8,71.3h-14.8l-11.6-70.3v70.3h-13.6V31.9h21.7L495.8,102.5z"></path>
<path class="theme-primary" d="M537.6,55.8c0-15.9,8.4-25,23.7-25c15.3,0,23.7,9.1,23.7,25v51.7c0,15.9-8.4,25-23.7,25 c-15.3,0-23.7-9.1-23.7-25V55.8z M553.2,108.5c0,7.1,3.1,9.8,8.1,9.8s8.1-2.7,8.1-9.8V54.8c0-7.1-3.1-9.8-8.1-9.8s-8.1,2.7-8.1,9.8 V108.5z"></path>
<path class="theme-primary" d="M594.4,31.9h24.7c15.6,0,23.3,8.7,23.3,24.6v50.3c0,15.9-7.7,24.6-23.3,24.6h-24.7V31.9z M610,46.1v71h8.8 c5,0,7.9-2.6,7.9-9.7V55.8c0-7.1-3-9.7-7.9-9.7H610z"></path>
<path class="theme-primary" d="M672.6,30.8c15.2,0,23,9.1,23,25v3.1h-14.8v-4.1c0-7.1-2.8-9.8-7.8-9.8c-5,0-7.8,2.7-7.8,9.8 c0,20.4,30.5,24.3,30.5,52.7c0,15.9-8,25-23.3,25c-15.3,0-23.3-9.1-23.3-25v-6.1h14.8v7.1c0,7.1,3.1,9.7,8.1,9.7s8.1-2.6,8.1-9.7 c0-20.4-30.5-24.3-30.5-52.7C649.6,39.9,657.4,30.8,672.6,30.8z"></path>
</g>
</svg> </a>
</div>
</div>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<div class="please-log-in">
<h1>Please log in or register</h1>
<p>To enjoy the benefits of Nexus Mods, please log in or register a new account</p>
<a class="rj-btn rj-btn-outline rj-btn-full" href="https://users.nexusmods.com/auth/sign_in?redirect_url=https%3A%2F%2Fwww.nexusmods.com%2Fthesims4%2Fmods%2F2342">Log in</a>
<a class="rj-btn rj-btn-standard rj-btn-full" href="https://users.nexusmods.com/register">Register</a>
</div>
</div>
</div>
<div class="nav-mobile-notifications">
<div class="nav-mobile-notifications-header">
<div></div>
<button type="button" class="nav-mobile-menu-close">
<i class="material-icons">close</i>
<span class="sr-only">Close navigation menu</span>
</button>
</div>
<div class="nav-mobile-menu-body">
<div class="notifications-content-wrapper">
<div class="notifications-header">
<div class="notifications-header-left">
<i class="nmicon-notification"></i>
<span>Notifications</span>
</div>
<div class="notifications-header-right">
<button class="notifications-clear">Mark all as read (<span class="total-count">0</span>)</button>
<a href="https://next.nexusmods.com/settings/notifications" class="notification-preferences-button">
<img src="/assets/images/icons/notifications/preferences-cog.svg" alt="Notification preferences" title="Notification preferences">
</a>
</div>
</div>
<div id="notifications-body" class="notifications-body">
<div class="notifications-list">
<div class="notifications-error">
<button class="notifications-error__banner js-refresh-notifications custom-button" type="button">
<i class="material-icons notifications-error__icon">error_outline</i>
<div class="notifications-error__text">
<p class="notifications-error__header">Oh dear! Something has gone wrong!</p>
<p class="notifications-error__subheader">Try reloading the notifications.</p>
</div>
<i class="material-icons notifications-error__icon">refresh</i>
</button>
<i class="material-icons notifications-error__placeholder">notifications_off</i>
</div>
<ul>
</ul>
<div class="no-notifications">
<i class="nmicon-notification"></i>
<p>No unread notifications right now</p>
<span>You're up to date</span>
</div>
</div>
<div class="notification-load-more">
<a href="https://next.nexusmods.com/notifications/all" class="rj-btn rj-btn-full rj-btn-outline notifications-load-more custom-button" type="button">View All</a>
</div>
<div class="notification-up-to-date">
<p>You're up to date</p>
</div>
</div>
</div> </div>
</div></header>
<script>
function setDismissedCookie(id) {
Cookies.set(id, 'false', { expires: 90 });
document.querySelector(`#${id}`).style.display = 'none';
}
let gamesList = [];
let gamesListMap = {};
let gamesListPromise = null;
function populateGamesList() {
if (gamesListPromise === null) {
gamesListPromise = fetch('https://data.nexusmods.com/file/nexus-data/games.json').then(function (response) {
if (!response.ok) {
throw new Error();
}
return response.json();
}).catch(function () {
return fetch('/assets/files/games.json').then(function (response) {
if (!response.ok) {
return [];
}
return response.json();
}).catch(function () {
return [];
});
});
}
return gamesListPromise;
}
async function getGamesList() {
if (gamesList.length == 0) {
gamesList = await populateGamesList();
gamesListMap = gamesList.reduce(function (acc, game) {
acc[game.id] = game
return acc
}, {})
}
return gamesList;
}
async function getGamesListMap() {
await getGamesList()
return gamesListMap;
}
</script>
<script type="text/javascript">
function getIcon(notification) {
const genericIcons = {
false: {
friend_request_was_accepted: "/assets/images/icons/notifications/friendship-new.svg",
friend_request_was_sent: "/assets/images/icons/notifications/friendship-new.svg",
image_was_placed_under_review: "/assets/images/icons/notifications/moderation-icon.svg",
mod_was_placed_under_review: "/assets/images/icons/notifications/moderation-icon.svg",
article_was_published: "/assets/images/icons/notifications/nm-logo.svg",
supporter_image_was_placed_under_review: "/assets/images/icons/notifications/moderation-icon.svg",
video_was_placed_under_review: "/assets/images/icons/notifications/moderation-icon.svg",
donation_points_report_was_published: "/assets/images/icons/notifications/donation-points.svg",
donation_points_were_paid: "/assets/images/icons/notifications/donation-points.svg",
collection_was_listed: "/assets/images/icons/notifications/moderation-icon.svg",
collection_moderation_fix_was_rejected: "/assets/images/icons/notifications/moderation-icon.svg",
mod_author_reward_premium_was_given: "/assets/images/icons/notifications/party-popper.svg",
mod_author_reward_lifetime_premium_was_given: "/assets/images/icons/notifications/party-popper.svg",
},
true: { // moderated_by_admin
mod_image_was_deleted: "/assets/images/icons/notifications/moderation-icon.svg",
mod_video_was_deleted: "/assets/images/icons/notifications/moderation-icon.svg",
mod_file_was_deleted: "/assets/images/icons/notifications/moderation-icon.svg",
mod_file_was_archived: "/assets/images/icons/notifications/moderation-icon.svg",
mod_was_hidden: "/assets/images/icons/notifications/moderation-icon.svg",
mod_article_was_deleted: "/assets/images/icons/notifications/moderation-icon.svg",
mod_readme_was_removed: "/assets/images/icons/notifications/moderation-icon.svg",
}
};
const { type, moderated_by_admin = false } = notification;
let iconPath;
let iconClass;
if (Object.keys(genericIcons[moderated_by_admin]).includes(type)) {
iconPath = genericIcons[moderated_by_admin][type];
iconClass = 'notification-category-generic-icon';
}
if (notification.imageUrl) {
iconPath = notification.imageUrl;
iconClass = 'notification-category-specific-icon';
}
if (!iconPath) {
iconPath = "/assets/images/icons/notifications/nm-logo.svg";
iconClass = 'notification-category-generic-icon';
}
return `<img class='${iconClass}' src='${iconPath}' />`;
}
function renderNotificationContent(notification) {
const renderFunctions = [
window.renderSystemNotificationContent,
window.renderContentNotificationContent,
window.renderUserInteractionNotificationContent,
window.renderSiteNotificationContent,
];
for (const renderFunction of renderFunctions) {
const renderedNotification = renderFunction({ group: notification });
if (typeof renderedNotification != "undefined") {
return renderedNotification.outerHTML;
}
}
}
function getNotificationTileFromContext(notification) {
const notificationContent = renderNotificationContent(notification);
if (typeof notificationContent == "undefined") {
return;
}
const { isRead, id, updatedAt, linkUrl, notifications = [] } = notification;
const game_name = notifications.reduce((acc, curr) => {
const { context: { game_name= '' } } = curr;
if (game_name != '' && (acc == '' || game_name == acc)) {
return game_name;
}
return '';
}, '');
return `
<li class='notification-wrapper ${isRead ? 'notification-read' : 'notification-unread'}' data-notification-id='${id}'>
<div>
<div class='notification' data-notification-id='${id}'>
<a href='${linkUrl}' class='notification-link' data-notification-id='${id}'>
<div class='notification-category-icon-wrapper'>${getIcon(notification)}</div>
<div class='notification-content'>
${notificationContent}
<div class='notification-date'>
<span>${timeAgo(updatedAt)} ago</span>
${game_name != '' ? `<span>• ${game_name}</span>` : ''}
</div>
</div>
</a>
<div class='notification-menu-wrapper'>
<button id='notification-${id}-menu-button' aria-controls='notification-${id}-menu' class='notification-menu-button custom-button expanding-hover' title='Options'>
<img src='/assets/images/icons/notifications/menu-icon.svg' />
</button>
</div>
</div>
<div id='notification-${id}-menu' class='notification-menu' data-notification-id='${id}'>
<div id='notification-${id}-mark-as-read' class='notification-menu-row notification-mark-as-read' data-notification-id='${id}'>
<div class='notification-menu-icon-wrapper'>
<img class='notification-menu-icon' src='/assets/images/icons/notifications/tick.svg' />
</div>
<button class='notification-menu-text custom-button'> Mark as read </button>
</div>
<div id='notification-${id}-mark-as-unread' class='notification-menu-row notification-mark-as-unread' data-notification-id='${id}'>
<div class='notification-menu-icon-wrapper'>
<img class='notification-menu-icon' src='/assets/images/icons/notifications/tick.svg' />
</div>
<button class='notification-menu-text custom-button'> Mark as unread </button>
</div>
<div id='notification-${id}-remove' class='notification-menu-row notification-remove'>
<div class='notification-menu-icon-wrapper'>
<img class='notification-menu-icon' src='/assets/images/icons/notifications/bin-icon.svg' />
</div>
<button class='notification-menu-text custom-button'> Delete notification </button>
</div>
</div>
</div>
</li>
`;
}
</script>
<!-- Styles for all notification cards can go here -->
<style>
.notification {
display: flex;
font-size: 14px;
color: white;
width: 100%;
justify-content: space-between;
}
.notification-link {
width: 80%;
}
.notification-category-icon-wrapper {
width: 15%;
}
.notification-category-specific-icon {
border-radius: 20px;
object-fit: cover;
object-position: center;
}
.notification-category-generic-icon,
.notification-category-specific-icon {
width: 30px;
height: 30px;
}
.notification-content {
width: 85%;
}
.notifications-list ul li .notification-bold, .notifications-list ul li .text-primary, .notifications-list ul li .text-primary-moderate {
display: inline;
font-weight: 600;
color: var(--rj-orange-font);
}
.notifications-list ul li .notification-content > div:first-child {
min-height: 40px;
}
.notification-row {
margin-bottom: 10px;
}
.notification-date {
font-size: 12px;
color: rgba(255, 255, 255, 0.6);
}
.notification-icon {
border-radius: 21px;
height: 42px;
width: 42px;
background-repeat: no-repeat;
background-size: 42px 42px;
margin-right: 10px;
}
.notification-indicator-wrapper {
height: 100%;
width: 12%;
}
.notification-indicator-box {
visibility: hidden;
width: 24px;
height: 24px;
margin: auto;
display: flex;
justify-content: center;
align-items: center;
}
.expanding-hover {
position: relative;
}
.expanding-hover::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
height: 0;
width: 0;
border-radius: 100%;
background-color: var(--rj-white-30);
transition-property: height, width, top, left;
transition-duration: 0.25s;
transition-timing-function: ease-in-out;
}
.expanding-hover:hover::before {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
.notification-wrapper.notification-unread .notification-indicator-box {
visibility: visible;
}
.notification-indicator {
border-radius: 4px;
width: 8px;
height: 8px;
margin: auto;
background: var(--rj-orange-font);
padding: 0;
border: 0;
}
.icons-row {
display: flex
}
.notification-menu-wrapper {
width: 8%;
display: flex;
height: 24px;
justify-content: center;
}
.notification-menu-button {
width: 24px;
background: none;
border: 0;
padding: 0;
}
.notification-menu-hidden {
display: hidden;
}
.notification-menu {
background-color: var(--rj-nexusblack-high-contrast);
display: none;
font-family: Montserrat;
text-transform: uppercase;
font-weight: 400;
font-size: 14px;
line-height: 18px;
z-index: 1;
opacity: 1;
border-radius: 4px;
border: 1px solid #3E413F;
}
.notification-menu-row {
display: flex;
height: 48px;
align-items: center;
box-sizing: border-box;
padding: 12px 10px 12px 16px;
gap: 10px;
}
.notification-menu-row.notification-remove {
margin-top: 16px;
position: relative;
}
.notification-menu-row.notification-remove:before {
content: "";
background: #3C3F44;
height: 1px;
padding: 0;
position: absolute;
top: -8px;
left: 7px;
right: 7px;
}
.notification-menu-row:hover {
background-color: var(--rj-white-05);
}
.notification-mark-as-read,
.notification-mark-as-unread {
display: none;
}
.notification-wrapper.notification-unread .notification-mark-as-read {
display: flex;
}
.notification-wrapper.notification-read .notification-mark-as-unread {
display: flex;
}
.notification-menu-icon-wrapper {
padding: 0;
margin: 0;
width: 24px;
}
.notification-menu-icon {
padding: 0;
margin: 0;
width: 24px;
}
.notification-menu-text {
background: none;
border: 0;
text-transform: uppercase;
padding: 0;
margin: 0;
letter-spacing: 1.4px;
white-space: nowrap;
}
.notification-read .notification {
opacity: 0.5;
}
@media (min-width: 1024px) {
.notification-category-generic-icon,
.notification-category-specific-icon {
width: 35px;
height: 35px;
}
.notification-wrapper:hover .notification-menu-wrapper,
.notification-wrapper:focus-within .notification-menu-wrapper {
visibility: visible;
}
.notification-menu-wrapper {
visibility: hidden;
}
}
.notification-menu {
position: absolute;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
top: 47px;
right: 20px;
}
</style><div class="wrapper" id="mainContent"><div id="nn_skinl"></div><div id="nn_skinr"></div>
<div class="clearfix" style="text-align: center;background: #2d2d2d;">
<div class="ads">
<script>
$(document).ready(function() {
if(window.innerWidth < 1012) {
$('.demo-billboard').remove()
}
if(window.innerWidth >= 1012 && window.innerWidth < 1460) {
$('.demo-mrec').remove()
}
});
</script>
<div class="ad demo-mrec ad-unit ad-unit-TOP">
<div id="nn_player"></div>
</div>
</div>
<script>
if ( areAdsBlocked() === true )
{
$('.ads').remove();
document.write('<div class="x3b6f6e466e"> <a class="x3b6f6e466e-link" href="https://users.nexusmods.com/account/billing/premium"> <img class="x3b6f6e466e-billboard" src="https://www.nexusmods.com/assets/images/premiumbanner/billboard.png" alt="Get your mods and collections faster. No ads. No waiting. Go premium now."> <img class="x3b6f6e466e-mpu" src="https://www.nexusmods.com/assets/images/premiumbanner/mpu.png" alt="Get your mods and collections faster. No ads. No waiting. Go premium now."> </a> </div> <style> .x3b6f6e466e { height: 260px; padding: 5px 10px; width: 100%; display: flex; justify-content: center; } .x3b6f6e466e-billboard { display: none; } .x3b6f6e466e-mpu { height: 250px; width: 300px; } @media (min-width: 1024px) { .x3b6f6e466e { } .x3b6f6e466e-mpu { display: none; } .x3b6f6e466e-billboard { display: block; height: 250px; width: 970px; } } </style>');
$('body').on('click', '.x3b6f6e466e-link', function () {
window.nexusDataLayer = window.nexusDataLayer || [];
window.nexusDataLayer.push({
event: 'premium_banner_click',
});
});
}
</script>
</div>
<script src="https://code.highcharts.com/stock/js/highstock.js"></script>
<script src="../../../assets/javascripts/highcharts.flag.grouping.js"></script>
<script>
$(function () {
fillFromModStaticStats('.modpage');
});
</script>
<input type="hidden" id="page-link" name="page-link" value="https://www.nexusmods.com/thesims4/mods/2342">
<section id="section" class="modpage" data-game-id="641" data-mod-id="2342">
<div class="wrap clearfix">
<div id="featured">
<div id="feature">
<div class="img-wrapper header-img"> <img src="https://staticdelivery.nexusmods.com/mods/641/images/headers/2342_1710606029.jpg" class=""> </div> <div class="gradient"></div>
<div id="pagetitle" class="clearfix">
<ul id="breadcrumb" class="clearfix mod-crumb">
<li>
<a href="https://www.nexusmods.com/">
All games </a>
</li>
<li>
<a href="https://www.nexusmods.com/thesims4">
The Sims 4 </a>
</li>
<li>
<a href="https://www.nexusmods.com/thesims4/mods/">
Mods </a>
</li>
<li>
<a href="https://www.nexusmods.com/thesims4/mods/categories/4/">
Gameplay </a>
</li>
<li>Get to Work - Aliens Reloaded</li>
</ul> <h1>Get to Work - Aliens Reloaded</h1>
<ul class="stats clearfix">
<li class="stat-endorsements">
<svg title="" class="icon-stat icon-stat-endorsements"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-stat-endorsements"></use></svg> <div class="statitem">
<div class="titlestat">Endorsements</div>
<div class="stat"><a title="See who endorsed this mod" class="popup-btn-ajax inline-flex" href="/Core/Libs/Common/Widgets/ModEndorsersPopUp?gameId=641&modId=2342" data-effect="mfp-zoom-in">48</a></div>
</div>
</li>
<li class="stat-uniquedls">
<svg title="" class="icon-stat icon-stat-uniquedl"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-stat-uniquedl"></use></svg> <div class="statitem">
<div class="titlestat">Unique DLs</div>
<div class="stat" data-mod-id="2342">3,249</div>
</div>
</li>
<li class="stat-totaldls">
<svg title="" class="icon-stat icon-stat-totaldl"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-stat-totaldl"></use></svg> <div class="statitem">
<div class="titlestat">Total DLs</div>
<div class="stat" data-mod-id="2342">5,243</div>
</div>
</li>
<li class="stat-totalviews">
<svg title="" class="icon-stat icon-stat-totalviews"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-stat-totalviews"></use></svg> <div class="statitem">
<div class="titlestat">Total views</div>
<div class="stat" data-mod-id="2342">33,711</div>
</div>
</li>
<li class="stat-version">
<svg title="" class="icon-stat icon-stat-version"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-stat-version"></use></svg> <div class="statitem">
<div class="titlestat">Version</div>
<div class="stat">v3.1</div>
</div>
</li>
</ul>
<ul class="modactions clearfix">
<li class="dllabel">
Download:
</li>
<li id="action-manual">
<a class="btn inline-flex popup-btn-ajax" href="/Core/Libs/Common/Widgets/ModRequirementsPopUp?id=5542&game_id=641" data-tracking="["Mod Page","Download","Manual"]" tabindex="0">
<svg title="" class="icon icon-manual"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-manual"></use></svg> <span class="flex-label">Manual</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="wrap flex">
<div class="col-1-1 info-details">
<div id="sidebargallery" class="clearfix modimages">
<div class="btnfullscreen btnoverlay inline-flex">
<svg title="" class="icon-fullscreen"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-fullscreen"></use></svg> </div>
<div class="btnprev btnoverlay inline-flex">
<svg title="" class="icon-arrow"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-arrow"></use></svg> </div>
<div class="btnnext btnoverlay inline-flex">
<svg title="" class="icon-arrow"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-arrow"></use></svg> </div>
<div class="counter">
<span class="countvalue noselect">7 items</span>
</div>
<ul class="thumbgallery gallery clearfix" style="width: 1100px; height: 109px; transform: translate3d(0px, 0px, 0px);">
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1729980316-308911225.png" data-sub-html="" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1729980316-308911225.png" id="top-thumb-16524" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1729980316-308911225.png" title="" alt="" style="max-height: 79px;">
</a>
</figure>
</li>
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1726065702-928012759.png" data-sub-html="New Gameplay Foundation" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1726065702-928012759.png" id="top-thumb-16203" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1726065702-928012759.png" title="New Gameplay Foundation" alt="New Gameplay Foundation" style="max-height: 79px;">
</a>
</figure>
</li>
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1718421043-1925001753.png" data-sub-html="Alien Lore Skill and Hidden Digital World" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1718421043-1925001753.png" id="top-thumb-15299" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1718421043-1925001753.png" title="Alien Lore Skill and Hidden Digital World" alt="Alien Lore Skill and Hidden Digital World" style="max-height: 79px;">
</a>
</figure>
</li>
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1729980372-1033857478.png" data-sub-html="New Abilities and Consequences" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1729980372-1033857478.png" id="top-thumb-16525" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1729980372-1033857478.png" title="New Abilities and Consequences" alt="New Abilities and Consequences" style="max-height: 79px;">
</a>
</figure>
</li>
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1731977242-856929233.png" data-sub-html="New Brain Power Motive" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1731977242-856929233.png" id="top-thumb-16844" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1731977242-856929233.png" title="New Brain Power Motive" alt="New Brain Power Motive" style="max-height: 79px;">
</a>
</figure>
</li>
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1715381996-1779950187.png" data-sub-html="Alien Randomizer - Aliens Randomize With Hair and Eyebrows" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1715381996-1779950187.png" id="top-thumb-15127" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1715381996-1779950187.png" title="Alien Randomizer - Aliens Randomize With Hair and Eyebrows" alt="Alien Randomizer - Aliens Randomize With Hair and Eyebrows" style="max-height: 79px;">
</a>
</figure>
</li>
<li class="thumb " data-src="https://staticdelivery.nexusmods.com/mods/641/images/2342/2342-1715382009-256525880.png" data-sub-html="Occult Hair Colors for Children, Toddlers, and Infants" data-exthumbimage="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1715382009-256525880.png" id="top-thumb-15128" style="width: 140px; height: 79px;">
<figure style="height: 79px;">
<a href="#">
<img src="https://staticdelivery.nexusmods.com/mods/641/images/thumbnails/2342/2342-1715382009-256525880.png" title="Occult Hair Colors for Children, Toddlers, and Infants" alt="Occult Hair Colors for Children, Toddlers, and Infants" style="max-height: 79px;">
</a>
</figure>
</li>
</ul>
</div>
<div id="fileinfo" class="sideitems clearfix">
<h2>File information</h2>
<div class="sideitem timestamp">
<h3>Last updated</h3>
<time datetime="2024-11-19 00:40">
<span class="date">19 November 2024</span>
<span class="time">12:40AM</span>
</time>
</div>
<div class="sideitem timestamp">
<h3>Original upload</h3>
<time datetime="2024-03-16 17:44">
<span class="date">16 March 2024</span>
<span class="time">5:44PM</span>
</time>
</div>
<div class="sideitem">
<h3>Created by</h3>
onemorekayaker </div>
<div class="sideitem">
<h3>Uploaded by</h3>
<a href="https://www.nexusmods.com/thesims4/users/66957546">onemorekayaker</a>
</div>
<div class="sideitem">
<h3>Virus scan</h3>
<div class="result safe inline-flex" style="height: 25px; position: relative; top: 5px;">
<!-- Icon for file expanders -->
<!-- Icon for mod page header -->
<svg title="" class="icon icon-ticksafe"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-ticksafe"></use></svg> <span class="flex-label">
Safe to use </span>
</div> </div>
</div>
<div class="sideitems side-tags">
<h2>Tags for this mod</h2>
<div class="sideitem clearfix">
<ul class="tags">
<span><li>
<a class="btn inline-flex" href="https://www.nexusmods.com/thesims4/mods/?tags_yes[]=1032" tabindex="0">
<svg title="" class="icon icon-tag"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tag"></use></svg> <span class="flex-label">Gameplay</span>
</a>
</li><li>
<a class="btn inline-flex" href="https://www.nexusmods.com/thesims4/mods/?tags_yes[]=1043" tabindex="0">
<svg title="" class="icon icon-tag"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tag"></use></svg> <span class="flex-label">Fair and balanced</span>
</a>
</li><li>
<a class="btn inline-flex" href="https://www.nexusmods.com/thesims4/mods/?tags_yes[]=1044" tabindex="0">
<svg title="" class="icon icon-tag"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tag"></use></svg> <span class="flex-label">English</span>
</a>
</li><li>
<a class="btn inline-flex" href="https://www.nexusmods.com/thesims4/mods/?tags_yes[]=1715" tabindex="0">
<svg title="" class="icon icon-tag"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tag"></use></svg> <span class="flex-label">Overhaul</span>
</a>
</li><li>
<a class="btn inline-flex" href="https://www.nexusmods.com/thesims4/mods/?tags_yes[]=3028" tabindex="0">
<svg title="" class="icon icon-tag"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tag"></use></svg> <span class="flex-label">Bug Fixes</span>
</a>
</li></span><span class="js-hidable-tags hidden"></span> </ul>
<a class="btn btnsmall popup-btn-ajax" href="/Core/Libs/Common/Widgets/ModTaggingPopUp?mod_id=2342&game_id=641" data-effect="mfp-zoom-in" tabindex="0">
<svg title="" class="icon-plus"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-plus"></use></svg> Tag this mod
</a>
</div>
</div>
</div>
<div class="col-1-1">
<div class="tabs">
<ul class="modtabs">
<li id="mod-page-tab-description">
<a class="selected" href="/thesims4/mods/2342?tab=description" data-target="/Core/Libs/Common/Widgets/ModDescriptionTab?id=2342&game_id=641">
<span class="tab-label">Description</span>
</a>
</li> <li id="mod-page-tab-files">
<a href="/thesims4/mods/2342?tab=files" data-target="/Core/Libs/Common/Widgets/ModFilesTab?id=2342&game_id=641">
<span class="tab-label">Files</span>
<span class="alert">2</span>
</a>
</li> <li id="mod-page-tab-images">
<a href="/thesims4/mods/2342?tab=images" data-target="/Core/Libs/Common/Widgets/ModImagesTab?id=2342&game_id=641&user_is_blocked=">
<span class="tab-label">Images</span>
<span class="alert">7</span>
</a>
</li> <li id="mod-page-tab-videos">
<a href="/thesims4/mods/2342?tab=videos" data-target="/Core/Libs/Common/Widgets/ModVideosTab?id=2342&game_id=641&user_is_blocked=">
<span class="tab-label">Videos</span>
<span class="alert">0</span>
</a>
</li> <li id="mod-page-tab-articles">
<a href="/thesims4/mods/2342?tab=articles" data-target="/Core/Libs/Common/Widgets/ModArticlesTab?id=2342&game_id=641&user_is_blocked=">
<span class="tab-label">Articles</span>
<span class="alert">3</span>
</a>
</li> <li id="mod-page-tab-posts">
<a href="/thesims4/mods/2342?tab=posts" data-target="/Core/Libs/Common/Widgets/CommentContainer?tabbed=1&object_id=2342&game_id=641&object_type=1&thread_id=13856159&skip_opening_post=0&user_is_blocked=&searchable=true">
<span class="tab-label">Posts</span>
<span class="alert">35</span>
</a>
</li> <li id="mod-page-tab-bugs">
<a href="/thesims4/mods/2342?tab=bugs" data-target="/Core/Libs/Common/Widgets/ModBugsTab?id=2342&game_id=641">
<span class="tab-label">Bugs</span>
<span class="alert">0</span>
</a>
</li> <li id="mod-page-tab-actions">
<a href="/thesims4/mods/2342?tab=logs" data-target="/Core/Libs/Common/Widgets/ModActionLogTab?id=2342&game_id=641">
<span class="tab-label">Logs</span>
</a>
</li> <li id="mod-page-tab-stats">
<a href="/thesims4/mods/2342?tab=stats" data-target="/Core/Libs/Common/Widgets/ModStatsTab?id=2342&game_id=641">
<span class="tab-label">Stats</span>
</a>
</li> </ul>
<div class="mobile-tabs">
<div class="navlabel">Current section</div>
<ul class="tabs-clone">
<li>
<a href="#" class="clearfix">
<strong>Viewing:</strong> <span class="tab-view"><span class="tab-label">Description</span></span>
<svg title="" class="icon-arrow"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-arrow"></use></svg> </a>
<ul class="tabnav">
<li id="mod-page-tab-description">
<a class="selected" href="/thesims4/mods/2342?tab=description" data-target="/Core/Libs/Common/Widgets/ModDescriptionTab?id=2342&game_id=641">
<span class="tab-label">Description</span>
</a>
</li> <li id="mod-page-tab-files">
<a href="/thesims4/mods/2342?tab=files" data-target="/Core/Libs/Common/Widgets/ModFilesTab?id=2342&game_id=641">
<span class="tab-label">Files</span>
<span class="alert">2</span>
</a>
</li> <li id="mod-page-tab-images">
<a href="/thesims4/mods/2342?tab=images" data-target="/Core/Libs/Common/Widgets/ModImagesTab?id=2342&game_id=641&user_is_blocked=">
<span class="tab-label">Images</span>
<span class="alert">7</span>
</a>
</li> <li id="mod-page-tab-videos">
<a href="/thesims4/mods/2342?tab=videos" data-target="/Core/Libs/Common/Widgets/ModVideosTab?id=2342&game_id=641&user_is_blocked=">
<span class="tab-label">Videos</span>
<span class="alert">0</span>
</a>
</li> <li id="mod-page-tab-articles">
<a href="/thesims4/mods/2342?tab=articles" data-target="/Core/Libs/Common/Widgets/ModArticlesTab?id=2342&game_id=641&user_is_blocked=">
<span class="tab-label">Articles</span>
<span class="alert">3</span>
</a>
</li> <li id="mod-page-tab-posts">
<a href="/thesims4/mods/2342?tab=posts" data-target="/Core/Libs/Common/Widgets/CommentContainer?tabbed=1&object_id=2342&game_id=641&object_type=1&thread_id=13856159&skip_opening_post=0&user_is_blocked=&searchable=true">
<span class="tab-label">Posts</span>
<span class="alert">35</span>
</a>
</li> <li id="mod-page-tab-bugs">
<a href="/thesims4/mods/2342?tab=bugs" data-target="/Core/Libs/Common/Widgets/ModBugsTab?id=2342&game_id=641">
<span class="tab-label">Bugs</span>
<span class="alert">0</span>
</a>
</li> <li id="mod-page-tab-actions">
<a href="/thesims4/mods/2342?tab=logs" data-target="/Core/Libs/Common/Widgets/ModActionLogTab?id=2342&game_id=641">
<span class="tab-label">Logs</span>
</a>
</li> <li id="mod-page-tab-stats">
<a href="/thesims4/mods/2342?tab=stats" data-target="/Core/Libs/Common/Widgets/ModStatsTab?id=2342&game_id=641">
<span class="tab-label">Stats</span>
</a>
</li> </ul></li>
</ul>
</div>
<div class="tabcontent tabcontent-mod-page" aria-live="assertive" role="status">
<div class="container tab-description" style="display: block;">
<h2 id="description_tab_h2" data-game-id="641" data-mod-id="2342">About this mod</h2>
<p>
This mod introduces expanded gameplay for aliens, alien/human hybrids (aka part-aliens), and the people around them. This includes new socials and interactions, traits, relationship types, alien abilities, a new alien lore skill, a new visible brain power motive, family gameplay, and refined alien abductions and abduction outcomes. </p>
<a class="btn inline-flex button-share" onclick="sharebutton346450032.toggle()" data-tracking="["Mod Page","Share"]" tabindex="0">
<svg title="" class="icon icon-share"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-share"></use></svg> <share-button id="share-button-346450032" onclick="sharebutton346450032.toggle()" class="sharer-0" style="display: initial;">Share<div class="sb-social load sb-top sb-center networks-7"><ul><li class="pinterest enabled" data-network="pinterest"><a onclick="return false"></a></li><li class="twitter enabled" data-network="twitter"><a onclick="return false"></a></li><li class="facebook enabled" data-network="facebook"><a onclick="return false"></a></li><li class="whatsapp disabled" data-network="whatsapp"><a onclick="return false"></a></li><li class="googlePlus enabled" data-network="googlePlus"><a onclick="return false"></a></li><li class="reddit enabled" data-network="reddit"><a onclick="return false"></a></li><li class="linkedin enabled" data-network="linkedin"><a onclick="return false"></a></li><li class="email enabled" data-network="email"><a onclick="return false"></a></li></ul></div></share-button>
</a>
<script>
var shareConfig346450032 =
{
url: 'https://www.nexusmods.com/thesims4/mods/2342',
ui: {buttonText: 'Share'}
};
var sharebutton346450032 = new ShareButton( '#share-button-346450032', shareConfig346450032 );
</script>
<div class="accordionitems">
<dl class="accordion">
<dt class="clearfix " data-tracking="["Mod Page","View Requirements","Expand"]">
Requirements <span class="acc-status">
<svg title="" class="icon icon-arrow"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-arrow"></use></svg> </span>
</dt>
<dd class="clearfix " style="overflow: hidden; display: none;">
<div class="tabbed-block">
<h3>DLC requirements</h3>
<table class="table desc-table">
<thead>
<tr>
<th class="table-require-name header headerSortDown"><span class="table-header">DLC name</span></th>
</tr>
</thead>
<tbody>
<tr>
<td class="table-require-name">Get to Work</td>
</tr></tbody>
</table>
</div>
<div class="tabbed-block">
<h3>Off-site requirements</h3>
<table class="table desc-table">
<thead>
<tr>
<th class="table-require-name header headerSortDown"><span class="table-header">Mod name</span></th>
<th class="table-require-notes"><span class="table-header">Notes</span></th>
</tr>
</thead>
<tbody>
<tr>
<td class="table-require-name">
<a target="_blank" rel="noreferrer" href="https://lot51.cc/core" data-tracking="["Mod Page","View Off-site Mod","https:\/\/lot51.cc\/core"]">
Lot 51 Core Library </a>
</td>
<td class="table-require-notes">Please always use the latest version of Lot 51 Core Library.</td>
</tr></tbody>
</table>
</div>
</dd>
<dt class="clearfix " data-tracking="["Mod Page","View Permissions","Expand"]">
Permissions and credits <span class="acc-status">
<svg title="" class="icon icon-arrow"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-arrow"></use></svg> </span>
</dt>
<dd class="clearfix " style="overflow: hidden; display: none;">
<div class="tabbed-block">
<h3>Credits and distribution permission</h3>
<ul class="permissions">
<li class="inline-flex permission-yes">
<svg title="" class="icon icon-ticksafe"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-ticksafe"></use></svg> <span class="flex-copy">
<span class="permissions-title">Other user's assets</span>
<span class="permissions-desc">All the assets in this file belong to the author, or are from free-to-use modder's resources</span>
</span>
</li>
<li class="inline-flex permission-no">
<svg title="" class="icon icon-tickunsafe"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tickunsafe"></use></svg> <span class="flex-copy">
<span class="permissions-title">Upload permission</span>
<span class="permissions-desc">You are not allowed to upload this file to other sites under any circumstances</span>
</span>
</li>
<li class="inline-flex permission-maybe">
<svg title="" class="icon icon-exclamation"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-exclamation"></use></svg> <span class="flex-copy">
<span class="permissions-title">Modification permission</span>
<span class="permissions-desc">You must get permission from me before you are allowed to modify my files to improve it</span>
</span>
</li>
<li class="inline-flex permission-no">
<svg title="" class="icon icon-tickunsafe"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tickunsafe"></use></svg> <span class="flex-copy">
<span class="permissions-title">Conversion permission</span>
<span class="permissions-desc">You are not allowed to convert this file to work on other games under any circumstances</span>
</span>
</li>
<li class="inline-flex permission-maybe">
<svg title="" class="icon icon-exclamation"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-exclamation"></use></svg> <span class="flex-copy">
<span class="permissions-title">Asset use permission</span>
<span class="permissions-desc">You must get permission from me before you are allowed to use any of the assets in this file</span>
</span>
</li>
<li class="inline-flex permission-no">
<svg title="" class="icon icon-tickunsafe"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tickunsafe"></use></svg> <span class="flex-copy">
<span class="permissions-title">Asset use permission in mods/files that are being sold</span>
<span class="permissions-desc">You are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms</span>
</span>
</li>
<li class="inline-flex permission-no">
<svg title="" class="icon icon-tickunsafe"><use xlink:href="https://www.nexusmods.com/assets/images/icons/icons.svg#icon-tickunsafe"></use></svg> <span class="flex-copy">
<span class="permissions-title">Asset use permission in mods/files that earn donation points</span>
<span class="permissions-desc">You are not allowed to earn Donation Points for your mods if they use my assets</span>
</span>
</li>
</ul>
</div>
<div class="tabbed-block">
<h3>Author notes</h3>
<p>
This author has not provided any additional notes regarding file permissions
</p>
</div>
<div class="tabbed-block">
<h3>File credits</h3>
<p>
This author has not credited anyone else in this file
</p>
</div>
<div class="tabbed-block">
<h3>Donation Points system</h3>
<p>
Please <a href="https://users.nexusmods.com/auth/sign_in?redirect_url=https%3A%2F%2Fwww.nexusmods.com%2Fthesims4%2Fmods%2F2342">log in</a> to find out whether this mod is receiving Donation Points
</p>
</div>
</dd>
</dl>
</div><script>$( function(){Accordion.Load();});</script></div>
<div class="container mod_description_container condensed " style="display: block;">
<div align="center"><em><strong><font size="5">Included Features</font></strong><br></em></div><em><font size="4"><br>Expanded socials and interactions for aliens, part-aliens, and those around them </font></em><ul class="disc"><li> New alien-themed conversation topics that take context, relationships, and past events into account. </li><li>Complain about your alien disguise, talk about your homeworld, share your thoughts on space, gossip about alien things, talk about the Earth, share stories of your space adventures, teach your teen the truth about abductions, and confess your alienness to your friends and family members. </li><li>Ask if a sim is an alien, convince other sims that aliens are real, complain about getting abducted – and share the dramatic story of it, warn sims not to follow the strange lights, and tell them all about that time you set foot on an alien planet.<br></li></ul><em><br></em><em><font size="4">New traits granted through gameplay </font></em><ul class="disc"> <li><font size="4"> </font>Alien/human hybrids now have a visible trait in their traits panel that identifies them as a hybrid, have alien powers, and are recognized as aliens by those who discover them. They won’t be considered aliens in all situations, however. </li><li> Non-alien sims who discover that aliens are real will earn the Knows the Truth trait and enter into an exclusive world with new socials and gameplay effects. </li><li> Other visible and hidden traits will unlock new socials and abilities as you progress through your gameplay.<br></li></ul><em><br></em><font size="4"><em>New relationship types </em></font><em><font size="4"> </font> </em><br><ul class="disc"><li> Keep track of those who’ve discovered your alien sims with a new relationship in their profile: Knows the Truth. This relationship is the other side of the one-sided Known Alien trait. </li><li> Keep track of sims whose memories you’ve meddled with through the Memories Erased and Mind Wiped relationships. Only your sim will see this - the sims whose minds you’ve altered won’t know it was you! </li><li> Build an alliance of those who probably aren’t aliens with the Probably Aren’t Aliens relationship, awarded only to sims in the Know. </li><li> Other hidden relationships will keep track of who did/said what to who, evolving your game over time.<br></li></ul><br><font size="4"><em>New brain power motive</em></font><em> </em><br><ul class="disc"><li> The new visible brain power motive replaces alien and part-alien sims' energy need. It drains over time, is used up by mind powers, and can be recharged through sleep, moonbathing, or alien meditation, as well as other activities like drinking coffee or tea. Toddlers can unlock the brain power motive at level 3 of the thinking skill, and learn alien meditation at thinking level 5, and the motive is freely available for sims age child and older.</li><li>The brain power motive is crosspack compatible. Brain power will be drained by vampire attacks, performing seances, being scared or terrified, human meditation, and other activities that you'd expect to drain brain power. Various pack-specific items and interactions can also restore brainpower.</li><li>Level your sim's logic to slow down their brain power drain, and reduce how much brain power the mind powers use.</li><li>The new motive is hybrid-safe for part-aliens, for all hybrids except for vampires. If you'd like to have the new motive on a part-alien vampire, you'll need to cure their vampiricism first. If you'd like to make a part-alien that already has the visible brain power motive into a vampire, turn on testing cheats and shift-click to remove the motive from them.<br><br></li></ul><em><font size="4">New alien abilities</font></em><ul class="disc"> <li> This mod adds eight new alien abilities, with three immediately available and the rest unlocked through gameplay.<em> </em>It includes new functionality for <em>Analyze Personality</em>, and updates <em>Empathize</em> to include the fear emotion. Alien abilities are now collected in their own Alien pie menu, to make them easier to find. Existing abilities have been tweaked and modernized to take advantage of new in-game capabilities. </li><li> <em>Share Emotions, Probe Preferences</em>, and <em>Mind Wipe</em> are available immediately, doing what you would expect them to do. <em>Share Emotions </em>grants your target sim with a +3 moodlet for the same emotion your alien is feeling, <em>Probe Preferences </em>will tell you the likes/dislikes/fears of your target sim, while <em>Mind Wipe </em>takes inspiration from the Bella Goth mystery in Sims 2 - erasing all of the target sim’s relationships and leaving them with the <em>Missing Memories</em> trait and a serious case of amnesia.</li><li> <em>Memory Erase</em> has been modified so that alien sims will no longer autonomously try to erase their spouse’s or friends’ memories – all increases in the likelihood of this triggering from being playful, the Goofball trait, or liking mischief are gone. Instead, the alien must be very angry and talking to someone they hate. <em>Mind Wipe </em>operates similarly. Note that unlike the vanilla game, neither <em>Erase Memories</em> nor <em>Mind Wipe</em> will automatically cause a divorce – as marriage is a legally binding contract, and telepathy doesn’t include hiring lawyers. </li><li>Other abilities can be unlocked through the new Alien Lore skill and its related secret alien web forum and Sixam Online web store. Level up Alien Lore to access forbidden knowledge, highly illegal on Sixam and only available to proven scholars on Earth. Learn mind control powers such as <em>Compel to Leave</em>, where you can make annoying interrupters go away; <em>Compel Handiness</em>, where you can compel a sim to repair and <em>upgrade</em> object, and <em>Compel Artistry</em>, where you can compel a sim to paint or play music. As with Vampire and Spellcaster powers, these can go wrong, backfiring on your Alien.<br></li></ul><em><font size="4">New Alien Lore Skill and computer forum<br></font></em><ul class="disc"><li> Aliens and part-aliens are able to immediately access the Outlander's Exchange, an exclusive web forum only available to those who know about it. This forum is your portal to Sixam Online, the ecommerce store that has everything the busy alien infiltrator needs. </li><li>Buy Alien Lore books to read and level your Alien Lore skill, receiving different snippets of lore as you progress. Each level of Alien Lore unlocks more of the Outlander's Exchange, opening up new items to buy - including new unique books and skill books, collectible Alien flora and fauna, the infiltrator's store with several unique items, and eventually the<em> private catalogue. </em>This catalogue holds the books that teach the different uses of <em>Compel</em>.</li><li>There are two other abilities hidden in the catalogue. These are <em>Calm Werewolf</em> (available if you also have the Werewolves pack) and <em>Protect/Dispel</em>, which allows your alien to cancel compulsions - even on themselves.</li><li>Non-aliens must learn about the existence of the forums before they can access them. There are several different ways to do this, including asking aliens about alien history and reading books that might have been left out... Non-aliens with high enough Alien Lore can even learn the <em>Protect </em>half of <em>Protect/Dispel</em>, making them less vulnerable to the use of <em>Compulsion </em>- including vampiric compulsion.<br></li></ul><br><font size="4"><em>New family gameplay</em></font><em> </em><br><ul class="disc"><li>Children are able to learn the basic three mind powers (Empathize, Analyze Personality, and Erase Memories) by leveling up their logic skill and participating in unique interactions.</li><li>Parents can teach their children about brain power, helping to increase their toddlers' and children's mental abilities. And, for children, their Alien Lore skill.</li><li>Family gameplay is crosspack-compatible with Parenthood. Children and teens who use their mind powers will gain or lose empathy or conflict resolution. Parents can also discipline their children, either rewarding or punishing them.<br><br></li></ul> <em><font size="4">Smarter autonomy<br></font></em><ul class="disc"><li>Aliens will keep their cover better, only using their friendly mind powers on those who are already in the "Know" - this includes other aliens, part-aliens, and non-Aliens that have learned the truth about them.</li><li>Undisguised bar nights have been banned by the order of the Pollination Technician! Aliens will automatically disguise themselves when in normal human society to avoid breaking cover - including your Aliens. These rules are applied every time they change lots or you load into the game. On Sixam, or during special events, Aliens will continue to load in undisguised.</li><li>If you'd like your aliens to stay in whatever state (disguised or undisguised) you put them in, then please click on them and select "Forego Disguise." However, if you do so, be aware that they may wander around undisguised when you're playing a different household. If you change your mind, you can resume hiding by selecting "Resume Hiding."<br></li></ul><br> <em><font size="4">Refined alien abductions </font></em><ul class="disc"><li> The abduction event will treat aliens, part-aliens, servos, geeks, and scientists appropriately. These sims will never receive the fear of the dark from being abducted. Aliens and servos will also receive their own custom moodlets and buffs after being returned from an abduction. Neither aliens nor servos will ever be impregnated during an abduction event. Because that’s weird. </li><li> You can now permanently prevent a non-alien sim from getting abducted through gameplay. If you choose to restart abductions, with your sim now getting abducted voluntarily, the sim will receive a boost and benefit from each abduction similar to the one granted to aliens and servos. </li><li> Aliens and those abducted voluntarily will always get a gentle landing upon their return. <br></li></ul><br><font size="4"><em>Interactive alien terrarium pets</em><br></font><ul class="disc"><li>Alien terrarium creatures have been updated to include a hunger motive, a relationship bar, and five different unique interactions.</li><li>Hunger will go down over time - keep your pets fed to build relationship with them! They require feeding about once a day, to avoid becoming famished.</li><li>Talk to or view your pet - talking to your pet will make your sim feel better if they're feeling down, and viewing your pet will increase your fun motive.</li><li>Unique alien-specific interaction, with a slight chance of death. Feed your pet your emotions (aka psychic energies), to reset your sim's moodlets and gain a +10 fine buff that'll last two days. This can be very helpful to an Alien Infiltrator in need - however, these creatures have a big appetite, so take care.<br></li></ul><em><font size="4">Optional Cosmetic Module </font></em><ul class="disc"><li>Install the optional cosmetic module <em>Alien Randomizer </em>and your NPC and played aliens will randomize with select base game hair and eyebrows in the following colors: neutral black, white, purple pastel, hot pink, dark blue, turquoise, and green. </li><li>This module includes 65 adult hairs, 43 child hairs, 22 toddler hairs, and 8 infant hairs, as well as all eyebrows. All listed colors are available for children and younger on included hairs and eyebrows.</li><li>An additional module will prevent "bald" hair from randomizing on alien adults or children, forcing all alien sims to randomize with one of the hairs. However, all existing bald sims - including premades such as Vlad - will be flagged as having CC. If you do not want this, you can also try using the MC Dresser module of MC Command Center.<br></li></ul><strong><br></strong><div align="center"><strong><font size="4">The Fine Print</font></strong></div><br>Because this mod introduces new traits and relationship types, it is best experienced in a fresh save file or with a new sim. You can, however, use cheats to assign a number of the gameplay traits, including trait_OccultAlienPart to create an alien/human hybrid, trait_KnowsTheTruth to loop your non-alien sim into the know, and trait_AlienDescendant to mark a sim as a second generation alien. NPC aliens generated in-game after the v2.0 update will have a random level in the Alien Lore skill, as well as some degree of logic and rocket science. NPC aliens generated previously will not. You can use MCCC to cheat their skills if you would like.<br><br><em><u>Compatibility Notes</u></em><br><br>The Aliens Reloaded main mod should be compatible with nearly everything except for other alien mods and, with the terrarium update, anything that edits the alien terrarium creatures.<br><br>For the brainpower motive and trait inheritance to work as intended, you <em>will </em>need the Lot 51 Core Library (a third party utility available from the Lot 51 Core website or from CurseForge). Lot 51 Core Library allows for brain power to work with non-Get to Work coding, including base game files such as sleep that no modder wants to touch with a ten foot pole due to potential conflicts. Please always use the latest version of Lot 51 Core Library.<br><br>The Crosspack file includes changes to several gameplay elements found in other packs, namely Werewolves and Vampires, that are not able to be injected using Lot 51 Core Library. Due to a game update in 2024, you can safely ignore them if you don't have the packs involved. However, if you do have mods that edit the buffs for a rampaging werewolf, or affect the outcomes of the use of vampiric mindpowers, you'll likely experience conflicts. You can safely delete the Crosspack module. Most crosspack functionality is in the main mod and will continue to work fine even after the Crosspack module is deleted.<br><br>Lastly, if you do play with MCCC, the MC Occult module includes several overrides for alien abductions including one that is on by default. Please disable these and set abductions to their base default for this to play as intended. MCCC will override this mod.<br><br>Enjoy!</div>
</div>
</div>
</div>
</div>
</div>
</section>
<script>
$(document).ready(function() {
if(window.innerWidth < 900) {
$('.video-ad').remove()
}
});
</script>
<div class="clearfix" style="text-align: center;background: #2d2d2d;">
<div class="ads">
<script>
$(document).ready(function() {
if(window.innerWidth < 1012) {
$('.demo-billboard').remove()
}
if(window.innerWidth >= 1012 && window.innerWidth < 1460) {
$('.demo-mrec').remove()
}
});
</script>
<div class="ad demo-mrec ad-unit ad-unit-BTF">
<div id="nn_mpu1"></div>
<div id="nn_mobile_mpu1"></div>
</div>
</div>
<script>
if ( areAdsBlocked() === true )
{
$('.ads').remove();
document.write('<div class="x3b6f6e466e"> <a class="x3b6f6e466e-link" href="https://users.nexusmods.com/account/billing/premium"> <img class="x3b6f6e466e-billboard" src="https://www.nexusmods.com/assets/images/premiumbanner/billboard.png" alt="Get your mods and collections faster. No ads. No waiting. Go premium now."> <img class="x3b6f6e466e-mpu" src="https://www.nexusmods.com/assets/images/premiumbanner/mpu.png" alt="Get your mods and collections faster. No ads. No waiting. Go premium now."> </a> </div> <style> .x3b6f6e466e { height: 260px; padding: 5px 10px; width: 100%; display: flex; justify-content: center; } .x3b6f6e466e-billboard { display: none; } .x3b6f6e466e-mpu { height: 250px; width: 300px; } @media (min-width: 1024px) { .x3b6f6e466e { } .x3b6f6e466e-mpu { display: none; } .x3b6f6e466e-billboard { display: block; height: 250px; width: 970px; } } </style>');
$('body').on('click', '.x3b6f6e466e-link', function () {
window.nexusDataLayer = window.nexusDataLayer || [];
window.nexusDataLayer.push({
event: 'premium_banner_click',
});
});
}
</script>
</div>
<div id="rj-back-to-top" title="Back to top"><i class="fa fa-chevron-up"></i></div></div><footer id="rj-footer">
<section id="rj-vortex">
<div class="content rj-grid-12">
<div class="rj-vortex-icon-wrapper col-md-6-12 col-md-pad-2-12 col-lg-4-12 col-lg-pad-3-12">
<img class="rj-vortex-icon icon" alt="Vortex" src="/assets/images/footer/Vortex.svg">
<span class="rj-vortex-name">VORTEX</span>
<div class="rj-vortex-description">The powerful open-source mod manager from Nexus Mods.</div>
</div>
<div class="col-md-2-12 col-md-pad-8-12 col-lg-pad-7-12">
<form action="/about/vortex" class="rj-button-form">
<button class="rj-vortex-button">Learn more</button>
</form>
</div>
</div>
</section>
<section id="rj-sitemap">
<div class="content rj-grid-12">
<div class="rj-sitemap-category col-sm-3-12 col-md-2-12">
<h3>Nexus Mods <i class="rj-chevron fa fa-chevron-down"></i></h3>
<ul>
<li><a href="https://www.nexusmods.com/thesims4/news">News</a></li>
<li><a href="https://www.nexusmods.com/thesims4/about/stats">Statistics</a></li>
<li><a href="https://www.nexusmods.com/about#current-positions">Careers</a></li>
<li><a href="https://www.nexusmods.com/about">About us</a></li>
<li><a href="https://next.nexusmods.com/premium">Premium features</a></li>
</ul>
</div>
<div class="rj-sitemap-category col-sm-pad-3-12 col-sm-3-12 col-md-pad-2-12 col-md-2-12">
<h3>Discover <i class="rj-chevron fa fa-chevron-down"></i></h3>
<ul>
<li><a href="https://www.nexusmods.com/thesims4/games">All games</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods">All mods</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/today">New mods</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/trendingalltime">Popular mods</a></li>
<li><a href="https://www.nexusmods.com/thesims4/mods/trending">Trending mods</a></li>
<li><a href="https://next.nexusmods.com">All collections</a></li>
<li><a href="https://www.nexusmods.com/thesims4/images">All images</a></li>
</ul>
</div>
<div class="rj-sitemap-category col-sm-pad-6-12 col-sm-3-12 col-md-pad-4-12 col-md-2-12">
<h3>Support <i class="rj-chevron fa fa-chevron-down"></i></h3>
<ul>
<li><a target="_blank" rel="noreferrer" href="https://help.nexusmods.com">Help</a></li>
<li><a target="_blank" rel="noreferrer" href="https://wiki.nexusmods.com/index.php/Main_Page">Wiki</a></li>
<li><a target="_blank" rel="noreferrer" href="https://app.swaggerhub.com/apis-docs/NexusMods/nexus-mods_public_api_params_in_form_data/1.0#/">API reference</a></li>
<li><a target="_blank" rel="noreferrer" href="https://feedback.nexusmods.com">Give feedback</a></li>
<li><a target="_blank" rel="noreferrer" href="https://forums.nexusmods.com/index.php?/forum/8394-website-bug-report/">Report a bug</a></li>
<li><a target="_blank" rel="noreferrer" href="https://help.nexusmods.com/article/33-what-can-i-do-if-my-account-has-been-banned">Unban requests</a></li>
<li><a target="_blank" rel="noreferrer" href="https://www.cognitoforms.com/NexusMods/NexusModsDMCAForm">DMCA</a></li>
<li><a class="nn-cmp-show" href="#">Manage cookie settings</a></li>
</ul>
</div>
<div class="rj-sitemap-category rj-sitemap-category-no-border col-sm-pad-9-12 col-sm-3-12 col-md-pad-6-12 col-md-2-12 col-xl-3-12">
<h3>Community <i class="rj-chevron fa fa-chevron-down"></i></h3>
<ul>
<li><a target="_blank" rel="noreferrer" href="https://forums.nexusmods.com">Forums</a></li>
<li><a target="_blank" rel="noreferrer" href="https://discord.gg/nexusmods">Discord</a></li>
<li><a target="_blank" rel="noreferrer" href="https://www.patreon.com/nexusmods">Support authors</a></li>
<li><a target="_blank" rel="noreferrer" href="https://help.nexusmods.com/article/125-contact-us">Contact us</a></li>
</ul>
</div>
<div class="col-sm-pad-3-12 col-sm-6-12 col-md-pad-8-12 col-md-4-12 col-xl-pad-9-12 col-xl-3-12">
<div class="rj-supporter-wrapper">
<h3>Support Nexus Mods</h3>
<ul id="footbtn" class="clearfix">
<li><a href="https://users.nexusmods.com/account/billing/premium" class="rj-standard-button">Go premium</a></li>
</ul>
</div>
<div class="rj-network-stats">
<h3>Network Stats</h3>
<ul id="networkstats" class="rj-grid-12 rj-grid-small-gap">
<li class="col-md-6-12 col-lg-4-12">
<h4>Members</h4>
<div class="stat total_members">56,407,381</div>
</li>
<li class="col-md-pad-6-12 col-md-6-12 col-lg-pad-4-12 col-lg-4-12">
<h4>Mods</h4>
<div class="stat total_mods">636,716</div>
</li>
<li class="row-md-2 col-md-6-12 row-lg-1 col-lg-pad-8-12 col-lg-4-12">
<h4>Kudos given</h4>
<div class="stat total_kudos">2,901,502</div>
</li>
<li class="row-md-3 col-md-6-12 col-lg-12-12">
<h4>Page served in</h4>
<div class="stat served_time" title="Build: 1522408735">0.085s [nexusmods-74694f5dcc-pjt4v]</div>
</li>
</ul>
<script>
// Get site stats
fetch('https://data.nexusmods.com/file/nexus-data/site-stats.json', {
mode: 'cors',
})
.then(function (data) {
return data.json();
})
.then(function (data) {
$('#networkstats .total_mods').text(longFormat(data.mods_count));
$('#networkstats .total_members').text(longFormat(data.users_count));
$('#networkstats .total_kudos').text(longFormat(data.kudos_count));
});
</script>
</div>
</div>
</div>
</section>
<section id="rj-logo-social">
<div class="content rj-grid-12">
<div class="rj-logo-wrapper col-xs-1-12 col-sm-6-12">
<a class="headlogo" href="https://www.nexusmods.com/thesims4" title="Nexus Mods">
<svg xmlns="http://www.w3.org/2000/svg" style="width:148px; height:35px;" version="1.1" x="0px" y="0px" viewBox="0 0 698.3 162.5">
<g>
<g>
<g>
<path d="M44.4,162.5c-0.6,0-1.3,0-1.9-0.1c-1.5-0.2-2.9-0.5-4.5-1c-2.8-0.9-5.2-2.2-6.9-3.2c-3.8-2.2-7.7-4.9-11.8-8.3 c-1.8-1.5-3.6-3.1-5.3-4.7l-1.4-1.4c-1-0.9-1.9-1.9-2.6-3c-1.3-2-2.4-4.6-2.5-8c-0.1-1.1-0.2-2.2-0.2-3.4c0-2.4,0.1-5,0.5-7.5 c0.7-5.2,2.4-9.8,3.7-13.3c0.1-0.3,0.2-0.6,0.3-0.9c-0.4-0.9-0.7-1.9-1.1-2.9C8.9,99.6,7.7,93.8,7.1,88 c-0.6-6.1-0.4-12.3,0.5-18.4c0.2-1.3,0.4-2.6,0.7-3.8C5.9,62.3,2.9,57.3,1,51.5l0-0.1c-0.4-1.2-1.4-4.2-0.8-8 c0.2-1.4,0.5-2.8,1-4.3c0.9-2.8,2.2-5.1,3.2-6.8c2.2-3.8,4.9-7.6,8.2-11.7c1.5-1.8,3-3.6,4.6-5.2l1.4-1.4 c0.7-0.8,1.5-1.5,2.4-2.1c2-1.5,4.8-2.8,8.6-2.9c1.2-0.1,2.5-0.2,3.8-0.2h0.1c2.5,0,5.2,0.2,7.8,0.6c4,0.6,7.6,1.7,10.8,2.9 c2.1-0.9,4.3-1.7,6.6-2.5C64.1,8,69.9,6.8,75.7,6.4C81.8,5.9,88,6.2,93.9,7.2c1.4,0.2,2.8,0.5,4.2,0.8c4.7-3.2,9-5.5,13.5-6.9 l0.1,0c1-0.4,3.2-1.1,6.1-1.1c0.6,0,1.3,0,1.9,0.1c1.5,0.2,2.9,0.5,4.5,1c2.8,0.9,5.2,2.2,6.9,3.2c3.8,2.2,7.7,4.9,11.8,8.3 c1.8,1.5,3.6,3.1,5.3,4.7l1.4,1.4c0.7,0.6,1.4,1.3,1.9,2.1c1.8,2.3,3.2,5.6,3.3,10.2c0.1,1.6,0.1,3.3,0,5 c-0.2,3.7-0.7,7.2-1.6,10.4c-0.7,2.4-1.5,4.8-2.4,7.2c1.8,4.5,3.1,9.1,4,13.8c1.8,9.9,1.6,20.1-0.6,29.9c1.3,1.9,2.5,3.7,3.5,5.5 c1.7,3,3.1,6.1,4.1,9.3c0.4,1.2,1.3,4.2,0.7,8.2c-0.2,1.4-0.6,2.7-1.1,4.2c-1.8,5.1-4.6,9.3-7.1,12.8c-2.7,3.8-5.8,7.5-9,10.9 l-1.2,1.2c-0.7,0.8-1.5,1.5-2.4,2.2c-2,1.5-4.8,2.7-8.6,2.9c-1.2,0.1-2.5,0.2-3.8,0.2h-0.1c-2.7,0-5.4-0.2-8.2-0.7 c-4.5-0.7-8.5-2.1-12.1-3.5c-1.9,0.8-3.9,1.5-5.8,2.1c-5.6,1.7-11.5,2.8-17.4,3.1c-6.1,0.4-12.3-0.1-18.3-1.2 c-0.7-0.1-1.5-0.3-2.2-0.4c-5.2,3.7-9.8,6.1-14.6,7.7l-0.1,0C49.5,161.7,47.3,162.5,44.4,162.5L44.4,162.5z M24.6,134.1l10.6,3.7 c0.9-2.6,1-5.4,0.4-8c0,0.2,0,0.5,0.1,0.7c0,0.3,0.1,0.7,0.1,1.1c-0.1-2-0.8-4.6-2.6-7c-0.7-0.9-1.5-1.7-2.4-2.4l0.5,0.4l0.9,0.9 c-0.8-0.8-1.7-1.6-2.7-2.3L24.6,134.1L24.6,134.1z M123.7,129.4c-0.8,0.8-1.6,1.6-2.3,2.7l11.9,4.6l0-11.1c0,0,0,0,0,0 c-1.1,0-2.2,0.1-3.2,0.4c0.2,0,0.4,0,0.6,0c0.3,0,0.7-0.1,1.1-0.1c-1.8,0.1-4.2,0.7-6.4,2.1c-1.2,0.8-2.2,1.7-3.1,2.9l0.4-0.5 L123.7,129.4L123.7,129.4z M35.8,126.8c0.5,0.4,1,0.8,1.5,1.3c2.6,2.2,5,3.9,7.2,5.2c1.4-0.7,3-1.7,4.7-3 c0.5-0.3,0.9-0.7,1.4-1.1c0.3-0.2,0.5-0.5,0.8-0.7c0.1-0.1,0.3-0.3,0.4-0.4l6.2-6.3l8.4,2.9c0.3,0.1,0.6,0.2,0.8,0.3 c1.8,0.6,3.6,1,5.4,1.4c3.7,0.7,7.6,1,11.4,0.7c3.6-0.2,7.3-0.9,10.7-1.9c1.7-0.5,3.4-1.1,5-1.9c0.8-0.3,1.6-0.7,2.3-1.1 c2-1,4.3-1.6,6.6-1.6c3.6,0,6.3,1.3,7.6,2c0.4,0.2,0.8,0.4,1.3,0.5c2.5,1,5.4,2.2,8,2.6c0.4,0.1,0.9,0.1,1.3,0.2 c1.5-1.7,2.9-3.5,4.2-5.3c0.8-1.1,1.6-2.2,2.3-3.3c-0.1-0.2-0.2-0.4-0.4-0.7c-0.7-1.2-1.5-2.4-2.5-3.9c-0.3-0.5-0.7-0.9-1.1-1.4 c-0.2-0.2-0.3-0.4-0.5-0.6c-4.1-4-5.5-9.7-3.6-15.1c0.1-0.3,0.2-0.6,0.3-0.8c2.3-7.2,2.7-14.9,1.4-22.3c-0.7-3.5-1.7-7-3.2-10.3 c-0.1-0.3-0.3-0.6-0.4-0.9c-3.3-6.1-1.9-11.3-0.7-13.8c0.5-1,0.9-2.1,1.3-3.1c0.8-1.9,1.4-3.9,2-5.7c0.2-0.9,0.4-1.8,0.5-2.9 c-0.5-0.4-1-0.8-1.5-1.3c-2.7-2.2-5-3.9-7.2-5.2c-1.4,0.8-3,1.8-4.8,3c-0.5,0.4-1,0.8-1.5,1.2c-0.1,0.1-0.3,0.2-0.4,0.4 c-2.7,2.6-6.3,4-10,4c-1.8,0-3.5-0.3-5.2-1c-0.4-0.1-0.8-0.3-1.2-0.4c-1.8-0.5-3.6-1-5.5-1.3c-3.7-0.6-7.6-0.8-11.4-0.5 c-3.6,0.3-7.2,1-10.6,2.1c-1.7,0.5-3.3,1.2-4.9,1.9c-0.8,0.3-1.5,0.7-2.3,1.1L59.5,40c-2.1,1.2-4.6,1.8-7,1.8 c-2.2,0-4.4-0.5-6.5-1.5c-0.5-0.2-0.9-0.4-1.4-0.6c-2.4-1-5.3-2.1-7.8-2.4c-0.4-0.1-0.8-0.1-1.1-0.2c-0.4,0.5-0.8,1-1.2,1.4 c-2.2,2.7-3.9,5-5.2,7.3c0.7,1.4,1.7,2.9,2.9,4.7c0.3,0.5,0.7,1,1.1,1.4c0.2,0.3,0.5,0.5,0.7,0.8l5.8,6.1l-2.5,8 c-0.2,0.5-0.3,1-0.5,1.5c-0.5,1.8-0.9,3.7-1.2,5.6c-0.6,3.8-0.7,7.6-0.3,11.5c0.3,3.6,1.1,7.2,2.3,10.6c0.6,1.7,1.3,3.3,2,4.9 c0.1,0.2,0.2,0.4,0.3,0.6c2.1,4.3,2.1,9.1-0.1,13.4c-0.2,0.4-0.4,0.8-0.5,1.2c-0.4,1-0.9,2-1.3,3c-0.8,2.2-1.8,4.8-2.1,7.1 C35.9,126.3,35.8,126.6,35.8,126.8L35.8,126.8z M129.9,38.8c0.8,0.8,1.7,1.6,2.8,2.4l4.9-12.9L127,24.6c-0.9,2.6-1,5.4-0.4,8 c0-0.1,0-0.2,0-0.3c0-0.3,0-0.8,0-1.3v-0.1c0,1.5,0.5,4,2.1,6.4c0.8,1.1,1.7,2.1,2.8,3l-0.5-0.4L129.9,38.8L129.9,38.8z M29.3,26.3l0,11.1c1.1,0,2.2-0.1,3.2-0.4c-0.2,0-0.4,0-0.6,0c-0.3,0-0.7,0.1-1.1,0.1c1.8-0.1,4.2-0.7,6.4-2.1 c1.2-0.8,2.2-1.7,3.1-2.9l-0.4,0.5l-0.9,1c0.8-0.8,1.6-1.7,2.3-2.7L29.3,26.3L29.3,26.3z"></path>
</g>
</g>
<g>
<g>
<g>
<path class="theme-secondary" d="M56.3,88.4l0.7,28.3l-7-5.7c-7.8,12.7-10.3,25-6.6,34.1l1.3,3.2l-3.2-1.4c-7.3-3.2-13.9-7.7-19.4-13.5 l-0.3-0.3l-0.1-0.5c-0.4-3.5-0.2-7.3,0.7-11.2l0-0.1c1.3-4.9,3.2-9.8,5.6-14.7c1.5-3.1,3.3-6.2,5.3-9.2l-6.1-5L56.3,88.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M105.9,74.1l-0.7-28.3l7,5.7c7.8-12.7,10.3-25,6.6-34.1l-1.3-3.2l3.2,1.4c7.3,3.2,13.9,7.7,19.4,13.5 l0.3,0.3l0.1,0.5c0.4,3.5,0.2,7.3-0.7,11.2l0,0.1c-1.3,4.9-3.2,9.8-5.6,14.7c-1.5,3.1-3.3,6.2-5.3,9.2l6.1,5L105.9,74.1z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M88.5,105.4l28.3-0.7l-5.7,7c12.7,7.8,25,10.3,34.1,6.6l3.2-1.3l-1.4,3.2c-3.2,7.3-7.7,13.9-13.5,19.4 l-0.3,0.3l-0.5,0.1c-3.5,0.4-7.3,0.2-11.2-0.7l-0.1,0c-4.9-1.3-9.8-3.2-14.7-5.6c-3.1-1.5-6.2-3.3-9.2-5.3l-5,6.1L88.5,105.4z"></path>
</g>
</g>
<g>
<g>
<path class="theme-secondary" d="M74.1,57.6l-28.3,0.7l5.7-7c-12.7-7.8-25-10.3-34.1-6.6L14.3,46l1.4-3.2c3.2-7.3,7.7-13.9,13.5-19.4 l0.3-0.3L30,23c3.5-0.4,7.3-0.2,11.2,0.7l0.1,0c4.9,1.3,9.8,3.2,14.7,5.6c3.1,1.5,6.2,3.3,9.2,5.3l5-6.1L74.1,57.6z"></path>
</g>
</g>
<g>
<g>
<circle class="theme-primary" cx="81.4" cy="80.8" r="60.5"></circle>
</g>
</g>
<g>
<path style="fill:#ffffff" d="M59.3,59.5c-3.5-1.6-6.1-3.2-8.7-5.1c-4-2.8-7.7-5.9-10.8-9.2c-7.6-7.7-11.6-15.6-10.5-22.1L27,25.6 c-5.5,5.8-12.8,16-12.9,20.4c0.1,0.5,0.1,0.5,0.1,0.5c1,3.4,2.6,6.8,4.9,10.1l0,0.1c3,4.8,8.9,12.7,29.9,21.9l-3.7,7l28.3-7.6 L63.5,51.5L59.3,59.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M103.3,103.5c3.5,1.6,6.1,3.2,8.7,5.1c4,2.8,7.7,5.9,10.8,9.2c7.6,7.7,11.6,15.6,10.5,22.1l2.3-2.4 c5.5-5.8,12.8-16,12.9-20.4c-0.1-0.5-0.1-0.5-0.1-0.5c-1-3.4-2.6-6.8-4.9-10.1l0-0.1c-3-4.8-8.9-12.7-29.9-21.9l3.7-7l-28.3,7.6 l10.2,26.2L103.3,103.5z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M104,59.3c1.6-3.5,3.2-6.1,5.1-8.7c2.8-4,5.9-7.7,9.2-10.8c7.7-7.6,15.6-11.6,22.1-10.5L138,27 c-5.8-5.5-16-12.8-20.4-12.9c-0.5,0.1-0.5,0.1-0.5,0.1c-3.4,1-6.8,2.6-10.1,4.9l-0.1,0c-4.8,3-12.7,8.9-21.9,29.9l-7-3.7 l7.6,28.3L112,63.6L104,59.3z"></path>
</g>
<g>
<path style="fill:#ffffff" d="M58.2,103.2c-1.6,3.5-3.2,6.1-5.1,8.7c-2.8,4-5.9,7.7-9.2,10.8c-7.7,7.6-15.6,11.6-22.1,10.5l2.4,2.3 c5.8,5.5,16,12.8,20.4,12.9c0.5-0.1,0.5-0.1,0.5-0.1c3.4-1,6.8-2.6,10.1-4.9l0.1,0c4.8-3,12.7-8.9,21.9-29.9l7,3.7l-7.6-28.3 L50.3,98.9L58.2,103.2z"></path>
</g>
</g>
</g>
<g class="logo-brand-name">
<path style="fill:#ffffff" d="M198.6,131.3h-6V31.9h8.5l29.8,83.9V31.9h6v99.4h-7.2l-31.1-88.6V131.3z"></path>
<path style="fill:#ffffff" d="M281.1,77.9v6h-27.1v41.5h32.7v6h-39.2V31.9h39.2v6h-32.7v40H281.1z"></path>
<path style="fill:#ffffff" d="M321.8,85l-20.2,46.3h-6.4l22.4-51.5l-20.9-47.8h6.8l18.7,42.7l18.9-42.7h6.2l-20.9,47.8l22.3,51.5h-7 L321.8,85z"></path>
<path style="fill:#ffffff" d="M364.5,107.3c0,10.6,4,18.9,14.9,18.9s14.9-8.2,14.9-18.9V31.9h6.1V107c0,14.2-6,25.1-21.2,25.1 c-15.2,0-21.3-10.9-21.3-25.1V31.9h6.5V107.3z"></path>
<path style="fill:#ffffff" d="M452.8,55.9v2.1h-6.2v-2.6c0-10.5-4-18.5-14.8-18.5c-10.8,0-14.8,7.8-14.8,18.3c0,24.1,35.9,24.6,35.9,52 c0,14.3-6.2,24.8-21.4,24.8s-21.4-10.5-21.4-24.8v-5.1h6.2v5.5c0,10.6,4.1,18.3,15,18.3s15-7.7,15-18.3c0-23.9-35.9-24.3-35.9-52 c0-14.9,6.5-24.6,21.2-24.7C446.7,31.1,452.8,41.6,452.8,55.9z"></path>
<path class="theme-primary" d="M495.8,102.5l10.6-70.6h21.7v99.4h-14.8V60.1l-10.8,71.3h-14.8l-11.6-70.3v70.3h-13.6V31.9h21.7L495.8,102.5z"></path>
<path class="theme-primary" d="M537.6,55.8c0-15.9,8.4-25,23.7-25c15.3,0,23.7,9.1,23.7,25v51.7c0,15.9-8.4,25-23.7,25 c-15.3,0-23.7-9.1-23.7-25V55.8z M553.2,108.5c0,7.1,3.1,9.8,8.1,9.8s8.1-2.7,8.1-9.8V54.8c0-7.1-3.1-9.8-8.1-9.8s-8.1,2.7-8.1,9.8 V108.5z"></path>
<path class="theme-primary" d="M594.4,31.9h24.7c15.6,0,23.3,8.7,23.3,24.6v50.3c0,15.9-7.7,24.6-23.3,24.6h-24.7V31.9z M610,46.1v71h8.8 c5,0,7.9-2.6,7.9-9.7V55.8c0-7.1-3-9.7-7.9-9.7H610z"></path>
<path class="theme-primary" d="M672.6,30.8c15.2,0,23,9.1,23,25v3.1h-14.8v-4.1c0-7.1-2.8-9.8-7.8-9.8c-5,0-7.8,2.7-7.8,9.8 c0,20.4,30.5,24.3,30.5,52.7c0,15.9-8,25-23.3,25c-15.3,0-23.3-9.1-23.3-25v-6.1h14.8v7.1c0,7.1,3.1,9.7,8.1,9.7s8.1-2.6,8.1-9.7 c0-20.4-30.5-24.3-30.5-52.7C649.6,39.9,657.4,30.8,672.6,30.8z"></path>
</g>
</svg> </a>
</div>
<div class="rj-social-wrapper col-xs-1-12 col-sm-6-12 col-sm-pad-6-12">
<div class="rj-social-links">
<a target="_blank" rel="noreferrer" href="https://discord.gg/nexusmods" title="Join us on Discord">
<img class="icon" alt="Discord" src="/assets/images/footer/Discord.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://twitter.com/nexussites" title="Follow us on Twitter">
<img class="icon" alt="Twitter" src="/assets/images/footer/Twitter.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.tiktok.com/@nexusmodsofficial" title="Follow us on TikTok">
<img class="icon" alt="TikTok" src="/assets/images/footer/TikTok.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.twitch.tv/nexusmodsofficial" title="Follow us on Twitch">
<img class="icon" alt="Twitch" src="/assets/images/footer/Twitch.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.youtube.com/@NexusModsOfficial" title="Follow us on Youtube">
<img class="icon" alt="Youtube" src="/assets/images/footer/Youtube.svg">
</a>
<a target="_blank" rel="noreferrer" href="https://www.instagram.com/nexusmodsofficial" title="Follow us on Instagram">
<img class="icon" alt="Instagram" src="/assets/images/footer/Instagram.svg">
</a>
</div>
</div>
</div>
</section>
<section id="rj-foot">
<div class="content">
<span class="rj-copyright">Copyright © 2024 Black Tree Gaming Ltd. All rights reserved.</span>
<div class="rj-foot-links">
<a target="_blank" rel="noreferrer" href="https://help.nexusmods.com/article/18-terms-of-service">Terms of Service</a> | <a target="_blank" rel="noreferrer" href="https://help.nexusmods.com/article/20-privacy-policy">Privacy Policy</a>
</div>
</div>
</section>
</footer><iframe name="__tcfapiLocator" style="display: none;"></iframe>
<div id="nn_mobile_lb1"></div>
<div id="nn_lb2"></div>
<!--
) ( |
) ( / .-
_ ,---. _ ( / /
(~-| . . |-~) V /
\._ 0 _,/ /
/ `-^-'`-._ /
' `-. (
: )E
: ,---' (
. )E (
gpyy '._____,---' (
) (
) (
) (
) (
-->
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e8ad3ca9ed22f9f',t:'MTczMjYzNDA1Ny4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><iframe height="1" width="1" style="position: absolute; top: 0px; left: 0px; border: none; visibility: hidden;"></iframe><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8e8ad3ca9ed22f9f","version":"2024.10.5","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"84b8a5c923d14b3dbc931e18bd6ef281","b":1}" crossorigin="anonymous"></script>
<iframe id="_hjSafeContext_78954044" title="_hjSafeContext" tabindex="-1" aria-hidden="true" src="about:blank" style="display: none !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important;"></iframe><iframe name="__uspapiLocator" style="display: none;"></iframe><iframe name="__gppLocator" style="display: none;"></iframe><img src="https://ad-delivery.net/px.gif?ch=2" style="display: none !important; width: 1px !important; height: 1px !important;"><img src="https://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250" style="display: none !important; width: 1px !important; height: 1px !important;"><img src="https://ad-delivery.net/px.gif?ch=1&e=0.015177692501662898" style="display: none !important; width: 1px !important; height: 1px !important;"><div id="sp_message_container_1202267" style="display: block;"><iframe src="https://cdn.privacy-mgmt.com/index.html?hasCsp=true&message_id=1202267&consentUUID=null&consent_origin=https%3A%2F%2Fcdn.privacy-mgmt.com%2Fconsent%2Ftcfv2&preload_message=true&version=v1" id="sp_message_iframe_1202267" title="SP Consent Message"></iframe></div></body></html>