mmRequestCallbacks[1]({"Scripts":[{"Name":"Employee Range Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Employee Range': 'company.employee_range'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"PaidKeyword Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Below is the code that has been generated automatically from the attribute's rules.\n\nvar i, rule, url, value, attrName = \"PaidKeyword\";\n\n// start config\nvar config = {\n    \"urls\": {\n        \"rules\": [\n            {\n                \"condition\": \"contains\",\n                \"value\": \"Yes\",\n                \"text\": \"utm_medium=paidsearch\"\n            },\n            {\n                \"condition\": \"does not contain\",\n                \"value\": \"No\",\n                \"text\": \"brand_\"\n            }\n        ],\n        \"defaultValue\": \"No\"\n    }\n};\n// end config\n\nvar getAttributeValue = function (rule) {\n    return rule.value;\n};\n\n\nvar checkCondition = function (href, condition) {\n\n    var result = false;\n    switch (condition) {\n\n    case 'contains':\n        if (href.indexOf(rule.text) !== -1) {\n            result = true;\n        }\n        break;\n    case 'does not contain':\n        if (href.indexOf(rule.text) === -1) {\n            result = true;\n        }\n        break;\n\n    default:\n        result = false;\n    }\n\n    return result;\n};\n\nvalue = '';\n\nurl = document.location.href || '';\n\nfor (i = 0; i < config.urls.rules.length; i++) {\n    rule = config.urls.rules[i];\n\n    if (checkCondition(url, rule.condition)) {\n        value = getAttributeValue(rule);\n        break;\n    }\n}\n\nif (value) {\n    visitor.storeAttr(attrName, value);\n}\nelse {\n    visitor.storeAttr(attrName, config.urls.defaultValue);\n}","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Industry Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Industry': 'company.industry'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"LoggedIn Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var loggedIn = visitor.getAttr('LoggedIn');\n\nif (!loggedIn)\n{\n\tvisitor.storeAttr('LoggedIn', 'NA');\n}\n\nvar shouldBeStopped = false;\n\nevents.domReady(function(){\n  setTimeout(function() {\n    shouldBeStopped = true;\n  }, 2000);\n\n  when(function() {\n    return document.querySelectorAll('.navbar-nav:nth-child(2) .score-menu-list-item a').length > 0;\n  }, function() {\n    return shouldBeStopped;\n  })\n  .done(function() {\n    // Sageone Customers\n    document.querySelector('.navbar-nav:nth-child(2) .score-menu-list-item a[href*=\"mysageone.na.sageone.com\"]').addEventListener(\"click\", function(e){ \n\t  visitor.storeAttr('LoggedIn', 'Yes');\n    });    \n    // Partners\n    /*document.querySelector('.navbar-nav:nth-child(2) .score-composite-link[href*=\"my.sage.co.uk\"]:nth-child(5)').addEventListener(\"click\", function(e){ \n\t  visitor.storeAttr('LoggedIn', 'Yes');\n    });*/\n  });\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Naics Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Naics': 'company.naics'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Company Name Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Company Name': 'company.name'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Profile Fit Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Profile Fit': 'scores.sage.profile_fit'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Buying Stage Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Buying Stage': 'scores.sage.buying_stage'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Naics Desc Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n  // specify your Custom Attribute and\n  // 6sense storage item path here as\n  // 'CustomAttributeName': 'path'\n  'Naics Desc': 'company.naics_description'\n}\n\nfunction isValidItem(v) {\n  return typeof v === 'string' || typeof v === 'number';\n}\n\nfunction getDetails() {\n  try {\n    var companyDetails = localStorage.getItem('_6senseCompanyDetails');\n    if (companyDetails) {\n      companyDetails = JSON.parse(companyDetails);\n      Object.keys(config).forEach(function(attr) {\n        var path = config[attr],\n            companyDetailsBranch = companyDetails,\n            error = false;\n\n        path.split('.').forEach(function(key) {\n          if ( companyDetailsBranch[key] ) {\n            companyDetailsBranch = companyDetailsBranch[key];\n          } else {\n            error = true;\n          }\n        });\n\n        if (!error && isValidItem(companyDetailsBranch)) {\n          visitor.storeAttr(attr, companyDetailsBranch);\n        }\n      });\n    }\n  } catch(e) {}\n}\n\nwhen(window._storagePopulated).then(function() {\n  getDetails();\n});","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"SBCAPageVisit Attribute Capture Script","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var customAttributeName = 'SBCAPageVisit';\n\nvar pagesSBCA = [\n    '/en-us/sage-business-cloud/accounting/',\n    '/en-us/sage-business-cloud/accounting/app/',\n    '/en-us/sage-business-cloud/accounting/features/accounts-payable/',\n    '/en-us/sage-business-cloud/accounting/features/accounts-receivable/',\n    '/en-us/sage-business-cloud/accounting/features/autoentry/',\n    '/en-us/sage-business-cloud/accounting/features/billing/',\n    '/en-us/sage-business-cloud/accounting/features/connect-my-bank/',\n    '/en-us/sage-business-cloud/accounting/features/expenses/',\n    '/en-us/sage-business-cloud/accounting/features/invoice-templates/',\n    '/en-us/sage-business-cloud/accounting/features/invoicing/',\n    '/en-us/sage-business-cloud/accounting/features/invoicing/integrate-invoice-payments/',\n    '/en-us/sage-business-cloud/accounting/features/mac/',\n    '/en-us/sage-business-cloud/accounting/features/reporting/',\n    '/en-us/sage-business-cloud/accounting/features/stock-management/',\n    '/en-us/sage-business-cloud/accounting/free-trial/',\n    '/en-us/sage-business-cloud/accounting/industry/',\n    '/en-us/sage-business-cloud/accounting/industry/accountants/',\n    '/en-us/sage-business-cloud/accounting/industry/construction/',\n    '/en-us/sage-business-cloud/accounting/industry/contractor/',\n    '/en-us/sage-business-cloud/accounting/industry/finance/',\n    '/en-us/sage-business-cloud/accounting/industry/legal/',\n    '/en-us/sage-business-cloud/accounting/industry/professional-services/',\n    '/en-us/sage-business-cloud/accounting/industry/retail/',\n    '/en-us/sage-business-cloud/accounting/industry/self-employed/',\n    '/en-us/sage-business-cloud/accounting/industry/startups/',\n    '/en-us/sage-business-cloud/accounting/pricing/',\n    '/en-us/sage-business-cloud/accounting/switch-to-sage/',\n    '/en-us/sage-business-cloud/accounting/switch-to-sage/sage-vs-quickbooks/',\n    '/en-us/sage-business-cloud/accounting/switch-to-sage/sage-vs-xero/',\n    '/en-us/cp/accounting/',\n];\n\nvar isSBCAVisited = false;\n\nif (pagesSBCA.indexOf(window.location.pathname) > -1) {\n    //Drop a cookie or update the expiration date\n    visitor.setData('sbca', true, 30);\n}\n\nif (visitor.getData('sbca')) {\n    isSBCAVisited = true;\n}\n\nif (isSBCAVisited) {\n    // If the visitor's last visited product is SBCA\n    visitor.storeAttr(customAttributeName, 'True');\n} else {\n    // If the visitor has not visited any of those\n    visitor.storeAttr(customAttributeName, 'False');\n}","Order":2000,"HighLevelApiVersion":"1.25"},{"Name":"Integrations module","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Integrations module v0.9.7\n!function(){function a(){function a(a,b){function i(b){return a=a||\"\",g(\"Integrations.register(\"+a+\"): \"+(b||\"\").toString())}var j,k;return b=e(b)?b:{},(a=(\"string\"==typeof a?a:\"\").toLowerCase().replace(/^\\s+|\\s+$/g,\"\"))?l[a]?(i(m.errors.alreadyRegistered),null):(b.name=a,j=h(b,{}),k={validate:c(j.validate)?j.validate:f,check:c(j.check)?j.check:f,interval:d(j.interval)?j.interval:50,timeout:d(j.timeout)?j.timeout:2e3,exec:c(j.exec)?j.exec:f,options:j},j=h(k,j),l[a]=j):(i(m.errors.missingRegisterName),null)}function i(a,b){b=e(b)?b:{};var c,d,f,g,i=new Deferred;if(a=(a||\"\").toLowerCase(),i.integrationName=a,!l[a])return m.reject(i,m.errors.unregisteredIntegration);if(c=h(l[a],{}),c=h(b,c),(f=c.validate(c))!==!0)return m.reject(i,f);if(d=c.campaign,(g=m.validateCampaignRequired(c,i))!==!0)return m.reject(i,g);if(c.isProduction=m.isProduction(),c.attributeMapRequired){var j=m.isValidAttributeMap(c.attributeMap);if(j!==!0)return m.reject(i,j)}return\"pending\"!==i.state()?i.promise():(\"never\"!==c.timeout&&m.setFailTimeout(c,i),m.check(c).then(function(a){return m.exec(c)}).then(function(a){return c.result=a,m.resolve(i,c)}).fail(function(a){return m.reject(i,a)}),i.promise())}function j(a,b){a=(a||\"\").toLowerCase();var c=l[a];return!!c&&(b=e(b)?b:{},l[a]=h(b,c),this)}function k(a){if(!a)return l;var b=(a||\"\").toLowerCase();return l[b]}var l={},m={errors:{missingRegisterName:\"Invalid integration reigstration. Name argument is required.\",missingRegisterExec:\"Missing `exec` for integration registration\",alreadyRegistered:\"Integration has already been registered\",missingRunName:\"Missing `name` for `integration.run`\",unregisteredIntegration:\"Unknown integration name\",noCampaignExperience:\"Integration was run before the campaign has generated\",noRedirectCampaign:\"Redirect Integration is not in a valid campaign scope\",noRedirectCampaignData:\"Redirect Integration is not on a generation page\",campaignRequired:\"Integration must be deployed within a campaign script\",failedToSaveRedirectData:\"Failed to save redirect data\"},HALFHOUR:1/48,isProduction:function(){function a(a){for(var c,d={},e=\"\",f=0;c=b(a+f++);)e+=c;e=decodeURIComponent(e);try{d=JSON.parse(e)}catch(g){}return d}function b(a){var b=new RegExp(\"(?:^|; )\"+encodeURIComponent(a).replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,\"\\\\$1\")+\"=([^;]+)\"),c=(document.cookie.match(b)||[\"\",\"\"])[1];return c}var c=mmsystem.getConfig().storageType;if(\"cookie-key-value\"===c||\"cookie-key-value-secure\"===c)return!/mmapi.p.cfgid/i.test(document.cookie)&&!/mmapi.p.un/i.test(document.cookie);for(var d=a(\"mmcore.store.p.\")||{},e=a(\"mmcore.store.s.\")||{},f=a(\"mmapi.store.p.\")||{},g=a(\"mmapi.store.s.\")||{},h=[d,e,f,g],i={\"mmparams.p\":1,\"mmparams.d\":1},j={un:1,cfgID:1,pruh:1},k=h.length;k--;){var l=h[k];for(var m in i||{})for(var n in j||{})if((l[m]||{})[n])return!1}return!0},isValidIntegrationName:function(a){return\"string\"==typeof a&&/^\\w+/.test(a)},isCampaignScope:function(a){return!!(e(a)&&a.getName&&a.getExperience)},getCampaignExperience:function(a){var b={};return m.isCampaignScope(a)&&(b=a.getExperience&&a.getExperience()||{}),!!Object.keys(b)&&m.formatCampaignExperience(b)},formatCampaignExperience:function(a){a=e(a)?a:{};var b=[];for(var c in a)b.push(c+\":\"+a[c]);return b.join(\"|\")},getData:function(a){a=(a||\"\").toLowerCase();var b=visitor.getData(\"Integrations\");return b=e(b)?b:{},a&&(b[a]=b[a]||{}),b},setRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();return c[a][d]=c[a][d]||{},c[a][d].redirectData=b.getExperience(),visitor.setData(\"Integrations\",c,m.HALFHOUR),!0},removeRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();return c[a][d]=c[a][d]||{},c[a][d].redirectData=null,visitor.setData(\"Integrations\",c,m.HALFHOUR),!0},getRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();if(c[a][d]=c[a][d]||{},!c[a]||!c[a][d])return c[a]=c[a]||{},c[a][d]=c[a][d]||{},c[a][d].redirectData=null,visitor.setData(\"Integrations\",c,m.HALFHOUR),!1;for(var e in c[a])if(e===d)return c[a][e].redirectData;return!1},getSessionDate:function(a,b){var c=m.getData(a),d=c[a][b.getName()]||{},e=d.sessionDate;return e},setSessionDate:function(a,b){var c=m.getData(a),d=b.getName();c[a][d]=c[a][d]||{},c[a][d].sessionDate=(new Date).getTime(),visitor.setData(\"Integrations\",c,m.HALFHOUR)},resolve:function(a,b){return a.resolve(b),a.promise()},reject:function(a,b){var c=a.integrationName||\"unknown name\";return b=b||\"unknown reason\",g(\"Integration [\"+c+\"]: \"+b.toString()),a.reject(b),a.promise()},validateCampaignRequired:function(a,b){if(!a.campaignRequired)return a.oncePerSession?\"campaign option is required when using the oncePerSession option\":!a.redirect||\"campaign option is required when using the redirect option\";var c=a.campaign,d=\"\",e=m.isCampaignScope(c);if(e!==!0)return m.errors.campaignRequired;if(a.campaignExperience=m.getCampaignExperience(c),a.campaignExperience===!1&&!a.redirect)return m.errors.noCampaignExperience(a.name);if(a.oncePerSession&&!a.redirect&&a.oncePerSession&&(d=m.getSessionDate(a.name,c),m.setSessionDate(a.name,c),(new Date).getTime()-m.HALFHOUR>d))return g(\"Integration [\"+a.name+\"]: data has already been sent this session\"),m.resolve(b,a),!0;if(a.redirect){var f=function(){var a=c.getElements();for(var b in a)return!0;return!1}();return f?c.isDefault()?!(a.oncePerSession&&(d=m.getSessionDate(a.name,c),m.setSessionDate(a.name,c),(new Date).getTime()-m.HALFHOUR>d))||(g(\"Integration [\"+a.name+\"]: data has already been sent this session\"),m.resolve(b,a),!0):m.setRedirectData(a.name,c)?(m.resolve(b,a),!0):m.errors.failedToSaveRedirectData:a.oncePerSession&&(d=m.getSessionDate(a.name,c),m.setSessionDate(a.name,c),(new Date).getTime()-m.HALFHOUR>d)?(g(\"Integration [\"+a.name+\"]: data has already been sent this session\"),m.resolve(b,a),!0):(a.campaignExperience=m.getRedirectData(a.name,c),a.campaignExperience=m.formatCampaignExperience(a.campaignExperience),m.removeRedirectData(a.name,c),!!a.campaignExperience||m.errors.noRedirectCampaignData)}return!0},setFailTimeout:function(a,b){!function(b){setTimeout(function(){setTimeout(function(){if(\"pending\"===b.state())return m.reject(b,\"Integration timed out after \"+a.timeout+\"ms\")},0)},a.timeout+1)}(b)},isValidAttributeMap:function(a){if(!a)return\"Missing required attributeMap parameter\";if(!e(a)||!Object.keys(a).length)return\"The attributeMap parameter is empty or not an object\";for(var b in a){var c=a[b];if(\"string\"!=typeof b||!/^[a-zA-Z]+/.test(b))return\"Invalid attribute name in the attributeMap\";if(!e(c))return\"attributeMap values must be stored in an object\";if(!Object.keys(c).length)return\"attributeMap attribute object is empty\";for(var d in c)if(!/^\\w+$/.test(d)&&\"default\"!==d)return\"Invalid attribute ID in attributeMap\"}return!0},check:function(a){var c=new Deferred,d=!1;return function e(){var f=a.check.call(this,a);return b(f)?void setTimeout(function(){f.done(function(){return c.resolve()}).fail(function(a){return c.reject(a)})},0):f?void setTimeout(function(){c.resolve()},0):void(d||setTimeout(e,a.interval))}(),setTimeout(function(){d=!0},a.timeout),c.promise()},exec:function(a){var c=new Deferred,d=a.exec.call(this,a);return b(d)?(setTimeout(function(){d.done(function(a){return c.resolve(a)}).fail(function(a){return c.reject(a)})},0),c.promise()):(d===!0?m.resolve(c,a.result):m.reject(c,d),c.promise())}};return{register:a,run:i,setDefaults:j,get:k}}function b(a){return e(a)&&c(a.then)}function c(a){return\"function\"==typeof a}function d(a){return\"number\"==typeof a&&a>0}function e(a){return\"object\"==typeof a&&!!a}function f(){return!0}function g(a){window.mm_error=window.mm_error||\"\",window.mm_error+=a+\"\\n\"}function h(a,b){a=e(a)?a:{},b=e(b)?b:{};var c={};for(var d in b)c[d]=b[d];for(var f in a)c[f]=a[f];return c}if(\"object\"==typeof modules&&\"function\"==typeof modules.define){var i={autoDefine:!0,singleton:!0};modules.define(\"Integrations\",i,a)}else modules={require:function(){return new a}}}();","Order":-100,"HighLevelApiVersion":"1.25"},{"Name":"GlobalTracking","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * Global Tracking for Tealium events\n */\nmodules.define('globalTracking', function (callback) {\n\n    /**\n     * Wait for Tealium to load before running callback method\n     * @callback {function} callback    Script to run after GA has loaded\n     */\n    this.isTrackingReady = function (callback) {\n        var timeout = false;\n        when(function () {\n            return typeof utag === \"object\";\n        }, function () {\n            return timeout;\n        }).done(function () {\n            callback();\n        });\n\n        setTimeout(function () {\n            timeout = true;\n        }, 160e2); // 1600 ms\n\n    };\n\n    /**\n     * Send event to Tealium\n     * @param trackingData {\n     *      @param isActive (bool)\n     *      @param category (string) - Example: (Maxymiser or Maxymiser QA) or for Exit Intent 'exit_intent OR intercept_panel'\n     *      @param label (string) element1:default or for Exit intent (market + panel ID - Example:\"uk_155\")\n     *      @param action (string) - Example: Campaign name or for Exit Intent \"max_ei_loaded\"\n     *      @param nonInteraction (boolean as int)\n     *      @param customDimensions (array) - Example: [{ \"id\": \"cd181\", \"value\": \"xyz\" }]\n     *      @param customMetrics (array) - Example: [{ \"id\": \"cm2\", \"value\": 1 }]\n     *  }\n     */\n    this.sendEvent = function (trackingData) {\n\n        if (typeof utag === \"object\") {\n\n            if (trackingData.isActive === true) {\n                // Reset variable\n                let trackingObject = {};\n\n                // Define tracking parameters to pass to Tealium\n                trackingObject =\n                    {\n                        'event_category': (trackingData.category ? trackingData.category : 'Maxymiser'),\n                        'event_label':    (trackingData.label ? trackingData.label : null),\n                        'event_action':   (trackingData.action ? trackingData.action : null),\n                        'event_nonint':   (trackingData.nonInteraction ? trackingData.nonInteraction : null),\n                    };\n\n                // Add Custom Dimensions if provided\n                if (trackingData.customDimensions\n                    && trackingData.customDimensions.length > 0) {\n                    let customDimensions = trackingData.customDimensions;\n                    customDimensions.forEach((oneD, index) => {\n                        trackingObject[oneD[\"id\"]] = oneD[\"value\"];\n                    });\n                }\n\n                // Add Custom Metrics if provided\n                if (trackingData.customMetrics\n                    && trackingData.customMetrics.length > 0) {\n                    let customMetrics = trackingData.customMetrics;\n                    customMetrics.forEach((oneCM, index) => {\n                        trackingObject[oneCM[\"id\"]] = oneCM[\"value\"];\n                    });\n                }\n\n                utag.link(trackingObject);\n\n            } // End check if active\n\n        }\n    };\n});","Order":-95,"HighLevelApiVersion":"1.25"},{"Name":"Tealium Integration","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function () {\n    var tealium = {\n        version:          '1.0.1',\n        campaignRequired: true,\n        validate:         function (integration) {\n            return true;\n        },\n        check:            function (integration) {\n            return (window.utag && window.utag.loader && window.utag.loader.ended);\n        },\n        timeout:          60000,\n        exec:             function (integration) {\n            var mode = integration.isProduction ? 'Maxymiser' : 'Maxymiser QA';\n            var testName = integration.campaign.getName();\n            var experience = integration.campaignExperience;\n\n            integration.campaignExperience = integration.campaign.getName() + '=' + integration.campaignExperience;\n\n            if (integration.persist) {\n                integration.campaignExperience = helpers.getPersist(integration).campaignInfo;\n            }\n\n            var eventdata = {\n                isActive:         true,\n                category:         mode,\n                label:            experience,\n                action:           testName,\n                nonInteraction:   1,\n                customDimensions: [\n                    {\n                        \"id\":    'cd' + integration.customDimension,\n                        \"value\": integration.campaignExperience,\n                    },\n                ],\n                customMetrics:    [],\n            };\n\n            globalTracking.isTrackingReady(() => {\n                globalTracking.sendEvent(eventdata);\n            });\n\n            return true;\n        },\n    };\n    var helpers = {\n        getPersist: function (integration) {\n            var config = {\n                    maxDataSize: 150,\n                    cookieName:  'mm-ga-' + integration.customDimension,\n                },\n\n                data = {\n                    campaign:     integration.campaign.getName(),\n                    campaignInfo: integration.campaignExperience,\n                },\n\n                getCampaignIndex = function (dataArr) {\n                    var i;\n\n                    for (i = dataArr.length; i--;) {\n                        if (new RegExp('(' + data.campaign + ')' + '=').test(dataArr[i])) {\n                            return i;\n                        }\n                    }\n\n                    return -1;\n                },\n\n                concatCampaigns = function () {\n                    var storedInfo = getFromStorage(config.cookieName),\n                        parsedInfo = storedInfo ? JSON.parse(storedInfo) : [],\n                        i = getCampaignIndex(parsedInfo);\n\n                    if (i !== -1) {\n                        parsedInfo[i] = data.campaignInfo;\n                    } else {\n                        parsedInfo.push(data.campaignInfo);\n                    }\n\n                    return parsedInfo.join(',');\n                },\n\n                getFromStorage = function () {\n                    return cookies.get(config.cookieName);\n                },\n\n                saveToStorage = function (concatData) {\n                    var concatDataArr = concatData.split(',');\n                    cookies.set(config.cookieName, JSON.stringify(concatDataArr), { expires: 365 });\n                },\n\n                removeOldestCampaigns = function (concatData) {\n                    var parsedData = concatData.split(',');\n                    var flag = true;\n\n                    while (flag) {\n                        if (parsedData.join(',').length >= config.maxDataSize) {\n                            parsedData.shift();\n                        } else {\n                            flag = false;\n                            return parsedData.join(',');\n                        }\n                    }\n                },\n\n                updateCampaignInfo = function (concatData) {\n                    data.campaignInfo = concatData;\n                };\n\n            return (function () {\n                var concatData = concatCampaigns();\n\n                concatData = removeOldestCampaigns(concatData);\n                updateCampaignInfo(concatData);\n                saveToStorage(concatData);\n\n                return data;\n            })();\n        },\n    };\n    // Register and export\n    if (typeof modules === 'object' && typeof modules.define === 'function') {\n        modules.require('Integrations').register('tealium', tealium);\n    }\n})();","Order":-90,"HighLevelApiVersion":"1.25"},{"Name":"GA Integration","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function() {\n    var GU = {\n        version: '1.0.7',\n\n        campaignRequired: true,\n\n        timeout: 7000,\n\n        validate: function(integration) {\n            if (!integration.dimension) {\n                return helpers.errors.missingDimension;\n            }\n            if (!helpers.isDimension(integration.dimension)) {\n                return helpers.errors.invalidDimension(integration.dimension);\n            }\n            return true;\n        },\n\n        check: function(integration) {\n            // use provided variable, or defined variable, or default 'ga'\n            var ga = window[integration.gaVariable] || window[window.GoogleAnalyticsObject] || window.ga;\n            return ga && typeof ga.getAll === 'function';\n        },\n\n        exec: function(integration) {\n            return helpers.send(integration);\n        }\n    };\n    var helpers = {\n        errors: {\n            missingAccount: 'Missing Google Universal Account Number',\n            invalidAccount: function(account) {\n                return 'Invalid Google Universal Account Number provided [' + account.toString() + ']';\n            },\n            missingDimension: 'Missing Google Universal Dimension',\n            invalidDimension: function(dimension) {\n                return 'Invalid Google Universal Dimension provided [' + dimension.toString() + ']';\n            }\n        },\n        send: function(integration) {\n            var mode = integration.isProduction ? 'Maxymiser' : 'Maxymiser QA',\n                ga = window[integration.gaVariable] || window[window.GoogleAnalyticsObject] || window.ga,\n                namespace = '';\n            var cName = integration.campaign.getName();\n            var cExperience = integration.campaignExperience;\n\n            integration.campaignExperience = integration.campaign.getName() + '=' + integration.campaignExperience;\n\n            if (integration.persist) {\n                integration.campaignExperience = helpers.getPersist(integration).campaignInfo;\n            }\n\n            if (integration.account) {\n                namespace = 'mm_' + integration.account.replace(/\\W/g, '');\n                ga('create', integration.account, 'auto', {\n                    'name': namespace\n                });\n                ga(namespace + '.set', 'dimension' + integration.dimension, integration.campaignExperience);\n                ga(namespace + '.send', 'event', mode, cName, cExperience, { 'nonInteraction': 1 });\n            } else {\n                var tr = ga.getAll(),\n                    trCnt = tr.length,\n                    gtmName;\n\n                while (trCnt--) {\n                    gtmName = tr[trCnt].get('name');\n                    //if ((/^gtm/).test(gtmName)) { // the namespace for Sage is tealium_0\n                        namespace = tr[trCnt].get('name') + '.';\n                    //}\n                }\n\n                ga(namespace + 'set', 'dimension' + integration.dimension, integration.campaignExperience);\n                ga(namespace + 'send', 'event', mode, cName, cExperience, { 'nonInteraction': 1 });\n            }\n\n            return true;\n        },\n\n        getPersist: function(integration) {\n            var config = {\n                    maxDataSize: 150,\n                    cookieName: 'mm-ga-' + integration.dimension\n                },\n\n                data = {\n                    campaign: integration.campaign.getName(),\n                    campaignInfo: integration.campaignExperience\n                },\n\n                getCampaignIndex = function(dataArr) {\n                    var i;\n\n                    for (i = dataArr.length; i--;) {\n                        if (new RegExp('(' + data.campaign + ')' + '=').test(dataArr[i])) {\n                            return i;\n                        }\n                    }\n\n                    return -1;\n                },\n\n                concatCampaigns = function() {\n                    var storedInfo = getFromStorage(config.cookieName),\n                        parsedInfo = storedInfo ? JSON.parse(storedInfo) : [],\n                        i = getCampaignIndex(parsedInfo);\n\n                    if (i !== -1) {\n                        parsedInfo[i] = data.campaignInfo;\n                    } else {\n                        parsedInfo.push(data.campaignInfo);\n                    }\n\n                    return parsedInfo.join(',');\n                },\n\n                getFromStorage = function() {\n                    return cookies.get(config.cookieName);\n                },\n\n                saveToStorage = function(concatData) {\n                    var concatDataArr = concatData.split(',');\n                    cookies.set(config.cookieName, JSON.stringify(concatDataArr), {expires: 365}); \n                },\n\n                removeOldestCampaigns = function(concatData) {\n                    var parsedData = concatData.split(',');\n                    var flag = true;\n\n                    while (flag) {\n                        if (parsedData.join(',').length >= config.maxDataSize) {\n                            parsedData.shift();\n                        } else {\n                            flag = false;\n                            return parsedData.join(',');\n                        }\n                    }\n                },\n\n                updateCampaignInfo = function(concatData) {\n                    data.campaignInfo = concatData;\n                };\n\n            return (function() {\n                var concatData = concatCampaigns();\n\n                concatData = removeOldestCampaigns(concatData);\n                updateCampaignInfo(concatData);\n                saveToStorage(concatData);\n\n                return data;\n            })();\n        },\n\n        isAccountNumber: function(account) {\n            return account && /^UA-\\d{5,}-\\d{1,3}$/.test(account.toString());\n        },\n\n        isDimension: function(dimension) {\n            return dimension && dimension > 0 && dimension <= 200;\n        }\n    };\n    // Register and export\n    if (typeof modules === 'object' && typeof modules.define === 'function') {\n        modules.require('Integrations').register('Google Universal', GU);\n    }\n})();","Order":-50,"HighLevelApiVersion":"1.25"},{"Name":"WaitForTracking","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * Wait for Google Analytics before running callback method\n * @param {object} gaConfig         Object containing trackerName, customDimensions, mode, setCustomDimension\n * @callback {function} callback    Script to run after GA has loaded\n */\nmodules.define('waitForTracking', function(callback) {\n    \n    // Wait until custom dimension is loaded before running callback\n    this.waitForTracking = function(gaConfig, callback) {\n\n        var timeout = false;\n        when(function () {\n            if (gaConfig.trackerName) {\n\n                return typeof window[window['GoogleAnalyticsObject']] === 'function'\n                    && typeof window[window['GoogleAnalyticsObject']].getByName === 'function'\n                    && typeof window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName) === 'object'\n                    && typeof window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName)[Object.keys(window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName))[0]].data === 'object'\n                    && typeof window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName)[Object.keys(window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName))[0]].data.ea === 'object'\n                    && window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName)[Object.keys(window[window['GoogleAnalyticsObject']].getByName(gaConfig.trackerName))[0]].data.ea[':dimension' + gaConfig.customDimensions] != '';\n            } else {\n                return typeof window[window['GoogleAnalyticsObject']] === 'function';\n            }\n        }, function () {\n            return timeout;\n        }).done(function () {       \n            callback();\n        });\n        \n        setTimeout(function () {\n            timeout = true;\n        }, 80e2);\n\n    }\n});","Order":-20,"HighLevelApiVersion":"1.25"}],"Campaigns":[{"Name":"Exit_Intent_Video","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.25","PagePrefix":"","Scripts":[{"Name":"C760190144","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB CTA1_Video\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbCTA1', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C128592768","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB Dismissed_Video\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbDismissed', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1677026208","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB Loaded_Video\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbLoaded', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1237388362","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB Shown_Video\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbShown', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"LightboxActions","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/* This script handles the Exit Intent panel lightbox */\nif (!campaign.isDefault()) {\n\n    /**\n     * Configure lightbox actions\n     */\n    var exitModuleName = 'lbVideoTemplate';             // Referenced in template. Unique to this campaign.\n    var exitModuleFunction = 'createlightboxLBVT1';     // Referenced in template\n    var customEventTriggerName = 'LBCustomEventVideo';  // No spaces. Unique to this campaign.\n    /**\n     * end Configure lightbox actions\n     */\n\n    var experience = campaign.getExperience();\n    var fullExperience = campaign.getName() + '=' + Object.keys(experience)\n        .map((el) => el + ':' + experience[el])\n        .join('|');\n\n    /* Define exit intent lightbox module */\n    modules.define(exitModuleName, function () {\n\n        /* Exit intent template */\n        this[exitModuleFunction] = function (id, name, htmlContent, eventTracker) {\n            widgets.createLightbox({\n                \"content\":       htmlContent,\n                \"appearance\":    {\n                    \"name\":            name,\n                    \"backgroundColor\": \"#ffffff\",\n                    \"fadeEnabled\":     true,\n                    \"fadeColor\":       \"rgba(0,0,0,0.8)\",\n                    \"opacity\":         1,\n                    \"width\":           \"0\",\n                    \"height\":          \"0\",\n                    \"autofit\":         false,\n                    \"type\":            \"empty\",\n                },\n                \"displayEvent\":  {\n                    \"onLosePageFocus\": true,\n                    \"onCustomEvent\":   customEventTriggerName,\n                    //\"onViewportMouseOut\": true\n                },\n                \"closeEvent\":    {\n                    \"onDismissButton\": true,\n                    \"onClickOutside\":  true,\n                    \"dismissElements\": \".lightbox-dismiss\",\n                },\n                \"showFrequency\": {\n                    \"always\":            false,\n                    \"neverAfterDismiss\": true,\n                    \"showsCount\":        1,\n                    \"showsInterval\":     \"hour\",\n                },\n            }, id);\n\n            // Track when lightbox was loaded on the page\n            campaign.events.trigger('lbLoaded', {\n                'id':           id,\n                'name':         name,\n                'eventTracker': eventTracker,\n            });\n\n            // Track mouse movements via a custom event\n            var variantExecuted = false;\n            document.addEventListener(\"mousemove\", function (e) {\n                if (!variantExecuted) {\n                    // Get current scroll position\n                    var scroll = window.pageYOffset || document.documentElement.scrollTop;\n\n                    // Trigger panel when cursor is within 7px of top or bottom of viewport\n                    if ((e.pageY - scroll) < 7) {\n                        events.trigger(customEventTriggerName);\n                        variantExecuted = true;\n                    } else if ((window.innerHeight - e.clientY) <= 7) {\n                        events.trigger(customEventTriggerName);\n                        variantExecuted = true;\n                    }\n                }\n            });\n\n            // Requirement 1 - Panel is loaded but not shown\n            /* Send tracking event\n            * @param category (string) - exit_intent OR intercept_panel\n            * @param label (string) - (data.id).toLowerCase()\n            * @param action (string) - max_ei_dismissed\n            * @param nonInteraction (boolean as number) = 0\n            * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n            * @param customMetrics (array) [{\"metric2\": 1}]\n            * */\n            eventTracker.sendEvent({\n                \"isActive\":         true,\n                \"category\":         \"exit_intent\",\n                \"label\":            id.toLowerCase(),\n                \"action\":           'max_ei_loaded',\n                \"nonInteraction\":   1,\n                \"customDimensions\": [\n                    { \"id\": \"cd141\", \"value\": fullExperience },\n                ],\n                \"customMetrics\":    [\n                    { \"id\": \"cm2\", \"value\": 1 },\n                ],\n            });\n        };\n        /* end define exit intent lightbox module */\n\n    });\n    /* end Module */\n\n    // Shared Actions/Metrics\n    campaign.events.on('lbLoaded', function (data) {\n        var isDisplayed = false;\n\n        // Load gcdc gates again in case the panel loaded after gcdc initialization\n        window.gcdc && gcdc('loadGates');\n\n        // CTA Clicked and Modal opened\n        window.addEventListener('gcdcModalOpened', function (event) {\n            if (isDisplayed) {\n                document.querySelector('#' + data.id).parentNode.parentNode.style.visibility = \"hidden\";\n                // Requirement 3 - Panel is dismissed through clicking CTA\n                campaign.events.trigger('lbCTA1', data);\n                /* Send tracking event\n                * @param category (string) - exit_intent OR intercept_panel\n                * @param label (string) - (data.id).toLowerCase()\n                * @param action (string) - max_ei_dismissed\n                * @param nonInteraction (boolean as number) = 0\n                * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                * @param customMetrics (array) [{\"metric2\": 1}]\n                * */\n                data.eventTracker.sendEvent({\n                    \"isActive\":         true,\n                    \"category\":         \"exit_intent\",\n                    \"label\":            (data.id).toLowerCase(),\n                    \"action\":           'max_ei_pri_cta_clicked',\n                    \"nonInteraction\":   0,\n                    \"customDimensions\": [\n                        { \"id\": \"cd141\", \"value\": fullExperience },\n                        { \"id\": \"cd157\", \"value\": fullExperience },\n                        { \"id\": \"cd158\", \"value\": fullExperience },\n                    ],\n                    \"customMetrics\":    [\n                        { \"id\": \"cm5\", \"value\": 1 },\n                    ],\n                });\n                // Set lb as not displayed because it's covered by modal. Prevents the dismiss action firing when you click within form\n                isDisplayed = false;\n                // Set focus to the panel dismiss button\n                $('.gcdc-form-render').find('input:visible:first').focus();\n            }\n        });\n\n        // Track CTA click when a normal link\n        document.querySelector('#' + data.id + ' .btnCTA').addEventListener('click', function () {\n            // Requirement 3 - Panel is dismissed through clicking CTA\n            campaign.events.trigger('lbCTA1', data);\n            /* Send tracking event\n            * @param category (string) - exit_intent OR intercept_panel\n            * @param label (string) - (data.id).toLowerCase()\n            * @param action (string) - max_ei_dismissed\n            * @param nonInteraction (boolean as number) = 0\n            * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n            * @param customMetrics (array) [{\"metric2\": 1}]\n            * */\n            data.eventTracker.sendEvent({\n                \"isActive\":         true,\n                \"category\":         \"exit_intent\",\n                \"label\":            (data.id).toLowerCase(),\n                \"action\":           'max_ei_pri_cta_clicked',\n                \"nonInteraction\":   0,\n                \"customDimensions\": [\n                    { \"id\": \"cd141\", \"value\": fullExperience },\n                    { \"id\": \"cd157\", \"value\": fullExperience },\n                    { \"id\": \"cd158\", \"value\": fullExperience },\n                ],\n                \"customMetrics\":    [\n                    { \"id\": \"cm5\", \"value\": 1 },\n                ],\n            });\n            // Hide lb\n            document.querySelector('#' + data.id).parentNode.parentNode.style.visibility = \"hidden\";\n            // Set lb as not displayed. Prevents the dismiss action firing.\n            isDisplayed = false;\n        });\n\n        // Listen for lightbox visibility change\n        var targetNode = document.querySelector('.vcb-me-wrapper[data-vcb-me-guid=\"' + data.id + '\"]');\n        var observer = new MutationObserver(function () {\n\n            // Lightbox is visible\n            if (targetNode.style.visibility !== 'hidden') {\n\n                // Only trigger Shown event once\n                if (!isDisplayed) {\n                    // Requirement 2 - Panel is shown to user\n                    campaign.events.trigger('lbShown', data);\n                    /* Send tracking event\n                    * @param category (string) - exit_intent OR intercept_panel\n                    * @param label (string) - (data.id).toLowerCase()\n                    * @param action (string) - max_ei_dismissed\n                    * @param nonInteraction (boolean as number) = 0\n                    * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                    * @param customMetrics (array) [{\"metric2\": 1}]\n                    * */\n                    data.eventTracker.sendEvent({\n                        \"isActive\":         true,\n                        \"category\":         \"exit_intent\",\n                        \"label\":            (data.id).toLowerCase(),\n                        \"action\":           'max_ei_shown',\n                        \"nonInteraction\":   1,\n                        \"customDimensions\": [\n                            { \"id\": \"cd141\", \"value\": fullExperience },\n                            { \"id\": \"cd158\", \"value\": fullExperience },\n                        ],\n                        \"customMetrics\":    [\n                            { \"id\": \"cm3\", \"value\": 1 },\n                        ],\n                    });\n                    isDisplayed = true;\n                    // Set focus to the panel dismiss button\n                    document.querySelector('.vcb-me-wrapper[data-vcb-me-guid=\"' + data.id + '\"] .vcb-me-dismiss')\n                        .focus();\n                }\n\n                // Lightbox is hidden\n            } else {\n                if (isDisplayed) {\n                    // Requirement 4 - Panel is dismissed not through primary CTA\n                    campaign.events.trigger('lbDismissed', data);\n                    /* Send tracking event\n                    * @param category (string) - exit_intent OR intercept_panel\n                    * @param label (string) - (data.id).toLowerCase()\n                    * @param action (string) - max_ei_dismissed\n                    * @param nonInteraction (boolean as number) = 0\n                    * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                    * @param customMetrics (array) [{\"metric2\": 1}]\n                    * */\n                    data.eventTracker.sendEvent({\n                        \"isActive\":         true,\n                        \"category\":         \"exit_intent\",\n                        \"label\":            (data.id).toLowerCase(),\n                        \"action\":           'max_ei_dismissed',\n                        \"nonInteraction\":   0,\n                        \"customDimensions\": [\n                            { \"id\": \"cd141\", \"value\": fullExperience },\n                            { \"id\": \"cd158\", \"value\": fullExperience },\n                        ],\n                        \"customMetrics\":    [\n                            { \"id\": \"cm4\", \"value\": 1 },\n                        ],\n                    });\n                    isDisplayed = false;\n                }\n            }\n        });\n        observer.observe(targetNode, { attributes: true, childList: true });\n    });\n}","Order":5000,"HighLevelApiVersion":"1.25"},{"Name":"Rendering","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n    \"selectorsToHide\": null,\n    \"useSecondRequest\": false,\n    \"elements\": null\n};\n\nif (config.useSecondRequest) {\n    activateCampaign();\n} else {\n    render();\n}\n\ncampaign.events.on(\"urlChange\", activateCampaign);\n\nfunction activateCampaign() {\n    if (isRenderRequired()) {\n        var selectorsToHide = getSelectorsToHide();\n        hide(selectorsToHide);\n        when(isVisitorQualified())\n            .done(function () {\n                renderer.getContent().always(function () {\n                    render();\n                    show(selectorsToHide);\n                });\n            })\n            .fail(function () {\n                show(selectorsToHide);\n            });\n    }\n}\n\nfunction isRenderRequired() {\n    if (config.elements === null) { return true; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction hide(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.hide(selectorsToHide, \"ucb\");\n    }\n}\n\nfunction show(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.show(\"ucb\");\n    }\n}\n\nfunction getSelectorsToHide() {\n    if (config.elements === null) { return config.selectorsToHide; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    var selectors = \"\";\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            selectors += \" \" + config.elements[i].selectors;\n        }\n    }\n    return selectors;\n}\n\nfunction render() {\n    renderCss();\n    renderJs();\n    campaign.events.trigger(\"lastRequest\");\n\n    var campaignName = campaign.getName();\n    window.MMExperience = window.MMExperience || {};\n    if(!window.MMExperience[campaignName]){\n        window.MMExperience[campaignName] = campaign.getExperience();\n    }\n}\n\nfunction renderJs() {\n    var elementsToRender = campaign.getElements();\n    for (var i in elementsToRender) {\n        if (elementsToRender.hasOwnProperty(i)) {\n            var element = elementsToRender[i];\n            renderer.runVariantJs(element);\n        }\n    }\n}\n\nfunction renderCss() {\n    var styles = campaign.getStyles();\n    if (styles.length) {\n        dom.addCss(styles);\n    }\n}\n\nfunction isVisitorQualified() {\n    if (window.isCampaignDesignMode) {\n        return true;\n    }\n    var rules = campaign.scope.qualificationRules || [];\n    var results = [];\n    for (var i = 0; i < rules.length; i++) {\n        var result = rules[i]();\n        if (typeof result.then !== \"function\") {\n            result = Deferred()[result ? \"resolve\" : \"reject\"]().promise();\n        }\n        results.push(result);\n    }\n    return when.apply(this, results);\n}\n\nfunction isUrlMatched(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n}\n\nfunction isMasksMatch(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n    var matchedMasks = 0;\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy({\n                href: mask\n            }).href)) {\n            matchedMasks = matchedMasks + 1;\n        }\n    };\n    return matchedMasks > 0;\n}\n\nfunction isMaskMatch(url, originalMask) {\n    var mask = \"^\";\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == \"*\") {\n            mask = mask + \".*\";\n            pos = pos + 1;\n        } else if (char == \"(\") {\n            var posClosing = originalMask.indexOf(\")\", pos + 1);\n            var posNextOpening = originalMask.indexOf(\"(\", pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + \".*\";\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + \"$\";\n    mask = mask.replace(\"?\", \"\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n}","Order":5999,"HighLevelApiVersion":"1.25"}],"Elements":[{"Name":"video","VariantName":"us_lead_peachtree_v1","HTMLId":"video","Data":[{"Type":"Html","Data":"/**\n* Lead Gen / Exit Intent / Video Background / Content Left\n*  Please configure the following in the \u0027Edit panel\u0027 section below:\n*  1. Unique id for tracking\n*  2. Name\n*  3. Title\n*  4. Body Content\n*  5. CTA Url\n*  6. CTA text\n*  7. Dismiss button text\n*  8. Video URL from Vimeo, include ?background=1  // Example: https://player.vimeo.com/video/388254235?background=1\n*/\n","Attrs":{}},{"Type":"Script","Data":"  \n  /* Edit panel here */\n  var id = \u0027US_018\u0027;\n  var name = \u0027US_Lead_Peachtree_V1\u0027;\n  var title = \"Providing trusted accounting solutions for over 38 years\";\n  var bodyContent = \"Sage 50cloud Accounting, formerly Peachtree Flexible accounting empowers businesses to operate\u003cbr\u003e more efficiently- find out how with\u003cbr\u003e a free Test Drive. \";\n  var ctaUrl = \"#gate-8e63f56a-83ef-43d6-8991-2fd73206dcb7\";\n  var ctaText = \"Try now\";\n  var dismissText = \"No thanks\";\n  var videoUrl = \"https://player.vimeo.com/video/392479211?background=1\";\n  /* end Edit panel here */\n\n  /* Define Styles */\n  var style = document.createElement(\u0027style\u0027);\n  style.innerHTML = `\n    #` + id + ` {\n      position: fixed; \n      box-sizing: border-box;\n      top: 50%;\n      left: 50%;\n      margin-top: -211px;\n      margin-left: -375px;\n      margin-top: -min(calc(100% - 10px), 400px);\n      margin-left: -min(calc(100% - 10px), 700px); \n      width: 700px; \n      height: 400px; \n      width: calc(100% - 10px);\n      height: calc(100% - 10px);\n      max-width: 700px; \n      max-height: 400px; \n      color: #fff;\n      background-color: transparent;\n      font-family: Arial, Helvetica, sans-serif;\n    }\n\n    #` + id + ` .exitIntentContainer {\n      display: flex;\n      flex-direction: column;\n      flex-wrap: wrap;\n      align-items: stretch;\n      margin: 30px;\n      border: 0px solid red;\n      align-self: flex-start;\n      z-index: 10;\n    }\n\n    #` + id + ` h1 {\n      font-size: 2em;\n    }\n    \n    #` + id + ` p {\n      font-size: 1.4em;\n      line-height: 150%;\n    }\n    #` + id + ` .contentRight {\n      align-content: flex-end;\n    }\n    #` + id + ` .contentLeft {\n      align-content: flex-start;\n    }\n\n    #` + id + ` .overlay {\n      z-index: -1;\n      background: linear-gradient(.25turn, #000, transparent 100%);\n      height: 100%;\n      width: 50%;\n      position: absolute;\n      top: 0px;\n      opacity: 0.8;\n      filter: alpha(opacity=50); /* For IE8 and earlier */\n    }\n\n    #` + id + ` .contentBox,\n    #` + id + ` .footerBox {\n      width: 350px;\n      border: 0px solid orange;\n    }\n\n    #` + id + ` .contentLeft .footerBox {\n      width: 100%;\n    }\n    \n    #` + id + ` .panelBody {\n      height: 300px;\n    }\n\n    #` + id + ` .footerBox {\n      height: 50px;\n      border: 0px solid blue;\n      display: flex;\n      justify-content: flex-start;\n      align-items: flex-end;\n    }\n\n    #` + id + ` .actions {\n      margin: 0px;\n    }\n    #` + id + ` .btn, \n    #` + id + ` .btnCTA {\n      font-family: Arial, Helvetica, sans-serif;\n      text-decoration: none;\n    }\n\n    #` + id + ` .btn {\n      padding: 10px 75px;\n      margin-right: 25px;\n      background-color: #ffffff;\n      color: rgba(0, 0, 0, 0.9);\n      border-radius: 0px;\n      -webkit-border-radius: 0px; \n      -moz-border-radius: 0px;\n    }\n\n    #` + id + ` .btn:hover {\n      background-color: #f2f2f2;\n      opacity: 1;\n    }\n\n    #` + id + ` .btnDismiss {\n      background-color: transparent;\n      color: #ffffff;\n      border: 1px solid #ffffff;\n    }\n\n    #` + id + ` .btnDismiss:hover {\n      color: #e6e6e6;\n      background-color: transparent;\n      border: 1px solid #e6e6e6;\n    }\n  `;\n  document.head.appendChild(style);\n  /* End Define styles */\n  \n  /* Exit intent template with background video */\n  var htmlContent = \u0027\\\n    \u003cdiv id=\"\u0027+ id + \u0027\" class=\"vcb-me-content\"\u003e\\\n        \u003cdiv class=\"exitIntentContainer contentLeft\"\u003e\\\n            \u003cdiv class=\"contentBox\"\u003e\\\n                \u003cdiv class=\"panelBody\"\u003e\\\n                    \u003ch1\u003e\u0027 + title + \u0027\u003c/h1\u003e\\\n                    \u003cp\u003e\u0027 + bodyContent + \u0027\u003c/p\u003e\\\n                \u003c/div\u003e\\\n            \u003c/div\u003e\\\n            \u003cdiv class=\"footerBox\"\u003e\\\n                \u003cdiv class=\"actions\"\u003e\\\n                    \u003ca href=\"\u0027 + ctaUrl + \u0027\" class=\"btn btnCTA\"\u003e\u0027 + ctaText + \u0027\u003c/a\u003e\\\n                    \u003cdiv class=\"btn lightbox-dismiss btnDismiss vcb-me-dismiss\"\u003e\u0027 + dismissText + \u0027\u003c/div\u003e\\\n                \u003c/div\u003e\\\n            \u003c/div\u003e\\\n        \u003c/div\u003e\\\n        \u003cdiv class=\"overlay\"\u003e\u003c/div\u003e\\\n        \u003ciframe src=\"\u0027 + videoUrl + \u0027\" style=\"z-index:-2;position:absolute; top:0; left:0; bottom:0; height:100%; width:100%; border:0;\" width=\"640\" height=\"366\" frameborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen\u003e\u003c/iframe\u003e\\\n\u0027;\n /* end Exit intent template with background video */\n\n  /* Load lightbox when tracking is available */\n  let eventTracker = modules.require(\u0027globalTracking\u0027);\n  eventTracker.isTrackingReady(function () {\n      /* Initialize lightbox */\n      var lightBox = modules.require(\u0027lbVideoTemplate\u0027);\n      lightBox.createlightboxLBVT1(id, name, htmlContent, eventTracker);\n  });\n  /* end Load lightbox when tracking is available */\n","Attrs":{}},{"Type":"Html","Data":"","Attrs":{}}],"Order":0}],"Recommendations":[]},{"Name":"Exit_Intent_Search_Form","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.25","PagePrefix":"MDgwMTQ0","Scripts":[{"Name":"LightboxActions","Type":"script","Attrs":{"type":"text/javascript"},"Data":"campaign.events.on('lastRequest', initialPanel);\n\nfunction initialPanel() {\n\n    /* This script handles the Exit Intent panel lightbox with site search form */\n    if (!campaign.isDefault()) {\n        /**\n         * Configure lightbox actions\n         */\n        var exitModuleName = 'lbSearchFormTemplate';        // Referenced in template. Unique to this campaign.\n        var exitModuleFunction = 'createlightbox';          // Referenced in template\n        var customEventTriggerName = 'LBCustomEventSearch'; // No spaces. Unique to this campaign.\n        /**\n         * end Configure lightbox actions\n         */\n\n        var experience = campaign.getExperience();\n        var fullExperience = campaign.getName() + '=' + Object.keys(experience)\n            .map((el) => el + ':' + experience[el])\n            .join('|');\n\n        /* Define exit intent lightbox module with search box */\n        modules.define(exitModuleName, function () {\n\n            /* Exit intent search form template */\n            this[exitModuleFunction] = function (id, name, htmlContent, eventTracker) {\n                widgets.createLightbox({\n                    \"content\":       htmlContent,\n                    \"appearance\":    {\n                        \"name\":            name,\n                        \"backgroundColor\": \"#ffffff\",\n                        \"fadeEnabled\":     true,\n                        \"fadeColor\":       \"rgba(0,0,0,0.8)\",\n                        \"opacity\":         1,\n                        \"width\":           \"0\",\n                        \"height\":          \"0\",\n                        \"autofit\":         false,\n                        \"type\":            \"empty\",\n                    },\n                    \"displayEvent\":  {\n                        \"onLosePageFocus\": true,\n                        \"onCustomEvent\":   customEventTriggerName,\n                        //\"onViewportMouseOut\": true\n                    },\n                    \"closeEvent\":    {\n                        \"onDismissButton\": true,\n                        \"onClickOutside\":  true,\n                        \"dismissElements\": \".lightbox-dismiss\",\n                    },\n                    \"showFrequency\": {\n                        \"always\":            false,\n                        \"neverAfterDismiss\": true,\n                        \"showsCount\":        1,\n                        \"showsInterval\":     \"hour\",\n                    },\n                }, id);\n\n                // Track when lightbox was loaded on the page\n                campaign.events.trigger('lbLoaded', {\n                    'id':           id,\n                    'name':         name,\n                    'eventTracker': eventTracker,\n                });\n\n                // Track mouse movements via a custom event\n                var variantExecuted = false;\n                document.addEventListener(\"mousemove\", function (e) {\n                    if (!variantExecuted) {\n                        // Get current scroll position\n                        var scroll = window.pageYOffset || document.documentElement.scrollTop;\n\n                        // Trigger panel when cursor is within 7px of top or bottom of viewport\n                        if ((e.pageY - scroll) < 7) {\n                            events.trigger(customEventTriggerName);\n                            variantExecuted = true;\n                        } else if ((window.innerHeight - e.clientY) <= 7) {\n                            events.trigger(customEventTriggerName);\n                            variantExecuted = true;\n                        }\n                    }\n                });\n\n                // Requirement 1 - Panel is loaded but not shown\n                /* Send tracking event\n                * @param category (string) - exit_intent OR intercept_panel\n                * @param label (string) - (data.id).toLowerCase()\n                * @param action (string) - max_ei_dismissed\n                * @param nonInteraction (boolean as number) = 0\n                * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                * @param customMetrics (array) [{\"metric2\": 1}]\n                * */\n                eventTracker.sendEvent({\n                    \"isActive\":         true,\n                    \"category\":         \"exit_intent\",\n                    \"label\":            id.toLowerCase(),\n                    \"action\":           'max_ei_loaded',\n                    \"nonInteraction\":   1,\n                    \"customDimensions\": [\n                        { \"id\": \"cd141\", \"value\": fullExperience },\n                    ],\n                    \"customMetrics\":    [\n                        { \"id\": \"cm2\", \"value\": 1 },\n                    ],\n                });\n            };\n            /* end define this.createlightbox */\n        });\n        /* end module - lbSearchFormTemplate */\n\n        // Shared Actions/Metrics\n        campaign.events.on('lbLoaded', function (data) {\n            var isDisplayed = false;\n\n            // Load gcdc gates again in case the panel loaded after gcdc initialization\n            window.gcdc && gcdc('loadGates');\n\n            // CTA Clicked and Modal opened\n            window.addEventListener('gcdcModalOpened', function (event) {\n                if (isDisplayed) {\n                    document.querySelector('#' + data.id).parentNode.parentNode.style.visibility = \"hidden\";\n                    // Requirement 3 - Panel is dismissed through clicking CTA\n                    campaign.events.trigger('lbCTA1', data);\n                    /* Send tracking event\n                    * @param category (string) - exit_intent OR intercept_panel\n                    * @param label (string) - (data.id).toLowerCase()\n                    * @param action (string) - max_ei_dismissed\n                    * @param nonInteraction (boolean as number) = 0\n                    * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                    * @param customMetrics (array) [{\"metric2\": 1}]\n                    * */\n                    data.eventTracker.sendEvent({\n                        \"isActive\":         true,\n                        \"category\":         \"exit_intent\",\n                        \"label\":            (data.id).toLowerCase(),\n                        \"action\":           'max_ei_pri_cta_clicked',\n                        \"nonInteraction\":   0,\n                        \"customDimensions\": [\n                            { \"id\": \"cd141\", \"value\": fullExperience },\n                            { \"id\": \"cd157\", \"value\": fullExperience },\n                            { \"id\": \"cd158\", \"value\": fullExperience },\n                        ],\n                        \"customMetrics\":    [\n                            { \"id\": \"cm5\", \"value\": 1 },\n                        ],\n                    });\n                    // Set lb as not displayed because it's covered by modal. Prevents the dismiss action firing when you click within form\n                    isDisplayed = false;\n                    // Set focus to the panel dismiss button\n                    $('.gcdc-form-render').find('input:visible:first').focus();\n                }\n            });\n\n            // Track CTA click when a normal link\n            document.querySelector('#' + data.id + ' .btnCTA').addEventListener('click', function () {\n                let searchTerm = document.querySelector('#searchTerm').value;\n                // Requirement 3 - Panel is dismissed through clicking CTA\n                campaign.events.trigger('lbCTA1', data);\n                /* Send tracking event\n                * @param category (string) - exit_intent OR intercept_panel\n                * @param label (string) - (data.id).toLowerCase()\n                * @param action (string) - max_ei_dismissed\n                * @param nonInteraction (boolean as number) = 0\n                * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                * @param customMetrics (array) [{\"metric2\": 1}]\n                * */\n                data.eventTracker.sendEvent({\n                    \"isActive\":         true,\n                    \"category\":         \"exit_intent\",\n                    \"label\":            (data.id).toLowerCase(),\n                    \"action\":           'max_ei_pri_cta_clicked',\n                    \"nonInteraction\":   0,\n                    \"customDimensions\": [\n                        { \"id\": \"cd39\", \"value\": searchTerm },\n                        { \"id\": \"cd141\", \"value\": fullExperience },\n                        { \"id\": \"cd157\", \"value\": fullExperience },\n                        { \"id\": \"cd158\", \"value\": fullExperience },\n                    ],\n                    \"customMetrics\":    [\n                        { \"id\": \"cm5\", \"value\": 1 },\n                    ],\n                });\n                // Search box specific event\n                data.eventTracker.sendEvent({\n                    'isActive':         true,\n                    'category':         'search',\n                    'label':            'search',\n                    'action':           'search',\n                    'nonInteraction':   0,\n                    \"customDimensions\": [\n                        { \"id\": \"cd39\", \"value\": searchTerm },\n                        { \"id\": \"cd141\", \"value\": fullExperience },\n                    ],\n                });// search submitted\n                // Hide lb\n                document.querySelector('#' + data.id).parentNode.parentNode.style.visibility = \"hidden\";\n                // Set lb as not displayed. Prevents the dismiss action firing.\n                isDisplayed = false;\n            });\n\n            // Listen for lightbox visibility change\n            var targetNode = document.querySelector('.vcb-me-wrapper[data-vcb-me-guid=\"' + data.id + '\"]');\n            var observer = new MutationObserver(function () {\n                // Lightbox is visible\n                if (targetNode.style.visibility !== 'hidden') {\n                    // Only trigger Shown event once\n                    if (!isDisplayed) {\n                        // Requirement 2 - Panel is shown to user\n                        campaign.events.trigger('lbShown', data);\n                        /* Send tracking event\n                        * @param category (string) - exit_intent OR intercept_panel\n                        * @param label (string) - (data.id).toLowerCase()\n                        * @param action (string) - max_ei_dismissed\n                        * @param nonInteraction (boolean as number) = 0\n                        * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                        * @param customMetrics (array) [{\"metric2\": 1}]\n                        * */\n                        data.eventTracker.sendEvent({\n                            \"isActive\":         true,\n                            \"category\":         \"exit_intent\",\n                            \"label\":            (data.id).toLowerCase(),\n                            \"action\":           'max_ei_shown',\n                            \"nonInteraction\":   1,\n                            \"customDimensions\": [\n                                { \"id\": \"cd141\", \"value\": fullExperience },\n                                { \"id\": \"cd158\", \"value\": fullExperience },\n                            ],\n                            \"customMetrics\":    [\n                                { \"id\": \"cm3\", \"value\": 1 },\n                            ],\n                        });\n                        isDisplayed = true;\n                        // Set focus to the panel dismiss button\n                        document.querySelector('.vcb-me-wrapper[data-vcb-me-guid=\"' + data.id + '\"] #searchTerm')\n                            .focus();\n                    }\n                    // Lightbox is hidden\n                } else {\n                    if (isDisplayed) {\n                        // Requirement 4 - Panel is dismissed not through primary CTA\n                        campaign.events.trigger('lbDismissed', data);\n                        /* Send tracking event\n                        * @param category (string) - exit_intent OR intercept_panel\n                        * @param label (string) - (data.id).toLowerCase()\n                        * @param action (string) - max_ei_dismissed\n                        * @param nonInteraction (boolean as number) = 0\n                        * @param customDimensions (array) [{\"123\":\"TealiumTrackingInvestigation=element1:trackingtemplate\"}]\n                        * @param customMetrics (array) [{\"metric2\": 1}]\n                        * */\n                        data.eventTracker.sendEvent({\n                            \"isActive\":         true,\n                            \"category\":         \"exit_intent\",\n                            \"label\":            (data.id).toLowerCase(),\n                            \"action\":           'max_ei_dismissed',\n                            \"nonInteraction\":   0,\n                            \"customDimensions\": [\n                                { \"id\": \"cd141\", \"value\": fullExperience },\n                                { \"id\": \"cd158\", \"value\": fullExperience },\n                            ],\n                            \"customMetrics\":    [\n                                { \"id\": \"cm4\", \"value\": 1 },\n                            ],\n                        });\n                        isDisplayed = false;\n                    }\n                }\n            });\n            observer.observe(targetNode, { attributes: true, childList: true });\n        });\n    }\n}","Order":5000,"HighLevelApiVersion":"1.25"},{"Name":"Rendering","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n    \"selectorsToHide\": \"\",\n    \"useSecondRequest\": true,\n    \"elements\": null\n};\n\nif (config.useSecondRequest) {\n    activateCampaign();\n} else {\n    render();\n}\n\ncampaign.events.on(\"urlChange\", activateCampaign);\n\nfunction activateCampaign() {\n    if (isRenderRequired()) {\n        var selectorsToHide = getSelectorsToHide();\n        hide(selectorsToHide);\n        when(isVisitorQualified())\n            .done(function () {\n                renderer.getContent().always(function () {\n                    render();\n                    show(selectorsToHide);\n                });\n            })\n            .fail(function () {\n                show(selectorsToHide);\n            });\n    }\n}\n\nfunction isRenderRequired() {\n    if (config.elements === null) { return true; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction hide(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.hide(selectorsToHide, \"ucb\");\n    }\n}\n\nfunction show(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.show(\"ucb\");\n    }\n}\n\nfunction getSelectorsToHide() {\n    if (config.elements === null) { return config.selectorsToHide; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    var selectors = \"\";\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            selectors += \" \" + config.elements[i].selectors;\n        }\n    }\n    return selectors;\n}\n\nfunction render() {\n    renderCss();\n    renderJs();\n    campaign.events.trigger(\"lastRequest\");\n\n    var campaignName = campaign.getName();\n    window.MMExperience = window.MMExperience || {};\n    if(!window.MMExperience[campaignName]){\n        window.MMExperience[campaignName] = campaign.getExperience();\n    }\n}\n\nfunction renderJs() {\n    var elementsToRender = campaign.getElements();\n    for (var i in elementsToRender) {\n        if (elementsToRender.hasOwnProperty(i)) {\n            var element = elementsToRender[i];\n            renderer.runVariantJs(element);\n        }\n    }\n}\n\nfunction renderCss() {\n    var styles = campaign.getStyles();\n    if (styles.length) {\n        dom.addCss(styles);\n    }\n}\n\nfunction isVisitorQualified() {\n    if (window.isCampaignDesignMode) {\n        return true;\n    }\n    var rules = campaign.scope.qualificationRules || [];\n    var results = [];\n    for (var i = 0; i < rules.length; i++) {\n        var result = rules[i]();\n        if (typeof result.then !== \"function\") {\n            result = Deferred()[result ? \"resolve\" : \"reject\"]().promise();\n        }\n        results.push(result);\n    }\n    return when.apply(this, results);\n}\n\nfunction isUrlMatched(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n}\n\nfunction isMasksMatch(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n    var matchedMasks = 0;\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy({\n                href: mask\n            }).href)) {\n            matchedMasks = matchedMasks + 1;\n        }\n    };\n    return matchedMasks > 0;\n}\n\nfunction isMaskMatch(url, originalMask) {\n    var mask = \"^\";\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == \"*\") {\n            mask = mask + \".*\";\n            pos = pos + 1;\n        } else if (char == \"(\") {\n            var posClosing = originalMask.indexOf(\")\", pos + 1);\n            var posNextOpening = originalMask.indexOf(\"(\", pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + \".*\";\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + \"$\";\n    mask = mask.replace(\"?\", \"\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n}","Order":5999,"HighLevelApiVersion":"1.25"},{"Name":"C1636923296","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB CTA_Search\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbCTA1', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1992685513","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB Dismissed_Search\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbDismissed', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1243717035","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB Loaded_search\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbLoaded', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"},{"Name":"C1432066430","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"LB Shown_Search\",\n\t\"value\": 1,\n\t\"attr\": \"\"\n};\n/*configuration block end*/\n\ncampaign.events.on('lbShown', function (data) {\n\tactions.send(config.actionName, 1, data.id);\n});","Order":4000,"HighLevelApiVersion":"1.25"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"prodiadcgeu04","Expiration":365},{"Name":"bid","IsGlobal":false,"Value":"prodiadcgeu04","Expiration":0.00694},{"Name":"pd","IsGlobal":false,"Value":"rxhj4b1mRipZ6hCnNtjVNoIb_SEiLtcwqhhaBf_f1Lg=|AQAAAApDH4sIAAAAAAAEAGNheKV0usFB9LIcA3NmYgqjEAOjE0Pfn-7djAzB0kntvetuesBoBiD4DwUMbC6ZRanJJYwOoowgcTBo4mJmaAbiViBmZNhmzMhQk9fufMZBlGHfaQYGVgdRB9H__4HKwToY5wNVKX9lBnEFLBkZ8oBGMLoCAO4pMnuPAAAA","Expiration":365}],"SiteInfo":[{"Url":"en-us_sage.com","ID":2261}],"SystemData":[{"Version":"1.0","RequestId":1,"ResponseId":1}],"GenInfo":{"Exit_Intent_Video":{"video":"us_lead_peachtree_v1"}},"ServerAttributes":{"PaidKeyword":"","SBCAPageVisit":""},"Iteration":"9sKCHSkFVBTn1BUHlkPMbiUv7l8","Packages":["mmpackage-1.25.js"]});