PageSourceSearch

https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/

html stourbridgenews.co.uk collected 2026-10-02 06:03:22 UTC 287,627 bytes, 4,424 lines download raw bytes

1<!-- standard - CustomHeader-Site.html --> <!DOCTYPE html>
2<html lang="en" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">
3<head>
4    
5    <link rel="preconnect" href="https://d2zv5rkii46miq.cloudfront.net" />
6    <link rel="preconnect" href="https://visitanalytics.userreport.com" />
7    <link rel="preconnect" href="https://a02342.stourbridgenews.co.uk" />
8    <link rel="preconnect" href="https://securepubads.g.doubleclick.net" />
9    <link rel="preconnect" href="https://cdn.adsafeprotected.com" />
10    <link rel="preconnect" href="https://micro.rubiconproject.com" />
11    <link rel="preconnect" href="https://experience.tinypass.com" />
12    <link rel="preconnect" href="https://c.amazon-adsystem.com" />
13    <link rel="preconnect" href="https://tpc.googlesyndication.com">
14    <link rel="preconnect" href="https://pagead2.googlesyndication.com">
15    <link rel="preconnect" href="https://www.googletagservices.com">
16    <link rel="preconnect" href="https://cdn.ampproject.org">
17    <link rel="preconnect" href="https://securepubads.g.doubleclick.net">
18
19    <title>Superdrug opens UK's largest store at Merry Hill centre | Stourbridge News</title>
20
21    <meta charset="utf-8">
22    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1">
23    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
24    <meta name="OMG-Verify-V1" content="4389-366acdfc-5224-4c07-bb70-f74d8fbfc2db" />
25    <meta name="robots" content="max-image-preview:large">
26    <meta name="format-detection" content="telephone=no">
27
28    
28<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["*"]},session_trace:{sampling_rate:0.0,mode:"FIXED_RATE",enabled:true,error_sampling_rate:0.0},performance:{capture_marks:false,capture_detail:false,capture_measures:true},browser_consent_mode:{enabled:false},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1134382346",accountID:"962803",trustKey:"962803",xpid:"XQAFWVZQGwIAXFhTAAYBVFI=",licenseKey:"fd15ff24ac",applicationID:"1089177626",browserID:"1134382346"};;/*! For license information please see nr-loader-spa-1.323.0.min.js.LICENSE.txt */
29(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.323.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
29e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
29const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
29if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
29o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
29(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
29;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.323.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.323.0.PROD:";r.l=(n,i,s,a)=>
29{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-ORjtmy+nQMgxbu0os8+oTRa5sPzbinyuWSvpZrrstVLIaHofRRlfODdH+oUmkIgeQpM+vPf3vG/4RzvCsFVh1A==",249:"sha512-o7+K6xC0z3TqynjVxpd+jgiSgqy8rrPeRcUSqt5J0Rqg5Su5CycLMYfpwiM3WBCHiNDrG5aZoXJQ6HRc335XYQ==",212:"sha512-kRvBt1IYQDBnClTEWNaE8sDFqbXXM3Vdyf972Uf4MFbJxl7u3KmdO+jdB1H4achPEoT9YtNXHswaESey6sCH0A==",238:"sha512-U5EGmyYbFVR2UMNAuZJ7fTgVVtPa5b8RPMySDwXo7z3frRdkUJ2x1VAQTLQCeBab8VlGVGRV8FiSHIn/pwN72A=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.323.0.PROD"]=self["webpackChunk:NRBA-1.323.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
29ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
29{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
29null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
29dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
29imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
29return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s,a=(0,ye.ZF)(),o=(0,ye.el)(),c=Date.now();this.agentRef.runtime?.timeKeeper?.ready&&(s=Math.floor(this.agentRef.runtime.timeKeeper.correctAbsoluteTimestamp(c)));var d={spanId:a,traceId:o,timestamp:c,timestampCorrected:s};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(d.traceContextParentHeader=this.generateTraceContextParentHeader(a,o),d.traceContextStateHeader=this.generateTraceContextStateHeader(a,s??c,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(d.newrelicHeader=this.generateTraceHeader(a,o,s??c,r,n,i)),d}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
29!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
29if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
29);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
29class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
29h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
29
30    	<meta property="fb:pages" content="331160986939241" />
31	<meta property="og:article:author" content="Helen Attwood" />
32<link rel="canonical" href="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/" />
33	<meta name="keywords" content=""/>
34	<meta name="parsely-title" content="Superdrug opens its largest UK store at Merry Hill"/>
35	<meta name="parsely-post-id" content="26575627"/>
36	<meta name="description" content="
37  Superdrug has unveiled its largest store in the UK at the Merry Hill shopping centre.
38"/>
39	<meta name="title" content="Superdrug opens its largest UK store at Merry Hill"/>
40	<meta name="medium" content="news"/>
41	<meta name="twitter:description" content="
42  Superdrug has unveiled its largest store in the UK at the Merry Hill shopping centre.
43"/>
44	<meta name="twitter:title" content="Superdrug opens its largest UK store at Merry Hill"/>
45	<meta name="twitter:card" content="summary_large_image"/>
46	<meta name="cXenseParse:contentlevel" content=""/>
47	<meta name="cXenseParse:articleid" content="26575627"/>
48	<meta itemprop="description" content="
49  Superdrug has unveiled its largest store in the UK at the Merry Hill shopping centre.
50" />
51	<meta itemprop="name" content="Superdrug opens its largest UK store at Merry Hill" />
52	<meta property="og:description" content="
53  Superdrug has unveiled its largest store in the UK at the Merry Hill shopping centre.
54" />
55	<meta property="og:name" content="Superdrug opens its largest UK store at Merry Hill" />
56	<meta property="fb:app_id" content="156707414383899" />
57	<meta property="og:type" content="article" />
58	<meta property="og:title" content="Superdrug opens its largest UK store at Merry Hill" />
59	<meta name="twitter:image:src" content="https://www.stourbridgenews.co.uk/resources/images/21492597/"/>
60	<meta itemprop="image" content="https://www.stourbridgenews.co.uk/resources/images/21492597/" />
61	<meta property="og:image:height" content="630" />
62	<meta property="og:image:width" content="945" />
63	<meta property="og:image" content="https://www.stourbridgenews.co.uk/resources/images/21492597.jpg?type=og-image" />
64	<meta property="og:site_name" content="Stourbridge News" />
65	<meta property="og:url" content="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/" />
66	<meta property="og:article:published_time" content="2026-09-23T14:27:57Z" />
67
68<script type="application/ld+json">
69{
70    "@context": "http://schema.org",
71    "@type": "NewsArticle",
72    "headline": "Superdrug opens UK's largest store at Merry Hill centre",
73    "datePublished": "2026-09-23T14:27:57Z",
74    
75    "dateModified": "2026-09-23T14:41:14Z",
76    
77    "articleSection": "news",
78    "mainEntityOfPage": "https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/",
79    "url": "https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/",
80    "isBasedOn": "https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/",
81    "author": {
82        "@type": "Person",
83        "name": "Helen Attwood"
84    },
85    "image": {
86        "@type": "ImageObject",
87        "url": "https://www.stourbridgenews.co.uk/resources/images/21492597.jpg/",
88        "width": 1280,
89        "height": 720
90    },
91    "publisher": {
92        "@type": "Organization",
93        "name": "Stourbridge News",
94        "logo": {
95            "@type": "ImageObject",
96             "url": "https://www.stourbridgenews.co.uk/resources/images/sitelogo/",
97             "width": "385",
98             "height": "91"
99        }
100    },
101    "keywords": ["article_types:news","topics:business","source:newsquest"]
102}
103</script>
103
104
105
106
107
108
109
110
111
112    <link id="page_stylesheet_vars" href="/resources/responsive-static/build/mds/css/palette-7-sans-serif-vars.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
113
114    <link href="/resources/responsive-static/build/mds/css/header-footer.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
115
116    <link id="page_stylesheet" href="/resources/responsive-static/build/mds/css/blockarticle.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
117
118    
119
120    <link rel="shortcut icon" href="/resources/images/17401216/" type="image/vnd.microsoft.icon">
121    <link rel="icon" href="/resources/images/17401216/" type="image/vnd.microsoft.icon">
122
123        
123<script>
124        window.startExec = performance.now();
125    </script>
125
126
127    
127<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" crossorigin="anonymous"></script>
vendor: 1 bytes, line 127
127
128<script src="https://code.jquery.com/jquery-migrate-3.6.0.js" integrity="sha384-ekzRTCLAU/LqHRBjnphRAxgZZvGdoP+TfkGGsX+tBJpRdM7r2/89ZZNzC/7YTJXX" crossorigin="anonymous"></script>
vendor: 1 bytes, line 128
128
129<script type="text/javascript" src="/resources/shared/responsive-sync/?r=vjoPdzgg"></script>
129
130
131<script type="text/javascript">
132    data_layer_helper.setIsArticle(true);
133    data_layer_helper.setCookieDomain('.stourbridgenews.co.uk');
134    data_layer_helper.setModuleType('BlockArticleModule');
135    data_layer_helper.setLocalInfoFolder('');
136    data_layer_helper.setHomesData('', '', '', 'news');
137    data_layer_helper.setPrimaryDomain('www.stourbridgenews.co.uk');
138    data_layer_helper.setPath('/news/');
139    data_layer_helper.setGoogleNetworkCode('154725070');
140    data_layer_helper.setArticleTimestamp('1790170077');
141    data_layer_helper.setPathOverride();
142
143
144    var extraTags = [];
145    
146        extraTags.push('user_level_anonymous');
147    
148
149    var data_layer = {
150        environment: {
151            is_test_site: 'no',
152            is_live_site: 'yes',
153            is_paywall_site: 'no',
154            is_portable_screen: (data_layer_helper.isMobileScreen()) ? 'yes' : 'no',
155            is_desktop_screen: (data_layer_helper.isMobileScreen()) ? 'no' : 'yes',
156            is_mobile_device: data_layer_helper.getMobileDevice(),
157            is_tablet_device: data_layer_helper.getTabletDevice(),
158            server: 'webapp-857f48ddbd-fwxzm',
159            platform: 'Martini'
160        },
161        site: {
162            id: '160',
163            comments_subscriber_only: 'no',
164            viafoura_site_id: '00000000-0000-4000-8000-21209f4c8fa7',
165            comments_use_viafoura: 'yes',
166            centre_id: '3',
167            centre_name: 'Stourbridge',
168            country: 'England',
169            name: 'Stourbridge News',
170            name_with_prefix_capitalised_possessive: 'The Stourbridge News\'',
171            name_with_prefix_lower_possessive: 'the Stourbridge News\'',
172            domain: 'www.stourbridgenews.co.uk',
173            editor_name: 'Stephanie Preece',
174            onboarding_enabled: 'no',
175            onboarding_flow_id: 'onboarding_disabled',
176            allowing_mr_replacement: 'no',
177            cookie_domain: '.stourbridgenews.co.uk',
178            uses_cmp: 'yes',
179            short_domain: 'stourbridgenews',
180            using_piano_id: 'yes',
181            enable_skimlinks: 'yes',
182            skimlinks_domain_id: '613771',
183            disable_newsletters: 'no',
184            is_archant_site: 'no',
185            shc_merchant_name: '',
186            piano_application_group: 'Forest',
187            piano_site_name: 'Stourbridge News',
188            piano_site_name_possessive: 'Stourbridge News\'',
189            piano_site_name_with_prefix_lower: 'the Stourbridge News',
190            piano_site_name_with_prefix_capitalised: 'The Stourbridge News',
191            piano_site_name_with_prefix_capitalised_possessive: 'The Stourbridge News\'',
192            piano_site_name_with_prefix_lower_possessive: 'the Stourbridge News\'',
193            piano_location_primary: 'Stourbridge',
194            piano_location_primary_possessive: 'Stourbridge\'s',
195            piano_location_county: 'West Midlands',
196            piano_location_county_possessive: 'West Midlands\'s',
197            piano_primary_sports_team: '',
198            piano_primary_sports_team_nickname: '',
199            piano_primary_sports_team_sport: '',
200            piano_primary_sports_team_possessive: '',
201            piano_primary_sports_team_nickname_possessive: '',
202            piano_self_service_cancellation_setting: 'None',
203            has_app: 'no',
204            app_provider: '',
205            app_platform: '',
206            app_store_url_ios: '',
207            app_store_url_google_play: '',
208            cloudflare_turnstyle_site_key: '',
209        },
210        page: {
211            module: 'BlockArticleModule',
212            referrer: data_layer_helper.getReferrerHostName(),
213            name: '(www) ' + data_layer_helper.getOmniturePath(),
214            title: document.title,
215            path: data_layer_helper.getOmniturePath(),
216            section: data_layer_helper.getPathFragment(0),
217            subsection: data_layer_helper.getPathFragment(1),
218            subsection_2: data_layer_helper.getPathFragment(2),
219            subsection_3: data_layer_helper.getPathFragment(3),
220            reference: qs.get('ref'),
221            layout: 'BAM Standard Article',
222            ad_timing: data_layer_helper.getCookie('adtiming'),
223            template_namespace: 'standard',
224            template: '',
225            colour_scheme: '',
226            layout_template: 'BAM Standard Article',
227            mds_font: 'sans-serif',
228            user_used_app_last_24hours: '',
229            user_used_app_last_7days: '',
230            user_used_app_last_14days: '',
231            mds_colour_palette: 'palette-7',
232            feature_block_a_enabled: ($('[data-name="Feature Article Block A"]').length > 0) ? 'yes' : 'no',
233            feature_block_b_variant: (typeof $('[data-name="Feature Article Block B"]').data('variant') === 'undefined') ? '' : $('[data-name="Feature Article Block B"]').data('variant'),
234            is_article_list: 'no',
235            error_404: '',
236            top_stories_article_count: '',
237            interstitial_dedupe_top_stories: '',
238            interstitial_desktop_height: '',
239            interstitial_mobile_height: '',
240            interstitial_tablet_height: '',
241            interstitial_piano_module_id: '',
242            interstitial_using_recommendations: '',
243            interstitial_recommendation_header: '',
244            interstitial_article_count: '',
245            news_stories_article_count: '',
246            site_newspaper_archive_enabled: 'no',
247            site_newspaper_archive_number_of_pages: '',
248            site_newspaper_archive_start_year: 0,
249            article_originates_from_this_site: 'yes',
250            article_originates_from_site: '',
251            article_originates_from_url: ''
252        },
253        user: {
254            id: '',
255            first_name: '',
256            advertising_experience: 'Ad-Full',
257            is_privacy_plus: 'no',
258            is_alist: 'no',
259            level: data_layer_helper.getCookie('nq_ul'),
260            seen_cmp: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true' || data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
261            given_consent: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true') ? 'yes' : 'no',
262            consent_string: data_layer_helper.getConsentString(),
263            type: 'anonymous',
264            parsely_type: 'Anonymous',
265            chartbeat_type: 'anon',
266            type_as_int: '1',
267            is_logged_in: 'no',
268            is_admin: 'no',
269            is_internal_admin: '',
270            has_full_admin_link_permissions: '',
271            has_registered: (data_layer_helper.getCookie('nqr') !== null) ? 'yes' : 'no',
272            comments_verified: '',
273            comments_verified_date: '',
274            user_email_is_verified: '',
275            user_email_is_verified_date: '',
276            mobile_number_is_verified: '',
277            mobile_number_is_verified_date: '',
278            user_needs_email_verification: '',
279            user_needs_mobile_verification: '',
280            user_too_many_requests: '',
281            age_decade:  '0' ,
282            gender:  'u' ,
283            is_known: data_layer_helper.getCookie('__siren') ? 'yes' : 'no',
284            hash: '',
285            lr_hash_1: '',
286            lr_hash_2: '',
287            lr_hash_3: '',
288            gender:  'u' ,
289            user_decade:  '0' ,
290            subscription_plan: '',
291            subscription_tier: 'null',
292            subscription_plan_and_frequency: ' - ',
293            commented: (data_layer_helper.isArticle() && qs.get('action') === 'success') ? 'yes' : 'no',
294            time_since_last_visit: 'not implemented (maybe drop)',
295            device: data_layer_helper.getDevice(),
296            using_ad_blocker_sourcepoint: data_layer_helper.getSourcepointAdbockStatus(),
297            admin_user_name: '',
298            is_admin_internal: '',
299            is_admin_external: '',
300            card_expired: '',
301            card_will_expire: '',
302            expires_urgency: '',
303            abandoned_cart: 'no',
304            subscription_expired: 'no',
305            is_archant_site: 'no',
306            signed_up_primary_news_newsletter: 'no',
307            signed_up_primary_sport_newsletter: 'no',
308            played_free_puzzles_last_7days: '',
309            played_paid_puzzles_last_7days: '',
310            commenter_badge: '',
311            upper_role: '',
312        },
313        analytics: {
314            hierachy: 'newsquest,Stourbridge,www.stourbridgenews.co.uk,' + data_layer_helper.getPathFragment(3).replace(/\//,','),
315            link_filters: 'javascript:,stourbridgenews.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,',
316            tracking_block: data_layer_helper.getTrackingFromCookie('tracking_block', ''),
317            tracking_block_index: data_layer_helper.getTrackingFromCookie('tracking_block_index', ''),
318            previous_page_name: data_layer_helper.getCookie('nq_prev_page'),
319            advert_id: '',
320            position_in_list: data_layer_helper.getTrackingFromCookie('o-prop30', ''),
321            featured_content: data_layer_helper.getTrackingFromCookie('o-ref', qs.get('ref')),
322            account: data_layer_helper.getAccount()
323        },
324        chartbeat: {
325            enabled: "no",
326            id: "",
327            domain: "",
328            sections: 'article_types:news,topics:business,source:newsquest'
329        },
330        parsely: {
331            enabled: "yes",
332            site_id: "stourbridgenews.co.uk",
333            type: 'Anonymous'
334        },
335        piano: {
336            tags: data_layer_helper.getPianoTags({
337                      piano_domain: 'stourbridgenews',
338                      piano_master: '',
339                      breaking_news: false,
340                      editorial_opinion: false,
341                      free_subscriber: false,
342                      free_subscriber: false,
343                      has_video: false,
344                      is_article: true,
345                      article_content_level : '1',
346                      article_content_level_open_access: false,
347                      picture_gallery_id: false,
348                      user_is_newsquest: false,
349                      user_is_entra_authenticated: false,
350                      user_logged_in: false,
351                      is_live_article: false,
352                      why_free_subscriber: '',
353                      extra_tags: extraTags,
354                      is_covid_headline: false,
355                      is_covid_body: false,
356                      is_alist: false,
357                      audio_provider_bytecast: false
358                  }
359            ),
360            custom_variables: {
361                article_length: 'l',
362                application_group: 'Forest',
363                content_is_editorial_opinion: 'no',
364                base_url: 'https://www.stourbridgenews.co.uk',
365                full_url: document.location.href,
366                from_discover: (document.referrer === "android-app://com.google.android.googlequicksearchbox/") ? 'yes' : 'no',
367                mds_font: 'sans-serif',
368                mds_colour_palette: 'palette-7',
369                site_name: 'Stourbridge News',
370                site_name_possessive: 'Stourbridge News\'',
371                site_name_with_prefix_capitalised: 'The Stourbridge News',
372                site_name_with_prefix_lower: 'the Stourbridge News',
373                site_name_with_prefix_capitalised_possessive: 'The Stourbridge News\'',
374                site_name_with_prefix_lower_possessive: 'the Stourbridge News\'',
375                location_primary: 'Stourbridge',
376                location_primary_possessive: 'Stourbridge\'s',
377                location_county: 'West Midlands',
378                location_county_possessive: 'West Midlands\'s',
379                site_has_primary_sports_team: 'no',
380                primary_sports_team: '',
381                primary_sports_team_nickname: '',
382                primary_sports_team_sport: '',
383                primary_sports_team_possessive: '',
384                primary_sports_team_nickname_possessive: '',
385                site_id: '160',
386                content_level: '1',
387                content_author: 'Helen Attwood',
388                content_id: '26575627',
389                content_is_article: 'yes',
390                content_primary_topic: 'Business',
391                user_seen_consent_modal: ($.cookie('_sp_enable_dfp_personalized_ads') === 'true' || $.cookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
392                site_section: data_layer_helper.getPathFragment(0, true),
393                article_published_yyyy: '2026',
394                user_played_free_puzzles_last_7days: '',
395                user_played_paid_puzzles_last_7days: '',
396                anon_user_played_free_puzzles_last_7days: data_layer_helper.untrackedPuzzleCheck(),
397                home_delivery_phone_number: '0800 953 0227',
398                content_is_restricted: data_layer_helper.getRestrictedContent('1', '160', '160', ''),
399                day_of_week: data_layer_helper.getDayOfWeek(),
400                user_card_expired: '',
401                user_card_will_expire: '',
402                user_expires_urgency: '',
403                user_used_app_last_24hours: '',
404                user_used_app_last_7days: '',
405                user_used_app_last_14days: '',
406                user_subscription_tier: 'null',
407                user_is_newsquest: 'no',
408                primary_news_newsletter_id: '1056',
409                primary_news_newsletter_name: 'the Morning Briefing',
410                primary_news_newsletter_description: 'The latest stories, in your inbox every morning.',
411                primary_sport_newsletter_id: '1056',
412                primary_sport_newsletter_name: 'the Morning Briefing',
413                primary_sport_newsletter_description: 'The latest stories, in your inbox every morning.',
414                user_signed_up_primary_news_newsletter: 'no',
415                user_signed_up_primary_sport_newsletter: 'no',
416                newsletter_auto_promote: 'auto_success',
417                newsletter_auto_promote_name: 'the Morning Briefing',
418                newsletter_auto_promote_description: 'The latest stories, in y
418our inbox every morning.',
419                newsletter_auto_promote_ID: '1056',
420                site_has_app: 'no',
421                site_app_store_url_ios: '',
422                site_app_store_url_google_play: '',
423                subsets_experiment_id: '',
424                site_section1: data_layer_helper.getPathFragment(1, true), // GBL required
425                site_newspaper_archive_enabled: 'no',
426                site_newspaper_archive_number_of_pages: '',
427                site_newspaper_archive_start_year: 0,
428                article_originates_from_this_site: 'yes',
429                article_originates_from_site: '',
430                article_originates_from_url: ''
431            },
432            native_variables: {
433                setContentCreated: '2026-09-23T14:27:57',
434                setContentIsNative:  'no',
435                setContentAuthor: 'Helen Attwood',
436                setContentSection: data_layer_helper.getPathFragment(0, true)
437            }
438        },
439        article: {
440            cscore:'',
441            showing_preview: '',
442            is_article: data_layer_helper.isArticle() ? 'yes' : 'no',
443            id : '26575627',
444            length_type: 'l',
445            character_count: '2539',
446            author: 'Helen Attwood'.toLowerCase(),
447            e_var15: 'none|use author profile|helen attwood'.toLowerCase(),
448            context: 'retail',
449            content_level: '1',
450            content_level_open_access: 'no',
451            content_level_combined: '1,metered,no',
452            content_is_restricted: data_layer_helper.getRestrictedContent('1', '160', '160', ''),
453            increment: (data_layer_helper.isArticle()) ? '+1' : '',
454            sponsor: '',
455            contributions: '0',
456            is_sponsored: 'no',
457            headline: 'Superdrug opens its largest UK store at Merry Hill',
458            age: data_layer_helper.getArticleAge(),
459            upload_date: '',
460            publish_date: '23/09/2026',
461            update_date: '',
462            rating: '20',
463            source: data_layer_helper.getSource(''),
464            subjects: (typeof articleSubjects === 'object') ? articleSubjects.join(',') : '',
465            context: 'retail',
466            grapeshot_context: (typeof gs_channels !== 'undefined') ? gs_channels : '',
467            allow_comments: 'no',
468            total_comments: '0',
469            originating_site_id: '160',
470            parent_article_site_id: '',
471            parent_article_id: '',
472            originating_article_id: '26575627',
473            parent_originating_site_id: '160',
474            is_original_to_site: 'yes',
475            is_cloned: 'no',
476            parent_article_url: 'https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/',
477            use_skimlinks: 'no',
478            content_primary_topic: 'Business',
479            taxonomy: {
480                article_types: 'news',
481                topics: 'business',
482                sports: '',
483                sports_teams: '',
484                locations: '',
485                shared_content: '',
486                free_tags: '',
487                farming: ''
488            },
489            audio: {
490                has_audio: 'no',
491                provider: ''
492            },
493            article_comments_use_viafoura: 'yes'
494        },
495        homes: {
496            search_bedrooms_minimum: '',
497            search_location: 'news',
498            search_price_minimum: '',
499            search_price_maximum: '',
500            list: '',
501            id: ''
502        },
503        video: {
504            exists: 'no',
505            auto_play_enabled: data_layer_helper.getAutoPlay('no')
506        },
507        contributions: {
508            allow_text: '',
509            allow_image: '',
510            user_contributions_number: '0',
511            has_user_contributions: 'no'
512        },
513        search: {
514            keywords: qs.get('search'),
515            results: ''
516        },
517        announcements: {
518            category: ''
519        },
520        config: {
521            google_analytics_id: '',
522            site_template_set: 'standard',
523            path: '/news/',
524            top_level_section: 'news',
525            polar_property_id: 'NA-STOU-11238150',
526            gallery_show_advert_after: '5',
527            disable_outbrain_with_ad_light: 'no',
528            disable_outbrain: 'no',
529        },
530        dfp: {
531            is_landing: 'no',
532            module_path: 'news',
533            weather_band: '11-15',
534            weather_summary: 'sun'.toLowerCase(),
535            id: data_layer_helper.getGoogleId(),
536            display_screen: data_layer_helper.isMobileScreen() ? 'mobile' : 'desktop',
537            can_show_billboard: (window.screen.width > 960) ? 'y' : 'n'
538        },
539        dates: {
540            date: (new Date()).toLocaleDateString('en-GB'),
541            hour: (new Date()).getHours(),
542            day: data_layer_helper.getDayOfWeek(),
543            weekend: ((new Date()).getDay() === 6 || (new Date()).getDay() === 0) ? 'Weekend' : 'Weekday'
544        },
545        memorials: {
546            contact_phone_number: '',
547            contact_email_address: '',
548            publications: JSON.parse('' || '[]'),
549            user: {
550                id: '',
551                email_verified: 'no',
552                type: ''
553            },
554            funeral_director: {
555                id: '',
556                person_urn: ''
557            }
558        }
559    }
560
561    data_layer_helper.storeCurrentPageName(data_layer.page.name);
562
563    window.dispatchEvent(new Event('data-layer-loaded'))
564
565      data_layer.piano.custom_variables.user_used_app_last_24hours = 'no';
566      data_layer.piano.custom_variables.user_used_app_last_7days = 'no';
567      data_layer.piano.custom_variables.user_used_app_last_14days = 'no';
568  if (data_layer.article.is_article !== 'yes') {
569      data_layer.piano.custom_variables.site_module = 'BlockArticleModule';
570      data_layer.piano.custom_variables.puzzles_landing_page = 'no';
571      data_layer.piano.custom_variables.puzzles_display_page = 'no';
572  }
573</script>
573
574 
575<script
576  src="https://assets.adobedtm.com/499440d21de9/54b957ecfb7e/launch-98090dfa3d73.min.js"
577  async
578></script>
578
579 
580
581<script>"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",r.title="tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();</script>
581
582
583<script type = "text/javascript">
584( function () {
585
586    window._sp_ = {
587        config: {
588            baseEndpoint: 'https://a02342.stourbridgenews.co.uk',
589            accountId: 52,
590            targetingParams:{
591                subscribed: false,
592                privacy: false
593            },
594            gdpr: { },
595            events: {
596                onMessageReady: function (message_type) {
597                    trackSPEvents('event76');
598                },
599                onMessageChoiceSelect: function (message_type, choice_id, choice_type_id) {
600                    console.log('message_type: ', message_type);
601                    console.log('choice_id: ', choice_id);
602                    console.log('choice_type_id: ', choice_type_id);
603                    if ('yes' === 'yes') {
604                        if (choice_type_id === 12) {
605                            trackSPEvents('event83'); //Consent Banner Reject All
606                            trackSPEvents('event82'); //Journalism Message Shown
607                        }
608                        if (choice_type_id === 11) {
609                            trackSPEvents('event78');
610                        }
611                        if (choice_type_id === 9) {
612                            trackSPEvents('event77');
613                        }
614                    } else {
615                        // these are the second argument in non-gate
616                        if (choice_type_id === 12) {
617                            trackSPEvents('event77');
618                        }
619
620                        if (choice_type_id === 11) {
621                            trackSPEvents('event78');
622                        }
623
624                        if (choice_type_id === 13) {
625		                    trackSPEvents('event83');
626                        }
627                    }
628                },
629                onPrivacyManagerActionStatus: function(message_type, status, actionType) {
630                    console.log('message_type: ' + message_type);
631                    console.log('status: ' + status);
632                    console.log('actionType: ' + actionType);
633                    if ('yes' === 'yes') {
634                        if (actionType === 11) {
635                            trackSPEvents('event79'); //Privacy Manager Accept
636                        }
637                        if (actionType === 9) {
638                            trackSPEvents('event68'); //Privacy Manager Redirect
639                        }
640                        if (actionType === 1) {
641                            trackSPEvents('event75'); //Forced tcf String Change
642                        }
643                    } else {
644                    // these are the second argument in non-gate
645                        if (actionType === 13) {
646                            trackSPEvents('event81'); //Privacy Manager Reject
647                        }
648                        if (actionType === 11) {
649                            trackSPEvents('event79'); //Privacy Manager Accept
650                        }
651                        if (actionType === 1) {
652                            trackSPEvents('event80'); //Privacy Manager Save & Exit
653                        }
654                    }
655                },
656                onPMCancel: function (message_type) {
657                    console.log('onPMCancel', message_type);
658                    trackSPEvents('event84'); //Privacy Manager Back
659                },
660            }
661        }
662    }
663
664    if (typeof window.__tcfapi === 'function') {
665        window.__tcfapi('addEventListener', 2, function (tcData, success) {
666            console.log('SP: Event Listen:', tcData, success);
667            if (success && tcData.eventStatus === 'useractioncomplete') {
668                setTcfCookie(tcData.purpose.consents, tcData.purpose.legitimateInterests);
669
670                var csnt = 'none';
671                if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
672                    csnt = 'yes';
673                } else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
674                    csnt = 'no';
675                }
676                googletag.cmd.push(function() {
677                    // console.log('DFP: Cookie check - setting dfpcsnt to ', csnt);
678                    googletag.pubads().setTargeting('dfpcsnt', csnt);
679                });
680                // ready to start DFP
681                // console.log('PIANO: setting unrestricted via useractioncomplete');
682                // runPiano('unrestricted');
683                startAdvertising(tcData.listenerId);
684
685                var e = new Event('launch:cmp:choice-made');
686                window.dispatchEvent(e);
687            } else if (success && tcData.eventStatus === 'tcloaded') {
688                // tcloaded means a valid TCF v2.0 string is available
689                // console.log('PIANO: setting unrestricted via tcloaded');
690                // runPiano('unrestricted');
691                if (tcData.gdprApplies === false) {
692                    $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.stourbridgenews.co.uk', path: '/', expires: 100});
693                }
694                startAdvertising(tcData.listenerId);
695
696            } else if (success && tcData.eventStatus === 'useractionnotcomplete') {
697                // do nothing - this means the user has not made a choice yet
698            } else if (success && tcData.eventStatus === 'cmpuishown') {
699                // do nothing - this means the CMP UI has been shown
700            } else if (!success) {
701                // $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.stourbridgenews.co.uk', path: '/', expires: 100});
702                // startAdvertising();
703            } else {
704                // console.log('PIANO: setting restricted');
705                // runPiano('restricted');
706            }
707        });
708    }
709
710    
711
712    document.addEventListener('click', function (e) {
713        const option = e.target.closest('.gdpr-option-v2');
714
715        if (!option) return;
716
717        e.preventDefault();
718        sendEvent76 = false;
719
720        const id = option.dataset.v2Id;
721        const isGate = option.dataset.isGate;
722
723        if (isGate === 'yes') {
724            trackSPEvents('event87');
725            _sp_.gdpr.loadPrivacyManagerModal(id);
726        } else {
727            trackSPEvents('event77');
728            _sp_.gdpr.loadPrivacyManagerModal(id);
729        }
730    });
731
732    function getTcfData() {
733        if (typeof window.__tcfapi !== 'function') {
734            console.warn('TCF API unavailable');
735            return;
736        }
737        window.__tcfapi('addEventListener', 2, function(data, success) {
738            if (!data.purpose || !data.purpose.consents || !data.purpose.legitimateInterests) {
739                // console.log('DFP: No TCF data found, not setting cookies');
740                return;
741            }
742            setTcfCookie(data.purpose.consents, data.purpose.legitimateInterests);
743        }, [755]);
744    }
745    getTcfData();
746
747    function setTcfCookie(data, legitimateInterests) {
748        var consents = [];
749        $.each(data, function(id, consent)  {
750            var c = (consent === true) ? 'yes' : 'no';
751            consents.push(c)
752        });
753        // console.log('DFP: consents length: ', consents.length);
754        if (consents.length !== 10) {
755            // consents = consents.fill('no', consents.length, 10);
756            for (var i = consents.length; i < 10; i++) {
757                consents[i] = 'no';
758            }
759        }
760        // console.log('DFP: Found consents to store in cookie:', consents);
761        $.cookie('prev-tcf-v2', consents.join(','), {domain: '.stourbridgenews.co.uk', path: '/', expires: 100});
762
763        var consentEvent4 = 'none';
764        if (typeof data[4] !== 'undefined') {
765            consentEvent4 = data[4] ? 'true' : 'false';
766        }
767        $.cookie('_sp_enable_dfp_personalized_ads', consentEvent4, {domain: '.stourbridgenews.co.uk', path: '/', expires: 100});
768
769        var legitInterest = 'none';
770        if (legitimateInterests && typeof legitimateInterests[2] !== 'undefined') {
771            legitInterest = legitimateInterests[2] ? 'true' : 'false';
772        }
773
774        $.cookie('_sp_legitimate_interests', legitInterest , {domain: '.stourbridgenews.co.uk', path: '/', expires: 100});
775    }
776
777    var sendEvent76 = true;
778
779    function trackSPEvents(events) {
780        if (events === 'event76' && !sendEvent76) {
781            return;
782        } else if (events === 'event76') {
783            sendEvent76 = false;
784        }
785
786        if (typeof window.s !== 'object') {
787            // console.log('DFP: No window.s object found, trying again in 1 second');
788            window.setTimeout(function () { trackSPEvents(events)} , 1000);
789            return;
790        }
791
792        // console.log("ADB: Tracking %s", events);
793        // Re-create the Omniture object so the data can be tracked.
794        var s = window.s;
795
796        if (events.indexOf('event70') !== -1) {
797            // console.log('DFP: Events passed, added evars');
798            s.eVar35 = 'enabled';
799            s.prop35 = 'enabled';
800        }
801
802        s.events = events;
803        s.linkTrackEvents = events;
804        s.linkTrackVars = "eVar2,eVar3,eVar4,eVar5,eVar6,evar7,evar8,evar9,eVar16,eVar19,eVar26,eVar35,eVar43,eVar67,prop35";
805        s.suppressPageView = true;
806        s.tl(true,'o','Ad Block');
807    }
808
809    function startAdvertising(id)
810    {
811        if (typeof window.doNotAdvertise !== 'undefined' && window.doNotAdvertise === true) {
812            return;
813        }
814
815        // console.log("DFP: Is the page fully loaded?", window.googleReady);
816        if (window.googleReady !== true) {
817            window.setTimeout(function () {
818                // console.log('DFP: Google not fully loaded yet, pausing quarter of a second before trying again');
819                startAdvertising(id);
820            }, 250);
821            return;
822        }
823
824        // Ensure that we never run this code twice
825        if (window.advertisingStart === true) {
826            return;
827        }
828        // console.log('DFP: Running advertisement');
829        window.advertisingStart = true;
830
831        var googletag = window.googletag;
832        // init google objects and array
833        (function() {
834            var gads = document.createElement('script');
835            gads.async = true;
836            gads.type = 'text/javascript';
837            gads.src = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';
838            var node = document.getElementsByTagName('script')[0];
839            node.parentNode.insertBefore(gads, node);
840        })();
841
842        // launch the exco slideshow player
843        launchExcoSlideshow();
844
845        // load facebook etc
846        loadSocials();
847
848        // Checking our decision to use headerbidding (shorterned as prebid) is correct
849        // via system logic, and that we have the simplified consent to do so
850        if (usePrebid && $.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
851            var e = new Event('launch:sourcepoint:consentaccepted');
852            window.dispatchEvent(e);
853
854            // AP code initialisation
855            // the script is loaded via launch, once we have detected a consent signal via the datalayer.
856            fetchAp();
857
858            var site = 'desktop';
859            var _site = 'desktop';
860
861            // load IAS scripts and set up vars
862            (function() {
863                var ias = document.createElement('script');
864                ias.async = true;
865                ias.type = 'text/javascript';
866                ias.src = 'https://cdn.adsafeprotected.com/iasPET.1.js';
867                var node = document.getElementsByTagName('script')[0];
868                node.parentNode.insertBefore(ias, node);
869            })();
870
871            // load the prebid script
872            (function() {
873                var pbs = document.createElement('script');
874                pbs.async = true;
875                pbs.type = 'text/javascript';
876                pbs.src = 'https://micro.rubiconproject.com/prebid/dynamic/11022.js?group=newsquest';
877                var node = document.getElementsByTagName('script')[0];
878                node.parentNode.insertBefore(pbs, node);
879            })();
880
881            // tell google to actually get the bids from all relevant vendors when loaded
882            googletag.cmd.push(function () {
883                fetchHeaderBids();
884            });
885        }
886
887        // Outbrain
888        if (
889            (window.data_layer.user.advertising_experience === 'Ad-Free' || window.data_layer.config.disable_outbrain === 'yes') ||
890            (window.data_layer.user.advertising_experience === 'Ad-Light' && window.data_layer.config.disable_outbrain_with_ad_light === 'yes')
891        ) {
892            // console.log("No Outbrain script loading due to page settings");
893        } else {
894            // console.log("Loading Outbrain");
895            var ob = document.createElement('script');
896            ob.async = true;
897            ob.type = 'text/javascript';
898            ob.src = 'https://widgets.outbrain.com/outbrain.js';
899            var node = document.getElementsByTagName('script')[0];
900            node.parentNode.insertBefore(ob, node);
901        }
902
903
904        // remove the listener
905        if (id !== null) {
906            window.__tcfapi('removeEventListener', 2, function (success) { }, id);
907        }
908    }
909
910    /**
911     * Wait until we have advertising consent to show this advertising
912     * based replacement for the single image on our article pages
913     * This logic is based on excoSlidshowPlayerID that only appears on the page
914     * if a user is NOT a subscriber (including privacy plus) and the page has the
915     * correct information to show it (doesn't have a video, not in sport etc)
916     */
917    function launchExcoSlideshow() {
918        const slideShowPlayerId = window.excoSlideshowPlayerId;
919        // if we do not have a player id, we do not need to do anything
920        if (!slideShowPlayerId) {
921            return;
922        }
923
924        // this is exco's supplied code, modified for our use
925        (function (d, s, n) {
926            fjs = d.getElementsByTagName(s)[0];
927            js = d.createElement(s);
928            js.className = n;
929            js.src = '//player.ex.co/player/' + slideShowPlayerId;
930            js.setAttribute('programmatic', 'true');
931	        js.onload = function () {
932                const playerApi = ExCoPlayer.connect(slideShowPlayerId);
933                playerApi.init({});
934
935                playerApi.on('player-load', function(data) {
936                    $('.mar-article-image').remove();
937                    if (window.screen.width > 800) {
938                        $('.article-hero').attr('style', 'order: 1');
939                    }
940                    window.hide_overlay_for_exco = true;
941                });
942            };
943            fjs.parentNode.insertBefore(js, fjs);
944        }(document, 'script', 'exco-player'));
945    }
946
947    function loadSocials()
948    {
949        const socials = [
950            'https://platform.twitter.com/widgets.js',
951            'https://connect.facebook.net/en_US/all.js#xfbml=1',
952            'https://www.tiktok.com/embed.js',
953        ];
954
955        socials.forEach((social) => {
956            var script = document.createElement('script');
957            script.src = social;
958            script.async = true;
959            document.getElementsByTagName('head')[0].appendChild(script);
960        });
961    }
962
963
964})();
965
966</script>
vendor: 1 bytes, line 966
966
967<script src="https://a02342.stourbridgenews.co.uk/unified/wrapperMessagingWithoutDetection.js"></script>
967
968
969<script>
970window.usePiano = true;
971window.selectedOfferId = null;
972window.selectedTermId = null;
973</script>
vendor: 1 bytes, line 973
973
974<script>
975document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
976var setNptTechAdblockerCookie = function(adblocker) {
977    var d = new Date();
978    d.setTime(d.getTime() + 60 * 60 * 24 * 2 * 1000);
979    document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/";
980}
981var script = document.createElement("script");
982script.setAttribute("async", true);
983script.setAttribute("src", "//www.npttech.com/advertising.js");
984script.setAttribute("onerror", "setNptTechAdblockerCookie(true);");
985document.getElementsByTagName("head")[0].appendChild(script);
986</script>
986
987
988<script>
989// window.pdl = window.pdl || {};
990// window.pdl.requireConsent = 'v2';
991
992// Store entry point unless it's a user or subscribe page
993// to redirect after subscription
994const excludedPaths = ['/user/', '/subscribe/'];
995
996const shouldExclude = excludedPaths.some(path =>
997  window.location.pathname.includes(path)
998);
999
1000if (!shouldExclude) {
1001  sessionStorage.setItem(
1002    'last_piano_page_interacted_with',
1003    window.location.pathname
1004  );
1005}
1006
1007tp = window.tp || [];
1008
1009function runPiano(restrictedMode) {
1010    // console.log('Running Piano with restricted mode:', restrictedMode);
1011    // tp.push(['init', function() {
1012    //      console.log('Piano purpose map, before calling setAllPurposes()', tp.consent.getByPurpose());
1013    // }]);
1014    // if (restrictedMode === 'restricted') {
1015    //     // If we're in restricted mode, we need to set some specific parameters
1016    //     tp.push(['init', function() {
1017    //         tp.consent.setAllPurposes('opt-out')
1018    //     }]);
1019    // } else {
1020    //     tp.push(['init', function() {
1021    //         tp.consent.setAllPurposes('opt-in')
1022    //     }]);
1023    // }
1024    // tp.push(['init', function() {
1025    //     console.log('Piano purpose map, after calling setAllPurposes()', tp.consent.getByPurpose());
1026    // }]);
1027    // init Piano ID
1028    tp.push(['init', function() {
1029        tp.pianoId.init();
1030    }]);
1031
1032    const isGooglebot = window.isRobot.googleBot();
1033
1034    const isArticle = (data_layer.article.is_article === 'yes');
1035
1036    const isCl3 = (parseInt(data_layer.article.content_level, 10) === 3);
1037
1038    if (isGooglebot) {
1039        // we don't load Piano from all non-article pages
1040        if (!isArticle) {
1041            return;
1042        }
1043
1044        // If we are on an article, we do not load piano on CL0, 1, or 2
1045        if (!isCl3) {
1046            return;
1047        }
1048    }
1049    Object.keys(data_layer.piano.custom_variables).forEach(function (k) {
1050        var v = data_layer.piano.custom_variables[k];
1051
1052        if (v != '') {
1053            tp.push(["setCustomVariable", k, v]);
1054        }
1055    });
1056
1057    Object.keys(data_layer.piano.native_variables).forEach(function (k) {
1058        var v = data_layer.piano.native_variables[k];
1059        if (v != '') {
1060            tp.push([k, v]);
1061        }
1062    });
1063
1064    tp.push(['setTags', data_layer.piano.tags]);
1065
1066   (function(src){
1067        var a=document.createElement("script");
1068        a.type = "text/javascript";
1069        a.async=true;
1070        a.src=src;
1071        var b=document.getElementsByTagName("script")[0];
1072        b.parentNode.insertBefore(a, b)
1073    })("//experience.tinypass.com/xbuilder/experience/load?aid=jziFweUqpu");
1074}
1075
1076// Init Piano
1077const debug = document.cookie
1078    .split('; ')
1079    .find(row => row.startsWith('debug='))
1080    ?.split('=')[1];
1081
1082tp.push(["setDebug", debug === '1']);
1083
1084tp.push(["setApplePayMerchantId", 'merchant.nq.subssites.piano']);
1085
1086tp.push(["setUsePianoIdUserProvider", true ]);
1087
1088tp.push(["addHandler", "loginRequired", function(params) {
1089    // If they're already signed in, we don't need to do anything special.
1090    if (tp.user.isUserValid()) {
1091        return;
1092    }
1093    if (typeof window._overridePianoDefault !== 'undefined' && window._overridePianoDefault !== true) {
1094        console.log("TPL Called")
1095        tp.pianoId.show({
1096            screen: 'login',
1097            displayMode: 'modal',
1098            loggedIn: (data) => {
1099                pianoId.loggedIn();
1100            },
1101            loggedOut: () => {
1102                console.log('TP-TJ: user logged out');
1103            },
1104            registrationSuccess: () => {
1105                pianoId.registered();
1106            },
1107            width: '500px',
1108            height: '460px',
1109        });
1110    }
1111}]);
1112
1113tp.push(["addHandler", "checkoutSelectTerm", function (termDetails) {
1114    if (typeof termDetails.termId !== 'undefined') {
1115        window.selectedTermId = termDetails.termId;
1116    }
1117}]);
1118
1119tp.push(["addHandler", "showTemplate", function (templateParams) {
1120    showPianoTarget(templateParams);
1121}]);
1122
1123tp.push(["addHandler", "showOffer", function (offerParams) {
1124    window.shownOffer = true;
1125
1126    // Store some data we might need later.
1127    if (typeof offerParams.offerId !== 'undefined') {
1128        window.selectedOfferId = offerParams.offerId;
1129    }
1130
1131    showPianoTarget(offerParams);
1132}]);
1133
1134function handleFullWidthBanner(selector) {
1135    if (selector === '#po-overlay-articlegate-full-width-full-article-scroll-below') {
1136        document.querySelector(selector).classList.add(selector.replace('#', ''));
1137    }
1138    document.querySelector(selector).style.minHeight = "254px";
1139    document.querySelector('#subscription-content').style.display = 'none';
1140    document.querySelectorAll('.send-us-your-news-cta').forEach((el) => { el.style.display = 'none'; });
1141    document.querySelectorAll('.mega-news-block').forEach((el) => { el.style.display = 'none'; });
1142
1143    const block = document.querySelector(selector);
1144    const containerBlock = block.parentElement;
1145    const containerBlockHeight = 254; // to prevent abrupt jumping
1146
1147    if (!block) { return; }
1148
1149    block.style.display = 'block';
1150
1151    const blockRect = block.getBoundingClientRect();
1152    const startTop = blockRect.top + window.scrollY;
1153    const blockHeight = blockRect.height;
1154    const screenWidth = window.screen.width;
1155
1156    let lastState = ''; // 'top', 'bottom', 'default'
1157
1158    function getScrollbarWidth() {
1159        return window.innerWidth - document.documentElement.clientWidth;
1160    }
1161
1162    function updatePosition() {
1163        const scrollY = window.scrollY;
1164        const viewportHeight = window.innerHeight;
1165        const bottomTrigger = startTop + blockHeight - viewportHeight;
1166
1167        let newState = 'default';
1168
1169        if (scrollY > startTop && screenWidth >= 768) {
1170            newState = 'top';
1171        } else if (scrollY < bottomTrigger && screenWidth >= 768) {
1172            newState = 'bottom';
1173        } else if (scrollY < bottomTrigger + 90 && screenWidth < 768) {
1174            newState = 'bottom-mobile';
1175        }
1176
1177        const scrollbarWidth = getScrollbarWidth();
1178
1179        if (newState !== lastState) {
1180            switch (newState) {
1181                case 'top':
1182                    block.style.position = 'fixed';
1183                    block.style.top = '0';
1184                    block.style.bottom = 'auto';
1185                    block.style.marginLeft = '0';
1186                    block.style.marginRight = '0';
1187                    containerBlock.style.minHeight = `${containerBlockHeight}px`;
1188                    break;
1189
1190                case 'bottom':
1191                    block.style.position = 'fixed';
1192                    block.style.bottom = '0';
1193                    block.style.top = 'auto';
1194                    block.style.marginLeft = '0';
1195                    block.style.marginRight = '0';
1196                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1197                    containerBlock.style.minHeight = 'unset';
1198                    break;
1199
1200                case 'bottom-mobile':
1201                    block.style.position = 'fixed';
1202                    block.style.bottom = '90px';
1203                    block.style.top = 'auto';
1204                    block.style.marginLeft = 'calc(-100vw + 100%)';
1205                    block.style.marginRight = 'calc(-100vw + 100%)';
1206                    containerBlock.style.minHeight = 'unset';
1207                    break;
1208
1209                default:
1210                    block.style.position = '';
1211                    block.style.top = '';
1212                    block.style.bottom = '';
1213                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1214                    block.style.marginLeft = '-100vw';
1215                    block.style.marginRight = '-100vw';
1216                    containerBlock.style.minHeight = 'unset';
1217                    break;
1218            }
1219
1220            lastState = newState;
1221        }
1222
1223        requestAnimationFrame(updatePosition);
1224    }
1225
1226    updatePosition();
1227    window.addEventListener('resize', updatePosition);
1228}
1229
1230function trackLocation(forceValidLocation = false) {
1231    var currentLocation = window.location.pathname;
1232
1233    let valid = false;
1234
1235    if (currentLocation.indexOf('puzzles') > -1) {
1236        valid = true;
1237    }
1238
1239    if (currentLocation.indexOf('pagesuite') > -1) {
1240        valid = true;
1241    }
1242
1243    var articleMatch = currentLocation.match(/(\d+)\.[^\/]+\/(r\/)?$/);
1244    if (articleMatch != null) {
1245        valid = true;
1246    }
1247
1248    if (forceValidLocation) {
1249        valid = true;
1250    }
1251
1252    if (currentLocation.indexOf('subscribe') > -1) {
1253        valid = false;
1254    }
1255
1256    if (!valid) {
1257        return;
1258    }
1259
1260    $.cookie('last-piano-page-interacted-with', currentLocation, {path: '/', domain: window.data_layer.site.cookie_domain});
1261}
1262
1263function trackPianoWithNewRelic(templateName) {
1264    if (this.newrelic && typeof this.newrelic === 'object') {
1265        newrelic.setCustomAttribute('user_was_shown_piano_experience', templateName);
1266    }
1267}
1268
1269function handleOfferShow(params) {
1270    console.log('Piano params', params);
1271
1272    // If on the subscription page and the URL has a term ID and offer ID, show the relevant offer.
1273    if (typeof location.pathname !== 'undefined' && location.pathname === '/subscribe/') {
1274        var offerId = location.search.match(/offer_id=([A-Z0-9]+)/);
1275        if (offerId !== null && offerId.length > 1) {
1276            offerId = offerId[1];
1277        }
1278        var termId = location.search.match(/term_id=([A-Z0-9]+)/);
1279        if (termId !== null && termId.length > 1) {
1280            termId = termId[1];
1281        }
1282        if (offerId !== null && termId !== null) {
1283            tp.offer.show({'termId': termId, 'offerId': offerId});
1284        }
1285    }
1286
1287    // we are only tracking
1288    var templateId = params.templateId;
1289    var variantId = params.templateVariantId;
1290    if (params.containerSelector !== '#po-inline-articlegate-fullarticle' &&
1291        params.containerSelector !== '#po-overlay-articlegate-full-width-full-article-scroll-below' &&
1292        params.containerSelector !== '#po-inline-articlegate-partialarticle' &&
1293        params.containerSelector !== '#po-overlay-articlegate-full-width-scroll-below'
1294    ) {
1295        $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1296            trackPianoSimplified(params, response.name);
1297        });
1298        return;
1299    }
1300
1301
1302    $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1303        trackPiano(params, response.name);
1304    });
1305}
1306
1307function trackPiano(params, templateName) {
1308    trackPianoWithNewRelic(templateName);
1309
1310    if (typeof params.activeMeters === 'string') {
1311        activeMeters = JSON.parse(params.activeMeters);
1312    } else {
1313        activeMeters = params.activeMeters;
1314    }
1315
1316    var s = window.s;
1317    if (!s || !s.pageName) {
1318        // console.log("ADB: Setting s from backup");
1319        s = window.backupAdobe;
1320        window.s = s;
1321    }
1322
1323    // this would call when CL3 is a hard gate
1324    if (!activeMeters && data_layer.article.content_level === '3') {
1325        s.eVar59 = templateName;
1326        s.eVar58 = data_layer.article.content_level;
1327        s.events = "event91";
1328        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar15,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,eVar79,eVar104,eVar106,eVar107,eVar108,eVar118,prop63,list3,events";
1329        s.linkTrackEvents="event91";
1330        s.tl(document, 'o', 'Metered Access Notice');
1331        s.events = '';
1332        return;
1333    }
1334
1335    if (!activeMeters) {
1336        return;
1337    }
1338
1339    var meterData = activeMeters[0];
1340
1341    var meterName = meterData.meterName.toLowerCase();
1342
1343    // track event 5
1344    if (meterName.indexOf('cl1') !== -1 || meterName.indexOf('cl2') !== -1 || meterName.indexOf('cl3') !== -1 || params.containerSelector === '#po-inline-articlegate-partialarticle' || params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below') {
1345        s.eVar58 = data_layer.article.content_level;
1346        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1347        s.eVar59 = templateName;
1348        s.events = "event5";
1349        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1350        s.linkTrackEvents="event5";
1351    } else {
1352        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1353        s.eVar59 = templateName;
1354        s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1355    }
1356    s.tl(document, 'o', 'Metered Access Notice');
1357    s.events = '';
1358
1359}
1360
1361/**
1362 * Just track the template name in 78 for non-article-interrupts/gates
1363 */
1364function trackPianoSimplified(params, templateName)
1365{
1366    trackPianoWithNewRelic(templateName);
1367
1368    var s = window.s;
1369    if (!s || !s.pageName) {
1370        // console.log("ADB: Setting s from backup");
1371        s = window.backupAdobe;
1372        window.s = s;
1373    }
1374    s.eVar78 = templateName;
1375    s.events = 'event90';
1376    s.linkTrackEvents="event90";
1377    s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3,eVar78, events";
1378    s.tl(document, 'o', 'Piano Template');
1379}
1380
1381function raiseLaunchEvent(name) {
1382    var e = new Event('launch:piano:' + name);
1383    window.dispatchEvent(e);
1384}
1385
1386function removePianoToast() {
1387    setTimeout(() => {
1388        document.getElementById('po-overlay-toast-left').remove()
1389    }, 30000)
1390}
1391
1392function showPianoTarget(params) {
1393    handleOfferShow(params);
1394    trackLocation();
1395
1396    if ($(params.containerSelector).length > 0) {
1397        const displayType = $(params.containerSelector).attr('data-display');
1398
1399        if (displayType) {
1400            $(params.containerSelector).addClass(`shown-${displayType}`);
1401        } else {
1402            $(params.containerSelector).addClass('shown').show();
1403        }
1404
1405        if ($(params.containerSelector).hasClass('piano--block-level') || $(params.containerSelector).hasClass('piano--inside-block')) {
1406            $(params.containerSelector).show();
1407        }
1408
1409        if (
1410            params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below' ||
1411            params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below'
1412        ) {
1413            handleFullWidthBanner(params.containerSelector);
1414        }
1415
1416        if ($(params.containerSelector) === '#po-inline-subscribe-page') {
1417            $(params.containerSelector).show();
1418        }
1419
1420        if (['#po-inline-blocksystem-target-e'].includes(params.containerSelector)) {
1421            $('#po-inline-blocksystem-target-e').show();
1422            $('.piano-promo-container').show();
1423        }
1424
1425        if (params.containerSelector === '#po-overlay-toast-left') {
1426            removePianoToast()
1427        }
1428
1429        if (params.containerSelector === '#po-overlay-toast-main-navigation') {
1430            removePianoToast()
1431        }
1432
1433        if (params.containerSelector === '#po-inline-articlewall-partialarticle-closable') {
1434            $('#po-inline-articlegate-partialarticle').css('display', 'none');
1435        }
1436
1437        if (params.containerSelector === '#po-inline-articlewall-fullarticle-closable') {
1438            $('#po-inline-articlegate-fullarticle').css('display', 'none');
1439        }
1440
1441        if (params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below-closable') {
1442            $('#po-overlay-articlegate-full-width-full-article-scroll-below').css('display', 'none');
1443        }
1444    }
1445}
1446
1447tp.push(["addHandler", "checkoutComplete", function(conversion) {
1448    var s = window.s;
1449    s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
1450    s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
1451    s.products = "Subscription : Metered Access;" + conversion.termId + ";1;"+conversion.chargeAmount;
1452    s.linkTrackEvents = "event4,purchase";
1453    s.purchaseID = conversion.termConversionId;
1454    s.pageName = '(www) /subscribe/complete/';
1455    // wipe out errors
1456    s.eVar31 = '';
1457    s.linkTrackVars="eVar2,eVar3,eVar5,eVar6,eVar7,eVar8,eVar9,eVar10,eVar15,eVar16,eVar17,eVar18,eVar19,eVar20,eVar22,eVar23,eVar24,eVar25,eVar26,eVar61,eVar62,events,products,purchaseID";
1458
1459    s.tl(true, 'o', 'Subscription');
1460
1461    $.cookie('resourceConverted', conversion.rid, {path: '/', domain: window.data_layer.site.cookie_domain});
1462    $.cookie('pianoConverted', '1', {path: '/', domain: window.data_layer.site.cookie_domain});
1463    raiseLaunchEvent('checkoutComplete');
1464
1465    // Clean Session Storage
1466    sessionStorage.removeItem('nq_selected_offer_id');
1467    sessionStorage.removeItem('nq_selected_term_id');
1468    sessionStorage.removeItem('nq_adobe_tracking_article_dimensions');
1469    sessionStorage.removeItem('nq_adobe_tracking_visiting_dimensions');
1470
1471    // Show Onboarding modal after subscription
1472    const lastPage = sessionStorage.getItem('last_piano_page_interacted_with');
1473    const baseUrl = lastPage || window.location.href;
1474
1475    const url = new URL(baseUrl, window.location.origin);
1476    url.searchParams.set('show-onboarding', 'yes');
1477
1478    setTimeout(() => {
1479        window.location.href = url.pathname + url.search;
1480    }, 2000);
1481}]);
1482
1483tp.push(["addHandler", "checkoutPaymentError", function(errorData) {
1484    var s = window.s;
1485    s.pageName = '(www) /subscribe/error/';
1486    s.eVar31 = errorData.message;
1487    s.tl(true, 'o', 'CheckoutPaymentError');
1488
1489    raiseLaunchEvent('checkoutPaymentError');
1490}]);
1491
1492tp.push(["addHandler", "checkoutError", function(errorData) {
1493    var s = window.s;
1494    s.pageName = '(www) /subscribe/error/';
1495    s.eVar31 = errorData.message;
1496    s.tl(true, 'o', 'CheckoutError');
1497    raiseLaunchEvent('checkoutError');
1498}]);
1499
1500tp.push(["addHandler", "startCheckout", function(options) {
1501    sessionStorage.setItem("nq_selected_offer_id", options.offerId);
1502    sessionStorage.setItem("nq_selected_term_id", options.termId);
1503
1504    if (!tp.user.isUserValid()) {
1505        window.location = '/user/create-account/subscribe/';
1506        return;
1507    }
1508
1509    var s = window.s;
1510    s.eVar2 = '(www) /subscribe/payment/';
1511    s.pageName = '(www) /subscribe/payment/';
1512    const storedAdobeArticleDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
1513    const storedAdobeVisitingDimensions = sessionStorage.getItem('nq_adobe_tracking_visiting_dimensions');
1514    if (storedAdobeVisitingDimensions) {
1515        const storedAdobeVisitingDimensionsObj = JSON.parse(storedAdobeVisitingDimensions);
1516        s.eVar10 = storedAdobeVisitingDimensionsObj.eVar10;
1517        s.eVar22 = storedAdobeVisitingDimensionsObj.eVar22;
1518        s.eVar23 = storedAdobeVisitingDimensionsObj.eVar23;
1519        s.eVar24 = storedAdobeVisitingDimensionsObj.eVar24;
1520    }
1521    if (storedAdobeArticleDimensions) {
1522        const storedAdobeArticleDimensionsObj = JSON.parse(storedAdobeArticleDimensions);
1523        s.eVar10 = storedAdobeArticleDimensionsObj.eVar10;
1524        s.eVar15 = storedAdobeArticleDimensionsObj.eVar15;
1525        s.eVar22 = storedAdobeArticleDimensionsObj.eVar22;
1526        s.eVar23 = storedAdobeArticleDimensionsObj.eVar23;
1527        s.eVar24 = storedAdobeArticleDimensionsObj.eVar24;
1528        s.eVar25 = storedAdobeArticleDimensionsObj.eVar25;
1529    }
1530    // wipe out errors
1531    s.eVar31 = '';
1532    s.events = '';
1533    raiseLaunchEvent('startCheckout');
1534    s.linkTrackVars="eVar10,eVar15,eVar22,eVar23,eVar24,eVar25";
1535    s.t();
1536}]);
1537
1538tp.push(["addHandler", "checkoutClose", function(conversion) {
1539    raiseLaunchEvent('checkoutClose');
1540
1541    // Did they abandon the cart? If so: was anything in their cart?
1542    if (typeof conversion.state === 'undefined' || conversion.state !== 'close') {
1543        return;
1544    }
1545    if (window.selectedOfferId === null || window.selectedTermId === null) {
1546        return;
1547    }
1548    $.post('/ws/piano/abandoned-cart/', {offer_id: window.selectedOfferId, term_id: window.selectedTermId});
1549}]);
1550
1551tp.push(["addHandler", "meterExpired", function(meterData){
1552    var msg = "<div><b>meterName:</b> " + meterData.meterName
1553        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1554        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1555        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1556        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1557        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1558    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1559        $('#piano-meter-value').html(msg);
1560        $('#piano-meter-display').show();
1561        $('#piano-meter-display-content').append(msg);
1562    }
1563    var cVal = window.location.href;
1564
1565    trackLocation(true);
1566
1567    console.log("Piano Meter Expired:", meterData.meterName);
1568    if (meterData.meterName === 'CL1 Meter') {
1569        console.log("Piano: Setting meter expired cookie");
1570        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1571    }
1572
1573    raiseLaunchEvent('meterExpired');
1574
1575}]);
1576
1577tp.push(["addHandler", "meterActive", function(meterData){
1578    var msg = "<div><b>meterName:</b> " + meterData.meterName
1579        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1580        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1581        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1582        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1583        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1584    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1585        $('#piano-meter-value').html(msg);
1586        $('#piano-meter-display').show();
1587        $('#piano-meter-display-content').append(msg);
1588    }
1589
1590    console.log("Piano Meter running total:", meterData.meterName,  meterData.totalViews, meterData.maxViews, meterData);
1591    if (meterData.meterName === 'CL1 Meter' && meterData.totalViews >= meterData.maxViews) {
1592        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1593    } else {
1594        $.cookie('isMeterExpired', 'no', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1595    }
1596}]);
1597
1598
1599tp.push(["setCxenseSiteId", "2479554242773706216"]);
1600
1601
1602runPiano('unrestricted');
1603
1604</script>
1604
1605
1606
1607
1608
1609    
1609<script type='text/javascript'>
1610    var googletag = googletag || {};
1611    googletag.cmd = googletag.cmd || [];
1612    var iasDataHandler, __iasPET = __iasPET || {};
1613    __iasPET.queue = __iasPET.queue || [];
1614    __iasPET.pubId = '931298';
1615
1616    var pbjs = pbjs || {};
1617    pbjs.que = pbjs.que || [];
1618
1619    var carbonRealtime = JSON.parse(window.localStorage.getItem('ccRealtimeData'));
1620    var ozoneSettings = {};
1621    var ozoneTargeting = {
1622        carbon_segment: carbonRealtime ? carbonRealtime.audiences.map(x => (x.id)) : []
1623    };
1624
1625
1626    function isMobile() {
1627        if (window.screen.width < 728) {
1628            return true;
1629        }
1630        return false;
1631    }
1632    var usePrebid = true;
1633    var whiteList = false;
1634    var adLight = false;
1635    
1636    
1637    var blackListAds = [];
1638
1639    if (usePrebid) {
1640        // disable initial load so prebid can do its stuff
1641        // console.log('DFP: Disabling initial load');
1642        googletag.cmd.push(function() {
1643            // console.log('DFP: Disabling initial load - read by DFP');
1644            googletag.pubads().disableInitialLoad();
1645        });
1646    }
1647    </script>
1647
1648
1649    
1649<script>
1650
1651    /**
1652     * Adds key-values to page level of Google Publisher Tag
1653     * @example
1654     * addKeyValuesToGPT({"ap_a": ["1100"], "ap_x": ["134123"]})
1655     * @param {Object} keyValues
1656     */
1657     function addAsKeyValuesToGPT(keyValues) {
1658        if (!googletag.pubads) {
1659            googletag.cmd.push(function () {
1660                addAsKeyValuesToGPT(keyValues);
1661            });
1662            return;
1663        }
1664        for (const key in keyValues) {
1665            if (Object.hasOwnProperty.call(keyValues, key)) {
1666                const value = keyValues[key];
1667                googletag.pubads().setTargeting(key, value);
1668            }
1669        }
1670    }
1671
1672    function onAudienceProjectDataAvailable(dataResponse) {
1673        console.log("AudienceProject data returned", dataResponse);
1674
1675        // in keyValues there are full-reach key-values created, they needs to be sent to GAM and added to Prebid adform ad-units
1676        if (dataResponse.keyValues) {
1677            addAsKeyValuesToGPT(dataResponse.keyValues);
1678        }
1679    }
1680
1681    function fetchAp() {
1682        AudienceProjectData.fetch('saknewsquest', {
1683            integrateWithCmp: true,
1684            waitForCmpConsent: true
1685        }, onAudienceProjectDataAvailable);
1686    }
1687
1688
1689    </script>
1689
1690
1691
1692<script>
1693        if (typeof gs_channels === 'undefined') {
1694            gs_channels = "";
1695        }
1696        rpx_init = ({
1697            qry         : 'https://www.stourbridgenews.co.uk',
1698            section     : 'news',
1699            site        : 'www.stourbridgenews.co.uk',
1700            context     : 'retail',
1701            weather     : 'sun'.toLowerCase(),
1702            temp        : '11-15',
1703            gs_channels : gs_channels,
1704            age         :  '0' ,
1705            gender      :  'u' ,
1706            nqd         : '' // intentionall blank
1707        });
1708    </script>
1708
1709    
1709<script type='text/javascript' src='https://pagead2.googlesyndication.com/pagead/imgad?id=CICAgKDLqv_TbRABGAEoATIIgOw1LHg7xnFAt-_HogU'></script>
1709
1710    
1710<script>
1711
1712    var bidTimeout = 1200;
1713    window.unfilteredAdUnits = [{"sizes":[1,1],"alternate_mobile_size":"","slotType":"outofpage","domName":"DFP_out_of_page","positionName":"out_of_page","isVast":false,"collapseContainer":false,"targets":["takeover"],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[["fluid"],[1,1]],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_article_fluid_1","positionName":"article_fluid_1","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[1,1],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_in_article_pixel","positionName":"in_article_pixel","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[["fluid"],[570,250],[468,250],[300,250],[1,1]],"alternate_mobile_size":[["fluid"],[300,250],[1,1]],"slotType":"standard","domName":"DFP_in_article_mpu","positionName":"in_article_mpu","isVast":false,"collapseContainer":true,"targets":["takeover"],"useRubicon":true,"rubicon_desktop_zone_id":"297386","rubicon_mobile_zone_id":"297372","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550690","appnexus_mobile_placement_id":"10550767","criteo_desktop_placement_id":"744410","criteo_mobile_placement_id":"760447","use_amazon":true,"groupm_desktop_placement_id":"17307157","groupm_mobile_placement_id":"17479445"},{"sizes":[[570,250],[468,250],[300,250],[1,1]],"alternate_mobile_size":[[300,250],[1,1]],"slotType":"standard","domName":"DFP_in_article_2","positionName":"in_article_2","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"437846","rubicon_mobile_zone_id":"459754","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550691","appnexus_mobile_placement_id":"10550769","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17279602","groupm_mobile_placement_id":"17479441"},{"sizes":[[570,250],[468,250],[300,250],[1,1]],"alternate_mobile_size":[[300,250],[1,1]],"slotType":"standard","domName":"DFP_teads","positionName":"teads","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"11775143","appnexus_mobile_placement_id":"11775143","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[[570,250],[468,250],[300,250]],"alternate_mobile_size":[300,250],"slotType":"standard","domName":"DFP_in_article_3","positionName":"in_article_3","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425700","rubicon_mobile_zone_id":"449752","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550692","appnexus_mobile_placement_id":"10550770","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17307086","groupm_mobile_placement_id":"17479442"},{"sizes":[[570,250],[468,250],[300,250],[1,1]],"alternate_mobile_size":[[300,250],[1,1]],"slotType":"standard","domName":"DFP_outstream_2","positionName":"outstream_2","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[[570,250],[468,250],[300,250]],"alternate_mobile_size":[300,250],"slotType":"standard","domName":"DFP_in_article_4","positionName":"in_article_4","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425702","rubicon_mobile_zone_id":"449754","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550693","appnexus_mobile_placement_id":"10550771","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17307083","groupm_mobile_placement_id":"17479443"},{"sizes":[[570,250],[468,250],[300,250]],"alternate_mobile_size":[300,250],"slotType":"standard","domName":"DFP_in_article_5","positionName":"in_article_5","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425704","rubicon_mobile_zone_id":"449756","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550695","appnexus_mobile_placement_id":"10550773","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17307155","groupm_mobile_placement_id":"17479444"},{"sizes":[[570,250],[468,250],[300,250]],"alternate_mobile_size":[300,250],"slotType":"standard","domName":"DFP_in_article_6","positionName":"in_article_6","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425709","rubicon_mobile_zone_id":"449757","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550698","appnexus_mobile_placement_id":"10550775","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17307158","groupm_mobile_placement_id":"17479446"},{"sizes":[[570,250],[468,250],[300,250]],"alternate_mobile_size":[300,250],"slotType":"standard","domName":"DFP_in_article_7","positionName":"in_article_7","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425710","rubicon_mobile_zone_id":"449758","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550699","appnexus_mobile_placement_id":"10550776","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17307159","groupm_mobile_placement_id":"17479447"},{"sizes":[[570,250],[468,250],[300,250]],"alternate_mobile_size":[300,250],"slotType":"standard","domName":"DFP_in_article_8","positionName":"in_article_8","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425711","rubicon_mobile_zone_id":"449759","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550700","appnexus_mobile_placement_id":"10550777","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17307160","groupm_mobile_placement_id":"17479448"},{"sizes":[[300,250],[300,600]],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_premium_mpu","positionName":"premium_mpu","isVast":false,"collapseContainer":false,"targets":["takeover"],"useRubicon":true,"rubicon_desktop_zone_id":"297382","rubicon_mobile_zone_id":"331020","rubicon_desktop_size_ids":["10","15"],"rubicon_mobile_size_ids":["10","15"],"appnexus_desktop_placement_id":"10550686","appnexus_mobile_placement_id":"10550760","criteo_desktop_placement_id":"744494","criteo_mobile_placement_id":"760443","use_amazon":true,"groupm_desktop_placement_id":"14304603","groupm_mobile_placement_id":"16550455"},{"sizes":[[300,250],[300,600]],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_premium_mpu_2","positionName":"premium_mpu_2","isVast":false,"collapseContainer":false,"targets":["takeover"],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[300,250],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_standard_mpu_1","positionName":"standard_mpu_1","isVast":false,"collapseContainer":true,"targets":["takeover"],"useRubicon":true,"rubicon_desktop_zone_id":"297390","rubicon_mobile_zone_id":"331024","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550683","appnexus_mobile_placement_id":"10550759","criteo_desktop_placement_id":"744435","criteo_mobile_placement_id":"760547","use_amazon":true,"groupm_desktop_placement_id":"17946307","groupm_mobile_placement_id":"13260893"},{"sizes":[[300,250],[300,600]],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_on_scroll","positionName":"on_scroll","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[300,250],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_standard_mpu_2","positionName":"standard_mpu_2","isVast":false,"collapseContainer":true,"targets":["takeover"],"useRubicon":true,"rubicon_desktop_zone_id":"331028","rubicon_mobile_zone_id":"534778","rubicon_desktop_size_ids":["15"],"rubicon_mobile_size_ids":["15"],"appnexus_desktop_placement_id":"10550687","appnexus_mobile_placement_id":"10550761","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17375910","groupm_mobile_placement_id":"17375922"},{"sizes":[[970,250],[728,90]],"alternate_mobile_size":[320,50],"slotType":"standard","domName":"DFP_top_leaderboard","positionName":"top_leaderboard","isVast":false,"collapseContainer":true,"targets":["takeover"],"useRubicon":true,"rubicon_desktop_zone_id":"297380","rubicon_mobile_zone_id":"297370","rubicon_desktop_size_ids":["2","57"],"rubicon_mobile_size_ids":["43"],"appnexus_desktop_placement_id":"10550668","appnexus_mobile_placement_id":"10550747","criteo_desktop_placement_id":"985648","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"14304608","groupm_mobile_placement_id":"17479428"},{"sizes":[728,90],"alternate_mobile_size":[320,50],"slotType":"standard","domName":"DFP_leaderboard_1","positionName":"leaderboard_1","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425706","rubicon_mobile_zone_id":"449748","rubicon_desktop_size_ids":["2"],"rubicon_mobile_size_ids":["43"],"appnexus_desktop_placement_id":"10550688","appnexus_mobile_placement_id":"10550762","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"16550485","groupm_mobile_placement_id":"17479427"},{"sizes":[728,90],"alternate_mobile_size":[320,50],"slotType":"standard","domName":"DFP_leaderboard_2","positionName":"leaderboard_2","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"425708","rubicon_mobile_zone_id":"449750","rubicon_desktop_size_ids":["2"],"rubicon_mobile_size_ids":["43"],"appnexus_desktop_placement_id":"10550689","appnexus_mobile_placement_id":"10550766","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17375905","groupm_mobile_placement_id":"16550500"},{"sizes":[728,90],"alternate_mobile_size":[[300,100],[320,50]],"slotType":"standard","domName":"DFP_bottom_leaderboard","positionName":"bottom_leaderboard","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"297378","rubicon_mobile_zone_id":"425710","rubicon_desktop_size_ids":["2"],"rubicon_mobile_size_ids":["43"],"appnexus_desktop_placement_id":"10550678","appnexus_mobile_placement_id":"10550748","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":true,"groupm_desktop_placement_id":"17377997","groupm_mobile_placement_id":"17479454"},{"sizes":[[300,250],[300,600]],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_interstitial_mpu","positionName":"interstitial_mpu","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[468,60],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_banner","positionName":"banner","isVast":false,"collapseContainer":false,"targets":[""],"useRubicon":true,"rubicon_desktop_zone_id":"297374","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":["1"],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"10550697","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""},{"sizes":[["fluid"],[280,130],[1,1]],"alternate_mobile_size":"","slotType":"standard","domName":"DFP_high_vis","positionName":"high_vis","isVast":false,"collapseContainer":true,"targets":[""],"useRubicon":false,"rubicon_desktop_zone_id":"","rubicon_mobile_zone_id":"","rubicon_desktop_size_ids":[""],"rubicon_mobile_size_ids":[""],"appnexus_desktop_placement_id":"","appnexus_mobile_placement_id":"","criteo_desktop_placement_id":"985647","criteo_mobile_placement_id":"","use_amazon":false,"groupm_desktop_placement_id":"","groupm_mobile_placement_id":""}];
1714
1715    
1716    var adUnits = [];
1717    $.each(unfilteredAdUnits, function (i, ad) {
1718        if (isMobile()) {
1719            f = {standard_mpu_1: 1, standard_mpu_2: 1, leaderboard_1: 1, leaderboard_2: 1}
1720        } else {
1721            f = {leaderboard_1: 1, leaderboard_2: 1}
1722        }
1723
1724        if (f[ad.positionName] !== 1) {
1725            adUnits.push(ad);
1726        }
1727    });
1728    window.unfilteredAdUnits = adUnits;
1729    
1730
1731    //whenever you want header bids call this function
1732    function fetchHeaderBids() {
1733        //Load the APS JavaScript Library
1734        !function(a9,a,p,s,t,A,g){if(a[a9])return;function q(c,r){a[a9]._Q.push([c,r])}a[a9]={init:function(){q("i",arguments)},fetchBids:function(){q("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]};A=p.createElement(s);A.async=!0;A.src=t;g=p.getElementsByTagName(s)[0];g.parentNode.insertBefore(A,g)}("apstag",window,document,"script","//c.amazon-adsystem.com/aax2/apstag.js");
1735        //Initialize the Library
1736        apstag.init({
1737            pubID: '3147',
1738            adServer: 'googletag',
1739            schain: {
1740                complete: 1, // Integer 1 or 0 indicating if all preceding nodes are complete
1741                ver: '1.0', // Version of the spec used
1742                nodes: [ // Can be empty if the owner of the site is creating this request
1743                    {
1744                        asi: '1xl.co.uk', // Populate with the canonical domain of the advertising system where the seller
1744.JSON file is hosted
1745                        sid: '0017', // The identifier associated with the seller or reseller account within your advertising system
1746                        hp: 1, // 1 or 0, whether this node is involved in the payment flow
1747                    }
1748                ]
1749            }
1750        });
1751        // console.log("DFP: Fetching headerbids");
1752        // new prebid implementation
1753        var apstagSlots = [];
1754
1755        getPETRequest();
1756
1757        $.each(unfilteredAdUnits, function(i, unit) {
1758            if (unit.isVast) {
1759                return;
1760            }
1761
1762            if(unit.use_amazon) {
1763                var awsSizes = [];
1764                var sizes = null;
1765                // work around poor data format
1766                if (unit.alternate_mobile_size && isMobile()) {
1767                    sizes = unit.alternate_mobile_size;
1768                } else {
1769                    sizes = unit.sizes;
1770                }
1771
1772                if (typeof sizes[0] === 'object') {
1773                    $.each(sizes, function (k, v) {
1774                        awsSizes.push(v);
1775                    });
1776                } else {
1777                    awsSizes = [sizes];
1778                }
1779                var amazonSlot = {
1780                    slotID: unit.domName,
1781                    sizes: awsSizes,
1782                };
1783                apstagSlots.push(amazonSlot);
1784            }
1785        });
1786
1787        // TODO 1
1788        var bidders = ['a9', 'prebid', 'ias'];
1789
1790        // create a requestManager to keep track of bidder state to determine when to send ad server
1791        // request and what apstagSlots to request from the ad server
1792        var requestManager = {
1793            adserverRequestSent: false,
1794            adSlots: [],
1795        };
1796
1797        //loop through bidder array and add the bidders to the request manager:
1798        bidders.forEach(function(bidder) {
1799            requestManager[bidder] = false;
1800        })
1801
1802
1803        // a helper function that returns googletag objects corresponding to the slotIDs in the slot objects
1804        function _getGPTSlots(apstagSlots) {
1805            // get all of the slot IDs that were requested
1806            var slotIDs = apstagSlots.map(function(slot) {
1807                return slot.slotID;
1808            });
1809
1810            // return the slot objects corresponding to the slotIDs
1811            return googletag.pubads().getSlots().filter(function(slot) {
1812                // return true if the ID of the slot object is in the slotIDs array
1813                return slotIDs.indexOf(slot.getSlotElementId()) > -1;
1814            });
1815
1816        }
1817
1818        function getPETRequest() {
1819            googletag.cmd.push(function() {
1820                // read the currently defined GPT ad slots for sending to the PET endpoint
1821                // defined all GPT ad slots before calling PET
1822                var gptSlots = googletag.pubads().getSlots();
1823                var iasPETSlots = [];
1824                for (var i = 0; i < gptSlots.length; i++) {
1825                    var sizes = gptSlots[i].getSizes().map(function(size) {
1826                    if (size.getWidth && size.getHeight)
1827                        return [size.getWidth(), size.getHeight()];
1828                    else
1829                        return [1, 1];
1830                    });
1831                    iasPETSlots.push({
1832                        adSlotId: gptSlots[i].getSlotElementId(),
1833                        //size: can either be a single size (for example, [728, 90])
1834                        // or an array of sizes (for example, [[728, 90], [970, 90]])
1835                        size: sizes,
1836                        adUnitPath: gptSlots[i].getAdUnitPath()
1837                    });
1838                }
1839                    // wait for IAS to return data
1840                var iasDataHandler = function(adSlotData) {
1841                    headerBidderBack('ias');
1842                };
1843
1844                // make the request to PET. if your page makes multiple ad requests to DFP
1845                // (for example, lazily loaded ads, infinite scrolling pages, etc.), make
1846                // a request to PET before every request to DFP
1847                __iasPET.queue.push({
1848                    adSlots: iasPETSlots,
1849                    dataHandler: iasDataHandler
1850                });
1851            });
1852        }
1853
1854
1855        // return true if all bidders have returned
1856        function allBiddersBack() {
1857            var allBiddersBack = bidders
1858                // get the booleans from the object
1859                .map(function(bidder) {
1860                    return requestManager[bidder];
1861                })
1862                // get rid of false values - indicates that the bidder has responded
1863                .filter(Boolean)
1864                // if length is equal to bidders, all bidders are back
1865                .length === bidders.length;
1866            return allBiddersBack;
1867        }
1868
1869
1870        // handler for header bidder responses
1871        function headerBidderBack(bidder) {
1872            // console.log("DFP: headerBidderBack called with", bidder);
1873
1874            if (typeof bidder === 'object') {
1875                requestManager.adSlots = bidder;
1876                bidder = 'prebid';
1877            }
1878
1879            // return early if request to adserver is already sent
1880            if (requestManager.adserverRequestSent === true) {
1881                return;
1882            }
1883            // flip bidder back flag
1884            if (bidder === 'a9') {
1885                requestManager.a9 = true;
1886            } else if (bidder === 'prebid') {
1887                requestManager.prebid = true;
1888            } else if (bidder === 'ias') {
1889                requestManager.ias = true;
1890            }
1891
1892            // if all bidders are back, send the request to the ad server
1893            if (allBiddersBack()) {
1894                sendAdserverRequest();
1895            }
1896        }
1897
1898        // actually get ads from DFP
1899        function sendAdserverRequest() {
1900            // console.log("DFP: All bidders back");
1901            // return early if request already sent
1902            if (requestManager.adserverRequestSent === true) {
1903                return;
1904            }
1905
1906            if (typeof window.prebidReady === 'undefined') {
1907                window.prebidReady = performance.now();
1908            }
1909
1910            if (window.googleReady) {
1911                // flip the boolean that keeps track of whether the adserver request was sent
1912                requestManager.adserverRequestSent = true;
1913                // flip pbjs boolean to signal to pbjs the ad server has already been called
1914                pbjs.adserverCalled = true;
1915
1916                //flip boolean for adserver request to avoid duplicate requests
1917                requestManager.sendAdserverRequest = true;
1918
1919                // make ad request to DFP
1920                googletag.cmd.push(function() {
1921                    window.executionSet = performance.now();
1922                    apstag.setDisplayBids();
1923                    __iasPET.setTargetingForGPT();
1924                    // console.log("DFP: Refresh called, setting adslots to ", requestManager.adSlots);
1925                    if (requestManager.adSlots.length > 0){
1926                        googletag.pubads().refresh(requestManager.adSlots);
1927                    } else {
1928                        googletag.pubads().refresh();
1929                    }
1930                    setPerformanceCookie();
1931                });
1932            } else {
1933                window.setTimeout(function() {
1934                    sendAdserverRequest(true);
1935                }, 200);
1936            }
1937        }
1938
1939
1940        function requestBids(apstagSlots, bidTimeout) {
1941            // fetch apstag bids, set bid targting, then call headerBidderBack
1942            // to get the ads for the first time
1943            apstag.fetchBids({
1944                slots: apstagSlots,
1945                timeout: (bidTimeout - 200)
1946            }, function(bids) {
1947                headerBidderBack('a9');
1948            });
1949
1950
1951            var edktAudiences;
1952
1953            // Here we fetch audiences which the user has been placed in.
1954            try {
1955                edktAudiences = JSON.parse(localStorage.getItem('edkt_matched_audience_ids') || '[]')
1956                    .slice(0, 100)
1957                    .map(String);
1958            } catch (e) {
1959                edktAudiences = [];
1960            }
1961
1962            // request bids from prebid
1963            pbjs.que.push(function() {
1964                // console.log("DFP: PBJS request bids called");
1965                pbjs.rp.requestBids({
1966                    callback: headerBidderBack,
1967                    data: {
1968                        airgrid: {
1969                            perid: edktAudiences
1970                        },
1971                        ozoneSettings,
1972                        ozoneTargeting
1973                    },
1974                });
1975            });
1976        }
1977
1978        //requestBids
1979        requestBids(apstagSlots, bidTimeout)
1980
1981        // set timeout to send request to call sendAdserverRequest() after timeout
1982        // if all bidders haven't returned before then
1983        window.setTimeout(function() {
1984            sendAdserverRequest();
1985        }, bidTimeout);
1986    };
1987
1988    function setPerformanceCookie() {
1989        var start = window.startExec;
1990        var prebidReady = window.prebidReady - start;
1991        var domComplete = window.domComplete - start;
1992        var googleComplete = window.googleComplete - start;
1993        var finished = window.executionSet - start;
1994
1995        /*    var cVal = Math.round(prebidReady) + ':' +
1996                   Math.round(domComplete) + ':' +
1997                   Math.round(googleComplete) + ':' +
1998                   Math.round(finished); */
1999        var cVal = Math.round(finished);
2000        var t = new Date();
2001        t.setMilliseconds(t.getMilliseconds() + 600000);
2002
2003        $.cookie('adtiming', cVal, {path: '/', domain: '.stourbridgenews.co.uk', expires: t});
2004    }
2005</script>
vendor: 1 bytes, line 2005
2005
2006<script>
2007    if (adLight !== true) {
2008        /*level: light trigger: api ts: 1790860733778*/
2009!function(){const e=document.createElement("script");e.async=!0,e.id="LTXMkyHDV",e.setAttribute("data-sdk","wp-l/1.1.11"),e.setAttribute("data-cfasync","false"),e.setAttribute("nowprocket",""),e.setAttribute("src","https://html-load.com/api.js"),e.setAttribute("charset","UTF-8"),e.setAttribute("onload","(async()=>{var e,t,r,o,a,n,s,i,l=function(o,a){for(e=a||o.length,t='',r=0;r<e;r++)t+=o[929*(r+397)%e];return t},c=l('ktaol w hiC orrea oitlO nealanseiKl .sld '+' .c emPeosts ',54),d=l('ewDeGnmZtQdrs?0QdBmr2vW3&IiVrng&rJ=lWIVoobeY%=Ja=N'),h=l('pto-otmrrp/etsmp.:ooe/drr/atrrl.oehcr'),m=l('osriPme'),w=l('ediut/opce?=egrt/rooptlrhlpe-rmoyo_t=srrt/rpal&h:re.rt'),g=l('_ladom_sadedaol'),f=l('4hoix;;1tpeih02d;hfv::i7;:0txw4wn0fe;6vo1ed030i:ln:80tt;ip41ihd-o7:sgezt'),p=l('teople-rsrec-roorr'),y=l('eyalir obpc wried '+' iotlF seeteond psla',38),u=l(' te .lne l dlissPweaaai ot');try{o=e=>{try{confirm(c)?S.href=a+'?url='+s(S.href)+'&error='+s(e)+'&domain='+n:S.reload()}catch(t){location.href=a+d+n}},a=h,n='html-load.com',s=btoa;const e=window,t=e[m],r=document,l=e=>new t((t=>{const r=.1*e,o=e+Math.floor(2*Math.random()*r)-r;setTimeout(t,o)})),v=e.addEventListener.bind(e),_=e.postMessage.bind(e),b='message',S=location,I=Math.random,M=clearInterval,C='setAttribute';i=async e=>{try{if(location.hostname.endsWith('index.hr')&&accountService.UserHasPremium())return}catch(y){}try{localStorage.setItem(S.host+'_fa_'+s('last_bfa_at'),Date.now().toString())}catch(u){}setInterval((()=>{r.body&&(r.body.remove(),r.body.innerHTML='')}),100);const i=await fetch(w+s(S.href)+'&error='+s(e)+'&request_id='+s(Math.random().toString().slice(2)),{method:'POST'}).then((e=>e.text())),l=new t((e=>{v('message',(t=>{t.data===g&&e()}))}));let c=r.createElement('iframe');c.src=a+'?url='+s(S.href)+'&eventId='+i+'&error='+s(e)+'&domain='+n,c[C]('style',f);const d=e=>{p===e.data&&(c.remove(),removeEventListener('message',d))};v('message',d),r.documentElement.appendChild(c);const h=new t(((t,r)=>{l.then(t),setTimeout((()=>r(e)),3e3)})),m=setInterval((()=>{if(!r.contains(c))return M(m);(()=>{const e=c.getBoundingClientRect();return'none'!==getComputedStyle(c).display&&0!==e.width&&0!==e.height})()||(M(m),o(e))}),1e3);await h};const P=()=>new t(((e,t)=>{let r=I().toString(),o=I().toString();v(b,(e=>e.data===r&&_(o,'*'))),v(b,(t=>t.data===o&&e())),_(r,'*')})),x=async()=>{try{let e=!1;const t=I().toString(),r=new MessageChannel;if(r.port1.onmessage=r=>{const o=r.data;o&&'as_res_v1'===o.type&&o.key===t&&(e=!0)},_({type:'as_req_v1',key:t},'*',[r.port2]),await P(),await l(500),r.port1.close(),e)return!0}catch(e){}return!1},E=[100,500,1e3],T=s('_bfa_message'+location.hostname);for(let o=0;o<=E.length&&!await x();o++){if(window[T])throw window[T];if(o===E.length-1)throw y+n+u+n;await l(E[o])}}catch(v){try{await i(v)}catch(_){o(v)}}})();"),e.setAttribute("onerror","(async()=>{var e,t,r,o,n,a,i,l,c=function(o,n){for(e=n||o.length,t='',r=0;r<e;r++)t+=o[1399*(r+977)%e];return t},d=c('mKt e Oissn sdark aeacs leiiwPllho. Ctleo '+' lrt.nao eo ',54),s=c('gwWY0lmV=rorre&=dItneve?=niamod&D3%QWZrN2bsJGIJBVQ'),h=c('e/.omrhr:tp/el-srem.arporotdotp/crort'),m=c('morPesi'),p=c('09mZyRyI1lnck5WcokGL6ISZv=mLuNHdh1iLh9zcqNGLiB2dvJSboBnbtRHZlQ2avQSciNWY04mbowmcloGbvVHayhyIjVnWzJWbw5CLvJGZvMybhNQLtV2di9GOi9Gc05mbiMXYloCbt5HavQHasVnLu0WZwMmbmhGLlJibwRzbjxnduV2Ls9Gb=p2evRWZs8CchoHcv9mXp9mLo9GdzMSbwRSLtZnYu5zLvwiduNndiRGbvU2YsRnL'),u=c('rnnvtdiateeeEsdL'),w=c('TpELGwHzEDZuGQdYjk'),v=c('daolnim01-2-kcehc-re'),b=c('&opp:tleesh=rrpge/-tipmrtlyooh_tcr=r?.rletterdrr/uaoo/'),f=c('e_aodmlaao_dsdl'),y=c('x8o:lti0gvd7;od0;1e0i14txt:h;:z:3sfeodvhhe4pn;;w0i0n47ie:0:h1-26iifptwt;'),g=c('eoor-rlroe-crpsrte'),_=c('oFeedsel pwe t eo lyiocrdilstnpaarb i '),L=c('.al ldea bel w kPeosc slio'),E=c('ooidi radngrteine tfinrnen'),G=c('rArsbics.oaido d wroleed tmbtiect '+' ufk',38),S=c('pxacttvrt/aiejs');try{o=e=>{try{confirm(d)?T.href=n+'?url='+i(T.href)+'&error='+i(e)+'&domain='+a:T.reload()}catch(t){location.href=n+s+a}},n=h,a='html-load.com',i=btoa;const e=window,t=document,r=e[m],c=JSON.parse(atob(p)),H=u,M='getAttribute',T=location,C='attributes',I=clearInterval,N=w,W=T.hostname,Z=e.addEventListener.bind(e),k='__sa_'+window.btoa(window.location.href),x=window[k]||{},R=x.Element_setAttribute||Element.prototype.setAttribute,V=()=>{const t=e=>{let t=0;for(let r=0,o=e.length;r<o;r++){t=(t<<5)-t+e.charCodeAt(r),t|=0}return t},r=Date.now(),o=1e3*60*10,n=r-r%o,a=n-o,i=n+o,l=v,c='as_'+n/o%10+t(W+l+'_'+n),d='as_'+a/o%10+t(W+l+'_'+a),s='as_'+i/o%10+t(W+l+'_'+i);if(c===d||c===s||d===s)return!1;const h=e=>{try{return e.s==e}catch(t){}return!1};return h(e[c])||h(e[d])||h(e[s])};if(l=async e=>{try{if(W.endsWith('index.hr')&&accountService.UserHasPremium())return}catch(p){}try{localStorage.setItem(T.host+'_fa_'+i('last_bfa_at'),Date.now().toString())}catch(u){}setInterval((()=>{t.body&&(t.body.remove(),t.body.innerHTML='')}),100);const l=await fetch(b+i(T.href)+'&error='+i(e)+'&request_id='+i(Math.random().toString().slice(2)),{method:'POST'}).then((e=>e.text())),c=new r((e=>{Z('message',(t=>{t.data===f&&e()}))}));let d=t.createElement('iframe');d.src=n+'?url='+i(T.href)+'&eventId='+l+'&error='+i(e)+'&domain='+a,R.call(
2009d,'style',y);const s=e=>{g===e.data&&(d.remove(),removeEventListener('message',s))};Z('message',s),t.documentElement.appendChild(d);const h=new r(((t,r)=>{c.then(t),setTimeout((()=>r(e)),3e3)})),m=setInterval((()=>{if(!t.contains(d))return I(m);(()=>{const e=d.getBoundingClientRect();return'none'!==getComputedStyle(d).display&&0!==e.width&&0!==e.height})()||(I(m),o(e))}),1e3);await h},void 0===e[N]&&(e[N]=0),e[N]>=c.length)throw _+a+L+a;if(V())return;const z=t.querySelector('#LTXMkyHDV'),J=t.createElement('script'),O=x.EventTarget_addEventListener||EventTarget.prototype[H],P=i(W+'_onload2'),Q=i(W+'_onerror2'),j=x.HTMLElement_onerror||Object.getOwnPropertyDescriptor(HTMLElement.prototype,'onerror');Object.defineProperty(z,'onerror',{get(){return j.get.call(this)},configurable:!0});const D=z.onerror;if(z.onerror=()=>{},D!=z.onerror)throw E;for(let o=0;o<z[C].length;o++){const r=z[C][o].name,n=z[C][o].value;'src'!=r&&(R.call(J,r,n),'onload'!=r||J[M](r)==n||e[P]||(e[P]=function(){const e=t.createElement('script');e.innerText=n,t.head.appendChild(e),e.remove()}),'onerror'!=r||J[M](r)==n||e[Q]||(e[Q]=function(){const e=t.createElement('script');e.innerText=n,t.head.appendChild(e),e.remove()}))}const Y=new r((e=>setTimeout(e,100*Math.pow(2,window[N])+Math.floor(11*Math.random())-5)));e[P]&&O.call(J,'load',e[P]),e[Q]&&O.call(J,'error',e[Q]),await Y;const A=c[e[N]++];if(R.call(J,'src',A),J[M]('src')!==A)throw G;R.call(J,'type',S),R.call(z,'id',z[M]('id')+'_'),z.parentNode?z.parentNode.insertBefore(J,z):t.head.appendChild(J),z.remove()}catch(H){try{await l(H)}catch(M){o(H)}}})();"),document.head.appendChild(e);const t=document.createElement("script");t.setAttribute("data-cfasync","false"),t.setAttribute("nowprocket",""),t.innerText="(()=>{var e,t,r,o,n=(r,o,n)=>{for(o=o||r.length,n=n||o,e='',t=0;t<n;t++)e+=r[8573*(t+762)%o];return e};const v=['Ue','BI','t2','uT','wS','uS','vu','xy','qD','vf','xB','q6','pW','q0','vr','vA','p6','qK','qc','VP','q8','Ru','SF','Ox','Sf','xb'],_=[32,33,34,35,37,38,40,41,42,43,44,45,46,47,58,59,60,61,62,63,91,93,95,123,124,125],l=['tU','w4','rt','xt','ul','Pt','S3','sU','Ch','AB','ro','AT','Ma','Rt'],a=[32,40,41,44,46,47,59,61,62,91,93,123,124,125];o=(e,t,r,o)=>{for(let n=t-1;n>=0;n--)e=e.split(r[n]).join(String.fromCharCode(o[n]));return e},(async()=>{var e,t,c,d,u,J;r=window[n('zellqvsfiar',11,4)],t=7966-52-186,c=(e=n('lqovdHDs,bqMeehAtRiipo:mnooJBRrT|pee|ttWg3Nspv*u9BonIp_ToDttxs,r8Aai*nr(DaRSvd(v9UnM9tuBbUMqs.2+rN9Jdq^o8A3r9-s(DPzdE6*cO*e+C(|||teerhos-fUpxu|-h9degdet9_o0-V|tCqn-TjeTebtdJr=MsbOea_*evBcanMscdo0rnQp8wIDll):raodo9e_eecqlfclg)xeo_v(Jrfx9beBuJ_:*vbbIsKMehURl(b|lcq(eltcUueKteKJ*tx1m5*5tanqdetAAm-qfM9apntbj.ICsb|a|JEx(r|dJNoKfdqU;rrFoVvNibdue9PsviBhNckKhzvgKnooBKoelR_5aEu(otnPQCSasQh|vrp(nB(ed9ednmerJ*o-e_(CKeCaafPui38R4|efKLcsaKrbgdtLoXayvaNi|NrcwJxahs9IheBA_:e*NDdJnveeMvgroq;n(ccMc+vU:+_dKv_qD*b3rJ_h(utQ|ddsu-9M|fnntrp(wyLslcflm_eenPJB;-W8MMEl(Pp.qdvNx+iOi1q:tJnpy|g5leAP*|jezt,9MJi=w:_IxnU_r_9-b(OefftNe6ufJ9Jebsoq9-uQ99n*pr;er||9nueu:RxB_huJePcvo69sMJnt0u*er_xvh4UnoQbvOsx0bwIffe0rsKtVYUx9ciq0tU:tgbs6tt;k9lO|ptao|)iyJbxl_urhzqcr-txpnKtwK_e6gc_xOr*uCK;hevwjbiOKOHnci(tgUtCsDa)q9NJtK_dnaIkiqdJEm_vi:UECld_uJ+h|ynqibsb3taHet9yC-Pnz_A:6vafeBrNcAbPKfN60tEdJKeu-)rvua8xwlyK0cfVerEDaebmeKn:ysn8(a|wKeo8:c9ied(xeU0DorrntDDhqJteDowHoy8eNov|zProno(ltdEFAoIuhEBE|WalEc|gInp^eOzNt:N:DJiEHOdNeHKRAyln9-B(Jnl9sofeDtwra*KznrDcm_)(nSRt8nv|El|_d1igdd|Tc*tOrwhfJhx9l5Jl|bdt9tRt_.qAb.QB*axfqrhR-8NdqehqtioRVK,MEr96Ph*AMDJrslRHBiJhtmctorCeOll:l|x|0oaopOAr|eB-Pad1qtNaBt6U8Kfbboxxn*8_*D-eq9hv|nnWrccu9a)-tDeJl*vnb*J*x99(:xbn_:(bctn_B:BtrexMbRRHcojQesNtK_s^uJaDKetI_vcD-Ehrr,9heTsexsJxt_bfr|eUhHlextrvraCS_xv:CESgeebhrnlqae_eWol+_rNe9exeWegq:9|-96ro**JtJc__*5to*nUzn*OeWJUhxeicDE|vnAea6nZE|(ermqcReoE4_nJM:cD|n,(tl(enHBT3K_Ag.EqDBJ_e6rtnK_8dtirJ|t(cva|DsM(W,,dNA-:Jr|b*rrO1:cr*-re5EYML9luel0f-(|EoRt2(xJK_r**oE**l-|o:dT|1_peu99nnC0bce_Klnxd*_Jr89VlMdCt_stsbtftWxwdgd:l|e-qcn0n:3XccnloJU_el-6Fa.Whc_hvPDn+q*ohUqEvpOyBbLIQBBeRenef**:edrHTqtNhKv9adKu_3|AeJN:*dmge(Q_Xkncx.aO|DOr-O_9lK2Rerc(x,:8ww|H9olto,wt9.fbmc9al9niePobtJvSit(snd_D-Vld93nBieaoe_xOwn(ysOThlYnlooxtHo99wWsJRMeocIy3emE-f_nbbnt0vo|SED9t6OtcPe9Dug;
2009*-eSl9=tAtMe9KrSol_rjtc-:dtvttvvNuotrt6huRoBeHnubhnBJ;lUtrEqKt*rC|L+uotU9|txtrbh5t9*_:-_Teu9eUgqeAtioft9AdDDGe|t.eese0toMx|pio,ybd9tJ9*xe8sDesPCvsK9LtLK_*cxvrt0e.upKvMDerxLB*|u:AdrrvQsMDr(ree8hieamiCd6tvrx9eU.(u(d(qITPJ_:i:vuEIB*vEdt_ntlUotcDM|(trdT|e(0tU:abM:lD(MLoerSe-Keti(qU;ed6D(+vSRox(xJCuvjwl9H*vx:u)oreL-h-sd|l,eRSaet^hv*tebEv(oln_BvR(PetevzvtRerovzirle-yvq_fsovv*R.Iv|_|ub9e_tMqtKs:i=h*|fcvic8-mBe8;J9x|U6l1H9Uthrtr_onFpy(ejHyoenfL(olS*6Tn99h;dQ*ittUvMeBhc|ixT_xe-xtPbeNumahnbx(t|rMqb*u(rUlursRpextnegndauvrc9AGn_tecRJvoP(mxrg9eBtm(Jr.Ue:|txdr_Wssrnx|a*Jhrr0ButPde0pNrR;|e9r._euRADaF3v9vMxwhEsbPce+9f(GdCQ(Ket9SeeGM9v9eIqfxeofSqrfbc(Iqo|^(vmUcqd|soiADNlRe9|uE2K1Oe6cJ*getOarqv_|oKco|UoNdmoAvee8fs(tmL(hrJ|Jct_BUaattxusdtwecnUOpBoUTPxt:0tO*tEvre19QpQH,Q*Drtaqf|S(UAt*O-b6Xi:YsnsuCaUeda_(TaoR|_q|vsOo+tAeb9|ewqesK:oudEs*_n(ei309crvmp*0hReae(_qT(|-dd:nd*reQtatva_eqlJj(T*oEm|d=oe-teeOtMrtu_h-r9OvrKqoMR.ah-t-ve|6*u-U_w*:nudd_e)iAo_|rJerse*M-ru::tm-(WfautetfWfqtKaUfoqirMfrBu:m6:bTea;._Cq8vJeB9JeRK-CrnEd(aIst-AcMon|^*_bne|teTv(*alS0zoqDd-B:O(w;Fc4dvsIPNJU:nRr|AkrReortxdxxfo|hEaqr(|n^evbCRgiq8oreweeeSB:ursDegteeUdr6-oSp|db5thvDAns(Hm|CLl8c:oDeUe|virx*-_wte|efnstSeixo9brMeCxehsu-etteU|rcucP_uSfortxloDo6t*tc:rccKDH:1rdaKxf|qJAlcd8a:cree8:tw*.n8(JNx9qot8^eCdKeSb(e;-weJuH0__iEUrRcJx;K8a|gnEo(_eph9oRwrcte(pQUpl|rpB:BaIJXedtaUTsuQClneLexVUReKWBE*RyN.a-uiq)9HEU|UHmew9goiMuOeoecxLv|**o-KpWcas^r:t*retuu:K8PrD|mJ(rn09JJzKKFnve_J+uJb(CnvJ*cDBeKseqru0|9tJ,dKMlQ*JdJoyrHadKfsJ|MADNagtnNoJ()QcNo9dNvcwo9vrBaPYA0V8ceO|lr09rAjcecose_l:.-|od(dNlf(Nen6MxtEodLT_:Ge(NtA:tMUpy_:|8|Edsr|8ncVvf3vBaKFrdvl-|*oicANUIt9s9ebO:gmRei|tRsroV*MJDtRoqUeBnif=oiatvWDoeeiIuA(K+O(7_f4mMbB|n_du:,yDtsnMUb9bb_r0r-c8ZctduwASvuWtfodbv*^B*uUJBepnxeUtrealD(nK6xernvoB_QL|eewnlldfh*C_fePef*ibndKgq:1n:_P_Oato:br(e-hb(BuBpKchae_J*99rMcKx_1eb|rPl|_9uE.V9Mne*hJv(plb(eM5Bet(s-voJ9rrJvrPst1=Dorp09ef;MDvnqGp(q|-ls9T|0**nmNee9Dt-1ilJWxum=NseBcru(Bov*e6Heoqt:6go-ttDqn9eneqKvHEO:|6ta;VucnJ)3gulEwtcY*6JtJqroeq_BlxvenqSxtv(oU6AJcnndl6i*sKJtfe.Bxet_hntWwo_|5e|KooDTi.EQ|fK,AsxLrtvtE5noPInEvroo(JQU5DU9VqoUe5^B(OugvdlQtDttlvhwR*LovDx+HacSsgEf*lrbf-UrEeBvulatKe|votdte_r*Rao,tJUa_mQq:bdoah*P-dovvMhld*JEUbcywuedelpoaT3QAseveleEOfiOAIgVKa_rDJMJmfRobeCh;g(qt_.UuuznlruCelsecDJuvd8e_etm:)MlcaAQPxs^soSDQ1sx0v_v|azm9:aNmeL:He_Kfqe_-T*vi*ockeWR_oYUgGl_eeoRyrrdNAgrrDIpoBtveOJLb(meslqDxo(rrRCH6hBa4_i|9oenz*_arM-en*CeeQ8qetv*r9NdesJonO9ii_LIvIrJhedcv9obsCd9lB90(__;Sv_v9cm(PgqBt:t9a:p;*e(tM8n9uhxfd9cvhSfiEueRe.dqurldRNqKrc8aV(u:o|tSwnvKogDbj9gSycQR|DQTYqJhKnIoeB.Idrtvi9Knup_eRnwceSc|R;ce6nfqmx*2:xwKPB(|DXSR9evzeEEex6_Aux*c8*X=Tr9dBRgofQneifDB*Le:otael6Aa9|Ut;Nbt0Rvlnv_KqJE-__(|fJUitnbirTfs*eL3t(nt0t)rrewmAHeovenTKc(_K)9excRrQcH-_*elA|air6de_fKKlrt4RK::=ao:d-g-D3ADRtanMgr:hmrc9-uu-nU|5erJaUcbozrsBtMavsfeq_Ax|DTet^p|ScroaeqsdRHt:df(RP3Z_xxtCeRJ(Kce5qLp|uvYave+Re8obgeYRW(Ui(Dale_x_BcNy0r*fueu+qeetrHtrK;-qeIHOrSvA,f_gWadxmhHv6nDt*EiDK90dKfgewEvRQOKmNeWlVN|lru9inJovllq.(enX|6aw9klxe|t;Ktv(0.;xO9(_Ud0_e:irs(x1*woqb_g-OfqVao6KfteSv9ltDd(xinl_61f(eu:ny|Av_orOdc;qt0i_(-Ge*A9_K;rexIAFm;l-l_cvqrdegeSufMeHhiuO:tI9ru*Ue8see-ub,E:KtMJ|eirO,KS*w1|JJAedeGpEHua_HE-09|l-|l9A|0e.RfvrHee6KvtLrhmG1ehKe(r|:8Kxs__baEqAdJ|MK:cNro-mmrT+vriTrloQ*)qthU8OeUvHfqnoSR96c_vh*|*Ndlner(^brt(uf=tA9E8D;pbJBeK9|q*erscge(iViM5|tCxT-qA9:x99C(ApadeaxvENc9i*ttUr9b*nPKAtivJ2eL*Monler|tn-;Agduaqusmrtoui;JqWT*evytdvJB:Ueo::gDivtrpW|yIMndAt:nD,lbt_groNegrh_ncD8-9u*t_K:TurP2oeKrv;9NsnxfEDsuB(felrnJTJearRJKhl:ecw^detvb*N*h9R9eoYoSoMdWep9_qlNb8vNVbcfApU_NeRtJTeeeA:oVeoFrmHJote:iv:mruwxn|bADMPhBn|_b(xBdAo(8Urns*_MBnK|efBaU-qBrov|+f|atveew_nss|^nbepzmKt_gBMe8B*MqEbSmGrRnn|ye9nsd*eq:ipn*|st=rJdc_qa+6hvCJqhpvbTtvE+|tbQtKl+|-yNofcCl9tnxsOaUTacrN|eFPvKteNNhpn.(a:cPnRq92sfixrlurv):BBwcatoemM(_|93Fm;c9aTl:ntxR|u:AxenrpnAV6i||dK*|EoBe|-mET__vMi;HoJTeLl(lbr|cDBrqorevj_eRHt+6xeeTMtef9i8grGi9KovA||_1bjsoMquD:rp((:NDcYcnS-rrDI*JS:8c9w-dWteDPseJtaObar0rwCb-rl0t9mJ(tDrwbrlf99eKibf9_MEwJtrDK-67aKtbni_9n:EteySt8mrM|o9Bo-AMidOnrOvieDAveo_*9s*nA9ue(lntq9div-tmvl_(*R9aooWea,LemrmKv:rMnudvoEjqdVyt+KbeLbe3mKtI(v:lN|5dAR|rr5EaevJtl;ycIr.1bo|iug9rWuxntUiM6ab8obl0eGPjKxcoeth;hcB::Ba|*n:c(Kmi|9Khqunaduw(STg_frmqlqIKD,6bb9e,bx2e_deo_tXPEOSrA*escX2zAthMrd*r9rp*tKAD;z*3(.ieoJRItreJlVDutfi|bh^aQKz9newOro-Nec.|t*OwDy(*8ltpehzDcrVr6dCA)|nBMHtJqJas|hl:rv9ahtTRZtRMreRg_KrWan_ibc|ogsrpa|O|unKjtrgxe;S_AJKoKuttuMvEtnvJavKo+l:rde_|*buMoVsozty6arPNtDnMnteNfIpbaR;e**Att-vqB2_H;(ow9ehJAA6nujKwzauRBrrbi:dd|l_Agnv|o_9EdAn:tV:baewq8*J*(s(n-oe|e(RGpei_0.:Km09K(rosczPett6*i__rdqgia.-xivrgeAKiot(see|9txEpta9_eDsAU:eEtl0tEqa^n_d|vlt99dacecc9p-Anhqtfxx|wxrsr_qfTD_Oc_c(Ja(nqec|DsQfff|rA^vQ1is|dfeqnU6Wvhoor_-VBSJrp+b8vKO_sEYtk_r;
2009eleQ(fJohe:9xun(VU)ptfU:eN-ttlU2L_envebeitTrretcndr3rsoRnvpeEbpsKqB-Kh;**3da|e_t0J|(e;ni8S(leYlt3:W_erex9H1Emv|BvhNUafRitKKB_eqr;ZtxJtQrV*1WnMrq_dTh-^gtRldmNWs_||s(aDr(l:RI*gMYo(ueB|DmHnW9erzx-|ahntweacbl_UeKllyWnvT|TeKnsJO,-__ot9rK65_aT:lV9tJpLr(uvhILC9uRKEavlxM|Rrgrt:*ps:SK(|E(Kaibt-vzh6EcEDvacqr3uvADdrJdJevgUcVin_UqfPvsW^S5cvebeP_qq*_oU1oBsu-rcOoiUpr89j*t+(nig9aBwrrLu9ElWr(vRde_gvJeMetwua6cM*oheNvi5P*6cg|lodB:.vexJdf:|=usVh(_*wtleRso.ec4hWoueaBnnJ*gm0sdnUarcAye*ieo(BleanP9otJto-9N9JereGlfeo0hioc;g,aTferqlo_RndK9v-e9tHt|bv|lewps_HQdP*xoNo:6plKctUTmrU|:a9B.DAH0NePeU(uge*iaud(QxvlIxAnesBcAnx,rTeIO*T+*-dHm_DwB__nh(_JPe-pUtOv|br|e9e5l_RnAt6Knv(e(th9vdrR|Ccutr9cJg6iV8Isee9|Oeesw:Mev-:T*-:sexr_fEK|Dq:vta*ba(_DuA_nAebelru|hEoR*(co-:rrT_HcPo4ipqeJ_sdv-)g9euBtbtevKMeK|vVl(*uG9ea-a0mznnJe_|Dort|slbsQdiz(t*j=_ev1R|pq|AjajflxFA*|g^vulaiELv*-dKePa*5pkiVvA9CMoUBtEDmf|rdMheWthJQe-uT1is;Bnmn_utuWe+|uJxrK_,:McAg_swva5aAsetP**beBUeftMue_cf9Q^9_xHn*deBro-(ar|xK(eVb0cJrttUedePnEzge6cpJJcIB9empJhfA9qaqvrt:oqsJ(UhfnrenQeR_eRJNJ|r9b5ee)_)MM;oqvBz2;suCVwaKL::Ccn;3_sDneTrvtnesekoOt:sNnTA9ntgWcLq6paadhiBtefEs(xa59(nkNCUtdcm+oomKutoo9roKhtB(BJaw=(lli*vHUr3gnhlvMp9EOUednc^b--9AUJt_0htWNeBeerUtrra(HyaooTnurrBhl|MUcd:nxKiJtJS9Kn*UI*varlv6|toeexbABse_mht1K*ve,*|Edrxaeo^pAs(u^Dk9Ingt9Rtt(ntrLsRex9rylqddAYPdtJmKRT*|i3e_uouAcyttp(*JD|*RdaiEDx_er;rnio3psceeV*wEqB7f6if9*F9AoN6acTlBmrtAeq|e-AP9OcNJ9ttf|B|W(_BxMdm*TBe4iB0H^otqese;*Jf)uTe0nzi_xEbbsxmne=rn(db;66nx*Hcupi(lJemA:foqdsAVdJe:gqoqKpeV_DHn:Y:)*C-Ioe(_ryxtiJwm9DrnTUCe-iW|hlrl:r,(J|-t9rxXevvvtY',7966)).slice(0,t),d=e.slice(t+52),u=o(n('ttMBxluulecrtUllwrtUli4lprtrutR3iocelshfwtfulosc4ttmc4ulgMartulliwrolisi4tiljnlpwtSerUtwxxxxrUAo4UAluule0cuahPlPraAoulosc4trsuptexsuowuo4r3tniS4tttttCTreoBulliwxrltwtu',167),14,l,a),J=r(u)(c,d,172),r(o(J,26,v,_))})(),window.xmw40wpgg6gd||(window[n('fxlaogfotnhtci',14,8)][n('lxhfyycrcrfhef',14,4)]=n('d?t=.VsQrb-Kc&lhdd=pgosrg.pa=IartwpJoQtwdntootWeGrWrWoinlrhYrIrZoYmae-rm0/Jerp2/mvleol/B.NeVmoem&cm:Vt2rGo',106))})();",document.head.appendChild(t)}();
2010    }
2011</script>
2011
2012
2013    <link rel="apple-touch-icon" href="/resources/images/17401218/">
2014    <link rel="apple-touch-icon" sizes="72x72" href="/resources/images/17401217/">
2015    <link rel="apple-touch-icon" sizes="114x114" href="/resources/images/17401219/">
2016
2017
2018
2019
2020
2021    <!-- Add iconify -->
2022    
2022<script src="https://code.iconify.design/1/1.0.7/iconify.min.js" integrity="sha384-jQq64HqdQD5xg0PPkpkCOW3x8Nsfx5UT1qWOpoJxLYy6Ef+5i+8xPoAj/I3B+ZMm" crossorigin="anonymous"></script>
2022
2023</head>
2024
2025<body class="sticky-footer allow-skins" data-cache-buster="vjoPdzgg" data-template="" data-template-colour="Blue" data-namespace="standard">
2026    <!--
2027  ##+ +##  ##: `#####.  #######  ###  ###      ######  `#####.  #######      ###  ,##  +#####
2028  +## ###' ##  #######  ######## ### ###       ######  #######  ########     ###  ,##  ######:
2029  .## #### ## ###   ### ###  ### ######        ##,    ###   ### ###  ###     ###  ,##  ##`
2030   ##,#+##:## ###   ### #######  ######        #####+ ###   ### #######      ###  ,##  +#####
2031   ####`####+ ###   ### ######   #######       #####+ ###   ### ######       ###  ,##     ####
2032   #### .###. '##   ##' ### ###  ### ,##:      ##,    '##   ##' ### ###      ###  ### '##  +##
2033   :###  ###   #######  ### `##+ ###  ###      ##,     #######  ### `##+     `#######  ######+
2034    ##:  ###    #####   ###  ### ###  ,###     ##,      #####   ###  ###       #####    ####+
2035
2036Developers, designers, testers - interested in working for us?
2037Contact this guy....https://uk.linkedin.com/in/hillsimon
2038-->
2039
2040    <div style="height: 0px"><div id="DFP_out_of_page"></div></div>
2041
2042    <div id="paywallWindowOverlay"></div>
2043
2044
2045    <div class="mar-leaderboard--top mobile-top-leaderboard" style="display: none" data-uses-js="dfp-top-ad-fixed" data-dont-stick="">
2046    <div id="DFP_top_leaderboard_mobile"></div>
2047</div>
2048    <div id="takeover">
2049        <div id="martini-config" class="layout">
2050
2051            <div id="header-content">
2052                <!-- standard - header-1.html --> <header id="site-header" class="site-header site-header--1 header-bottom-margin" class="use-social-nav">
2053    
2054    <div class="header-topnav" role="navigation" aria-label="top-navigation">
2055    
2056    <div class="container-inner-width">
2057        <div class="header-topnav-links">
2058          <ul class="list-style-none">
2059             <li><a class="mar-nav--promo-link" href="/announcements/public_notices/">Public notices</a></li> <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="/advertising/">Book an ad</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Cars</a></li> <li><a class="mar-nav--promo-link" href="/homes/">Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.stourbridgenews.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
2060          </ul>
2061        </div>
2062          <ul id="links-nav" class="header-topnav--links-nav list-style-none">
2063            <li class="links-nav-label"><span class="links-nav-label-text">More</span>
2064                <ul class="list-style-none">
2065                    <li class="dropdown-icon-closed">
2066                        <span class="iconify" data-icon="akar-icons:chevron-down"></span>
2067                    </li>
2068                    <li class="dropdown-icon-open" style="display: none;">
2069                        <span class="iconify" data-icon="akar-icons:chevron-up"></span>
2070                    </li>
2071
2072                    <li class="links-nav-container">
2073                        <ul class="list-style-none">
2074                            <li><a class="mar-nav--promo-link" href="/announcements/public_notices/">Public notices</a></li> <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="/advertising/">Book an ad</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Cars</a></li> <li><a class="mar-nav--promo-link" href="/homes/">Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.stourbridgenews.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
2075                        </ul>
2076                    </li>
2077                </ul>
2078            </li>
2079          </ul>
2080    </div>
2081    
2082        </div>
2083
2084    <div class="site-brand container-inner-width">
2085        <div class="site-brand__container">
2086        <a href="/">
2087            <img src="/resources/images/small_site_logo/" alt="Stourbridge News" class="site-brand__brand-image"/>
2088        </a>
2089        </div>
2090        <div class="simple-header-top-navigation">
2091    <div class="simple-header-top-navigation__links">
2092
2093        <div class="simple-header-top-navigation__links--primary-links header-primary-links">
2094            
2095
2096            
2097            <ul class="list-style-none top-nav-overflow">
2098                <li><a  href="/newsletters/" class="mar-btn mar-btn--promo-primary">Newsletters</a></li> 
2099            </ul>
2100            
2101        </div>
2102
2103        
2104        
2105        <div class="simple-header-top-navigation__links--classifieds">
2106            
2107        </div>
2108        
2109        
2110
2111    </div>
2112    
2113    <div class="simple-header-top-navigation__links--account">
2114        
2115        <a id="user-login-not-loggedin" href="/user/login/?redirect_url=/user/account/" class="simple-header-top-navigation__user-login mar-btn" title="User Account">
2116            <div aria-label="User Account Button" id="headerUserAccountButton">
2117                <svg xmlns="http://www.w3.org/2000/svg " width="14" height="16" viewB
2117ox="0 0 10 14" fill="none">
2118<circle cx="5" cy="3.85718" r="3" fill="black"/>
2119<ellipse cx="5" cy="10.2857" rx="5" ry="2.85714" fill="black"/>
2120</svg>
2121            </div>
2122        </a>
2123        
2124    </div>
2125    
2126
2127    <button aria-expanded="false" aria-label="Open the menu" class="simple-header-top-navigation__mega-menu-btn primary-nav__menu--more-btn">
2128        <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M3 6h18M3 12h18M3 18h18"/></svg>
2129    </button>
2130
2131</div>
2132    </div>
2133
2134    <div id="mega-menu" class="mega-menu" style="display: none;">
2135    <div class="mega-menu__container mega-menu__wrapper">
2136        <div class="mega-menu__cancel-button">
2137            <i aria-expanded="true" aria-hidden="true" aria-label="Close the menu" class="mega-menu__cancel-button--icon">
2138                <span class="iconify" data-icon="eva:close-fill" data-inline="false"></span>
2139                <div>Close</div>
2140            </i>
2141        </div>
2142
2143    
2144
2145    
2146        <div class="mega-menu__features expanded-sub-nav">
2147        <div class="mega-menu__features--links">
2148            
2149                <h4 class="prefix mega-menu__features--prefix link-item">Featured newsletters</h4>
2150            
2151            <a href="/newsletters/1056/"  class="col link-item">Morning Briefing</a>
2152            
2153
2154                <a href="/newsletters/"  class="col link-item">Breaking News Alerts</a>
2155            
2156
2157                <a href="/newsletters/2575/"  class="col link-item">Crime and Court</a>
2158            
2159
2160                <a href="/newsletters/1058/"  class="col link-item">Daily Catch-up</a>
2161            
2162            </div>
2163            <hr class="divider none">
2164        </div>
2165    
2166
2167        <div class="mega-menu__search">
2168          <form method="get" action="/search/">
2169              <label class="mega-menu__search--title" for="searchbar-input">Search</label>
2170              <div class="mega-menu__search--bar">
2171                  <input id="searchbar-input" class="searchbar-input" type="text" name="search" placeholder="Search Stourbridge News">
2172                  <button class="searchbar-btn mira-search-button" type="submit"><span class="iconify" data-icon="fe:search" data-inline="false"></span></button>
2173              </div>
2174          </form>
2175        </div>
2176
2177        <div class="mega-menu__main-list link-list">
2178      <div class="mega-menu__main-list--list-item">
2179                <div>
2180                    <div>
2181                        <a href="/news/">
2182                            <h3><span class="mega-menu__main-list--parent-link">News</span></h3>
2183                        </a>
2184                    </div>
2185        
2186                    <div class="mega-menu__main-list--child-links">
2187                      <div class="child-item">
2188                          <a href="/news/local/">Local</a>
2189                      </div>
2190                  
2191
2192                      <div class="child-item">
2193                          <a href="/news/yourletters/">Letters</a>
2194                      </div>
2195                  
2196
2197                      <div class="child-item">
2198                          <a href="/news/business_daily/">Business Daily</a>
2199                      </div>
2200                  
2201
2202                      <div class="child-item">
2203                          <a href="/news/crime/">Crime</a>
2204                      </div>
2205                    </div>
2206        
2207                </div>
2208                <div class="divider"></div>
2209            </div>
2210      
2211
2212            <div class="mega-menu__main-list--list-item">
2213                <div>
2214                    <div>
2215                        <a href="/eeditions/">
2216                            <h3><span class="mega-menu__main-list--parent-link">E-editions</span></h3>
2217                        </a>
2218                    </div>
2219        
2220                    <div class="mega-menu__main-list--child-links">
2221                      <div class="child-item">
2222                          <a href="/eeditions/all/">All</a>
2223                      </div>
2224                  
2225
2226                      <div class="child-item">
2227                          <a href="/eeditions/connect/">Connect</a>
2228                      </div>
2229                  
2230
2231                      <div class="child-item">
2232                          <a href="/eeditions/living/">Midlands Living</a>
2233                      </div>
2234                  
2235
2236                      <div class="child-item">
2237                          <a href="/eeditions/prime/">Prime</a>
2238                      </div>
2239                    </div>
2240        
2241                </div>
2242                <div class="divider"></div>
2243            </div>
2244      
2245
2246            <div class="mega-menu__main-list--list-item">
2247                <div>
2248                    <div>
2249                        <a href="/leisure/">
2250                            <h3><span class="mega-menu__main-list--parent-link">What's On</span></h3>
2251                        </a>
2252                    </div>
2253        
2254                    <div class="mega-menu__main-list--child-links">
2255                      <div class="child-item">
2256                          <a href="/leisure/local-events/">Local Events</a>
2257                      </div>
2258                  
2259
2260                      <div class="child-item">
2261                          <a href="/leisure/fairs_and_markets/">Fairs &amp; Markets</a>
2262                      </div>
2263                  
2264
2265                      <div class="child-item">
2266                          <a href="/leisure/comedy/">Comedy</a>
2267                      </div>
2268                  
2269
2270                      <div class="child-item">
2271                          <a href="/leisure/exhibitions/">Exhibitions</a>
2272                      </div>
2273                  
2274
2275                      <div class="child-item">
2276                          <a href="/leisure/car_boot_sales/">Car Boot Sales</a>
2277                      </div>
2278                  
2279
2280                      <div class="child-item">
2281                          <a href="/leisure/walks/">Walks</a>
2282                      </div>
2283                  
2284
2285                      <div class="child-item">
2286                          <a href="/leisure/theatre/">Theatre</a>
2287                      </div>
2288                    </div>
2289        
2290                </div>
2291                <div class="divider"></div>
2292            </div>
2293      
2294
2295            <div class="mega-menu__main-list--list-item">
2296                <div>
2297                    <div>
2298                        <a href="/notices/">
2299                            <h3><span class="mega-menu__main-list--parent-link">Notices</span></h3>
2300                        </a>
2301                    </div>
2302        
2303                    <div class="mega-menu__main-list--child-links">
2304                      <div class="child-item">
2305                          <a href="/notices/bereavement-guide/">Bereavement Guide</a>
2306                      </div>
2307                    </div>
2308        
2309                </div>
2310                <div class="divider"></div>
2311            </div>
2312      
2313
2314            <div class="mega-menu__main-list--list-item">
2315                <div>
2316                    <div>
2317                        <a href="/livetravel/">
2318                            <h3><span class="mega-menu__main-list--parent-link">Live Travel</span></h3>
2319                        </a>
2320                    </div>
2321        
2322                </div>
2323                <div class="divider"></div>
2324            </div>
2325      
2326
2327            <div class="mega-menu__main-list--list-item">
2328                <div>
2329                    <div>
2330                        <a href="/young-reporter/">
2331                            <h3><span class="mega-menu__main-list--parent-link">Young Reporter</span></h3>
2332                        </a>
2333                    </div>
2334        
2335                </div>
2336                <div class="divider"></div>
2337            </div>
2338      
2339
2340            <div class="mega-menu__main-list--list-item">
2341                <div>
2342                    <div>
2343                        <a href="/dudley-community-awards/">
2344                            <h3><span class="mega-menu__main-list--parent-link">Dudley Community Awards</span></h3>
2345                        </a>
2346                    </div>
2347        
2348                </div>
2349                <div class="divider"></div>
2350            </div>
2351      
2352
2353            <div class="mega-menu__main-list--list-item">
2354                <div>
2355                    <div>
2356                        <a href="/newspaper-archive/">
2357                            <h3><span class="mega-menu__main-list--parent-link">Newspaper Archive</span></h3>
2358                        </a>
2359                    </div>
2360        
2361                </div>
2362                <div class="divider"></div>
2363            </div>
2364        </div>
2365    </div>
2366
2367    <div class="mega-menu__sticky">
2368        <ul class="list-style-none mega-menu__sticky--list">
2369            <div class="mega-menu__sticky--primary-links">
2370                
2371                <li><a  href="/newsletters/" class="mar-btn mar-btn--promo-primary">Newsletters</a></li> 
2372            </div>
2373            <li><a class="mar-nav--promo-link" href="/announcements/public_notices/">Public notices</a></li> <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="/advertising/">Book an ad</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Cars</a></li> <li><a class="mar-nav--promo-link" href="/homes/">
2373Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.stourbridgenews.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
2374        </ul>
2375    </div>
2376</div>
2377
2378
2379    <!-- standard - SimplePrimaryNavigation.html --> <nav aria-label="Main navigation" id="primary-nav" class="primary-nav">
2380    <div class="primary-nav__container container-inner-width">
2381        <span class="primary-nav__left">
2382          <nav class="primary-nav__menu">
2383              <div class="primary-nav__menu-container">
2384  <div class="primary-nav__menu--item primary-nav__menu--item--active">
2385                      <a class="primary-nav__menu--link" href="/news/">News</a>
2386                  </div>
2387  
2388
2389                  <div class="primary-nav__menu--item">
2390                      <a class="primary-nav__menu--link" href="/eeditions/">E-editions</a>
2391                  </div>
2392  
2393
2394                  <div class="primary-nav__menu--item">
2395                      <a class="primary-nav__menu--link" href="/leisure/">What's On</a>
2396                  </div>
2397  
2398
2399                  <div class="primary-nav__menu--item">
2400                      <a class="primary-nav__menu--link" href="/notices/">Notices</a>
2401                  </div>
2402  
2403
2404                  <div class="primary-nav__menu--item">
2405                      <a class="primary-nav__menu--link" href="/livetravel/">Live Travel</a>
2406                  </div>
2407  
2408
2409                  <div class="primary-nav__menu--item">
2410                      <a class="primary-nav__menu--link" href="/young-reporter/">Young Reporter</a>
2411                  </div>
2412  
2413
2414                  <div class="primary-nav__menu--item">
2415                      <a class="primary-nav__menu--link" href="/dudley-community-awards/">Dudley Community Awards</a>
2416                  </div>
2417  
2418
2419                  <div class="primary-nav__menu--item">
2420                      <a class="primary-nav__menu--link" href="/newspaper-archive/">Newspaper Archive</a>
2421                  </div>
2422              </div>
2423          </nav>
2424        </span>
2425        <span class="primary-nav__right">
2426            <div class="primary-nav__menu--more-btn">
2427                <button aria-expanded="false" aria-label="Open the menu" class="more-link more-burger-icon">
2428                    <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M3 6h18M3 12h18M3 18h18"/></svg>
2429                </button>
2430            </div>
2431            <div class="primary-nav__right--search">
2432                <a class="primary-nav__container--search-icon search-icon" href="#" aria-label="Search for article"><span class="iconify" data-icon="ion:search-circle-sharp" data-inline="false"></span></a>
2433            </div>
2434        </span>
2435    </div>
2436</nav>
2437
2438
2439
2440    
2441        <div class="sub-nav" role="navigation" aria-label="sub-navigation">
2442
2443
2444
2445
2446    <a href="/news/" class="sub-nav__breadcrumb">News</a>
2447        
2448    
2449
2450        
2451            <a href="/news/local/">Local</a>
2452        
2453    
2454
2455        
2456            <a href="/news/yourletters/">Letters</a>
2457        
2458    
2459
2460        
2461            <a href="/news/business_daily/">Business Daily</a>
2462        
2463    
2464
2465        
2466            <a href="/news/crime/">Crime</a>
2467</div>
2468
2469
2470    
2471
2472
2473</header>
2474            </div>
2475
2476            <div id="redesign-content">
2477
2478                <div class="mar-leaderboard--top block-bottom-margin desktop-standard-leaderboard" data-uses-js="dfp-top-ad-fixed" data-dont-stick="">
2479    <div id="DFP_top_leaderboard"></div>
2480</div>
2481
2482
2483
2484                <div id="module-content" class="content">
2485                    <div class="piano--block-level block-bottom-margin" id="po-inline-banner-top-hero-content"></div>
2486
2487
2488                    <!-- standard - BlockArticleContainer.html --> <div id="BlockArticleContainer" class="block-article-display__wrapper  block-article-display--standard ">
2489    <div class="block block-bottom-margin block-article-display">
2490    
2491
2492    <div class="block-article-display__article-container ">
2493        <article id="article" data-id="26575627">
2494    
2495            <section class="mar-article" aria-label="article-headline-section">
2496
2497    <!-- standard - Label.html --> 
2498    
2499
2500
2501    
2502
2503
2504
2505    
2506
2507    <div class="mar-article__taxo-tags_mobile">
2508        <!-- standard - ArticleTags.html --> <div class="article-tags" role="listitem"><a href="/topics/business/">Business</a></div>
2509    </div>
2510
2511    <h1 class="mar-article__headline mar-mb-0">Superdrug opens UK's largest store at Merry Hill centre</h1>
2512
2513    <div class="mar-article__taxo-tags">
2514        <span class="mar-article__timestamp">
2515            
2516            <time datetime="2026-09-23 14:27:57"
2517                data-format="article-display"
2518                data-show-date="always"
2519                data-show-time="today-only"
2520                data-timestamp="1790170077"
2521                itemprop="datePublished"
2522                class="author-details__timestamp formatTimeStampEs6"
2523                full-date="23.09.2026">&nbsp;
2524            </time>
2525            
2526        </span>
2527        
2528        <!-- standard - ArticleTags.html --> <div class="article-tags" role="listitem"><a href="/topics/business/">Business</a></div>
2529    </div>
2530
2531    <!-- standard - SkimLinksDisclaimer.html --> 
2532
2533</section>
2534
2535    
2536
2537                <div class="article-row-container">
2538                    <div class="article-row-container--left">
2539                        <div class="article-row-container__spacing">
2540    
2541                            <div id="BlockArticleContent" class="block-article-content" role="main">
2542
2543    <div class="block-article-content__info-container">
2544        <div class="block-article-content__author  ">
2545            
2546<div class="author-details">
2547    
2548    <a  href="/author/profile/3144.Helen_Attwood/"  class="author-details__img" aria-label="View author profile">
2549        <img src="/resources/images/11604182?type=thumb" alt="Helen Attwood Profile Image">
2550    </a>
2551    
2552
2553    <div class="author-details__name-container  ">
2554    
2555        <a href="/author/profile/3144.Helen_Attwood/" class="author-name mar-mr-1 no-underline"> By 
2556            Helen Attwood
2557        </a>
2558
2559    
2560
2561    
2562        <span class="job-title">Senior reporter</span>
2563    
2564    </div>
2565</div>
2566
2567
2568        </div>
2569
2570        <div class="article-sponsor-information__container  hidden ">
2571            
2572
2573        </div>
2574
2575    
2576        <!-- standard - SocialBar.html --> <div class="social-bar block-article-content__share-section ">
2577  <!-- standard - SocialShareButton.html --> <div 
2578    aria-label="Share"
2579    class="social-share-button mar-btn"
2580    id="social-share-button">
2581    <p class="social-share-button__text" aria-label="Share">Share</p>
2582    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2583        <path d="M11.6113 1.5C11.9036 1.49999 12.1919 1.57147 12.4535 1.70882C12.7152 1.84616 12.943 2.04562 13.119 2.2915C13.2951 2.53738 13.4146 2.82297 13.4682 3.12578C13.5217 3.4286 13.5079 3.74038 13.4277 4.0366C13.3475 4.33281 13.2032 4.60537 13.006 4.83282C12.8089 5.06027 12.5644 5.23641 12.2918 5.34737C12.0191 5.45834 11.7257 5.5011 11.4347 5.47229C11.1437 5.44348 10.863 5.34389 10.6148 5.18135C10.595 5.195 10.5746 5.20756 10.5536 5.21899L5.94303 7.73788C5.94569 7.80155 5.94569 7.86531 5.94303 7.92897L5.95196 7.93476L10.3586 10.6867C10.688 10.379 11.109 10.2021 11.5489 10.1867C11.9889 10.1714 12.4201 10.3184 12.7681 10.6025C13.1161 10.8865 13.3591 11.2898 13.455 11.7425C13.5509 12.1953 13.4937 12.6691 13.2933 13.0822C13.0929 13.4953 12.762 13.8216 12.3576 14.0048C11.9532 14.1881 11.5008 14.2167 11.0785 14.0857C10.6562 13.9548 10.2906 13.6725 10.0447 13.2877C9.79893 12.9029 9.68839 12.4396 9.73221 11.978L5.37504 9.25791C5.10887 9.53171 4.77193 9.71659 4.40645 9.78938C4.04098 9.86216 3.66325 9.81961 3.32064 9.66705C2.97802 9.51449 2.68577 9.25872 2.48054 8.93181C2.27531 8.6049 2.16624 8.22141 2.167 7.82943C2.16775 7.43745 2.27831 7.05444 2.4848 6.72841C2.69129 6.40239 2.98453 6.14787 3.32773 5.99679C3.67093 5.8457 4.04882 5.80477 4.41401 5.87912C4.7792 5.95347 5.11543 6.1398 5.38053 6.41474L9.78647 4.00731C9.71119 3.71225 9.70138 3.40289 9.7578 3.10318C9.81421 2.80348 9.93533 2.52149 10.1118 2.27906C10.2882 2.03662 10.5153 1.84025 10.7753 1.70515C11.0354 1.57005 11.3214 1.49985 11.6113 1.5Z" fill="#222222"/>
2584    </svg>
2585</div>
2586
2587  
2588    
2589      <!-- standard - CommentsButton.html --> <a 
2590    class="comments-button comments-count mar-btn"
2591    href="/comments/26575627/"
2592    id="comments-button" 
2593    rel="nofollow">
2594    <img class="comments-button__icon" src="/resources/responsive-static/mds/images/icons/message.svg" alt="comment icon" />
2595    <span class="comments-button_count">0 Comments</span>
2596</a>
2597
2598    
2599  
2600</div>
2601
2602    
2603        <div class="hidden" data-facebook="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/?ref=fbshr"></div>
2604        <div class="hidden" data-twitter="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/?ref=twtrec"></div>
2605        <div class="hidden" data-bluesky="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/?ref=li"></div>
2606    </div>
2607
2608    
2609
2610    <section class="article-hero light-background" aria-label="article-hero-section">
2611        
2612        
2613            <div id="mar-article-image-gallery" class="mar-article-image-gallery" data-uses-js="article-image-gallery">
2614    <figure class="mar-article-image">
2615        <!-- <picture class="">
2616            <source
2617                media="(min-width: 321px) and (max-width: 575px)"
2618                srcset="/resources/images/21492597.jpg?type=mds-article-575"
2619            />
2620            <source
2621                media="(min-width: 576px) and (max-width: 767px)"
2622                srcset="/resources/images/21492597.jpg?type=mds-article-962"
2623            />
2624            <source
2625                media="(min-width: 768px) and (max-width: 991px)"
2626                srcset="/resources/images/21492597.jpg?type=mds-article-962"
2627            />
2628            <source
2629                media="(min-width: 992px)"
2630                srcset="/resources/images/21492597.jpg?type=mds-article-642"
2631            />
2632            <img loading="lazy" src="/resources/images/21492597.jpg?type=mds-article-575" alt="" style="aspect-ratio: 2400 / 1600"/>
2633        </picture> -->
2634
2635        <img alt=""
2636            srcset="/resources/images/21492597.jpg?type=mds-article-575 575w,
2637                    /resources/images/21492597.jpg?type=mds-article-962 9
263762w,
2638                    /resources/images/21492597.jpg?type=mds-article-642 642w,
2639                    /resources/images/21492597.jpg?type=mds-article-620 620w"
2640            sizes="(min-width: 768px) calc(100vw - 30px), (min-width: 992px) 642px, (min-width: 1401px) 620px, 100vw"
2641            style="aspect-ratio: 2400 / 1600"
2642        />
2643
2644        <a class="mar-article-image__camera-icon">
2645            <i class="iconify " data-icon="el:camera" data-inline="false"></i>
2646
2647            <span class="mar-article-image__camera-icon-count">5</span>
2648        </a>
2649
2650
2651    </figure>
2652
2653    <!-- Article Image Gallery -->
2654    <div id="mar-article-image-gallery" class="mar-article-image-gallery">
2655        <div class="mar-article-image-gallery__container">
2656            <div class="mar-article-image-gallery__slider">
2657<div class="mar-article-image-gallery__item slide main-image">
2658                    <figure>
2659                        <picture>
2660                            <img
2661                                id="main-slide-image"
2662                                class="mar-article-image-gallery__img"
2663                                loading="lazy"
2664                                src="/resources/images/21492597/?type=responsive-gallery-fullscreen"
2665                                data-url="/resources/images/21492597/?type=responsive-gallery-fullscreen"
2666                                data-caption="<h2>Superdrug opens its largest UK store at Merry Hill</h2><p>The store has officially opened &lt;i&gt;(Image: MARCIN &amp; ALICJA ROSZKOWSKI)&lt;/i&gt;</p>"
2667                            />
2668                        </picture>
2669                    </figure>
2670                </div>
2671
2672
2673                <div class="mar-article-image-gallery__item slide main-image">
2674                    <figure>
2675                        <picture>
2676                            <img
2677                                id="main-slide-image"
2678                                class="mar-article-image-gallery__img"
2679                                loading="lazy"
2680                                src="/resources/images/21492553/?type=responsive-gallery-fullscreen"
2681                                data-url="/resources/images/21492553/?type=responsive-gallery-fullscreen"
2682                                data-caption="<h2>Superdrug opens its largest UK store at Merry Hill</h2><p>The expanded store is now open &lt;i&gt;(Image: MARCIN ROSZKOWSKI)&lt;/i&gt;</p>"
2683                            />
2684                        </picture>
2685                    </figure>
2686                </div>
2687
2688
2689                <div class="mar-article-image-gallery__item slide main-image">
2690                    <figure>
2691                        <picture>
2692                            <img
2693                                id="main-slide-image"
2694                                class="mar-article-image-gallery__img"
2695                                loading="lazy"
2696                                src="/resources/images/21492561/?type=responsive-gallery-fullscreen"
2697                                data-url="/resources/images/21492561/?type=responsive-gallery-fullscreen"
2698                                data-caption="<h2>Superdrug opens its largest UK store at Merry Hill</h2><p>The expanded Superdrug has officially opened &lt;i&gt;(Image: MARCIN ROSZKOWSKI)&lt;/i&gt;</p>"
2699                            />
2700                        </picture>
2701                    </figure>
2702                </div>
2703
2704
2705                <div class="mar-article-image-gallery__item slide main-image">
2706                    <figure>
2707                        <picture>
2708                            <img
2709                                id="main-slide-image"
2710                                class="mar-article-image-gallery__img"
2711                                loading="lazy"
2712                                src="/resources/images/21492590/?type=responsive-gallery-fullscreen"
2713                                data-url="/resources/images/21492590/?type=responsive-gallery-fullscreen"
2714                                data-caption="<h2>Superdrug opens its largest UK store at Merry Hill</h2><p>The store is Superdrug's largest in the UK &lt;i&gt;(Image: MARCIN ROSZKOWSKI)&lt;/i&gt;</p>"
2715                            />
2716                        </picture>
2717                    </figure>
2718                </div>
2719
2720
2721                <div class="mar-article-image-gallery__item slide main-image">
2722                    <figure>
2723                        <picture>
2724                            <img
2725                                id="main-slide-image"
2726                                class="mar-article-image-gallery__img"
2727                                loading="lazy"
2728                                src="/resources/images/21492600/?type=responsive-gallery-fullscreen"
2729                                data-url="/resources/images/21492600/?type=responsive-gallery-fullscreen"
2730                                data-caption="<h2>
2730Superdrug opens its largest UK store at Merry Hill</h2><p>The new store &lt;i&gt;(Image: MARCIN ROSZKOWSKI)&lt;/i&gt;</p>"
2731                            />
2732                        </picture>
2733                    </figure>
2734                </div>
2735            </div>
2736
2737            <div class="mar-article-image-gallery__gallery-content">
2738                <div id="DFP_gallery_mpu"></div>
2739                <div class="mar-article-image-gallery__caption"></div>
2740            </div>
2741
2742            <div class="mar-article-image-gallery__nav">
2743                <div class="mar-article-image-gallery__nav-gallery"></div>
2744            </div>
2745
2746            <div class="mar-article-image-gallery__interstitial">
2747                <div class="mar-article-image-gallery__interstitial-ad">
2748                    <div id="DFP_gallery_interstitial"></div>
2749                </div>
2750                <div class="mar-article-image-gallery__interstitial-next-slide-container">
2751                    <div class="mar-article-image-gallery__interstitial-next-slide">Skip to next photo</div>
2752                </div>
2753            </div>
2754
2755            <div class="mar-article-image-gallery__mobile-footer">
2756                <div class="mar-article-image-gallery__mobile-caption"><div></div></div>
2757                <div class="mar-article-image-gallery__slide-count">
2758                    <span class="mar-article-image-gallery__current-slide-count">1</span>/<span class="mar-article-image-gallery__total-slide-count">1</span>
2759                </div>
2760                <div class="mar-article-image-gallery__show-caption-button">
2761                    Show caption
2762                </div>
2763            </div>
2764
2765            <div class="mar-article-image-gallery__slide-count-desktop">
2766                <span>
2767                    <span class="mar-article-image-gallery__current-slide-count-desktop">1</span>/<span class="mar-article-image-gallery__total-slide-count-desktop">1</span>
2768                </span>
2769            </div>
2770
2771            <div class="mar-article-image-gallery__social-components">
2772
2773                <!-- standard - SocialBar.html --> <div class="social-bar  ">
2774  <!-- standard - SocialShareButton.html --> <div 
2775    aria-label="Share"
2776    class="social-share-button mar-btn"
2777    id="social-share-button">
2778    <p class="social-share-button__text" aria-label="Share">Share</p>
2779    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2780        <path d="M11.6113 1.5C11.9036 1.49999 12.1919 1.57147 12.4535 1.70882C12.7152 1.84616 12.943 2.04562 13.119 2.2915C13.2951 2.53738 13.4146 2.82297 13.4682 3.12578C13.5217 3.4286 13.5079 3.74038 13.4277 4.0366C13.3475 4.33281 13.2032 4.60537 13.006 4.83282C12.8089 5.06027 12.5644 5.23641 12.2918 5.34737C12.0191 5.45834 11.7257 5.5011 11.4347 5.47229C11.1437 5.44348 10.863 5.34389 10.6148 5.18135C10.595 5.195 10.5746 5.20756 10.5536 5.21899L5.94303 7.73788C5.94569 7.80155 5.94569 7.86531 5.94303 7.92897L5.95196 7.93476L10.3586 10.6867C10.688 10.379 11.109 10.2021 11.5489 10.1867C11.9889 10.1714 12.4201 10.3184 12.7681 10.6025C13.1161 10.8865 13.3591 11.2898 13.455 11.7425C13.5509 12.1953 13.4937 12.6691 13.2933 13.0822C13.0929 13.4953 12.762 13.8216 12.3576 14.0048C11.9532 14.1881 11.5008 14.2167 11.0785 14.0857C10.6562 13.9548 10.2906 13.6725 10.0447 13.2877C9.79893 12.9029 9.68839 12.4396 9.73221 11.978L5.37504 9.25791C5.10887 9.53171 4.77193 9.71659 4.40645 9.78938C4.04098 9.86216 3.66325 9.81961 3.32064 9.66705C2.97802 9.51449 2.68577 9.25872 2.48054 8.93181C2.27531 8.6049 2.16624 8.22141 2.167 7.82943C2.16775 7.43745 2.27831 7.05444 2.4848 6.72841C2.69129 6.40239 2.98453 6.14787 3.32773 5.99679C3.67093 5.8457 4.04882 5.80477 4.41401 5.87912C4.7792 5.95347 5.11543 6.1398 5.38053 6.41474L9.78647 4.00731C9.71119 3.71225 9.70138 3.40289 9.7578 3.10318C9.81421 2.80348 9.93533 2.52149 10.1118 2.27906C10.2882 2.03662 10.5153 1.84025 10.7753 1.70515C11.0354 1.57005 11.3214 1.49985 11.6113 1.5Z" fill="#222222"/>
2781    </svg>
2782</div>
2783
2784  
2785    
2786      <!-- standard - CommentsButton.html --> <a 
2787    class="comments-button comments-count mar-btn"
2788    href="/comments/26575627/"
2789    id="comments-button" 
2790    rel="nofollow">
2791    <img class="comments-button__icon" src="/resources/responsive-static/mds/images/icons/message.svg" alt="comment icon" />
2792    <span class="comments-button_count">0 Comments</span>
2793</a>
2794
2795    
2796  
2797</div>
2798
2799
2800            </div>
2801            <div class="mar-article-image-gallery__close-btn"><span class="iconify" data-icon="ant-design:close-outlined"></span></div>
2802        </div>
2803    </div>
2804</div>
2805
2806        
2807    </section>
2808    
2809
2810
2811    <div></div>
2812
2813    <!---->
2814
2815    <div class="block-article-content__spacing">
2816        <!-- standard - UsaTodayDisclaimer.html --> <div id="UsaTodayDisclaimer" class="usa-today-disclaimer hide">
2817    <div class="usa-today-disclaimer_logo">
2818        <img src="/resources/responsive-static/images/usa-today-logo.svg" alt="USA Today logo">
2819    </div>
2820    <div class="usa-today-disclaimer_text">
2821        This article is brought to you by our exclusive subscriber partnership with our sister title USA Today,
2822        and has been written by our American colleagues.
2823        It does not necessarily reflect the view of The Herald.
2824    </div>
2825</div>
2826
2827
2828
2829        <div class="article-body" aria-label="article-body-section">
2830            <div>
2831                <div id="po-overlay-articlegate-full-width-full-article-scroll-below">
2832                <div id="po-inline-article-above"></div>
2833                <div id="po-inline-articlewall-fullarticle-closable"></div>
2834                <div id="po-inline-articlegate-fullarticle"><p class="article-first-paragraph">
2835  Superdrug has unveiled its largest store in the UK at the Merry Hill shopping centre. 
2836</p>
2837<div id="inArticleAd" class="advert-container mar-block-ad mar-block-ad--in-article "><div id="DFP_in_article_mpu"></div></div>
2838<div id="po-inline-articlewall-partialarticle-closable"></div>
2839<div id="po-inline-articlegate-partialarticle">
2840<div id="po-overlay-articlegate-full-width-scroll-below"></div>
2841<div id="subscription-content">
2842<p>
2843  The newly-transformed store now spans 12,831 sq ft and is located on the shopping centre’s upper mall.
2844</p>
2845<p>
2846  Officially opened today (Wednesday September 23) it features an expanded range of health, beauty, and wellness products, as well as a pharmacy, aesthetics clinic, and piercing studio.
2847</p>
2848<div id="inArticleAd-1" data-name-place="DFP_outbrain" class="">
2849    <div class="OUTBRAIN" data-ob-contenturl="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/" data-ob-installation-key="NEWSQ15BEE3GLF6A6AL9EECN9" data-widget-id="AR_2"></div>
2850    
2850<script>
2851        if (whiteList === true) {
2852            $('#inArticleAd-1').remove();
2853        }
2854    </script>
2854
2855</div>
2856<p>
2857  <img srcset="https://www.stourbridgenews.co.uk/resources/images/21492590/?type=mds-article-575 575w, https://www.stourbridgenews.co.uk/resources/images/21492590/?type=mds-article-962 962w, https://www.stourbridgenews.co.uk/resources/images/21492590/?type=mds-article-642 1400w, https://www.stourbridgenews.co.uk/resources/images/21492590/?type=mds-article-620 1401w" sizes="(max-width: 575px) 575px, (max-width: 992px) 962px, (max-width: 1400px) 1400px, (min-width: 1401px) 1401px" width="100%" alt="pic"><span class="inline-image-caption">The store is Superdrug's largest in the UK <em>(Image: MARCIN ROSZKOWSKI)</em></span>
2858</p>
2859<p>
2860  The transformed store will create 15 new permanent roles, alongside 10 seasonal positions over the Christmas period.
2861</p>
2862<p>
2863  The investment forms part of Superdrug’s wider expansion plans, which will see it open 30 new stores across the UK this year.
2864</p>
2865<div id="inArticleAd-2" class="advert-container mar-block-ad mar-block-ad--in-article "><div id="DFP_in_article_2"></div></div>
2866<p>
2867  <img srcset="https://www.stourbridgenews.co.uk/resources/images/21492561/?type=mds-article-575 575w, https://www.stourbridgenews.co.uk/resources/images/21492561/?type=mds-article-962 962w, https://www.stourbridgenews.co.uk/resources/images/21492561/?type=mds-article-642 1400w, https://www.stourbridgenews.co.uk/resources/images/21492561/?type=mds-article-620 1401w" sizes="(max-width: 575px) 575px, (max-width: 992px) 962px, (max-width: 1400px) 1400px, (min-width: 1401px) 1401px" width="100%" alt="pic"><span class="inline-image-caption">The expanded Superdrug has officially opened <em>(Image: MARCIN ROSZKOWSKI)</em></span>
2868</p>
2869<div id="inArticleAd-3" class="advert-container mar-block-ad mar-block-ad--in-article "><div id="DFP_teads"></div></div>
2870<p>
2871  Clare Jennings, property director at Superdrug, said: "We’re delighted to be opening the doors to our newly refurbished store at Merry Hill, which is now the largest store in our estate.
2872</p>
2873<p>
2874  "The 12,831 sq ft store brings together everything customers love about Superdrug, from great value across health, beauty and wellbeing to the latest international beauty trends and much-loved own-brand favourites."
2875</p>
2876<p>
2877  <img srcset="https://www.stourbridgenews.co.uk/resources/images/21492553/?type=mds-article-575 575w, https://www.stourbridgenews.co.uk/resources/images/21492553/?type=mds-article-962 962w, https://www.stourbridgenews.co.uk/resources/images/21492553/?type=mds-article-642 1400w, https://www.stourbridgenews.co.uk/resources/images/21492553/?type=mds-article-620 1401w" sizes="(max-width: 575px) 575px, (max-width: 992px) 962px, (max-width: 1400px) 1400px, (min-width: 1401px) 1401px" width="100%" alt="pic"><span class="inline-image-caption">The expanded store is now open <em>(Image: MARCIN ROSZKOWSKI)</em></span>
2878</p>
2879<p>
2880  To mark the reopening, the first 50 customers received a £10 Superdrug voucher and a live DJ set.
2881</p>
2882<p>
2883  Inside, customers can explore a wider selection of international and trending beauty brands, including Biodance and Medicube, alongside Superdrug’s own ranges such as Studio London and Vitamin E.
2884</p>
2885<p>
2886  The store also offers a premium fragrance collection, pharmacy, aesthetics clinic and piercing studio.
2887</p>
2888<div id="inArticleAd-4" class="advert-container mar-block-ad mar-block-ad--in-article "><div id="DFP_in_article_3"></div></div>
2889<p>
2890  <img srcset="https://www.stourbridgenews.co.uk/resources/images/21492600/?type=mds-article-575 575w, https://www.stourbridgenews.co.uk/resources/images/21492600/?type=mds-article-962 962w, https://www.stourbridgenews.co.uk/resources/images/21492600/?type=mds-article-642 1400w, https://www.stourbridgenews.co.uk/resources/images/21492600/?type=mds-article-620 1401w" sizes="(max-width: 575px) 575px, (max-width: 992px) 962px, (max-width: 1400px) 1400px, (min-width: 1401px) 1401px" width="100%" alt="pic"><span class="inline-image-caption">The new store <em>(Image: MARCIN ROSZKOWSKI)</em></span>
2891</p>
2892<div id="inArticleAd-5" class="advert-container mar-block-ad mar-block-ad--in-article "><div id="DFP_outstream_2"></div></div>
2893<p>
2894  A spokesperson for Superdrug said: "Superdrug is also continuing the expansion of its accredited Aesthetics Clinic offering, with the reopening of the refreshed store, registered with CQC (Care Quality Commission), marking another milestone in the retailer’s commitment to delivering safe, accessible and regulated aesthetic treatments on the high street."
2895</p>
2896<p>
2897  Customers can also sign up for Superdrug’s Health &amp;
2897 Beautycard and VIP Rewards programmes, which offer lower prices, bonus point promotions, birthday treats and the option to pay with points.
2898</p>
2899<p>
2900  Alistair Winning, leasing manager at Redical, which owns Merry Hill, said: "The full reopening of Superdrug in its new, significantly expanded format marks an important milestone for Merry Hill, reinforcing our position as a leading destination for health, beauty and wellness."
2901</p>
2902<p>
2903  The store is located on the Upper Mall at Merry Hill.
2904</p>
2905</div>
2906</div></div>
2907                <div id="po-inline-article-below" style="clear:both"></div></div>
2908            </div>
2909            <div class="clearfix"></div>
2910        </div>
2911
2912
2913        <div class="block-article-content__bottom-meta-data">
2914            <div class="block-article-content__bottom-tags tags" role="list" aria-label="tags-list-2">
2915        <!-- standard - ArticleTags.html --> <div class="article-tags" role="listitem"><a href="/topics/business/">Business</a></div>
2916            </div>
2917            
2918                <!-- standard - SocialBar.html --> <div class="social-bar block-article-content__share-section ">
2919  <!-- standard - SocialShareButton.html --> <div 
2920    aria-label="Share"
2921    class="social-share-button mar-btn"
2922    id="social-share-button">
2923    <p class="social-share-button__text" aria-label="Share">Share</p>
2924    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2925        <path d="M11.6113 1.5C11.9036 1.49999 12.1919 1.57147 12.4535 1.70882C12.7152 1.84616 12.943 2.04562 13.119 2.2915C13.2951 2.53738 13.4146 2.82297 13.4682 3.12578C13.5217 3.4286 13.5079 3.74038 13.4277 4.0366C13.3475 4.33281 13.2032 4.60537 13.006 4.83282C12.8089 5.06027 12.5644 5.23641 12.2918 5.34737C12.0191 5.45834 11.7257 5.5011 11.4347 5.47229C11.1437 5.44348 10.863 5.34389 10.6148 5.18135C10.595 5.195 10.5746 5.20756 10.5536 5.21899L5.94303 7.73788C5.94569 7.80155 5.94569 7.86531 5.94303 7.92897L5.95196 7.93476L10.3586 10.6867C10.688 10.379 11.109 10.2021 11.5489 10.1867C11.9889 10.1714 12.4201 10.3184 12.7681 10.6025C13.1161 10.8865 13.3591 11.2898 13.455 11.7425C13.5509 12.1953 13.4937 12.6691 13.2933 13.0822C13.0929 13.4953 12.762 13.8216 12.3576 14.0048C11.9532 14.1881 11.5008 14.2167 11.0785 14.0857C10.6562 13.9548 10.2906 13.6725 10.0447 13.2877C9.79893 12.9029 9.68839 12.4396 9.73221 11.978L5.37504 9.25791C5.10887 9.53171 4.77193 9.71659 4.40645 9.78938C4.04098 9.86216 3.66325 9.81961 3.32064 9.66705C2.97802 9.51449 2.68577 9.25872 2.48054 8.93181C2.27531 8.6049 2.16624 8.22141 2.167 7.82943C2.16775 7.43745 2.27831 7.05444 2.4848 6.72841C2.69129 6.40239 2.98453 6.14787 3.32773 5.99679C3.67093 5.8457 4.04882 5.80477 4.41401 5.87912C4.7792 5.95347 5.11543 6.1398 5.38053 6.41474L9.78647 4.00731C9.71119 3.71225 9.70138 3.40289 9.7578 3.10318C9.81421 2.80348 9.93533 2.52149 10.1118 2.27906C10.2882 2.03662 10.5153 1.84025 10.7753 1.70515C11.0354 1.57005 11.3214 1.49985 11.6113 1.5Z" fill="#222222"/>
2926    </svg>
2927</div>
2928
2929  
2930    
2931      <!-- standard - CommentsButton.html --> <a 
2932    class="comments-button comments-count mar-btn"
2933    href="/comments/26575627/"
2934    id="comments-button" 
2935    rel="nofollow">
2936    <img class="comments-button__icon" src="/resources/responsive-static/mds/images/icons/message.svg" alt="comment icon" />
2937    <span class="comments-button_count">0 Comments</span>
2938</a>
2939
2940    
2941  
2942</div>
2943
2944            
2945        </div>
2946
2947
2948        <div id="comment-replacement"></div>
2949
2950        <div data-block-pull="block-outbrain-inline-pull"></div>
2951    </div>
2952</div>
2953
2954
2955
2956
2957
2958
2959
2960    
2961                        </div>
2962                    </div>
2963                    <div class="article-row-container--right__article-display-page-only">
2964                        <div class="article-row-container__column mar-mb-4">
2965                            <div id="premium_mpu_container" class="premium-mpu-container mar-block-ad">
2966                                <div id="DFP_premium_mpu"></div>
2967                            </div>
2968    
2969                        </div>
2970
2971                        <div class="article-row-container__column">
2972                            <div class="send-us-your-news-cta">
2973    <h2>
2974        Get <em>involved</em><br/>
2975        with the news
2976    </h2>
2977
2978    <!-- standard - Buttons.html --> 
2979    
2980<a
2981    href="/send-us-your-news"
2982    data-uses-js=""
2983    
2984    class=" mar-btn
2985    mar-btn--light
2986    mar-btn--md
2987    
2988    
2989    "
2990>
2991    Send your news & photos
2992</a>
2993    
2994
2995
2996</div>
2997
2998                        </div>
2999
3000                        <div class="article-row-container__column">
3001
3002                            <section class="block block-bottom-margin mega-news-block">
3003                                <aside>
3004                                    <div class="block block-bottom-margin block-most-popular-right-column" data-uses-js="most-read-side-bar">
3005    <!-- standard - MostRead.html --> <div  class="most-read mar-tab" data-limit="10">
3006    <ul class="most-read__tab most-read__headings mar-tab__headings" role="list">
3007
3008    </ul>
3009    <div class="most-read__body mar-tab__body-container most-read__body--one-column">
3010        <div class="loader">Loading...</div>
3011
3012    
3013        <ol class="most-read__ad-container mar-list-numbered most-read__list mar-tab__body mar-tab--active" role="list" data-body="mostread" data-tracking="yes">
3014            <li class="mar-list-numbered__item most-read__list-item  hide-counter most-read_ad-element" role="listitem" style="counter-increment: auto 1;">
3015                <div class="mar-block-ad">
3016                    <div id="DFP_standard_mpu_1"></div>
3017                </div>
3018            </li>
3019        </ol>
3020    
3021    </div>
3022
3023<!-- Adds or not adds click event listener -->
3024
3025    <!-- standard - Buttons.html --> 
3026<div class="read-more-cta read-more-cta__container mar-btn-full mar-btn-full__container  hidden ">
3027    <div class="mar-btn-full__line-container">
3028        <span class="mar-btn-full__line mar-btn--light"></span>
3029    
3030        <button
3031            type="button"
3032            data-uses-js="most-read"
3033            
3034            class="mar-btn mar-btn-full
3035                mar-btn--light
3036                mar-btn--sm
3037                
3038                "
3039        >
3040            Show more articles
3041        </button>
3042    
3043    </div>
3044</div>
3045
3046
3047
3048</div>
3049
3050</div>
3051
3052                                    
3053                                </aside>
3054                            </section>
3055
3056                            <div id="standard_mpu_2_container" class="standard-mpu-2-container mar-block-ad" style="height: 250px; width: 100%;">
3057                                <div id="DFP_standard_mpu_2"></div>
3058                            </div>
3059
3060                            <div class="side-ad" style="flex-grow: 1">
3061                                <div id="DFP_on_scroll" style="margin-top: 25px"></div>
3062                            </div>
3063                        </div>
3064                    </div>
3065                </div>
3066            </article>
3067        </div>
3068
3069    
3070
3071        <input type="hidden" id="site-name" value="The Stourbridge News">
3072
3073        <input id="has-contribution-cta" type="hidden" value="">
3074
3075</div>
3076
3077
3078
3079    <!-- standard - BlockEmpty.html --> <!-- standard - BlockTaboolaInline.html --> <div id="block-outbrain-inline-pull">
3080    <section class="promoted-block">
3081        
3082    <div class="OUTBRAIN" data-ob-contentUrl="https://www.stourbridgenews.co.uk/news/26575627.superdrug-opens-uks-largest-store-merry-hill-centre/" data-ob-installation-key="NEWSQ15BEE3GLF6A6AL9EECN9" data-widget-id="AR_1"></div>
3083
3084
3085    </section>
3086</div>
3087
3088</div>
3089
3090    <!--
3091    NOTE: remove following placeholders in production
3092    height 90px
3093    text-wite
3094-->
3095    <section class="mar-leaderboard--bottom
3096         block-bottom-margin   block-bottom-margin ">
3097        <div id="DFP_bottom_leaderboard"></div>
3098    </section>
3099
3100
3101<script type="module">
3102    const s = window.s;
3103    s.eVar28 = '2539';
3104    s.eVar60 = "1,metered,no";
3105    s.eVar90 = window.data_layer.article.parent_originating_site_id;
3106    s.eVar91 = window.data_layer.article.originating_article_id;
3107    s.eVar92 = window.data_layer.article.is_original_to_site;
3108    s.eVar104 = 'Business';
3109    s.eVar105 = '';
3110    s.eVar106 = 'AI-Assisted';
3111    s.eVar107 = '9';
3112    s.eVar108 = '12506';
3113    s.prop62 = '';
3114    s.prop63 = '25';
3115    s.prop64 = '';
3116</script>
3116
3117                </div>
3118            </div>
3119
3120            <footer class="site-footer" aria-label="site-footer">
3121    <div class="container-inner-width">
3122        <div class="links-grid" aria-label="site-footer-links">
3123            <section class="get-in-touch-section">
3124                <h2>Get in Touch</h2>
3125                <a href="/contact/">Contact Us</a><a href="/advertising/">Advertise</a><a href="/homedelivery/">Newspaper Home Delivery</a><a href="/send-us-your-news/">Send Us Your News</a><a href="/submit-an-event/">Add Your Event For Free</a><a href="/publications/">Our Publications</a>
3126            </section>
3127            <section class="follow-us-section">
3128                <h2>Follow Us</h2>
3129<a
3130                        class="footer__social-media--link"
3131                        href="https://www.facebook.com/StourbridgeNews"
3132                        title="Stourbridge News"
3133                        role="link"
3134                        data-media-type="facebook"
3135                    >
3136                        <i class="footer__social-media--icon iconify"></i>
3137                        Stourbridge News
3138                    </a>
3139
3140
3141                    <a
3142                        class="footer__social-media--link"
3143                        href="https://twitter.com/StourbridgeNews"
3144                        title="@StourbridgeNews"
3145                        role="link"
3146                        data-media-type="twitter"
3147                    >
3148                        <i class="footer__social-media--icon iconify"></i>
3149                        @StourbridgeNews
3150                    </a>
3151            </section>
3152            <section class="useful-links-section">
3153                <h2>Useful Links</h2>
3154                <div class="useful-links">
3155                    <section>
3156                        <a href="/subscribe/">Subscriptions</a><a href="/newsletters/">Newsletters</a><a href="/notices/">Death Notices</a><a href="/announcements/">Announcements</a><a href="/announcements/public_notices/">Public Notices</a>
3157                    </section>
3158                    <section>
3159                        <a href="https://www.exchangeandmart.co.uk/" target="_blank">Exchange and Mart</a><a href="https://newsquest.newsprints.co.uk/" target="_blank">Photo Sales</a><a href="http://leap.stourbridgenews.co.uk" target="_block">Leap</a><a href="/archive/" style="display: inline-block">Archive</a> | <a href="/misc/sitemap/" style="display: inline-block">Sitemap</a><a href="/gdpr/" class="gdpr-option-v2" data-v2-id="1170586" data-is-gate="yes" rel="nofollow">Manage Consent</a><a href="https://www.newsquest.co.uk/legal/ai-notice/" target="_blank">AI Notice</a>
3160                    </section>
3161                </div>
3162            </section>
3163            <section class="ipso-terms">
3164                <img class="ipso-logo" src="/resources/responsive-static/mds/images/ipso-regulated.png" alt="IPSO Regulated image" />
3165                <p class="ipso-copy">This website and associated newspapers adhere to the Independent Press Standards Organisation's
3166    Editors' Code of Practice. If you have a complaint about the editorial content which relates to
3167    inaccuracy or intrusion, then please <a class="footer__ipso-terms--link" href="/contact">
3168    contact the editor here</a>.
3169    If you are dissatisfied with the response provided you can
3170    <a class="footer__ipso-terms--link" href="https://www.ipso.co.uk/contact-us/" target="_block">contact IPSO here</a></p>
3171            </section>
3172        </div>
3173        <div class="notice" aria-label="site-footer-notice">
3174            <img src="/resources/responsive-static/mds/images/newsquest.png" alt="Newsquest" style="width: 193px"/>
3175            <p><strong>&copy; 2001-2026. The Stourbridge News</strong> is owned and operated by Newsquest Media Group Ltd, an audited local newspaper network.</p>
3176            <p>Visit <a href="https://www.newsquest.co.uk/" target="_blank">newsquest.co.uk</a> to view our <a href="https://www.newsquest.co.uk/our-policies/" target="_blank">policies</a>, <a href="https://www.newsquest.co.uk/legal/" target="_blank" >terms</a> and <a href="https://www.newsquest.co.uk/legal/" target="_blank" >legal agreements</a>.</p>
3177            <p>The Echo Building, 18 Albert Road, Bournemouth, England BH1 1BZ. Registered in England & Wales | 01676637</p>
3178        </div>
3179    </div>
3180</footer>
3181
3182
3183            <div id="fb-root"></div>
3184
3185
3186        </div>
3187    </div>
3188
3189
3190
3191    <div class="mar-modal-container mar-modal-container--animate mar-modal-container--animate-out visually-hidden">
3192    <div class="mar-modal-overlay" data-uses-js="close-modal"></div>
3193
3194    <div aria-label="Pop up dialog" class="mar-modal" tabindex="-1" role="dialog">
3195        <div class="mar-modal__header">
3196            <h3 class="mar-modal__title">Modal headline</h3>
3197
3198            <div class="mar-modal__close" data-uses-js="close-modal">
3199<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
3200    <path fill-rule="evenodd" clip-rule="evenodd" d="M7.60714 6L11.6518 10.0446C11.7589 10.1518 11.8438 10.2768 11.9062 10.4196C11.9688 10.5625 12 10.7143 12 10.875C12 11.1786 11.8884 11.442 11.6652 11.6652C11.442 11.8884 11.1696 12 10.8482 12C10.6875 12 10.5357 11.9688 10.3929 11.9062C10.25 11.8438 10.1339 11.7589 10.0446 11.6518L6 7.60714L1.95536 11.6518C1.84821 11.7589 1.72321 11.8438 1.58036 11.9062C1.4375 11.9688 1.28572 12 1.125 12C0.821427 12 0.558037 11.8884 0.334821 11.6652C0.111606 11.442 0 11.1786 0 10.875C0 10.7143 0.0312497 10.5625 0.09375 10.4196C0.15625 10.2768 0.241071 10.1518 0.348214 10.0446L4.36607 6L0.348214 1.95536C0.241071 1.84821 0.15625 1.72768 0.09375 1.59375C0.0312497 1.45982 0 1.3125 0 1.15179C0 0.830355 0.111606 0.558037 0.334821 0.334821C0.558037 0.111606 0.821427 0 1.125 0C1.28572 0 1.4375 0.0312497 1.58036 0.09375C1.72321 0.15625 1.84821 0.241071 1.95536 0.348214L6 4.39286L10.0446 0.348214C10.1339 0.241071 10.25 0.15625 10.3929 0.09375C10.5357 0.0312497 10.6875 0 10.8482 0C11.1696 0 11.442 0.111606 11.6652 0.334821C11.8884 0.558037 12 0.830355 12 1.15179C12 1.3125 11.9688 1.45982 11.9062 1.59375C11.8438 1.72768 11.7589 1.84821 11.6518 1.95536L7.60714 6Z" fill="#9DA0A4"/>
3201</svg>
3202
3203
3204                <span>Close</span>
3205            </div>
3206        </div>
3207
3208        <div class="mar-modal__body">Automatically injected HTML goes here</div>
3209
3210        <div class="mar-modal__actions">
3211<!-- standard - Buttons.html --> 
3212    
3213<button
3214    type="button"
3215    data-uses-js="modal-submit"
3216    
3217    class=" mar-btn
3218    mar-btn--light
3219    mar-btn--md
3220    
3221    
3222    "
3223>
3224    Submit
3225</button>
3226    
3227
3228
3229
3230<!-- standard - Buttons.html --> 
3231    
3232<button
3233    type="button"
3234    data-uses-js="modal-cancel"
3235    
3236    class=" mar-btn
3237    mar-btn--outline
3238    mar-btn--md
3239    
3240    
3241    "
3242>
3243    Cancel
3244</button>
3245    
3246
3247
3248        </div>
3249    </div>
3250</div>
3251
3252    <div id="piano-meter-display"
3253    style="width: 100%; position: fixed; bottom: 0; margin: auto; z-index: 999999999999999; display: none; background-color: #fff; left: 0px">
3254    <div style="width: 960px; margin: auto;">
3255        <button class="mar-btn btn-martini float-right" style="margin-top: 20px" id="piano-show-newsquest"
3256            type="button">Deactivate</button>
3257        <div class="mt-2"><strong>Piano meter debugger</strong></div>
3258        <p class="mb-0" style="font-style: italic;">Data returned from the Piano 'meterActive/meterExpired' callback <a
3259                href="https://docs.piano.io/callbacks/#activeevent">event</a>.</p>
3260        <div class="mb-2" id="piano-meter-display-content"></div>
3261    </div>
3262</div>
3263
3264<div id="po-overlay-banner-top-fullwidth"></div>
3265<div id="po-overlay-banner-bottom-fullwidth"></div>
3266<div id="po-overlay-banner-bottom-content"></div>
3267<!-- <div id="piano-left-message" style="display:none; width: 100%; position: fixed; left: 0; width: 300px; text-align: center; z-index: 5000000;"></div>
3268<div id="piano-right-message" style="display:none; width: 100%; position: fixed; right: 0; width: 300px; text-align: center; z-index: 5000000;"></div>
3269 -->
3270
3271
3272
3273
3274<div class="modal" id="adlight-explanation-modal" tabindex="-1" role="dialog" aria-labelledby="sp-modal"
3275    aria-hidden="true" style="display: none">
3276    <div class="modal-dialog modal-lg" role="document">
3277        <div class="modal-content">
3278            <div class="modal-body">
3279                <img src="/resources/responsive-static/images/love-local.png" loading="lazy"
3280                    id="adlight-explanation-modal-main-logo">
3281                <p>As a subscriber, you are shown <strong>80% less</strong> display advertising when reading our
3282                    articles.</p>
3283                <p>Those ads you do see are predominantly from <strong>local businesses</strong> promoting <strong>local
3284                        services</strong>. </p>
3285                <p>These adverts enable local businesses to get in front of their target audience – the <strong>local
3286                        community</strong>.</p>
3287                <img src="/resources/images/pixel/" id="adlight-explanation-modal-image" style="display: none">
3288                <p class="italic">It is important that we continue to promote these adverts as our local businesses need
3289                    as much support as possible during these challenging times.</p>
3290            </div>
3291            <div class="modal-footer">
3292                <button type="button" class="mar-btn mar-btn--dark" data-dismiss="modal">Close</button>
3293            </div>
3294        </div>
3295    </div>
3296</div>
3297
3298<div id="po-overlay-toast-left"></div>
3299<div id="po-overlay-toast-main-navigation"></div>
3300    
3300<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"fd15ff24ac","applicationID":"1089177626","transactionName":"NVNWZkNXWxAEVxBdCwwZd0dCQloOSnYIWwcJd0ZGWFVZBihbAEEIBwwOVVRYUBEEQAFwDRFGWFNIHhw=","queueTime":0,"applicationTime":362,"atts":"GRRVEAtNSB4=","errorBeacon":"bam.nr-data.net","agent":""}</script>
3300
3301</body>
3302
3303<div id="outbrain-holder">
3304    <div id="DFP_standard_mpu_3"></div>
3305    <div id="DFP_standard_mpu_4"></div>
3306    <div id="DFP_standard_mpu_5"></div>
3307    <div id="DFP_standard_mpu_6"></div>
3308    <div id="DFP_standard_mpu_7"></div>
3309</div>
3310<script>
3311
3312const elementToObserve = document.querySelector("#outbrain-holder");
3313
3314// create a new instance of `MutationObserver` named `observer`,
3315// passing it a callback function
3316const observer = new MutationObserver(function(e) {
3317    $.each(e, function(j, obs) {
3318        $.each(obs.removedNodes, function (i, node) {
3319            var id = $(node).attr('id');
3320            addAdSlot(id, id.replace('DFP_', ''));
3321        });
3322    });
3323});
3324
3325// call `observe()` on that MutationObserver instance,
3326// passing it the element to observe, and the options object
3327observer.observe(elementToObserve, {subtree: true, childList: true});
3328</script>
3328
3329
3330<script>
3331window.domComplete = performance.now();
3332</script>
3332
3333
3334<script type="text/javascript">
3335path = document.location.href.split("/");
3336var prop30 = qs.get('lp');
3337var prop43 = qs.get('ref');
3338var pType="BlockArticleModule"
3339
3340if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
3341    pType = 'ArticleModule';
3342}
3343for(x=4; x<7; x++)
3344{
3345    if (typeof path[x] == 'undefined')
3346    {
3347        path[x] = '';
3348    }
3349    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
3350    {
3351        path[x] = path[x-1];
3352    }
3353    else
3354    {
3355        path[x] = path[x-1] + "/" + path[x];
3356    }
3357    path[x] = path[x].replace(/\/undefined/g,"");
3358}
3359sitename = path[2].split(".");
3360
3361pathN= unescape(document.location.pathname.toString());
3362matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
3363detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
3364if (detailMatches !== null && detailMatches.length > 1)
3365{
3366    matches = detailMatches;
3367}
3368
3369if (matches !== null && matches.length > 1)
3370{
3371    var subfolder = '';
3372    path[3] = 'li';
3373    path[4] = 'li/'+subfolder;
3374    path[5] = 'li/'+subfolder+'/'+matches[1];
3375    path[6] = 'li/'+subfolder+'/'+matches[1];
3376}
3377if (pathN === '/')
3378{
3379    path[3] = 'homepage';
3380    path[4] = 'homepage';
3381    path[5] = 'homepage';
3382    path[6] = 'homepage';
3383}
3384
3385
3386function filterArray(arr) {
3387    var retArr = [];
3388    $.each(arr, function(i, part) {
3389        if (part !== '') {
3390            retArr.push(part);
3391        }
3392    });
3393
3394    return retArr;
3395}
3396</script>
3396
3397
3398
3399<script type="text/javascript">
3400var known = $.cookie('__siren') ? '1' : '0' ;
3401</script>
3401
3402
3403<script type="text/javascript">
3404
3405var known = $.cookie('__siren') ? '1' : '0' ;
3406var ref = document.referrer;
3407var parser = document.createElement('a');
3408parser.href = ref;
3409
3410// values in the below MUST be strings
3411var targeting = {
3412    'context': 'retail',
3413    'al': 'l',
3414    'domain': 'www.stourbridgenews.co.uk',
3415    'isLanding': 'no',
3416    'top_path': 'news',
3417    'weather': 'sun'.toLowerCase(),
3418    'jbsjs': ''.toLowerCase(),
3419    'site_search': '',
3420    'bmd_cat': '',
3421    'wt': '11-15',
3422    'cmpid': qs.get('cmpid'),
3423    'refdm': parser.hostname,
3424    'k': known,
3425    'g':  'u' ,
3426    'a':  '0' ,
3427    'topic': 'Business',
3428    'publication': '',
3429    'primary_tag_future_use': 'Business',
3430    'site': (isMobile()) ? 'mobile': 'desktop',
3431    'r': data_layer.user.subscription_plan !== ''
3432        ? '2'       // 2 = subscribed
3433        : data_layer.user.is_logged_in == 'yes'
3434            ? '1'   // 1 = registered
3435            : '0',  // 0 = anonymous
3436};
3437
3438if (!usePrebid) {
3439    targeting.adrq = 'adl';
3440}
3441
3442if (data_layer.video.exists === 'yes') {
3443    targeting.ptype = 'video';
3444}
3445
3446if ($.cookie('isMeterExpired') === 'yes' && window.data_layer.article.is_article) {
3447    var articleContentLevel = parseInt(window.data_layer.article.content_level, 10) || 0; // account for NaN
3448    if (articleContentLevel !== 0 && window.data_layer.article.content_level_open_access === 'no') {
3449        targeting.ao = 'y';
3450    }
3451}
3452
3453if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
3454    targeting.dfpcsnt = 'yes';
3455} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
3456    targeting.dfpcsnt = 'no';
3457} else {
3458    targeting.dfpcsnt = 'none';
3459}
3460
3461if (typeof MobileDetect !== "undefined") {
3462    targeting.canbb = (window.screen.width > 960) ? 'y' : 'n';
3463}
3464
3465if (typeof module_targeting === "object") {
3466    targeting = addToTargeting(targeting, module_targeting);
3467}
3468
3469// $.each(apData, function (k, v) {
3470//     targeting[k] = v;
3471// });
3472
3473// if (typeof gs_channels !== 'undefined') {
3474//     targeting.gs_channels = gs_channels;
3475// }
3476
3477targeting = addToTargeting(targeting, data_layer_helper.homesData);
3478
3479targeting.article_id = '26575627';
3480var googleSiteName = 'www.stourbridgenews.co.uk';
3481var googlePath = '/news/';
3482
3483var googleNetworkCode = 154725070;
3484
3485var googleChildNetworkCode = 22694024870;
3486var googleId = '/'+googleNetworkCode + ',' + googleChildNetworkCode + '/' + googleSiteName+googlePath;
3487
3488if (googleId.charAt(googleId.length - 1) === '/') {
3489    googleId = googleId.slice(0, -1);
3490}
3491
3492var googletag = googletag || {};
3493googletag.cmd = googletag.cmd || [];
3494
3495googletag.cmd.push(function () {
3496    var _YB = _YB || {
3497        ab: function () {
3498            return _YB.dool ? "b" : "a" + Math.floor(Math.random() * 10);
3499        },
3500        dool: Math.random() >= 0.1,
3501    };
3502    var yb_ab;
3503    if (Math.random() <= 0.9) {
3504        yb_ab = _YB.ab();
3505    } else {
3506        yb_ab = "c";
3507    }
3508    googletag.pubads().setTargeting("yb_ab", yb_ab);
3509});
3510
3511googletag.cmd.push(function() {
3512    googletag.pubads().set("adsense_background_color", "FFFFFF");
3513    googletag.pubads().setTargeting('rfs', "0");
3514    $.each(targeting, function (key, value) {
3515
3516        // No real value so exclude
3517        if (value === 0 || value === '' || value === null) {
3518            return;
3519        }
3520        googletag.pubads().setTargeting(key, value);
3521    });
3522
3523});
3524
3525if (isMobile() && '' === 'top') {
3526    $('.desktop-standard-leaderboard').remove();
3527    $('.mobile-top-leaderboard').show();
3528    $('#DFP_top_leaderboard_mobile').attr('id', 'DFP_top_leaderboard');
3529} else {
3530    $('.mobile-top-leaderboard').remove();
3531}
3532// Ads
3533var adUnits = [];
3534
3535hideAdsByScreensize();
3536
3537if (blackListAds.length > 0) {
3538    removeBlacklistAds(blackListAds);
3539}
3540
3541$.each(unfilteredAdUnits, function (i, unit) {
3542    removeWhitelistAds(unit);
3543});
3544
3545// set up a holder for all the adverts so we can do things with them later
3546var dfpHolder = {};
3547// the set up code
3548googletag.cmd.push(function() {
3549    $.each(adUnits, function(i, data) {
3550
3551        // check if the dom exists
3552        if ($('#'+data.domName).length === 0) {
3553            return;
3554        }
3555
3556        var dfp = null;
3557
3558        if (data.slotType === 'standard')
3559        {
3560            // get the correct sizes, using the alternate_sizes if they exist and we are on a mobile site
3561            var sizes = data.sizes;
3562            if (data.alternate_mobile_size && isMobile()) {
3563                sizes = data.alternate_mobile_size;
3564            }
3565            // push this ad slot through
3566            dfp = googletag.defineSlot(googleId, sizes, data.domName)
3567                .addService(googletag.pubads())
3568                .setTargeting("position", data.positionName)
3569                .setCollapseEmptyDiv(data.collapseContainer);
3570            // check if we have an array of targets, and assign them as a companion if we do
3571            if (data.targets instanceof Array && data.targets.length > 0 ) {
3572                dfp.setTargeting('companion', data.targets);
3573            }
3574
3575        }
3576        else if (data.slotType === 'outofpage')
3577        {
3578            dfp = googletag.defineOutOfPageSlot(googleId, data.domName)
3579                .addService(googletag.pubads())
3580                .setTargeting("position", data.positionName)
3581                .setCollapseEmptyDiv(data.collapseContainer);
3582            // check if we have an array of targets, and assign them as a companion if we do
3583            if (data.targets instanceof Array && data.targets.length > 0 ) {
3584                dfp.setTargeting('companion', data.targets);
3585            }
3586        }
3587
3588        // store
3589        dfpHolder[data.domName] = dfp;
3590
3591    });
3592
3593    if (adLight === true) {
3594        googletag.pubads().setCategoryExclusion('adlight');
3595        // var adlightexplanation = '<div class="adlight-explanation">I\'m a subscriber <a href="#" class="adlight-explanation-link">Why am I seeing this advert?</a></div>';
3596        // if ($('#DFP_premium_mpu').length > 0) {
3597        //     $('#DFP_premium_mpu').before(adlightexplanation);
3598        // }
3599
3600        // if ($('#DFP_standard_mpu_1').length > 0) {
3601        //     $('#DFP_standard_mpu_1').before(adlightexplanation);
3602        // }
3603
3604        // var imageIds = [11497497, 11497535, 11497536, 11497541, 11497542, 11497545, 11497546, 11497547];
3605        // var imageId = imageIds[Math.floor(Math.random() * imageIds.length)];
3606        // $('.adlight-explanation-link').click(function(e) {
3607        //     e.preventDefault();
3608        //     $('#adlight-explanation-modal-image').attr('src', '/resources/images/' + imageId + '/').show();
3609        //     $('#adlight-explanation-modal').modal();
3610        // });
3611    }
3612
3613    // send the request
3614    googletag.pubads().enableSingleRequest();
3615
3616    googletag.enableServices();
3617
3618    googletag.pubads().addEventListener('slotVisibilityChanged', function(event) {
3619        if (event.slot.getResponseInformation().creativeTemplateId === 828288 ||
3620            event.slot.getResponseInformation().creativeTemplateId === 12383216 ) {
3621            console.log('DFP: Magic template id detected, not refreshing');
3622            return;
3623        }
3624        var slotName = '';
3625        $.each(dfpHolder, function (a, e) {
3626            if (e == event.slot) {
3627                slotName = a;
3628            }
3629        });
3630        if (typeof window.advertisingTimer !== 'undefined') {
3631            var perc = event.inViewPercentage;
3632            window.advertisingTimer.timer(slotName, perc);
3633        }
3634    });
3635});
3636
3637// the display code
3638$.each(adUnits, function(i, data) {
3639
3640    // check if the dom exists
3641    if ($('#'+data.domName).length === 0) {
3642        return;
3643    }
3644
3645    if (data.domName === 'DFP_interstitial_mpu') {
3646        if (!inter.checkVisit()) {
3647            return;
3648        }
3649    }
3650
3651    // are we manually loading it?
3652    if ($('#'+data.domName).attr('data-manual-loading') === "yes") {
3653        return;
3654    }
3655    // for mobile, we check if the dom element has the data-delay-loading attribute set to "1"
3656    else if ($('#'+data.domName).attr('data-delay-loading') === "yes") {
3657
3658        // load it
3659        $('#'+data.domName).appear();
3660        $(document.body).on('appear', '#'+data.domName, function(e, allElement) {
3661
3662            // don't call it many times
3663            if ($(this).attr('data-processed') === 'yes') {
3664                return;
3665            }
3666
3667            $(this).attr('data-processed', 'yes');
3668
3669            // display the google ad
3670            googletag.display(data.domName);
3671            googletag.pubads().refresh([dfpHolder[data.domName]]);
3672        });
3673        return;
3674    }
3675    googletag.cmd.push(function() {
3676        googletag.display(data.domName);
3677    });
3678});
3679window.googleComplete = performance.now();
3680window.googleReady = true;
3681
3682// METHODS
3683function addToTargeting(targeting, data) {
3684    if (!data) {
3685        return targeting;
3686    }
3687    $.each(data, function (key, value) {
3688        if (!value) {
3689            return;
3690        }
3691        targeting[key] = value;
3692    });
3693    return targeting;
3694}
3695
3696function addAdSlot(slotName, slot, initHidden) {
3697    console.log("Add ad slot called for %s %s", slotName, slot);
3698    // check if item already exists
3699    if (typeof window.dfpHolder[slotName] !== 'undefined') {
3700        return;
3701    }
3702
3703    if (window.adLight === true) {
3704        return;
3705    }
3706    window.googletag.cmd.push(function() {
3707        var dfp = googletag.defineSlot(window.googleId, [[300,250]], slotName)
3708            .setTargeting('position', [slot])
3709            .addService(googletag.pubads());
3710        window.dfpHolder[slotName] = dfp;
3711
3712        if (!initHidden) {
3713            googletag.pubads().refresh([dfp]);
3714
3715            return;
3716        }
3717    });
3718}
3719
3720function hideAdsByScreensize() {
3721    if (window.screen.width < 728 && $('#BlockArticleContainer').length > 0) {
3722        if ('160' === '1147') {
3723            $('#DFP_out_of_page').remove();
3724        } else {
3725            $('#DFP_premium_mpu').remove();
3726        }
3727        $('#DFP_on_scroll').remove();
3728    } else if (window.screen.width < 728 &&
3729        ( $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='9']").length > 0 ||
3730        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='12']").length > 0  ||
3731        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='18']").length > 0  ||
3732        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='24']").length > 0 )
3733    ) {
3734        const adElement = document.querySelector('#high_vis_container');
3735        $('.omnicard[data-position="5"]').after(adElement);
3736    }
3737
3738    if ('160' === '1147' && window.screen.width > 450) {
3739        $('#DFP_bottom_leaderboard').remove();
3740    }
3741
3742    if ('160' === '1147' && window.screen.width < 728) {
3743        $('#DFP_top_leaderboard').remove();
3744    }
3745
3746    if ('160' === '1147') {
3747        $('#DFP_teads').remove();
3748        $('#DFP_out_of_page').remove();
3749    }
3750
3751    if ($('#comments-in-page').length === 1 && window.screen.width > 450) {
3752        $('#DFP_top_leaderboard').parent().remove();
3753        $('#DFP_bottom_leaderboard').parent().remove();
3754        // $('#DFP_standard_mpu_1').parent().remove();
3755    }
3756}
3757
3758function removeBlacklistAds(blackListAds) {
3759    $.each(blackListAds, function(i, name) {
3760        removeAdContainer(name);
3761    });
3762}
3763
3764function removeWhitelistAds(unit) {
3765    // VAST (video) ad units never get displayed in here.
3766    if (unit.isVast) {
3767        return;
3768    }
3769
3770    // if we have an ad-light experience
3771    if (whiteList === true) {
3772        if (typeof whiteListAds[unit.positionName] === 'undefined') {
3773            removeAdContainer(unit.domName)
3774            return;
3775        }
3776    }
3777
3778    adUnits.push(unit);
3779}
3780
3781function removeAdContainer(name) {
3782    const element = document.getElementById(name);
3783    // doesn't exist? exit
3784    if(!element) {
3785        return;
3786    }
3787
3788    const parent = element.parentElement;
3789    if (parent && parent.classList.contains('block-bottom-margin')) {
3790        // if immediate parent contains block-bottom-margin as a class, remove the parent as well
3791        parent.classList.remove('block-bottom-margin');
3792    }
3793    if (parent && parent.classList.contains('mar-leaderboard--top')) {
3794        // in case of leaderboard, remove as has min-height
3795        parent.remove();
3796        return;
3797    }
3798
3799    if (parent && parent.classList.contains('mar-leaderboard--bottom')) {
3800        // in case of article ad container, remove as has min-height
3801        parent.remove();
3802        return;
3803    }
3804
3805    element.remove();
3806}
3807</script>
3807
3808
3809
3810<script src="/resources/responsive-static/build/mds/js/global.js?cb=vjoPdzgg"></script>
3810
3811
3812
3813
3814
3815
3816<script src="/__siren/"></script>
3816
3817
3818
3819<script src="//uatu.newsquestdigital.co.uk/collector.php?article_id=26575627&site_id=160"></script>
3819
3820<!--
3820<script src="//uatu.newsquestdigital.co.uk/recommender-json-2.php?article_id=26575627&site_id=160"></script>
3820 -->
3821
3822
3823<script type="text/javascript">
3824    var s_account="newsquestgroupprod";
3825</script>
3825
3826
3827<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/VisitorAPI.js?cb=vjoPdzgg"></script>
vendor: 1 bytes, line 3827
3827
3828<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/omniture.js?cb=vjoPdzgg"></script>
3828
3829
3830<script type="text/javascript">
3831
3832function getOmniturePath() {
3833    var path = '';
3834    if ($('#gallery-base-url').length === 1) {
3835        path = $('#gallery-base-url').val();
3836    }
3837    else {
3838        path = window.location.pathname;
3839    }
3840    return path;
3841}
3842
3843function getPositionFromCookie() {
3844    const cookieName = 'tracking_block_index';
3845
3846    const ref = document.cookie
3847        .split('; ')
3848        .find(row => row.startsWith(`${cookieName}=`))
3849        ?.slice(cookieName.length + 1);
3850
3851    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
3852
3853    return ref ? decodeURIComponent(ref) : undefined;
3854}
3855function getRefFromCookie() {
3856    const cookieName = 'tracking_block';
3857
3858    const ref = document.cookie
3859        .split('; ')
3860        .find(row => row.startsWith(`${cookieName}=`))
3861        ?.split('=')[1];
3862
3863    // Remove the cookie
3864    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
3865
3866    return ref;
3867}
3868
3869function getOmnitureTrackingFromCookie(key, preExistingValue) {
3870    var ref = $.cookie('o-' + key);
3871    if(typeof(ref) === 'undefined') {
3872    	ref  = preExistingValue
3873    } else {
3874    	ref = decodeURIComponent(ref);
3875    	$.removeCookie('o-' + key, {
3876            path: '/',
3877            domain: window.data_layer.site.cookie_domain,
3878        });
3879    }
3880    return ref;
3881}
3882
3883function getValidatedAPList() {
3884
3885    var validList = [1100, 1101, 1002, 1006, 1010, 1014, 1018, 1022, 1200, 1202, 1205, 1300, 1602, 1605, 1608, 1612, 1616, 1500, 1503, 1507, 1509, 1512, 1402, 1406, 1409, 1412, 1416, 14331, 14333, 14335, 14336, 14339, 14342, 14344, 14345, 14346, 14350, 14351, 14353, 14359, 14366, 14370, 14371, 14377, 14388, 14394, 14396, 14399, 14407, 14221, 14423, 15679, 15681, 15682, 15683, 15684, 15686, 15687, 15688, 15975];
3886
3887    var data = getAudienceProjectTargetingData();
3888    if (!data || !data.ap_x) {
3889        return '';
3890    }
3891
3892    validData = [];
3893    $.each(data.ap_x, function(i, td) {
3894        if ($.inArray(parseInt(td, 10), validList) !== -1) {
3895            validData.push(td);
3896        }
3897    });
3898
3899    return validData.join(',');
3900}
3901
3902path = document.location.href.split("/");
3903
3904var qs = new URLSearchParams(window.location.search);
3905
3906var prop30 = qs.get('lp');
3907var prop43 = qs.get('ref');
3908var pType="BlockArticleModule"
3909
3910if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
3911    pType = 'ArticleModule';
3912}
3913
3914for(x=4; x<7; x++)
3915{
3916    if (typeof path[x] == 'undefined')
3917    {
3918        path[x] = '';
3919    }
3920    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
3921    {
3922        path[x] = path[x-1];
3923    }
3924    else
3925    {
3926        path[x] = path[x-1] + "/" + path[x];
3927    }
3928    path[x] = path[x].replace(/\/undefined/g,"");
3929}
3930pathN= unescape(document.location.pathname.toString());
3931matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
3932detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
3933if (detailMatches !== null && detailMatches.length > 1)
3934{
3935    matches = detailMatches;
3936}
3937
3938if (matches !== null && matches.length > 1)
3939{
3940    var subfolder = '';
3941    path[3] = 'li';
3942    path[4] = 'li/'+subfolder;
3943    path[5] = 'li/'+subfolder+'/'+matches[1];
3944    path[6] = 'li/'+subfolder+'/'+matches[1];
3945}
3946if (pathN === '/')
3947{
3948    path[3] = 'homepage';
3949    path[4] = 'homepage';
3950    path[5] = 'homepage';
3951    path[6] = 'homepage';
3952}
3953
3954
3955/* You may give each page an identifying name, server, and channel on
3956the next lines. */
3957s.pageName="(www) "+getOmniturePath();
3958s.pageName = s.pageName.toLowerCase();
3959s.server="martini";
3960s.channel="";
3961s.pageType="";
3962s.prop1= qs.get('search');
3963s.prop2="";
3964s.prop3=document.title;
3965s.prop4="26575627";
3966s.prop5="BlockArticleModule"; /* get from Martini */
3967s.prop6=path[3].toLowerCase();
3968s.prop7=path[4].toLowerCase();
3969s.prop8=path[5].toLowerCase();
3970s.prop9=path[6].toLowerCase();
3971s.prop10="";
3972s.prop15="none|use author profile|helen attwood";
3973s.prop16=path[2].toLowerCase();
3974s.prop17="Stourbridge";
3975s.prop18="Martini";
3976s.prop19="1";
3977s.prop20 = s.getPreviousValue(s.pageName, 'gpv_pn');
3978s.prop42 = "";
3979s.prop53 = 'standard';
3980s.prop54 = '';
3981s.prop55 = '';
3982s.prop56 = "BAM Standard Article";
3983s.prop57 = ($('[data-name="Feature Article Block A"]').length > 0) ? 'Enabled' : 'Disabled';
3984s.prop58 = document.querySelector('[data-name="Feature Article Block B"]')?.dataset.variant;
3985s.prop59 = getRefFromCookie();
3986s.prop60 = getPositionFromCookie();
3987s.prop73 = document.cookie.split('; ').find(row => row.startsWith('adtiming='))?.split('=')[1] || null;
3988
3989var eVar67 = [];
3990
3991if ($.cookie('consentUUID')) {
3992    eVar67.push('yes');
3993} else {
3994    eVar67.push('no');
3995}
3996if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
3997    eVar67.push('yes');
3998} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
3999    eVar67.push('no');
4000} else {
4001    eVar67.push('none');
4002}
4003
4004if ($.cookie('_sp_legitimate_interests') === 'true') {
4005    eVar67.push('yes');
4006} else if ($.cookie('_sp_legitimate_interests') === 'false') {
4007    eVar67.push('no');
4008} else {
4009    eVar67.push('none');
4010}
4011
4012//if ($.cookie('euconsent')) {
4013//    eVar67.push($.cookie('euconsent'));
4014//} else {
4015//    eVar67.push('none');
4016//}
4017
4018s.eVar67 = eVar67.join(',');
4019// console.log('ADB: setting eVar67 to %s', eVar67.join(','));
4020
4021if ($.cookie('prev-tcf-v2')) {
4022    // console.log('ADB: Setting eVar68 to ', $.cookie('prev-tcf-v2'));
4023    s.eVar68 = $.cookie('prev-tcf-v2');
4024}
4025
4026if (typeof iabNames !== 'undefined') {
4027    s.prop29 = iabNames.join(',');
4028} else if (typeof iabIds !== 'undefined') {
4029    s.prop29 = iabIds.join(',');
4030}
4031
4032if (s.prop20 && s.prop20 !== 'no value') {
4033    s.prop21 = s.getPercentPageViewed();
4034} else {
4035    s.prop21 = '';
4036}
4037
4038if (typeof __siren !== 'undefined') {
4039    s.eVar27 = __siren;
4040}
4041
4042s.prop22 = s.getDaysSinceLastVisit('s_lv');
4043
4044
4045s.prop43=getOmnitureTrackingFromCookie('ref', prop43);
4046s.prop25 = 'retail'
4047
4048s.prop27 = '';
4049s.prop28='2539'
4050s.prop30 = getOmnitureTrackingFromCookie('prop30', prop30);
4051s.linkInternalFilters="javascript:,stourbridgenews.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,"
4052s.eVar61=(new Date()).toLocaleDateString("en-GB");
4053/* s.eVar62=(new Date()).toLocaleDateString("en-GB"); */
4054
4055s.eVar63 = "+1";
4056/* s.eVar64 = "+1"; */
4057
4058s.eVar60 = "1,metered,no";
4059
4060s.prop61 = 'news';
4061s.prop62 = '';
4062s.prop63 = '25';
4063s.prop64 = '';
4064
4065s.prop66 = '';
4066s.prop66 += ($('#inArticleAd').length > 0) ? "y;" : "n;";
4067s.prop66 += ($('#inArticleAd-1').length > 0) ? "y;" : "n;";
4068s.prop66 += ($('#inArticleAd-2').length > 0) ? "y;" : "n;";
4069s.prop66 += ($('#inArticleAd-3').length > 0) ? "y;" : "n;";
4070s.prop66 += ($('#inArticleAd-4').length > 0) ? "y;" : "n;";
4071s.prop66 += ($('#inArticleAd-5').length > 0) ? "y;" : "n;";
4072s.prop66 += ($('#inArticleAd-6').length > 0) ? "y;" : "n;";
4073s.prop66 += ($('#inArticleAd-7').length > 0) ? "y;" : "n;";
4074s.prop66 += ($('#inArticleAd-8').length > 0) ? "y"  : "n";
4075s.prop66 += ($('#inArticleAd-9').length > 0) ? "y"  : "n";
4076s.prop66 += ($('#inArticleAd-10').length > 0) ? "y"  : "n";
4077
4078s.eVar107 = '9';
4079s.eVar108 = '12506';
4080
4081
4082
4083s.eVar104 = 'Business';
4084
4085
4086
4087s.prop56 = "BAM Standard Article";
4088
4089
4090/* Article-site-cloning data */
4091s.eVar90 = window.data_layer.article.parent_originating_site_id;
4092s.eVar91 = window.data_layer.article.originating_article_id;
4093s.eVar92 = window.data_layer.article.is_original_to_site;
4094s.eVar95 = window.data_layer.site.using_piano_id;
4095s.eVar106 = 'AI-Assisted';
4096
4097s.eVar109 = '';
4098
4099/* Uber block article counts */
4100s.eVar93 = window.data_layer.page.top_stories_article_count + ':' + window.data_layer.page.interstitial_article_count + ':' + window.data_layer.page.news_stories_article_count;
4101
4102/* Conversion Variables */
4103s.campaign=""
4104s.state=""
4105s.zip=""
4106s.events=""
4107s.products=""
4108s.purchaseID=""
4109s.eVar14=""
4110try {
4111    s.list3=getValidatedAPList();
4112} catch (e) {
4113    // do nothing
4114}
4115
4116
4117
4118
4119// Initial fotorama tracking.
4120var moduleType = null;
4121if (s.prop5 === 'ArticleModule' || s.prop5 == 'PropertyModuleReplacement' || s.prop5 === 'BlockArticleModule') {
4122    moduleType = 'article';
4123} else if (s.prop5 === 'PictureGalleryModule') {
4124    moduleType = 'gallery';
4125}
4126
4127if ($('#comments-in-page').length === 1) {
4128    moduleType = 'comments';
4129}
4130
4131if (moduleType === 'article' || moduleType === 'gallery' || moduleType === 'comments') {
4132    var imagePath = '';
4133
4134    if ($('.fotorama').length > 0) {
4135        // Get the first Fotorama image.
4136        try {
4137            var el = $('.fotorama').data('fotorama').data[0].html;
4138            var url = $(el).find('div').css('background-image');
4139            imagePath = url.replace('url(','').replace(')','').replace(/\"/gi, "");
4140        } catch (e) {
4141        }
4142    } else {
4143        // If there's just one image (i.e. it's not a gallery), find its path.
4144        var imagePathSingle = $('#mainImage').attr('src');
4145        if (typeof imagePathSingle !== 'undefined') {
4146            imagePath = imagePathSingle.split('.')[0] + '/';
4147        }
4148    }
4149    var imageParts = imagePath.split('/');
4150    if (imageParts.length > 1) {
4151        s.eVar37 = imageParts[imageParts.length - 2];
4152        s.prop37 = imageParts[imageParts.length - 2];
4153        s.events = s.apl(s.events, 'event7', ',', 2);
4154    }
4155    s.eVar36 = moduleType;
4156    s.prop36 = moduleType;
4157}
4158
4159
4160
4161// Education pages.
4162if (s.prop5 === 'ResponsiveEducationModule') {
4163    // School profile page.
4164    if ($('#eduOverview').length > 0) {
4165        s.eVar40 = $('#eduOverview').data('school-status');
4166        s.prop40 = s.eVar40;
4167        s.prop41 = 'edu-' + $('#eduOverview').data('school-urn');
4168        s.prop46 = $('#town').text();
4169    }
4170
4171    // Comparison page.
4172    if ($('#eduComparisonTable').length > 0) {
4173        s.list1 = '';
4174    }
4175
4176    // Results page.
4177    if ($('.school-results').length > 0) {
4178        s.list1 = '';
4179
4180        // Track the search criteria.
4181        s.prop44 = '';
4182        s.prop45 = "".toLowerCase();
4183        s.prop46 = "".toLowerCase();
4184        s.prop49 = '';
4185        s.prop50 = '';
4186        s.prop51 = '';
4187        s.eVar2 = s.prop50;
4188
4189        var newSearch = false;
4190        if (newSearch) {
4191            s.events = s.apl(s.events, 'event17', ',', 1);
4192        }
4193    }
4194}
4195
4196// Notices Module
4197if (s.prop5 === 'NewsquestModulesNoticesModule') {
4198    // Notices Find page.
4199    if (s.pageName.includes('notices/find')) {
4200        s.pageName = '(www) /notices/find/';
4201        s.eVar50 = '';
4202        const noticesURL = new URL(window.location.href);
4203        const noticesParams = new URLSearchParams(noticesURL.search);
4204
4205        s.eVar1 = noticesParams.has('keyword') ? noticesParams.get('keyword') : 'None';
4206        s.eVar51 = noticesParams.has('sort') ? noticesParams.get('sprt') : 'best';
4207        s.eVar52 = noticesParams.has('p') ? (parseInt(noticesParams.get('p'), 10) + 1) : 1;
4208        s.eVar53 = noticesParams.has('type') ? noticesParams.get('type') : 'All';
4209        s.eVar54 = noticesParams.has('nearby') ? noticesParams.get('nearby') : 'no';
4210        s.eVar55 = noticesParams.has('daterange') ? noticesParams.get('daterange') : 'last-month';
4211
4212        if (noticesParams.has('sort')) {
4213            switch (noticesParams.get('sort')) {
4214                case 'date_asc':
4215                    s.eVar51 = 'oldest';
4216                    break;
4217                case 'date_desc':
4218                    s.eVar51 = 'newest';
4219                    break;
4220                case 'best_match':
4221                    s.eVar51 = 'best';
4222                    break;
4223                default:
4224                    s.eVar51 = noticesParams.get('sort');
4225                    break;
4226            }
4227        }
4228
4229        // Concatenate all search params into eVar44
4230        if (noticesParams.size > 0) {
4231            const searchParams = new URL(window.location.href).searchParams;
4232            s.eVar44 = '';
4233            searchParams.forEach((value, key) => {
4234                s.eVar44 += `${key}=${value},`;
4235            });
4236        } else {
4237            s.eVar44 = '';
4238        }
4239
4240        // Adobe Search Event triggering
4241        const setNoticePaginationClicked = (value) => {
4242            localStorage.setItem("isNoticePaginationClicked", value);
4243        };
4244
4245        const noticeSearchInput = document.getElementById("notices-search");
4246        const noticeSearchBtn = document.getElementById("notice-search-find");
4247        const noticePaginationBtns = document.querySelectorAll('.notice-find__pagination .pagination-btn');
4248        const noticePaginationBtnPrev = document.querySelector('.pagination-btn-previous svg');
4249        const noticePaginationBtnNext = document.querySelector('.pagination-btn-next svg');
4250
4251        noticeSearchInput?.addEventListener('change', () => setNoticePaginationClicked('false'));
4252        noticeSearchBtn?.addEventListener('click', () => setNoticePaginationClicked('false'));
4253
4254        noticePaginationBtns.forEach(btn => {
4255            btn.addEventListener('click', () => setNoticePaginationClicked('true'));
4256        });
4257
4258        noticePaginationBtnPrev?.addEventListener('click', () => setNoticePaginationClicked('true'));
4259        noticePaginationBtnNext?.addEventListener('click', () => setNoticePaginationClicked('true'));
4260
4261        if (localStorage.getItem("isNoticePaginationClicked") === 'false') {
4262            s.events = s.apl(s.events, 'event1', ',', 1);
4263        }
4264    }
4265
4266    if (/notices\/funeral-directors\/(\d+)\.([a-zA-Z0-9-?]+)?/.test(s.pageName)) {
4267        s.pageName = '(www) /notices/funeral-director/';
4268        s.eVar41 = '';
4269    }
4270}
4271
4272if (s.prop5 === 'NewsquestModulesNoticeModule') {
4273    s.eVar41 = '';
4274    const type = window.announcement_data?.details?.type || '';
4275    const subCategory = window.announcement_data?.details?.sub_category || '';
4276    s.eVar40 = type !== 'Tribute' ? type : `${type} - ${subCategory}`;
4277    s.eVar42 = window.announcement_data?.details?.id || '';
4278    s.eVar107 = '9';
4279    s.eVar119 = '';
4280    s.eVar120 = '';
4281    s.eVar2 = "(www) /notice/";
4282}
4283
4284//New Property module
4285if (s.prop5 === 'ResponsivePropertyModule') {
4286    /*
4287        Use prop42 for single and list pages, for list pages use hyphen separate lists of id's
4288    */
4289    
4290    
4291    //Property's all over the place (homepage, searches etc - HOM-133
4292
4293    //Property Detail - HOM-131, HOM-134, HOM-130
4294
4295    //Contact us submissions - HOM-137
4296    if($('#propertyModule.agent-details').length > 0) {
4297        //Add a click handler for a.contact-detail
4298    }
4299
4300
4301}
4302
4303// is their a video tag on the page?
4304if ($('.exco-embed').length > 0) {
4305    console.log('VID: setting tracking for event50');
4306    s.events = s.apl(s.events, 'event50', ',', 1);
4307}
4308
4309var foundAutoPlayVid = false;
4310$('.jw-outer').each(function (a, domEle) {
4311    if ($(this).data('multimedia-block') === 'no' && !foundAutoPlayVid) {
4312        console.log('VID: setting tracking for event51');
4313        s.events = s.apl(s.events, 'event51', ',', 1);
4314        foundAutoPlayVid = true;
4315    }
4316});
4317
4318
4319
4320
4321
4322
4323
4324s.eVar66 = 'Ad-Full';
4325s.eVar114 = '';
4326
4327
4328
4329    // var eVar65Copy = s.getValOnce(s.eVar65, "ev65", 0);
4330    // if (eVar65Copy !== '' && s.prop20.indexOf("/my/subscription/activate/") > -1) {
4331    //     s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
4332    //     s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
4333    //     s.products = "Subscription : Metered Access;" + eVar65Copy + ";1;";
4334    //     s.purchaseID = "";
4335    // }
4336
4337
4338if(qs.get('action') === 'success' && (s.prop5 === 'ArticleModule' || s.prop5 === 'BMDModule' || s.prop5 === 'BlockArticleModule')) {
4339    s.events=s.apl(s.events,'event9',',',2)
4340}
4341/* Hierarchy Variables */
4342s.hier1="newsquest," + "Stourbridge" + ",www.stourbridgenews.co.uk," + path[6].replace(/\//,",");
4343
4344if (typeof MartiniFotorama !== 'undefined') {
4345    MartiniFotorama.loadOmniture(s);
4346}
4347s.prop39 = "0";
4348
4349
4350
4351// Tracking usage of Bytecast audio embeds in articles.
4352s.eVar82 = 'no';
4353s.eVar83 = '';
4354
4355    console.log('ADB: starting');
4356    console.log('Google Bot Browser: ', window.isRobot.googleBot()); //TODO Remove this log after QA
4357
4358// Tracking of Commenting Registration FLow
4359if (s.prop5 !== 'BlockArticleModule') {
4360    const storedAdobeDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
4361    if (storedAdobeDimensions) {
4362        const storedAdobeDimensionObj = JSON.parse(storedAdobeDimensions);
4363        s.eVar10 = storedAdobeDimensionObj.eVar10;
4364        s.eVar15 = storedAdobeDimensionObj.eVar15;
4365        s.eVar22 = storedAdobeDimensionObj.eVar22;
4366        s.eVar23 = storedAdobeDimensionObj.eVar23;
4367        s.eVar24 = storedAdobeDimensionObj.eVar24;
4368        s.eVar25 = storedAdobeDimensionObj.eVar25;
4369        s.eVar28 = storedAdobeDimensionObj.eVar28;
4370        s.eVar60 = storedAdobeDimensionObj.eVar60;
4371        s.eVar104 = storedAdobeDimensionObj.eVar104;
4372        s.eVar106 = storedAdobeDimensionObj.eVar106;
4373        s.eVar107 = storedAdobeDimensionObj.eVar107;
4374        s.eVar108 = storedAdobeDimensionObj.eVar108;
4375        s.prop63 = storedAdobeDimensionObj.prop63;
4376    }
4377}
4378
4379if (window.location.href.includes("/user/create-account/commenting/")) {
4380    s.eVar2 = '(www) /user/create-account/commenting/';
4381}
4382
4383/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
4384if (qs.get('callback') !== 'in' && !window.isRobot.googleBot()) {
4385    var s_code=s.t();
4386    var backupAdobe = s;
4387
4388    if(s_code)document.write(s_code)
4389}
4390
4391// Storing the visiting dimensions
4392if (s.eVar10 || s.eVar22 || s.eVar23 || s.eVar24) {
4393    const adobeTrackingVisitingDimensions = {
4394        eVar10: s.eVar10,
4395        eVar22: s.eVar22,
4396        eVar23: s.eVar23,
4397        eVar24: s.eVar24,
4398    }
4399    sessionStorage.setItem('nq_adobe_tracking_visiting_dimensions', JSON.stringify(adobeTrackingVisitingDimensions));
4400}
4401
4402//--></script>
4402
4403<!-- End SiteCatalyst code version: H.19.3. -->
4404
4405
4406
4407
4408    
4408<script src="/resources/responsive-static/build/mds/js/article.js?cb=vjoPdzgg"></script>
4408
4409
4410
4411<script>
4412    if ('' !== '') {
4413        setTimeout(function() {
4414            data_layer_helper.loadScript(
4415                "/resources/responsive-static/build/mds-next/js/.js?cb=vjoPdzgg",
4416                true,
4417                null,
4418                "module"
4419            )
4420        }, 500);
4421    }
4422</script>
4422
4423
4424</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.