var gtm4wp_datalayer_name = "dataLayer";
var dataLayer = dataLayer || [];
const gtm4wp_use_sku_instead = 0;
const gtm4wp_currency = 'GBP';
const gtm4wp_product_per_impression = 10;
const gtm4wp_clear_ecommerce = false;
const gtm4wp_datalayer_max_timeout = 2000;
var elementskit = {
resturl: 'https://discountcctvsupplier.co.uk/wp-json/elementskit/v1/',
}
https://discountcctvsupplier.co.uk/wp-includes/js/jquery/jquery.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/jquery/jquery-migrate.min.js
var breeze_prefetch = {"local_url":"https://discountcctvsupplier.co.uk","ignore_remote_prefetch":"1","ignore_list":["/?wc-api=wc_facebook_get_feed_data&secret=697cc5a9ab0fb1e0d243fe98264ced80","/cart-2/","/checkout/","/my-account/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js
var tt4b_script_vars = {"pixel_code":"D6JC3HJC77UCBL6SE0N0","currency":"GBP","country":"","advanced_matching":""};
//# sourceURL=tt4b_ajax_script-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/tiktok-for-business/admin/js/ajaxSnippet.js
var trustpilot_settings = {"key":"Qg0H72wIu14emb5P","TrustpilotScriptUrl":"https://invitejs.trustpilot.com/tp.min.js","IntegrationAppUrl":"//ecommscript-integrationapp.trustpilot.com","PreviewScriptUrl":"//ecommplugins-scripts.trustpilot.com/v2.1/js/preview.min.js","PreviewCssUrl":"//ecommplugins-scripts.trustpilot.com/v2.1/css/preview.min.css","PreviewWPCssUrl":"//ecommplugins-scripts.trustpilot.com/v2.1/css/preview_wp.css","WidgetScriptUrl":"//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js"};
//# sourceURL=tp-js-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/trustpilot-reviews/review/assets/js/headerScript.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/zoom/jquery.zoom.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/flexslider/jquery.flexslider.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/photoswipe/photoswipe.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/photoswipe/photoswipe-ui-default.min.js
var wc_single_product_params = {"i18n_required_rating_text":"Please select a rating","i18n_rating_options":["1 of 5 stars","2 of 5 stars","3 of 5 stars","4 of 5 stars","5 of 5 stars"],"i18n_product_gallery_trigger_text":"View full-screen image gallery","review_rating_required":"yes","flexslider":{"rtl":false,"animation":"slide","smoothHeight":true,"directionNav":false,"controlNav":"thumbnails","slideshow":false,"animationSpeed":500,"animationLoop":false,"allowOneSlide":false},"zoom_enabled":"1","zoom_options":[],"photoswipe_enabled":"1","photoswipe_options":{"shareEl":false,"closeOnScroll":false,"history":false,"hideAnimationDuration":0,"showAnimationDuration":0},"flexslider_enabled":"1"};
//# sourceURL=wc-single-product-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/single-product.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js
var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"};
//# sourceURL=woocommerce-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/wt-woocommerce-related-products/public/js/custom-related-products-public.js
https://discountcctvsupplier.co.uk/wp-content/plugins/wt-woocommerce-related-products/public/js/wt_owl_carousel.js
var dataLayer_content = {"pagePostType":"product","pagePostType2":"single-product","pagePostAuthor":"aaaadmin","productRatingCounts":[],"productAverageRating":0,"productReviewCount":0,"productType":"simple","productIsVariable":0};
dataLayer.push( dataLayer_content );
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
window.FacebookSignals = window.FacebookSignals || {
_held: false,
_releasing: false,
_pixelInitialized: false,
_pixelId: null,
_pixelUserInfo: {},
_pixelOptions: {},
_pendingPixelEvents: [],
_queue: [],
_config: {},
_attribution: {},
_seenEventIds: {},
_fbclid: (function() {
try {
var m = window.location.search.match(/[?&]fbclid=([^&]*)/);
return m ? decodeURIComponent(m[1]) : null;
} catch(e) { return null; }
})(),init: function(config) {
config = config || {};
this._config = config;
this._attribution = config.attribution || {};var cookieState = this._getCookie('wc_facebook_signals_state');
this._held = cookieState ? cookieState === 'held' : !!config.held;this._fbclid = this._fbclid || null;if (typeof fbq === 'function') {
fbq('consent', this._held ? 'revoke' : 'grant');
}try {
var raw = window.sessionStorage.getItem('wc_facebook_signals_seen_event_ids');
this._seenEventIds = raw ? JSON.parse(raw) : {};
} catch (e) {
this._seenEventIds = this._seenEventIds || {};
}
},initPixel: function(pixelId, userInfo, options) {
this._pixelId = pixelId;
this._pixelUserInfo = userInfo && typeof userInfo === 'object' && !Array.isArray(userInfo) ? userInfo : {};
this._pixelOptions = options || {};
if (!this._held) {
this._runPixelInit();
}
},_runPixelInit: function() {
if (this._pixelInitialized || !this._pixelId || typeof fbq !== 'function') return;
fbq('init', this._pixelId, this._pixelUserInfo, this._pixelOptions);
this._pixelInitialized = true;
this._flushPendingPixelEvents();
},_flushPendingPixelEvents: function() {
var pending = this._pendingPixelEvents;
this._pendingPixelEvents = [];
for (var i = 0; i < pending.length; i++) {
var ev = pending[i];
this._firePixelEvent(ev.name, ev.params, ev.method, ev.eventId);
}
},_fireOrQueuePixelEvent: function(name, params, method, eventId) {
if (!this._pixelInitialized) {
this._pendingPixelEvents.push({
name: name, params: params || {}, method: method || 'track', eventId: eventId || null
});
return;
}
this._firePixelEvent(name, params || {}, method || 'track', eventId || null);
},_firePixelEvent: function(name, params, method, eventId) {
method = method || 'track';
if (eventId) {
fbq(method, name, params || {}, { eventID: eventId });
} else {
fbq(method, name, params || {});
}
},queueEvent: function(eventData) {
if (!eventData || !eventData.event_name) return;var originalId = eventData.event_id || null;
if (originalId && this._seenEventIds[originalId]) return;if (!this._held) {
this._fireOrQueuePixelEvent(eventData.event_name, eventData.custom_data || {}, eventData.method || 'track', originalId);
return;
}eventData = this._cloneEventData(eventData);
eventData.event_id = this._generateEventId();
eventData.event_time = eventData.event_time || Math.floor(Date.now() / 1000);
this._queue.push(eventData);var idToMark = originalId || eventData.event_id;
if (idToMark) {
this._seenEventIds[idToMark] = 1;
try {
window.sessionStorage.setItem(
'wc_facebook_signals_seen_event_ids',
JSON.stringify(this._seenEventIds)
);
} catch (e) {}
}
},trackEvent: function(name, params, userData, method, eventId) {
method = method || 'track';
eventId = eventId || (params && params.eventID) || null;if (this._held) {
this.queueEvent({
event_name: name,
custom_data: params || {},
event_id: eventId,
event_time: Math.floor(Date.now() / 1000),
method: method
});
} else {
this._fireOrQueuePixelEvent(name, params || {}, method, eventId);
}
},release: function() {
var self = this;
if (!self._held || self._releasing || !self._config.ajaxUrl) {
return Promise.resolve({ success: true, data: { sent_count: 0 } });
}self._releasing = true;
var attribution = self._collectAttribution();var payload = JSON.stringify({
events: self._queue,
attribution: {
fbp: attribution.fbp || null,
fbc: attribution.fbc || null
},
fbclid: self._fbclid || null
});var url = self._config.ajaxUrl +
(self._config.ajaxUrl.indexOf('?') === -1 ? '?' : '&') +
'action=' + encodeURIComponent(self._config.action);return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 300) {
try {
var resp = JSON.parse(xhr.responseText);
self._handleReleaseResponse(resp.data || {}, attribution);
resolve(resp);
} catch(e) { self._releasing = false; reject(e); }
} else {
self._releasing = false;
reject(new Error('Signal release AJAX failed: ' + xhr.status));
}
};
xhr.onerror = function() { self._releasing = false; reject(new Error('Network error')); };
xhr.send(payload);
});
},_handleReleaseResponse: function(data, attribution) {
this._syncAttributionCookies(data || {}, attribution);// Override cached user_info with fresh data from the release response.
if (data.user_info && typeof data.user_info === 'object' && !Array.isArray(data.user_info)) {
this._pixelUserInfo = data.user_info;
}this._held = false;
this._releasing = false;fbq('consent', 'grant');
this._runPixelInit();var queue = this._queue;
for (var i = 0; i < queue.length; i++) {
var ev = queue[i];
this._fireOrQueuePixelEvent(ev.event_name, ev.custom_data || {}, ev.method || 'track', ev.event_id || null);
}this._queue = [];
},_collectAttribution: function() {
var clientParams = {};
if (typeof clientParamBuilder !== 'undefined') {
try {
clientParams = clientParamBuilder.processAndCollectParams(this._getAttributionUrl()) || {};
} catch (e) {}
}var fbp = this._getCookie('_fbp') || clientParams._fbp || (typeof clientParamBuilder !== 'undefined' ? clientParamBuilder.getFbp() : null);
var fbc = this._getCookie('_fbc') || clientParams._fbc || (typeof clientParamBuilder !== 'undefined' ? clientParamBuilder.getFbc() : null);if (!fbc && this._fbclid) {
fbc = 'fb.1.' + Date.now() + '.' + this._fbclid;
}return { fbp: fbp || null, fbc: fbc || null };
},_syncAttributionCookies: function(data, attribution) {
var fbp = data.fbp || (attribution && attribution.fbp) || null;
var fbc = data.fbc || (attribution && attribution.fbc) || null;if (fbp) {
this._setAttributionCookie('_fbp', fbp, data.fbp_domain || null);
}
if (fbc) {
this._setAttributionCookie('_fbc', fbc, data.fbc_domain || null);
}
},_setAttributionCookie: function(name, value, domain) {
if (!value) return;
var domainAttr = domain ? ';domain=' + domain : '';
document.cookie = name + '=' + encodeURIComponent(value) + ';path=/;max-age=7776000' + domainAttr + ';SameSite=Lax';
},_getCookie: function(name) {
var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '=([^;]*)'));
if (!match) return null;
try { return decodeURIComponent(match[1]); } catch(e) { return null; }
},_cloneEventData: function(eventData) {
var clone = {};
for (var key in eventData) {
if (Object.prototype.hasOwnProperty.call(eventData, key)) {
clone[key] = eventData[key];
}
}
return clone;
},_generateEventId: function() {
if (window.crypto && typeof window.crypto.randomUUID === 'function') {
return window.crypto.randomUUID();
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0;
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
},_getAttributionUrl: function() {
if (!this._fbclid) return window.location.href;
try {
var url = new URL(window.location.href);
if (!url.searchParams.get('fbclid')) {
url.searchParams.set('fbclid', this._fbclid);
}
return url.toString();
} catch (e) {
return window.location.href;
}
}
};
FacebookSignals.init({
held: false,
ajaxUrl: "https:\/\/discountcctvsupplier.co.uk\/wp-admin\/admin-ajax.php",
action: 'facebook_release_signals',
pixelId: "1071403255027834",
attribution: {}
});
FacebookSignals.initPixel(
"1071403255027834",
{},
{"agent":"woocommerce_0-10.9.1-3.7.4"} );document.addEventListener( 'DOMContentLoaded', function() {
document.body.insertAdjacentHTML( 'beforeend', '<div class=\"wc-facebook-pixel-event-placeholder\"></div>' );
}, false );
Skip to content Home / HIKVISION / HIKVISION IP CAMERAS / Dome / Turret Hikvision IP Cameras / 4MP Hikvision DS-2CD2347G3-LIS2UY/SL ColorVu 3.0 Two Way Audio AI Strobe Alarm IP CCTV Security Camera in Black
Sale! 4MP Hikvision DS-2CD2347G3-LIS2UY/SL ColorVu 3.0 Two Way Audio AI Strobe Alarm IP CCTV Security Camera in Black
Hikvision DS-2CD2347G3-LIS2UY/SL 4MP ColorVu 3.0 Two-Way Audio CCTV Camera AcuSense AI & Strobe Alarm For Smart Security. black housing
Description What is included: 1x Hikvision DS-2CD2347G3-LIS2UY/SL in black housing Hikvision DS-2CD2347G3-LIS2UY/SL Features: HikAI-ISP for excellent noise reduction effect 24/7 colorful imaging via ColorVu technology Scene-adaptive WDR Focus on Person and Vehicle classification based on deep learning Built-in arrayed dual-microphone for real-time high quality audio security Provide real-time security via built-in two-way audio Anti-corrosion design, providing reliability and longevity compared to standard (NEMA4X) Smart Hybrid Light: Integrates IR and White lights, 3 supplemental lighting modes Water and dust resistant (IP67) Audio and alarm interface available Active strobe light and audio alarm to warn intruders off Hikvision DS-2CD2347G3-LIS2UY/SL Specifications: Camera
Image Sensor 1/1.8″ Progressive Scan CMOS Max. Resolution 2688 × 1520 Min. Illumination Color: 0.0001 Lux @ (F1.0, AGC ON),0 Lux with light Shutter Time 1 s to 1/100,000 s Day & Night IR cut filter Angle Adjustment Pan: 0° to 360°,tilt: 0° to 75°,rotate: 0° to 360° Lens
DORI
Illuminator
Supplement Light Type White Light, IR Supplement Light Range Up to 30 m Smart Supplement Light Yes IR Wavelength 850 nm Video
Main Stream 50 Hz: 25 fps (2688 × 1520, 1920 × 1080, 1280 × 720)
60 Hz: 30 fps (2688 × 1520, 1920 × 1080, 1280 × 720)
Sub-Stream 50 Hz: 25 fps (1280 × 720, 640 × 480, 640 × 360)
60 Hz: 30 fps (1280 × 720, 640 × 480, 640 × 360)
Third Stream 50 Hz: 10 fps (1920 × 1080, 1280 × 720, 640 × 480, 640 × 360)
60 Hz: 10 fps (1920 × 1080, 1280 × 720, 640 × 480, 640 × 360)
*The third stream is supported under certain settings.
Video Compression Main stream: H.265/H.264/H.264+/H.265+,
Sub-stream: H.265/H.264/MJPEG,
Third stream: H.265/H.264,
*Third stream is supported under certain settings.
Video Bit Rate 32 Kbps to 8 Mbps H.264 Type Baseline Profile, Main Profile, High Profile H.265 Type Main Profile Bit Rate Control CBR,VBR Scalable Video Coding (SVC) H.264 and H.265 encoding Region of Interest (ROI) 1 fixed region for main stream Audio
Audio Type Mono sound Audio Compression G.711/G.722.1/G.726/MP2L2/PCM/MP3/AAC-LC Audio Bit Rate 64 Kbps (G.711ulaw/G.711alaw)/16 Kbps (G.722.1)/16 Kbps (G.726)/32 to 192 Kbps (MP2L2)/8 to 320 Kbps (MP3)/16 to 64 Kbps (AAC-LC) Audio Sampling Rate 8 kHz/16 kHz/32 kHz/48 kHz Environment Noise Filtering Yes Network
Protocols TCP/IP, ICMP, HTTP, HTTPS, FTP, DHCP, DNS, DDNS, RTP, RTSP, RTCP, NTP, UPnP, SMTP, IGMP, 802.1X, QoS, IPv4, IPv6, UDP, Bonjour, SSL/TLS, PPPoE, SNMP, Web Socket, Web Sockets, SRTP, SFTP Simultaneous Live View Up to 6 channels API ONVIF (Profile S, Profile G, Profile T),ISAPI,SDK,ISUP User/Host Up to 32 users
3 user levels: administrator, operator, and user
Security Password protection, complicated password, HTTPS encryption, 802.1X authentication (EAP-TLS, EAP-LEAP, EAP-MD5), watermark, IP address filter, basic and digest authentication for HTTP/HTTPS, WSSE and digest authentication for Open Network Video Interface, RTP/RTSP over HTTPS, control timeout settings, security audit log, TLS 1.1/1.2/1.3, host authentication (MAC address) Network Storage NAS (NFS, SMB/CIFS),Auto Network Replenishment (ANR) Client iVMS-4200, Hik-Connect, Hik-Central Web Browser Plug-in free live view: Chrome 80+, Firefox 80+, Edge 89+,
Local service: Chrome 80+, Firefox 80+, Edge 89+
Image
Image Parameters Switch Yes Image Settings Rotate mode, saturation, brightness, contrast, sharpness, gain, white balance, adjustable by client software or web browser Day/Night Switch Day, Night, Auto, Schedule Image Enhancement BLC, HLC, 3D DNR, Distortion Correction, Defog SNR ≥ 52 dB Wide Dynamic Range (WDR) 130 dB Image Stabilization EIS Privacy Mask 4 programmable polygon privacy masks Interface
Ethernet Interface 1 RJ45 10 M/100 M self-adaptive Ethernet port On-Board Storage Built-in memory card slot, support microSD/micro SDHC/micro SDXC card, up to 512 GB Built-in Speaker Max. power consumption: 2 W, max. sound pressure level: 10 cm: 110 dB. Audio Built-in Microphone: Arrayed dual-microphone
1 input (line in), two-core terminal block, max. input amplitude: 3.3 Vpp, input impedance: 4.7 KΩ, interface type: non-equilibrium,
1 output (line out), two-core terminal block, max. output amplitude: 3.3 Vpp, output impedance: 100 Ω, interface type: non-equilibrium
Alarm 1 input, 1 output (max. 24 VDC/24 VAC, 1 A) Reset Key Yes Event
Basic Event Motion detection (support alarm triggering by specified target types (human and vehicle)),video tampering alarm, exception Smart Event Scene change detection Linkage Upload to FTP/NAS/memory card, notify surveillance center, send email, trigger alarm output, trigger recording, trigger capture, audible warning, strobe light flashing Deep Learning Function
Face Capture Yes Perimeter Protection Line crossing, intrusion, region entrance, region exiting
Support alarm triggering by specified target types (human and vehicle)
General
Power 12 VDC ± 25%, 1.29 A, max. 15.5 W,Ø5.5 mm coaxial power plug, reverse polarity protection,
PoE: IEEE 802.3at, Class 4, max. 17 W
Material Cover: metal, main body: metal Dimension Ø138.3 mm × 115.4 mm (Ø5.4″ × 4.5″) Package Dimension 170 mm × 170 mm × 160 mm (6.7″ × 6.7″ × 6.3″) Weight Approx. 820 g (1.8 lb.) With Package Weight Approx. 1200 g (2.6 lb.) Storage Conditions -30 °C to 60 °C (-22 °F to 140 °F). Humidity 95% or less (non-condensing) Startup and Operating Conditions -30 °C to 60 °C (-22 °F to 140 °F). Humidity 95% or less (non-condensing) General Function Heartbeat, mirror, flash log, password reset via email, pixel counter, anti-banding Language 33 languages: English, Russian, Estonian, Bulgarian, Hungarian, Greek, German, Italian, Czech, Slovak, French, Polish, Dutch, Portuguese, Spanish, Romanian, Danish, Swedish, Norwegian, Finnish, Croatian, Slovenian, Serbian, Turkish, Korean, Traditional Chinese, Thai, Vietnamese, Japanese, Latvian, Lithuanian, Portuguese (Brazil), Ukrainian Flashing Light /SRB model: Red and Blue Light
/SL model: White Light
Approval
EMC CE-EMC: EN 55032:2015+A1:2020, EN 50130-4:2011+A1:2014, EN IEC 61000-3-2:2019+A1:2021, EN 61000-3-3:2013+A1:2019+A2:2021,
RCM: AS/NZS CISPR 32: 2015,
IC: ICES-003: Issue 7,
KC: KN32: 2015, KN35: 2015
Safety UL: UL 62368-1,
CB: IEC 62368-1: 2014+A11,
CE-LVD: EN 62368-1: 2014/A11: 2017
Environment CE-RoHS: 2011/65/EU Protection IP67: IEC 60529-2013 Anti-Corrosion Protection NEMA 4X (NEMA 250-2018) Delivery & Returns At Discount CCTV Supplier, we specialise in delivering high-quality, cost-effective Security systems tailored to meet the unique security needs of our clients. With a proven track record and a commitment to innovation, we believe our offerings align seamlessly with the mission and values of Discount CCTV Supplier.Diverse Product Range Our extensive product portfolio ensures that Discount CCTV Supplier can cater to a broad spectrum of customer requirements, from basic surveillance needs to more advanced security solutions. Please note that you have the option to return new, unused items within 30 days of delivery for a refund. However, please be aware that a postage cost of £8.50 plus VAT for Maniland shipment and £15 Plus VAT from shipments to Northern Ireland. Will be deducted from the refunded amount.
Prompt service Very helpful
Quick and reliable Quick and reliable
very happy with the purchase very good services
Helpful 5 star service Helpful 5 star service
⭐️⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
Excellent service from start to finish! The CCTV system was installed quickly and works perfectly. Director Thulash was professional, approachable, and made sure everything was tailored to our needs. Highly recommend this company for reliable security solutions. Have used the services for all our homes as we are a care home company.
Always a pleasure Always a pleasure
There are no products in the cart!
0
// Do not change this comment line otherwise Speed Optimizer won't be able to detect this script(function () {
function sendRequest(url, body) {
if(!window.fetch) {
const xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(body))
return
}const request = fetch(url, {
method: 'POST',
body: JSON.stringify(body),
keepalive: true,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
});
}
const calculateParentDistance = (child, parent) => {
let count = 0;
let currentElement = child;// Traverse up the DOM tree until we reach parent or the top of the DOM
while (currentElement && currentElement !== parent) {
currentElement = currentElement.parentNode;
count++;
}// If parent was not found in the hierarchy, return -1
if (!currentElement) {
return -1; // Indicates parent is not an ancestor of element
}return count; // Number of layers between element and parent
}
const isMatchingClass = (linkRule, href, classes, ids) => {
return classes.includes(linkRule.value)
}
const isMatchingId = (linkRule, href, classes, ids) => {
return ids.includes(linkRule.value)
}
const isMatchingDomain = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)
const host = url.host
const hostsToMatch = [host]if(host.startsWith('www.')) {
hostsToMatch.push(host.substring(4))
} else {
hostsToMatch.push('www.' + host)
}return hostsToMatch.includes(linkRule.value)
}
const isMatchingExtension = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)return url.pathname.endsWith('.' + linkRule.value)
}
const isMatchingSubdirectory = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)return url.pathname.startsWith('/' + linkRule.value + '/')
}
const isMatchingProtocol = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)return url.protocol === linkRule.value + ':'
}
const isMatchingExternal = (linkRule, href, classes, ids) => {
if(!URL.canParse(href) || !URL.canParse(document.location.href)) {
return false
}const matchingProtocols = ['http:', 'https:']
const siteUrl = new URL(document.location.href)
const linkUrl = new URL(href)// Links to subdomains will appear to be external matches according to JavaScript,
// but the PHP rules will filter those events out.
return matchingProtocols.includes(linkUrl.protocol) && siteUrl.host !== linkUrl.host
}
const isMatch = (linkRule, href, classes, ids) => {
switch (linkRule.type) {
case 'class':
return isMatchingClass(linkRule, href, classes, ids)
case 'id':
return isMatchingId(linkRule, href, classes, ids)
case 'domain':
return isMatchingDomain(linkRule, href, classes, ids)
case 'extension':
return isMatchingExtension(linkRule, href, classes, ids)
case 'subdirectory':
return isMatchingSubdirectory(linkRule, href, classes, ids)
case 'protocol':
return isMatchingProtocol(linkRule, href, classes, ids)
case 'external':
return isMatchingExternal(linkRule, href, classes, ids)
default:
return false;
}
}
const track = (element) => {
const href = element.href ?? null
const classes = Array.from(element.classList)
const ids = [element.id]
const linkRules = [{"type":"extension","value":"pdf"},{"type":"extension","value":"zip"},{"type":"protocol","value":"mailto"},{"type":"protocol","value":"tel"}]
if(linkRules.length === 0) {
return
}// For link rules that target an id, we need to allow that id to appear
// in any ancestor up to the 7th ancestor. This loop looks for those matches
// and counts them.
linkRules.forEach((linkRule) => {
if(linkRule.type !== 'id') {
return;
}const matchingAncestor = element.closest('#' + linkRule.value)if(!matchingAncestor || matchingAncestor.matches('html, body')) {
return;
}const depth = calculateParentDistance(element, matchingAncestor)if(depth < 7) {
ids.push(linkRule.value)
}
});// For link rules that target a class, we need to allow that class to appear
// in any ancestor up to the 7th ancestor. This loop looks for those matches
// and counts them.
linkRules.forEach((linkRule) => {
if(linkRule.type !== 'class') {
return;
}const matchingAncestor = element.closest('.' + linkRule.value)if(!matchingAncestor || matchingAncestor.matches('html, body')) {
return;
}const depth = calculateParentDistance(element, matchingAncestor)if(depth < 7) {
classes.push(linkRule.value)
}
});const hasMatch = linkRules.some((linkRule) => {
return isMatch(linkRule, href, classes, ids)
})if(!hasMatch) {
return
}const url = "https://discountcctvsupplier.co.uk/wp-content/plugins/independent-analytics/iawp-click-endpoint.php";
const body = {
href: href,
classes: classes.join(' '),
ids: ids.join(' '),
...{"payload":{"resource":"singular","singular_id":23480,"page":1},"signature":"56b65773eca8761683debbcd1817c373"} };sendRequest(url, body)
}
let hasSearched = false;
function search() {
if(hasSearched) {
return;
}
hasSearched = true;if (document.hasOwnProperty("visibilityState") && document.visibilityState === "prerender") {
return;
}if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
let referrer_url = null;if (typeof document.referrer === 'string' && document.referrer.length > 0) {
referrer_url = document.referrer;
}const params = location.search.slice(1).split('&').reduce((acc, s) => {
const [k, v] = s.split('=');
return Object.assign(acc, {[k]: v});
}, {});const url = "https://discountcctvsupplier.co.uk/wp-json/iawp/search";
const body = {
referrer_url,
utm_source: params.utm_source,
utm_medium: params.utm_medium,
utm_campaign: params.utm_campaign,
utm_term: params.utm_term,
utm_content: params.utm_content,
gclid: params.gclid,
...{"payload":{"resource":"singular","singular_id":23480,"page":1},"signature":"56b65773eca8761683debbcd1817c373"} };sendRequest(url, body)
}
document.addEventListener('mousedown', function (event) {
if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
const element = event.target.closest('a')if(!element) {
return
}const isPro = false
if(!isPro) {
return
}// Don't track left clicks with this event. The click event is used for that.
if(event.button === 0) {
return
}track(element)
})
document.addEventListener('click', function (event) {
if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
const element = event.target.closest('a, button, input[type="submit"], input[type="button"]')if(!element) {
return
}const isPro = false
if(!isPro) {
return
}track(element)
})
document.addEventListener('play', function (event) {
if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
const element = event.target.closest('audio, video')if(!element) {
return
}const isPro = false
if(!isPro) {
return
}track(element)
}, true)
document.addEventListener("DOMContentLoaded", function (e) {
search();
});
document.addEventListener("iawpSearch", function (e) {
search();
});
})();
(function () {
var c = document.body.className;
c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
document.body.className = c;
})();
document.addEventListener( 'wpcf7submit', function (event) {
fbq('init', '1071403255027834', {}, {
"agent": "woocommerce_0-10.9.1-3.7.4"
});
/* WooCommerce Facebook Integration Event Tracking */
fbq('set', 'agent', 'woocommerce_0-10.9.1-3.7.4', '1071403255027834');
if (window.FacebookSignals && typeof window.FacebookSignals.trackEvent === 'function') {
window.FacebookSignals.trackEvent('Lead', {
"source": "woocommerce_0",
"version": "10.9.1",
"pluginVersion": "3.7.4"
}, null, 'track', null);
} else {
fbq('track', 'Lead', {
"source": "woocommerce_0",
"version": "10.9.1",
"pluginVersion": "3.7.4"
});
} }, false );
window['wcStripeSettings'] = JSON.parse( decodeURIComponent( '%7B%22cart%22%3A%7B%22total%22%3A%220.00%22%2C%22subtotal%22%3A%220.00%22%2C%22totalCents%22%3A0%2C%22subtotalCents%22%3A0%2C%22needsShipping%22%3Afalse%2C%22isEmpty%22%3Atrue%2C%22currency%22%3A%22GBP%22%2C%22countryCode%22%3A%22GB%22%2C%22lineItems%22%3A%5B%7B%22label%22%3A%22Tax%22%2C%22amount%22%3A%220.00%22%2C%22amountCents%22%3A0%2C%22type%22%3A%22tax%22%7D%5D%2C%22shippingOptions%22%3A%5B%5D%2C%22selectedShippingMethod%22%3A%22%22%2C%22paymentMethods%22%3A%7B%22stripe_cc%22%3A%7B%22id%22%3A%22stripe_cc%22%2C%22enabled%22%3Atrue%2C%22available%22%3Atrue%7D%2C%22stripe_applepay%22%3A%7B%22id%22%3A%22stripe_applepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_googlepay%22%3A%7B%22id%22%3A%22stripe_googlepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_payment_request%22%3A%7B%22id%22%3A%22stripe_payment_request%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_afterpay%22%3A%7B%22id%22%3A%22stripe_afterpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_affirm%22%3A%7B%22id%22%3A%22stripe_affirm%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_ach%22%3A%7B%22id%22%3A%22stripe_ach%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_ideal%22%3A%7B%22id%22%3A%22stripe_ideal%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_p24%22%3A%7B%22id%22%3A%22stripe_p24%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_klarna%22%3A%7B%22id%22%3A%22stripe_klarna%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_bancontact%22%3A%7B%22id%22%3A%22stripe_bancontact%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_eps%22%3A%7B%22id%22%3A%22stripe_eps%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_multibanco%22%3A%7B%22id%22%3A%22stripe_multibanco%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_sepa%22%3A%7B%22id%22%3A%22stripe_sepa%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_wechat%22%3A%7B%22id%22%3A%22stripe_wechat%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_fpx%22%3A%7B%22id%22%3A%22stripe_fpx%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_becs%22%3A%7B%22id%22%3A%22stripe_becs%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_alipay%22%3A%7B%22id%22%3A%22stripe_alipay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_grabpay%22%3A%7B%22id%22%3A%22stripe_grabpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_boleto%22%3A%7B%22id%22%3A%22stripe_boleto%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_oxxo%22%3A%7B%22id%22%3A%22stripe_oxxo%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_blik%22%3A%7B%22id%22%3A%22stripe_blik%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_konbini%22%3A%7B%22id%22%3A%22stripe_konbini%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_paynow%22%3A%7B%22id%22%3A%22stripe_paynow%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_promptpay%22%3A%7B%22id%22%3A%22stripe_promptpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_swish%22%3A%7B%22id%22%3A%22stripe_swish%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_amazonpay%22%3A%7B%22id%22%3A%22stripe_amazonpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_cashapp%22%3A%7B%22id%22%3A%22stripe_cashapp%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_revolut%22%3A%7B%22id%22%3A%22stripe_revolut%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_zip%22%3A%7B%22id%22%3A%22stripe_zip%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_mobilepay%22%3A%7B%22id%22%3A%22stripe_mobilepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_twint%22%3A%7B%22id%22%3A%22stripe_twint%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_paybybank%22%3A%7B%22id%22%3A%22stripe_paybybank%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_upm%22%3A%7B%22id%22%3A%22stripe_upm%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_link_checkout%22%3A%7B%22id%22%3A%22stripe_link_checkout%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_billie%22%3A%7B%22id%22%3A%22stripe_billie%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_satispay%22%3A%7B%22id%22%3A%22stripe_satispay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_scalapay%22%3A%7B%22id%22%3A%22stripe_scalapay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_mbway%22%3A%7B%22id%22%3A%22stripe_mbway%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%7D%7D%2C%22product%22%3A%7B%22id%22%3A23480%2C%22qty%22%3A1%2C%22type%22%3A%22simple%22%2C%22price%22%3A110%2C%22total%22%3A110%2C%22priceCents%22%3A11000%2C%22currency%22%3A%22GBP%22%2C%22lineItems%22%3A%5B%7B%22id%22%3A23480%2C%22label%22%3A%224MP%20Hikvision%20DS-2CD2347G3-LIS2UY%5C%2FSL%20ColorVu%203.0%20Two%20Way%20Audio%20AI%20Strobe%20Alarm%20IP%20CCTV%20Security%20Camera%20in%20Black%22%2C%22amount%22%3A110%2C%22amountCents%22%3A11000%2C%22type%22%3A%22product%22%7D%5D%2C%22isInStock%22%3Atrue%2C%22needsShipping%22%3Atrue%2C%22shippingOptions%22%3A%5B%5D%2C%22variation_id%22%3A0%7D%2C%22currency%22%3A%7B%22currencyCode%22%3A%22GBP%22%2C%22currencySymbol%22%3A%22%26pound%3B%22%2C%22minorUnit%22%3A2%2C%22decimalSeparator%22%3A%22.%22%2C%22thousandSeparator%22%3A%22%2C%22%2C%22prefix%22%3A%22%26pound%3B%22%2C%22suffix%22%3A%22%22%7D%2C%22version%22%3A%224.0.3%22%2C%22page%22%3A%22product%22%2C%22publicKey%22%3A%22pk_live_51LOJSUJWyrk5KdYnkjFQdp2XtzqNOEDdbBJcDKY5bD18uxBoT3HQmBXqGpe7sCGUq76HJVRqwuqeNrZjaCWZaDRJ00gTdBOdlv%22%2C%22mode%22%3A%22live%22%2C%22sdkParams%22%3A%7B%22stripeAccount%22%3A%22acct_1LOJSUJWyrk5KdYn%22%2C%22apiVersion%22%3A%222026-02-25.clover%22%2C%22betas%22%3A%5B%22deferred_intent_blik_beta_1%22%2C%22disable_deferred_intent_client_validation_beta_1%22%5D%7D%2C%22addressLocales%22%3A%22%7B%5C%22BE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22CY%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22DE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22FR%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GR%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22IE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Eircode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%7D%7D%2C%5C%22IT%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22NL%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22PT%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22ES%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22SE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GB%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%2C%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22default%5C%22%3A%7B%5C%22first_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22First%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-first%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22given-name%5C%22%2C%5C%22priority%5C%22%3A10%7D%2C%5C%22last_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Last%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-last%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22family-name%5C%22%2C%5C%22priority%5C%22%3A20%7D%2C%5C%22company%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Company%20name%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22organization%5C%22%2C%5C%22priority%5C%22%3A30%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22country%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22country%5C%22%2C%5C%22label%5C%22%3A%5C%22Country%20%5C%5C%5C%2F%20Region%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%2C%5C%22update_totals_on_change%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22country%5C%22%2C%5C%22priority%5C%22%3A40%2C%5C%22hidden%5C%22%3Afalse%7D%2C%5C%22address_1%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Street%20address%5C%22%2C%5C%22placeholder%5C%22%3A%5C%22House%20number%20and%20street%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line1%5C%22%2C%5C%22priority%5C%22%3A50%7D%2C%5C%22address_2%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%5C%22%2C%5C%22label_class%5C%22%3A%5B%5C%22screen-reader-text%5C%22%5D%2C%5C%22placeholder%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%20%28optional%29%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line2%5C%22%2C%5C%22priority%5C%22%3A60%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22city%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Town%20%5C%5C%5C%2F%20City%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level2%5C%22%2C%5C%22priority%5C%22%3A70%7D%2C%5C%22state%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22state%5C%22%2C%5C%22label%5C%22%3A%5C%22State%20%5C%5C%5C%2F%20County%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22state%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level1%5C%22%2C%5C%22priority%5C%22%3A80%7D%2C%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%20%5C%5C%5C%2F%20ZIP%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22postcode%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22postal-code%5C%22%2C%5C%22priority%5C%22%3A90%7D%2C%5C%22phone%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Phone%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22type%5C%22%3A%5C%22tel%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22phone%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22tel%5C%22%2C%5C%22priority%5C%22%3A100%7D%7D%7D%22%2C%22errorMessages%22%3A%7B%22stripe_cc_generic%22%3A%22There%20was%20an%20error%20processing%20your%20credit%20card.%22%2C%22incomplete_number%22%3A%22Your%20card%20number%20is%20incomplete.%22%2C%22incomplete_expiry%22%3A%22Your%20card%27s%20expiration%20date%20is%20incomplete.%22%2C%22incomplete_cvc%22%3A%22Your%20card%27s%20security%20code%20is%20incomplete.%22%2C%22incomplete_zip%22%3A%22Your%20card%27s%20zip%20code%20is%20incomplete.%22%2C%22incorrect_number%22%3A%22The%20card%20number%20is%20incorrect.%20Check%20the%20card%27s%20number%20or%20use%20a%20different%20card.%22%2C%22incorrect_cvc%22%3A%22The%20card%27s%20security%20code%20is%20incorrect.%20Check%20the%20card%27s%20security%20code%20or%20use%20a%20different%20card.%22%2C%22incorrect_zip%22%3A%22The%20card%27s%20ZIP%20code%20is%20incorrect.%20Check%20the%20card%27s%20ZIP%20code%20or%20use%20a%20different%20card.%22%2C%22invalid_number%22%3A%22The%20card%20number%20is%20invalid.%20Check%20the%20card%20details%20or%20use%20a%20different%20card.%22%2C%22invalid_characters%22%3A%22This%20value%20provided%20to%20the%20field%20contains%20characters%20that%20are%20unsupported%20by%20the%20field.%22%2C%22invalid_cvc%22%3A%22The%20card%27s%20security%20code%20is%20invalid.%20Check%20the%20card%27s%20security%20code%20or%20use%20a%20different%20card.%22%2C%22invalid_expiry_month%22%3A%22The%20card%27s%20expiration%20month%20is%20incorrect.%20Check%20the%20expiration%20date%20or%20use%20a%20different%20card.%22%2C%22invalid_expiry_year%22%3A%22The%20card%27s%20expiration%20year%20is%20incorrect.%20Check%20the%20expiration%20date%20or%20use%20a%20different%20card.%22%2C%22incorrect_address%22%3A%22The%20card%27s%20address%20is%20incorrect.%20Check%20the%20card%27s%20address%20or%20use%20a%20different%20card.%22%2C%22expired_card%22%3A%22The%20card%20has%20expired.%20Check%20the%20expiration%20date%20or%20use%20a%20different%20card.%22%2C%22card_declined%22%3A%22The%20card%20has%20been%20declined.%22%2C%22invalid_expiry_year_past%22%3A%22Your%20card%27s%20expiration%20year%20is%20in%20the%20past.%22%2C%22account_number_invalid%22%3A%22The%20bank%20account%20number%20provided%20is%20invalid%20%28e.g.%2C%20missing%20digits%29.%20Bank%20account%20information%20varies%20from%20country%20to%20country.%20We%20recommend%20creating%20validations%20in%20your%20entry%20forms%20based%20on%20the%20bank%20account%20formats%20we%20provide.%22%2C%22amount_too_large%22%3A%22The%20specified%20amount%20is%20greater%20than%20the%20maximum%20amount%20allowed.%20Use%20a%20lower%20amount%20and%20try%20again.%22%2C%22amount_too_small%22%3A%22The%20specified%20amount%20is%20less%20than%20the%20minimum%20amount%20allowed.%20Use%20a%20higher%20amount%20and%20try%20again.%22%2C%22authentication_required%22%3A%22The%20payment%20requires%20authentication%20to%20proceed.%20If%20your%20customer%20is%20off%20session%2C%20notify%20your%20customer%20to%20return%20to%20your%20application%20and%20complete%20the%20payment.%20If%20you%20provided%20the%20error_on_requires_action%20parameter%2C%20then%20your%20customer%20should%20try%20another%20card%20that%20does%20not%20require%20authentication.%22%2C%22balance_insufficient%22%3A%22The%20transfer%20or%20payout%20could%20not%20be%20completed%20because%20the%20associated%20account%20does%20not%20have%20a%20sufficient%20balance%20available.%20Create%20a%20new%20transfer%20or%20payout%20using%20an%20amount%20less%20than%20or%20equal%20to%20the%20account%27s%20available%20balance.%22%2C%22bank_account_declined%22%3A%22The%20bank%20account%20provided%20can%20not%20be%20used%20to%20charge%2C%20either%20because%20it%20is%20not%20verified%20yet%20or%20it%20is%20not%20supported.%22%2C%22bank_account_exists%22%3A%22The%20bank%20account%20provided%20already%20exists%20on%20the%20specified%20Customer%20object.%20If%20the%20bank%20account%20should%20also%20be%20attached%20to%20a%20different%20customer%2C%20include%20the%20correct%20customer%20ID%20when%20making%20the%20request%20again.%22%2C%22bank_account_unusable%22%3A%22The%20bank%20account%20provided%20cannot%20be%20used%20for%20payouts.%20A%20different%20bank%20account%20must%20be%20used.%22%2C%22bank_account_unverified%22%3A%22Your%20Connect%20platform%20is%20attempting%20to%20share%20an%20unverified%20bank%20account%20with%20a%20connected%20account.%22%2C%22bank_account_verification_failed%22%3A%22The%20bank%20account%20cannot%20be%20verified%2C%20either%20because%20the%20microdeposit%20amounts%20provided%20do%20not%20match%20the%20actual%20amounts%2C%20or%20because%20verification%20has%20failed%20too%20many%20times.%22%2C%22card_decline_rate_limit_exceeded%22%3A%22This%20card%20has%20been%20declined%20too%20many%20times.%20You%20can%20try%20to%20charge%20this%20card%20again%20after%2024%20hours.%20We%20suggest%20reaching%20out%20to%20your%20customer%20to%20make%20sure%20they%20have%20entered%20all%20of%20their%20information%20correctly%20and%20that%20there%20are%20no%20issues%20with%20their%20card.%22%2C%22charge_already_captured%22%3A%22The%20charge%20you%27re%20attempting%20to%20capture%20has%20already%20been%20captured.%20Update%20the%20request%20with%20an%20uncaptured%20charge%20ID.%22%2C%22charge_already_refunded%22%3A%22The%20charge%20you%27re%20attempting%20to%20refund%20has%20already%20been%20refunded.%20Update%20the%20request%20to%20use%20the%20ID%20of%20a%20charge%20that%20has%20not%20been%20refunded.%22%2C%22charge_disputed%22%3A%22The%20charge%20you%27re%20attempting%20to%20refund%20has%20been%20charged%20back.%20Check%20the%20disputes%20documentation%20to%20learn%20how%20to%20respond%20to%20the%20dispute.%22%2C%22charge_exceeds_source_limit%22%3A%22This%20charge%20would%20cause%20you%20to%20exceed%20your%20rolling-window%20processing%20limit%20for%20this%20source%20type.%20Please%20retry%20the%20charge%20later%2C%20or%20contact%20us%20to%20request%20a%20higher%20processing%20limit.%22%2C%22charge_expired_for_capture%22%3A%22The%20charge%20cannot%20be%20captured%20as%20the%20authorization%20has%20expired.%20Auth%20and%20capture%20charges%20must%20be%20captured%20within%20seven%20days.%22%2C%22charge_invalid_parameter%22%3A%22One%20or%20more%20provided%20parameters%20was%20not%20allowed%20for%20the%20given%20operation%20on%20the%20Charge.%20Check%20our%20API%20reference%20or%20the%20returned%20error%20message%20to%20see%20which%20values%20were%20not%20correct%20for%20that%20Charge.%22%2C%22email_invalid%22%3A%22The%20email%20address%20is%20invalid%20%28e.g.%2C%20not%20properly%20formatted%29.%20Check%20that%20the%20email%20address%20is%20properly%20formatted%20and%20only%20includes%20allowed%20characters.%22%2C%22idempotency_key_in_use%22%3A%22The%20idempotency%20key%20provided%20is%20currently%20being%20used%20in%20another%20request.%20This%20occurs%20if%20your%20integration%20is%20making%20duplicate%20requests%20simultaneously.%22%2C%22invalid_charge_amount%22%3A%22The%20specified%20amount%20is%20invalid.%20The%20charge%20amount%20must%20be%20a%20positive%20integer%20in%20the%20smallest%20currency%20unit%2C%20and%20not%20exceed%20the%20minimum%20or%20maximum%20amount.%22%2C%22invalid_source_usage%22%3A%22The%20source%20cannot%20be%20used%20because%20it%20is%20not%20in%20the%20correct%20state%20%28e.g.%2C%20a%20charge%20request%20is%20trying%20to%20use%20a%20source%20with%20a%20pending%2C%20failed%2C%20or%20consumed%20source%29.%20Check%20the%20status%20of%20the%20source%20you%20are%20attempting%20to%20use.%22%2C%22missing%22%3A%22Both%20a%20customer%20and%20source%20ID%20have%20been%20provided%2C%20but%20the%20source%20has%20not%20been%20saved%20to%20the%20customer.%20To%20create%20a%20charge%20for%20a%20customer%20with%20a%20specified%20source%2C%20you%20must%20first%20save%20the%20card%20details.%22%2C%22postal_code_invalid%22%3A%22The%20ZIP%20code%20provided%20was%20incorrect.%22%2C%22processing_error%22%3A%22An%20error%20occurred%20while%20processing%20the%20card.%20Try%20again%20later%20or%20with%20a%20different%20payment%20method.%22%2C%22card_not_supported%22%3A%22The%20card%20does%20not%20support%20this%20type%20of%20purchase.%22%2C%22call_issuer%22%3A%22The%20card%20has%20been%20declined%20for%20an%20unknown%20reason.%22%2C%22card_velocity_exceeded%22%3A%22The%20customer%20has%20exceeded%20the%20balance%20or%20credit%20limit%20available%20on%20their%20card.%22%2C%22currency_not_supported%22%3A%22The%20card%20does%20not%20support%20the%20specified%20currency.%22%2C%22do_not_honor%22%3A%22The%20card%20has%20been%20declined%20for%20an%20unknown%20reason.%22%2C%22fraudulent%22%3A%22The%20payment%20has%20been%20declined%20as%20Stripe%20suspects%20it%20is%20fraudulent.%22%2C%22generic_decline%22%3A%22The%20card%20has%20been%20declined%20for%20an%20unknown%20reason.%22%2C%22incorrect_pin%22%3A%22The%20PIN%20entered%20is%20incorrect.%20%22%2C%22insufficient_funds%22%3A%22The%20card%20has%20insufficient%20funds%20to%20complete%20the%20purchase.%22%2C%22empty_element%22%3A%22Please%20select%20a%20payment%20method%20before%20proceeding.%22%2C%22empty_element_sepa_debit%22%3A%22Please%20enter%20your%20IBAN%20before%20proceeding.%22%2C%22empty_element_ideal%22%3A%22Please%20select%20a%20bank%20before%20proceeding%22%2C%22incomplete_iban%22%3A%22The%20IBAN%20you%20entered%20is%20incomplete.%22%2C%22incomplete_boleto_tax_id%22%3A%22Please%20enter%20a%20valid%20CPF%20%5C%2F%20CNPJ%22%2C%22test_mode_live_card%22%3A%22Your%20card%20was%20declined.%20Your%20request%20was%20in%20test%20mode%2C%20but%20you%20used%20a%20real%20credit%20card.%20Only%20test%20cards%20can%20be%20used%20in%20test%20mode.%22%2C%22server_side_confirmation_beta%22%3A%22You%20do%20not%20have%20permission%20to%20use%20the%20PaymentElement%20card%20form.%20Please%20send%20a%20request%20to%20https%3A%5C%2F%5C%2Fsupport.stripe.com%5C%2F%20and%20ask%20for%20the%20%5C%22server_side_confirmation_beta%5C%22%20to%20be%20added%20to%20your%20account.%22%2C%22phone_required%22%3A%22Please%20provide%20a%20billing%20phone%20number.%22%2C%22ach_instant_only%22%3A%22Your%20payment%20could%20not%20be%20processed%20at%20this%20time%20because%20your%20bank%20account%20does%20not%20support%20instant%20verification.%22%2C%22payment_intent_konbini_rejected_confirmation_number%22%3A%22The%20confirmation%20number%20was%20rejected%20by%20Konbini.%20Please%20try%20again.%22%2C%22payment_intent_payment_attempt_expired%22%3A%22The%20payment%20attempt%20for%20this%20payment%20method%20has%20expired.%20Please%20try%20again.%22%2C%22payment_intent_authentication_failure%22%3A%22We%20are%20unable%20to%20authenticate%20your%20payment%20method.%20Please%20choose%20a%20different%20payment%20method%20and%20try%20again.%22%2C%22payment_cancelled%22%3A%22Payment%20has%20been%20cancelled.%22%2C%22billing_label%22%3A%22Billing%20%25s%22%2C%22shipping_label%22%3A%22Shipping%20%25s%22%2C%22required_field%22%3A%22%25s%20is%20a%20required%20field.%22%2C%22required_fields%22%3A%22Please%20fill%20out%20all%20required%20fields.%22%2C%22payment_unavailable%22%3A%22This%20payment%20method%20is%20currently%20unavailabe.%20Reason%3A%20%25s%22%2C%22billing_details.phone.required%22%3A%22A%20billing%20phone%20number%20is%20required%20for%20this%20payment.%22%2C%22terms%22%3A%22Please%20read%20and%20accept%20the%20terms%20and%20conditions%20to%20proceed%20with%20your%20order.%22%2C%22order_button_click%22%3A%22Please%20click%20the%20%25s%20button%20before%20placing%20your%20order.%22%7D%2C%22requiredFields%22%3A%5B%22billing_first_name%22%2C%22billing_last_name%22%2C%22billing_country%22%2C%22billing_address_1%22%2C%22billing_city%22%2C%22billing_postcode%22%2C%22billing_phone%22%2C%22billing_email%22%2C%22shipping_first_name%22%2C%22shipping_last_name%22%2C%22shipping_country%22%2C%22shipping_address_1%22%2C%22shipping_city%22%2C%22shipping_postcode%22%2C%22shipping_phone%22%2C%22account_password%22%5D%2C%22customer%22%3A%7B%22customer_id%22%3A0%2C%22billing_address%22%3A%7B%22name%22%3A%22%20%22%2C%22first_name%22%3A%22%22%2C%22last_name%22%3A%22%22%2C%22email%22%3A%22%22%2C%22phone%22%3A%22%22%2C%22address_1%22%3A%22%22%2C%22address_2%22%3A%22%22%2C%22city%22%3A%22%22%2C%22state%22%3A%22%22%2C%22postcode%22%3A%22%22%2C%22country%22%3A%22GB%22%7D%2C%22shipping_address%22%3A%7B%22name%22%3A%22%20%22%2C%22first_name%22%3A%22%22%2C%22last_name%22%3A%22%22%2C%22address_1%22%3A%22%22%2C%22address_2%22%3A%22%22%2C%22city%22%3A%22%22%2C%22state%22%3A%22%22%2C%22postcode%22%3A%22%22%2C%22country%22%3A%22GB%22%7D%7D%2C%22restRoutes%22%3A%7B%22cart%5C%2Fitem%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fitem%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fitem%22%7D%2C%22cart%5C%2Frefresh%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Frefresh%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Frefresh%22%7D%2C%22cart%5C%2Fshipping%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fshipping%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fshipping%22%7D%2C%22cart%5C%2Fcheckout%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcheckout%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcheckout%22%7D%2C%22cart%5C%2Fcalculation%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcalculation%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcalculation%22%7D%2C%22checkout%5C%2Fform-validation%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcheckout%5C%2Fform-validation%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcheckout%5C%2Fform-validation%22%7D%2C%22setup-intent%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fsetup-intent%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fsetup-intent%22%7D%2C%22order%5C%2Fpay%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Forder%5C%2Fpay%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Forder%5C%2Fpay%22%7D%7D%2C%22stripe_cc_data%22%3A%7B%22paymentSections%22%3A%5B%5D%2C%22paymentMethodType%22%3A%22card%22%2C%22description%22%3A%22%22%2C%22hasPaymentTokens%22%3Afalse%2C%22termsDisplayRule%22%3A%22auto%22%2C%22elementOptions%22%3A%7B%22paymentMethodTypes%22%3A%5B%22card%22%2C%22link%22%5D%2C%22locale%22%3A%22en-US%22%2C%22mode%22%3A%22payment%22%2C%22paymentMethodCreation%22%3A%22manual%22%2C%22appearance%22%3A%7B%22theme%22%3A%22stripe%22%7D%7D%2C%22paymentElementOptions%22%3A%5B%5D%2C%22cardFormType%22%3A%22payment%22%2C%22inlineFormOptions%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%2C%22disableLink%22%3Afalse%7D%2C%22paymentElementActive%22%3Atrue%2C%22customFieldOptions%22%3A%7B%22cardNumber%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%7D%2C%22cardExpiry%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%7D%2C%22cardCvc%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%7D%7D%2C%22cardIcons%22%3A%7B%22visa%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fvisa.svg%22%2C%22amex%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Famex.svg%22%2C%22mastercard%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fmastercard.svg%22%2C%22discover%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fdiscover.svg%22%2C%22diners%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fdiners.svg%22%2C%22jcb%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fjcb.svg%22%2C%22unionpay%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fchina_union_pay.svg%22%2C%22unknown%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcard_brand2.svg%22%7D%2C%22html%22%3A%7B%22card_brand%22%3A%22%3Cimg%20id%3D%5C%22wc-stripe-card%5C%22%20src%3D%5C%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcard_brand2.svg%5C%22%20%5C%2F%3E%22%7D%2C%22noticeLocation%22%3A%22acf%22%2C%22noticeSelector%22%3A%22div.payment_method_stripe_cc%22%2C%22installments%22%3A%7B%22clientSecret%22%3Anull%7D%7D%2C%22paymentMethods%22%3A%7B%22stripe_cc%22%3A%7B%22enabled%22%3Atrue%2C%22supports%22%3A%5B%22refunds%22%2C%22products%22%2C%22default_credit_card_form%22%2C%22tokenization%22%2C%22add_payment_method%22%2C%22pre-orders%22%2C%22subscriptions%22%2C%22subscription_cancellation%22%2C%22multiple_subscriptions%22%2C%22subscription_amount_changes%22%2C%22subscription_date_changes%22%2C%22subscription_payment_method_change_admin%22%2C%22subscription_reactivation%22%2C%22subscription_suspension%22%2C%22subscription_payment_method_change_customer%22%5D%2C%22isLocal%22%3Afalse%2C%22paymentMethodType%22%3A%22card%22%7D%7D%7D' ) );
window['wcPPCPSettings'] = JSON.parse( decodeURIComponent( '%7B%22cart%22%3A%7B%22total%22%3A%220.00%22%2C%22totalCents%22%3A0%2C%22needsShipping%22%3Afalse%2C%22isEmpty%22%3Atrue%2C%22currency%22%3A%22GBP%22%2C%22countryCode%22%3A%22GB%22%2C%22availablePaymentMethods%22%3A%5B%22stripe_cc%22%2C%22ppcp%22%5D%2C%22lineItems%22%3A%5B%7B%22label%22%3A%22Tax%22%2C%22amount%22%3A%220.00%22%2C%22type%22%3A%22tax%22%7D%5D%2C%22shippingOptions%22%3A%5B%5D%2C%22selectedShippingMethod%22%3A%22%22%7D%2C%22product%22%3A%7B%22id%22%3A23480%2C%22needsShipping%22%3Atrue%2C%22total%22%3A%22110.00%22%2C%22totalCents%22%3A11000%2C%22price%22%3A%22110.00%22%2C%22currency%22%3A%22GBP%22%2C%22lineItems%22%3A%5B%7B%22label%22%3A%224MP%20Hikvision%20DS-2CD2347G3-LIS2UY%5C%2FSL%20ColorVu%203.0%20Two%20Way%20Audio%20AI%20Strobe%20Alarm%20IP%20CCTV%20Security%20Camera%20in%20Black%22%2C%22amount%22%3A%22110.00%22%2C%22type%22%3A%22product%22%7D%5D%2C%22shippingOptions%22%3A%5B%5D%7D%2C%22requiredFields%22%3A%5B%22billing_first_name%22%2C%22billing_last_name%22%2C%22billing_country%22%2C%22billing_address_1%22%2C%22billing_city%22%2C%22billing_postcode%22%2C%22billing_phone%22%2C%22billing_email%22%2C%22shipping_first_name%22%2C%22shipping_last_name%22%2C%22shipping_country%22%2C%22shipping_address_1%22%2C%22shipping_city%22%2C%22shipping_postcode%22%2C%22shipping_phone%22%2C%22account_password%22%5D%2C%22payLaterMessage%22%3A%7B%22enabled%22%3Afalse%2C%22checkout%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22cart%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22product%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22shop%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22checkoutLocation%22%3A%22shop_table%22%2C%22cartLocation%22%3A%22shop_table%22%7D%2C%22productSettings%22%3A%7B%22button_width%22%3A%22add_to_cart%22%2C%22funding%22%3A%5B%5D%7D%2C%22version%22%3A%222.0.19%22%2C%22generalData%22%3A%7B%22clientId%22%3A%22BAA7xchGkcHVCACj_qsa3NXCOz7VvQeGjxWD8Uy_L7BYHE0UbH7AeugybyhTeGWWLboUPm-ktffwTGTNVI%22%2C%22environment%22%3A%22production%22%2C%22partner_id%22%3A%22PaymentPlugins_PCP%22%2C%22page%22%3A%22product%22%2C%22version%22%3A%222.0.19%22%2C%22is_admin%22%3Afalse%2C%22restRoutes%22%3A%7B%22connect%5C%2Faccount%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Faccount%5C%2Fconnect%22%7D%2C%22domain-association-file%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Fdomain-association-file%22%7D%2C%22cart%5C%2Fitem%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fitem%22%7D%2C%22cart%5C%2Fshipping%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fshipping%22%7D%2C%22cart%5C%2Fbilling%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fbilling%22%7D%2C%22cart%5C%2Fcheckout%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fcheckout%22%7D%2C%22cart%5C%2Frefresh%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Frefresh%22%7D%2C%22cart%5C%2Forder%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Forder%22%7D%2C%22order%5C%2Fpay%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Forder%5C%2Fpay%22%7D%2C%22billing-agreement%5C%2Ftoken%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fbilling-agreement%5C%2Ftoken%5C%2F%3F%28%3FP%3Cid%3E%5B%5C%5Cw-%5D%2B%29%22%7D%2C%22billing-agreement%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fbilling-agreements%5C%2F%28%3FP%3Cid%3E%5B%5C%5Cw-%5D%2B%29%22%7D%2C%22webhook%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fwebhook%5C%2F%28%3FP%3Cenvironment%3E%5B%5C%5Cw%5D%2B%29%22%7D%2C%22admin%5C%2Forder%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Forder%5C%2F%28%3FP%3Corder_id%3E%5B%5C%5Cw%5D%2B%29%22%7D%2C%22admin%5C%2Ftracking%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Forder%5C%2F%28%3FP%3Corder_id%3E%5B%5C%5Cw%5D%2B%29%5C%2Ftracking%22%7D%2C%22admin%5C%2Fcarriers%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Forder%5C%2F%28%3FP%3Corder_id%3E%5B%5C%5Cw%5D%2B%29%5C%2Fcarriers%22%7D%2C%22admin%5C%2Fwebhook%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Fwebhook%22%7D%2C%22setup-tokens%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fvault%5C%2Fsetup-tokens%22%7D%2C%22payment-tokens%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fvault%5C%2Fpayment-tokens%22%7D%2C%22checkout%5C%2Fvalidation%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcheckout-validation%22%7D%7D%2C%22ajaxRestPath%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2F%25s%22%7D%2C%22errorMessages%22%3A%7B%22terms%22%3A%22Please%20check%20the%20terms%20and%20conditions%20before%20proceeding.%22%2C%22invalid_client_id%22%3A%22Invalid%20PayPal%20client%20ID.%20Please%20check%20your%20API%20Settings.%22%2C%22invalid_currency%22%3A%22PayPal%20does%20not%20support%20currency%20%25.%20Please%20use%20a%20supported%20currency.%22%2C%22order_button_click%22%3A%22Please%20click%20the%20%25s%20button%20before%20placing%20your%20order.%22%2C%22gpay_order_button_click%22%3A%22Please%20click%20the%20Google%20Pay%20button%20before%20placing%20your%20order%22%2C%22order_missing_address%22%3A%22Please%20fill%20out%20all%20billing%20and%20shipping%20fields%20before%20clicking%20PayPal.%22%2C%22order_missing_billing_address%22%3A%22Please%20fill%20out%20all%20billing%20fields%20before%20clicking%20PayPal.%22%2C%22cancel%22%3A%22Cancel%22%2C%22required_fields%22%3A%22Please%20fill%20out%20all%20required%20fields.%22%2C%22Y_N_NO%22%3A%223DS%20authentication%20failed.%22%2C%22Y_R_NO%22%3A%223DS%20authentication%20was%20rejected.%22%2C%22Y_U_UNKNOWN%22%3A%22Unable%20to%20complete%203DS%20authentication.%20Please%20try%20again.%22%2C%22Y_U_NO%22%3A%22Unable%20to%20complete%203DS%20authentication.%20Please%20try%20again.%22%2C%22Y_C_UNKNOWN%22%3A%223DS%20authentication%20challenge%20required%20but%20could%20not%20be%20completed.%20Please%20try%20again.%22%2C%22Y__NO%22%3A%223DS%20authentication%20could%20not%20be%20processed.%20Please%20try%20again.%22%2C%22U__UNKNOWN%22%3A%223DS%20system%20is%20currently%20unavailable.%20Please%20try%20again%20later.%22%2C%22___UNKNOWN%22%3A%223DS%20authentication%20status%20unknown.%20Please%20try%20again.%22%2C%22total%22%3A%22Total%22%2C%22ERROR_VALIDATING_MERCHANT%22%3A%22Domain%20registration%20is%20not%20complete.%20Visit%20https%3A%5C%2F%5C%2Fpaymentplugins.com%5C%2Fdocumentation%5C%2Fpaypal%5C%2Fapplepay%5C%2Fsetup%5C%2F%20for%20instructions%20on%20completing%20domain%20registration.%22%7D%2C%22i18n%22%3A%7B%22locale%22%3A%22%7B%5C%22BE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22CY%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22DE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22FR%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GR%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22IE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Eircode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%7D%7D%2C%5C%22IT%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22NL%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22PT%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22ES%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22SE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GB%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%2C%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22default%5C%22%3A%7B%5C%22first_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22First%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-first%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22given-name%5C%22%2C%5C%22priority%5C%22%3A10%7D%2C%5C%22last_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Last%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-last%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22family-name%5C%22%2C%5C%22priority%5C%22%3A20%7D%2C%5C%22company%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Company%20name%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22organization%5C%22%2C%5C%22priority%5C%22%3A30%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22country%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22country%5C%22%2C%5C%22label%5C%22%3A%5C%22Country%20%5C%5C%5C%2F%20Region%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%2C%5C%22update_totals_on_change%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22country%5C%22%2C%5C%22priority%5C%22%3A40%2C%5C%22hidden%5C%22%3Afalse%7D%2C%5C%22address_1%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Street%20address%5C%22%2C%5C%22placeholder%5C%22%3A%5C%22House%20number%20and%20street%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line1%5C%22%2C%5C%22priority%5C%22%3A50%7D%2C%5C%22address_2%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%5C%22%2C%5C%22label_class%5C%22%3A%5B%5C%22screen-reader-text%5C%22%5D%2C%5C%22placeholder%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%20%28optional%29%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line2%5C%22%2C%5C%22priority%5C%22%3A60%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22city%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Town%20%5C%5C%5C%2F%20City%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level2%5C%22%2C%5C%22priority%5C%22%3A70%7D%2C%5C%22state%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22state%5C%22%2C%5C%22label%5C%22%3A%5C%22State%20%5C%5C%5C%2F%20County%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22state%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level1%5C%22%2C%5C%22priority%5C%22%3A80%7D%2C%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%20%5C%5C%5C%2F%20ZIP%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22postcode%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22postal-code%5C%22%2C%5C%22priority%5C%22%3A90%7D%2C%5C%22phone%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Phone%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22type%5C%22%3A%5C%22tel%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22phone%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22tel%5C%22%2C%5C%22priority%5C%22%3A100%7D%7D%7D%22%2C%22locale_fields%22%3A%22%7B%5C%22address_1%5C%22%3A%5C%22%23billing_address_1_field%2C%20%23shipping_address_1_field%5C%22%2C%5C%22address_2%5C%22%3A%5C%22%23billing_address_2_field%2C%20%23shipping_address_2_field%5C%22%2C%5C%22state%5C%22%3A%5C%22%23billing_state_field%2C%20%23shipping_state_field%2C%20%23calc_shipping_state_field%5C%22%2C%5C%22postcode%5C%22%3A%5C%22%23billing_postcode_field%2C%20%23shipping_postcode_field%2C%20%23calc_shipping_postcode_field%5C%22%2C%5C%22city%5C%22%3A%5C%22%23billing_city_field%2C%20%23shipping_city_field%2C%20%23calc_shipping_city_field%5C%22%2C%5C%22country%5C%22%3A%5C%22%23billing_country_field%2C%20%23shipping_country_field%2C%20%23calc_shipping_country_field%5C%22%2C%5C%22phone%5C%22%3A%5C%22%23billing_phone_field%2C%20%23shipping_phone_field%5C%22%7D%22%7D%2C%22ppcp_data%22%3A%7B%22title%22%3A%22PayPal%22%2C%22sections%22%3A%5B%22order_pay%22%2C%22checkout%22%5D%2C%22needsSetupToken%22%3Afalse%2C%22funding%22%3A%5B%22paypal%22%5D%2C%22buttons_order%22%3A%5B%22paypal%22%2C%22paylater%22%2C%22venmo%22%2C%22card%22%5D%2C%22buttonPlacement%22%3A%22place_order%22%2C%22buttons%22%3A%7B%22paypal%22%3A%7B%22layout%22%3A%22vertical%22%2C%22label%22%3A%22paypal%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%2C%22color%22%3A%22gold%22%7D%2C%22paylater%22%3A%7B%22layout%22%3A%22vertical%22%2C%22label%22%3A%22paypal%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%2C%22color%22%3A%22gold%22%7D%2C%22card%22%3A%7B%22layout%22%3A%22vertical%22%2C%22label%22%3A%22paypal%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%2C%22color%22%3A%22black%22%2C%22tagline%22%3Afalse%7D%2C%22venmo%22%3A%7B%22layout%22%3A%22vertical%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%7D%7D%2C%22paypal_sections%22%3A%5B%22order_pay%22%2C%22checkout%22%2C%22add_payment_method%22%5D%2C%22paylater_sections%22%3A%5B%22cart%22%2C%22checkout%22%2C%22order_pay%22%5D%2C%22credit_card_sections%22%3A%5B%22cart%22%2C%22checkout%22%2C%22order_pay%22%5D%2C%22venmo_sections%22%3A%5B%22checkout%22%2C%22order_pay%22%5D%2C%22placeOrderEnabled%22%3Afalse%7D%2C%22recaptcha%22%3A%7B%22site_key%22%3Anull%2C%22i18n%22%3A%7B%22error%22%3A%22reCAPTCHA%20error%3A%20%25s%22%7D%2C%22paymentMethods%22%3A%5B%22ppcp%22%5D%7D%2C%22queryParams%22%3A%7B%22client-id%22%3A%22BAA7xchGkcHVCACj_qsa3NXCOz7VvQeGjxWD8Uy_L7BYHE0UbH7AeugybyhTeGWWLboUPm-ktffwTGTNVI%22%2C%22intent%22%3A%22capture%22%2C%22commit%22%3A%22true%22%2C%22components%22%3A%22buttons%2Cmessages%2Ccard-fields%2Cgooglepay%2Capplepay%22%2C%22currency%22%3A%22GBP%22%2C%22enable-funding%22%3A%22paylater%22%2C%22data-partner-attribution-id%22%3A%22PaymentPlugins_PCP%22%2C%22data-page-type%22%3A%22product-details%22%2C%22locale%22%3A%22en_US%22%7D%2C%22ppcp_api%22%3A%5B%5D%2C%22ppcp_advanced%22%3A%7B%22miniCartLocation%22%3A%22below%22%7D%2C%22ppcp_paylater_message%22%3A%5B%5D%7D' ) );
https://discountcctvsupplier.co.uk/wp-content/plugins/elementskit-lite/widgets/init/assets/js/widget-scripts.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/accounting/accounting.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/selectWoo/selectWoo.full.min.js
var yith_wcan_shortcodes = {"query_param":"yith_wcan","query_vars":[],"supported_taxonomies":["product_cat","product_tag","pa_brand","pa_camera","pa_camera-resolution","pa_channel","pa_color","pa_colour","pa_compression","pa_hdd","pa_ip-rating","pa_ir-distance","pa_lens","pa_material","pa_max-resolution","pa_megapixel","pa_number-of-cameras","pa_patterns-textures","pa_size"],"content":"#main","change_browser_url":"1","instant_filters":"1","ajax_filters":"1","reload_on_back":"1","show_clear_filter":"","scroll_top":"","scroll_target":"","modal_on_mobile":"","session_param":"","show_current_children":"","loader":"","toggles_open_on_modal":"","mobile_media_query":"991","base_url":"https://discountcctvsupplier.co.uk/product/4mp-hikvision-ds-2cd2347g3-lis2uy-sl-colorvu-3-0-two-way-audio-ai-strobe-alarm-ip-cctv-security-camera-in-black/","terms_per_page":"10","currency_format":{"symbol":"£","decimal":".","thousand":",","precision":2,"format":"%s%v"},"labels":{"empty_option":"All","search_placeholder":"Search...","no_items":"No item found","show_more":"Show more","close":"Close","save":"Save","show_results":"Show results","clear_selection":"Clear","clear_all_selections":"Clear All"},"urls":{"render_filter":"/?wc-ajax=yith_wcan_render_filter"},"nonces":{"render_filter":"09422834ae","render_remaining_terms":"c0d704e140","get_filter_terms":"d07ecc9b3f"}};
//# sourceURL=yith-wcan-shortcodes-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/yith-woocommerce-ajax-navigation/assets/js/yith-wcan-shortcodes.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/dist/hooks.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/dist/i18n.min.js
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
https://discountcctvsupplier.co.uk/wp-content/plugins/contact-form-7/includes/swv/js/index.js
var wpcf7 = {
"api": {
"root": "https:\/\/discountcctvsupplier.co.uk\/wp-json\/",
"namespace": "contact-form-7\/v1"
},
"cached": 1
};
//# sourceURL=contact-form-7-js-before
https://discountcctvsupplier.co.uk/wp-content/plugins/contact-form-7/includes/js/index.js
var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://discountcctvsupplier.co.uk/cart-2/","is_cart":"","cart_redirect_after_add":"no"};
//# sourceURL=wc-add-to-cart-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js
var aws_vars = {"sale":"Sale!","sku":"SKU: ","showmore":"View all results","noresults":"Nothing found"};
//# sourceURL=aws-script-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/advanced-woo-search/assets/js/common.min.js
dataLayer.push({"ecommerce":{"currency":"GBP","value":110,"items":[{"item_id":23480,"item_name":"4MP Hikvision DS-2CD2347G3-LIS2UY\/SL ColorVu 3.0 Two Way Audio AI Strobe Alarm IP CCTV Security Camera in Black","sku":"Hikvision DS-2CD2347G3-LIS2UY\/SL-1","price":110,"stocklevel":null,"stockstatus":"instock","google_business_vertical":"retail","item_category":"Dome ","item_category2":" Turret Hikvision IP Cameras","id":23480}]},"event":"view_item"});
//# sourceURL=gtm4wp-additional-datalayer-pushes-js-after
https://discountcctvsupplier.co.uk/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-ecommerce-generic.js
https://discountcctvsupplier.co.uk/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-woocommerce.js
var wc_facebook_signals_params = {"ajax_url":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","nonce":"f4cf1449af","action":"wc_facebook_update_signals_state"};
//# sourceURL=wc-facebook-signals-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/facebook-for-woocommerce/assets/js/facebook-for-woocommerce-signals.js
https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/dist/js/njt-whatsapp.js
var njt_wa_global = {"ajax_url":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","nonce":"b913e0457b","defaultAvatarSVG":"\u003Csvg width=\"48px\" height=\"48px\" class=\"nta-whatsapp-default-avatar\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 512 512\" style=\"enable-background:new 0 0 512 512;\" xml:space=\"preserve\"\u003E\n \u003Cpath style=\"fill:#EDEDED;\" d=\"M0,512l35.31-128C12.359,344.276,0,300.138,0,254.234C0,114.759,114.759,0,255.117,0\n S512,114.759,512,254.234S395.476,512,255.117,512c-44.138,0-86.51-14.124-124.469-35.31L0,512z\"/\u003E\n \u003Cpath style=\"fill:#55CD6C;\" d=\"M137.71,430.786l7.945,4.414c32.662,20.303,70.621,32.662,110.345,32.662\n c115.641,0,211.862-96.221,211.862-213.628S371.641,44.138,255.117,44.138S44.138,137.71,44.138,254.234\n c0,40.607,11.476,80.331,32.662,113.876l5.297,7.945l-20.303,74.152L137.71,430.786z\"/\u003E\n \u003Cpath style=\"fill:#FEFEFE;\" d=\"M187.145,135.945l-16.772-0.883c-5.297,0-10.593,1.766-14.124,5.297\n c-7.945,7.062-21.186,20.303-24.717,37.959c-6.179,26.483,3.531,58.262,26.483,90.041s67.09,82.979,144.772,105.048\n c24.717,7.062,44.138,2.648,60.028-7.062c12.359-7.945,20.303-20.303,22.952-33.545l2.648-12.359\n c0.883-3.531-0.883-7.945-4.414-9.71l-55.614-25.6c-3.531-1.766-7.945-0.883-10.593,2.648l-22.069,28.248\n c-1.766,1.766-4.414,2.648-7.062,1.766c-15.007-5.297-65.324-26.483-92.69-79.448c-0.883-2.648-0.883-5.297,0.883-7.062\n l21.186-23.834c1.766-2.648,2.648-6.179,1.766-8.828l-25.6-57.379C193.324,138.593,190.676,135.945,187.145,135.945\"/\u003E\n \u003C/svg\u003E","defaultAvatarUrl":"https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/img/whatsapp_logo.svg","timezone":"+00:00","i18n":{"online":"Online","offline":"Offline"},"urlSettings":{"onDesktop":"api","onMobile":"api","openInNewTab":"ON"}};
//# sourceURL=nta-js-global-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/js/whatsapp-button.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woo-fly-cart/assets/perfect-scrollbar/js/perfect-scrollbar.jquery.min.js
var wc_cart_fragments_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","cart_hash_key":"wc_cart_hash_8bd68889a1dfd849a8a2b7de551ca5ea","fragment_name":"wc_fragments_8bd68889a1dfd849a8a2b7de551ca5ea","request_timeout":"5000"};
//# sourceURL=wc-cart-fragments-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js
var woofc_vars = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","nonce":"2b571ca1c0","scrollbar":"yes","auto_show":"yes","auto_show_normal":"yes","confetti":"","show_cart":"no","show_checkout":"no","delay":"300","undo_remove":"yes","confirm_remove":"no","instant_checkout":"no","instant_checkout_open":"no","confirm_empty":"no","confirm_empty_text":"Do you want to empty the cart?","confirm_remove_text":"Do you want to remove this item?","undo_remove_text":"Undo?","removed_text":"%s was removed.","manual_show":"","reload":"no","suggested_carousel":"1","save_for_later_carousel":"1","upsell_funnel_carousel":"1","slick_params":"{\"slidesToShow\":1,\"slidesToScroll\":1,\"dots\":true,\"arrows\":false,\"autoplay\":false,\"autoplaySpeed\":3000,\"rtl\":false}","confetti_params":"{\"particleCount\":100,\"spread\":70,\"origin\":{\"y\":0.6}}","is_cart":"","is_checkout":"","cart_url":"","hide_count_empty":"yes","wc_checkout_js":"https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/checkout.js"};
//# sourceURL=woofc-frontend-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woo-fly-cart/assets/js/frontend.js
https://discountcctvsupplier.co.uk/wp-content/themes/hello-elementor/assets/js/hello-frontend.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js
var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
//# sourceURL=wc-order-attribution-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/facebook-for-woocommerce/assets/js/frontend/pixel-events.js
if (typeof clientParamBuilder !== "undefined" && !/(?:^|;\s*)wc_facebook_signals_state=held(?:;|$)/.test(document.cookie)) {
clientParamBuilder.processAndCollectAllParams(window.location.href);
}
//# sourceURL=facebook-capi-param-builder-js-after
var wooaa_vars = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","nonce":"e91107b3c1","product_types":"all","ignore_btn_class":".disabled,.wpc-disabled,.wooaa-disabled,.wooco-disabled,.woosb-disabled,.woobt-disabled,.woosg-disabled,.woofs-disabled,.woopq-disabled,.wpcpo-disabled,.wpcbn-btn,.wpcme-btn,.wpcev-btn,.wpcuv-update","ignore_form_data":"","cart_url":"https://discountcctvsupplier.co.uk/cart-2/","cart_redirect_after_add":"no"};
//# sourceURL=wooaa-frontend-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/wpc-ajax-add-to-cart/assets/js/frontend.js
!function (w, d, t) {
w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{},ttq._partner=ttq._partner||"WooCommerce";var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
ttq.load('D6JC3HJC77UCBL6SE0N0');
}(window, document, 'ttq');
//# sourceURL=tiktok-pixel-tracking-handle-header-js-after
/* WooCommerce Facebook Integration Event Tracking */
fbq('set', 'agent', 'woocommerce_0-10.9.1-3.7.4', '1071403255027834');
window.wcFacebookPixelFiredEvents = window.wcFacebookPixelFiredEvents || {};
if (!window.wcFacebookPixelFiredEvents["6c5467d3-4a7a-4a06-addf-04817622b90f"]) {
window.wcFacebookPixelFiredEvents["6c5467d3-4a7a-4a06-addf-04817622b90f"] = true;
if (window.FacebookSignals && typeof window.FacebookSignals.trackEvent === 'function') {
window.FacebookSignals.trackEvent('PageView', {
"source": "woocommerce_0",
"version": "10.9.1",
"pluginVersion": "3.7.4"
}, null, 'track', "6c5467d3-4a7a-4a06-addf-04817622b90f");
} else {
fbq('track', 'PageView', {
"source": "woocommerce_0",
"version": "10.9.1",
"pluginVersion": "3.7.4"
}, {
"eventID": "6c5467d3-4a7a-4a06-addf-04817622b90f"
});
}
}
/* WooCommerce Facebook Integration Event Tracking */
fbq('set', 'agent', 'woocommerce_0-10.9.1-3.7.4', '1071403255027834');
window.wcFacebookPixelFiredEvents = window.wcFacebookPixelFiredEvents || {};
if (!window.wcFacebookPixelFiredEvents["776e08bd-aa1d-4592-b244-1df460a7632c"]) {
window.wcFacebookPixelFiredEvents["776e08bd-aa1d-4592-b244-1df460a7632c"] = true;
if (window.FacebookSignals && typeof window.FacebookSignals.trackEvent === 'function') {
window.FacebookSignals.trackEvent('ViewContent', {
"source": "woocommerce_0",
"version": "10.9.1",
"pluginVersion": "3.7.4",
"content_name": "4MP Hikvision DS-2CD2347G3-LIS2UY\/SL ColorVu 3.0 Two Way Audio AI Strobe Alarm IP CCTV Security Camera in Black",
"content_ids": "[\"23480\"]",
"content_type": "product",
"contents": "[{\"id\":\"23480\",\"quantity\":1}]",
"content_category": "IP CAMERAS",
"value": "110",
"currency": "GBP"
}, null, 'track', "776e08bd-aa1d-4592-b244-1df460a7632c");
} else {
fbq('track', 'ViewContent', {
"source": "woocommerce_0",
"version": "10.9.1",
"pluginVersion": "3.7.4",
"content_name": "4MP Hikvision DS-2CD2347G3-LIS2UY\/SL ColorVu 3.0 Two Way Audio AI Strobe Alarm IP CCTV Security Camera in Black",
"content_ids": "[\"23480\"]",
"content_type": "product",
"contents": "[{\"id\":\"23480\",\"quantity\":1}]",
"content_category": "IP CAMERAS",
"value": "110",
"currency": "GBP"
}, {
"eventID": "776e08bd-aa1d-4592-b244-1df460a7632c"
});
}
}
//# sourceURL=facebook-for-woocommerce-inline-js-after
https://discountcctvsupplier.co.uk/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/elementor/assets/js/frontend-modules.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/jquery/ui/core.min.js
var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":993,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":767,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":992,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1024,"default_value":1200,"direction":"max","is_enabled":true},"laptop":{"label":"Laptop","value":1280,"default_value":1366,"direction":"max","is_enabled":true},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":true},"version":"4.1.4","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"container":true,"e_panel_promotions":true,"hello-theme-header-footer":true,"nested-elements":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true},"urls":{"assets":"https:\/\/discountcctvsupplier.co.uk\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/discountcctvsupplier.co.uk\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/discountcctvsupplier.co.uk\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"26829c057a","atomicFormsSendForm":"8999f54c0b"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"viewport_tablet":992,"active_breakpoints":["viewport_mobile","viewport_tablet","viewport_tablet_extra","viewport_laptop"],"viewport_laptop":1280,"stretched_section_container":"#main","viewport_mobile":767,"viewport_tablet_extra":1024,"lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"title","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":23480,"title":"4MP%20Hikvision%20DS-2CD2347G3-LIS2UY%2FSL%20ColorVu%203.0%20Two%20Way%20Audio%20AI%20Strobe%20Alarm%20IP%20CCTV%20Security%20Camera%20in%20Black%20-%20AAA%20CCTV","excerpt":"<p class=\"product__name page-title ejs-page-title mb-2\">Hikvision DS-2CD2347G3-LIS2UY\/SL 4MP ColorVu 3.0 Two-Way Audio CCTV Camera AcuSense AI & Strobe Alarm For Smart Security. black housing<\/p>","featuredImage":"https:\/\/discountcctvsupplier.co.uk\/wp-content\/uploads\/2025\/11\/Hikvision-DS-2CD2347G3-LIS2UY-SL.1-scaled.jpg"}};
//# sourceURL=elementor-frontend-js-before
https://discountcctvsupplier.co.uk/wp-content/plugins/elementor/assets/js/frontend.min.js
var ekit_config = {"ajaxurl":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","nonce":"79dd1c632c"};
//# sourceURL=ekit-core-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/elementskit-lite/widgets/init/assets/js/widgets/core.js
https://discountcctvsupplier.co.uk/wp-content/plugins/elementskit-lite/widgets/init/assets/js/widgets/nav-menu.js
var njt_wa = {"gdprStatus":"","accounts":[{"accountId":23526,"accountName":"CCTV HelpDesk","avatar":"","number":"+447305398061","title":"Hello, Click here...","predefinedText":"","willBeBackText":"I will be back in [njwa_time_work]","dayOffsText":"I will be back soon","isAlwaysAvailable":"ON","daysOfWeekWorking":{"sunday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"monday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"tuesday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"wednesday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"thursday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"friday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"saturday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]}}}],"options":{"display":{"displayCondition":"showAllPage","includePages":[],"excludePages":[],"includePosts":[],"showOnDesktop":"ON","showOnMobile":"ON","time_symbols":"h:m"},"styles":{"title":"Start a Conversation","responseText":"The team typically replies in a few minutes.","description":"Hi! Click one of our member below to chat on \u003Cstrong\u003EWhatsApp\u003C/strong\u003E","backgroundColor":"#2db742","textColor":"#fff","titleSize":"18","accountNameSize":"14","descriptionTextSize":"12","regularTextSize":"11","scrollHeight":"500","isShowScroll":"OFF","isShowResponseText":"OFF","btnLabel":"Need Help?","btnLabelWidth":"95","btnPosition":"right","btnLeftDistance":"30","btnRightDistance":"30","btnBottomDistance":"30","isShowBtnLabel":"ON","isShowGDPR":"OFF","gdprContent":"Please accept our \u003Ca href=\"https://ninjateam.org/privacy-policy/\"\u003Eprivacy policy\u003C/a\u003E first to start a conversation."},"analytics":{"enabledGoogle":"OFF","enabledFacebook":"OFF","enabledGoogleGA4":"OFF"}}};
//# sourceURL=nta-js-popup-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/js/whatsapp-popup.js
var glaGtagData = {"currency_minor_unit":"2","products":{"23480":{"name":"4MP Hikvision DS-2CD2347G3-LIS2UY/SL ColorVu 3.0 Two Way Audio AI Strobe Alarm IP CCTV Security Camera in Black","price":110}}};
//# sourceURL=gla-gtag-events-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/google-listings-and-ads/js/build/gtag-events.js
var wcpa_front = {"api_nonce":null,"root":"https://discountcctvsupplier.co.uk/wp-json/wcpa/front/","assets_url":"https://discountcctvsupplier.co.uk/wp-content/plugins/woo-custom-product-addons-pro/assets/","date_format":"F j, Y","time_format":"g:i a","validation_messages":{"uploadPending":"Files are being uploaded.","formError":"Fix the errors shown above","checkCaptcha":"Tick the \"I'm not a robot\" verification","requiredError":"Field is required","allowedCharsError":"Characters %s is not supported","patternError":"Pattern not matching","minlengthError":"Minimum %s characters required","maxlengthError":"Maximum %s characters allowed","minValueError":"Minimum value is %s","maxValueError":"Maximum value is %s","minFieldsError":"Select minimum %s fields","maxFieldsError":"Select maximum %s fields","maxFileCountError":"Maximum %s files allowed","minFileCountError":"Minimum %s files required","maxFileSizeError":"Maximum file size should be %s","minFileSizeError":"Minimum file size should be %s","fileExtensionError":"File type is not supported","quantityRequiredError":"Please enter a valid quantity","otherFieldError":"Other value required","charleftMessage":"%s characters left","validEmailError":"Provide a valid email address","validUrlError":"Provide a valid URL","minQuantityError":"Minimum quantity required is %s","maxQuantityError":"Maximum quantity allowed is %s","groupMinError":"Requires minimum %s","groupMaxError":"Allowed maximum %s","gt_translate_keys":["uploadPending","formError","checkCaptcha","requiredError","allowedCharsError","patternError","minlengthError","maxlengthError","minValueError","maxValueError","minFieldsError","maxFieldsError","maxFileCountError","minFileCountError","maxFileSizeError","minFileSizeError","fileExtensionError","quantityRequiredError","otherFieldError","charleftMessage","validEmailError","validUrlError","minQuantityError","maxQuantityError","groupMinError","groupMaxError"]},"google_map_api":"","reCAPTCHA_site_key":"","recaptcha_v":"v2","ajax_add_to_cart":"","summary_order":["option_price","product_price","fee","discount","total_price"],"change_price_as_quantity":"","show_field_price_x_quantity":"","disable_validation_scroll":"","gallery_update_field":"last_field","update_top_price":"1","datepicker_disableMobile":"","radio_unselect_img":"","strings":{"place_selector_street":"Street Address","place_selector_city":"City","place_selector_state":"State","place_selector_zip":"Zip Code","place_selector_country":"Country","place_selector_latitude":"Latitude","place_selector_longitude":"Longitude","file_button_text":"Choose File","file_placeholder":"{count} Files","file_droppable_action_text":"Browse","file_droppable_desc_text":"or {action} to choose a file","file_upload_completed":"Completed","other":"Other","clearSelection":"Clear Selection","repeater_add":"Add Field","repeater_remove":"Remove Field","file_droppable_text":"Drag and Drop Files Here","to":" to ","gt_translate_keys":["place_selector_street","place_selector_city","place_selector_state","place_selector_zip","place_selector_country","place_selector_latitude","place_selector_longitude","file_button_text","file_placeholder","file_droppable_action_text","file_droppable_desc_text","file_upload_completed","other","clearSelection","repeater_add","repeater_remove","file_droppable_text","to"]},"i18n_view_cart":"View cart","options_price_format":"({price})","wc_price_format":"%1$s%2$s","hide_option_price_zero":"","discount_show_field_price":"1","discount_strike_field_price":"1","discount_strike_summary_price":"1","discount_strike_total_price":"1","responsive_layout":"","product_price_parent_selector":".summary","accordion_open":"first_opened","woo_price_suffix":"","prices_include_tax":"","isAdmin":"","cart_url":"https://discountcctvsupplier.co.uk/cart-2/","is_cart":"","user_roles":["guest"],"google_map_countries":"","init_triggers":["qv_loader_stop","quick_view_pro:load","elementor/popup/show","xt_wooqv-product-loaded","woodmart-quick-view-displayed","porto_init_countdown","woopack.quickview.ajaxload","quick-view-displayed","update_lazyload","riode_load","yith_infs_added_elem","jet-popup/show-event/after-show","etheme_quick_view_content_loaded","wc_backbone_modal_loaded"],"wc_currency_symbol":"\u00a3","wc_thousand_sep":",","wc_price_decimals":"2","price_format":"%1$s%2$s","wc_decimal_sep":".","wc_currency_pos":"left","mc_unit":"1","addons":[],"upload_method":"normal"};
//# sourceURL=wcpa-front-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woo-custom-product-addons-pro/assets/js/front-end.js
jQuery(document).ready(function () {
if (typeof wp !== "undefined" && wp.hooks) {
wp.hooks.addAction('wcpa_fields_updated', 'wcpa', function (price, _fieldData) {
let ele = document.querySelector('.summary .price');
if(ele){
let totalPrice_exc_tax_fixed = parseFloat(price.totalPrice_exc_tax).toFixed(2);
let totalPrice_inc_tax_fixed = parseFloat(price.totalPrice_inc_tax).toFixed(2);
let code = '<span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">£</span>'+totalPrice_exc_tax_fixed+'</bdi></span> <small style="font-size: 12px;">ex. VAT</small> - <span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">£</span>'+totalPrice_inc_tax_fixed+'</bdi></span> <small style="font-size: 12px;">inc. VAT</small>';
ele.innerHTML = code;
}
})
}
});
jQuery(document).ready(function($) {
var wt_related_products = jQuery('.wt-related-products .owl-carousel');if ("function" === typeof wt_related_products.owlCarousel) {
wt_related_products.owlCarousel({
loop: false,
margin: 10,
nav: true,
navText: [
"<i class='dashicons dashicons-arrow-left-alt2 wt-left'></i>",
"<i class='dashicons dashicons-arrow-right-alt2 wt-right'></i>"
],
//autoplay: true,
autoplayHoverPause: true,
responsive: {
0: {
items: 1 },
600: {
items: 2 },
1000: {
items: 6 }
}
});
}
jQuery(".wt-related-products>.carousel-wrap>.owl-carousel>.owl-stage-outer>.owl-stage>.owl-item>div[class*='col-']").removeClass (function (index, css) {
return (css.match (/(^|\s)col-\S+/g) || []).join(' ');
});
/* Theme compatability for hover effect*/
});