{"webLayers":[{"_id":"67338e95a9b34dd6f9afb41d","date_filter":{"enabled":false,"from_date":1732528800,"to_date":1732626000},"trigger":{"include_pages":[{"type":"any"}],"exclude_pages":[{"url":"shop.newcastleunited.com","type":"contains"},{"url":"official store","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"mobile"},"frequency":"once_per_visit","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"673477157e75ce0912fe1add","date_filter":{"enabled":true,"from_date":1733220000,"to_date":1733295600},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/collections/mens-clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/gifts","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-sweats-hoodies","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/new-in","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-outerwear","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-home-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training-tops","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kids-clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/players-24-25-range","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-t-shirts","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training-hoodies","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kids-home-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training-outerwear","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/newcastle-united-x-new-era","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/pre-match-24-25-range","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/new-mens-24-25-away-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/all-24-25-away-kits","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kids-training","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/womens-clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/all-24-25-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/training","type":"contains"},{"url":"https://www.newcastleunited.com/en/newcastle-united-official-club-store","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"675acbed947a9ffed9064d38","date_filter":{"enabled":true,"from_date":1733961600,"to_date":1734652799},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/collections/mens-clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/gifts","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-sweats-hoodies","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/new-in","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-outerwear","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-home-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training-tops","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kids-clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/players-24-25-range","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-t-shirts","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training-hoodies","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kids-home-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/mens-training-outerwear","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/newcastle-united-x-new-era","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/pre-match-24-25-range","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/new-mens-24-25-away-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/all-24-25-away-kits","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/kids-training","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/womens-clothing","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/all-24-25-kit","type":"contains"},{"url":"https://shop.newcastleunited.com/collections/training","type":"contains"},{"url":"https://www.newcastleunited.com/en/newcastle-united-official-club-store","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"67d1aeabf6ab35fee5552c96","date_filter":{"enabled":true,"from_date":null,"to_date":1742142600},"trigger":{"include_pages":[{"type":"any"}],"exclude_pages":[{"url":"shop.newcastleunited.com","type":"contains"},{"url":"newcastle-united-mobile-app","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"67dbefec88306797836ba7e0","date_filter":{"enabled":true,"from_date":null,"to_date":1742774399},"trigger":{"include_pages":[{"url":"https://www.newcastleunited.com/en/matches/womens-team/fixtures","type":"exact"},{"url":"https://www.newcastleunited.com/en/matches/mens-team/fixtures","type":"exact"},{"url":"https://www.newcastleunited.com/en/matches/U21/fixtures","type":"exact"},{"url":"https://www.newcastleunited.com/en/matches/U18/fixtures","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets","type":"exact"},{"url":"https://www.newcastleunited.com/en/teams/womens-team","type":"exact"},{"url":"https://www.newcastleunited.com/en/st-james-park","type":"exact"},{"url":"https://www.newcastleunited.com/en","type":"exact"},{"url":"https://www.newcastleunited.com/en/news/listing/womens-news","type":"exact"}],"exclude_pages":[{"url":"shop.newcastleunited.com","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"681e195ded2bc3aadea7b0bd","date_filter":{"enabled":true,"from_date":1746658800,"to_date":1753484399},"trigger":{"include_pages":[{"url":"https://www.newcastleunited.com/en/pre-season-tour-2025","type":"exact"}],"exclude_pages":[{"url":"shop.newcastleunited.com","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"only_once","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"683816d44b3b18c54997c4da","date_filter":{"enabled":false,"from_date":1744347600,"to_date":null},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/pages/nuw-25-26-home-kit","type":"exact"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"683d8e98839cb6d445439d59","date_filter":{"enabled":true,"from_date":1748818800,"to_date":1750114799},"trigger":{"include_pages":[{"url":"https://www.newcastleunited.com/en","type":"exact"},{"url":"https://www.newcastleunited.com/en/matches/mens-team/fixtures","type":"exact"},{"url":"https://www.newcastleunited.com/en/teams/mens-team","type":"exact"},{"url":"https://www.newcastleunited.com/en/news","type":"exact"}],"exclude_pages":[{"url":"shop.newcastleunited.com","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"once_per_visit","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"68f8f889d973a9b14bd6001e","date_filter":{"enabled":true,"from_date":null,"to_date":1761303540},"trigger":{"include_pages":[{"type":"any"}],"exclude_pages":[{"url":"shop","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"690487937cac5b524485faa2","date_filter":{"enabled":true,"from_date":null,"to_date":1761955199},"trigger":{"include_pages":[{"url":"https://www.newcastleunited.com/en/st-james-park","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets","type":"exact"},{"url":"https://www.newcastleunited.com/en/st-james-park/stadium-tours","type":"exact"},{"url":"https://www.newcastleunited.com/en/st-james-park/whats-on","type":"exact"}],"exclude_pages":[{"url":"shop","type":"contains"},{"url":"official store","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"692d99d8aa2d4014d4b5c6c0","date_filter":{"enabled":true,"from_date":1764720000,"to_date":1765929599},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/collections/all-25-26-away-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/new-in","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-third-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/sale","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-25-26-home-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/training","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-clothing ","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-sweats-hoodies","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-25-26-away-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/northern-explorer","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/memorabilia","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-25-26-third-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-training-tops","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/retro","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/gifts","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/kids-25-26-home-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-outerwear","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/whos-that-team","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/carabao-cup-winners-2025","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-t-shirts","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/clothing","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/accessories","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/baby-clothing","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-goalkeeper-home-kits","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-training","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-training-outerwear","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/kids-25-26-away-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-polo-shirts","type":"exact"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"only_once","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6973a1a78d1033d3da4b823e","date_filter":{"enabled":true,"from_date":null,"to_date":1770595199},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/collections/new-in","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-home-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/retro","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-third-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-away-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-sweats-hoodies","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/sale","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-25-26-home-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-clothing","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/training","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/clothing","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/memorabilia","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-outerwear","type":"exact"},{"url":"https://shop.newcastleunited.com","type":"exact"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"once_per_visit","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"698ef1ccc742b143ad3ff952","date_filter":{"enabled":true,"from_date":null,"to_date":1771804799},"trigger":{"include_pages":[{"url":"https://www.newcastleunited.com/en/tickets","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/matchday-hospitality","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/matchday-hospitality/spaces-and-packages","type":"exact"},{"url":"https://www.newcastleunited.com/en/st-james-park","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/ticket-information","type":"exact"},{"url":"https://www.newcastleunited.com/en/matches/mens-team/fixtures ","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/ticket-information/on-sale-dates","type":"exact"}],"exclude_pages":[{"url":"shop","type":"contains"},{"url":"official store","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"only_once","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6995da1551c8fc362b4927a6","date_filter":{"enabled":true,"from_date":null,"to_date":1772841599},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/collections/new-in","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-home-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/retro","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-third-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/all-25-26-away-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-sweats-hoodies","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/sale","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-25-26-home-kit","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-clothing","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/training","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/clothing","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/memorabilia","type":"exact"},{"url":"https://shop.newcastleunited.com/collections/mens-outerwear","type":"exact"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"once_per_visit","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"699c8b5b4f8628f7c35df2ea","date_filter":{"enabled":true,"from_date":null,"to_date":1772841599},"trigger":{"include_pages":[{"url":"https://www.newcastleunited.com/en/tickets","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/matchday-hospitality","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/matchday-hospitality/spaces-and-packages","type":"exact"},{"url":"https://www.newcastleunited.com/en/st-james-park","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/ticket-information","type":"exact"},{"url":"https://www.newcastleunited.com/en/matches/mens-team/fixtures","type":"exact"},{"url":"https://www.newcastleunited.com/en/tickets/ticket-information/on-sale-dates","type":"exact"}],"exclude_pages":[{"url":"shop","type":"contains"},{"url":"official store","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"only_once","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a101d2c69f8c10d80004dff","date_filter":{"enabled":false,"from_date":1744347600,"to_date":null},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/pages/newcastle-united-26-27-sign-up","type":"exact"},{"url":"https://shop.newcastleunited.com/pages/newcastle-united-26-27-sign-up?","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a2be2cf41c8d21bcb0f0dca","date_filter":{"enabled":true,"from_date":null,"to_date":1782860399},"trigger":{"include_pages":[{"url":"women","type":"contains"},{"url":"nuw","type":"contains"}],"exclude_pages":[{"url":"shop.newcastleunited.com","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"once_per_visit","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a638be841be12201ab8ba72","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"https://shop.newcastleunited.com/pages/newcastle-united-knox-competition","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":false,"data":"return (function insertBanner(data) {\ninsertBanner.inPreview = false;\ninsertBanner.sdk = window.exponea;\ninsertBanner.data = data;\ninsertBanner.html = \"\u003cdiv id=\\\"exponea-greyout\\\"\u003e\\n    \u003cdiv class=\\\"banner-item weblayer--box-subscription\\\"\u003e\\n        \u003cbutton aria-label=\\\"Close\\\" class=\\\"close-icon close\\\"\u003e\\n            \u003csvg class=\\\"close-icon-svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\\n                \u003cpath d=\\\"M2.99867 13L12.998 3\\\" stroke=\\\"rgba(255,255,255,0.7)\\\" stroke-width=\\\"1.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/\u003e\\n                \u003cpath d=\\\"M12.9987 13L2.998 3\\\" stroke=\\\"rgba(255,255,255,0.7)\\\" stroke-width=\\\"1.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/\u003e\\n            \u003c/svg\u003e\\n        \u003c/button\u003e\\n\\n        \u003cdiv class=\\\"inner step-one\\\"\u003e\\n            \u003cdiv class=\\\"image-surround step-one-image-surround\\\"\u003e\\n                \u003cimg class=\\\"main-image\\\" src=\\\"\\\" alt=\\\"\\\"/\u003e\\n            \u003c/div\u003e\\n            \u003cdiv class=\\\"form-inner\\\"\u003e\\n                \u003cp class=\\\"text line-one\\\"\u003e\u003c/p\u003e\\n                \u003ch6 class=\\\"heading\\\"\u003e\u003c/h6\u003e\\n                \u003cp class=\\\"text line-two\\\"\u003e\u003c/p\u003e\\n\\n                \u003cform id=\\\"exponea-form\\\"\u003e\\n                    \u003cdiv id=\\\"exponea-main-fieldsets\\\"\u003e\\n                        \u003cfieldset class=\\\"firstname_fieldset\\\"\u003e\\n                            \u003clabel for=\\\"first_name\\\" class=\\\"input-label firstname-label\\\"\u003e\u003c/label\u003e\\n                            \u003cinput name=\\\"first_name\\\" id=\\\"first_name\\\" type=\\\"text\\\" required class=\\\"first_name\\\"\u003e\\n                        \u003c/fieldset\u003e\\n                        \u003cfieldset class=\\\"lastname_fieldset\\\"\u003e\\n                            \u003clabel for=\\\"last_name\\\" class=\\\"input-label lastname-label\\\"\u003e\u003c/label\u003e\\n                            \u003cinput name=\\\"last_name\\\" id=\\\"last_name\\\" type=\\\"text\\\" required class=\\\"last_name\\\"\u003e\\n                        \u003c/fieldset\u003e\\n                        \u003cfieldset class=\\\"email_fieldset\\\"\u003e\\n                            \u003clabel for=\\\"email\\\" class=\\\"input-label email-label\\\"\u003e\u003c/label\u003e\\n                            \u003cinput name=\\\"email\\\" id=\\\"email\\\" type=\\\"email\\\" required class=\\\"email\\\"\u003e\\n                        \u003c/fieldset\u003e\\n\\n                        \u003cdiv class=\\\"exponea-consents\\\"\u003e\\n                            \u003cfieldset class=\\\"fieldset\\\"\u003e\\n                                \u003clabel for=\\\"consent_newcastle\\\" class=\\\"checkbox-label\\\"\u003e\\n                                    \u003cinput type=\\\"checkbox\\\" name=\\\"consent_newcastle\\\" id=\\\"consent_newcastle\\\" value=\\\"true\\\" class=\\\"consent_newcastle\\\"\u003e\\n                                    \u003cp class=\\\"consent-text\\\"\u003e\\n                                        \u003cspan class=\\\"consent-text-inner newcastle-consent-text\\\"\u003e\u003c/span\u003e\\n                                        \u003ca href=\\\"https://www.newcastleunited.com/en/privacy-policy\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\" class=\\\"link consent-link newcastle-consent-link\\\"\u003e\u003c/a\u003e\\n                                    \u003c/p\u003e\\n                                \u003c/label\u003e\\n                            \u003c/fieldset\u003e\\n                            \u003cfieldset class=\\\"fieldset\\\"\u003e\\n                                \u003clabel for=\\\"consent_knox\\\" class=\\\"checkbox-label\\\"\u003e\\n                                    \u003cinput type=\\\"checkbox\\\" name=\\\"consent_knox\\\" id=\\\"consent_knox\\\" value=\\\"true\\\" class=\\\"consent_knox\\\"\u003e\\n                                    \u003cp class=\\\"consent-text\\\"\u003e\\n                                        \u003cspan class=\\\"consent-text-inner knox-consent-text\\\"\u003e\u003c/span\u003e\\n                                        \u003ca href=\\\"https://knoxhydrate.com/policies/privacy-policy\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\" class=\\\"link consent-link knox-consent-link\\\"\u003e\u003c/a\u003e\\n                                    \u003c/p\u003e\\n                                \u003c/label\u003e\\n                            \u003c/fieldset\u003e\\n                        \u003c/div\u003e\\n                    \u003c/div\u003e\\n                    \u003cbutton type=\\\"submit\\\" class=\\\"button submit\\\"\u003e\u003c/button\u003e\\n                \u003c/form\u003e\\n\\n                \u003cbutton id=\\\"noThanksButton\\\" class=\\\"button close\\\"\u003e\u003c/button\u003e\\n\\n                \u003cp class=\\\"conditions\\\"\u003e\\n                    \u003cspan class=\\\"conditions-text\\\"\u003e\u003c/span\u003e\\n                    \u003ca href=\\\"#\\\" class=\\\"link conditions-link\\\"\u003e\u003c/a\u003e\\n                \u003c/p\u003e\\n            \u003c/div\u003e\\n        \u003c/div\u003e\\n\\n        \u003cdiv class=\\\"inner step-two\\\" style=\\\"display: none;\\\"\u003e\\n            \u003cdiv class=\\\"image-surround step-two-image-surround\\\"\u003e\\n                \u003cimg class=\\\"thank-you-image\\\" src=\\\"\\\" alt=\\\"\\\"/\u003e\\n            \u003c/div\u003e\\n            \u003cdiv class=\\\"form-inner\\\"\u003e\\n                \u003cp class=\\\"heading thank-you-heading\\\"\u003e\u003c/p\u003e\\n                \u003cp class=\\\"text thank-you-message\\\"\u003e\u003c/p\u003e\\n                \u003cp id=\\\"exponea-voucher\\\"\u003e\u003c/p\u003e\\n                \u003cbutton id=\\\"thankYouButton\\\" class=\\\"button close\\\"\u003e\u003c/button\u003e\\n            \u003c/div\u003e\\n        \u003c/div\u003e\\n    \u003c/div\u003e\\n\u003c/div\u003e\\n\";\ninsertBanner.style = \"#exponea-greyout {\\n  position: fixed;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  z-index: 2147482999;\\n  background-color: var(--greyout-color, rgba(0, 0, 0, 0.45));\\n}\\n\\n#exponea-greyout.is-inline {\\n  position: static;\\n  pointer-events: none;\\n  background-color: transparent;\\n}\\n\\n#exponea-greyout.no-greyout {\\n  pointer-events: none;\\n}\\n\\n.weblayer--box-subscription {\\n  display: flex;\\n  box-sizing: border-box;\\n  font-size: 1rem;\\n  line-height: normal;\\n  text-decoration: inherit;\\n  cursor: default;\\n  max-width: var(--box-width, 320px);\\n  max-height: 100vh;\\n  z-index: 2147483000;\\n  pointer-events: auto;\\n  width: var(--box-width, 320px);\\n  position: fixed;\\n  box-shadow: 0 0.25em 0.5em rgba(0, 0, 0, 0.4);\\n  border-radius: var(--box-border-radius, 8px);\\n  font-family: var(--font-family, Arial, Helvetica, sans-serif);\\n  background-color: var(--background-color, rgba(0, 0, 0, 0.2));\\n  background-image: var(--background-image, none);\\n  background-position: center center;\\n  background-repeat: no-repeat;\\n  background-size: cover;\\n  margin: var(--edge-offset, 10px);\\n}\\n\\n#exponea-greyout.is-inline .weblayer--box-subscription {\\n  position: relative;\\n  box-shadow: none;\\n}\\n\\n@media only screen and (max-width: 780px) {\\n  .weblayer--box-subscription {\\n    width: var(--box-width-mobile, 95%);\\n    margin: 0px;\\n  }\\n\\n  .weblayer--box-subscription.hide-image-mobile .image-surround {\\n    display: none;\\n  }\\n}\\n\\n.weblayer--box-subscription * {\\n  box-sizing: border-box;\\n  outline: none;\\n}\\n\\n.weblayer--box-subscription .inner {\\n  flex-wrap: nowrap;\\n  display: flex;\\n  width: 100%;\\n  margin: 0 auto;\\n  flex-direction: var(--image-direction, column);\\n  align-items: center;\\n  justify-content: center;\\n  padding: var(--inner-padding, 20px);\\n}\\n\\n.form-inner {\\n  padding: var(--inner-form-padding, 0px);\\n}\\n\\n.weblayer--box-subscription #exponea-form {\\n  width: 100%;\\n}\\n\\n.weblayer--box-subscription #exponea-form \u003e * {\\n  width: 100%;\\n}\\n\\n.weblayer--box-subscription p,\\n.weblayer--box-subscription h6 {\\n  text-align: var(--text-alignment, center);\\n}\\n\\n.weblayer--box-subscription .text.line-one {\\n  font-size: var(--text-line-one-size, 14px);\\n  font-weight: var(--text-line-one-weight, bold);\\n  line-height: 1.3;\\n  color: var(--text-line-one-color, #F84CAC);\\n  margin: 0;\\n  padding: 0 0 var(--text-line-one-spacing, 10px);\\n}\\n\\n.weblayer--box-subscription .heading {\\n  font-size: var(--heading-size, 14px);\\n  font-weight: var(--heading-weight, bold);\\n  line-height: 1.3;\\n  color: var(--heading-color, #FFFFFF);\\n  margin: 0;\\n  padding: 0 0 var(--heading-spacing, 10px);\\n}\\n\\n.weblayer--box-subscription .text.line-two {\\n  font-size: var(--main-text-size, 14px);\\n  font-weight: var(--main-text-weight, bold);\\n  line-height: 1.3;\\n  color: var(--main-text-color, #FFFFFF);\\n  margin: 0;\\n  padding: 0 0 var(--main-text-spacing, 10px);\\n}\\n\\n.weblayer--box-subscription .inner.step-one .conditions {\\n  width: 100%;\\n  line-height: 1.3;\\n  font-size: var(--conditions-size, 14px);\\n  font-weight: var(--conditions-weight, bold);\\n  color: var(--conditions-color, #FFFFFF);\\n  margin: 1.5em 0;\\n}\\n\\n.weblayer--box-subscription .inner.step-one .conditions \u003e .link {\\n  color: var(--conditions-link-color, #F84CAC);\\n  text-decoration: underline;\\n}\\n\\n.weblayer--box-subscription .inner.step-one .conditions \u003e .link:hover {\\n  filter: brightness(96%);\\n}\\n\\n.weblayer--box-subscription .inner.step-one .conditions \u003e .link:focus {\\n  outline: none;\\n}\\n\\n.weblayer--box-subscription .inner.step-two .heading {\\n  font-size: var(--thank-you-heading-size, 14px);\\n  font-weight: var(--thank-you-heading-weight, bold);\\n  line-height: 1.3;\\n  color: var(--thank-you-heading-color, #FFFFFF);\\n  margin: 0;\\n  padding: 0 0 var(--thank-you-heading-spacing, 10px);\\n}\\n\\n.weblayer--box-subscription .inner.step-two .text {\\n  font-size: var(--thank-you-message-size, 14px);\\n  font-weight: var(--thank-you-message-weight, bold);\\n  line-height: 1.3;\\n  color: var(--thank-you-message-color, #FFFFFF);\\n  margin: 0;\\n  padding: 0 0 var(--thank-you-message-spacing, 10px);\\n}\\n\\n.weblayer--box-subscription .image-surround {\\n  width: 100%;\\n}\\n\\n.weblayer--box-subscription .image-surround img {\\n  width: var(--image-width, 100%);\\n}\\n\\n.weblayer--box-subscription .image-surround img[src=\\\"\\\"] {\\n  display: none;\\n}\\n\\n.weblayer--box-subscription.hide-step-two-image .inner.step-two .image-surround {\\n  display: none;\\n}\\n\\n.input-label {\\n  display: var(--input-label-display, none);\\n  padding-bottom: 5px;\\n  font-size: var(--input-text-size, 14px);\\n  color: var(--main-text-color, #FFFFFF);\\n}\\n\\n#exponea-form fieldset {\\n  border: 0px;\\n  padding: 0px;\\n  margin: 0px 0px 10px;\\n}\\n\\n.weblayer--box-subscription #exponea-form input:not([type='checkbox']) {\\n  font-size: var(--input-text-size, 14px);\\n  font-weight: normal;\\n  text-align: left;\\n  line-height: 1.3;\\n  font-family: inherit;\\n  box-shadow: none;\\n  outline: none;\\n  width: 100%;\\n  min-height: auto;\\n  max-width: 100%;\\n  resize: vertical;\\n  margin: 0px;\\n  cursor: text;\\n  background-color: #FFFFFF;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--input-border-color, #FFFFFF);\\n  border-radius: var(--input-border-radius, 0px);\\n  padding: 0.5em 1em;\\n}\\n\\n.exponea-consents {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 8px;\\n  margin: 1em 0 1em;\\n}\\n\\n.exponea-consents .fieldset {\\n  width: 100%;\\n  margin: 0;\\n}\\n\\n.exponea-consents .checkbox-label {\\n  width: 100%;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: flex-start;\\n  justify-content: start;\\n  cursor: pointer;\\n}\\n\\n.exponea-consents .checkbox-label input {\\n  width: 18px !important;\\n  min-width: 18px;\\n  margin-top: 3px;\\n  cursor: pointer;\\n}\\n\\n.exponea-consents .consent-text {\\n  padding-left: 8px;\\n  font-size: var(--conditions-size, 14px);\\n  font-weight: var(--conditions-weight, bold);\\n  color: var(--conditions-color, #FFFFFF);\\n  line-height: 1.3;\\n  margin: 0;\\n  text-align: left;\\n}\\n\\n.exponea-consents .consent-link {\\n  color: var(--conditions-link-color, #F84CAC);\\n  text-decoration: underline;\\n}\\n\\n.exponea-consents .consent-link:hover {\\n  filter: brightness(96%);\\n}\\n\\n.weblayer--box-subscription .button {\\n  width: 100%;\\n  font-weight: bold;\\n  line-height: 1.3;\\n  font-family: inherit;\\n  border: none;\\n  text-decoration: none;\\n  margin: 0;\\n  user-select: none;\\n  outline: none;\\n  height: var(--button-height, 30px);\\n}\\n\\n.weblayer--box-subscription .button.submit,\\n.weblayer--box-subscription .step-two .button {\\n  border-style: solid;\\n  font-size: var(--button-text-size, 14px);\\n  color: var(--button-text-color, #FFFFFF);\\n  background: var(--button-background-color, #59CE72);\\n  border-width: var(--button-border-width, 0px);\\n  border-color: var(--button-border-color, rgba(0, 0, 0, 0));\\n  border-radius: var(--button-border-radius, 0px);\\n  cursor: pointer;\\n}\\n\\n.weblayer--box-subscription .step-one .button.close {\\n  border-style: solid;\\n  font-size: var(--no-thanks-text-size, 12px);\\n  color: var(--no-thanks-text-color, #FFFFFF);\\n  background: var(--no-thanks-background-color, rgba(0, 0, 0, 0));\\n  border-width: var(--no-thanks-border-width, 0px);\\n  border-color: var(--no-thanks-border-color, rgba(0, 0, 0, 0));\\n  border-radius: var(--no-thanks-border-radius, 0px);\\n  cursor: pointer;\\n  margin-top: 1em;\\n}\\n\\n.weblayer--box-subscription .button:hover {\\n  filter: brightness(105%);\\n}\\n\\n.weblayer--box-subscription .button:focus {\\n  outline: none;\\n  filter: brightness(95%);\\n}\\n\\n.weblayer--box-subscription #exponea-voucher {\\n  font-size: var(--heading-size, 14px);\\n  font-weight: bold;\\n  line-height: 1.3;\\n  color: var(--heading-color, #FFFFFF);\\n  text-align: center;\\n  margin: 10px auto;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n.weblayer--box-subscription #exponea-voucher i {\\n  display: inline-flex;\\n  flex-direction: row;\\n  align-items: center;\\n  padding-left: 5px;\\n}\\n\\n.weblayer--box-subscription .close-icon {\\n  font-size: inherit;\\n  line-height: 1px;\\n  color: transparent;\\n  background-color: transparent;\\n  top: 0;\\n  right: 0;\\n  padding: 0.5em;\\n  border: 0;\\n  position: absolute;\\n  z-index: 2147483001;\\n}\\n\\n.weblayer--box-subscription \u003e .close:hover {\\n  cursor: pointer;\\n}\\n\\n.weblayer--box-subscription \u003e .close:focus {\\n  outline: none;\\n}\\n\\n.weblayer--box-subscription.enter-fade {\\n  animation: fadeIn ease-in 0.2s;\\n}\\n\\n@keyframes fadeIn {\\n  0% { opacity: 0; }\\n  100% { opacity: 1; }\\n}\\n\\n.weblayer--box-subscription.vertical-top.horizontal-left.enter-slide-left { animation: slideInLeftVT cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInLeftVT { 0% { opacity: 0; transform: translateX(-100%); } 100% { opacity: 1; transform: translateX(0); } }\\n.weblayer--box-subscription.vertical-top.horizontal-center.enter-slide-up { animation: slideInUpVT cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInUpVT { 0% { opacity: 0; transform: translate(-50%, -100%); } 100% { opacity: 1; transform: translate(-50%, 0); } }\\n.weblayer--box-subscription.vertical-top.horizontal-right.enter-slide-right { animation: slideInRightVT cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInRightVT { 0% { opacity: 0; transform: translateX(100%); } 100% { opacity: 1; transform: translateX(0); } }\\n.weblayer--box-subscription.vertical-center.horizontal-left.enter-slide-left { animation: slideInLeftVC cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInLeftVC { 0% { opacity: 0; transform: translate(-100%, -50%); } 100% { opacity: 1; transform: translate(0, -50%); } }\\n.weblayer--box-subscription.vertical-center.horizontal-center.enter-slide-up { animation: slideInTopVC cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInTopVC { 0% { opacity: 0; transform: translate(-50%, -100%); } 100% { opacity: 1; transform: translate(-50%, -50%); } }\\n.weblayer--box-subscription.vertical-center.horizontal-right.enter-slide-right { animation: slideInRightVC cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInRightVC { 0% { opacity: 0; transform: translate(100%, -50%); } 100% { opacity: 1; transform: translate(0, -50%); } }\\n.weblayer--box-subscription.vertical-bottom.horizontal-left.enter-slide-left { animation: slideInLeftVB cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInLeftVB { 0% { opacity: 0; transform: translateX(-100%); } 100% { opacity: 1; transform: translateX(0); } }\\n.weblayer--box-subscription.vertical-bottom.horizontal-center.enter-slide-down { animation: slideInDownVB cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.75s; }\\n@keyframes slideInDownVB { 0% { opacity: 0; transform: translate(-50%, 100%); } 100% { opacity: 1; transform: translate(-50%, 0); } }\\n.weblayer--box-subscription.vertical-bottom.horizontal-right.enter-slide-right { animation: slideInRightVB cubic-bezier(0.56, 0.01, 0.42, 1.04) 0.25s; }\\n@keyframes slideInRightVB { 0% { opacity: 0; transform: translateX(100%); } 100% { opacity: 1; transform: translateX(0); } }\\n\\n.weblayer--box-subscription.horizontal-left { left: 0; }\\n.weblayer--box-subscription.horizontal-right { right: 0; }\\n.weblayer--box-subscription.horizontal-center { left: 50%; transform: translateX(-50%); }\\n.weblayer--box-subscription.vertical-top { top: 0; }\\n.weblayer--box-subscription.vertical-bottom { bottom: 0; }\\n.weblayer--box-subscription.vertical-center { top: 50%; transform: translateY(-50%); }\\n.weblayer--box-subscription.vertical-center.horizontal-center { transform: translate(-50%, -50%); }\\n\";\ninsertBanner.script = function() { // DEFAULT SETUP PARAMS\nvar PARAM_source = \"Knox Competition\";\nvar PARAM_newcastleConsentCategories = \"News,Tickets,Events,Store,Hospitality,WomensTeam\";\nvar PARAM_knoxConsentPropertyName = \"knox_hydrate_marketing_consent\";\nvar PARAM_identifyIdName = \"email_id\";\n\n// CTA PARAMS\nvar PARAM_enableNoThanks = \"no\";\nvar PARAM_enableThankYou = \"no\";\n\n// POSITION PARAMS\nvar PARAM_isInline = \"true\";\nvar PARAM_parentElement = \"#shopify-section-template--28870144000382__slideshow_bpCqXK\";\nvar PARAM_insertPosition = \"after\";\nvar PARAM_positionVertical = \"Bottom\";\nvar PARAM_positionHorizontal = \"Right\";\nvar PARAM_enterAnimation = \"None\";\n\n// LAYOUT PARAMS\nvar PARAM_boxWidth = \"100%\";\nvar PARAM_boxWidthMobile = \"100%\";\nvar PARAM_edgeOffset = \"0px\";\nvar PARAM_innerPadding = \"0px\";\nvar PARAM_innerFormPadding = \"20px\";\nvar PARAM_boxBorderRadius = \"0px\";\nvar PARAM_image = \"\";\nvar PARAM_imageWidth = \"100%\";\nvar PARAM_imagePosition = \"Vertical\";\nvar PARAM_imageStepTwo = \"false\";\nvar PARAM_imageMobile = \"false\";\n\n// BACKGROUND PARAMS\nvar PARAM_backgroundColor = \"#000000\";\nvar PARAM_backgroundImage = \"\";\nvar PARAM_greyout = \"rgba(0,0,0,0.29)\";\n\n// TRIGGERING PARAMS\nvar PARAM_showAfter = parseInt(\"0\", 10);\nvar PARAM_removeAfter = parseInt(\"0\", 10);\nvar PARAM_trigger = \"On entry\";\nvar PARAM_inactivityDelay = parseInt(\"0\", 10);\nvar PARAM_scrollSpeedThreshold = parseFloat(\"0\");\nvar PARAM_scrollDistanceThreshold = parseInt(\"0\", 10);\nvar PARAM_triggerAfterPage = 0;\n\n// COPYWRITING PARAMS\nvar PARAM_textLineOne = \"\";\nvar PARAM_heading = \"Enter to win a signed 26/27 Home Shirt and a 12-pack of Knox Hydrate!\";\nvar PARAM_textLineTwo = \"\";\nvar PARAM_buttonText = \"Enter now\";\nvar PARAM_noThanksText = \"No Thanks\";\nvar PARAM_conditionsText = \"The competition will run from 9am Thursday 30 July until 11:59pm Sunday 16 August. One winner will receive a signed 26/27 Home Shirt and a 12-pack of Knox Hydrate. Full Terms and Conditions can be found\";\nvar PARAM_conditionsLink = \"https://www.newcastleunited.com/en/privacy-policy\";\nvar PARAM_conditionsLinkText = \"here.\";\nvar PARAM_firstNameLabel = \"First Name\";\nvar PARAM_lastNameLabel = \"Last Name\";\nvar PARAM_emailInputPlaceholder = \"Email\";\nvar PARAM_invalidEmailMessage = \"Enter a valid email\";\nvar PARAM_thankYouHeading = \"You're in!\";\nvar PARAM_thankYouMessage = \"Thanks for entering and good luck. We'll be in touch if you're the lucky winner.\";\nvar PARAM_thankYouButtonText = \"Continue Shopping\";\nvar PARAM_consentNewcastleText = \"I want to receive updates from Newcastle United about news, tickets, retail offers and competitions. Please see Newcastle United's\";\nvar PARAM_consentNewcastleLinkText = \"privacy policy\";\nvar PARAM_consentKnoxText = \"I want to receive marketing from Knox Hydrate and understand that Newcastle United will share my details with them. Please see Knox Hydrate's\";\nvar PARAM_consentKnoxLinkText = \"privacy policy\";\n\n// TYPOGRAPHY PARAMS\nvar PARAM_textAlignment = \"center\";\nvar PARAM_textLineOneSize = \"14px\";\nvar PARAM_textLineOneWeight = \"bold\";\nvar PARAM_textLineOneSpacing = \"0px\";\nvar PARAM_textLineOneColor = \"#00ffaa\";\nvar PARAM_headingSize = \"20px\";\nvar PARAM_headingWeight = \"bold\";\nvar PARAM_headingSpacing = \"5px\";\nvar PARAM_headingColor = \"#00ffad\";\nvar PARAM_mainTextSize = \"14px\";\nvar PARAM_mainTextWeight = \"bold\";\nvar PARAM_mainTextSpacing = \"20px\";\nvar PARAM_mainTextColor = \"#FFFFFF\";\nvar PARAM_conditionsSize = \"16px\";\nvar PARAM_conditionsWeight = \"normal\";\nvar PARAM_conditionsColor = \"#ffffff\";\nvar PARAM_conditionsLinkColor = \"#ffffff\";\nvar PARAM_thankYouHeadingSize = \"22px\";\nvar PARAM_thankYouHeadingWeight = \"bold\";\nvar PARAM_thankYouHeadingColor = \"#ffffff\";\nvar PARAM_thankYouHeadingSpacing = \"10px\";\nvar PARAM_thankYouMessageSize = \"16px\";\nvar PARAM_thankYouMessageWeight = \"normal\";\nvar PARAM_thankYouMessageColor = \"#ffffff\";\nvar PARAM_thankYouMessageSpacing = \"10px\";\nvar PARAM_fontType = \"inherit\";\n\n// FORM STYLING PARAMS\nvar PARAM_showLabels = \"no\";\nvar PARAM_inputTextSize = \"14px\";\nvar PARAM_inputBorderColor = \"rgba(0,0,0,0)\";\nvar PARAM_inputBorderRadius = \"0px\";\nvar PARAM_buttonHeight = \"40px\";\nvar PARAM_buttonTextSize = \"14px\";\nvar PARAM_buttonTextColor = \"#000000\";\nvar PARAM_buttonBackgroundColor = \"#00ffad\";\nvar PARAM_buttonBorderWidth = \"0px\";\nvar PARAM_buttonBorderColor = \"rgba(255,255,255,0)\";\nvar PARAM_buttonBorderRadius = \"20px\";\nvar PARAM_noThanksTextSize = \"12px\";\nvar PARAM_noThanksTextColor = \"#ffffff\";\nvar PARAM_noThanksBackgroundColor = \"rgba(255,255,255,0)\";\nvar PARAM_noThanksBorderWidth = \"0px\";\nvar PARAM_noThanksBorderColor = \"#ffffff\";\nvar PARAM_noThanksBorderRadius = \"0px\";\nvar PARAM_closeIconColor = \"#000000\";\nvar PARAM_closeIconSize = parseInt(\"16\", 10);\n\n// ADVANCED PARAMS\nvar PARAM_enableVoucherCopyIcon = \"false\";\nvar PARAM_thankYouAutoHideDelay = parseInt(\"0\", 10);\nvar PARAM_nextWeblayerId = \"\";\nvar PARAM_isFinalWeblayer = \"No\";\nvar PARAM_disableShowEvent = \"false\";\nvar PARAM_voucherCode = \"\";\n\nvar CONFIG = {\n    setup: {\n        signupSource: PARAM_source,\n        newcastleConsentCategories: PARAM_newcastleConsentCategories,\n        knoxConsentPropertyName: PARAM_knoxConsentPropertyName,\n        identifyIdsToUpdate: PARAM_identifyIdName\n    },\n    position: {\n        displayInline: PARAM_isInline === 'true',\n        parentElement: PARAM_parentElement,\n        insertPosition: PARAM_insertPosition,\n        vertical: PARAM_positionVertical,\n        horizontal: PARAM_positionHorizontal,\n        enterAnimation: PARAM_enterAnimation\n    },\n    layout: {\n        boxWidth: PARAM_boxWidth,\n        boxWidthMobile: PARAM_boxWidthMobile,\n        edgeOffset: PARAM_edgeOffset,\n        innerOffset: PARAM_innerPadding,\n        formOffset: PARAM_innerFormPadding,\n        boxBorderRadius: PARAM_boxBorderRadius,\n        image: PARAM_image,\n        imageWidth: PARAM_imageWidth,\n        imagePosition: PARAM_imagePosition,\n        showImageOnThankYou: PARAM_imageStepTwo === 'true',\n        showImageOnMobile: PARAM_imageMobile === 'true'\n    },\n    background: {\n        backgroundColor: PARAM_backgroundColor,\n        backgroundImage: PARAM_backgroundImage,\n        backgroundOverlayColour: PARAM_greyout\n    },\n    copywriting: {\n        textLineOne: PARAM_textLineOne,\n        heading: PARAM_heading,\n        textLineTwo: PARAM_textLineTwo,\n        firstNameLabel: PARAM_firstNameLabel,\n        lastNameLabel: PARAM_lastNameLabel,\n        emailInputPlaceholder: PARAM_emailInputPlaceholder,\n        buttonText: PARAM_buttonText,\n        noThanksText: PARAM_noThanksText,\n        conditionsText: PARAM_conditionsText,\n        conditionsLink: PARAM_conditionsLink,\n        conditionsLinkText: PARAM_conditionsLinkText,\n        invalidEmailMessage: PARAM_invalidEmailMessage,\n        thankYouHeading: PARAM_thankYouHeading,\n        thankYouMessage: PARAM_thankYouMessage,\n        thankYouButtonText: PARAM_thankYouButtonText,\n        voucherCode: PARAM_voucherCode,\n        newcastleConsentText: PARAM_consentNewcastleText,\n        newcastleConsentLinkText: PARAM_consentNewcastleLinkText,\n        knoxConsentText: PARAM_consentKnoxText,\n        knoxConsentLinkText: PARAM_consentKnoxLinkText\n    },\n    typography: {\n        textAlignment: PARAM_textAlignment,\n        textLineOneSize: PARAM_textLineOneSize,\n        textLineOneWeight: PARAM_textLineOneWeight,\n        textLineOneBottomSpacing: PARAM_textLineOneSpacing,\n        textLineOneColor: PARAM_textLineOneColor,\n        headingSize: PARAM_headingSize,\n        headingWeight: PARAM_headingWeight,\n        headingBottomSpacing: PARAM_headingSpacing,\n        headingColor: PARAM_headingColor,\n        mainTextSize: PARAM_mainTextSize,\n        mainTextWeight: PARAM_mainTextWeight,\n        mainTextBottomSpacing: PARAM_mainTextSpacing,\n        mainTextColor: PARAM_mainTextColor,\n        conditionsSize: PARAM_conditionsSize,\n        conditionsWeight: PARAM_conditionsWeight,\n        conditionsColor: PARAM_conditionsColor,\n        conditionsLinkColor: PARAM_conditionsLinkColor,\n        thankYouHeadingSize: PARAM_thankYouHeadingSize,\n        thankYouHeadingWeight: PARAM_thankYouHeadingWeight,\n        thankYouHeadingColor: PARAM_thankYouHeadingColor,\n        thankYouHeadingSpacing: PARAM_thankYouHeadingSpacing,\n        thankYouMessageSize: PARAM_thankYouMessageSize,\n        thankYouMessageWeight: PARAM_thankYouMessageWeight,\n        thankYouMessageColor: PARAM_thankYouMessageColor,\n        thankYouMessageSpacing: PARAM_thankYouMessageSpacing,\n        font: PARAM_fontType\n    },\n    formStyling: {\n        showInputLabels: PARAM_showLabels,\n        inputTextSize: PARAM_inputTextSize,\n        inputBorderColor: PARAM_inputBorderColor,\n        inputBorderRadius: PARAM_inputBorderRadius,\n        buttonHeight: PARAM_buttonHeight,\n        submitButtonTextSize: PARAM_buttonTextSize,\n        submitButtonTextColor: PARAM_buttonTextColor,\n        submitButtonBackgroundColor: PARAM_buttonBackgroundColor,\n        submitButtonBorderWidth: PARAM_buttonBorderWidth,\n        submitButtonBorderColor: PARAM_buttonBorderColor,\n        submitButtonBorderRadius: PARAM_buttonBorderRadius,\n        noThanksTextSize: PARAM_noThanksTextSize,\n        noThanksTextColor: PARAM_noThanksTextColor,\n        noThanksBackgroundColor: PARAM_noThanksBackgroundColor,\n        noThanksBorderWidth: PARAM_noThanksBorderWidth,\n        noThanksBorderColor: PARAM_noThanksBorderColor,\n        noThanksBorderRadius: PARAM_noThanksBorderRadius,\n        closeIconSize: PARAM_closeIconSize,\n        closeIconColor: PARAM_closeIconColor\n    },\n    formContents: {\n        enableNoThanksButton: PARAM_enableNoThanks,\n        enableThankYouButton: PARAM_enableThankYou\n    },\n    triggering: {\n        showAfter: PARAM_showAfter,\n        removeAfter: PARAM_removeAfter,\n        trigger: PARAM_trigger,\n        exitIntentInactivityDelay: PARAM_inactivityDelay,\n        exitIntentScrollSpeedThreshold: PARAM_scrollSpeedThreshold,\n        exitIntentScrollDistanceThreshold: PARAM_scrollDistanceThreshold,\n        triggerAfterPage: PARAM_triggerAfterPage\n    },\n    advanced: {\n        enableVoucherCopyIcon: PARAM_enableVoucherCopyIcon === 'true',\n        autoHideDelay: PARAM_thankYouAutoHideDelay,\n        nextStepWeblayerID: PARAM_nextWeblayerId,\n        forceShowThankYouPage: PARAM_isFinalWeblayer,\n        disableShowEventTracking: PARAM_disableShowEvent === 'true'\n    }\n};\n\nvar self = this;\nvar bannerSemiId = Math.random().toString(36).substring(5);\nvar positions = {\n    before: 'beforebegin',\n    'first child': 'afterbegin',\n    'last child': 'beforeend',\n    after: 'afterend'\n};\nvar insertPosition = positions[CONFIG.position.insertPosition] || 'afterbegin';\n\nwindow['__exp_triggered-' + bannerSemiId] = false;\n\nif (self.inPreview) {\n    CONFIG.triggering.showAfter = 0;\n    CONFIG.position.parentElement = 'body';\n    CONFIG.triggering.trigger = 'On entry';\n}\n\nfunction registerStartTrigger() {\n    if (CONFIG.triggering.trigger === 'On exit') {\n        setTimeout(function () {\n            desktopExit();\n            inactivityTime();\n            if (window.matchMedia('(max-width: 768px)').matches) {\n                detectFastScrollUp(CONFIG.triggering.exitIntentScrollSpeedThreshold, CONFIG.triggering.exitIntentScrollDistanceThreshold, function() {\n                    if (!window['__exp_triggered-' + bannerSemiId]) {\n                        window['__exp_triggered-' + bannerSemiId] = true;\n                        scheduleShowBanner();\n                    }\n                });\n            }\n        }, CONFIG.triggering.showAfter);\n    } else if (CONFIG.triggering.trigger === 'On scroll') {\n        window.addEventListener('scroll', scheduleShowBanner);\n    } else {\n        scheduleShowBanner();\n    }\n}\n\nfunction scheduleShowBanner() {\n    window.removeEventListener('scroll', scheduleShowBanner);\n    setTimeout(function() {\n        if (!CONFIG.advanced.disableShowEventTracking) {\n            trackEvent('show', false);\n        }\n        requestAnimationFrame(createBanner);\n        if (CONFIG.triggering.removeAfter \u003e 0) {\n            setTimeout(removeBanner, CONFIG.triggering.removeAfter);\n        }\n    }, CONFIG.triggering.showAfter);\n}\n\nfunction createBanner() {\n    var parentElement = document.querySelector(CONFIG.position.parentElement);\n    parentElement.insertAdjacentHTML('afterbegin', self.html);\n    self.banner = parentElement.firstElementChild;\n\n    applyConfigToBanner(self.banner);\n\n    self.banner.querySelectorAll('.close').forEach(function(input) {\n        input.onclick = handleCloseButtonClick;\n    });\n\n    if (CONFIG.formContents.enableNoThanksButton === 'no' \u0026\u0026 self.banner.querySelector('#noThanksButton')) {\n        self.banner.querySelector('#noThanksButton').remove();\n    }\n    if (CONFIG.formContents.enableThankYouButton === 'no' \u0026\u0026 self.banner.querySelector('#thankYouButton')) {\n        self.banner.querySelector('#thankYouButton').remove();\n    }\n\n    self.banner.querySelector('.banner-item').className += ' ' + getPositionAndAnimationClasses();\n    self.banner.insertAdjacentHTML('afterbegin', '\u003cstyle\u003e' + self.style + '\u003c/style\u003e');\n\n    var links = self.banner.querySelectorAll('a');\n    for (var i = 0; i \u003c links.length; i++) {\n        trackLink(links[i], 'click', true);\n    }\n\n    if (window.getComputedStyle(self.banner).getPropertyValue('background-color').replaceAll(' ', '').split(',')[3] === '0)') {\n        self.banner.classList.add('no-greyout');\n    } else {\n        self.banner.onclick = handleCloseBackgroundClick;\n    }\n\n    if (CONFIG.advanced.forceShowThankYouPage === 'Yes') {\n        showThankYou(self.banner);\n    }\n\n    initializeForm(self.banner);\n    attachBannerToDom(self.banner);\n}\n\nfunction applyConfigToBanner(banner) {\n    var root = banner;\n    var box = banner.querySelector('.weblayer--box-subscription');\n    var closeSvg = banner.querySelector('.close-icon-svg');\n    var closePaths = banner.querySelectorAll('.close-icon-svg path');\n\n    setCssVar(root, '--box-width', CONFIG.layout.boxWidth);\n    setCssVar(root, '--box-width-mobile', CONFIG.layout.boxWidthMobile);\n    setCssVar(root, '--edge-offset', CONFIG.layout.edgeOffset);\n    setCssVar(root, '--inner-padding', CONFIG.layout.innerOffset);\n    setCssVar(root, '--inner-form-padding', CONFIG.layout.formOffset);\n    setCssVar(root, '--box-border-radius', CONFIG.layout.boxBorderRadius);\n    setCssVar(root, '--greyout-color', CONFIG.background.backgroundOverlayColour);\n    setCssVar(root, '--background-color', CONFIG.background.backgroundColor);\n    setCssVar(root, '--background-image', CONFIG.background.backgroundImage ? 'url(\"' + CONFIG.background.backgroundImage + '\")' : 'none');\n    setCssVar(root, '--image-width', CONFIG.layout.imageWidth);\n    setCssVar(root, '--image-direction', CONFIG.layout.imagePosition === 'Horizontal' ? 'row' : 'column');\n    setCssVar(root, '--font-family', CONFIG.typography.font);\n    setCssVar(root, '--text-alignment', CONFIG.typography.textAlignment);\n    setCssVar(root, '--text-line-one-size', CONFIG.typography.textLineOneSize);\n    setCssVar(root, '--text-line-one-weight', CONFIG.typography.textLineOneWeight);\n    setCssVar(root, '--text-line-one-spacing', CONFIG.typography.textLineOneBottomSpacing);\n    setCssVar(root, '--text-line-one-color', CONFIG.typography.textLineOneColor);\n    setCssVar(root, '--heading-size', CONFIG.typography.headingSize);\n    setCssVar(root, '--heading-weight', CONFIG.typography.headingWeight);\n    setCssVar(root, '--heading-spacing', CONFIG.typography.headingBottomSpacing);\n    setCssVar(root, '--heading-color', CONFIG.typography.headingColor);\n    setCssVar(root, '--main-text-size', CONFIG.typography.mainTextSize);\n    setCssVar(root, '--main-text-weight', CONFIG.typography.mainTextWeight);\n    setCssVar(root, '--main-text-spacing', CONFIG.typography.mainTextBottomSpacing);\n    setCssVar(root, '--main-text-color', CONFIG.typography.mainTextColor);\n    setCssVar(root, '--conditions-size', CONFIG.typography.conditionsSize);\n    setCssVar(root, '--conditions-weight', CONFIG.typography.conditionsWeight);\n    setCssVar(root, '--conditions-color', CONFIG.typography.conditionsColor);\n    setCssVar(root, '--conditions-link-color', CONFIG.typography.conditionsLinkColor);\n    setCssVar(root, '--thank-you-heading-size', CONFIG.typography.thankYouHeadingSize);\n    setCssVar(root, '--thank-you-heading-weight', CONFIG.typography.thankYouHeadingWeight);\n    setCssVar(root, '--thank-you-heading-color', CONFIG.typography.thankYouHeadingColor);\n    setCssVar(root, '--thank-you-heading-spacing', CONFIG.typography.thankYouHeadingSpacing);\n    setCssVar(root, '--thank-you-message-size', CONFIG.typography.thankYouMessageSize);\n    setCssVar(root, '--thank-you-message-weight', CONFIG.typography.thankYouMessageWeight);\n    setCssVar(root, '--thank-you-message-color', CONFIG.typography.thankYouMessageColor);\n    setCssVar(root, '--thank-you-message-spacing', CONFIG.typography.thankYouMessageSpacing);\n    setCssVar(root, '--input-label-display', CONFIG.formStyling.showInputLabels === 'yes' ? 'block' : 'none');\n    setCssVar(root, '--input-text-size', CONFIG.formStyling.inputTextSize);\n    setCssVar(root, '--input-border-color', CONFIG.formStyling.inputBorderColor);\n    setCssVar(root, '--input-border-radius', CONFIG.formStyling.inputBorderRadius);\n    setCssVar(root, '--button-height', CONFIG.formStyling.buttonHeight);\n    setCssVar(root, '--button-text-size', CONFIG.formStyling.submitButtonTextSize);\n    setCssVar(root, '--button-text-color', CONFIG.formStyling.submitButtonTextColor);\n    setCssVar(root, '--button-background-color', CONFIG.formStyling.submitButtonBackgroundColor);\n    setCssVar(root, '--button-border-width', CONFIG.formStyling.submitButtonBorderWidth);\n    setCssVar(root, '--button-border-color', CONFIG.formStyling.submitButtonBorderColor);\n    setCssVar(root, '--button-border-radius', CONFIG.formStyling.submitButtonBorderRadius);\n    setCssVar(root, '--no-thanks-text-size', CONFIG.formStyling.noThanksTextSize);\n    setCssVar(root, '--no-thanks-text-color', CONFIG.formStyling.noThanksTextColor);\n    setCssVar(root, '--no-thanks-background-color', CONFIG.formStyling.noThanksBackgroundColor);\n    setCssVar(root, '--no-thanks-border-width', CONFIG.formStyling.noThanksBorderWidth);\n    setCssVar(root, '--no-thanks-border-color', CONFIG.formStyling.noThanksBorderColor);\n    setCssVar(root, '--no-thanks-border-radius', CONFIG.formStyling.noThanksBorderRadius);\n\n    setText(banner, '.text.line-one', CONFIG.copywriting.textLineOne);\n    setText(banner, '.heading', CONFIG.copywriting.heading);\n    setText(banner, '.text.line-two', CONFIG.copywriting.textLineTwo);\n    setText(banner, '.firstname-label', CONFIG.copywriting.firstNameLabel);\n    setText(banner, '.lastname-label', CONFIG.copywriting.lastNameLabel);\n    setText(banner, '.email-label', CONFIG.copywriting.emailInputPlaceholder);\n    setText(banner, '.button.submit', CONFIG.copywriting.buttonText);\n    setText(banner, '#noThanksButton', CONFIG.copywriting.noThanksText);\n    setText(banner, '.conditions-text', CONFIG.copywriting.conditionsText + ' ');\n    setText(banner, '.conditions-link', CONFIG.copywriting.conditionsLinkText);\n    setText(banner, '.thank-you-heading', CONFIG.copywriting.thankYouHeading);\n    setText(banner, '.thank-you-message', CONFIG.copywriting.thankYouMessage);\n    setText(banner, '#thankYouButton', CONFIG.copywriting.thankYouButtonText);\n    setText(banner, '#exponea-voucher', CONFIG.copywriting.voucherCode);\n    setText(banner, '.newcastle-consent-text', CONFIG.copywriting.newcastleConsentText + ' ');\n    setText(banner, '.newcastle-consent-link', CONFIG.copywriting.newcastleConsentLinkText);\n    setText(banner, '.knox-consent-text', CONFIG.copywriting.knoxConsentText + ' ');\n    setText(banner, '.knox-consent-link', CONFIG.copywriting.knoxConsentLinkText);\n\n    setAttribute(banner, '.first_name', 'placeholder', CONFIG.copywriting.firstNameLabel);\n    setAttribute(banner, '.last_name', 'placeholder', CONFIG.copywriting.lastNameLabel);\n    setAttribute(banner, '.email', 'placeholder', CONFIG.copywriting.emailInputPlaceholder);\n    setAttribute(banner, '.conditions-link', 'href', CONFIG.copywriting.conditionsLink);\n    setAttribute(banner, '.main-image', 'src', CONFIG.layout.image);\n    setAttribute(banner, '.thank-you-image', 'src', CONFIG.layout.image);\n\n    if (closeSvg) {\n        closeSvg.setAttribute('width', CONFIG.formStyling.closeIconSize);\n        closeSvg.setAttribute('height', CONFIG.formStyling.closeIconSize);\n    }\n    closePaths.forEach(function(path) {\n        path.setAttribute('stroke', CONFIG.formStyling.closeIconColor);\n    });\n\n    if (CONFIG.position.displayInline) {\n        banner.classList.add('is-inline');\n    }\n    if (!CONFIG.layout.showImageOnThankYou \u0026\u0026 box) {\n        box.classList.add('hide-step-two-image');\n    }\n    if (!CONFIG.layout.showImageOnMobile \u0026\u0026 box) {\n        box.classList.add('hide-image-mobile');\n    }\n}\n\nfunction setCssVar(element, name, value) {\n    element.style.setProperty(name, value);\n}\n\nfunction setText(parent, selector, value) {\n    var element = parent.querySelector(selector);\n    if (element) {\n        element.textContent = value || '';\n    }\n}\n\nfunction setAttribute(parent, selector, attribute, value) {\n    var element = parent.querySelector(selector);\n    if (element) {\n        element.setAttribute(attribute, value || '');\n    }\n}\n\nfunction attachBannerToDom(banner) {\n    var parentElement = document.querySelector(CONFIG.position.parentElement);\n    parentElement.insertAdjacentElement(insertPosition, banner);\n    self.banner = banner;\n}\n\nfunction removeBanner() {\n    if (self.banner \u0026\u0026 self.banner.parentNode) {\n        self.banner.parentNode.removeChild(self.banner);\n    }\n}\n\nfunction handleCloseButtonClick(event) {\n    removeBanner();\n    trackEvent('close', true);\n    event.preventDefault();\n    if (event.stopPropagation) {\n        event.stopPropagation();\n    } else {\n        event.cancelBubble = true;\n    }\n    return false;\n}\n\nfunction handleCloseBackgroundClick(event) {\n    if (event.target !== event.currentTarget) {\n        return;\n    }\n    removeBanner();\n    trackEvent('close', true);\n    event.preventDefault();\n    if (event.stopPropagation) {\n        event.stopPropagation();\n    } else {\n        event.cancelBubble = true;\n    }\n    return false;\n}\n\nfunction trackEvent(action, interactive) {\n    if (!self.sdk || !self.sdk.track) {\n        return;\n    }\n    self.sdk.track('banner', getEventProperties(action, interactive));\n}\n\nfunction trackLink(link, action, interactive) {\n    if (!self.sdk || !self.sdk.trackLink) {\n        return;\n    }\n    var eventData = getEventProperties(action, interactive);\n    eventData.link = link.href;\n    self.sdk.trackLink(link, 'banner', eventData);\n}\n\nfunction getEventProperties(action, interactive) {\n    return {\n        action: action,\n        banner_id: self.data.banner_id,\n        banner_name: self.data.banner_name,\n        banner_type: self.data.banner_type,\n        variant_id: self.data.variant_id,\n        variant_name: self.data.variant_name,\n        variant_origin: self.data.contextual_personalization != null ? 'contextual personalisation' : 'ABtest',\n        interaction: interactive !== false\n    };\n}\n\nfunction getPositionAndAnimationClasses() {\n    var verticalClass = {\n        Top: 'vertical-top',\n        Center: 'vertical-center',\n        Bottom: 'vertical-bottom'\n    }[CONFIG.position.vertical] || '';\n\n    var horizontalClass = {\n        Left: 'horizontal-left',\n        Center: 'horizontal-center',\n        Right: 'horizontal-right'\n    }[CONFIG.position.horizontal] || '';\n\n    var enterAnimationClass = {\n        'Fade in': 'enter-fade',\n        'Slide in': {\n            Top: {\n                Left: 'enter-slide-left',\n                Center: 'enter-slide-up',\n                Right: 'enter-slide-right'\n            }[CONFIG.position.horizontal],\n            Center: {\n                Left: 'enter-slide-left',\n                Center: 'enter-slide-up',\n                Right: 'enter-slide-right'\n            }[CONFIG.position.horizontal],\n            Bottom: {\n                Left: 'enter-slide-left',\n                Center: 'enter-slide-down',\n                Right: 'enter-slide-right'\n            }[CONFIG.position.horizontal]\n        }[CONFIG.position.vertical]\n    }[CONFIG.position.enterAnimation] || '';\n\n    return verticalClass + ' ' + horizontalClass + ' ' + enterAnimationClass;\n}\n\nfunction getExponeaTarget() {\n    if (window.exponea \u0026\u0026 window.exponea.configuration \u0026\u0026 window.exponea.configuration.target) {\n        return String(window.exponea.configuration.target).replace(/\\/$/, '');\n    }\n    if (self.sdk \u0026\u0026 self.sdk.configuration \u0026\u0026 self.sdk.configuration.target) {\n        return String(self.sdk.configuration.target).replace(/\\/$/, '');\n    }\n    return null;\n}\n\nfunction getExponeaToken() {\n    if (window.exponea \u0026\u0026 window.exponea.configuration \u0026\u0026 window.exponea.configuration.token) {\n        return window.exponea.configuration.token;\n    }\n    if (self.sdk \u0026\u0026 self.sdk.configuration \u0026\u0026 self.sdk.configuration.token) {\n        return self.sdk.configuration.token;\n    }\n    return null;\n}\n\nfunction getConfiguredEmailIdName() {\n    var idNames = stringToArray(CONFIG.setup.identifyIdsToUpdate);\n    return idNames[0] || 'email_id';\n}\n\nfunction sendFormViaBulk(eventProperties, customerProperties, customerIds) {\n    var target = getExponeaTarget();\n    var token = getExponeaToken();\n\n    if (!target || !token) {\n        console.error('Exponea target/token unavailable, form submit aborted.');\n        return Promise.reject(new Error('Missing Exponea configuration'));\n    }\n\n    var commands = [\n        {\n            name: 'crm/events',\n            data: {\n                customer_ids: customerIds,\n                company_id: token,\n                type: 'banner',\n                properties: eventProperties\n            }\n        }\n    ];\n\n    if (Object.keys(customerIds).length || Object.keys(customerProperties).length) {\n        commands.push({\n            name: 'crm/customers',\n            data: {\n                customer_ids: customerIds,\n                company_id: token,\n                properties: customerProperties\n            }\n        });\n    }\n\n    var payload = {\n        sdk: 'js-client',\n        sdk_snippet_version: self.sdk \u0026\u0026 self.sdk.snippetVersion ? self.sdk.snippetVersion : undefined,\n        commands: commands\n    };\n\n    return fetch(target + '/bulk', {\n        method: 'POST',\n        headers: {\n            'Content-Type': 'application/json'\n        },\n        body: JSON.stringify(payload)\n    }).then(function(response) {\n        if (!response.ok) {\n            return response.text().then(function(text) {\n                throw new Error('Bulk submit failed: ' + response.status + ' ' + response.statusText + ' :: ' + text);\n            });\n        }\n        return response;\n    }).catch(function(error) {\n        console.error('Error sending form via /bulk:', error);\n        throw error;\n    });\n}\n\nfunction initializeForm(banner) {\n    var emailInput = banner.querySelector('input[name=\"email\"]') || undefined;\n    var firstNameInput = banner.querySelector('input[name=\"first_name\"]') || undefined;\n    var lastNameInput = banner.querySelector('input[name=\"last_name\"]') || undefined;\n    var newcastleConsentInput = banner.querySelector('input[name=\"consent_newcastle\"]') || undefined;\n    var knoxConsentInput = banner.querySelector('input[name=\"consent_knox\"]') || undefined;\n\n    if (typeof emailInput !== 'undefined') {\n        emailInput.oninput = function() {\n            toggleInvalidState(false, banner, emailInput);\n        };\n    }\n\n    var form = banner.querySelector('#exponea-form');\n\n    form.onsubmit = function(event) {\n        event.preventDefault();\n\n        var email = String((emailInput \u0026\u0026 emailInput.value) || '').trim().toLowerCase();\n        if (!validateEmail(email)) {\n            toggleInvalidState(true, banner, emailInput, CONFIG.copywriting.invalidEmailMessage);\n            return false;\n        }\n\n        var firstName = String((firstNameInput \u0026\u0026 firstNameInput.value) || '').trim();\n        var lastName = String((lastNameInput \u0026\u0026 lastNameInput.value) || '').trim();\n        var newcastleConsent = !!(newcastleConsentInput \u0026\u0026 newcastleConsentInput.checked);\n        var knoxConsent = !!(knoxConsentInput \u0026\u0026 knoxConsentInput.checked);\n\n        var emailIdName = getConfiguredEmailIdName();\n        var customerIds = {};\n        customerIds[emailIdName] = email;\n\n        var eventProperties = getEventProperties('subscribe', true);\n        eventProperties.sign_up_source = CONFIG.setup.signupSource || self.data.banner_name;\n        eventProperties.email = email;\n        eventProperties.email_submitted = true;\n\n        if (firstName) {\n            eventProperties.first_name = firstName;\n        }\n        if (lastName) {\n            eventProperties.last_name = lastName;\n        }\n\n        // Newcastle tick box only: feeds consent_category so the existing\n        // consent Scenario (same pattern as home/away kit) creates the\n        // real consent event.\n        var newcastleCategories = stringToArray(CONFIG.setup.newcastleConsentCategories);\n        if (newcastleConsent \u0026\u0026 newcastleCategories.length) {\n            eventProperties.consent_category = newcastleCategories;\n        }\n        \n        eventProperties.newcastle_marketing_opt_in = newcastleConsent;\n\n        // Knox tick box: identification/export only, no consent event.\n        eventProperties.knox_marketing_opt_in = knoxConsent;\n\n        var customerProperties = {\n            email: email\n        };\n        customerProperties[emailIdName] = email;\n        if (firstName) {\n            customerProperties.first_name = firstName;\n        }\n        if (lastName) {\n            customerProperties.last_name = lastName;\n        }\n        if (knoxConsent) {\n            customerProperties[CONFIG.setup.knoxConsentPropertyName || 'knox_hydrate_marketing_consent'] = true;\n        }\n\n        var submitButton = form.querySelector('button[type=\"submit\"]');\n        if (submitButton) {\n            submitButton.disabled = true;\n        }\n\n        sendFormViaBulk(eventProperties, customerProperties, customerIds)\n            .then(function() {\n                if (CONFIG.advanced.nextStepWeblayerID \u0026\u0026 CONFIG.advanced.nextStepWeblayerID !== 'None') {\n                    if (self.sdk \u0026\u0026 self.sdk.showBanner) {\n                        self.sdk.showBanner(CONFIG.advanced.nextStepWeblayerID, {}, true, function() {\n                            removeBanner();\n                        });\n                    } else {\n                        showThankYou(banner);\n                    }\n                } else {\n                    showThankYou(banner);\n                }\n            })\n            .catch(function(error) {\n                console.error('Bulk submit failed', error);\n            })\n            .finally(function() {\n                if (submitButton) {\n                    submitButton.disabled = false;\n                }\n            });\n\n        return false;\n    };\n}\n\nfunction showThankYou(banner) {\n    var stepOne = banner.querySelector('.step-one');\n    var stepTwo = banner.querySelector('.step-two');\n    stepOne.style.display = 'none';\n    stepTwo.style.display = 'block';\n\n    var autoHideDelay = CONFIG.advanced.autoHideDelay === 0 ? 999999 : CONFIG.advanced.autoHideDelay;\n\n    if (CONFIG.advanced.enableVoucherCopyIcon) {\n        var textDisplay = banner.querySelector('.step-two #exponea-voucher');\n        if (!textDisplay || !textDisplay.textContent.trim()) {\n            setTimeout(removeBanner, autoHideDelay);\n            return;\n        }\n        var copyIcon = document.createElement('i');\n        copyIcon.innerHTML = '\u003c?xml version=\"1.0\" ?\u003e\u003csvg class=\"feather feather-copy\" fill=\"none\" height=\"20\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003crect height=\"13\" rx=\"2\" ry=\"2\" width=\"13\" x=\"9\" y=\"9\"/\u003e\u003cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/\u003e\u003c/svg\u003e';\n        textDisplay.appendChild(copyIcon);\n        banner.querySelector('#exponea-voucher').addEventListener('click', function(e) {\n            e.preventDefault();\n            copyTextToClipboard(banner.querySelector('#exponea-voucher').textContent);\n            copyIcon.innerHTML = '\u003c?xml version=\"1.0\" ?\u003e\u003csvg class=\"feather feather-check\" fill=\"none\" height=\"20\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"/\u003e\u003c/svg\u003e';\n            window.setTimeout(function() {\n                copyIcon.innerHTML = '\u003c?xml version=\"1.0\" ?\u003e\u003csvg class=\"feather feather-copy\" fill=\"none\" height=\"20\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003crect height=\"13\" rx=\"2\" ry=\"2\" width=\"13\" x=\"9\" y=\"9\"/\u003e\u003cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/\u003e\u003c/svg\u003e';\n            }, 1500);\n        });\n    }\n\n    setTimeout(removeBanner, autoHideDelay);\n}\n\nfunction fallbackCopyTextToClipboard(text) {\n    var textArea = document.createElement('textarea');\n    textArea.value = text;\n    textArea.style.top = '0';\n    textArea.style.left = '0';\n    textArea.style.position = 'fixed';\n    document.body.appendChild(textArea);\n    textArea.focus();\n    textArea.select();\n    try {\n        document.execCommand('copy');\n    } catch (err) {}\n    document.body.removeChild(textArea);\n}\n\nfunction copyTextToClipboard(text) {\n    if (!navigator.clipboard) {\n        fallbackCopyTextToClipboard(text);\n        return;\n    }\n    navigator.clipboard.writeText(text);\n}\n\nfunction toggleInvalidState(invalid, banner, input, message) {\n    input.setCustomValidity(invalid ? message : '');\n    input.reportValidity();\n}\n\nfunction detectFastScrollUp(scrollSpeedThreshold, scrollDistanceThreshold, callback) {\n    var lastScrollY = window.scrollY;\n    var lastTimestamp = performance.now();\n    var scrollingUp = false;\n    function handleScroll() {\n        var currentTimestamp = performance.now();\n        var timePassed = currentTimestamp - lastTimestamp;\n        if (timePassed \u003e 0) {\n            var currentScrollY = window.scrollY;\n            var scrollDistance = currentScrollY - lastScrollY;\n            var scrollSpeed = Math.abs(scrollDistance / timePassed);\n            scrollingUp = scrollDistance \u003c 0;\n            if (scrollSpeed \u003e scrollSpeedThreshold \u0026\u0026 scrollingUp \u0026\u0026 Math.abs(scrollDistance) \u003e scrollDistanceThreshold) {\n                callback();\n            }\n            lastScrollY = currentScrollY;\n            lastTimestamp = currentTimestamp;\n        }\n    }\n    window.addEventListener('scroll', handleScroll);\n}\n\nfunction inactivityTime() {\n    var t;\n    resetTimer();\n    document.addEventListener('mousemove', resetTimer);\n    document.addEventListener('keypress', resetTimer);\n    document.addEventListener('touch', resetTimer);\n    document.addEventListener('scroll', resetTimer);\n    window.addEventListener('focus', resetTimer);\n\n    function exitIntentDetected() {\n        if (!window['__exp_inactive_trigger-' + bannerSemiId]) {\n            window['__exp_inactive_trigger-' + bannerSemiId] = true;\n        }\n    }\n\n    function resetTimer() {\n        clearTimeout(t);\n        t = setTimeout(exitIntentDetected, CONFIG.triggering.exitIntentInactivityDelay);\n        if (!window['__exp_triggered-' + bannerSemiId] \u0026\u0026 window['__exp_inactive_trigger-' + bannerSemiId]) {\n            window['__exp_triggered-' + bannerSemiId] = true;\n            scheduleShowBanner();\n        }\n        window['__exp_inactive_trigger-' + bannerSemiId] = false;\n    }\n}\n\nfunction desktopExit() {\n    document.body.addEventListener('mouseout', function(e) {\n        e = e || window.event;\n        var vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n        if (e.clientX \u003e= vpWidth) {\n            return;\n        }\n        if (e.clientY \u003e= 50) {\n            return;\n        }\n        var from = e.relatedTarget || e.toElement;\n        if (!from \u0026\u0026 !window['__exp_triggered-' + bannerSemiId]) {\n            window['__exp_triggered-' + bannerSemiId] = true;\n            scheduleShowBanner();\n        }\n    });\n}\n\nfunction validateEmail(email) {\n    return email \u0026\u0026 /^\\S+@\\S+\\.\\S+$/.test(email);\n}\n\nfunction stringToArray(string) {\n    return (string || '').split(',').map(function(item) {\n        return item.trim();\n    }).filter(function(item) {\n        return !!item;\n    });\n}\n\nregisterStartTrigger();\nreturn {\n    remove: removeBanner\n};\n };\ninsertBanner.remove = (insertBanner.script.call(insertBanner) || {} ).remove;\ninsertBanner.contextual_personalization = {};\nreturn insertBanner;\n})({\"banner_id\": \"6a638be841be12201ab8ba72\", \"banner_name\": null, \"banner_type\": \"medium_rectangle\", \"banner_group\": \"\", \"variant_id\": 0, \"variant_name\": \"Variant A\"});","variables_target":null,"page_vars":[]}],"experiments":[],"constantManagedTags":[],"vars":{"data":[]}}