PageSourceSearch

https://www.yourlocalguardian.co.uk/user/login/?redirect_url=/user/account/

html yourlocalguardian.co.uk collected 2026-10-02 04:48:45 UTC 119,170 bytes, 3,175 lines download raw bytes

1<!-- standard - CustomHeader-NoAds-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    <title>User news from the Your Local Guardian</title>
5
6    <meta charset="utf-8">
7    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
8    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9    <meta name="OMG-Verify-V1" content="4389-366acdfc-5224-4c07-bb70-f74d8fbfc2db" />
10    <meta name="robots" content="max-image-preview:large">
11    <meta name="format-detection" content="telephone=no">
12
13    <style>
14        .mar-leaderboard--top {
15            display: none;
16        }
17    </style>
18    
18<script>
19        window.doNotAdvertise = true;
20    </script>
20
21    	<meta property="fb:pages" content="1376517362570665" />
22	<meta property="fb:pages" content="159565014080374" />
23	<meta property="fb:pages" content="555784861221112" />
24	<meta property="fb:pages" content="286819014775973" />
25	<meta name="title" content="User news from the Your Local Guardian"/>
26	<meta name="description" content="User news from the Your Local Guardian"/>
27	<meta name="keywords" content=""/>
28
29<script type="application/ld+json">
30    {
31        "@context": "http://schema.org",
32        "@type": "WebPage",
33        "headline": "User | Login Index",
34        "url": "https://www.yourlocalguardian.co.uk/user/login/?redirect_url=/user/account/"
35    }
36</script>
36
37
38
39
40
41
42
43
44
45    <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">
46
47    <link href="/resources/responsive-static/build/mds/css/header-footer.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
48
49    <link id="page_stylesheet" href="/resources/responsive-static/build/mds/css/useridentity.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
50
51    <link rel="shortcut icon" href="/resources/images/17416459/" type="image/vnd.microsoft.icon">
52    <link rel="icon" href="/resources/images/17416459/" type="image/vnd.microsoft.icon">
53    
53<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 53
53
54<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 54
54
55<script type="text/javascript" src="/resources/shared/responsive-sync/?r=vjoPdzgg"></script>
55
56
57<script type="text/javascript">
58    data_layer_helper.setIsArticle(false);
59    data_layer_helper.setCookieDomain('.yourlocalguardian.co.uk');
60    data_layer_helper.setModuleType('Newsquest\Modules\UserIdentityModule');
61    data_layer_helper.setLocalInfoFolder('');
62    data_layer_helper.setHomesData('', '', '', 'user');
63    data_layer_helper.setPrimaryDomain('www.yourlocalguardian.co.uk');
64    data_layer_helper.setPath('/user/');
65    data_layer_helper.setGoogleNetworkCode('154725070');
66    data_layer_helper.setArticleTimestamp('');
67    data_layer_helper.setPathOverride();
68
69
70    var extraTags = [];
71    
72        extraTags.push('user_level_anonymous');
73    
74
75    var data_layer = {
76        environment: {
77            is_test_site: 'no',
78            is_live_site: 'yes',
79            is_paywall_site: 'no',
80            is_portable_screen: (data_layer_helper.isMobileScreen()) ? 'yes' : 'no',
81            is_desktop_screen: (data_layer_helper.isMobileScreen()) ? 'no' : 'yes',
82            is_mobile_device: data_layer_helper.getMobileDevice(),
83            is_tablet_device: data_layer_helper.getTabletDevice(),
84            server: 'webapp-857f48ddbd-fx8ld',
85            platform: 'Martini'
86        },
87        site: {
88            id: '35',
89            comments_subscriber_only: 'no',
90            viafoura_site_id: '00000000-0000-4000-8000-e044ec98dd73',
91            comments_use_viafoura: 'yes',
92            centre_id: '2',
93            centre_name: 'South West London',
94            country: 'England',
95            name: 'Your Local Guardian',
96            name_with_prefix_capitalised_possessive: 'The Your Local Guardian\'s',
97            name_with_prefix_lower_possessive: 'the Your Local Guardian\'s',
98            domain: 'www.yourlocalguardian.co.uk',
99            editor_name: 'Simon Murfitt',
100            onboarding_enabled: 'no',
101            onboarding_flow_id: 'onboarding_disabled',
102            allowing_mr_replacement: '',
103            cookie_domain: '.yourlocalguardian.co.uk',
104            uses_cmp: 'yes',
105            short_domain: 'yourlocalguardian',
106            using_piano_id: 'yes',
107            enable_skimlinks: 'yes',
108            skimlinks_domain_id: '613833',
109            disable_newsletters: 'no',
110            is_archant_site: 'no',
111            shc_merchant_name: '',
112            piano_application_group: 'Forest',
113            piano_site_name: 'Your Local Guardian',
114            piano_site_name_possessive: 'Your Local Guardian\'s',
115            piano_site_name_with_prefix_lower: 'the Your Local Guardian',
116            piano_site_name_with_prefix_capitalised: 'The Your Local Guardian',
117            piano_site_name_with_prefix_capitalised_possessive: 'The Your Local Guardian\'s',
118            piano_site_name_with_prefix_lower_possessive: 'the Your Local Guardian\'s',
119            piano_location_primary: 'Sutton',
120            piano_location_primary_possessive: 'Sutton\'s',
121            piano_location_county: 'Surrey',
122            piano_location_county_possessive: 'Surrey\'s',
123            piano_primary_sports_team: '',
124            piano_primary_sports_team_nickname: '',
125            piano_primary_sports_team_sport: '',
126            piano_primary_sports_team_possessive: '',
127            piano_primary_sports_team_nickname_possessive: '',
128            piano_self_service_cancellation_setting: 'None',
129            has_app: 'no',
130            app_provider: '',
131            app_platform: '',
132            app_store_url_ios: '',
133            app_store_url_google_play: '',
134            cloudflare_turnstyle_site_key: '',
135        },
136        page: {
137            module: 'Newsquest\Modules\UserIdentityModule',
138            referrer: data_layer_helper.getReferrerHostName(),
139            name: '(www) ' + data_layer_helper.getOmniturePath(),
140            title: document.title,
141            path: data_layer_helper.getOmniturePath(),
142            section: data_layer_helper.getPathFragment(0),
143            subsection: data_layer_helper.getPathFragment(1),
144            subsection_2: data_layer_helper.getPathFragment(2),
145            subsection_3: data_layer_helper.getPathFragment(3),
146            reference: qs.get('ref'),
147            layout: '',
148            ad_timing: data_layer_helper.getCookie('adtiming'),
149            template_namespace: 'standard',
150            template: '',
151            colour_scheme: '',
152            layout_template: '',
153            mds_font: 'sans-serif',
154            user_used_app_last_24hours: '',
155            user_used_app_last_7days: '',
156            user_used_app_last_14days: '',
157            mds_colour_palette: 'palette-7',
158            feature_block_a_enabled: ($('[data-name="Feature Article Block A"]').length > 0) ? 'yes' : 'no',
159            feature_block_b_variant: (typeof $('[data-name="Feature Article Block B"]').data('variant') === 'undefined') ? '' : $('[data-name="Feature Article Block B"]').data('variant'),
160            is_article_list: 'no',
161            error_404: '',
162            top_stories_article_count: '',
163            interstitial_dedupe_top_stories: '',
164            interstitial_desktop_height: '',
165            interstitial_mobile_height: '',
166            interstitial_tablet_height: '',
167            interstitial_piano_module_id: '',
168            interstitial_using_recommendations: '',
169            interstitial_recommendation_header: '',
170            interstitial_article_count: '',
171            news_stories_article_count: '',
172            site_newspaper_archive_enabled: 'no',
173            site_newspaper_archive_number_of_pages: '',
174            site_newspaper_archive_start_year: 0,
175            article_originates_from_this_site: '',
176            article_originates_from_site: '',
177            article_originates_from_url: ''
178        },
179        user: {
180            id: '',
181            first_name: '',
182            advertising_experience: 'Ad-Full',
183            is_privacy_plus: 'no',
184            is_alist: 'no',
185            level: data_layer_helper.getCookie('nq_ul'),
186            seen_cmp: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true' || data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
187            given_consent: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true') ? 'yes' : 'no',
188            consent_string: data_layer_helper.getConsentString(),
189            type: 'anonymous',
190            parsely_type: 'Anonymous',
191            chartbeat_type: 'anon',
192            type_as_int: '1',
193            is_logged_in: 'no',
194            is_admin: 'no',
195            is_internal_admin: '',
196            has_full_admin_link_permissions: '',
197            has_registered: (data_layer_helper.getCookie('nqr') !== null) ? 'yes' : 'no',
198            comments_verified: '',
199            comments_verified_date: '',
200            user_email_is_verified: '',
201            user_email_is_verified_date: '',
202            mobile_number_is_verified: '',
203            mobile_number_is_verified_date: '',
204            user_needs_email_verification: '',
205            user_needs_mobile_verification: '',
206            user_too_many_requests: '',
207            age_decade:  '0' ,
208            gender:  'u' ,
209            is_known: data_layer_helper.getCookie('__siren') ? 'yes' : 'no',
210            hash: '',
211            lr_hash_1: '',
212            lr_hash_2: '',
213            lr_hash_3: '',
214            gender:  'u' ,
215            user_decade:  '0' ,
216            subscription_plan: '',
217            subscription_tier: 'null',
218            subscription_plan_and_frequency: ' - ',
219            commented: (data_layer_helper.isArticle() && qs.get('action') === 'success') ? 'yes' : 'no',
220            time_since_last_visit: 'not implemented (maybe drop)',
221            device: data_layer_helper.getDevice(),
222            using_ad_blocker_sourcepoint: data_layer_helper.getSourcepointAdbockStatus(),
223            admin_user_name: '',
224            is_admin_internal: '',
225            is_admin_external: '',
226            card_expired: '',
227            card_will_expire: '',
228            expires_urgency: '',
229            abandoned_cart: 'no',
230            subscription_expired: 'no',
231            is_archant_site: 'no',
232            signed_up_primary_news_newsletter: 'no',
233            signed_up_primary_sport_newsletter: 'no',
234            played_free_puzzles_last_7days: '',
235            played_paid_puzzles_last_7days: '',
236            commenter_badge: '',
237            upper_role: '',
238        },
239        analytics: {
240            hierachy: 'newsquest,South West London,www.yourlocalguardian.co.uk,' + data_layer_helper.getPathFragment(3).replace(/\//,','),
241            link_filters: 'javascript:,yourlocalguardian.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,',
242            tracking_block: data_layer_helper.getTrackingFromCookie('tracking_block', ''),
243            tracking_block_index: data_layer_helper.getTrackingFromCookie('tracking_block_index', ''),
244            previous_page_name: data_layer_helper.getCookie('nq_prev_page'),
245            advert_id: '',
246            position_in_list: data_layer_helper.getTrackingFromCookie('o-prop30', ''),
247            featured_content: data_layer_helper.getTrackingFromCookie('o-ref', qs.get('ref')),
248            account: data_layer_helper.getAccount()
249        },
250        chartbeat: {
251            enabled: "no",
252            id: "",
253            domain: "",
254            sections: ''
255        },
256        parsely: {
257            enabled: "yes",
258            site_id: "yourlocalguardian.co.uk",
259            type: 'Anonymous'
260        },
261        piano: {
262            tags: data_layer_helper.getPianoTags({
263                      piano_domain: 'yourlocalguardian',
264                      piano_master: '',
265                      breaking_news: false,
266                      editorial_opinion: false,
267                      free_subscriber: false,
268                      free_subscriber: false,
269                      has_video: false,
270                      is_article: false,
271                      article_content_level : '',
272                      article_content_level_open_access: false,
273                      picture_gallery_id: false,
274                      user_is_newsquest: false,
275                      user_is_entra_authenticated: false,
276                      user_logged_in: false,
277                      is_live_article: false,
278                      why_free_subscriber: '',
279                      extra_tags: extraTags,
280                      is_covid_headline: false,
281                      is_covid_body: false,
282                      is_alist: false,
283                      audio_provider_bytecast: false
284                  }
285            ),
286            custom_variables: {
287                article_length: '',
288                application_group: 'Forest',
289                content_is_editorial_opinion: 'no',
290                base_url: 'https://www.yourlocalguardian.co.uk',
291                full_url: document.location.href,
292                from_discover: (document.referrer === "android-app://com.google.android.googlequicksearchbox/") ? 'yes' : 'no',
293                mds_font: 'sans-serif',
294                mds_colour_palette: 'palette-7',
295                site_name: 'Your Local Guardian',
296                site_name_possessive: 'Your Local Guardian\'s',
297                site_name_with_prefix_capitalised: 'The Your Local Guardian',
298                site_name_with_prefix_lower: 'the Your Local Guardian',
299                site_name_with_prefix_capitalised_possessive: 'The Your Local Guardian\'s',
300                site_name_with_prefix_lower_possessive: 'the Your Local Guardian\'s',
301                location_primary: 'Sutton',
302                location_primary_possessive: 'Sutton\'s',
303                location_county: 'Surrey',
304                location_county_possessive: 'Surrey\'s',
305                site_has_primary_sports_team: 'no',
306                primary_sports_team: '',
307                primary_sports_team_nickname: '',
308                primary_sports_team_sport: '',
309                primary_sports_team_possessive: '',
310                primary_sports_team_nickname_possessive: '',
311                site_id: '35',
312                content_level: '',
313                content_author: '',
314                content_id: '',
315                content_is_article: 'no',
316                content_primary_topic: '',
317                user_seen_consent_modal: ($.cookie('_sp_enable_dfp_personalized_ads') === 'true' || $.cookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
318                site_section: data_layer_helper.getPathFragment(0, true),
319                article_published_yyyy: '',
320                user_played_free_puzzles_last_7days: '',
321                user_played_paid_puzzles_last_7days: '',
322                anon_user_played_free_puzzles_last_7days: data_layer_helper.untrackedPuzzleCheck(),
323                home_delivery_phone_number: '0800 953 0227',
324                content_is_restricted: data_layer_helper.getRestrictedContent('', '', '', ''),
325                day_of_week: data_layer_helper.getDayOfWeek(),
326                user_card_expired: '',
327                user_card_will_expire: '',
328                user_expires_urgency: '',
329                user_used_app_last_24hours: '',
330                user_used_app_last_7days: '',
331                user_used_app_last_14days: '',
332                user_subscription_tier: 'null',
333                user_is_newsquest: 'no',
334                primary_news_newsletter_id: '740',
335                primary_news_newsletter_name: 'the Morning Briefing',
336                primary_news_newsletter_description: 'The latest stories, in your inbox every morning.',
337                primary_sport_newsletter_id: '741',
338                primary_sport_newsletter_name: 'the Sports AM',
339                primary_sport_newsletter_description: 'Keep up to date with the latest sport headlines.',
340                user_signed_up_primary_news_newsletter: 'no',
341                user_signed_up_primary_sport_newsletter: 'no',
342                newsletter_auto_promote: '',
343                newsletter_auto_promote_name: '',
344                newsletter_auto_promote_description: '',
345                newsletter_auto_promote_ID: '',
346                site_has_app: 'no',
347                site_app_store_url_ios: '',
348                site_app_store_url_google_play: '',
349                subsets_experiment_id: '',
350                site_section1: data_layer_helper.getPathFragment(1, true), // GBL required
351                site_newspaper_archive_enabled: 'no',
352                site_newspaper_archive_number_of_pages: '',
353                site_newspaper_archive_start_year: 0,
354                article_originates_from_this_site: '',
355                article_originates_from_site: '',
356                article_originates_from_url: ''
357            },
358            native_variables: {
359                setContentCreated: '',
360                setContentIsNative:  'no',
361                setContentAuthor: '',
362                setContentSection: data_layer_helper.getPathFragment(0, true)
363            }
364        },
365        article: {
366            cscore:'',
367            showing_preview: '',
368            is_article: data_layer_helper.isArticle() ? 'yes' : 'no',
369            id : '',
370            length_type: '',
371            character_count: '',
372            author: ''.toLowerCase(),
373            e_var15: ''.toLowerCase(),
374            context: '',
375            content_level: '',
376            content_level_open_access: '',
377            content_level_combined: ',,no',
378            content_is_restricted: data_layer_helper.getRestrictedContent('', '', '', ''),
379            increment: (data_layer_helper.isArticle()) ? '+1' : '',
380            sponsor: '',
381            contributions: '0',
382            is_sponsored: 'no',
383            headline: '',
384            age: data_layer_helper.getArticleAge(),
385            upload_date: '',
386            publish_date: '',
387            update_date: '',
388            rating: '',
389            source: data_layer_helper.getSource(''),
390            subjects: (typeof articleSubjects === 'object') ? articleSubjects.join(',') : '',
391            context: '',
392            grapeshot_context: (typeof gs_channels !== 'undefined') ? gs_channels : '',
393            allow_comments: 'no',
394            total_comments: '',
395            originating_site_id: '',
396            parent_article_site_id: '',
397            parent_article_id: '',
398            originating_article_id: '',
399            parent_originating_site_id: '',
400            is_original_to_site: '',
401            is_cloned: '',
402            parent_article_url: '',
403            use_skimlinks: 'no',
404            content_primary_topic: '',
405            taxonomy: {
406                article_types: '',
407                topics: '',
408                sports: '',
409                sports_teams: '',
410                locations: '',
411                shared_content: '',
412                free_tags: '',
413                farming: ''
414            },
415            audio: {
416                has_audio: 'no',
417                provider: ''
418            },
419            article_comments_use_viafoura: ''
420        },
421        homes: {
422            search_bedrooms_minimum: '',
423            search_location: 'user',
424            search_price_minimum: '',
425            search_price_maximum: '',
426            list: '',
427            id: ''
428        },
429        video: {
430            exists: 'no',
431            auto_play_enabled: data_layer_helper.getAutoPlay('no')
432        },
433        contributions: {
434            allow_text: '',
435            allow_image: '',
436            user_contributions_number: '0',
437            has_user_contributions: 'no'
438        },
439        search: {
440            keywords: qs.get('search'),
441            results: ''
442        },
443        announcements: {
444            category: ''
445        },
446        config: {
447            google_analytics_id: 'UA-54396341-26',
448            site_template_set: 'standard',
449            path: '/user/',
450            top_level_section: 'user',
451            polar_property_id: 'NA-YOUR-11238089',
452            gallery_show_advert_after: '5',
453            disable_outbrain_with_ad_light: 'no',
454            disable_outbrain: 'no',
455        },
456        dfp: {
457            is_landing: 'no',
458            module_path: 'user',
459            weather_band: '11-15',
460            weather_summary: 'sun'.toLowerCase(),
461            id: data_layer_helper.getGoogleId(),
462            display_screen: data_layer_helper.isMobileScreen() ? 'mobile' : 'desktop',
463            can_show_billboard: (window.screen.width > 960) ? 'y' : 'n'
464        },
465        dates: {
466            date: (new Date()).toLocaleDateString('en-GB'),
467            hour: (new Date()).getHours(),
468            day: data_layer_helper.getDayOfWeek(),
469            weekend: ((new Date()).getDay() === 6 || (new Date()).getDay() === 0) ? 'Weekend' : 'Weekday'
470        },
471        memorials: {
472            contact_phone_number: '',
473            contact_email_address: '',
474            publications: JSON.parse('' || '[]'),
475            user: {
476                id: '',
477                email_verified: 'no',
478                type: ''
479            },
480            funeral_director: {
481                id: '',
482                person_urn: ''
483            }
484        }
485    }
486
487    data_layer_helper.storeCurrentPageName(data_layer.page.name);
488
489    window.dispatchEvent(new Event('data-layer-loaded'))
490
491      data_layer.piano.custom_variables.user_used_app_last_24hours = 'no';
492      data_layer.piano.custom_variables.user_used_app_last_7days = 'no';
493      data_layer.piano.custom_variables.user_used_app_last_14days = 'no';
494  if (data_layer.article.is_article !== 'yes') {
495      data_layer.piano.custom_variables.site_module = 'Newsquest\Modules\UserIdentityModule';
496      data_layer.piano.custom_variables.puzzles_landing_page = 'no';
497      data_layer.piano.custom_variables.puzzles_display_page = 'no';
498  }
499</script>
499
500 
501<script
502  src="https://assets.adobedtm.com/499440d21de9/54b957ecfb7e/launch-98090dfa3d73.min.js"
503  async
504></script>
504
505 
506
507<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>
507
508
509<script type = "text/javascript">
510( function () {
511
512    window._sp_ = {
513        config: {
514            baseEndpoint: 'https://a02342.yourlocalguardian.co.uk',
515            accountId: 52,
516            targetingParams:{
517                subscribed: false,
518                privacy: false
519            },
520            gdpr: { },
521            events: {
522                onMessageReady: function (message_type) {
523                    trackSPEvents('event76');
524                },
525                onMessageChoiceSelect: function (message_type, choice_id, choice_type_id) {
526                    console.log('message_type: ', message_type);
527                    console.log('choice_id: ', choice_id);
528                    console.log('choice_type_id: ', choice_type_id);
529                    if ('yes' === 'yes') {
530                        if (choice_type_id === 12) {
531                            trackSPEvents('event83'); //Consent Banner Reject All
532                            trackSPEvents('event82'); //Journalism Message Shown
533                        }
534                        if (choice_type_id === 11) {
535                            trackSPEvents('event78');
536                        }
537                        if (choice_type_id === 9) {
538                            trackSPEvents('event77');
539                        }
540                    } else {
541                        // these are the second argument in non-gate
542                        if (choice_type_id === 12) {
543                            trackSPEvents('event77');
544                        }
545
546                        if (choice_type_id === 11) {
547                            trackSPEvents('event78');
548                        }
549
550                        if (choice_type_id === 13) {
551		                    trackSPEvents('event83');
552                        }
553                    }
554                },
555                onPrivacyManagerActionStatus: function(message_type, status, actionType) {
556                    console.log('message_type: ' + message_type);
557                    console.log('status: ' + status);
558                    console.log('actionType: ' + actionType);
559                    if ('yes' === 'yes') {
560                        if (actionType === 11) {
561                            trackSPEvents('event79'); //Privacy Manager Accept
562                        }
563                        if (actionType === 9) {
564                            trackSPEvents('event68'); //Privacy Manager Redirect
565                        }
566                        if (actionType === 1) {
567                            trackSPEvents('event75'); //Forced tcf String Change
568                        }
569                    } else {
570                    // these are the second argument in non-gate
571                        if (actionType === 13) {
572                            trackSPEvents('event81'); //Privacy Manager Reject
573                        }
574                        if (actionType === 11) {
575                            trackSPEvents('event79'); //Privacy Manager Accept
576                        }
577                        if (actionType === 1) {
578                            trackSPEvents('event80'); //Privacy Manager Save & Exit
579                        }
580                    }
581                },
582                onPMCancel: function (message_type) {
583                    console.log('onPMCancel', message_type);
584                    trackSPEvents('event84'); //Privacy Manager Back
585                },
586            }
587        }
588    }
589
590    if (typeof window.__tcfapi === 'function') {
591        window.__tcfapi('addEventListener', 2, function (tcData, success) {
592            console.log('SP: Event Listen:', tcData, success);
593            if (success && tcData.eventStatus === 'useractioncomplete') {
594                setTcfCookie(tcData.purpose.consents, tcData.purpose.legitimateInterests);
595
596                var csnt = 'none';
597                if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
598                    csnt = 'yes';
599                } else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
600                    csnt = 'no';
601                }
602                googletag.cmd.push(function() {
603                    // console.log('DFP: Cookie check - setting dfpcsnt to ', csnt);
604                    googletag.pubads().setTargeting('dfpcsnt', csnt);
605                });
606                // ready to start DFP
607                // console.log('PIANO: setting unrestricted via useractioncomplete');
608                // runPiano('unrestricted');
609                startAdvertising(tcData.listenerId);
610
611                var e = new Event('launch:cmp:choice-made');
612                window.dispatchEvent(e);
613            } else if (success && tcData.eventStatus === 'tcloaded') {
614                // tcloaded means a valid TCF v2.0 string is available
615                // console.log('PIANO: setting unrestricted via tcloaded');
616                // runPiano('unrestricted');
617                if (tcData.gdprApplies === false) {
618                    $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.yourlocalguardian.co.uk', path: '/', expires: 100});
619                }
620                startAdvertising(tcData.listenerId);
621
622            } else if (success && tcData.eventStatus === 'useractionnotcomplete') {
623                // do nothing - this means the user has not made a choice yet
624            } else if (success && tcData.eventStatus === 'cmpuishown') {
625                // do nothing - this means the CMP UI has been shown
626            } else if (!success) {
627                // $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.yourlocalguardian.co.uk', path: '/', expires: 100});
628                // startAdvertising();
629            } else {
630                // console.log('PIANO: setting restricted');
631                // runPiano('restricted');
632            }
633        });
634    }
635
636    
637
638    document.addEventListener('click', function (e) {
639        const option = e.target.closest('.gdpr-option-v2');
640
641        if (!option) return;
642
643        e.preventDefault();
644        sendEvent76 = false;
645
646        const id = option.dataset.v2Id;
647        const isGate = option.dataset.isGate;
648
649        if (isGate === 'yes') {
650            trackSPEvents('event87');
651            _sp_.gdpr.loadPrivacyManagerModal(id);
652        } else {
653            trackSPEvents('event77');
654            _sp_.gdpr.loadPrivacyManagerModal(id);
655        }
656    });
657
658    function getTcfData() {
659        if (typeof window.__tcfapi !== 'function') {
660            console.warn('TCF API unavailable');
661            return;
662        }
663        window.__tcfapi('addEventListener', 2, function(data, success) {
664            if (!data.purpose || !data.purpose.consents || !data.purpose.legitimateInterests) {
665                // console.log('DFP: No TCF data found, not setting cookies');
666                return;
667            }
668            setTcfCookie(data.purpose.consents, data.purpose.legitimateInterests);
669        }, [755]);
670    }
671    getTcfData();
672
673    function setTcfCookie(data, legitimateInterests) {
674        var consents = [];
675        $.each(data, function(id, consent)  {
676            var c = (consent === true) ? 'yes' : 'no';
677            consents.push(c)
678        });
679        // console.log('DFP: consents length: ', consents.length);
680        if (consents.length !== 10) {
681            // consents = consents.fill('no', consents.length, 10);
682            for (var i = consents.length; i < 10; i++) {
683                consents[i] = 'no';
684            }
685        }
686        // console.log('DFP: Found consents to store in cookie:', consents);
687        $.cookie('prev-tcf-v2', consents.join(','), {domain: '.yourlocalguardian.co.uk', path: '/', expires: 100});
688
689        var consentEvent4 = 'none';
690        if (typeof data[4] !== 'undefined') {
691            consentEvent4 = data[4] ? 'true' : 'false';
692        }
693        $.cookie('_sp_enable_dfp_personalized_ads', consentEvent4, {domain: '.yourlocalguardian.co.uk', path: '/', expires: 100});
694
695        var legitInterest = 'none';
696        if (legitimateInterests && typeof legitimateInterests[2] !== 'undefined') {
697            legitInterest = legitimateInterests[2] ? 'true' : 'false';
698        }
699
700        $.cookie('_sp_legitimate_interests', legitInterest , {domain: '.yourlocalguardian.co.uk', path: '/', expires: 100});
701    }
702
703    var sendEvent76 = true;
704
705    function trackSPEvents(events) {
706        if (events === 'event76' && !sendEvent76) {
707            return;
708        } else if (events === 'event76') {
709            sendEvent76 = false;
710        }
711
712        if (typeof window.s !== 'object') {
713            // console.log('DFP: No window.s object found, trying again in 1 second');
714            window.setTimeout(function () { trackSPEvents(events)} , 1000);
715            return;
716        }
717
718        // console.log("ADB: Tracking %s", events);
719        // Re-create the Omniture object so the data can be tracked.
720        var s = window.s;
721
722        if (events.indexOf('event70') !== -1) {
723            // console.log('DFP: Events passed, added evars');
724            s.eVar35 = 'enabled';
725            s.prop35 = 'enabled';
726        }
727
728        s.events = events;
729        s.linkTrackEvents = events;
730        s.linkTrackVars = "eVar2,eVar3,eVar4,eVar5,eVar6,evar7,evar8,evar9,eVar16,eVar19,eVar26,eVar35,eVar43,eVar67,prop35";
731        s.suppressPageView = true;
732        s.tl(true,'o','Ad Block');
733    }
734
735    function startAdvertising(id)
736    {
737        if (typeof window.doNotAdvertise !== 'undefined' && window.doNotAdvertise === true) {
738            return;
739        }
740
741        // console.log("DFP: Is the page fully loaded?", window.googleReady);
742        if (window.googleReady !== true) {
743            window.setTimeout(function () {
744                // console.log('DFP: Google not fully loaded yet, pausing quarter of a second before trying again');
745                startAdvertising(id);
746            }, 250);
747            return;
748        }
749
750        // Ensure that we never run this code twice
751        if (window.advertisingStart === true) {
752            return;
753        }
754        // console.log('DFP: Running advertisement');
755        window.advertisingStart = true;
756
757        var googletag = window.googletag;
758        // init google objects and array
759        (function() {
760            var gads = document.createElement('script');
761            gads.async = true;
762            gads.type = 'text/javascript';
763            gads.src = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';
764            var node = document.getElementsByTagName('script')[0];
765            node.parentNode.insertBefore(gads, node);
766        })();
767
768        // launch the exco slideshow player
769        launchExcoSlideshow();
770
771        // load facebook etc
772        loadSocials();
773
774        // Checking our decision to use headerbidding (shorterned as prebid) is correct
775        // via system logic, and that we have the simplified consent to do so
776        if (usePrebid && $.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
777            var e = new Event('launch:sourcepoint:consentaccepted');
778            window.dispatchEvent(e);
779
780            // AP code initialisation
781            // the script is loaded via launch, once we have detected a consent signal via the datalayer.
782            fetchAp();
783
784            var site = 'desktop';
785            var _site = 'desktop';
786
787            // load IAS scripts and set up vars
788            (function() {
789                var ias = document.createElement('script');
790                ias.async = true;
791                ias.type = 'text/javascript';
792                ias.src = 'https://cdn.adsafeprotected.com/iasPET.1.js';
793                var node = document.getElementsByTagName('script')[0];
794                node.parentNode.insertBefore(ias, node);
795            })();
796
797            // load the prebid script
798            (function() {
799                var pbs = document.createElement('script');
800                pbs.async = true;
801                pbs.type = 'text/javascript';
802                pbs.src = 'https://micro.rubiconproject.com/prebid/dynamic/11022.js?group=newsquest';
803                var node = document.getElementsByTagName('script')[0];
804                node.parentNode.insertBefore(pbs, node);
805            })();
806
807            // tell google to actually get the bids from all relevant vendors when loaded
808            googletag.cmd.push(function () {
809                fetchHeaderBids();
810            });
811        }
812
813        // Outbrain
814        if (
815            (window.data_layer.user.advertising_experience === 'Ad-Free' || window.data_layer.config.disable_outbrain === 'yes') ||
816            (window.data_layer.user.advertising_experience === 'Ad-Light' && window.data_layer.config.disable_outbrain_with_ad_light === 'yes')
817        ) {
818            // console.log("No Outbrain script loading due to page settings");
819        } else {
820            // console.log("Loading Outbrain");
821            var ob = document.createElement('script');
822            ob.async = true;
823            ob.type = 'text/javascript';
824            ob.src = 'https://widgets.outbrain.com/outbrain.js';
825            var node = document.getElementsByTagName('script')[0];
826            node.parentNode.insertBefore(ob, node);
827        }
828
829
830        // remove the listener
831        if (id !== null) {
832            window.__tcfapi('removeEventListener', 2, function (success) { }, id);
833        }
834    }
835
836    /**
837     * Wait until we have advertising consent to show this advertising
838     * based replacement for the single image on our article pages
839     * This logic is based on excoSlidshowPlayerID that only appears on the page
840     * if a user is NOT a subscriber (including privacy plus) and the page has the
841     * correct information to show it (doesn't have a video, not in sport etc)
842     */
843    function launchExcoSlideshow() {
844        const slideShowPlayerId = window.excoSlideshowPlayerId;
845        // if we do not have a player id, we do not need to do anything
846        if (!slideShowPlayerId) {
847            return;
848        }
849
850        // this is exco's supplied code, modified for our use
851        (function (d, s, n) {
852            fjs = d.getElementsByTagName(s)[0];
853            js = d.createElement(s);
854            js.className = n;
855            js.src = '//player.ex.co/player/' + slideShowPlayerId;
856            js.setAttribute('programmatic', 'true');
857	        js.onload = function () {
858                const playerApi = ExCoPlayer.connect(slideShowPlayerId);
859                playerApi.init({});
860
861                playerApi.on('player-load', function(data) {
862                    $('.mar-article-image').remove();
863                    if (window.screen.width > 800) {
864                        $('.article-hero').attr('style', 'order: 1');
865                    }
866                    window.hide_overlay_for_exco = true;
867                });
868            };
869            fjs.parentNode.insertBefore(js, fjs);
870        }(document, 'script', 'exco-player'));
871    }
872
873    function loadSocials()
874    {
875        const socials = [
876            'https://platform.twitter.com/widgets.js',
877            'https://connect.facebook.net/en_US/all.js#xfbml=1',
878            'https://www.tiktok.com/embed.js',
879        ];
880
881        socials.forEach((social) => {
882            var script = document.createElement('script');
883            script.src = social;
884            script.async = true;
885            document.getElementsByTagName('head')[0].appendChild(script);
886        });
887    }
888
889
890})();
891
892</script>
vendor: 1 bytes, line 892
892
893<script src="https://a02342.yourlocalguardian.co.uk/unified/wrapperMessagingWithoutDetection.js"></script>
893
894
895<script>
896window.usePiano = true;
897window.selectedOfferId = null;
898window.selectedTermId = null;
899</script>
vendor: 1 bytes, line 899
899
900<script>
901document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
902var setNptTechAdblockerCookie = function(adblocker) {
903    var d = new Date();
904    d.setTime(d.getTime() + 60 * 60 * 24 * 2 * 1000);
905    document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/";
906}
907var script = document.createElement("script");
908script.setAttribute("async", true);
909script.setAttribute("src", "//www.npttech.com/advertising.js");
910script.setAttribute("onerror", "setNptTechAdblockerCookie(true);");
911document.getElementsByTagName("head")[0].appendChild(script);
912</script>
912
913
914<script>
915// window.pdl = window.pdl || {};
916// window.pdl.requireConsent = 'v2';
917
918// Store entry point unless it's a user or subscribe page
919// to redirect after subscription
920const excludedPaths = ['/user/', '/subscribe/'];
921
922const shouldExclude = excludedPaths.some(path =>
923  window.location.pathname.includes(path)
924);
925
926if (!shouldExclude) {
927  sessionStorage.setItem(
928    'last_piano_page_interacted_with',
929    window.location.pathname
930  );
931}
932
933tp = window.tp || [];
934
935function runPiano(restrictedMode) {
936    // console.log('Running Piano with restricted mode:', restrictedMode);
937    // tp.push(['init', function() {
938    //      console.log('Piano purpose map, before calling setAllPurposes()', tp.consent.getByPurpose());
939    // }]);
940    // if (restrictedMode === 'restricted') {
941    //     // If we're in restricted mode, we need to set some specific parameters
942    //     tp.push(['init', function() {
943    //         tp.consent.setAllPurposes('opt-out')
944    //     }]);
945    // } else {
946    //     tp.push(['init', function() {
947    //         tp.consent.setAllPurposes('opt-in')
948    //     }]);
949    // }
950    // tp.push(['init', function() {
951    //     console.log('Piano purpose map, after calling setAllPurposes()', tp.consent.getByPurpose());
952    // }]);
953    // init Piano ID
954    tp.push(['init', function() {
955        tp.pianoId.init();
956    }]);
957
958    const isGooglebot = window.isRobot.googleBot();
959
960    const isArticle = (data_layer.article.is_article === 'yes');
961
962    const isCl3 = (parseInt(data_layer.article.content_level, 10) === 3);
963
964    if (isGooglebot) {
965        // we don't load Piano from all non-article pages
966        if (!isArticle) {
967            return;
968        }
969
970        // If we are on an article, we do not load piano on CL0, 1, or 2
971        if (!isCl3) {
972            return;
973        }
974    }
975    Object.keys(data_layer.piano.custom_variables).forEach(function (k) {
976        var v = data_layer.piano.custom_variables[k];
977
978        if (v != '') {
979            tp.push(["setCustomVariable", k, v]);
980        }
981    });
982
983    Object.keys(data_layer.piano.native_variables).forEach(function (k) {
984        var v = data_layer.piano.native_variables[k];
985        if (v != '') {
986            tp.push([k, v]);
987        }
988    });
989
990    tp.push(['setTags', data_layer.piano.tags]);
991
992   (function(src){
993        var a=document.createElement("script");
994        a.type = "text/javascript";
995        a.async=true;
996        a.src=src;
997        var b=document.getElementsByTagName("script")[0];
998        b.parentNode.insertBefore(a, b)
999    })("//experience.tinypass.com/xbuilder/experience/load?aid=Ggc1k7bpbB");
1000}
1001
1002// Init Piano
1003const debug = document.cookie
1004    .split('; ')
1005    .find(row => row.startsWith('debug='))
1006    ?.split('=')[1];
1007
1008tp.push(["setDebug", debug === '1']);
1009
1010tp.push(["setApplePayMerchantId", 'merchant.nq.subssites.piano']);
1011
1012tp.push(["setUsePianoIdUserProvider", true ]);
1013
1014tp.push(["addHandler", "loginRequired", function(params) {
1015    // If they're already signed in, we don't need to do anything special.
1016    if (tp.user.isUserValid()) {
1017        return;
1018    }
1019    if (typeof window._overridePianoDefault !== 'undefined' && window._overridePianoDefault !== true) {
1020        console.log("TPL Called")
1021        tp.pianoId.show({
1022            screen: 'login',
1023            displayMode: 'modal',
1024            loggedIn: (data) => {
1025                pianoId.loggedIn();
1026            },
1027            loggedOut: () => {
1028                console.log('TP-TJ: user logged out');
1029            },
1030            registrationSuccess: () => {
1031                pianoId.registered();
1032            },
1033            width: '500px',
1034            height: '460px',
1035        });
1036    }
1037}]);
1038
1039tp.push(["addHandler", "checkoutSelectTerm", function (termDetails) {
1040    if (typeof termDetails.termId !== 'undefined') {
1041        window.selectedTermId = termDetails.termId;
1042    }
1043}]);
1044
1045tp.push(["addHandler", "showTemplate", function (templateParams) {
1046    showPianoTarget(templateParams);
1047}]);
1048
1049tp.push(["addHandler", "showOffer", function (offerParams) {
1050    window.shownOffer = true;
1051
1052    // Store some data we might need later.
1053    if (typeof offerParams.offerId !== 'undefined') {
1054        window.selectedOfferId = offerParams.offerId;
1055    }
1056
1057    showPianoTarget(offerParams);
1058}]);
1059
1060function handleFullWidthBanner(selector) {
1061    if (selector === '#po-overlay-articlegate-full-width-full-article-scroll-below') {
1062        document.querySelector(selector).classList.add(selector.replace('#', ''));
1063    }
1064    document.querySelector(selector).style.minHeight = "254px";
1065    document.querySelector('#subscription-content').style.display = 'none';
1066    document.querySelectorAll('.send-us-your-news-cta').forEach((el) => { el.style.display = 'none'; });
1067    document.querySelectorAll('.mega-news-block').forEach((el) => { el.style.display = 'none'; });
1068
1069    const block = document.querySelector(selector);
1070    const containerBlock = block.parentElement;
1071    const containerBlockHeight = 254; // to prevent abrupt jumping
1072
1073    if (!block) { return; }
1074
1075    block.style.display = 'block';
1076
1077    const blockRect = block.getBoundingClientRect();
1078    const startTop = blockRect.top + window.scrollY;
1079    const blockHeight = blockRect.height;
1080    const screenWidth = window.screen.width;
1081
1082    let lastState = ''; // 'top', 'bottom', 'default'
1083
1084    function getScrollbarWidth() {
1085        return window.innerWidth - document.documentElement.clientWidth;
1086    }
1087
1088    function updatePosition() {
1089        const scrollY = window.scrollY;
1090        const viewportHeight = window.innerHeight;
1091        const bottomTrigger = startTop + blockHeight - viewportHeight;
1092
1093        let newState = 'default';
1094
1095        if (scrollY > startTop && screenWidth >= 768) {
1096            newState = 'top';
1097        } else if (scrollY < bottomTrigger && screenWidth >= 768) {
1098            newState = 'bottom';
1099        } else if (scrollY < bottomTrigger + 90 && screenWidth < 768) {
1100            newState = 'bottom-mobile';
1101        }
1102
1103        const scrollbarWidth = getScrollbarWidth();
1104
1105        if (newState !== lastState) {
1106            switch (newState) {
1107                case 'top':
1108                    block.style.position = 'fixed';
1109                    block.style.top = '0';
1110                    block.style.bottom = 'auto';
1111                    block.style.marginLeft = '0';
1112                    block.style.marginRight = '0';
1113                    containerBlock.style.minHeight = `${containerBlockHeight}px`;
1114                    break;
1115
1116                case 'bottom':
1117                    block.style.position = 'fixed';
1118                    block.style.bottom = '0';
1119                    block.style.top = 'auto';
1120                    block.style.marginLeft = '0';
1121                    block.style.marginRight = '0';
1122                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1123                    containerBlock.style.minHeight = 'unset';
1124                    break;
1125
1126                case 'bottom-mobile':
1127                    block.style.position = 'fixed';
1128                    block.style.bottom = '90px';
1129                    block.style.top = 'auto';
1130                    block.style.marginLeft = 'calc(-100vw + 100%)';
1131                    block.style.marginRight = 'calc(-100vw + 100%)';
1132                    containerBlock.style.minHeight = 'unset';
1133                    break;
1134
1135                default:
1136                    block.style.position = '';
1137                    block.style.top = '';
1138                    block.style.bottom = '';
1139                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1140                    block.style.marginLeft = '-100vw';
1141                    block.style.marginRight = '-100vw';
1142                    containerBlock.style.minHeight = 'unset';
1143                    break;
1144            }
1145
1146            lastState = newState;
1147        }
1148
1149        requestAnimationFrame(updatePosition);
1150    }
1151
1152    updatePosition();
1153    window.addEventListener('resize', updatePosition);
1154}
1155
1156function trackLocation(forceValidLocation = false) {
1157    var currentLocation = window.location.pathname;
1158
1159    let valid = false;
1160
1161    if (currentLocation.indexOf('puzzles') > -1) {
1162        valid = true;
1163    }
1164
1165    if (currentLocation.indexOf('pagesuite') > -1) {
1166        valid = true;
1167    }
1168
1169    var articleMatch = currentLocation.match(/(\d+)\.[^\/]+\/(r\/)?$/);
1170    if (articleMatch != null) {
1171        valid = true;
1172    }
1173
1174    if (forceValidLocation) {
1175        valid = true;
1176    }
1177
1178    if (currentLocation.indexOf('subscribe') > -1) {
1179        valid = false;
1180    }
1181
1182    if (!valid) {
1183        return;
1184    }
1185
1186    $.cookie('last-piano-page-interacted-with', currentLocation, {path: '/', domain: window.data_layer.site.cookie_domain});
1187}
1188
1189function trackPianoWithNewRelic(templateName) {
1190    if (this.newrelic && typeof this.newrelic === 'object') {
1191        newrelic.setCustomAttribute('user_was_shown_piano_experience', templateName);
1192    }
1193}
1194
1195function handleOfferShow(params) {
1196    console.log('Piano params', params);
1197
1198    // If on the subscription page and the URL has a term ID and offer ID, show the relevant offer.
1199    if (typeof location.pathname !== 'undefined' && location.pathname === '/subscribe/') {
1200        var offerId = location.search.match(/offer_id=([A-Z0-9]+)/);
1201        if (offerId !== null && offerId.length > 1) {
1202            offerId = offerId[1];
1203        }
1204        var termId = location.search.match(/term_id=([A-Z0-9]+)/);
1205        if (termId !== null && termId.length > 1) {
1206            termId = termId[1];
1207        }
1208        if (offerId !== null && termId !== null) {
1209            tp.offer.show({'termId': termId, 'offerId': offerId});
1210        }
1211    }
1212
1213    // we are only tracking
1214    var templateId = params.templateId;
1215    var variantId = params.templateVariantId;
1216    if (params.containerSelector !== '#po-inline-articlegate-fullarticle' &&
1217        params.containerSelector !== '#po-overlay-articlegate-full-width-full-article-scroll-below' &&
1218        params.containerSelector !== '#po-inline-articlegate-partialarticle' &&
1219        params.containerSelector !== '#po-overlay-articlegate-full-width-scroll-below'
1220    ) {
1221        $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1222            trackPianoSimplified(params, response.name);
1223        });
1224        return;
1225    }
1226
1227
1228    $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1229        trackPiano(params, response.name);
1230    });
1231}
1232
1233function trackPiano(params, templateName) {
1234    trackPianoWithNewRelic(templateName);
1235
1236    if (typeof params.activeMeters === 'string') {
1237        activeMeters = JSON.parse(params.activeMeters);
1238    } else {
1239        activeMeters = params.activeMeters;
1240    }
1241
1242    var s = window.s;
1243    if (!s || !s.pageName) {
1244        // console.log("ADB: Setting s from backup");
1245        s = window.backupAdobe;
1246        window.s = s;
1247    }
1248
1249    // this would call when CL3 is a hard gate
1250    if (!activeMeters && data_layer.article.content_level === '3') {
1251        s.eVar59 = templateName;
1252        s.eVar58 = data_layer.article.content_level;
1253        s.events = "event91";
1254        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";
1255        s.linkTrackEvents="event91";
1256        s.tl(document, 'o', 'Metered Access Notice');
1257        s.events = '';
1258        return;
1259    }
1260
1261    if (!activeMeters) {
1262        return;
1263    }
1264
1265    var meterData = activeMeters[0];
1266
1267    var meterName = meterData.meterName.toLowerCase();
1268
1269    // track event 5
1270    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') {
1271        s.eVar58 = data_layer.article.content_level;
1272        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1273        s.eVar59 = templateName;
1274        s.events = "event5";
1275        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1276        s.linkTrackEvents="event5";
1277    } else {
1278        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1279        s.eVar59 = templateName;
1280        s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1281    }
1282    s.tl(document, 'o', 'Metered Access Notice');
1283    s.events = '';
1284
1285}
1286
1287/**
1288 * Just track the template name in 78 for non-article-interrupts/gates
1289 */
1290function trackPianoSimplified(params, templateName)
1291{
1292    trackPianoWithNewRelic(templateName);
1293
1294    var s = window.s;
1295    if (!s || !s.pageName) {
1296        // console.log("ADB: Setting s from backup");
1297        s = window.backupAdobe;
1298        window.s = s;
1299    }
1300    s.eVar78 = templateName;
1301    s.events = 'event90';
1302    s.linkTrackEvents="event90";
1303    s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3,eVar78, events";
1304    s.tl(document, 'o', 'Piano Template');
1305}
1306
1307function raiseLaunchEvent(name) {
1308    var e = new Event('launch:piano:' + name);
1309    window.dispatchEvent(e);
1310}
1311
1312function removePianoToast() {
1313    setTimeout(() => {
1314        document.getElementById('po-overlay-toast-left').remove()
1315    }, 30000)
1316}
1317
1318function showPianoTarget(params) {
1319    handleOfferShow(params);
1320    trackLocation();
1321
1322    if ($(params.containerSelector).length > 0) {
1323        const displayType = $(params.containerSelector).attr('data-display');
1324
1325        if (displayType) {
1326            $(params.containerSelector).addClass(`shown-${displayType}`);
1327        } else {
1328            $(params.containerSelector).addClass('shown').show();
1329        }
1330
1331        if ($(params.containerSelector).hasClass('piano--block-level') || $(params.containerSelector).hasClass('piano--inside-block')) {
1332            $(params.containerSelector).show();
1333        }
1334
1335        if (
1336            params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below' ||
1337            params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below'
1338        ) {
1339            handleFullWidthBanner(params.containerSelector);
1340        }
1341
1342        if ($(params.containerSelector) === '#po-inline-subscribe-page') {
1343            $(params.containerSelector).show();
1344        }
1345
1346        if (['#po-inline-blocksystem-target-e'].includes(params.containerSelector)) {
1347            $('#po-inline-blocksystem-target-e').show();
1348            $('.piano-promo-container').show();
1349        }
1350
1351        if (params.containerSelector === '#po-overlay-toast-left') {
1352            removePianoToast()
1353        }
1354
1355        if (params.containerSelector === '#po-overlay-toast-main-navigation') {
1356            removePianoToast()
1357        }
1358
1359        if (params.containerSelector === '#po-inline-articlewall-partialarticle-closable') {
1360            $('#po-inline-articlegate-partialarticle').css('display', 'none');
1361        }
1362
1363        if (params.containerSelector === '#po-inline-articlewall-fullarticle-closable') {
1364            $('#po-inline-articlegate-fullarticle').css('display', 'none');
1365        }
1366
1367        if (params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below-closable') {
1368            $('#po-overlay-articlegate-full-width-full-article-scroll-below').css('display', 'none');
1369        }
1370    }
1371}
1372
1373tp.push(["addHandler", "checkoutComplete", function(conversion) {
1374    var s = window.s;
1375    s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
1376    s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
1377    s.products = "Subscription : Metered Access;" + conversion.termId + ";1;"+conversion.chargeAmount;
1378    s.linkTrackEvents = "event4,purchase";
1379    s.purchaseID = conversion.termConversionId;
1380    s.pageName = '(www) /subscribe/complete/';
1381    // wipe out errors
1382    s.eVar31 = '';
1383    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";
1384
1385    s.tl(true, 'o', 'Subscription');
1386
1387    $.cookie('resourceConverted', conversion.rid, {path: '/', domain: window.data_layer.site.cookie_domain});
1388    $.cookie('pianoConverted', '1', {path: '/', domain: window.data_layer.site.cookie_domain});
1389    raiseLaunchEvent('checkoutComplete');
1390
1391    // Clean Session Storage
1392    sessionStorage.removeItem('nq_selected_offer_id');
1393    sessionStorage.removeItem('nq_selected_term_id');
1394    sessionStorage.removeItem('nq_adobe_tracking_article_dimensions');
1395    sessionStorage.removeItem('nq_adobe_tracking_visiting_dimensions');
1396
1397    // Show Onboarding modal after subscription
1398    const lastPage = sessionStorage.getItem('last_piano_page_interacted_with');
1399    const baseUrl = lastPage || window.location.href;
1400
1401    const url = new URL(baseUrl, window.location.origin);
1402    url.searchParams.set('show-onboarding', 'yes');
1403
1404    setTimeout(() => {
1405        window.location.href = url.pathname + url.search;
1406    }, 2000);
1407}]);
1408
1409tp.push(["addHandler", "checkoutPaymentError", function(errorData) {
1410    var s = window.s;
1411    s.pageName = '(www) /subscribe/error/';
1412    s.eVar31 = errorData.message;
1413    s.tl(true, 'o', 'CheckoutPaymentError');
1414
1415    raiseLaunchEvent('checkoutPaymentError');
1416}]);
1417
1418tp.push(["addHandler", "checkoutError", function(errorData) {
1419    var s = window.s;
1420    s.pageName = '(www) /subscribe/error/';
1421    s.eVar31 = errorData.message;
1422    s.tl(true, 'o', 'CheckoutError');
1423    raiseLaunchEvent('checkoutError');
1424}]);
1425
1426tp.push(["addHandler", "startCheckout", function(options) {
1427    sessionStorage.setItem("nq_selected_offer_id", options.offerId);
1428    sessionStorage.setItem("nq_selected_term_id", options.termId);
1429
1430    if (!tp.user.isUserValid()) {
1431        window.location = '/user/create-account/subscribe/';
1432        return;
1433    }
1434
1435    var s = window.s;
1436    s.eVar2 = '(www) /subscribe/payment/';
1437    s.pageName = '(www) /subscribe/payment/';
1438    const storedAdobeArticleDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
1439    const storedAdobeVisitingDimensions = sessionStorage.getItem('nq_adobe_tracking_visiting_dimensions');
1440    if (storedAdobeVisitingDimensions) {
1441        const storedAdobeVisitingDimensionsObj = JSON.parse(storedAdobeVisitingDimensions);
1442        s.eVar10 = storedAdobeVisitingDimensionsObj.eVar10;
1443        s.eVar22 = storedAdobeVisitingDimensionsObj.eVar22;
1444        s.eVar23 = storedAdobeVisitingDimensionsObj.eVar23;
1445        s.eVar24 = storedAdobeVisitingDimensionsObj.eVar24;
1446    }
1447    if (storedAdobeArticleDimensions) {
1448        const storedAdobeArticleDimensionsObj = JSON.parse(storedAdobeArticleDimensions);
1449        s.eVar10 = storedAdobeArticleDimensionsObj.eVar10;
1450        s.eVar15 = storedAdobeArticleDimensionsObj.eVar15;
1451        s.eVar22 = storedAdobeArticleDimensionsObj.eVar22;
1452        s.eVar23 = storedAdobeArticleDimensionsObj.eVar23;
1453        s.eVar24 = storedAdobeArticleDimensionsObj.eVar24;
1454        s.eVar25 = storedAdobeArticleDimensionsObj.eVar25;
1455    }
1456    // wipe out errors
1457    s.eVar31 = '';
1458    s.events = '';
1459    raiseLaunchEvent('startCheckout');
1460    s.linkTrackVars="eVar10,eVar15,eVar22,eVar23,eVar24,eVar25";
1461    s.t();
1462}]);
1463
1464tp.push(["addHandler", "checkoutClose", function(conversion) {
1465    raiseLaunchEvent('checkoutClose');
1466
1467    // Did they abandon the cart? If so: was anything in their cart?
1468    if (typeof conversion.state === 'undefined' || conversion.state !== 'close') {
1469        return;
1470    }
1471    if (window.selectedOfferId === null || window.selectedTermId === null) {
1472        return;
1473    }
1474    $.post('/ws/piano/abandoned-cart/', {offer_id: window.selectedOfferId, term_id: window.selectedTermId});
1475}]);
1476
1477tp.push(["addHandler", "meterExpired", function(meterData){
1478    var msg = "<div><b>meterName:</b> " + meterData.meterName
1479        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1480        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1481        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1482        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1483        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1484    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1485        $('#piano-meter-value').html(msg);
1486        $('#piano-meter-display').show();
1487        $('#piano-meter-display-content').append(msg);
1488    }
1489    var cVal = window.location.href;
1490
1491    trackLocation(true);
1492
1493    console.log("Piano Meter Expired:", meterData.meterName);
1494    if (meterData.meterName === 'CL1 Meter') {
1495        console.log("Piano: Setting meter expired cookie");
1496        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1497    }
1498
1499    raiseLaunchEvent('meterExpired');
1500
1501}]);
1502
1503tp.push(["addHandler", "meterActive", function(meterData){
1504    var msg = "<div><b>meterName:</b> " + meterData.meterName
1505        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1506        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1507        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1508        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1509        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1510    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1511        $('#piano-meter-value').html(msg);
1512        $('#piano-meter-display').show();
1513        $('#piano-meter-display-content').append(msg);
1514    }
1515
1516    console.log("Piano Meter running total:", meterData.meterName,  meterData.totalViews, meterData.maxViews, meterData);
1517    if (meterData.meterName === 'CL1 Meter' && meterData.totalViews >= meterData.maxViews) {
1518        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1519    } else {
1520        $.cookie('isMeterExpired', 'no', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1521    }
1522}]);
1523
1524
1525
1526runPiano('unrestricted');
1527
1528</script>
1528
1529
1530
1531
1532    <link rel="apple-touch-icon" href="/resources/images/17416461/">
1533    <link rel="apple-touch-icon" sizes="72x72" href="/resources/images/17416460/">
1534    <link rel="apple-touch-icon" sizes="114x114" href="/resources/images/17416462/">
1535
1536
1537    <!-- Add iconify -->
1538    
1538<script src="https://code.iconify.design/1/1.0.7/iconify.min.js" integrity="sha384-jQq64HqdQD5xg0PPkpkCOW3x8Nsfx5UT1qWOpoJxLYy6Ef+5i+8xPoAj/I3B+ZMm" crossorigin="anonymous"></script>
1538
1539</head>
1540<body class="sticky-footer" data-cache-buster="vjoPdzgg" data-template="" data-template-colour="Blue" data-namespace="standard">
1541    <!--
1542  ##+ +##  ##: `#####.  #######  ###  ###      ######  `#####.  #######      ###  ,##  +#####
1543  +## ###' ##  #######  ######## ### ###       ######  #######  ########     ###  ,##  ######:
1544  .## #### ## ###   ### ###  ### ######        ##,    ###   ### ###  ###     ###  ,##  ##`
1545   ##,#+##:## ###   ### #######  ######        #####+ ###   ### #######      ###  ,##  +#####
1546   ####`####+ ###   ### ######   #######       #####+ ###   ### ######       ###  ,##     ####
1547   #### .###. '##   ##' ### ###  ### ,##:      ##,    '##   ##' ### ###      ###  ### '##  +##
1548   :###  ###   #######  ### `##+ ###  ###      ##,     #######  ### `##+     `#######  ######+
1549    ##:  ###    #####   ###  ### ###  ,###     ##,      #####   ###  ###       #####    ####+
1550
1551Developers, designers, testers - interested in working for us?
1552Contact this guy....https://uk.linkedin.com/in/hillsimon
1553-->
1554
1555
1556    <div style="height: 0px"><div id="DFP_out_of_page"></div></div>
1557
1558    <div id="paywallWindowOverlay"></div>
1559
1560
1561
1562    <div id="takeover">
1563        <div id="martini-config" class="layout">
1564            <div id="header-content">
1565                <!-- standard - header-2a.html --> <header id="site-header" class="site-header site-header--2a " >
1566    <div class="site-brand container-inner-width">
1567        <div class="site-brand__container">
1568        <a href="/">
1569            <img src="/resources/images/small_site_logo/" alt="Your Local Guardian" class="site-brand__brand-image"/>
1570        </a>
1571        </div>
1572        <div class="simple-header-top-navigation">
1573    <div class="simple-header-top-navigation__links">
1574
1575        <div class="simple-header-top-navigation__links--primary-links header-primary-links">
1576            
1577
1578            
1579            <ul class="list-style-none top-nav-overflow">
1580                <li><a  href="/newsletters/" class="mar-btn mar-btn--promo-primary">Newsletters</a></li> 
1581            </ul>
1582            
1583        </div>
1584
1585        
1586        
1587        <div class="simple-header-top-navigation__links--classifieds">
1588            
1589        </div>
1590        
1591        
1592
1593    </div>
1594    
1595    <div class="simple-header-top-navigation__links--account">
1596        
1597        <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">
1598            <div aria-label="User Account Button" id="headerUserAccountButton">
1599                <svg xmlns="http://www.w3.org/2000/svg " width="14" height="16" viewBox="0 0 10 14" fill="none">
1600<circle cx="5" cy="3.85718" r="3" fill="black"/>
1601<ellipse cx="5" cy="10.2857" rx="5" ry="2.85714" fill="black"/>
1602</svg>
1603            </div>
1604        </a>
1605        
1606    </div>
1607    
1608
1609    <button aria-expanded="false" aria-label="Open the menu" class="simple-header-top-navigation__mega-menu-btn primary-nav__menu--more-btn">
1610        <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>
1611    </button>
1612
1613</div>
1614    </div>
1615    <div id="mega-menu" class="mega-menu" style="display: none;">
1616    <div class="mega-menu__container mega-menu__wrapper">
1617        <div class="mega-menu__cancel-button">
1618            <i aria-expanded="true" aria-hidden="true" aria-label="Close the menu" class="mega-menu__cancel-button--icon">
1619                <span class="iconify" data-icon="eva:close-fill" data-inline="false"></span>
1620                <div>Close</div>
1621            </i>
1622        </div>
1623
1624    
1625
1626    
1627        <div class="mega-menu__features expanded-sub-nav">
1628        <div class="mega-menu__features--links">
1629            
1630                <h4 class="prefix mega-menu__features--prefix link-item">Featured newsletters</h4>
1631            
1632            <a href="/newsletters/740/"  class="col link-item">Morning Briefing</a>
1633            
1634
1635                <a href="/newsletters/"  class="col link-item">Breaking News Alerts</a>
1636            
1637
1638                <a href="/newsletters/2446/"  class="col link-item">Crime and Court</a>
1639            
1640
1641                <a href="/newsletters/263/"  class="col link-item">Crystal Palace News</a>
1642            
1643
1644                <a href="/newsletters/741/"  class="col link-item">Sports AM</a>
1645            
1646
1647                <a href="/newsletters/262/"  class="col link-item">Vibe - Your leisure round-up</a>
1648            
1649            </div>
1650            <hr class="divider none">
1651        </div>
1652    
1653
1654        <div class="mega-menu__search">
1655          <form method="get" action="/search/">
1656              <label class="mega-menu__search--title" for="searchbar-input">Search</label>
1657              <div class="mega-menu__search--bar">
1658                  <input id="searchbar-input" class="searchbar-input" type="text" name="search" placeholder="Search Your Local Guardian">
1659                  <button class="searchbar-btn mira-search-button" type="submit"><span class="iconify" data-icon="fe:search" data-inline="false"></span></button>
1660              </div>
1661          </form>
1662        </div>
1663
1664        <div class="mega-menu__main-list link-list">
1665      <div class="mega-menu__main-list--list-item">
1666                <div>
1667                    <div>
1668                        <a href="/news/">
1669                            <h3><span class="mega-menu__main-list--parent-link">News</span></h3>
1670                        </a>
1671                    </div>
1672        
1673                    <div class="mega-menu__main-list--child-links">
1674                      <div class="child-item">
1675                          <a href="/news/croydonnews/">Croydon</a>
1676                      </div>
1677                  
1678
1679                      <div class="child-item">
1680                          <a href="/news/richmond-twickenham/">Richmond &amp; Twickenham</a>
1681                      </div>
1682                  
1683
1684                      <div class="child-item">
1685                          <a href="/news/suttonnews/">Sutton</a>
1686                      </div>
1687                  
1688
1689                      <div class="child-item">
1690                          <a href="/news/wandsworthnews/">Wandsworth</a>
1691                      </div>
1692                  
1693
1694                      <div class="child-item">
1695                          <a href="/news/wimbledonnews/">Wimbledon</a>
1696                      </div>
1697                  
1698
1699                      <div class="child-item">
1700                          <a href="/news/surrey/">Surrey</a>
1701                      </div>
1702                  
1703
1704                      <div class="child-item">
1705                          <a href="/news/young-reporter/">Young Reporter</a>
1706                      </div>
1707                    </div>
1708        
1709                </div>
1710                <div class="divider"></div>
1711            </div>
1712      
1713
1714            <div class="mega-menu__main-list--list-item">
1715                <div>
1716                    <div>
1717                        <a href="/sport/">
1718                            <h3><span class="mega-menu__main-list--parent-link">Sport</span></h3>
1719                        </a>
1720                    </div>
1721        
1722                    <div class="mega-menu__main-list--child-links">
1723                      <div class="child-item">
1724                          <a href="/sport/crystalpalace/">Crystal Palace</a>
1725                      </div>
1726                  
1727
1728                      <div class="child-item">
1729                          <a href="/sport/afcwimbledon/">AFC Wimbledon</a>
1730                      </div>
1731                  
1732
1733                      <div class="child-item">
1734                          <a href="/sport/suttonunited/">Sutton United</a>
1735                      </div>
1736                  
1737
1738                      <div class="child-item">
1739                          <a href="/sport/nonleague/">Non-League Football</a>
1740                      </div>
1741                  
1742
1743                      <div class="child-item">
1744                          <a href="/sport/rugby/">Rugby Union</a>
1745                      </div>
1746                  
1747
1748                      <div class="child-item">
1749                          <a href="/sport/other_sport/">Other Sport</a>
1750                      </div>
1751                  
1752
1753                      <div class="child-item">
1754                          <a href="/sport/national/">UK Sport News</a>
1755                      </div>
1756                    </div>
1757        
1758                </div>
1759                <div class="divider"></div>
1760            </div>
1761      
1762
1763            <div class="mega-menu__main-list--list-item">
1764                <div>
1765                    <div>
1766                        <a href="/leisure/">
1767                            <h3><span class="mega-menu__main-list--parent-link">What's On</span></h3>
1768                        </a>
1769                    </div>
1770        
1771                    <div class="mega-menu__main-list--child-links">
1772                      <div class="child-item">
1773                          <a href="/leisure/local-events/">Local Events</a>
1774                      </div>
1775                  
1776
1777                      <div class="child-item">
1778                          <a href="/leisure/london-calling/">London Calling</a>
1779                      </div>
1780                  
1781
1782                      <div class="child-item">
1783                          <a href="/leisure/filmandtv/">Film &amp; TV</a>
1784                      </div>
1785                  
1786
1787                      <div class="child-item">
1788                          <a href="/leisure/theatre/">Theatre</a>
1789                      </div>
1790                  
1791
1792                      <div class="child-item">
1793                          <a href="/leisure/music/">Music</a>
1794                      </div>
1795                  
1796
1797                      <div class="child-item">
1798                          <a href="/leisure/food/">Food</a>
1799                      </div>
1800                    </div>
1801        
1802                </div>
1803                <div class="divider"></div>
1804            </div>
1805      
1806
1807            <div class="mega-menu__main-list--list-item">
1808                <div>
1809                    <div>
1810                        <a href="/offers/">
1811                            <h3><span class="mega-menu__main-list--parent-link">Offers</span></h3>
1812                        </a>
1813                    </div>
1814        
1815                </div>
1816                <div class="divider"></div>
1817            </div>
1818      
1819
1820            <div class="mega-menu__main-list--list-item">
1821                <div>
1822                    <div>
1823                        <a href="/education/">
1824                            <h3><span class="mega-menu__main-list--parent-link">Education</span></h3>
1825                        </a>
1826                    </div>
1827        
1828                </div>
1829                <div class="divider"></div>
1830            </div>
1831      
1832
1833            <div class="mega-menu__main-list--list-item">
1834                <div>
1835                    <div>
1836                        <a href="/notices/">
1837                            <h3><span class="mega-menu__main-list--parent-link">Notices</span></h3>
1838                        </a>
1839                    </div>
1840        
1841                    <div class="mega-menu__main-list--child-links">
1842                      <div class="child-item">
1843                          <a href="/notices/bereavement-guide/">Bereavement Guide</a>
1844                      </div>
1845                    </div>
1846        
1847                </div>
1848                <div class="divider"></div>
1849            </div>
1850      
1851
1852            <div class="mega-menu__main-list--list-item">
1853                <div>
1854                    <div>
1855                        <a href="/enewspaper/">
1856                            <h3><span class="mega-menu__main-list--parent-link">E-Newspaper</span></h3>
1857                        </a>
1858                    </div>
1859        
1860                </div>
1861                <div class="divider"></div>
1862            </div>
1863      
1864
1865            <div class="mega-menu__main-list--list-item">
1866                <div>
1867                    <div>
1868                        <a href="/youngreporter/">
1869                            <h3><span class="mega-menu__main-list--parent-link">Young Reporter</span></h3>
1870                        </a>
1871                    </div>
1872        
1873                </div>
1874                <div class="divider"></div>
1875            </div>
1876        </div>
1877    </div>
1878
1879    <div class="mega-menu__sticky">
1880        <ul class="list-style-none mega-menu__sticky--list">
1881            <div class="mega-menu__sticky--primary-links">
1882                
1883                <li><a  href="/newsletters/" class="mar-btn mar-btn--promo-primary">Newsletters</a></li> 
1884            </div>
1885            <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/">
1885Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.yourlocalguardian.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1886        </ul>
1887    </div>
1888</div>
1889
1890</header>
1891            </div>
1892
1893            <div id="redesign-content">
1894                <div id="module-content" class="content">
1895                    <div class="piano--block-level block-bottom-margin" id="po-inline-banner-top-hero-content"></div>
1896
1897
1898                    <!-- standard - PianoIdLogin.html --> <div class="piano-form-container login-page block block-bottom-margin mar-my-5" id="form-container">
1899    <div id="form-container__header">
1900        <h1 class="heading login-heading mar-mb-3">Sign in</h1>
1901        <div class="heading-container">
1902            <p>Not registered?</p>
1903            <a class="mar-btn mar-btn--promo-secondary button-lite" id="create_account"  href="/user/create-account/">
1904                Create an account
1905            </a>
1906        </div>
1907    </div>
1908    <form class="piano-form-container__form" id="login_form" data-redirect-url="/user/account/">
1909        <div class="form-input">
1910            <label for="email">Email</label>
1911            <input id="email" type="email" class="piano-form-elements form-control" name="email">
1912            <span class="form-input__error">Please enter a valid email address</span>
1913        </div>
1914
1915        <div>
1916            <div class="form-input mar-mt-1">
1917                <label for="password">Password</label>
1918                <div class="password-container">
1919                    <input class="piano-form-elements form-control" id="password" name="password" pattern="[a-z0-9]{8,}" type="password">
1920                    <div id="toggle-password" class="toggle-password">
1921                        <img class="iconify eye-open" src="/resources/responsive-static/images/password_toggle.svg" alt="Toggle password o
1921pen" />
1922                        <span display="none" height="25" class="iconify eye-closed" data-icon="formkit:eyeclosed" data-inline="false"></span>
1923                    </div>
1924                    <span class="form-input__error mar-mb-1">Password must be at least 8 characters long</span>
1925                </div>
1926            </div>
1927            <div class="row-flex mar-mt-2">
1928                <div class="form-check">
1929                    <input type="checkbox" name="remember_me" id="remember_me" checked>
1930                    <label class="label-light" for="remember_me">Keep me logged in</label>
1931                </div>
1932                <a href="/user/login/forgotten-password/" class="forgot-password">Forgot password?</a>
1933            </div>
1934        </div>
1935        <button id="login_sign_in" type="submit" class="cta-button mar-btn mar-btn--light mar-mt-2" aria-label="Sign In">Sign in</button>
1936        <div class="socials mar-mt-2">
1937            <div class="social-text mar-mb-2">or sign in with a social account:</div>
1938            <div class="socials__button-container">
1939                <button class="facebook-button social-button" type="button" id="facebook_button" aria-label="Sign in with a Facebook account">
1940                    <img src="/resources/responsive-static/mds/images/icons/icon-facebook.svg" height="50" width="50" alt="Facebook Logo">
1941                </button>
1942                <button class="google-button social-button" type="button" id="google_button" aria-label="Sign in with a Google account">
1943                    <img src="/resources/responsive-static/mds/images/icons/icon-google.svg" height="50" width="50" alt="Google Logo">
1944                </button>
1945            </div>
1946        </div>
1947    </form>
1948</div>
1949                </div>
1950            </div>
1951
1952            <footer class="site-footer" aria-label="site-footer">
1953    <div class="container-inner-width">
1954        <div class="links-grid" aria-label="site-footer-links">
1955            <section class="get-in-touch-section">
1956                <h2>Get in Touch</h2>
1957                <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>
1958            </section>
1959            <section class="follow-us-section">
1960                <h2>Follow Us</h2>
1961<a
1962                        class="footer__social-media--link"
1963                        href="https://www.facebook.com/yourlocalguardian"
1964                        title="Your Local Guardian"
1965                        role="link"
1966                        data-media-type="facebook"
1967                    >
1968                        <i class="footer__social-media--icon iconify"></i>
1969                        Your Local Guardian
1970                    </a>
1971
1972
1973                    <a
1974                        class="footer__social-media--link"
1975                        href="http://www.twitter.com/localguardian"
1976                        title="@localguardian"
1977                        role="link"
1978                        data-media-type="twitter"
1979                    >
1980                        <i class="footer__social-media--icon iconify"></i>
1981                        @localguardian
1982                    </a>
1983            </section>
1984            <section class="useful-links-section">
1985                <h2>Useful Links</h2>
1986                <div class="useful-links">
1987                    <section>
1988                        <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>
1989                    </section>
1990                    <section>
1991                        <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.croydonguardian.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">
1991Manage Consent</a><a href="https://www.newsquest.co.uk/legal/ai-notice/" target="_blank">AI Notice</a>
1992                    </section>
1993                </div>
1994            </section>
1995            <section class="ipso-terms">
1996                <img class="ipso-logo" src="/resources/responsive-static/mds/images/ipso-regulated.png" alt="IPSO Regulated image" />
1997                <p class="ipso-copy">This website and associated newspapers adhere to the Independent Press Standards Organisation's
1998    Editors' Code of Practice. If you have a complaint about the editorial content which relates to
1999    inaccuracy or intrusion, then please <a class="footer__ipso-terms--link" href="/contact">
2000    contact the editor here</a>.
2001    If you are dissatisfied with the response provided you can
2002    <a class="footer__ipso-terms--link" href="https://www.ipso.co.uk/contact-us/" target="_block">contact IPSO here</a></p>
2003            </section>
2004        </div>
2005        <div class="notice" aria-label="site-footer-notice">
2006            <img src="/resources/responsive-static/mds/images/newsquest.png" alt="Newsquest" style="width: 193px"/>
2007            <p><strong>&copy; 2001-2026. The Your Local Guardian</strong> is owned and operated by Newsquest Media Group Ltd, an audited local newspaper network.</p>
2008            <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>
2009            <p>The Echo Building, 18 Albert Road, Bournemouth, England BH1 1BZ. Registered in England & Wales | 01676637</p>
2010        </div>
2011    </div>
2012</footer>
2013
2014
2015            <div id="fb-root"></div>
2016
2017
2018        </div>
2019    </div>
2020
2021
2022
2023    <div class="mar-modal-container mar-modal-container--animate mar-modal-container--animate-out visually-hidden">
2024    <div class="mar-modal-overlay" data-uses-js="close-modal"></div>
2025
2026    <div aria-label="Pop up dialog" class="mar-modal" tabindex="-1" role="dialog">
2027        <div class="mar-modal__header">
2028            <h3 class="mar-modal__title">Modal headline</h3>
2029
2030            <div class="mar-modal__close" data-uses-js="close-modal">
2031<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2032    <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"/>
2033</svg>
2034
2035
2036                <span>Close</span>
2037            </div>
2038        </div>
2039
2040        <div class="mar-modal__body">Automatically injected HTML goes here</div>
2041
2042        <div class="mar-modal__actions">
2043<!-- standard - Buttons.html --> 
2044    
2045<button
2046    type="button"
2047    data-uses-js="modal-submit"
2048    
2049    class=" mar-btn
2050    mar-btn--light
2051    mar-btn--md
2052    
2053    
2054    "
2055>
2056    Submit
2057</button>
2058    
2059
2060
2061
2062<!-- standard - Buttons.html --> 
2063    
2064<button
2065    type="button"
2066    data-uses-js="modal-cancel"
2067    
2068    class=" mar-btn
2069    mar-btn--outline
2070    mar-btn--md
2071    
2072    
2073    "
2074>
2075    Cancel
2076</button>
2077    
2078
2079
2080        </div>
2081    </div>
2082</div>
2083
2084</body>
2085
2086<div id="outbrain-holder">
2087    <div id="DFP_standard_mpu_3"></div>
2088    <div id="DFP_standard_mpu_4"></div>
2089    <div id="DFP_standard_mpu_5"></div>
2090    <div id="DFP_standard_mpu_6"></div>
2091    <div id="DFP_standard_mpu_7"></div>
2092</div>
2093<script>
2094
2095const elementToObserve = document.querySelector("#outbrain-holder");
2096
2097// create a new instance of `MutationObserver` named `observer`,
2098// passing it a callback function
2099const observer = new MutationObserver(function(e) {
2100    $.each(e, function(j, obs) {
2101        $.each(obs.removedNodes, function (i, node) {
2102            var id = $(node).attr('id');
2103            addAdSlot(id, id.replace('DFP_', ''));
2104        });
2105    });
2106});
2107
2108// call `observe()` on that MutationObserver instance,
2109// passing it the element to observe, and the options object
2110observer.observe(elementToObserve, {subtree: true, childList: true});
2111</script>
2111
2112
2113<script>
2114window.domComplete = performance.now();
2115</script>
2115
2116
2117<script type="text/javascript">
2118path = document.location.href.split("/");
2119var prop30 = qs.get('lp');
2120var prop43 = qs.get('ref');
2121var pType="Newsquest\Modules\UserIdentityModule"
2122
2123if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
2124    pType = 'ArticleModule';
2125}
2126for(x=4; x<7; x++)
2127{
2128    if (typeof path[x] == 'undefined')
2129    {
2130        path[x] = '';
2131    }
2132    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
2133    {
2134        path[x] = path[x-1];
2135    }
2136    else
2137    {
2138        path[x] = path[x-1] + "/" + path[x];
2139    }
2140    path[x] = path[x].replace(/\/undefined/g,"");
2141}
2142sitename = path[2].split(".");
2143
2144pathN= unescape(document.location.pathname.toString());
2145matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
2146detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
2147if (detailMatches !== null && detailMatches.length > 1)
2148{
2149    matches = detailMatches;
2150}
2151
2152if (matches !== null && matches.length > 1)
2153{
2154    var subfolder = '';
2155    path[3] = 'li';
2156    path[4] = 'li/'+subfolder;
2157    path[5] = 'li/'+subfolder+'/'+matches[1];
2158    path[6] = 'li/'+subfolder+'/'+matches[1];
2159}
2160if (pathN === '/')
2161{
2162    path[3] = 'homepage';
2163    path[4] = 'homepage';
2164    path[5] = 'homepage';
2165    path[6] = 'homepage';
2166}
2167
2168
2169function filterArray(arr) {
2170    var retArr = [];
2171    $.each(arr, function(i, part) {
2172        if (part !== '') {
2173            retArr.push(part);
2174        }
2175    });
2176
2177    return retArr;
2178}
2179</script>
2179
2180
2181
2182<script type="text/javascript">
2183var known = $.cookie('__siren') ? '1' : '0' ;
2184</script>
2184
2185
2186<script type="text/javascript">
2187
2188var known = $.cookie('__siren') ? '1' : '0' ;
2189var ref = document.referrer;
2190var parser = document.createElement('a');
2191parser.href = ref;
2192
2193// values in the below MUST be strings
2194var targeting = {
2195    'context': '',
2196    
2197    'domain': 'www.yourlocalguardian.co.uk',
2198    'isLanding': 'no',
2199    'top_path': 'user',
2200    'weather': 'sun'.toLowerCase(),
2201    'jbsjs': ''.toLowerCase(),
2202    'site_search': '',
2203    'bmd_cat': '',
2204    'wt': '11-15',
2205    'cmpid': qs.get('cmpid'),
2206    'refdm': parser.hostname,
2207    'k': known,
2208    'g':  'u' ,
2209    'a':  '0' ,
2210    'topic': '',
2211    'publication': '',
2212    'primary_tag_future_use': '',
2213    'site': (isMobile()) ? 'mobile': 'desktop',
2214    'r': data_layer.user.subscription_plan !== ''
2215        ? '2'       // 2 = subscribed
2216        : data_layer.user.is_logged_in == 'yes'
2217            ? '1'   // 1 = registered
2218            : '0',  // 0 = anonymous
2219};
2220
2221if (!usePrebid) {
2222    targeting.adrq = 'adl';
2223}
2224
2225if (data_layer.video.exists === 'yes') {
2226    targeting.ptype = 'video';
2227}
2228
2229if ($.cookie('isMeterExpired') === 'yes' && window.data_layer.article.is_article) {
2230    var articleContentLevel = parseInt(window.data_layer.article.content_level, 10) || 0; // account for NaN
2231    if (articleContentLevel !== 0 && window.data_layer.article.content_level_open_access === 'no') {
2232        targeting.ao = 'y';
2233    }
2234}
2235
2236if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
2237    targeting.dfpcsnt = 'yes';
2238} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
2239    targeting.dfpcsnt = 'no';
2240} else {
2241    targeting.dfpcsnt = 'none';
2242}
2243
2244if (typeof MobileDetect !== "undefined") {
2245    targeting.canbb = (window.screen.width > 960) ? 'y' : 'n';
2246}
2247
2248if (typeof module_targeting === "object") {
2249    targeting = addToTargeting(targeting, module_targeting);
2250}
2251
2252// $.each(apData, function (k, v) {
2253//     targeting[k] = v;
2254// });
2255
2256// if (typeof gs_channels !== 'undefined') {
2257//     targeting.gs_channels = gs_channels;
2258// }
2259
2260targeting = addToTargeting(targeting, data_layer_helper.homesData);
2261
2262targeting.article_id = '';
2263var googleSiteName = 'www.yourlocalguardian.co.uk';
2264var googlePath = '/user/';
2265
2266var googleNetworkCode = 154725070;
2267
2268var googleChildNetworkCode = 22694024870;
2269var googleId = '/'+googleNetworkCode + ',' + googleChildNetworkCode + '/' + googleSiteName+googlePath;
2270
2271if (googleId.charAt(googleId.length - 1) === '/') {
2272    googleId = googleId.slice(0, -1);
2273}
2274
2275var googletag = googletag || {};
2276googletag.cmd = googletag.cmd || [];
2277
2278googletag.cmd.push(function () {
2279    var _YB = _YB || {
2280        ab: function () {
2281            return _YB.dool ? "b" : "a" + Math.floor(Math.random() * 10);
2282        },
2283        dool: Math.random() >= 0.1,
2284    };
2285    var yb_ab;
2286    if (Math.random() <= 0.9) {
2287        yb_ab = _YB.ab();
2288    } else {
2289        yb_ab = "c";
2290    }
2291    googletag.pubads().setTargeting("yb_ab", yb_ab);
2292});
2293
2294googletag.cmd.push(function() {
2295    googletag.pubads().set("adsense_background_color", "FFFFFF");
2296    googletag.pubads().setTargeting('rfs', "0");
2297    $.each(targeting, function (key, value) {
2298
2299        // No real value so exclude
2300        if (value === 0 || value === '' || value === null) {
2301            return;
2302        }
2303        googletag.pubads().setTargeting(key, value);
2304    });
2305
2306});
2307
2308if (isMobile() && '' === 'top') {
2309    $('.desktop-standard-leaderboard').remove();
2310    $('.mobile-top-leaderboard').show();
2311    $('#DFP_top_leaderboard_mobile').attr('id', 'DFP_top_leaderboard');
2312} else {
2313    $('.mobile-top-leaderboard').remove();
2314}
2315// Ads
2316var adUnits = [];
2317
2318hideAdsByScreensize();
2319
2320if (blackListAds.length > 0) {
2321    removeBlacklistAds(blackListAds);
2322}
2323
2324$.each(unfilteredAdUnits, function (i, unit) {
2325    removeWhitelistAds(unit);
2326});
2327
2328// set up a holder for all the adverts so we can do things with them later
2329var dfpHolder = {};
2330// the set up code
2331googletag.cmd.push(function() {
2332    $.each(adUnits, function(i, data) {
2333
2334        // check if the dom exists
2335        if ($('#'+data.domName).length === 0) {
2336            return;
2337        }
2338
2339        var dfp = null;
2340
2341        if (data.slotType === 'standard')
2342        {
2343            // get the correct sizes, using the alternate_sizes if they exist and we are on a mobile site
2344            var sizes = data.sizes;
2345            if (data.alternate_mobile_size && isMobile()) {
2346                sizes = data.alternate_mobile_size;
2347            }
2348            // push this ad slot through
2349            dfp = googletag.defineSlot(googleId, sizes, data.domName)
2350                .addService(googletag.pubads())
2351                .setTargeting("position", data.positionName)
2352                .setCollapseEmptyDiv(data.collapseContainer);
2353            // check if we have an array of targets, and assign them as a companion if we do
2354            if (data.targets instanceof Array && data.targets.length > 0 ) {
2355                dfp.setTargeting('companion', data.targets);
2356            }
2357
2358        }
2359        else if (data.slotType === 'outofpage')
2360        {
2361            dfp = googletag.defineOutOfPageSlot(googleId, data.domName)
2362                .addService(googletag.pubads())
2363                .setTargeting("position", data.positionName)
2364                .setCollapseEmptyDiv(data.collapseContainer);
2365            // check if we have an array of targets, and assign them as a companion if we do
2366            if (data.targets instanceof Array && data.targets.length > 0 ) {
2367                dfp.setTargeting('companion', data.targets);
2368            }
2369        }
2370
2371        // store
2372        dfpHolder[data.domName] = dfp;
2373
2374    });
2375
2376    if (adLight === true) {
2377        googletag.pubads().setCategoryExclusion('adlight');
2378        // var adlightexplanation = '<div class="adlight-explanation">I\'m a subscriber <a href="#" class="adlight-explanation-link">Why am I seeing this advert?</a></div>';
2379        // if ($('#DFP_premium_mpu').length > 0) {
2380        //     $('#DFP_premium_mpu').before(adlightexplanation);
2381        // }
2382
2383        // if ($('#DFP_standard_mpu_1').length > 0) {
2384        //     $('#DFP_standard_mpu_1').before(adlightexplanation);
2385        // }
2386
2387        // var imageIds = [11497497, 11497535, 11497536, 11497541, 11497542, 11497545, 11497546, 11497547];
2388        // var imageId = imageIds[Math.floor(Math.random() * imageIds.length)];
2389        // $('.adlight-explanation-link').click(function(e) {
2390        //     e.preventDefault();
2391        //     $('#adlight-explanation-modal-image').attr('src', '/resources/images/' + imageId + '/').show();
2392        //     $('#adlight-explanation-modal').modal();
2393        // });
2394    }
2395
2396    // send the request
2397    googletag.pubads().enableSingleRequest();
2398
2399    googletag.enableServices();
2400
2401    googletag.pubads().addEventListener('slotVisibilityChanged', function(event) {
2402        if (event.slot.getResponseInformation().creativeTemplateId === 828288 ||
2403            event.slot.getResponseInformation().creativeTemplateId === 12383216 ) {
2404            console.log('DFP: Magic template id detected, not refreshing');
2405            return;
2406        }
2407        var slotName = '';
2408        $.each(dfpHolder, function (a, e) {
2409            if (e == event.slot) {
2410                slotName = a;
2411            }
2412        });
2413        if (typeof window.advertisingTimer !== 'undefined') {
2414            var perc = event.inViewPercentage;
2415            window.advertisingTimer.timer(slotName, perc);
2416        }
2417    });
2418});
2419
2420// the display code
2421$.each(adUnits, function(i, data) {
2422
2423    // check if the dom exists
2424    if ($('#'+data.domName).length === 0) {
2425        return;
2426    }
2427
2428    if (data.domName === 'DFP_interstitial_mpu') {
2429        if (!inter.checkVisit()) {
2430            return;
2431        }
2432    }
2433
2434    // are we manually loading it?
2435    if ($('#'+data.domName).attr('data-manual-loading') === "yes") {
2436        return;
2437    }
2438    // for mobile, we check if the dom element has the data-delay-loading attribute set to "1"
2439    else if ($('#'+data.domName).attr('data-delay-loading') === "yes") {
2440
2441        // load it
2442        $('#'+data.domName).appear();
2443        $(document.body).on('appear', '#'+data.domName, function(e, allElement) {
2444
2445            // don't call it many times
2446            if ($(this).attr('data-processed') === 'yes') {
2447                return;
2448            }
2449
2450            $(this).attr('data-processed', 'yes');
2451
2452            // display the google ad
2453            googletag.display(data.domName);
2454            googletag.pubads().refresh([dfpHolder[data.domName]]);
2455        });
2456        return;
2457    }
2458    googletag.cmd.push(function() {
2459        googletag.display(data.domName);
2460    });
2461});
2462window.googleComplete = performance.now();
2463window.googleReady = true;
2464
2465// METHODS
2466function addToTargeting(targeting, data) {
2467    if (!data) {
2468        return targeting;
2469    }
2470    $.each(data, function (key, value) {
2471        if (!value) {
2472            return;
2473        }
2474        targeting[key] = value;
2475    });
2476    return targeting;
2477}
2478
2479function addAdSlot(slotName, slot, initHidden) {
2480    console.log("Add ad slot called for %s %s", slotName, slot);
2481    // check if item already exists
2482    if (typeof window.dfpHolder[slotName] !== 'undefined') {
2483        return;
2484    }
2485
2486    if (window.adLight === true) {
2487        return;
2488    }
2489    window.googletag.cmd.push(function() {
2490        var dfp = googletag.defineSlot(window.googleId, [[300,250]], slotName)
2491            .setTargeting('position', [slot])
2492            .addService(googletag.pubads());
2493        window.dfpHolder[slotName] = dfp;
2494
2495        if (!initHidden) {
2496            googletag.pubads().refresh([dfp]);
2497
2498            return;
2499        }
2500    });
2501}
2502
2503function hideAdsByScreensize() {
2504    if (window.screen.width < 728 && $('#BlockArticleContainer').length > 0) {
2505        if ('35' === '1147') {
2506            $('#DFP_out_of_page').remove();
2507        } else {
2508            $('#DFP_premium_mpu').remove();
2509        }
2510        $('#DFP_on_scroll').remove();
2511    } else if (window.screen.width < 728 &&
2512        ( $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='9']").length > 0 ||
2513        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='12']").length > 0  ||
2514        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='18']").length > 0  ||
2515        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='24']").length > 0 )
2516    ) {
2517        const adElement = document.querySelector('#high_vis_container');
2518        $('.omnicard[data-position="5"]').after(adElement);
2519    }
2520
2521    if ('35' === '1147' && window.screen.width > 450) {
2522        $('#DFP_bottom_leaderboard').remove();
2523    }
2524
2525    if ('35' === '1147' && window.screen.width < 728) {
2526        $('#DFP_top_leaderboard').remove();
2527    }
2528
2529    if ('35' === '1147') {
2530        $('#DFP_teads').remove();
2531        $('#DFP_out_of_page').remove();
2532    }
2533
2534    if ($('#comments-in-page').length === 1 && window.screen.width > 450) {
2535        $('#DFP_top_leaderboard').parent().remove();
2536        $('#DFP_bottom_leaderboard').parent().remove();
2537        // $('#DFP_standard_mpu_1').parent().remove();
2538    }
2539}
2540
2541function removeBlacklistAds(blackListAds) {
2542    $.each(blackListAds, function(i, name) {
2543        removeAdContainer(name);
2544    });
2545}
2546
2547function removeWhitelistAds(unit) {
2548    // VAST (video) ad units never get displayed in here.
2549    if (unit.isVast) {
2550        return;
2551    }
2552
2553    // if we have an ad-light experience
2554    if (whiteList === true) {
2555        if (typeof whiteListAds[unit.positionName] === 'undefined') {
2556            removeAdContainer(unit.domName)
2557            return;
2558        }
2559    }
2560
2561    adUnits.push(unit);
2562}
2563
2564function removeAdContainer(name) {
2565    const element = document.getElementById(name);
2566    // doesn't exist? exit
2567    if(!element) {
2568        return;
2569    }
2570
2571    const parent = element.parentElement;
2572    if (parent && parent.classList.contains('block-bottom-margin')) {
2573        // if immediate parent contains block-bottom-margin as a class, remove the parent as well
2574        parent.classList.remove('block-bottom-margin');
2575    }
2576    if (parent && parent.classList.contains('mar-leaderboard--top')) {
2577        // in case of leaderboard, remove as has min-height
2578        parent.remove();
2579        return;
2580    }
2581
2582    if (parent && parent.classList.contains('mar-leaderboard--bottom')) {
2583        // in case of article ad container, remove as has min-height
2584        parent.remove();
2585        return;
2586    }
2587
2588    element.remove();
2589}
2590</script>
2590
2591
2592
2593<script src="/resources/responsive-static/build/mds/js/global.js?cb=vjoPdzgg"></script>
2593
2594
2595
2596
2597
2598
2599<script src="/__siren/"></script>
2599
2600
2601
2602
2603<script type="text/javascript">
2604    var s_account="newsquestgroupprod";
2605</script>
2605
2606
2607<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/VisitorAPI.js?cb=vjoPdzgg"></script>
vendor: 1 bytes, line 2607
2607
2608<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/omniture.js?cb=vjoPdzgg"></script>
2608
2609
2610<script type="text/javascript">
2611
2612function getOmniturePath() {
2613    var path = '';
2614    if ($('#gallery-base-url').length === 1) {
2615        path = $('#gallery-base-url').val();
2616    }
2617    else {
2618        path = window.location.pathname;
2619    }
2620    return path;
2621}
2622
2623function getPositionFromCookie() {
2624    const cookieName = 'tracking_block_index';
2625
2626    const ref = document.cookie
2627        .split('; ')
2628        .find(row => row.startsWith(`${cookieName}=`))
2629        ?.slice(cookieName.length + 1);
2630
2631    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
2632
2633    return ref ? decodeURIComponent(ref) : undefined;
2634}
2635function getRefFromCookie() {
2636    const cookieName = 'tracking_block';
2637
2638    const ref = document.cookie
2639        .split('; ')
2640        .find(row => row.startsWith(`${cookieName}=`))
2641        ?.split('=')[1];
2642
2643    // Remove the cookie
2644    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
2645
2646    return ref;
2647}
2648
2649function getOmnitureTrackingFromCookie(key, preExistingValue) {
2650    var ref = $.cookie('o-' + key);
2651    if(typeof(ref) === 'undefined') {
2652    	ref  = preExistingValue
2653    } else {
2654    	ref = decodeURIComponent(ref);
2655    	$.removeCookie('o-' + key, {
2656            path: '/',
2657            domain: window.data_layer.site.cookie_domain,
2658        });
2659    }
2660    return ref;
2661}
2662
2663function getValidatedAPList() {
2664
2665    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];
2666
2667    var data = getAudienceProjectTargetingData();
2668    if (!data || !data.ap_x) {
2669        return '';
2670    }
2671
2672    validData = [];
2673    $.each(data.ap_x, function(i, td) {
2674        if ($.inArray(parseInt(td, 10), validList) !== -1) {
2675            validData.push(td);
2676        }
2677    });
2678
2679    return validData.join(',');
2680}
2681
2682path = document.location.href.split("/");
2683
2684var qs = new URLSearchParams(window.location.search);
2685
2686var prop30 = qs.get('lp');
2687var prop43 = qs.get('ref');
2688var pType="Newsquest\Modules\UserIdentityModule"
2689
2690if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
2691    pType = 'ArticleModule';
2692}
2693
2694for(x=4; x<7; x++)
2695{
2696    if (typeof path[x] == 'undefined')
2697    {
2698        path[x] = '';
2699    }
2700    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
2701    {
2702        path[x] = path[x-1];
2703    }
2704    else
2705    {
2706        path[x] = path[x-1] + "/" + path[x];
2707    }
2708    path[x] = path[x].replace(/\/undefined/g,"");
2709}
2710pathN= unescape(document.location.pathname.toString());
2711matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
2712detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
2713if (detailMatches !== null && detailMatches.length > 1)
2714{
2715    matches = detailMatches;
2716}
2717
2718if (matches !== null && matches.length > 1)
2719{
2720    var subfolder = '';
2721    path[3] = 'li';
2722    path[4] = 'li/'+subfolder;
2723    path[5] = 'li/'+subfolder+'/'+matches[1];
2724    path[6] = 'li/'+subfolder+'/'+matches[1];
2725}
2726if (pathN === '/')
2727{
2728    path[3] = 'homepage';
2729    path[4] = 'homepage';
2730    path[5] = 'homepage';
2731    path[6] = 'homepage';
2732}
2733
2734
2735/* You may give each page an identifying name, server, and channel on
2736the next lines. */
2737s.pageName="(www) "+getOmniturePath();
2738s.pageName = s.pageName.toLowerCase();
2739s.server="martini";
2740s.channel="";
2741s.pageType="";
2742s.prop1= qs.get('search');
2743s.prop2="";
2744s.prop3=document.title;
2745s.prop4="";
2746s.prop5="Newsquest\Modules\UserIdentityModule"; /* get from Martini */
2747s.prop6=path[3].toLowerCase();
2748s.prop7=path[4].toLowerCase();
2749s.prop8=path[5].toLowerCase();
2750s.prop9=path[6].toLowerCase();
2751s.prop10="";
2752
2753s.prop16=path[2].toLowerCase();
2754s.prop17="South West London";
2755s.prop18="Martini";
2756s.prop19="1";
2757s.prop20 = s.getPreviousValue(s.pageName, 'gpv_pn');
2758s.prop42 = "";
2759s.prop53 = 'standard';
2760s.prop54 = '';
2761s.prop55 = '';
2762s.prop56 = "";
2763s.prop57 = ($('[data-name="Feature Article Block A"]').length > 0) ? 'Enabled' : 'Disabled';
2764s.prop58 = document.querySelector('[data-name="Feature Article Block B"]')?.dataset.variant;
2765s.prop59 = getRefFromCookie();
2766s.prop60 = getPositionFromCookie();
2767s.prop73 = document.cookie.split('; ').find(row => row.startsWith('adtiming='))?.split('=')[1] || null;
2768
2769var eVar67 = [];
2770
2771if ($.cookie('consentUUID')) {
2772    eVar67.push('yes');
2773} else {
2774    eVar67.push('no');
2775}
2776if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
2777    eVar67.push('yes');
2778} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
2779    eVar67.push('no');
2780} else {
2781    eVar67.push('none');
2782}
2783
2784if ($.cookie('_sp_legitimate_interests') === 'true') {
2785    eVar67.push('yes');
2786} else if ($.cookie('_sp_legitimate_interests') === 'false') {
2787    eVar67.push('no');
2788} else {
2789    eVar67.push('none');
2790}
2791
2792//if ($.cookie('euconsent')) {
2793//    eVar67.push($.cookie('euconsent'));
2794//} else {
2795//    eVar67.push('none');
2796//}
2797
2798s.eVar67 = eVar67.join(',');
2799// console.log('ADB: setting eVar67 to %s', eVar67.join(','));
2800
2801if ($.cookie('prev-tcf-v2')) {
2802    // console.log('ADB: Setting eVar68 to ', $.cookie('prev-tcf-v2'));
2803    s.eVar68 = $.cookie('prev-tcf-v2');
2804}
2805
2806if (typeof iabNames !== 'undefined') {
2807    s.prop29 = iabNames.join(',');
2808} else if (typeof iabIds !== 'undefined') {
2809    s.prop29 = iabIds.join(',');
2810}
2811
2812if (s.prop20 && s.prop20 !== 'no value') {
2813    s.prop21 = s.getPercentPageViewed();
2814} else {
2815    s.prop21 = '';
2816}
2817
2818if (typeof __siren !== 'undefined') {
2819    s.eVar27 = __siren;
2820}
2821
2822s.prop22 = s.getDaysSinceLastVisit('s_lv');
2823
2824
2825s.prop43=getOmnitureTrackingFromCookie('ref', prop43);
2826s.prop25 = ''
2827
2828s.prop27 = '';
2829
2830s.prop30 = getOmnitureTrackingFromCookie('prop30', prop30);
2831s.linkInternalFilters="javascript:,yourlocalguardian.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,"
2832s.eVar61=(new Date()).toLocaleDateString("en-GB");
2833/* s.eVar62=(new Date()).toLocaleDateString("en-GB"); */
2834
2835
2836
2837
2838
2839
2840/* Article-site-cloning data */
2841s.eVar90 = window.data_layer.article.parent_originating_site_id;
2842s.eVar91 = window.data_layer.article.originating_article_id;
2843s.eVar92 = window.data_layer.article.is_original_to_site;
2844s.eVar95 = window.data_layer.site.using_piano_id;
2845s.eVar106 = '';
2846
2847s.eVar109 = '';
2848
2849/* Uber block article counts */
2850s.eVar93 = window.data_layer.page.top_stories_article_count + ':' + window.data_layer.page.interstitial_article_count + ':' + window.data_layer.page.news_stories_article_count;
2851
2852/* Conversion Variables */
2853s.campaign=""
2854s.state=""
2855s.zip=""
2856s.events=""
2857s.products=""
2858s.purchaseID=""
2859s.eVar14=""
2860try {
2861    s.list3=getValidatedAPList();
2862} catch (e) {
2863    // do nothing
2864}
2865
2866
2867
2868
2869// Initial fotorama tracking.
2870var moduleType = null;
2871if (s.prop5 === 'ArticleModule' || s.prop5 == 'PropertyModuleReplacement' || s.prop5 === 'BlockArticleModule') {
2872    moduleType = 'article';
2873} else if (s.prop5 === 'PictureGalleryModule') {
2874    moduleType = 'gallery';
2875}
2876
2877if ($('#comments-in-page').length === 1) {
2878    moduleType = 'comments';
2879}
2880
2881if (moduleType === 'article' || moduleType === 'gallery' || moduleType === 'comments') {
2882    var imagePath = '';
2883
2884    if ($('.fotorama').length > 0) {
2885        // Get the first Fotorama image.
2886        try {
2887            var el = $('.fotorama').data('fotorama').data[0].html;
2888            var url = $(el).find('div').css('background-image');
2889            imagePath = url.replace('url(','').replace(')','').replace(/\"/gi, "");
2890        } catch (e) {
2891        }
2892    } else {
2893        // If there's just one image (i.e. it's not a gallery), find its path.
2894        var imagePathSingle = $('#mainImage').attr('src');
2895        if (typeof imagePathSingle !== 'undefined') {
2896            imagePath = imagePathSingle.split('.')[0] + '/';
2897        }
2898    }
2899    var imageParts = imagePath.split('/');
2900    if (imageParts.length > 1) {
2901        s.eVar37 = imageParts[imageParts.length - 2];
2902        s.prop37 = imageParts[imageParts.length - 2];
2903        s.events = s.apl(s.events, 'event7', ',', 2);
2904    }
2905    s.eVar36 = moduleType;
2906    s.prop36 = moduleType;
2907}
2908
2909
2910
2911// Education pages.
2912if (s.prop5 === 'ResponsiveEducationModule') {
2913    // School profile page.
2914    if ($('#eduOverview').length > 0) {
2915        s.eVar40 = $('#eduOverview').data('school-status');
2916        s.prop40 = s.eVar40;
2917        s.prop41 = 'edu-' + $('#eduOverview').data('school-urn');
2918        s.prop46 = $('#town').text();
2919    }
2920
2921    // Comparison page.
2922    if ($('#eduComparisonTable').length > 0) {
2923        s.list1 = '';
2924    }
2925
2926    // Results page.
2927    if ($('.school-results').length > 0) {
2928        s.list1 = '';
2929
2930        // Track the search criteria.
2931        s.prop44 = '';
2932        s.prop45 = "".toLowerCase();
2933        s.prop46 = "".toLowerCase();
2934        s.prop49 = '';
2935        s.prop50 = '';
2936        s.prop51 = '';
2937        s.eVar2 = s.prop50;
2938
2939        var newSearch = false;
2940        if (newSearch) {
2941            s.events = s.apl(s.events, 'event17', ',', 1);
2942        }
2943    }
2944}
2945
2946// Notices Module
2947if (s.prop5 === 'NewsquestModulesNoticesModule') {
2948    // Notices Find page.
2949    if (s.pageName.includes('notices/find')) {
2950        s.pageName = '(www) /notices/find/';
2951        s.eVar50 = '';
2952        const noticesURL = new URL(window.location.href);
2953        const noticesParams = new URLSearchParams(noticesURL.search);
2954
2955        s.eVar1 = noticesParams.has('keyword') ? noticesParams.get('keyword') : 'None';
2956        s.eVar51 = noticesParams.has('sort') ? noticesParams.get('sprt') : 'best';
2957        s.eVar52 = noticesParams.has('p') ? (parseInt(noticesParams.get('p'), 10) + 1) : 1;
2958        s.eVar53 = noticesParams.has('type') ? noticesParams.get('type') : 'All';
2959        s.eVar54 = noticesParams.has('nearby') ? noticesParams.get('nearby') : 'no';
2960        s.eVar55 = noticesParams.has('daterange') ? noticesParams.get('daterange') : 'last-month';
2961
2962        if (noticesParams.has('sort')) {
2963            switch (noticesParams.get('sort')) {
2964                case 'date_asc':
2965                    s.eVar51 = 'oldest';
2966                    break;
2967                case 'date_desc':
2968                    s.eVar51 = 'newest';
2969                    break;
2970                case 'best_match':
2971                    s.eVar51 = 'best';
2972                    break;
2973                default:
2974                    s.eVar51 = noticesParams.get('sort');
2975                    break;
2976            }
2977        }
2978
2979        // Concatenate all search params into eVar44
2980        if (noticesParams.size > 0) {
2981            const searchParams = new URL(window.location.href).searchParams;
2982            s.eVar44 = '';
2983            searchParams.forEach((value, key) => {
2984                s.eVar44 += `${key}=${value},`;
2985            });
2986        } else {
2987            s.eVar44 = '';
2988        }
2989
2990        // Adobe Search Event triggering
2991        const setNoticePaginationClicked = (value) => {
2992            localStorage.setItem("isNoticePaginationClicked", value);
2993        };
2994
2995        const noticeSearchInput = document.getElementById("notices-search");
2996        const noticeSearchBtn = document.getElementById("notice-search-find");
2997        const noticePaginationBtns = document.querySelectorAll('.notice-find__pagination .pagination-btn');
2998        const noticePaginationBtnPrev = document.querySelector('.pagination-btn-previous svg');
2999        const noticePaginationBtnNext = document.querySelector('.pagination-btn-next svg');
3000
3001        noticeSearchInput?.addEventListener('change', () => setNoticePaginationClicked('false'));
3002        noticeSearchBtn?.addEventListener('click', () => setNoticePaginationClicked('false'));
3003
3004        noticePaginationBtns.forEach(btn => {
3005            btn.addEventListener('click', () => setNoticePaginationClicked('true'));
3006        });
3007
3008        noticePaginationBtnPrev?.addEventListener('click', () => setNoticePaginationClicked('true'));
3009        noticePaginationBtnNext?.addEventListener('click', () => setNoticePaginationClicked('true'));
3010
3011        if (localStorage.getItem("isNoticePaginationClicked") === 'false') {
3012            s.events = s.apl(s.events, 'event1', ',', 1);
3013        }
3014    }
3015
3016    if (/notices\/funeral-directors\/(\d+)\.([a-zA-Z0-9-?]+)?/.test(s.pageName)) {
3017        s.pageName = '(www) /notices/funeral-director/';
3018        s.eVar41 = '';
3019    }
3020}
3021
3022if (s.prop5 === 'NewsquestModulesNoticeModule') {
3023    s.eVar41 = '';
3024    const type = window.announcement_data?.details?.type || '';
3025    const subCategory = window.announcement_data?.details?.sub_category || '';
3026    s.eVar40 = type !== 'Tribute' ? type : `${type} - ${subCategory}`;
3027    s.eVar42 = window.announcement_data?.details?.id || '';
3028    s.eVar107 = '';
3029    s.eVar119 = '';
3030    s.eVar120 = '';
3031    s.eVar2 = "(www) /notice/";
3032}
3033
3034//New Property module
3035if (s.prop5 === 'ResponsivePropertyModule') {
3036    /*
3037        Use prop42 for single and list pages, for list pages use hyphen separate lists of id's
3038    */
3039    
3040    
3041    //Property's all over the place (homepage, searches etc - HOM-133
3042
3043    //Property Detail - HOM-131, HOM-134, HOM-130
3044
3045    //Contact us submissions - HOM-137
3046    if($('#propertyModule.agent-details').length > 0) {
3047        //Add a click handler for a.contact-detail
3048    }
3049
3050
3051}
3052
3053// is their a video tag on the page?
3054if ($('.exco-embed').length > 0) {
3055    console.log('VID: setting tracking for event50');
3056    s.events = s.apl(s.events, 'event50', ',', 1);
3057}
3058
3059var foundAutoPlayVid = false;
3060$('.jw-outer').each(function (a, domEle) {
3061    if ($(this).data('multimedia-block') === 'no' && !foundAutoPlayVid) {
3062        console.log('VID: setting tracking for event51');
3063        s.events = s.apl(s.events, 'event51', ',', 1);
3064        foundAutoPlayVid = true;
3065    }
3066});
3067
3068
3069
3070
3071
3072
3073
3074s.eVar66 = 'Ad-Full';
3075s.eVar114 = '';
3076
3077
3078
3079    // var eVar65Copy = s.getValOnce(s.eVar65, "ev65", 0);
3080    // if (eVar65Copy !== '' && s.prop20.indexOf("/my/subscription/activate/") > -1) {
3081    //     s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
3082    //     s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
3083    //     s.products = "Subscription : Metered Access;" + eVar65Copy + ";1;";
3084    //     s.purchaseID = "";
3085    // }
3086
3087
3088if(qs.get('action') === 'success' && (s.prop5 === 'ArticleModule' || s.prop5 === 'BMDModule' || s.prop5 === 'BlockArticleModule')) {
3089    s.events=s.apl(s.events,'event9',',',2)
3090}
3091/* Hierarchy Variables */
3092s.hier1="newsquest," + "South West London" + ",www.yourlocalguardian.co.uk," + path[6].replace(/\//,",");
3093
3094if (typeof MartiniFotorama !== 'undefined') {
3095    MartiniFotorama.loadOmniture(s);
3096}
3097s.prop39 = "0";
3098
3099
3100
3101// Tracking usage of Bytecast audio embeds in articles.
3102s.eVar82 = 'no';
3103s.eVar83 = '';
3104
3105    console.log('ADB: starting');
3106    console.log('Google Bot Browser: ', window.isRobot.googleBot()); //TODO Remove this log after QA
3107
3108// Tracking of Commenting Registration FLow
3109if (s.prop5 !== 'BlockArticleModule') {
3110    const storedAdobeDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
3111    if (storedAdobeDimensions) {
3112        const storedAdobeDimensionObj = JSON.parse(storedAdobeDimensions);
3113        s.eVar10 = storedAdobeDimensionObj.eVar10;
3114        s.eVar15 = storedAdobeDimensionObj.eVar15;
3115        s.eVar22 = storedAdobeDimensionObj.eVar22;
3116        s.eVar23 = storedAdobeDimensionObj.eVar23;
3117        s.eVar24 = storedAdobeDimensionObj.eVar24;
3118        s.eVar25 = storedAdobeDimensionObj.eVar25;
3119        s.eVar28 = storedAdobeDimensionObj.eVar28;
3120        s.eVar60 = storedAdobeDimensionObj.eVar60;
3121        s.eVar104 = storedAdobeDimensionObj.eVar104;
3122        s.eVar106 = storedAdobeDimensionObj.eVar106;
3123        s.eVar107 = storedAdobeDimensionObj.eVar107;
3124        s.eVar108 = storedAdobeDimensionObj.eVar108;
3125        s.prop63 = storedAdobeDimensionObj.prop63;
3126    }
3127}
3128
3129if (window.location.href.includes("/user/create-account/commenting/")) {
3130    s.eVar2 = '(www) /user/create-account/commenting/';
3131}
3132
3133/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
3134if (qs.get('callback') !== 'in' && !window.isRobot.googleBot()) {
3135    var s_code=s.t();
3136    var backupAdobe = s;
3137
3138    if(s_code)document.write(s_code)
3139}
3140
3141// Storing the visiting dimensions
3142if (s.eVar10 || s.eVar22 || s.eVar23 || s.eVar24) {
3143    const adobeTrackingVisitingDimensions = {
3144        eVar10: s.eVar10,
3145        eVar22: s.eVar22,
3146        eVar23: s.eVar23,
3147        eVar24: s.eVar24,
3148    }
3149    sessionStorage.setItem('nq_adobe_tracking_visiting_dimensions', JSON.stringify(adobeTrackingVisitingDimensions));
3150}
3151
3152//--></script>
3152
3153<!-- End SiteCatalyst code version: H.19.3. -->
3154
3155
3156
3157
3158    
3158<script src="/resources/responsive-static/build/mds/js/piano-id-login.js?cb=vjoPdzgg"></script>
3158
3159
3160
3161<script>
3162    if ('' !== '') {
3163        setTimeout(function() {
3164            data_layer_helper.loadScript(
3165                "/resources/responsive-static/build/mds-next/js/.js?cb=vjoPdzgg",
3166                true,
3167                null,
3168                "module"
3169            )
3170        }, 500);
3171    }
3172</script>
3172
3173
3174
3175</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.