PageSourceSearch

https://baconsheir.com/apps/store-locator

html baconsheir.com collected 2026-10-04 17:50:18 UTC 211,786 bytes, 3,892 lines download raw bytes

1
2
3 <!DOCTYPE html>
4<html lang="en"> <head> 
4<script>var _listeners=[];EventTarget.prototype.addEventListenerBase=EventTarget.prototype.addEventListener,EventTarget.prototype.addEventListener=function(e,t,p){_listeners.push({target:this,type:e,listener:t}),this.addEventListenerBase(e,t,p)},EventTarget.prototype.removeEventListeners=function(e){for(var t=0;t!=_listeners.length;t++){var r=_listeners[t],n=r.target,s=r.type,i=r.listener;n==this&&s==e&&this.removeEventListener(s,i)}};</script>
4<script type="text/worker" id="spdnworker">onmessage=function(e){var t=new Request("https://api.speedien.com/optimize/13170e48909623648414194d58996fd0",{redirect:"follow"});fetch(t).then(e=>e.text()).then(e=>{postMessage(e)})};</script>
vendor: 1 bytes, line 4
4
5<script type="text/javascript">var spdnx=new Worker("data:text/javascript;base64,"+btoa(document.getElementById("spdnworker").textContent));spdnx.onmessage=function(t){var e=document.createElement("script");e.type="text/javascript",e.textContent=t.data,document.head.appendChild(e)},spdnx.postMessage("init");</script>
vendor: 1 bytes, line 5
5
6<script type="text/javascript" data-spdn="1">
7const observer=new MutationObserver(mutations=>{mutations.forEach(({addedNodes})=>{addedNodes.forEach(node=>{
8if(node.tagName==='SCRIPT'&&node.innerHTML.includes('asyncLoad')){node.type='text/spdnscript'}
9if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.innerHTML.includes('loox.io')){node.type='text/spdnscript'}
10if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.innerHTML.includes('recaptcha')){node.type='text/spdnscript'}
11if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.innerHTML.includes('facebook.net')){node.type='text/spdnscript'}
12if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.innerHTML.includes('gtag')){node.type='text/spdnscript'}
13if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.innerHTML.includes('tagmanager')){node.type='text/spdnscript'}
14if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.innerHTML.includes('gtm')){node.type='text/spdnscript'}
15if(node.nodeType===1&&node.tagName==='SCRIPT'&&node.src.includes('googlet')){node.type='text/spdnscript'}
16if(node.tagName==='SCRIPT'&&node.className=='analytics'){node.type='text/spdnscript'}  })})})
17var ua = navigator.userAgent.toLowerCase();if ((ua.indexOf('chrome') > -1 || ua.indexOf('firefox') > -1) && window.location.href.indexOf("no-optimization") === -1) {observer.observe(document.documentElement,{childList:true,subtree:true})}</script>
17 <meta charset="utf-8"> <meta name="google-site-verification" content="c-Qp6nxUAM6jGt34ZxlSPoFyPph2xWYiI4dsd77bEY0" /> <meta http-equiv="cleartype" content="on"> <meta name="robots" content="index,follow"> <!-- Mobile Specific Metas --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="theme-color" content="#ffffff"> <title>
18      Bacon's Heir - Bacon&#39;s Heir</title> <link rel="preconnect dns-prefetch" href="https://fonts.shopifycdn.com" /> <link rel="preconnect dns-prefetch" href="https://cdn.shopify.com" /> <link rel="preconnect dns-prefetch" href="https://v.shopify.com" /> <link rel="preconnect dns-prefetch" href="https://cdn.shopifycloud.com" /> <link rel="preload" href="//baconsheir.com/cdn/shop/t/84/assets/styles.scss.css?v=64795224620715278821700515196" as="style"> <link rel="preload" href="https://ro.boldapps.net/v2_ui/js/ro.js" as="script"> <link rel="preload" href="//baconsheir.com/cdn/shop/t/84/assets/jquery.min.js?v=9503732020592794151700515182" as="script"> <link href="//baconsheir.com/cdn/shop/t/84/assets/styles.scss.css?v=64795224620715278821700515196" rel="stylesheet" type="text/css" media="all" /> 
18<script>
19      var slick = "//baconsheir.com/cdn/shop/t/84/assets/slick.min.css?v=175860740691850480211700515183";</script>
19 
vendor: 4,501 bytes, lines 19-26
19<script>
20      window.lazySizesConfig = window.lazySizesConfig || {};
21
22      lazySizesConfig.expand = 300;
23      lazySizesConfig.loadHidden = false;
24
25      /*! lazysizes - v4.1.4 */
26      !function(a,b){var c=b(a,a.document);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}(window,function(a,b){"use strict";if(b.getElementsByClassName){var c,d,e=b.documentElement,f=a.Date,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h],k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,d,e,f,g){var h=b.createEvent("Event");return e||(e={}),e.instance=c,h.initEvent(d,!f,!g),h.detail=e,a.dispatchEvent(h),h},w=function(b,c){var e;!g&&(e=a.picturefill||d.pf)?(c&&c.src&&!b[i]("srcset")&&b.setAttribute("srcset",c.src),e({reevaluate:!0,elements:[b]})):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<d.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,c=0,e=d.throttleDelay,g=d.ricTimeout,h=function(){b=!1,c=f.now(),a()},i=m&&g>49?function(){m(h,{timeout:g}),g!==d.ricTimeout&&(g=d.ricTimeout)}:A(function(){k(h)},!0);return function(a){var d;(a=a===!0)&&(g=33),b||(b=!0,d=e-(f.now()-c),0>d&&(d=0),a||9>d?i():k(i,d))}},C=function(a){var b,c,d=99,e=function(){b=null,a()},g=function(){var a=f.now()-c;d>a?k(g,d-a):(m||e)(e)};return function(){c=f.now(),b||(b=k(g,d))}};!function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};d=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in d||(d[b]=c[b]);a.lazySizesConfig=d,k(function(){d.init&&F()})}();var D=function(){var g,l,m,o,p,y,D,F,G,H,I,J,K,L,M=/^img$/i,N=/^iframe$/i,O="onscroll"in a&&!/(gle|ing)bot/.test(navigator.userAgent),P=0,Q=0,R=0,S=-1,T=function(a){R--,a&&a.target&&u(a.target,T),(!a||0>R||!a.target)&&(R=0)},U=function(a,c){var d,f=a,g="hidden"==x(b.body,"visibility")||"hidden"!=x(a.parentNode,"visibility")&&"hidden"!=x(a,"visibility");for(F-=c,I+=c,G-=c,H+=c;g&&(f=f.offsetParent)&&f!=b.body&&f!=e;)g=(x(f,"opacity")||1)>0,g&&"visible"!=x(f,"overflow")&&(d=f.getBoundingClientRect(),g=H>d.left&&G<d.right&&I>d.top-1&&F<d.bottom+1);return g},V=function(){var a,f,h,j,k,m,n,p,q,r=c.elements;if((o=d.loadMode)&&8>R&&(a=r.length)){f=0,S++,null==K&&("expand"in d||(d.expand=e.clientHeight>500&&e.clientWidth>500?500:370),J=d.expand,K=J*d.expFactor),K>Q&&1>R&&S>2&&o>2&&!b.hidden?(Q=K,S=0):Q=o>1&&S>1&&6>R?J:P;for(;a>f;f++)if(r[f]&&!r[f]._lazyRace)if(O)if((p=r[f][i]("data-expand"))&&(m=1*p)||(m=Q),q!==m&&(y=innerWidth+m*L,D=innerHeight+m,n=-1*m,q=m),h=r[f].getBoundingClientRect(),(I=h.bottom)>=n&&(F=h.top)<=D&&(H=h.right)>=n*L&&(G=h.left)<=y&&(I||H||G||F)&&(d.loadHidden||"hidden"!=x(r[f],"visibility"))&&(l&&3>R&&!p&&(3>o||4>S)||U(r[f],m))){if(ba(r[f]),k=!0,R>9)break}else!k&&l&&!j&&4>R&&4>S&&o>2&&(g[0]||d.preloadAfterLoad)&&(g[0]||!p&&(I||H||G||F||"auto"!=r[f][i](d.sizesAttr)))&&(j=g[0]||r[f]);else ba(r[f]);j&&!k&&ba(j)}},W=B(V),X=function(a){s(a.target,d.loadedClass),t(a.target,d.loadingClass),u(a.target,Z),v(a.target,"lazyloaded")},Y=A(X),Z=function(a){Y({target:a.target})},$=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},_=function(a){var b,c=a[i](d.srcsetAttr);(b=d.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},aa=A(function(a,b,c,e,f){var g,h,j,l,o,p;
26(o=v(a,"lazybeforeunveil",b)).defaultPrevented||(e&&(c?s(a,d.autosizesClass):a.setAttribute("sizes",e)),h=a[i](d.srcsetAttr),g=a[i](d.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),o={target:a},p&&(u(a,T,!0),clearTimeout(m),m=k(T,2500),s(a,d.loadingClass),u(a,Z,!0)),l&&q.call(j.getElementsByTagName("source"),_),h?a.setAttribute("srcset",h):g&&!l&&(N.test(a.nodeName)?$(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,d.lazyClass),z(function(){(!p||a.complete&&a.naturalWidth>1)&&(p?T(o):R--,X(o))},!0)}),ba=function(a){var b,c=M.test(a.nodeName),e=c&&(a[i](d.sizesAttr)||a[i]("sizes")),f="auto"==e;(!f&&l||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,d.errorClass)||!r(a,d.lazyClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,R++,aa(a,b,f,e,c))},ca=function(){if(!l){if(f.now()-p<999)return void k(ca,999);var a=C(function(){d.loadMode=3,W()});l=!0,d.loadMode=3,W(),j("scroll",function(){3==d.loadMode&&(d.loadMode=2),a()},!0)}};return{_:function(){p=f.now(),c.elements=b.getElementsByClassName(d.lazyClass),g=b.getElementsByClassName(d.lazyClass+" "+d.preloadClass),L=d.hFac,j("scroll",W,!0),j("resize",W,!0),a.MutationObserver?new MutationObserver(W).observe(e,{childList:!0,subtree:!0,attributes:!0}):(e[h]("DOMNodeInserted",W,!0),e[h]("DOMAttrModified",W,!0),setInterval(W,999)),j("hashchange",W,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(a){b[h](a,W,!0)}),/d$|^c/.test(b.readyState)?ca():(j("load",ca),b[h]("DOMContentLoaded",W),k(ca,2e4)),c.elements.length?(V(),z._lsFlush()):W()},checkElems:W,unveil:ba}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;g>f;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),e=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width,d&&d!==a._lazysizesWidth&&c(a,f,e,d)))},f=function(){var b,c=a.length;if(c)for(b=0;c>b;b++)e(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(d.autosizesClass),j("resize",g)},checkElems:g,updateElem:e}}(),F=function(){F.i||(F.i=!0,E._(),D._())};return c={cfg:d,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}});
27
28      /*! lazysizes - v4.1.4 */
29      !function(a,b){var c=function(){b(a.lazySizes),a.removeEventListener("lazyunveilread",c,!0)};b=b.bind(null,a,a.document),"object"==typeof module&&module.exports?b(require("lazysizes")):a.lazySizes?c():a.addEventListener("lazyunveilread",c,!0)}(window,function(a,b,c){"use strict";function d(){this.ratioElems=b.getElementsByClassName("lazyaspectratio"),this._setupEvents(),this.processImages()}if(a.addEventListener){var e,f,g,h=Array.prototype.forEach,i=/^picture$/i,j="data-aspectratio",k="img["+j+"]",l=function(b){return a.matchMedia?(l=function(a){return!a||(matchMedia(a)||{}).matches})(b):a.Modernizr&&Modernizr.mq?!b||Modernizr.mq(b):!b},m=c.aC,n=c.rC,o=c.cfg;d.prototype={_setupEvents:function(){var a=this,c=function(b){b.naturalWidth<36?a.addAspectRatio(b,!0):a.removeAspectRatio(b,!0)},d=function(){a.processImages()};b.addEventListener("load",function(a){a.target.getAttribute&&a.target.getAttribute(j)&&c(a.target)},!0),addEventListener("resize",function(){var b,d=function(){h.call(a.ratioElems,c)};return function(){clearTimeout(b),b=setTimeout(d,99)}}()),b.addEventListener("DOMContentLoaded",d),addEventListener("load",d)},processImages:function(a){var c,d;a||(a=b),c="length"in a&&!a.nodeName?a:a.querySelectorAll(k);for(d=0;d<c.length;d++)c[d].naturalWidth>36?this.removeAspectRatio(c[d]):this.addAspectRatio(c[d])},getSelectedRatio:function(a){var b,c,d,e,f,g=a.parentNode;if(g&&i.test(g.nodeName||""))for(d=g.getElementsByTagName("source"),b=0,c=d.length;c>b;b++)if(e=d[b].getAttribute("data-media")||d[b].getAttribute("media"),o.customMedia[e]&&(e=o.customMedia[e]),l(e)){f=d[b].getAttribute(j);break}return f||a.getAttribute(j)||""},parseRatio:function(){var a=/^\s*([+\d\.]+)(\s*[\/x]\s*([+\d\.]+))?\s*$/,b={};return function(c){var d;return!b[c]&&(d=c.match(a))&&(d[3]?b[c]=d[1]/d[3]:b[c]=1*d[1]),b[c]}}(),addAspectRatio:function(b,c){var d,e=b.offsetWidth,f=b.offsetHeight;return c||m(b,"lazyaspectratio"),36>e&&0>=f?void((e||f&&a.console)&&console.log("Define width or height of image, so we can calculate the other dimension")):(d=this.getSelectedRatio(b),d=this.parseRatio(d),void(d&&(e?b.style.height=e/d+"px":b.style.width=f*d+"px")))},removeAspectRatio:function(a){n(a,"lazyaspectratio"),a.style.height="",a.style.width="",a.removeAttribute(j)}},f=function(){g=a.jQuery||a.Zepto||a.shoestring||a.$,g&&g.fn&&!g.fn.imageRatio&&g.fn.filter&&g.fn.add&&g.fn.find?g.fn.imageRatio=function(){return e.processImages(this.find(k).add(this.filter(k))),this}:g=!1},f(),setTimeout(f),e=new d,a.imageRatio=e,"object"==typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd&&define(e)}});
30
31        /*! lazysizes - v4.1.5 */
32        !function(a,b){var c=function(){b(a.lazySizes),a.removeEventListener("lazyunveilread",c,!0)};b=b.bind(null,a,a.document),"object"==typeof module&&module.exports?b(require("lazysizes")):a.lazySizes?c():a.addEventListener("lazyunveilread",c,!0)}(window,function(a,b,c){"use strict";if(a.addEventListener){var d=/\s+/g,e=/\s*\|\s+|\s+\|\s*/g,f=/^(.+?)(?:\s+\[\s*(.+?)\s*\])(?:\s+\[\s*(.+?)\s*\])?$/,g=/^\s*\(*\s*type\s*:\s*(.+?)\s*\)*\s*$/,h=/\(|\)|'/,i={contain:1,cover:1},j=function(a){var b=c.gW(a,a.parentNode);return(!a._lazysizesWidth||b>a._lazysizesWidth)&&(a._lazysizesWidth=b),a._lazysizesWidth},k=function(a){var b;return b=(getComputedStyle(a)||{getPropertyValue:function(){}}).getPropertyValue("background-size"),!i[b]&&i[a.style.backgroundSize]&&(b=a.style.backgroundSize),b},l=function(a,b){if(b){var c=b.match(g);c&&c[1]?a.setAttribute("type",c[1]):a.setAttribute("media",lazySizesConfig.customMedia[b]||b)}},m=function(a,c,g){var h=b.createElement("picture"),i=c.getAttribute(lazySizesConfig.sizesAttr),j=c.getAttribute("data-ratio"),k=c.getAttribute("data-optimumx");c._lazybgset&&c._lazybgset.parentNode==c&&c.removeChild(c._lazybgset),Object.defineProperty(g,"_lazybgset",{value:c,writable:!0}),Object.defineProperty(c,"_lazybgset",{value:h,writable:!0}),a=a.replace(d," ").split(e),h.style.display="none",g.className=lazySizesConfig.lazyClass,1!=a.length||i||(i="auto"),a.forEach(function(a){var c,d=b.createElement("source");i&&"auto"!=i&&d.setAttribute("sizes",i),(c=a.match(f))?(d.setAttribute(lazySizesConfig.srcsetAttr,c[1]),l(d,c[2]),l(d,c[3])):d.setAttribute(lazySizesConfig.srcsetAttr,a),h.appendChild(d)}),i&&(g.setAttribute(lazySizesConfig.sizesAttr,i),c.removeAttribute(lazySizesConfig.sizesAttr),c.removeAttribute("sizes")),k&&g.setAttribute("data-optimumx",k),j&&g.setAttribute("data-ratio",j),h.appendChild(g),c.appendChild(h)}
32,n=function(a){if(a.target._lazybgset){var b=a.target,d=b._lazybgset,e=b.currentSrc||b.src;if(e){var f=c.fire(d,"bgsetproxy",{src:e,useSrc:h.test(e)?JSON.stringify(e):e});f.defaultPrevented||(d.style.backgroundImage="url("+f.detail.useSrc+")")}b._lazybgsetLoading&&(c.fire(d,"_lazyloaded",{},!1,!0),delete b._lazybgsetLoading)}};addEventListener("lazybeforeunveil",function(a){var d,e,f;!a.defaultPrevented&&(d=a.target.getAttribute("data-bgset"))&&(f=a.target,e=b.createElement("img"),e.alt="",e._lazybgsetLoading=!0,a.detail.firesLoad=!0,m(d,f,e),setTimeout(function(){c.loader.unveil(e),c.rAF(function(){c.fire(e,"_lazyloaded",{},!0,!0),e.complete&&n({target:e})})}))}),b.addEventListener("load",n,!0),a.addEventListener("lazybeforesizes",function(a){if(a.detail.instance==c&&a.target._lazybgset&&a.detail.dataAttr){var b=a.target._lazybgset,d=k(b);i[d]&&(a.target._lazysizesParentFit=d,c.rAF(function(){a.target.setAttribute("data-parent-fit",d),a.target._lazysizesParentFit&&delete a.target._lazysizesParentFit}))}},!0),b.documentElement.addEventListener("lazybeforesizes",function(a){!a.defaultPrevented&&a.target._lazybgset&&a.detail.instance==c&&(a.detail.width=j(a.target._lazybgset))})}});</script>
32 <link rel="shortcut icon" type="image/x-icon" href="//baconsheir.com/cdn/shop/files/favicon_180x180.png?v=1613673148"> <link rel="apple-touch-icon" href="//baconsheir.com/cdn/shop/files/favicon_180x180.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="57x57" href="//baconsheir.com/cdn/shop/files/favicon_57x57.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="60x60" href="//baconsheir.com/cdn/shop/files/favicon_60x60.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="72x72" href="//baconsheir.com/cdn/shop/files/favicon_72x72.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="76x76" href="//baconsheir.com/cdn/shop/files/favicon_76x76.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="114x114" href="//baconsheir.com/cdn/shop/files/favicon_114x114.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="180x180" href="//baconsheir.com/cdn/shop/files/favicon_180x180.png?v=1613673148"/> <link rel="apple-touch-icon" sizes="228x228" href="//baconsheir.com/cdn/shop/files/favicon_228x228.png?v=1613673148"/> <link rel="canonical" href="https://baconsheir.com/apps/store-locator" />
33
34    
35    
36    
37    
38      
39    	
40      	
40<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
40<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/8934036/digital_wallets/dialog">
41<meta id="in-context-paypal-metadata" data-shop-id="8934036" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
42<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
42<script async="async" data-src="/checkouts/internal/preloads.js?locale=en-US"></script>
42
43<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
44<script async="async" data-src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=8934036" crossorigin="anonymous"></script>
vendor: 1 bytes, line 44
44
45<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":8934036,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/8934036","merchantName":"Bacon's Heir","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Bacon's Heir","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 45
45
46<script id="shopify-features" type="application/json">{"accessToken":"e9c23d0f6b8b03036d15a3c280cff6f7","betas":["rich-media-storefront-analytics"],"domain":"baconsheir.com","predictiveSearch":true,"shopId":8934036,"locale":"en"}</script>
vendor: 1 bytes, line 46
46
47<script>var Shopify = Shopify || {};
48Shopify.shop = "bacons-heir.myshopify.com";
49Shopify.locale = "en";
50Shopify.currency = {"active":"USD","rate":"1.0"};
51Shopify.country = "US";
52Shopify.theme = {"name":"Live theme [awt 23-11-20]","id":125852352560,"schema_name":"Turbo","schema_version":"4.1.2","theme_store_id":null,"role":"main"};
53Shopify.theme.handle = "null";
54Shopify.theme.style = {"id":null,"handle":null};
55Shopify.cdnHost = "baconsheir.com/cdn";
56Shopify.routes = Shopify.routes || {};
57Shopify.routes.root = "/";
58Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
59Shopify.SignInWithShop = Shopify.SignInWithShop || {};
60Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
61Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 61
61
62<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 62
62
63<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 63
63
64<script>
65  window.ShopifyPay = window.ShopifyPay || {};
66  window.ShopifyPay.apiHost = "shop.app\/pay";
67  window.ShopifyPay.redirectState = null;
68</script>
vendor: 1 bytes, line 68
68
69<script>
70  window.Shopify = window.Shopify || {};
71  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
72  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
73  window.Shopify.SignInWithShop.eligible = true;
74</script>
vendor: 1 bytes, line 74
74
75<script type="no-load" async type="module" data-src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 75
75
76<script type="module">
77  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
78
79  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
80
81</script>
vendor: 1 bytes, line 81
81
82<script>
83  window.Shopify = window.Shopify || {};
84  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
85  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]};
86</script>
vendor: 1 bytes, line 86
86
87<script>(function() {
88  var isLoaded = false;
89  function asyncLoad() {
90    if (isLoaded) return;
91    isLoaded = true;
92    var urls = ["https:\/\/static.klaviyo.com\/onsite\/js\/klaviyo.js?company_id=Jcz7Sj\u0026shop=bacons-heir.myshopify.com","https:\/\/storelocator.w3apps.co\/js\/include.js?shop=bacons-heir.myshopify.com","https:\/\/shapp.bundlepayments.com\/widget-script?shop=bacons-heir.myshopify.com"];
93    for (var i = 0; i <urls.length; i++) {
94      var s = document.createElement('script');
95      s.type = 'text/javascript';
96      s.async = true;
97      s.src = urls[i];
98      var x = document.getElementsByTagName('script')[0];
99      x.parentNode.insertBefore(s, x);
100    }
101  };
102  if(window.attachEvent) {
103    window.attachEvent('onload', asyncLoad);
104  } else {
105    window.addEventListener('ks_load', asyncLoad, false);
106  }
107})();</script>
vendor: 1 bytes, line 107
107
108<script id="__st">var __st={"a":8934036,"offset":-18000,"reqid":"dc34833c-b513-47f9-9893-2f5ad4c6d366-1791136217","pageurl":"baconsheir.com\/apps\/store-locator","u":"ac5c197dc072"};</script>
vendor: 1 bytes, line 108
108
109<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 109
109
110<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 110
110
111<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" type="no-load" data-src="//baconsheir.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 111
111
112<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion <126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion <150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion <27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//baconsheir.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
112<script crossorigin="anonymous" type="no-load" data-src="//baconsheir.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 112
112
113<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" data-src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 113
113
114<script>
115  window.Shopify = window.Shopify || {};
116  window.Shopify.MCP = window.Shopify.MCP || {};
117  window.Shopify.MCP.enabled = true;
118  window.Shopify.MCP.shop = "bacons-heir.myshopify.com";
119  window.Shopify.MCP.mcpEndpoint = "https:\/\/baconsheir.com\/api\/mcp";
120  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
121</script>
vendor: 1 bytes, line 121
121
122<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("",i,{once:!0})}p()?i():m()}s("\/\/baconsheir.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
123</script>
vendor: 1 bytes, line 123
123
124<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://baconsheir.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
125</script>
vendor: 1 bytes, line 125
125
126<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
127  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
128</script>
vendor: 1 bytes, line 128
128
129<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
130</script>
130
131<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://baconsheir.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
132<style id="shopify-accelerated-checkout-cart">
133        #shopify-buyer-consent {
134  margin-top: 1em;
135  display: inline-block;
136  width: 100%;
137}
138
139#shopify-buyer-consent.hidden {
140  display: none;
141}
142
143#shopify-subscription-policy-button {
144  background: none;
145  border: none;
146  padding: 0;
147  text-decoration: underline;
148  font-size: inherit;
149  cursor: pointer;
150}
151
152#shopify-subscription-policy-button::before {
153  box-shadow: none;
154}
155
156      </style>
157
158<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
158
159      
160    
161
162    
163
164<meta name="author" content="Bacon&#39;s Heir">
165<meta property="og:url" content="https://baconsheir.com/apps/store-locator">
166<meta property="og:site_name" content="Bacon&#39;s Heir"> <meta property="og:type" content="website"> <meta property="og:title" content="Bacon&#39;s Heir"> <meta name="twitter:site" content="@baconsheir">
167
168<meta name="twitter:card" content="summary"> 
168<script>var loox_global_hash = '1736011156246';</script>
168<script>var loox_pop_active = true;var loox_pop_display = {"home_page":true,"product_page":true,"cart_page":true,"other_pages":true};</script>
168<script>var loox_floating_widget = {"active":true,"rtl":false,"position":"left","button_text":"Reviews","button_bg_color":"333333","button_text_color":"FFFFFF","display_on_home_page":true,"display_on_product_page":true,"display_on_cart_page":false,"display_on_other_pages":true,"hide_on_mobile":false,"orientation":"default"};
169</script>
169<style>.loox-reviews-default { max-width: 1200px; margin: 0 auto; }.loox-rating .loox-icon { color:#ffd700; }
170:root { --lxs-rating-icon-color: #ffd700; }</style> <!-- Hotjar Tracking Code for https://baconsheir.com/ --> 
170<script type="lazyload2">
vendor: 127 bytes, lines 170-173
170
171      (function(h,o,t,j,a,r){
172        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
173        h._hjSettings={hjid:
1732759034
vendor: 259 bytes, lines 173-178
173,hjsv:6};
174        a=o.getElementsByTagName('head')[0];
175        r=o.createElement('script');r.async=1;
176        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
177        a.appendChild(r);
178      })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
178</script>
178 <!-- Pinterest Pixel Base Code --> 
178<script type="lazyload2">
179      !function(e){if(!window.pintrk){window.pintrk=function(){window.pintrk.queue.push(
180        Array.prototype.slice.call(arguments))};var
181      n=window.pintrk;n.queue=[],n.version="3.0";var
182      t=document.createElement("script");t.async=!0,t.src=e;var
183      r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
184      pintrk('load','2613130872638', { em: '', });
185                                      pintrk('page');</script>
185 <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://ct.pinterest.com/v3/?tid=2613130872638&noscript=1" /></noscript> <!-- End Pinterest Pixel Base Code --> <!-- bold subscriptions app   -->
185<script>window.BOLD = window.BOLD || {};
186    window.BOLD.common = window.BOLD.common || {};
187    window.BOLD.common.Shopify = window.BOLD.common.Shopify || {};
188    window.BOLD.common.Shopify.shop = {
189      domain: 'baconsheir.com',
190      permanent_domain: 'bacons-heir.myshopify.com',
191      url: 'https://baconsheir.com',
192      secure_url: 'https://baconsheir.com',
193      money_format: "$ {{amount}}",
194      currency: "USD"
195    };
196    window.BOLD.common.Shopify.customer = {
197      id: null,
198      tags: null,
199    };
200    window.BOLD.common.Shopify.cart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0};
201    window.BOLD.common.template = '';window.BOLD.common.Shopify.formatMoney = function(money, format) {
202        function n(t, e) {
203            return "undefined" == typeof t ? e : t
204        }
205        function r(t, e, r, i) {
206            if (e = n(e, 2),
207                r = n(r, ","),
208                i = n(i, "."),
209            isNaN(t) || null == t)
210                return 0;
211            t = (t / 100).toFixed(e);
212            var o = t.split(".")
213                , a = o[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + r)
214                , s = o[1] ? i + o[1] : "";
215            return a + s
216        }
217        "string" == typeof money && (money = money.replace(".", ""));
218        var i = ""
219            , o = /\{\{\s*(\w+)\s*\}\}/
220            , a = format || window.BOLD.common.Shopify.shop.money_format || window.Shopify.money_format || "$ {{ amount }}";
221        switch (a.match(o)[1]) {
222            case "amount":
223                i = r(money, 2, ",", ".");
224                break;
225            case "amount_no_decimals":
226                i = r(money, 0, ",", ".");
227                break;
228            case "amount_with_comma_separator":
229                i = r(money, 2, ".", ",");
230                break;
231            case "amount_no_decimals_with_comma_separator":
232                i = r(money, 0, ".", ",");
233                break;
234            case "amount_with_space_separator":
235                i = r(money, 2, " ", ",");
236                break;
237            case "amount_no_decimals_with_space_separator":
238                i = r(money, 0, " ", ",");
239                break;
240            case "amount_with_apostrophe_separator":
241                i = r(money, 2, "'", ".");
242                break;
243        }
244        return a.replace(o, i);
245    };
246    window.BOLD.common.Shopify.saveProduct = function (handle, product) {
247      if (typeof handle === 'string' && typeof window.BOLD.common.Shopify.products[handle] === 'undefined') {
248        if (typeof product === 'number') {
249          window.BOLD.common.Shopify.handles[product] = handle;
250          product = { id: product };
251        }
252        window.BOLD.common.Shopify.products[handle] = product;
253      }
254    };
255    window.BOLD.common.Shopify.saveVariant = function (variant_id, variant) {
256      if (typeof variant_id === 'number' && typeof window.BOLD.common.Shopify.variants[variant_id] === 'undefined') {
257        window.BOLD.common.Shopify.variants[variant_id] = variant;
258      }
259    };window.BOLD.common.Shopify.products = window.BOLD.common.Shopify.products || {};
260    window.BOLD.common.Shopify.variants = window.BOLD.common.Shopify.variants || {};
261    window.BOLD.common.Shopify.handles = window.BOLD.common.Shopify.handles || {};window.BOLD.common.Shopify.saveProduct(null, null);window.BOLD.apps_installed = {"Product Upsell":3,"Recurring Orders":1} || {};window.BOLD.common.Shopify.metafields = window.BOLD.common.Shopify.metafields || {};window.BOLD.common.Shopify.metafields["bold_rp"] = {"recurring_type":0};window.BOLD.common.Shopify.metafields["bold_csp_defaults"] = {};window.BOLD.common.cacheParams = window.BOLD.common.cacheParams || {};
262    window.BOLD.common.cacheParams.recurring_orders = 1608659583;
263</script>
263<script src="https://ro.boldapps.net/v2_ui/js/ro.js" type="text/javascript"></script>
263<script>var BOLD = BOLD || {};
264    BOLD.products = BOLD.products || {};
265    BOLD.variant_lookup = BOLD.variant_lookup || {};BOLD.products[null] ={"id":null,"title":null,"handle":null,"description":null,"published_at":"T","created_at":"T","vendor":null,"type":null,"tags":null,"price":"NaN","price_min":"NaN","price_max":"NaN","price_varies":false,"compare_at_price":"NaN","compare_at_price_min":"NaN","compare_at_price_max":"NaN","compare_at_price_varies":false,"all_variant_ids":[],"variants":[],"available":false,"images":null,"featured_image":null,"options":null,"url":null}</script>
265<script>
266
267  var BOLD = BOLD || {};
268  BOLD.recurring_orders = BOLD.recurring_orders || {};
269  if(typeof BOLD.recurring_orders.setSettings !== 'undefined') {
270      BOLD.recurring_orders.setSettings({
271        loadingEnabled: true
272      },true);
273   } else {
274     BOLD.recurring_orders.settings = {
275       loadingEnabled: true
276     };
277   }
278
279  BOLD.recurring_orders.modes = {
280    current_mode:0,
281    recurring_cart:0,
282    single_product:1,
283    mixed_cart:2
284  };
285
286  BOLD.customer = BOLD.customer || {};
287  BOLD.customer.id = null || '';
288  BOLD.customer.email= null || '';
289  BOLD.customer.address1= null || '';
290  BOLD.customer.address = null || '';
291  BOLD.customer.city = null || '';
292  BOLD.customer.company = null || '';
293  BOLD.customer.country = null || '';
294  BOLD.customer.first_name = null || '';
295  BOLD.customer.last_name = null || '';
296  BOLD.customer.phone = null || '';
297  BOLD.customer.province = null || '';
298  BOLD.customer.zip = null || '';
299  BOLD.customer.tags = null || '';
300
301
302  
303  
304  window.mixed_cart = null;
305</script>
305
306
307    
308    
309      
310<script>
311  var TRANSLATIONS = {
312    en: {
313      translation: {
314        titles: {
315          return_to_account: "Return to account details",
316          subscription: "Subscription",
317          subscriptions: "Subscriptions",
318          loading: "Loading...",
319          cancel: "Cancel",
320          save: "Save",
321          continue: "Continue",
322          pause: "Pause",
323          edit: "Edit",
324          my_subscriptions: "My Subscriptions",
325          frequency: "Frequency",
326          next_order: "Next Order",
327          confirm: "Confirm",
328          remove: "Remove",
329          description: "Description",
330          add: "Add",
331        },
332        email_gate: {
333          no_subs: "You do not have any subscriptions yet",
334          check_email: "Check your email to access your subscriptions, {{email}}",
335          cta_access_link: "Email me an access link",
336        },
337        subscriptions: {
338          error: "There was an error loading your subscriptions",
339          no_subs: "You do not have any subscriptions yet",
340          link_to_account: "Return to Account Details",
341        },
342        subscription: {
343          fetch_error: "There was an error fetching the detail subscription",
344          auth_error: "There was authorization error, please login again",
345          plan: "Plan",
346          active: "Active",
347          activate: "Activate",
348          pause: "Pause",
349          paused: "Paused",
350          cancel: "Cancel",
351          cancelled: "Cancelled",
352          shipment_info: "Shipment info",
353          update_shipping: "Update shipping",
354          payment_method: "Payment method",
355          pay_pal_payment_method: "PayPal",
356          ending_in: "ending in",
357          expires: "Expires",
358          add_phone: "Enter a phone number",
359          add_name: "Enter your name",
360          add_lastName: "Enter your last name",
361          billing_attepts: "Billing Attempts",
362          percentage_dynamic_discount: "{{discount}} % off",
363          fixed_amount_dynamic_discount:
364            "{{discount}} off",
365          then_dynamic_discount: " then {{discount}}",
366          orders_dynamic_discount: " for {{orderQty}} orders,",
367          billing_attepts_empty: "There are no billing attempts",
368          billing_attepts_error: "There was an error loading the billing attempts",
369          subs_details: "Subscription Details",
370          update_payment_btn: "Update payment",
371          cancel_prompt_title: "Canceling subscription cannot be undone. If you want to resume shipments, you will need to create a new order in the store.",
372          cancel_error: "There was an error trying to cancel your subscription",
373          no_payment_method_error: "Payment method missing from subscripiton.",
374          no_payment_method_error_add: "Please add a new card.",
375          new_payment_method_success: "Succesfully updated the payment method.",
376          new_payment_method_error: "Unknown error adding your payment method. Please try again.",
377          remove_line_error: "There was an error trying to remove the product",
378          remove_line_success: "Succesfully removed the product",
379          ships_to: "Ships to",
380          update_payment_success: "An email was sent to {{email}} with a secure link to update payment information.",
381          update_payment_success_dunning:
382            "An email was sent to {{email}} with a secure link to update payment information. After payment information is updated we will retry the order.",
383          update_payment_success_payment_error:
384            "Unable to add payment method. An email was sent to {{email}} with a secure link to update payment.",
385          update_payment_error: "There was an error updating your payment information",
386          sales_tax: "Sales tax (if applicable) is not displayed because it is calculated with each new order.",
387          skip_billing_interval_prompt:
388            "Are you sure you want to skip?",
389          skip_billing_interval_success:
390            "Your next order has been rescheduled to {{date}}",
391          skip_billing_interval_error: "There was an error skipping your next order",
392          skip_until: "Skip until",
393          skip_next: "Skip next",
394          order_now: "Order now",
395          next_order_success: "Your next order has been rescheduled to {{date}}",
396          next_order_error: "There was an error setting the subscription&#39;s next order date.",
397          add_new_address: "Add new address",
398          address_update_success: "Address updated successfully",
399          address_update_failed: "We encountered an unknown error. Please try again.",
400          pause_subscription: "Pause subscription",
401          cancel_subscription: "Cancel subscription",
402          pause_disclaimer_date: "We will postpone your subscription. Your subscription will remain active, but you will not be charged until {{date}}
402. You can pause indefinitely or reschedule anytime.",
403          pause_disclaimer_indefinitely:
404            "You will not be charged while your subscription is paused. Reactivate your subscription anytime in your account.",
405          pause_success: "Your subscription was paused successfully",
406          reactivate_btn: "Reactivate now",
407          reactivate: "Reactivate",
408          reactivate_success: "Your subscription has been successfully reactivated.",
409          reactivate_error: "Something went wrong while reactivating your subscription. Please try again",
410          frequency_days: "day(s)",
411          frequency_weeks: "week(s)",
412          frequency_months: "month(s)",
413          order_now_modal_body: "You will be charged {{amount}} and your shipment will go out as soon as possible.",
414          amount: "Amount",
415          frequency_update_success: "Delivery frequency updated to {{ frequency }}.",
416          frequency_update_error: "Unknown error. Delivery frequency could not be updated.",
417          customer_update_success: "Customer information has been updated",
418          customer_update_error: "Unknown error. Customer information could not be updated.",
419          customer_update_info: "Adding your phone number, you will receive free SMS with information about your next subscription, allowing you to skip it,or editing it through your phone",
420          verified_phone: "Phone verified",
421          not_verified_phone: "Phone not verified",
422          verify_phone: "Verify",
423          enter_code: "Enter the verification code",
424          verify_code_error: "There was an error verifying your phone number.",
425          verify_code_retry_error: "You have tried to verify your phone number too many times. Please, try it later.",
426          verify_code_success: "Phone number verified successfully",
427          code_received: "You must have received a confirmation code in the provided phone number.",
428          code_enter: "Please enter the code below to verify your phone number.",
429          code_send: "Send code",
430          qty: "Qty",
431          manage: "Manage",
432          your_next_order: "Your next order",
433          swap_product: "Swap products",
434          swap_product_cta: "Swap for another product...",
435          or: "Or",
436          update_variant: "Change selection",
437          update_bundle: "Update Box",
438          save: "Save {{percentage}}%",
439          failed_payment_message: "Failed payment with saved method. We will automatically retry payment.",
440          failed_payment_cta: "Update Payment method",
441          order_now_success: "Order placed successfully",
442          order_now_error: "Unknown error. Please try again.",
443          update_current_payment_method:
444            "Update current payment method",
445          add_new_card: "Add new card",
446          delayed: "Delayed",
447          delayedNotification: "Subscription delayed due to inventory. Order will ship when item becomes available. To receive order more quickly, please update selection below.",
448          update_success: "Your subscription has been updated successfully.",
449          update_line_success: "Subscription updated. The order will ship out as soon as possible.",
450          update_error: "Something went wrong. Your subscription has not been changed.",
451        },
452        new_payment_method: {
453          title: "Enter payment method",
454          payment_info: "Payment information",
455          card_number: "Card number",
456          exp_date: "Exp date",
457          security_code: "CVV",
458          first_name: "First Name",
459          last_name: "Last Name",
460          billing_address: "Billing address",
461          address1: "Address",
462          address2: "Apartment, suite, etc. (optional)",
463          city: "City",
464          country: "Country/Region",
465          state: "State/Province",
466          zip: "Zip code",
467          phone: "Phone (optional)",
468        },
469        tables: {
470          ID: "ID",
471          status: "Status",
472          item: "Item",
473          created: "Created",
474          next_order: "Next Order",
475          skip: "Skip",
476          product: "Product",
477          quantity: "Quantity",
478          price: "Price",
479          total: "Total",
480          shipping: "Shipping",
481          originated: "Originated",
482          frequency: "Frequency",
483          phone: "Phone",
484          name: "Name",
485          lastName: "Last name",
486          date: "Date",
487          sold_out: "Sold out",
488          partial_inventory: "Partial inventory",
489          qty_sold_out: " • {{quantity}} sold out",
490          order_number: "Order Number",
491          subtotal: "Subtotal",
492          loading_fulfillments: "Loading...",
493          last_fulfillment: "Last fulfillment",
494          next_fulfillment: "Next fulfillment",
495          merchant_discount: "Discount",
496          one_time_discount_label: "(One-time)",
497          finite_discount_label: "({{times}} left)",
498        },
499        login: {
500          start_intro: "Enter your email address to get started",
501          welcome: "Welcome",
502          send_link: "We&#39;ll email you a secure link to sign in.",
503          email_address: "Email address",
504          continue: "Continue",
505          welcome_back: "Welcome back",
506          choose_login: "Choose how to login for",
507          send_secure_link: "Send me secure link",
508          login_password: "Login with password",
509          check_email: "Check your email for login link",
510          secure_email_sent: "We&#39;ve sent a secure email to {{email}}. The link expires in 24 hours.",
511          not_received: "Didn&#39;t receive it?",
512          new_link: "Send me a new link",
513          different_email: "Try different email",
514          no_subscriptions: "No subscriptions found",
515          invalid_email: "Invalid Email",
516          no_subscriptions_message: "We couldn&#39;t find any subscriptions associated with",
517        },
518        product_swap: {
519          title_select: "Choose replacement item",
520          title_confirm: "Confirm",
521          sold_out: "Sold out",
522          choose: "Choose",
523          back: "Back",
524          confirm: "Confirm",
525          save: "Save",
526          update: "Update",
527          original_item: "Original item",
528          replacement_item: "Replacement item",
529          update_success: "Successfully swapped items for the next order.",
530          update_error: "Something went wrong. Your subscription has not been changed.",
531        },
532        bundles: {
533          build_box: "Build your box",
534          of: "of",
535          back: "Back",
536          continue: "Continue",
537          add_cart: "Add to cart",
538          select_plan: "Select plan",
539          build_your_box: "Build your box",
540          addons: "Add-ons",
541          checkout: "Checkout",
542          edit_my_box: "Edit my box",
543          box_size: "Box size",
544          add_cart_error: "There was an error updating your cart.",
545          update_price: "Cost of the box has changed from {{prevBasePrice}} to {{basePrice}}",
546          update_success: "Box successfully updated",
547          update_error: "Something went wrong trying to update the box",
548          delivery_options: "Delivery options",
549          one_time_delivery: "One time",
550          additional_products: "Additional products",
551        },
552        addons: {
553          title: "Add Items",
554          selection_unavailable: "Selection unavailable",
555          success_added: "Successfully added items to your subscription.",
556          subtitle: "Add items to your upcoming order",
557          subscribe: "Subscribe",
558          select: "Add",
559          see_products: "See all products",
560          modal_title: "Add products to your next order",
561          save: "Save",
562          type: "Type",
563        },
564        sms: {
565          title: "Text updates",
566          enable: "Enable",
567          edit_phone: "Edit phone number",
568          enable_phone: "Enable text updates",
569          phone_placeholder: "Enter phone number",
570          enable_phone_text: "Text messages allow you to update subscriptions on the go. Message and. data rates may apply.",
571          phone: "Phone number",
572          invalid_phone: "Invalid phone number",
573          invalid_country: "Only US and CA phone numbers are supported.",
574          duplicated_phone_error: "Phone number already in use",
575        },
576        cancelModal: {
577          header: "Reason for cancelling",
578          neverMind: "Never mind",
579          back: "Back",
580          continue: "Continue",
581          continueWithCancellation: "Continue with cancellation",
582          continueCancel: "Continue cancel",
583          confirmCancellation: "Confirm cancellation",
584          error: "There was an unknown error",
585          tryAgain: "Try again.",
586          TOO_MUCH: "I have too much",
587          MOVING: "Moving to a new place",
588          COMPETITOR: "Switching to a competitor",
589          BUDGET: "Doesn’t fit my budget",
590          NOT_ENJOY: "I didn’t enjoy the product",
591          NO_NEED: "No longer need this",
592          TRAVELLING: "I’m traveling",
593          OTHER: "Other",
594          frequency: {
595            modalTitle: "Frequency update available",
596            title: "Update frequency instead of losing subscription",
597            subtitle: "By updating your delivery frequency, you can control how often you recieve shipments.",
598            updateFrequency: "Update frequency",
599            formModalTitle: "Edit frequency",
600            formTitle: "You control how often your receive deliveries. Upcoming orders will be delivered on the frequency selected below.",
601            formDelivery: "Delivery every",
602            setFrequency: "Set frequency",
603          },
604          address: {
605            modalPromptTitle: "Address update available",
606            promptTitle: "Moving doesn’t have to mean cancellation",
607            promptSubtitle: "By updating your address, you have the option of keeping your subscription with you wherever you go!",
608            promptUpdateAddress: "Update address",
609            modalFormTitle: "Enter address",
610            noShippingOptions: "There are no shipping options available for that address.",
611            confirmModalTitle: "Shipping confirmation",
612            confirmTitle: "The price of shipping for your subscription will change from {{oldPrice}} to {{newPrice}} because your new address is in a different delivery zone.",
613            confirmAcceptShipping: "Accept shipping",
614            newAddress: "New address:",
615            oldAddress: "Old address:",
616          },
617          pause: {
618            header: "Pause available",
619            title: "Did you know you can pause instead?",
620            description: "Instead of cancelling, pausing your subscription allows you to keep billing and shipping details saved when you’re ready to reactivate your subscription.",
621            cta: "Pause subscription",
622            success: "Your subscription was paused successfully",
623          },
624          skip: {
625            header: "Skip available",
626            title: "You can skip or reschedule your next order",
627            description: "Keep your shipments coming once you’re back from your trip. Consider skipping or rescheduling instead of canceling.",
628            ctaReschedule: "Reschedule next order",
629            ctaSkip: "Skip next",
630            success: "Your next order has been rescheduled to {{date}}",
631          },
632          reschedule: {
633            header: "Schedule next order",
634            confirmReschedule: "Reschedule",
635            dateFormat: "mm/dd/yyyy",
636            inputLabel: "Next order",
637            description: "Your subscription will remain active, but we will postpone your subscription until the date you select below.",
638          },
639          confirm: {
640            header: "Translation missing: en.awtomatic.customer_portal.cancelModal.confirm.header",
641            modalTitle: "Additional feedback",
642            title: "Please provide additional feedback (optional)",
643            button: "Confirm cancellation",
644            success: "Subscription cancelled",
645          },
646        },
647        drawers: {
648          updateAddress: {
649            title: "Enter address",
650          },
651        },
652      },
653    },
654  };
655
656  window.bundleapp = window.bundleapp || {};
657  window.bundleapp.settings = {
658    ...window.bundleapp.settings,
659    translations: TRANSLATIONS,
660  };
661</script>
661
662
663    
664    
665
666<meta property="og:image" content="https://cdn.shopify.com/s/files/1/0893/4036/files/BH-Bacons-Heir-Checkout-Logo.png?height=628&pad_color=fff&v=1640013898&width=1200" />
667<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/0893/4036/files/BH-Bacons-Heir-Checkout-Logo.png?height=628&pad_color=fff&v=1640013898&width=1200" />
668<meta property="og:image:width" content="1200" />
669<meta property="og:image:height" content="628" />
670<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
671<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 8934036,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: ""};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 671
671
672<script>
673  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
674</script>
vendor: 1 bytes, line 674
674
675<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
675).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 8934036,storefrontBaseUrl: "https://baconsheir.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://baconsheir.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"254869552","configuration":"{\"pixelCode\":\"C3IVA1SS6SQO8TG3UB30\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
675,{"id":"146636848","configuration":"{\"pixel_id\":\"1190255414393889\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"66682928","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Google Analytics tag (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Bacon's Heir","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"bacons-heir.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/baconsheir.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://baconsheir.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"125852352560","themePublished":"true","eventMetadataId":"1a5d0da9-688e-498f-85e1-cc5833519c30","shopId":"8934036","storefrontBaseUrl":"https:\/\/baconsheir.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
675<script>
676  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
677  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
678  window.ShopifyAnalytics.meta.currency = 'USD';
679  var meta = {"page":{"requestId":"dc34833c-b513-47f9-9893-2f5ad4c6d366-1791136217"}};
680  for (var attr in meta) {
681    window.ShopifyAnalytics.meta[attr] = meta[attr];
682  }
683</script>
vendor: 1 bytes, line 683
683
684<script class="analytics">
685  (function () {
686    var customDocumentWrite = function(content) {
687      var jquery = null;
688
689      if (window.jQuery) {
690        jquery = window.jQuery;
691      } else if (window.Checkout && window.Checkout.$) {
692        jquery = window.Checkout.$;
693      }
694
695      if (jquery) {
696        jquery('body').append(content);
697      }
698    };
699
700    var hasLoggedConversion = function(token) {
701      if (token) {
702        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
703      }
704      return false;
705    }
706
707    var setCookieIfConversion = function(token) {
708      if (token) {
709        var twoMonthsFromNow = new Date(Date.now());
710        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
711
712        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
713      }
714    }
715
716    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
717    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
718    if (trekkie.integrations) {
719      return;
720    }
721    trekkie.methods = [
722      'identify',
723      'page',
724      'ready',
725      'track',
726      'trackForm',
727      'trackLink'
728    ];
729    trekkie.factory = function(method) {
730      return function() {
731        var args = Array.prototype.slice.call(arguments);
732        args.unshift(method);
733        trekkie.push(args);
734        if (method == 'track' || method == 'page') {
735          var pageUrl;
736          try {
737            pageUrl = window.location.href;
738          } catch (e) {}
739          var pageReferrer;
740          try {
741            pageReferrer = document.referrer;
742          } catch (e) {}
743          try {
744            if (window.__TREKKIE_SHIM_QUEUE == null) {
745              window.__TREKKIE_SHIM_QUEUE = [];
746            }
747            window.__TREKKIE_SHIM_QUEUE.push({
748              from: 'trekkie-stub',
749              method: method,
750              args: args.slice(1),
751              pageContext: {
752                url: pageUrl,
753                referrer: pageReferrer
754              }
755            });
756          } catch (e) {
757            // no-op
758          }
759        }
760        return trekkie;
761      };
762    };
763    for (var i = 0; i < trekkie.methods.length; i++) {
764      var key = trekkie.methods[i];
765      trekkie[key] = trekkie.factory(key);
766    }
767    trekkie.load = function(config) {
768      trekkie.config = config || {};
769      trekkie.config.initialDocumentCookie = document.cookie;
770      var first = document.getElementsByTagName('script')[0];
771var script = document.createElement('script');
772script.type = 'text/javascript';
773script.onerror = function(e) {
774  var scriptFallback = document.createElement('script');
775  scriptFallback.type = 'text/javascript';
776  scriptFallback.onerror = function(error) {
777          var Monorail = {
778      produce: function produce(monorailDomain, schemaId, payload) {
779        var currentMs = new Date().getTime();
780        var event = {
781          schema_id: schemaId,
782          payload: payload,
783          metadata: {
784            event_created_at_ms: currentMs,
785            event_sent_at_ms: currentMs
786          }
787        };
788        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
789      },
790      sendRequest: function sendRequest(endpointUrl, payload) {
791        // Try the sendBeacon API
792        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
793          var blobData = new window.Blob([payload], {
794            type: 'text/plain'
795          });
796
797          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
798            return true;
799          } // sendBeacon was not successful
800
801        } // XHR beacon
802
803        var xhr = new XMLHttpRequest();
804
805        try {
806          xhr.open('POST', endpointUrl);
807          xhr.setRequestHeader('Content-Type', 'text/plain');
808          xhr.send(payload);
809        } catch (e) {
810          console.log(e);
811        }
812
813        return false;
814      },
815      isIos12: function isIos12() {
816        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
817      }
818    };
819    Monorail.produce('monorail-edge.shopifysvc.com',
820      'trekkie_storefront_load_errors/1.1',
821      {shop_id: 8934036,
822      theme_id: 125852352560,
823      app_name: "storefront",
824      context_url: window.location.href,
825      source_url: "//baconsheir.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
826
827  };
828  scriptFallback.async = true;
829  scriptFallback.src = '//baconsheir.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
830  first.parentNode.insertBefore(scriptFallback, first);
831};
832script.async = true;
833script.src = '//baconsheir.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
834first.parentNode.insertBefore(script, first);
835
836    };
837    trekkie.load(
838      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":8934036,"isMerchantRequest":null,"themeId":125852352560,"themeCityHash":"14929622396541519896","contentLanguage":"en","currency":"USD","eventMetadataId":"1a5d0da9-688e-498f-85e1-cc5833519c30"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
839    );
840
841    var loaded = false;
842    trekkie.ready(function() {
843      if (loaded) return;
844      loaded = true;
845
846      window.ShopifyAnalytics.lib = window.trekkie;
847
848      var originalDocumentWrite = document.write;
849      document.write = customDocumentWrite;
850      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
851      document.write = originalDocumentWrite;
852
853      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
854      var token = match? match[1]: undefined;
855      if (!hasLoggedConversion(token)) {
856        setCookieIfConversion(token);
857        
858      }
859    });
860
861    window.ShopifyAnalytics.lib.page(null,{"requestId":"dc34833c-b513-47f9-9893-2f5ad4c6d366-1791136217","shopifyEmitted":true});
862
863    var eventsListenerScript = document.createElement('script');
864    eventsListenerScript.async = true;
865    eventsListenerScript.src = "//baconsheir.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
866    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
867})();</script>
867
868  
868<script>
869  if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
870    window.ga = function ga() {
871      (window.ga.q = window.ga.q || []).push(arguments);
872      if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
873        window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
874      }
875      console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
876    };
877    if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
878      window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
879    }
880  }
881</script>
vendor: 1 bytes, line 881
881
882<script
883  defer
884  src="https://baconsheir.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
885  data-application="storefront-renderer"
886  data-shop-id="8934036"
887  data-render-region="gcp-us-central1"
888  data-page-type=""
889  data-theme-instance-id="125852352560"
890  data-theme-name="Turbo"
891  data-theme-version="4.1.2"
892  data-monorail-region="shop_domain"
893  data-resource-timing-sampling-rate="10"
894  data-shs="true"
895  data-shs-beacon="true"
896  data-shs-export-with-fetch="true"
897  data-shs-logs-sample-rate="1"
898  data-shs-beacon-endpoint="https://baconsheir.com/api/collect"
899></script>
899
900<meta name="shopify-y" content="609262e0-d422-4033-b24f-d5e2da2a68b9" data-expiration="1822693817000"><meta name="shopify-s" content="8f25ef74-d53a-4ba5-849a-0c330b0064db" data-expiration="1791138017000"><meta name="new-cookie-storage-activated" content="t"></head> <noscript> <style>
901      .product_section .product_form,
902      .product_gallery {
903        opacity: 1;
904      }
905
906      .multi_select,
907      form .select {
908        display: block !important;
909      }
910
911      .image-element__wrap {
912        display: none;
913      }</style></noscript> <body class=""
914    data-money-format="$ {{amount}}" data-shop-url="https://baconsheir.com"> <div id="CartDrawer" class="ajaxcart-popup"> <div class="drawer__header"> <div class="table-cell"> <h3>My Cart</h3></div> <div class="table-cell"> <span class="close-cart"> <svg class="icon" id="icon-close" viewBox="0 0 32 32"> <title>close</title> <path class="path1" d="M28.095 5.795l-1.845-1.85-10.21 10.205-10.205-10.205-1.85 1.85 10.21 10.205-10.21 10.205 1.85 1.85 10.205-10.205 10.21 10.205 1.845-1.85-10.205-10.205 10.205-10.205z"></path></svg></span></div></div> <div id="CartContainer"></div>
915</div> <div id="shopify-section-header" class="shopify-section header-section">
916
917
918<header id="header" class="mobile_nav-fixed--true"> <div class="promo_banner"> <div class="promo_banner__content"> <p><strong>MADE IN THE USA | FREE SHIPPING IN THE USA</strong></p> <img class="lazyload" data-src="//cdn.shopify.com/s/files/1/0893/4036/files/flag-us.svg?v=1634956895" width="24" height="15" alt="USA FLAG" /></div>
919<!-- <div class="promo_banner-close"></div> --></div> <div class="top_bar clearfix"> <a class="mobile_nav dropdown_link" data-dropdown-rel="menu" data-no-instant="true"> <div> <span></span> <span></span> <span></span> <span></span></div></a> <a href="https://baconsheir.com" title="Bacon&#39;s Heir" class="mobile_logo logo"> <img src="//cdn.shopify.com/s/files/1/0893/4036/files/Pork-Panko-Logo-Tagline-WHITE-04.svg?v=1643894891" alt="Bacon&#39;s Heir" class="lazyload" width="120" height="45" /></a> <div class="top_bar--right"> <a href="/account" class="custom-header-icon" title="My Account "> <img class="lazyload" data-src="//cdn.shopify.com/s/files/1/0893/4036/files/user-icons.png?v=1608645122" alt="My Account " /></a> <a class="site-header__cart custom-header-icon" data-no-instant> <img class="lazyload" data-src="//cdn.shopify.com/s/files/1/0893/4036/files/cart-icons.png?v=1608645122" alt="My cart" /></a></div></div> <div class="dropdown_container" data-dropdown="menu"> <div class="dropdown"> <ul class="menu" id="mobile_menu"> <li data-mobile-dropdown-rel="shop"> <a data-no-instant href="/collections" class="parent-link--true">
920          Shop</a></li> <li data-mobile-dropdown-rel="explore" class="sublink"> <a data-no-instant href="/" class="parent-link--false">
921          Explore <span class="right icon-down-arrow"></span></a> <ul> <li><a href="/pages/pork-panko-pork-rind-breadcrumbs">Pork Panko</a></li> <li><a href="/pages/pork-panko-foodservice">Restaurants and Foodservice</a></li></ul></li> <li data-mobile-dropdown-rel="about" class="sublink"> <a data-no-instant href="/pages/press" class="parent-link--true">
922          About <span class="right icon-down-arrow"></span></a> <ul> <li><a href="/pages/where-to-buy">Where To Buy</a></li> <li><a href="/pages/contact-us">Contact</a></li></ul></li> <li data-mobile-dropdown-rel="recipes" class="sublink"> <a data-no-instant href="/blogs/recipe-landing" class="parent-link--true">
923          Recipes <span class="right icon-down-arrow"></span></a> <ul> <li><a href="/blogs/recipes">Pork Panko Recipes</a></li> <li><a href="/blogs/holidays">Holidays Favorites</a></li> <li><a href="/pages/how-to-make-pork-rinds">How To Make Pork Rinds</a></li></ul></li> <li data-no-instant> <a href="/account/login" id="customer_login_link">Login</a></li></ul></div></div>
924</header>
925
926
927
928
929<header class=" secondary_logo--true"> <div class="header  header-fixed--true header-background--solid"> <div class="promo_banner"> <div class="promo_banner__content"> <p><strong>MADE IN THE USA | FREE SHIPPING IN THE USA</strong></p> <img class="lazyload" data-src="//cdn.shopify.com/s/files/1/0893/4036/files/flag-us.svg?v=1634956895" width="24" height="15" alt="USA FLAG" /></div>
930<!-- <div class="promo_banner-close"></div> --></div> <div class="main_nav_wrapper">
930 <div class="main_nav clearfix menu-position--inline logo-align--left"> <div class="logo text-align--left"> <a href="https://baconsheir.com" title="Bacon&#39;s Heir"> <img src="//cdn.shopify.com/s/files/1/0893/4036/files/Pork-Panko-Logo-Tagline-WHITE-04.svg?v=1643894891" class="secondary_logo" alt="Bacon&#39;s Heir" /> <img src="//cdn.shopify.com/s/files/1/0893/4036/files/Pork-Panko-Logo-Tagline-WHITE-04.svg?v=1643894891" class="primary_logo lazyload" alt="Bacon&#39;s Heir" /></a></div> <div class="nav"> <ul class="menu align_right clearfix"> <div class="vertical-menu"> <li><a href="/collections" class="top_link " data-dropdown-rel="shop">Shop</a></li> <li class="sublink"> <a data-no-instant href="/" class="dropdown_link--vertical " data-dropdown-rel="explore" data-click-count="0">Explore <span class="icon-down-arrow"></span></a> <ul class="vertical-menu_submenu"> <li><a href="/pages/pork-panko-pork-rind-breadcrumbs">Pork Panko</a></li> <li><a href="/pages/pork-panko-foodservice">Restaurants and Foodservice</a></li></ul></li> <li class="sublink"> <a data-no-instant href="/pages/press" class="dropdown_link--vertical " data-dropdown-rel="about" data-click-count="0">About <span class="icon-down-arrow"></span></a> <ul class="vertical-menu_submenu"> <li><a href="/pages/where-to-buy">Where To Buy</a></li> <li><a href="/pages/contact-us">Contact</a></li></ul></li> <li class="sublink"> <a data-no-instant href="/blogs/recipe-landing" class="dropdown_link--vertical " data-dropdown-rel="recipes" data-click-count="0">Recipes <span class="icon-down-arrow"></span></a> <ul class="vertical-menu_submenu"> <li><a href="/blogs/recipes">Pork Panko Recipes</a></li> <li><a href="/blogs/holidays">Holidays Favorites</a></li> <li><a href="/pages/how-to-make-pork-rinds">How To Make Pork Rinds</a></li></ul></li>
931    
932  
933</div> <div class="vertical-menu">
934  
935</div> <li class="customer-account-icon"> <a href="/account" class="custom-header-icon" title="My Account "> <img class="lazyload" data-src="//cdn.shopify.com/s/files/1/0893/4036/files/user-icons.png?v=1608645122" alt="My Account " /></a></li> <li class="ajax-cart-part"> <a class="site-header__cart custom-header-icon" data-no-instant> <img class="lazyload" data-src="//cdn.shopify.com/s/files/1/0893/4036/files/cart-icons.png?v=1608645122" alt="My cart" /></a></li></ul></div> <div class="dropdown_container" data-dropdown="explore"> <div class="dropdown menu"> <div class="dropdown_content dropdown_narrow"> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/pages/pork-panko-pork-rind-breadcrumbs">Pork Panko</a></li></ul></div> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/pages/pork-panko-foodservice">Restaurants and Foodservice</a></li></ul></div></div></div></div> <div class="dropdown_container" data-dropdown="about"> <div class="dropdown menu"> <div class="dropdown_content dropdown_narrow"> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/pages/where-to-buy">Where To Buy</a></li></ul></div> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/pages/contact-us">Contact</a></li></ul></div></div></div></div> <div class="dropdown_container" data-dropdown="recipes"> <div class="dropdown menu"> <div class="dropdown_content dropdown_narrow"> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/blogs/recipes">Pork Panko Recipes</a></li></ul></div> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/blogs/holidays">Holidays Favorites</a></li></ul></div> <div class="dropdown_column"> <ul class="dropdown_item"> <li> <a href="/pages/how-to-make-pork-rinds">How To Make Pork Rinds</a></li></ul></div></div></div></div></div></div></div>
936</header>
937
938<style>
939  .main_nav div.logo a {
940    padding-top: 25px;
941    padding-bottom: 25px;
942  }
943
944  div.logo img {
945    max-width: 250px;
946  }
947
948  .nav {
949    
950      width: 84%;
951      float: left;
952    
953  }
954
955  
956    .nav ul.menu {
957      padding-top: 40px;
958      padding-bottom: 40px;
959    }
960
961    .sticky_nav ul.menu, .sticky_nav .mini_cart {
962      padding-top: 20px;
963      padding-bottom: 20px;
964    }
965  
966
967  
968
969  
970    body {
971      overscroll-behavior-y: none;
972    }
973  
974
975</style>
976
977
978</div> <div class="mega-menu-container"></div> <div class="container main content">
979    
980
981      
982
983
984<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
984
985
986<script src="https://storelocator.w3apps.co/js/iframe/iframeResizer.min.js" type="text/javascript"></script>
986
987
988<script type="text/javascript">
989
990	var jqSL = jQuery.noConflict(true);
991
992    (function (j2) {
993				
994        var domainUrl = 'https://storelocator.w3apps.co';
995
996        if (!String.prototype.startsWith) {
997            String.prototype.startsWith = function(searchString, position) {
998                position = position || 0;
999                return this.indexOf(searchString, position) === position;
1000            };
1001        }
1002
1003        j2(function () {
1004
1005            var src = "https://storelocator.w3apps.co/map.aspx";
1006
1007            src = src + "?shop=" + encodeURIComponent("bacons-heir");
1008
1009            
1010            if (j2('#store-locator-iframe').width() === j2("body").width()) {
1011                src = src + "&container=true";
1012            } else {
1013                src = src + "&container=false";
1014            }
1015
1016            j2('#store-locator-iframe').attr("src", src);
1017
1018			var heightCalculationMethod = 'taggedElement';
1019			
1020			if(typeof(storeLocatorIframeHeightMethod) != "undefined") {
1021				heightCalculationMethod = storeLocatorIframeHeightMethod;
1022			}
1023			
1024			if(typeof(storeLocatorDebug) != "undefined") {
1025				j2('#store-locator-iframe').iFrameResize({
1026					heightCalculationMethod: heightCalculationMethod,
1027					checkOrigin: false,
1028					log: true
1029				});
1030			} else {
1031				j2('#store-locator-iframe').iFrameResize({
1032					heightCalculationMethod: heightCalculationMethod,
1033					checkOrigin: false
1034				});
1035			}
1036			
1037            
1038			
1039			setTimeout(function() { 
1040				j2('#store-locator-iframe')[0].iFrameResizer.resize();
1041			}, 100);
1042
1043        });
1044		
1045		
1046
1047
1048
1049
1050        setTimeout(function () {
1051            j2("#store-locator-iframe").load(function () {
1052
1053                var cssLinks = j2("head link");
1054
1055                j2.each(cssLinks, function (index, value) {
1056
1057                    if (value.rel == "stylesheet" || value.type == "text/css") {
1058                        var href = value.href;
1059
1060                        var iframeWindow = j2('#store-locator-iframe')[0].contentWindow;
1061
1062
1063
1064                        iframeWindow.postMessage("[addLinkHref]" + href, "*");
1065                    }
1066                });
1067            });
1068
1069
1070        }, 1);
1071
1072    })(jqSL);
1073
1074</script>
1074
1075
1076<div class="store-locator-container" style="display:block; position:static;">
1077
1078<!-- title required for ADA compliance? -->
1079<iframe title="Store Locator App" id="store-locator-iframe" allow="geolocation" frameborder="0" style="width:100%; padding-top:1px;" allowfullscreen></iframe>
1080
1081</div></div> <div id="shopify-section-footer" class="shopify-section footer-section">
1082
1083<footer class="footer"> <div class="container footer-menu-wrap"> <div class="four columns medium-down--one-whole" > <div class="text-align--left"> <img  alt=""
1084                      class="footer-logo lazyload blur-up"
1085                      data-sizes="25vw"
1086                      style="max-width:160px"
1087                      data-src="//baconsheir.com/cdn/shop/files/main-new-logo_2048x.png?v=1632791358"
1088                      data-srcset=" //baconsheir.com/cdn/shop/files/main-new-logo_200x.png?v=1632791358 200w,
1089                                    //baconsheir.com/cdn/shop/files/main-new-logo_300x.png?v=1632791358 300w,
1090                                    //baconsheir.com/cdn/shop/files/main-new-logo_400x.png?v=1632791358 400w,
1091                                    //baconsheir.com/cdn/shop/files/main-new-logo_500x.png?v=1632791358 500w,
1092                                    //baconsheir.com/cdn/shop/files/main-new-logo_600x.png?v=1632791358 600w,
1093                                    //baconsheir.com/cdn/shop/files/main-new-logo_1000x.png?v=1632791358 1000w"
1094                     width="160" height="63"
1095                   /></div> <div class="footer-social-icons"> <ul class="social_icons"> <li><a href="https://www.instagram.com/BaconsHeir" title="Bacon&#39;s Heir on Instagram" rel="me" target="_blank" class="icon-instagram"></a></li> <li><a href="https://www.pinterest.com/baconsheir" title="Bacon&#39;s Heir on Pinterest" rel="me" target="_blank" class="icon-pinterest"></a></li> <li><a href="https://twitter.com/baconsheir" title="Bacon&#39;s Heir on Twitter" rel="me" target="_blank" class="icon-twitter"></a></li> <li><a href="https://www.facebook.com/PorkClouds" title="Bacon&#39;s Heir on Facebook" rel="me" target="_blank" class="icon-facebook"></a></li>
1096  
1097
1098  
1099
1100   
1101
1102  
1103
1104  
1105
1106  
1107
1108  
1109
1110  
1111</ul></div></div> <div class="four columns medium-down--one-whole" > <div class="footer_menu"> <h6>Explore<span class="right icon-down-arrow"></span></h6> <div class="toggle_content"> <ul> <li><p><a href="/blogs/recipes">Recipes</a></p></li> <li><p><a href="/pages/how-to-make-pork-rinds">Videos</a></p></li></ul></div></div></div> <div class="four columns medium-down--one-whole" > <div class="footer_menu"> <h6>Info<span class="right icon-down-arrow"></span></h6> <div class="toggle_content"> <ul> <li><p><a href="/pages/press">The Story</a></p></li> <li><p><a href="/apps/store-locator">Where to Buy</a></p></li> <li><p><a href="/pages/contact-us">Contact</a></p></li></ul></div></div></div> <div class="four columns medium-down--one-whole" > <div class="newsletter_section"> <h6>Connect</h6> <p>Sign up for recipes, updates, deals and more!</p> <div class="newsletter"> <span class="message"></span> <form action="https://manage.kmail-lists.com/subscriptions/subscribe?a=Jcz7Sj&g=QeCcx2" method="post" name="mc-embedded-subscribe-form" id="contact_form" target="_blank"> <label for="Email-footer" class="hide" aria-label="Email">Email</label> <input type="email" value="" name="EMAIL" id="Email-footer" class="contact_email" placeholder="Email"> <input type="submit" value="Join" class="action_button sign_up" name="subscribe" /></form></div></div></div> <p class="footer-extra-text mobile-only">Keep it crispy.</p> <div class="footer-social-icons--mobile sixteen columns"> <ul class="social_icons"> <li><a href="https://www.instagram.com/BaconsHeir" title="Bacon&#39;s Heir on Instagram" rel="me" target="_blank" class="icon-instagram"></a></li> <li><a href="https://www.pinterest.com/baconsheir" title="Bacon&#39;s Heir on Pinterest" rel="me" target="_blank" class="icon-pinterest"></a></li> <li><a href="https://twitter.com/baconsheir" title="Bacon&#39;s Heir on Twitter" rel="me" target="_blank" class="icon-twitter"></a></li> <li><a href="https://www.facebook.com/PorkClouds" title="Bacon&#39;s Heir on Facebook" rel="me" target="_blank" class="icon-facebook"></a></li>
1112  
1113
1114  
1115
1116   
1117
1118  
1119
1120  
1121
1122  
1123
1124  
1125
1126  
1127</ul></div> <div class="sixteen columns row footer_credits"> <div class="footer-extra-nav"> <p class="footer-extra-text desktop-only">Keep it crispy.</p> <ul> <li><a href="/pages/privacy-policy">Privacy Policy</a></li> <li>| &nbsp;&nbsp;Copyright
1128          		&copy; 2026 <a href="/" title="">Bacon&#39;s Heir</a>, INC.</li></ul></div></div><!--end footer_credits--></div></div>
1129</footer>
1130
1131</div> 
1131<script src="//baconsheir.com/cdn/shop/t/84/assets/jquery.min.js?v=9503732020592794151700515182"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/vendors.js?v=64406799660333671781700515182" async="async"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/sections.js?v=57129191927433064001700515183" async="async"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/utilities.js?v=69464337000709086621700515197" async="async"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/app.js?v=7275200813813256311700515183" async="async"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/slick.min.js?v=86595272622966071931700515182" async="async"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/custom.js?v=178324571471027900671700515182" async="async"></script>
1131 
1131<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/handlebars.min.js?v=34659044619744043361700515182"></script>
1131
1132<!-- /snippets/ajax-cart-template.liquid --> 
1132<script id="CartTemplate" type="text/template"> <form action="/cart" method="post" novalidate class="cart ajaxcart"> <div class="ajaxcart__inner">  
1133        {{#items}} <div class="ajaxcart__product"> <div class="ajaxremove"> <a href="/cart/change?line={{line}}&amp;quantity=0" class="ajaxifyCartremove" data-line="{{line}}"> <svg class="icon" id="icon-close" viewBox="0 0 32 32"> <title>close</title> <path class="path1" d="M28.095 5.795l-1.845-1.85-10.21 10.205-10.205-10.205-1.85 1.85 10.21 10.205-10.21 10.205 1.85 1.85 10.205-10.205 10.21 10.205 1.845-1.85-10.205-10.205 10.205-10.205z"></path></svg></a></div> <div class="ajaxcart row" data-line="{{line}}"> <div class="two-sixths columns"> <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a></div> <div class="four-sixths columns"> <p> <a href="{{url}}" class="ajaxcart__product-name">{{name}}</a>
1134                  {{#if variation}} <span class="ajaxcart__product-meta">{{variation}}{{{recurring}}}</span>
1135                  {{/if}}
1136                  {{#properties}}
1137                    {{#each this}}
1138                      {{#if this}} <span class="ajaxcart__product-meta">{{@key}}: {{this}}</span>
1139                      {{/if}}
1140                    {{/each}}
1141                  {{/properties}}</p> <p><strong>{{{price}}}</strong></p> <div class="display-table"> <div class="ajaxcart__qty"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus quantity-increment" data-id="{{id}}" data-qty="{{itemMinus}}" data-line="{{line}}"> <span>&minus;
1141</span></button> <input type="text" name="updates[]" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{id}}" data-line="{{line}}" aria-label="quantity" pattern="[0-9]*"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus quantity-increment" data-id="{{id}}" data-line="{{line}}" data-qty="{{itemAdd}}"> <span>+</span></button></div></div></div></div></div>
1142        {{/items}}</div> <div class="ajaxcart__footer row"> <div class="one-half columns"> <p><strong>Subtotal</strong></p></div> <div class="one-half columns"> <p class="text-right"><strong>{{{totalPrice}}}</strong></p></div> <p class="text-center">Shipping calculated at check out</p> <div class="product_rp_cart_div"></div> <button type="submit" class="cart__checkout" name="checkout">
1143          Checkout &rarr;</button> <div class="additional-checkout-buttons"><div class="dynamic-checkout__content" id="dynamic-checkout-cart" data-shopify="dynamic-checkout-cart"> <shopify-accelerated-checkout-cart wallet-configs="[{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:false,&quot;name&quot;:&quot;shop_pay&quot;,&quot;wallet_params&quot;:{&quot;shopId&quot;:8934036,&quot;merchantName&quot;:&quot;Bacon&#39;s Heir&quot;,&quot;personalized&quot;:true}},{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:false,&quot;name&quot;:&quot;paypal&quot;,&quot;wallet_params&quot;:{&quot;shopId&quot;:8934036,&quot;countryCode&quot;:&quot;US&quot;,&quot;merchantName&quot;:&quot;Bacon&#39;s Heir&quot;,&quot;phoneRequired&quot;:false,&quot;companyRequired&quot;:false,&quot;shippingType&quot;:&quot;shipping&quot;,&quot;shopifyPaymentsEnabled&quot;:true,&quot;hasManagedSellingPlanState&quot;:false,&quot;requiresBillingAgreement&quot;:false,&quot;gatewayType&quot;:&quot;MANAGED&quot;,&quot;merchantId&quot;:&quot;NJWA2K7YWMUM2&quot;,&quot;sdkUrl&quot;:&quot;https://www.paypal.com/sdk/js?components=buttons\u0026commit=false\u0026currency=USD\u0026locale=en_US\u0026client-id=AbasDhzlU0HbpiStJiN1KRJ_cNJJ7xYBip7JJoMO0GQpLi8ePNgdbLXkC7_KMeyTg8tnAKW4WKrh9qmf\u0026merchant-id=NJWA2K7YWMUM2\u0026intent=authorize&quot;,&quot;serviceableCountryCodes&quot;:[&quot;US&quot;]}}]" access-token="e9c23d0f6b8b03036d15a3c280cff6f7" buyer-country="US" buyer-locale="en" buyer-currency="USD" shop-id="8934036" cart-id="1e6d6710faf0a115628839f8c691ab75" enabled-flags="[&quot;1172c16a&quot;,&quot;a1d1f9a1&quot;,&quot;f5afabb3&quot;,&quot;370070f3&quot;]" > <div class="wallet-button-wrapper"> <ul class='wallet-cart-grid wallet-cart-grid--skeleton' role="list" data-shopify-buttoncontainer="true"> <li data-testid='grid-cell' class='wallet-cart-button-container'><div class='wallet-cart-button wallet-cart-button__skeleton' role='button' disabled aria-hidden='true'>&nbsp</div></li><li data-testid='grid-cell' class='wallet-cart-button-container'><div class='wallet-cart-button wallet-cart-button__skeleton' role='button' disabled aria-hidden='true'>&nbsp</div></li></ul></div></shopify-accelerated-checkout-cart></div></div></div> <div id="cart-upsell-product" data-id=""> <div class="upsell-product-image"> <img src="//baconsheir.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12.gif" /></div> <div class="upsell-product-content"> <div class="offer-content"> <h6></h6></div> <span class="variants-wrapper"> <select name="id" data-productid="" class="upsell-variants"></select></span> <input name="quantity" type="hidden" class="upsell-qty" value="1"> <a name="add" class="btn ajax-upsell-button">Add to Cart</a></div></div></form></script>
1143 
1143<script id="AjaxQty" type="text/template"> <div class="ajaxcart__qty"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus icon-fallback-text" data-id="{{id}}" data-qty="{{itemMinus}}"> <span class="icon icon-minus" aria-hidden="true"></span> <span class="fallback-text">&minus;</span></button> <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{id}}" aria-label="quantity" pattern="[0-9]*"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus icon-fallback-text" data-id="{{id}}" data-qty="{{itemAdd}}"> <span class="icon icon-plus" aria-hidden="true"></span> <span class="fallback-text">+</span></button></div></script>
1143 
1143<script id="JsQty" type="text/template"> <div class="js-qty"> <button type="button" class="js-qty__adjust js-qty__adjust--minus quantity-increment" data-id="{{id}}" data-qty="{{itemMinus}}"> <span>&minus;</span></button> <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{id}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}"> <button type="button" class="js-qty__adjust js-qty__adjust--plus quantity-increment" data-id="{{id}}" data-qty="{{itemAdd}}"> <span>+</span></button></div></script>
vendor: 1 bytes, line 1143
1143
1144<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/ajax-cart.js?v=142930791738274788111700515183"></script>
1144
1145
1146<script type="lazyload2">
1147  jQuery(function($) {
1148    ajaxCart.init({
1149      formSelector: '.AddToCartForm',
1150      cartContainer: '#CartContainer',
1151      addToCartSelector: '.AddToCart',
1152      cartCountSelector: '.CartCount',
1153      cartCostSelector: '.CartCost',
1154      moneyFormat: "$ {{amount}}",
1155      onToggleCallback: function(cart) {
1156      Currency.convertAll(shopCurrency, Currency.currentCurrency);
1157      jQuery('.selected-currency').text(Currency.currentCurrency);
1158    }
1159                  });
1160  });
1161//   jQuery('body').on('ajaxCart.afterCartLoad', function(evt, cart) {
1162//     // Bind to 'ajaxCart.afterCartLoad' to run any javascript after the cart has loaded in the DOM
1163//     timber.RightDrawer.open();
1164//   });      
1165</script>
1165
1166
1167<script type="lazyload2">
1168
1169  $('body').on('click', '.site-header__cart', function(e){
1170    ajaxCart.load();
1171    $('body').toggleClass("iscartpopup");
1172    $('body').parents('html').toggleClass('iscartpopup');
1173    e.preventDefault();      
1174  });
1175
1176  $('.close-cart').click(function(e){
1177    $('body').toggleClass("iscartpopup");
1178    $('body').parents('html').toggleClass('iscartpopup');
1179  });
1180
1181  $('body').click(function(e){
1182    if( $(e.target).is('.iscartpopup') ) {
1183      e.preventDefault();
1184      $(this).removeClass('iscartpopup');
1185      $(this).parents('html').removeClass('iscartpopup');
1186    }
1187  });
1188
1189  $('.AddToCart').click(function(){
1190    if(!$('body').hasClass("iscartpopup")){
1191      $('body').toggleClass("iscartpopup");
1192      $('body').parents('html').toggleClass('iscartpopup');
1193    } 
1194  });
1195
1196</script>
1196 
1196<script>
1197      $(document).on('change', '.fancybox-skin', function(){
1198        if(BOLD && BOLD.recurring_orders && BOLD.recurring_orders.app && BOLD.recurring_orders.app.productForms){
1199          if(BOLD.recurring_orders.app.productForms.indexOf(this) === -1){
1200            if (typeof BOLD.recurring_orders.app.reboot === 'function'){
1201              BOLD.recurring_orders.app.reboot();
1202            }
1203          }
1204        }
1205      });</script>
1205 
1205<script></script>
1205
1206  
1207	
1207<script async src="https://loox.io/widget/4ygBeWDOSO/loox.1584361940284.js?shop=bacons-heir.myshopify.com"></script>
1207 
1207<script>
1208  var STYLE_VAR_MAP = {
1209    FreqButtonBackgroundColor: {
1210      cssVar: '--awt-freq-button-background',
1211      defaultVal: '#F0F0F0',
1212    },
1213    FreqButtonBackgroundColorHover: {
1214      cssVar: '--awt-freq-button-background-hover',
1215      defaultVal: '#DDD',
1216    },
1217    FreqButtonColor: {
1218      cssVar: '--awt-freq-button-color',
1219      defaultVal: '#000',
1220    },
1221    FreqButtonColorHover: {
1222      cssVar: '--awt-freq-button-color-hover',
1223      defaultVal: '#000',
1224    },
1225    FreqButtonBorder: {
1226      cssVar: '--awt-freq-button-border',
1227      defaultVal: '1px solid #000',
1228    },
1229    FreqButtonBorderHover: {
1230      cssVar: '--awt-freq-button-border-hover',
1231      defaultVal: '1px solid #000',
1232    },
1233    FreqButtonBorderRadius: {
1234      cssVar: '--awt-freq-button-border-radius',
1235      defaultVal: '0',
1236    },
1237    FreqButtonBackgroundColorSelected: {
1238      cssVar: '--awt-freq-button-background-selected',
1239      defaultVal: '#000',
1240    },
1241    FreqButtonBackgroundColorHoverSelected: {
1242      cssVar: '--awt-freq-button-background-hover-selected',
1243      defaultVal: '#000',
1244    },
1245    FreqButtonColorSelected: {
1246      cssVar: '--awt-freq-button-color-selected',
1247      defaultVal: '#FFF',
1248    },
1249    FreqButtonColorHoverSelected: {
1250      cssVar: '--awt-freq-button-color-hover-selected',
1251      defaultVal: '#FFF',
1252    },
1253    FreqButtonBorderSelected: {
1254      cssVar: '--awt-freq-button-border-selected',
1255      defaultVal: '1px solid #000',
1256    },
1257    FreqButtonBorderHoverSelected: {
1258      cssVar: '--awt-freq-button-border-hover-selected',
1259      defaultVal: '1px solid #000',
1260    },
1261    PrimaryButtonBackgroundColor: {
1262      cssVar: '--awt-primary-button-background',
1263      defaultVal: '#000',
1264    },
1265    PrimaryButtonBackgroundColorHover: {
1266      cssVar: '--awt-primary-button-background-hover',
1267      defaultVal: '#000',
1268    },
1269    PrimaryButtonColor: {
1270      cssVar: '--awt-primary-button-color',
1271      defaultVal: '#FFF',
1272    },
1273    PrimaryButtonColorHover: {
1274      cssVar: '--awt-primary-button-color-hover',
1275      defaultVal: '#FFF',
1276    },
1277    PrimaryButtonBorder: {
1278      cssVar: '--awt-primary-button-border',
1279      defaultVal: '0px solid #FFF',
1280    },
1281    PrimaryButtonBorderHover: {
1282      cssVar: '--awt-primary-button-border-hover',
1283      defaultVal: '0px solid #FFF',
1284    },
1285    PrimaryButtonBorderRadius: {
1286      cssVar: '--awt-primary-button-border-radius',
1287      defaultVal: '4px',
1288    },
1289    RadioButtonBackgroundColor: {
1290      cssVar: '--awt-radio-button-background',
1291      defaultVal: '#000',
1292    },
1293    BorderColor: {
1294      cssVar: '--awt-border-color',
1295      defaultVal: '#e6e6e6',
1296    },
1297    BorderRadius: {
1298      cssVar: '--awt-border-radius',
1299      defaultVal: '3px',
1300    },
1301    SelectedPlanBackgroundColor: {
1302      cssVar: '--awt-selected-plan-background',
1303      defaultVal: '#EEE',
1304    },
1305    SelectedPlanBorderColor: {
1306      cssVar: '--awt-selected-plan-border-color',
1307      defaultVal: '#000',
1308    },
1309    ProgressBarBackgroundColor: {
1310      cssVar: '--awt-progress-bar-background',
1311      defaultVal: '#000',
1312    },
1313    ProgressBarColor: {
1314      cssVar: '--awt-progress-bar-color',
1315      defaultVal: '#FFF',
1316    },
1317    AccentBackgroundColor: {
1318      cssVar: '--awt-accent-background',
1319      defaultVal: '#000',
1320    },
1321    AccentColor: {
1322      cssVar: '--awt-accent-color',
1323      defaultVal: '#FFF',
1324    },
1325  };
1326
1327  (function () {
1328    window.bundleapp = window.bundleapp || {};
1329    window.bundleapp.settings = Object.assign(
1330      {},
1331      window.bundleapp.settings || {},
1332      // All configs that where here have been moved to other places
1333      // the moneyFormat is now fetched below via ajax
1334      // other settings are set to the global namespace on the script tag handler
1335      // So this code here is only a reminder that the attribute exists
1336
1337      /**
1338      * Theme specific settings:
1339      * This is a quick and dirty way to get some theme specific settings into the app.
1340      *
1341      * priceContainerSel Array<String> selector string for the price container
1342      * comparePriceContainerSel Array<String> selector string for compare at price container
1343      * priceBadgeContainer Array<String> selector string for the price Badge container
1344      * hideIfUnavailable Boolean hides selling plans if variant is unavailable/out of stock
1345      * containerClass String Adds a class to the container where the widget renders
1346      * renderInsideSel String Selector to render the widget inside
1347      * renderAfterSel String Selector to render the widget after
1348      * renderBeforeSel String Selector to render the widget before
1349      * useRadioButtonFrequencySelector Boolean use radio buttons instead of a select
1350      * addToCartButtonSel Selector string to locale the add to cart button inside form[action='/cart/add']
1351      * formDomChangeElementsSel String selector for items to listen to and trigger handleFormDomChanged (ex: 'li.variantSwatch' or 'li.variantSwatch, button.variantItem')
1352      *   - use this when the items to select variant are not input fields and as such would not be listened to by our script naturally
1353      * */
1354      {
1355        hideIfUnavailable: false,
1356        proxy: '/tools/bundle-subscriptions',
1357        appPublic: true,
1358        moneyFormat: '$\{\{amount\}\}',
1359        shopStyleSettings: {},
1360        defaultSubscription: true,
1361      },
1362    );
1363
1364    window.bundleapp.setThemeConfigs = (obj) => {
1365      window.bundleapp.settings = Object.assign(
1366        {},
1367        window.bundleapp.settings,
1368        obj,
1369      );
1370    };
1371
1372    var showPreviewModeControl = function () {
1373      const previewModeControlHtml = ` <div id="awt-preview-mode-control"> <div class="awt-logo"> <div class="awt-logo--image"></div> <span>Preview</span> <a href="https://help.awtomatic.app/en/articles/5593674-previewing-and-testing-your-subscriptions" target="_blank"><div class="awt-logo--info-icon"></div></a></div> <div> <!-- <button id="awt-preview-mode-control__hide">Hide</button> --> <button id="awt-preview-mode-control__close">Close</button></div></div>
1374      `;
1375      const $previewModelEl = document.createElement('div');
1376      $previewModelEl.innerHTML = previewModeControlHtml;
1377      document.querySelector('body').appendChild($previewModelEl);
1378
1379      // not removing this yet bc its set to be used in a v2 version of the preview mode controls
1380      const hidePreviewControl = function () {
1381        document
1382          .querySelector('#awt-preview-mode-control')
1383          .classList.add('hidden');
1384      };
1385      const closePreviewMode = function () {
1386        window.localStorage.removeItem(PREVIEW_MODE_STORAGE_KEY);
1387        insertUrlParam('awt-preview');
1388        window.location.reload();
1389      };
1390      // document
1391      //   .querySelector('#awt-preview-mode-control__hide')
1392      //   .addEventListener('click', hidePreviewControl);
1393      document
1394        .querySelector('#awt-preview-mode-control__close')
1395        .addEventListener('click', closePreviewMode);
1396    };
1397
1398    var getShopInfo = function () {
1399      const moneyFormat =
1400        window.moneyFormat ||
1401        (window.theme && window.theme.moneyFormat) ||
1402        (window.theme &&
1403          window.theme.strings &&
1404          window.theme.strings.moneyFormat) ||
1405        (window.theme &&
1406          window.theme.settings &&
1407          window.theme.settings.moneyFormat) ||
1408        (window.bundleapp && window.bundleapp.settings && window.bundleapp.settings.moneyFormat);
1409      if (moneyFormat) {
1410        window.bundleapp.settings = Object.assign({}, window.bundleapp.settings, {
1411          moneyFormat: moneyFormat,
1412        });
1413        return Promise.resolve();
1414      }
1415
1416      return fetch(window.bundleapp.settings.proxy + '/shop-info')
1417        .then(function (res) {
1418          return res.json();
1419        })
1420        .then(function (data) {
1421          window.bundleapp.settings = Object.assign(
1422            {},
1423            window.bundleapp.settings,
1424            data,
1425          );
1426        });
1427    };
1428
1429    var setCssVars = function (styleSettings) {
1430      if (styleSettings) {
1431        // update CSS vars
1432        var root = document.querySelector(':root');
1433        for (var styleSettingsKey in STYLE_VAR_MAP) {
1434          styleSettings[styleSettingsKey] &&
1435            root.style.setProperty(
1436              STYLE_VAR_MAP[styleSettingsKey].cssVar,
1437              styleSettings[styleSettingsKey],
1438            );
1439        }
1440      }
1441    };
1442
1443    var insertUrlParam = function (key, value) {
1444      if (history.replaceState) {
1445        let searchParams = new URLSearchParams(window.location.search);
1446        if (value) {
1447          searchParams.set(key, value);
1448        } else {
1449          searchParams.delete(key);
1450        }
1451        let newurl =
1452          window.location.protocol +
1453          '//' +
1454          window.location.host +
1455          window.location.pathname +
1456          '?' +
1457          searchParams.toString();
1458        window.history.replaceState({ path: newurl }, '', newurl);
1459      }
1460    };
1461
1462    var formatMoney = function (cents, format) {
1463      if (typeof cents == 'string') {
1464        cents = cents.replace('.', '');
1465      }
1466      var value = '';
1467      var placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
1468      var formatString = format || window.bundleapp.settings.moneyFormat;
1469
1470      function defaultOption(opt, def) {
1471        return typeof opt == 'undefined' ? def : opt;
1472      }
1473
1474      function formatWithDelimiters(number, precision, thousands, decimal) {
1475        precision = defaultOption(precision, 2);
1476        thousands = defaultOption(thousands, ',');
1477        decimal = defaultOption(decimal, '.');
1478
1479        if (isNaN(number) || number == null) {
1480          return 0;
1481        }
1482
1483        number = (number / 100.0).toFixed(precision);
1484
1485        var parts = number.split('.'),
1486          dollars = parts[0].replace(
1487            /(\d)(?=(\d\d\d)+(?!\d))/g,
1488            '$1' + thousands,
1489          ),
1490          cents = parts[1] ? decimal + parts[1] : '';
1491
1492        return dollars + cents;
1493      }
1494
1495      switch (formatString.match(placeholderRegex)[1]) {
1496        case 'amount':
1497          value = formatWithDelimiters(cents, 2);
1498          break;
1499        case 'amount_no_decimals':
1500          value = formatWithDelimiters(cents, 0);
1501          break;
1502        case 'amount_with_comma_separator':
1503          value = formatWithDelimiters(cents, 2, '.', ',');
1504          break;
1505        case 'amount_no_decimals_with_comma_separator':
1506          value = formatWithDelimiters(cents, 0, '.', ',');
1507          break;
1508      }
1509
1510      return formatString.replace(placeholderRegex, value);
1511    };
1512    // FIXME eslint error
1513    // eslint-disable-next-line no-undef
1514    debounce = function (func, wait, immediate) {
1515      var timeout;
1516      return function () {
1517        var context = this,
1518          args = arguments;
1519        var later = function () {
1520          timeout = null;
1521          if (!immediate) func.apply(context, args);
1522        };
1523        var callNow = immediate && !timeout;
1524        clearTimeout(timeout);
1525        timeout = setTimeout(later, wait);
1526        if (callNow) func.apply(context, args);
1527      };
1528    };
1529    // Method to get closes matching parent source: https://gomakethings.com/a-native-vanilla-javascript-way-to-get-the-closest-matching-parent-element/
1530    if (window.Element && !Element.prototype.closest) {
1531      Element.prototype.closest = function (s) {
1532        var matches = (this.document || this.ownerDocument).querySelectorAll(s),
1533          i,
1534          el = this;
1535        do {
1536          i = matches.length;
1537          // FIXME eslint error
1538          // eslint-disable-next-line no-empty
1539          while (--i >= 0 && matches.item(i) !== el) {}
1540        } while (i <0 && (el = el.parentElement));
1541        return el;
1542      };
1543    }
1544
1545    var priceBadgeContainer = () =>
1546      [
1547        'form.product__form--add-to-cart .product__price', // Boundless
1548        '.product-single__meta .price-container', //Brooklyn
1549        '.product__price .price__pricing-group', // Debut
1550        '.product__content .price__pricing-group', // Express
1551        '.product-single__prices', // Minimal, Simple
1552        '.product__content-header .product__price', // Narrative
1553        '.inline-list.product-meta', // Supply
1554        '.product-single__meta-list', // Venture
1555      ]
1556        .concat(window.bundleapp.settings.priceBadgeContainer || [])
1557        .join(', ');
1558
1559    const priceContainerSel = () =>
1560      [
1561        '.price__regular', // debut, express
1562        '.product-single__price', // brooklin, minimal
1563        '.product__current-price', // narrative
1564        '#productPrice-product-template', // supply, venture
1565        '.product__price--reg', // boundless
1566      ]
1567        .concat(window.bundleapp.settings.priceContainerSel || [])
1568        .join(', ');
1569
1570    const comparePriceContainerSel = () =>
1571      [
1572        '.price--on-sale .price__sale', // debut, express
1573        '.product-single__price--compare-at', // brooklin
1574        '.product-single__sale-price', // minimal
1575        '.product__compare-price', //narrative
1576        '.product-single__price--compare', // simple, venture
1577        '.product__price .product__price--sale', // boundless
1578        '.product-meta .sale-tag', // supply
1579      ]
1580        .concat(window.bundleapp.settings.comparePriceContainerSel || [])
1581        .join(', ');
1582
1583    const planSelectorSel = '.bundleapp-plan-selector-plan';
1584
1585    const addToCartButtonSel = () =>
1586      ['button[type=submit]']
1587        .concat(window.bundleapp.settings.addToCartButtonSel || [])
1588        .join(', ');
1589
1590    const PREVIEW_MODE_STORAGE_KEY = 'awtomatic-preview-mode';
1591
1592    /* Functions for gift form data validation */
1593    const getField = (fieldId) => document.getElementById(fieldId);
1594    const getFieldValue = (fieldId) => getField(fieldId).value;
1595    const isEmpty = (str) => str === '';
1596    const emailIsValid = (email) =>
1597      /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z0-9]+$/i.test(email);
1598    const isFieldValid = (fieldId) =>
1599      getField(fieldId).getAttribute('data-invalid') == undefined;
1600    const toggleAddToCart = (target, isValidForm) => {
1601      const form = target.closest('form');
1602      const addToCartBtn = form.querySelector(addToCartButtonSel());
1603      if (addToCartBtn) {
1604        if (isValidForm) {
1605          addToCartBtn.removeAttribute('disabled');
1606        } else {
1607          addToCartBtn.setAttribute('disabled', true);
1608        }
1609      }
1610      const customizeBtn = form.querySelector('#awt-customize-box-btn');
1611      if (customizeBtn) {
1612        if (isValidForm) {
1613          customizeBtn.removeAttribute('disabled');
1614        } else {
1615          customizeBtn.setAttribute('disabled', true);
1616        }
1617      }
1618    };
1619
1620    const toggleFieldValid = (field, isInvalid, message) => {
1621      const msg = field.parentElement.getElementsByClassName('awt-error-msg');
1622      if (isInvalid) {
1623        field.classList.add('awt-input-error');
1624        field.classList.add('awt-error');
1625  
1626        field.setAttribute('data-invalid', true);
1627        if (msg.length === 0) {
1628          const errorLabel = document.createElement('div');
1629          errorLabel.classList.add('awt-error-msg');
1630          errorLabel.innerText = message;
1631          field.parentElement.insertBefore(
1632            errorLabel,
1633            field.parentElement.lastElementChild,
1634          );
1635        }
1636      } else {
1637        field.classList.remove('awt-input-error');
1638        field.classList.remove('awt-error');
1639  
1640        if (msg.length > 0) {
1641          msg[0].remove();
1642        }
1643        field.removeAttribute('data-invalid');
1644      }
1645    };
1646
1647    const isGiftFormValid = () =>
1648      isFieldValid('awtGiftInfoFirstName') &&
1649      isFieldValid('awtGiftInfoLastName') &&
1650      isFieldValid('awtGiftInfoEmail');
1651
1652    const validateRequiredField = (event) => {
1653      const isFieldEmpty = isEmpty(getFieldValue(event.target.id));
1654      toggleFieldValid(event.target, isFieldEmpty, 'Required');
1655      toggleAddToCart(event.target, isGiftFormValid());
1656    };
1657
1658    const validateEmailField = (event) => {
1659      const isValidEmail = emailIsValid(getFieldValue(event.target.id));
1660      toggleFieldValid(event.target, !isValidEmail, 'Invalid email');
1661      toggleAddToCart(event.target, isGiftFormValid());
1662    };
1663
1664    /**
1665    * Awtomatic Selector Widget
1666    * */
1667
1668    function BundleAppWidget($selector, product) {
1669      this.product = product;
1670      this.isGiftSelected = false;
1671      this.$selector = $selector;
1672      this.$sellingPlanField = this.$selector.querySelector(
1673        'input[name=selling_plan]',
1674      );
1675      this.$wrapper = this.$selector.closest(
1676        'div[data-section-type], .shopify-section, body',
1677      );
1678      this.$planGroups = this.$selector.querySelectorAll(
1679        '.bundleapp-plan-selector-group',
1680      );
1681      this.$form = this.$selector.closest('form');
1682      this.$variantSelect = this.$form.querySelector('[name=id]');
1683      this.$badgePriceEl = this.$wrapper.querySelector(priceBadgeContainer());
1684      if (!this.$badgePriceEl)
1685        console.warn('Did not find a badge container element');
1686      // FIXME eslint error
1687      // eslint-disable-next-line no-undef
1688      this.setPlansVisibility = debounce(
1689        this._baseSetPlansVisibility.bind(this),
1690        50,
1691      );
1692
1693      this.init();
1694      this.setPlansVisibility();
1695      if (window.bundleapp.settings.onInit) {
1696        window.bundleapp.settings.onInit.call(this);
1697      }
1698      if (window.bundleapp.onInit) {
1699        console.warn(
1700          'onInit will be deprecated soon. Please use bundleapp.settings.onInit instead',
1701        );
1702        window.bundleapp.onInit.call(this);
1703      }
1704    }
1705
1706    Object.assign(BundleAppWidget.prototype, {
1707      init: function () {
1708        this.$selector.style.display = 'block';
1709        this.$planGroups.forEach(
1710          function (elem) {
1711            var $planGroupRadio = elem.querySelector(
1712              "input[name='bundleapp-plan-selector-group']",
1713            );
1714            var groupId = $planGroupRadio.value;
1715            var selectedPlanGroup = this.product.selling_plans_by_id[
1716              this.product.selected_selling_plan
1717                ? this.product.selected_selling_plan.id
1718                : null
1719            ];
1720            var isSelectedGroup = !!(
1721              selectedPlanGroup &&
1722              selectedPlanGroup.selling_plan_group_id === groupId
1723            );
1724
1725            this.handleGiftVisibility(isSelectedGroup);
1726
1727            $planGroupRadio.addEventListener(
1728              'change',
1729              this.handlePlanRadioChange.bind(this),
1730            );
1731            elem
1732              .querySelector('select')
1733              .addEventListener(
1734                'change',
1735                this.handlePlanOptionsChange.bind(this),
1736              );
1737            var $radioButtonsfrequencySelector = elem.querySelectorAll(
1738              '.bundleapp-plan-selector-radio__input',
1739            );
1740            for (
1741              let index = 0;
1742              index <$radioButtonsfrequencySelector.length;
1743              index++
1744            ) {
1745              $radioButtonsfrequencySelector[index].addEventListener(
1746                'change',
1747                this.handlePlanOptionsChange.bind(this),
1748              );
1749            }
1750          }.bind(this),
1751        );
1752
1753        //Ads an event listener to every element in the form
1754        const $selectorElements = Array.from(
1755          this.$selector.querySelectorAll('input, select'),
1756        );
1757        Array.from(this.$form.elements).forEach(
1758          function (el) {
1759            if (
1760              !$selectorElements.includes(el) &&
1761              el.tagName !== 'BUTTON' &&
1762              el.type !== 'hidden'
1763            ) {
1764              el.addEventListener('change', this.handleFormDomChanged.bind(this));
1765            }
1766          }.bind(this),
1767        );
1768
1769        if (window.bundleapp.settings.defaultSubscription) {
1770          const $oneTimeRadio = this.$selector.querySelector('[data-one-time]');
1771  
1772          // Only if one time is available and defaultSubscription enabled we set checked
1773          // the first selling plan group. If there is no one-time option, we already
1774          // mark the first selling plan checked
1775          if ($oneTimeRadio) {
1776            const $firstSellingPlanGroup = this.$selector.querySelector(
1777              '[data-one-time] + .bundleapp-plan-selector-group input',
1778            );
1779            $firstSellingPlanGroup.dispatchEvent(new Event('change'));
1780          }
1781        }
1782        
1783        if (window.bundleapp.settings.formDomChangeElementsSel) {
1784          const $variantEls = document.querySelectorAll(
1785            window.bundleapp.settings.formDomChangeElementsSel,
1786          );
1787          $variantEls.forEach(
1788            function (el) {
1789              el.addEventListener('click', this.handleFormDomChanged.bind(this));
1790            }.bind(this),
1791          );
1792        }
1793      },
1794
1795      getTranslation: function (key, fallback) {
1796        let translation = this.product?.translations[key];
1797        if (translation.includes('translation missing')) {
1798          translation = fallback;
1799        }
1800        return translation;
1801      },
1802
1803      handleGiftVisibility: function (isSelectedGroup) {
1804          let isGiftable =
1805            this.product &&
1806            this.product.gift_selling_plans &&
1807            this.product.gift_selling_plans.includes(
1808              this.product.selected_selling_plan &&
1809                this.product.selected_selling_plan.id,
1810            );
1811          const giftCheckBox = document.querySelector('input[name="awt-is-gift"]');
1812    
1813          if (isGiftable && !giftCheckBox && isSelectedGroup) {
1814            this.isGiftSelected = true;
1815            let isGiftCheckboxLabel = document.createElement('label');
1816            isGiftCheckboxLabel.classList.add('awt-checkbox');
1817            let isGiftCheckbox = document.createElement('input');
1818            const giftTitle = this.getTranslation(
1819              'gift_recipient_info_title',
1820              'Recipient info',
1821            );
1822            const giftFirstNameLabel = this.getTranslation(
1823              'gift_first_name_label',
1824              'First name',
1825            );
1826            const giftFirstNamePlaceholder = this.getTranslation(
1827              'gift_first_name_placeholder',
1828              'First name',
1829            );
1830            const giftLastNameLabel = this.getTranslation(
1831              'gift_last_name_label',
1832              'Last name',
1833            );
1834            const giftLastNamePlaceholder = this.getTranslation(
1835              'gift_last_name_placeholder',
1836              'Last name',
1837            );
1838            const giftEmailLabel = this.getTranslation(
1839              'gift_email_label',
1840              'Email address',
1841            );
1842            const giftEmailPlaceholder = this.getTranslation(
1843              'gift_email_placeholder',
1844              'Email address',
1845            );
1846            const giftEmailWarning = this.getTranslation(
1847              'gift_email_warning',
1848              'Important: Gift emails will be sent here',
1849            );
1850            const giftNoteLabel = this.getTranslation('gift_note_label', 'Note');
1851            const giftNotePlaceholder = this.getTranslation(
1852              'gift_note_placeholder',
1853              'Note',
1854            );
1855    
1856            isGiftCheckbox.addEventListener('change', function (event) {
1857              const isGiftSelected = event.currentTarget.checked;
1858              this.isGiftSelected = isGiftSelected;
1859    
1860              if (isGiftSelected) {
1861                const giftsMarkUp = `<div class="gift"> <p class="awt-gift-info-title">${giftTitle}</p> <div class="awt-form-group"> <label for="awtGiftInfoFirstName" class="awt-floating-label"> <input type="text" id="awtGiftInfoFirstName" class="awt-gift-input" required name="properties[_giftFirstName]" placeholder="${giftFirstNamePlaceholder}" data-invalid> <span class="awt-gift-label">${giftFirstNameLabel}*</span></label> <label for="awtGiftInfoLastName" class="awt-floating-label"> <input type="text" id="awtGiftInfoLastName" class="awt-gift-input" required name="properties[_giftLastName]" placeholder="${giftLastNamePlaceholder}" data-invalid> <span class="awt-gift-label">${giftLastNameLabel}*</span></label></div> <div class="awt-gift-input-container"> <label for="awtGiftInfoEmail" class="awt-floating-label"> <input type="email" id="awtGiftInfoEmail" class="awt-gift-input" required name="properties[_giftEmail]" placeholder="${giftEmailPlaceholder}" data-invalid> <span class="awt-gift-label">${giftEmailLabel}*</span> <div class="awt-floating-label-warning">${giftEmailWarning}</div></label></div> <div class="awt-gift-input-container"> <label for="awtGiftInfoNote" class="awt-floating-label"> <textarea id="awtGiftInfoNote" class="awt-gift-input" placeholder="${giftNotePlaceholder}" name="properties[_giftNote]"></textarea> <span class="awt-gift-label">${giftNoteLabel}</span></label></div></div>`;
1862    
1863                let giftInfoContainer = document.createElement('div');
1864                giftInfoContainer.setAttribute('name', 'awt-gift-info-container');
1865                giftInfoContainer.classList.add('awt-gift-info-container');
1866    
1867                giftInfoContainer.innerHTML = giftsMarkUp;
1868                isGiftCheckboxLabel.parentElement.appendChild(giftInfoContainer);
1869                getField('awtGiftInfoFirstName').addEventListener(
1870                  'blur',
1871                  validateRequiredField,
1872                );
1873                getField('awtGiftInfoLastName').addEventListener(
1874                  'blur',
1875                  validateRequiredField,
1876                );
1877                getField('awtGiftInfoEmail').addEventListener(
1878                  'blur',
1879                  validateEmailField,
1880                );
1881                toggleAddToCart(getField('awtGiftInfoEmail'), isGiftFormValid());
1882              } else {
1883                const giftInfoContainer = document.querySelector(
1884                  'div[name="awt-gift-info-container"]',
1885                );
1886                getField('awtGiftInfoFirstName').removeEventListener(
1887                  'blur',
1888                  validateRequiredField,
1889                );
1890                getField('awtGiftInfoLastName').removeEventListener(
1891                  'blur',
1892                  validateRequiredField,
1893                );
1894                getField('awtGiftInfoEmail').removeEventListener(
1895                  'blur',
1896                  validateEmailField,
1897                );
1898                toggleAddToCart(getField('awtGiftInfoEmail'), true);
1899                giftInfoContainer &&
1900                  giftInfoContainer.parentNode &&
1901                  giftInfoContainer.parentNode.removeChild(giftInfoContainer);
1902              }
1903            });
1904            isGiftCheckbox.type = 'checkbox';
1905            isGiftCheckbox.name = 'awt-is-gift';
1906            isGiftCheckboxLabel.appendChild(isGiftCheckbox);
1907            isGiftCheckboxLabel.appendChild(
1908              document.createTextNode(
1909                this.getTranslation('gift_checkbox_label', 'This is a gift'),
1910              ),
1911            );
1912            const planDescription = document.querySelector(
1913              '.bundleapp-plan-selector-description',
1914            );
1915            planDescription &&
1916              planDescription.parentNode.insertBefore(
1917                isGiftCheckboxLabel,
1918                planDescription.nextSibling,
1919              );
1920          }
1921          if (!isGiftable) {
1922            if (giftCheckBox) {
1923              const giftCheckBoxLabel = giftCheckBox.parentNode;
1924              giftCheckBoxLabel.parentNode.removeChild(giftCheckBoxLabel);
1925              const giftInfoContainer = document.querySelector(
1926                'div[name="awt-gift-info-container"]',
1927              );
1928    
1929              giftInfoContainer &&
1930                giftInfoContainer.parentNode &&
1931                giftInfoContainer.parentNode.removeChild(giftInfoContainer);
1932            }
1933          }
1934        },
1935
1936      // This is marked as a private function because this is not intended to be used
1937      // directly. Use the debounced version of it this.setPlansVisibility()
1938      _baseSetPlansVisibility: function () {
1939        if (window.bundleapp.settings.hideIfUnavailable) {
1940          //If variant is not available hide the whole widget
1941          this.$selector.style.display = this.product.selected_variant.available
1942            ? 'block'
1943            : 'none';
1944        }
1945
1946        var selling_plan_group_ids = this.product.selected_variant.selling_plan_allocations.map(
1947          function (i) {
1948            return i.selling_plan_group_id;
1949          },
1950        );
1951        var planId = '';
1952        const hasPlanWithMultipleDeliveries = this.product.selected_variant.selling_plan_allocations.some(
1953          (sp) => sp.price !== sp.per_delivery_price,
1954        );
1955        // @TODO: translate suffix
1956        const suffix = hasPlanWithMultipleDeliveries
1957          ? this.getTranslation('delivery_suffix', '/delivery')
1958          : '';
1959        this.$planGroups.forEach(
1960          function (elem) {
1961            var bundleAppSettings = window.bundleapp.settings || {};
1962            var $planGroupRadio = elem.querySelector(
1963              "input[name='bundleapp-plan-selector-group']",
1964            );
1965            var groupId = $planGroupRadio.value;
1966            elem.style.display =
1967              selling_plan_group_ids.includes(groupId) || !groupId
1968                ? 'block'
1969                : 'none';
1970            var selectedPlanGroup = this.product.selling_plans_by_id[
1971              this.product.selected_selling_plan
1972                ? this.product.selected_selling_plan.id
1973                : null
1974            ];
1975            var isSelectedGroup = !!(
1976              selectedPlanGroup &&
1977              selectedPlanGroup.selling_plan_group_id === groupId
1978            );
1979
1980            this.handleGiftVisibility(isSelectedGroup);
1981
1982            var $selectorPlan = elem.querySelector(planSelectorSel);
1983            $selectorPlan.style.display = isSelectedGroup ? 'block' : 'none';
1984
1985            if (!$planGroupRadio.value && !isSelectedGroup) {
1986              // If value is falsy a.k.a one-time purchase
1987              $planGroupRadio.checked = true;
1988            } else {
1989              $planGroupRadio.checked = isSelectedGroup;
1990
1991              if (this.$planGroups.length === 1) {
1992                elem.classList.add('bundleapp-plan-selector-group--single-group');
1993              }
1994
1995              // if this is the selected group add the selected class
1996              if (isSelectedGroup) {
1997                elem.classList.add('bundleapp-plan-selector-group--selected');
1998                if (bundleAppSettings.useRadioButtonFrequencySelector) {
1999                  const selectedGroupPlans = elem
2000                    .querySelector('.bundleapp-plan-selector-radio')
2001                    .getElementsByTagName('input');
2002                  const isPlanChecked = Array.from(selectedGroupPlans).some(
2003                    ({ checked }) => checked,
2004                  );
2005                  if (!isPlanChecked) {
2006                    // if no plan is checked, select the first one
2007                    selectedGroupPlans[0].checked = true;
2008                    elem
2009                      .querySelector('.bundleapp-plan-selector-radio label')
2010                      .classList.add(
2011                        'bundleapp-plan-selector-radio__label--selected',
2012                      );
2013                  }
2014                }
2015              }
2016            }
2017
2018            if (bundleAppSettings.useRadioButtonFrequencySelector) {
2019              let $radioButtonPlanSelector = elem.querySelector(
2020                '.bundleapp-plan-selector-radio',
2021              );
2022
2023              $radioButtonPlanSelector.style.display = isSelectedGroup
2024                ? 'block'
2025                : 'none';
2026              let $selectPlanSelector = elem.querySelector(
2027                '.bundleapp-plan-selector-select',
2028              );
2029              $selectPlanSelector.style.display = 'none';
2030            } else {
2031              let $radioButtonPlanSelector = elem.querySelector(
2032                '.bundleapp-plan-selector-radio',
2033              );
2034              $radioButtonPlanSelector.style.display = 'none';
2035              let $selectPlanSelector = elem.querySelector(
2036                '.bundleapp-plan-selector-select',
2037              );
2038              $selectPlanSelector.style.display =
2039                isSelectedGroup && $selectPlanSelector.options.length > 1
2040                  ? 'block'
2041                  : 'none';
2042            }
2043
2044            if (isSelectedGroup) {
2045              const planSel = bundleAppSettings.useRadioButtonFrequencySelector
2046                ? `${planSelectorSel} .bundleapp-plan-selector-radio input:checked`
2047                : `${planSelectorSel} select`;
2048
2049              planId =
2050                elem.querySelector(planSel) && elem.querySelector(planSel).value;
2051            }
2052
2053            //update pricing label of each group
2054            const planGroup = this.product.selling_plan_groups.find(
2055              (p) => p.id === groupId,
2056            );
2057            const $priceLabel = elem.querySelector(
2058              '.bundleapp-plan-selector-group-pricing',
2059            );
2060
2061            const currentVariant = this.product.variants.find(
2062              (variant) => variant.id === this.product.selected_variant.id,
2063            );
2064
2065            if (planGroup && $priceLabel) {
2066              const values = planGroup.selling_plans.map(function (i) {
2067                return parseInt(i.price_adjustments[0]?.value);
2068              });
2069
2070              const sellingPlansFromCurrentGroup = currentVariant.selling_plan_allocations.filter(
2071                (sp) => sp.selling_plan_group_id === planGroup.id,
2072              );
2073              if (sellingPlansFromCurrentGroup && values) {
2074                const lowestPriceInGroup = Math.min.apply(
2075                  null,
2076                  sellingPlansFromCurrentGroup.map((sp) => sp.per_delivery_price),
2077                );
2078                const isSame = values.every(function (val) {
2079                  return val === values[0];
2080                });
2081                const prefix = isSame ? '' : this.getTranslation('from', 'from');
2082                $priceLabel.innerHTML = `${prefix} ${formatMoney(
2083                  lowestPriceInGroup,
2084                )}${suffix}`;
2085                $priceLabel.dataset.test = `planPriceInSelector-${
2086                  sellingPlansFromCurrentGroup?.selling_plan_group_id ||
2087                  sellingPlansFromCurrentGroup[0]?.selling_plan_group_id
2088                }`;
2089              }
2090            }
2091
2092            if (this.product?.selling_plan_groups?.length === 1) {
2093              // check to see. IF just one selling plan group, and does not offer discount
2094              // then we wont display itemized prices.
2095              const $itemizedPrices = this.$selector.querySelectorAll(
2096                '.bundleapp-plan-selector-group-pricing',
2097              );
2098
2099              const oneTimePurchasePrice = currentVariant?.price;
2100
2101              const pricesInSellingPlans = currentVariant.selling_plan_allocations.map(
2102                (sp) => sp.price,
2103              );
2104              const allEqual = (arr) => arr.every((val) => val === arr[0]);
2105
2106              if (allEqual([oneTimePurchasePrice, ...pricesInSellingPlans])) {
2107                $itemizedPrices.forEach((price) => {
2108                  price.style.display = 'none';
2109                });
2110              }
2111            }
2112          }.bind(this),
2113        );
2114
2115        //check if theres a visible option selected
2116        //If not: check first
2117        if (
2118          !Array.from(this.$planGroups).filter(
2119            (el) => el.offsetParent && el.querySelector('input').checked,
2120          ).length
2121        ) {
2122          // get first input that's visible
2123          const firstVisibleGroup = Array.from(this.$planGroups).filter(
2124            (el) => el.offsetParent,
2125          )[0];
2126          if (firstVisibleGroup) {
2127            const $firstRadio = firstVisibleGroup.querySelector('input');
2128            if (!$firstRadio.checked) {
2129              $firstRadio.checked = true;
2130              $firstRadio.dispatchEvent(new Event('change'));
2131              // if we are using radio buttons get the first plan and check it
2132              if (window.bundleapp.settings.useRadioButtonFrequencySelector) {
2133                let $radioButtonPlanSelector = firstVisibleGroup.querySelector(
2134                  '.bundleapp-plan-selector-radio',
2135                );
2136                const firstPlan = $radioButtonPlanSelector.querySelector('input');
2137                if (!firstPlan.checked) {
2138                  firstPlan.checked = true;
2139                  firstPlan.dispatchEvent(new Event('change'));
2140                }
2141              }
2142            }
2143          }
2144        }
2145
2146        //Updates input field
2147        if (this.$sellingPlanField) {
2148          this.$sellingPlanField.value = planId ? planId : '';
2149        }
2150        //Update url only if we are in the product page
2151        if (window.location.pathname.includes('/products/')) {
2152          insertUrlParam('selling_plan', planId);
2153        }
2154
2155        //Updates one-time purchase price
2156        const $oneTimePrice = this.$selector.querySelector(
2157          '[data-one-time].bundleapp-plan-selector-group .bundleapp-plan-selector-group-pricing',
2158        );
2159        if ($oneTimePrice) {
2160          $oneTimePrice.innerHTML = `${formatMoney(
2161            this.product.selected_variant.price,
2162          )}${suffix}`;
2163          // data-test attribute for testing
2164          $oneTimePrice.dataset.test = 'oneTimePriceInSelector';
2165        }
2166
2167        // do not update prices if there are no selling plans groups on the product
2168        if (this.product?.selling_plan_groups?.length) {
2169          this.updatePrice(planId);
2170          this.updateBadgePrice(planId);
2171        }
2172        this.replaceAddBtnForBundles();
2173      },
2174
2175      replaceAddBtnForBundles: function () {
2176        // only replace button on BaB bundle
2177        if (
2178          !this.product?.metafields?.isBundle ||
2179          this.product?.metafields?.type === 'shuffle'
2180        ) {
2181          return;
2182        }
2183
2184        const $btn = this.$form.querySelector(addToCartButtonSel());
2185
2186        // remove "buy it now" button
2187        const $shopifyPaymentBtn = $btn.parentElement.querySelector(
2188          '.shopify-payment-button',
2189        );
2190        if ($shopifyPaymentBtn) {
2191          $shopifyPaymentBtn.remove();
2192        }
2193
2194        let $clonedBtn = this.$form.querySelector('#awt-customize-box-btn');
2195        if (!$clonedBtn) {
2196          $clonedBtn = $btn.cloneNode(true);
2197          $clonedBtn.id = 'awt-customize-box-btn';
2198          $clonedBtn.type = 'button';
2199          $clonedBtn.innerText = this.getTranslation(
2200            'customize_my_box',
2201            'Customize my box',
2202          );
2203          $clonedBtn.classList.remove('btn--secondary-accent');
2204          $clonedBtn.classList.add('btn--primary-accent');
2205          $clonedBtn.removeAttribute('@click.prevent');
2206          $clonedBtn.removeAttribute('x-show:');
2207          $clonedBtn.removeAttribute(':disabled');
2208          $clonedBtn.removeAttribute(':class');
2209          // remove any href in case the theme has been customized and isn't a standard add-to-cart button
2210          $clonedBtn.removeAttribute('href');
2211
2212          $btn.style.display = 'none';
2213          $btn.classList.add('awt-hidden-add-to-cart-button');
2214          $btn.parentNode.insertBefore($clonedBtn, $btn.nextSibling);
2215        } else {
2216          // clone the previous clone and replace
2217          var secondClone = $clonedBtn.cloneNode(true);
2218          $clonedBtn.parentNode.replaceChild(secondClone, $clonedBtn);
2219
2220          // reference new button so we can add event listener
2221          $clonedBtn = secondClone;
2222        }
2223
2224        var handleCustomizeBoxButtonClick = function (event) {
2225          event.stopPropagation();
2226
2227          let params = new URLSearchParams(window.location.search);
2228          let search = window.location.search;
2229          // only use product.selected_variant.id arg if variant is not already in the
2230          // url params. Otherwise we might be overriding the latest selection
2231          if (!search.includes('variant') && this.product?.selected_variant?.id) {
2232            params.append('variant', this.product?.selected_variant?.id);
2233          }
2234
2235          // only use selectedSellingPlanId arg if variant is not already in the
2236          // url params. Otherwise we might be overriding the latest selection
2237          let selectedSellingPlanId = this.product?.selected_selling_plan?.id;
2238          if (!selectedSellingPlanId) {
2239            // if selectedSellingPlanId wasn't on the product check for the hidden input
2240            selectedSellingPlanId = document.querySelector(
2241              'input[name="selling_plan"]',
2242            )?.value;
2243          }
2244          if (!search.includes('selling_plan') && selectedSellingPlanId) {
2245            params.append('selling_plan', selectedSellingPlanId);
2246          }
2247
2248          let priceAdjustments = this.product?.selected_selling_plan
2249            ?.price_adjustments;
2250          if (
2251            priceAdjustments &&
2252            priceAdjustments[0] &&
2253            priceAdjustments[0].value
2254          ) {
2255            params.append(
2256              'd',
2257              `${priceAdjustments[0].value}-${
2258                priceAdjustments[0].value_type === 'percentage' ? 'p' : 'q'
2259              }`,
2260            );
2261          }
2262
2263          let url = new URL(
2264            `${window.location.origin}${window.bundleapp.settings.proxy}/bundle/${this.product.id}`,
2265          );
2266          url.search = params.toString();
2267          let isGiftable = this.product.gift_selling_plans.includes(
2268            this.product.selected_selling_plan?.id,
2269          );
2270          if (isGiftable && this.isGiftSelected) {
2271            const giftFirstName = document.getElementById('awtGiftInfoFirstName');
2272            const giftLastName = document.getElementById('awtGiftInfoLastName');
2273            const giftEmail = document.getElementById('awtGiftInfoEmail');
2274            const giftNote = document.getElementById('awtGiftInfoNote');
2275            const giftInformation = {
2276              firstName: giftFirstName?.value,
2277              lastName: giftLastName?.value,
2278              email: giftEmail?.value,
2279              note: giftNote?.value,
2280            };
2281            sessionStorage &&
2282              sessionStorage.setItem(
2283                'awt-gift-information',
2284                JSON.stringify(giftInformation),
2285              );
2286          }
2287
2288          window.location.href = url.toString();
2289        };
2290        $clonedBtn.addEventListener(
2291          'click',
2292          handleCustomizeBoxButtonClick.bind(this),
2293        );
2294      },
2295
2296      updatePrice: function (planId) {
2297        var planAllocation = this.product.selected_variant.selling_plan_allocations.find(
2298          (allo) => allo.selling_plan_id == planId,
2299        );
2300
2301        // var planOption = this.product.selling_plans_by_id[planId];
2302        let $comparePriceSpan = this.$wrapper.querySelector(
2303          '.bundleapp-compareAtPrice',
2304        );
2305        const $priceRegular = this.$wrapper.querySelector(priceContainerSel());
2306        
2307        const $priceSale = this.$wrapper.querySelector(
2308          comparePriceContainerSel(),
2309        );
2310
2311        if (!$priceRegular) console.warn('Did not find a price element');
2312        if (!$priceSale) console.warn('Did not find a compare price element');
2313
2314        if (!$comparePriceSpan) {
2315          $comparePriceSpan = document.createElement('span');
2316          $comparePriceSpan.classList.add('bundleapp-compareAtPrice');
2317          if ($priceRegular) {
2318            const priceStyles = window.getComputedStyle($priceRegular);
2319            Array.from(priceStyles).forEach((key) =>
2320              $comparePriceSpan.style.setProperty(
2321                key,
2322                priceStyles.getPropertyValue(key),
2323                priceStyles.getPropertyPriority(key),
2324              ),
2325            );
2326            $priceRegular.after($comparePriceSpan);
2327          }
2328          $comparePriceSpan.style.textDecoration = 'line-through';
2329          $comparePriceSpan.style.webkitTextDecorationLine = 'line-through';
2330          $comparePriceSpan.style.marginLeft = '10px';
2331
2332          // for testing purpose
2333          if ($comparePriceSpan)
2334            $comparePriceSpan.dataset.test = 'bundlePriceOnSale';
2335        }
2336
2337        setTimeout(
2338          function () {
2339            // Since the theme wants to change the price we need to wait a bit to make our changes,
2340            // hence, the timeout
2341            if (planAllocation) {
2342              if ($priceRegular) {
2343                $priceRegular.innerHTML = `${formatMoney(planAllocation.price)}`;
2344
2345                if (
2346                  planAllocation.compare_at_price &&
2347                  planAllocation.compare_at_price !== planAllocation.price
2348                ) {
2349                  $comparePriceSpan.innerHTML = `${formatMoney(
2350                    planAllocation.compare_at_price,
2351                  )}`;
2352                  $comparePriceSpan.style.display = 'inline';
2353                } else if (
2354                  product.compare_at_price &&
2355                  product.compare_at_price !== planAllocation.price
2356                ) {
2357                  $comparePriceSpan.innerHTML = `${formatMoney(
2358                    product.compare_at_price,
2359                  )}`;
2360                  $comparePriceSpan.style.display = 'inline';
2361                }
2362                 else {
2363                  $comparePriceSpan.style.display = 'none';
2364                }
2365              }
2366            } else {
2367              if ($priceRegular) {
2368                $priceRegular.innerHTML = `${formatMoney(
2369                  this.product.selected_variant.price,
2370                )}`;
2371              }
2372              if (this.product.selected_variant.compare_at_price) {
2373                $comparePriceSpan.innerHTML = formatMoney(
2374                  this.product.selected_variant.compare_at_price,
2375                );
2376                $comparePriceSpan.style.display = 'inline';
2377              } else {
2378                $comparePriceSpan.style.display = 'none';
2379              }
2380            }
2381
2382            // make sure theme did not try to display=block
2383            if ($priceRegular) $priceRegular.style.display = 'inline';
2384
2385            //for testing purposes
2386            if ($priceRegular) $priceRegular.dataset.test = 'priceRegular';
2387
2388            // hide this because we are not longer using this elements.
2389            if ($priceSale) $priceSale.style.display = 'none';
2390            //for testing purposes
2391            if ($priceSale) $priceSale.dataset.test = 'priceOnSale';
2392
2393            // make sure theme did not tried to decorate text
2394            if ($priceRegular) $priceRegular.style.textDecoration = 'none';
2395
2396            if (
2397              this.product?.selected_variant?.compare_at_price ===
2398                this.product.selected_variant.price ||
2399              this.product?.selected_variant?.compare_at_price ===
2400                planAllocation?.price ||
2401              this.product?.selected_variant?.price === planAllocation?.price
2402            ) {
2403              if ($comparePriceSpan) $comparePriceSpan.style.display = 'none';
2404            }
2405          }.bind(this),
2406          100,
2407        );
2408      },
2409
2410      updateBadgePrice: function (planId) {
2411        var planAllocation = this.product.selected_variant.selling_plan_allocations.find(
2412          (allo) => allo.selling_plan_id == planId,
2413        );
2414        var planOption = this.product.selling_plans_by_id[planId];
2415
2416        var $priceAdjustment = this.$wrapper.querySelector(
2417          '.bundleapp-price-adjustment',
2418        );
2419
2420        if (planAllocation) {
2421          var value_type = planOption.price_adjustments[0].value_type;
2422          var value = planOption.price_adjustments[0].value;
2423
2424          var symbol = value_type === 'percentage' ? '%' : '';
2425          var strValue = value_type === 'percentage' ? value : formatMoney(value);
2426
2427          var discount = value > 0 ? `${strValue}${symbol}` : '';
2428
2429          // find out if this selling plan is part of a selling plan group with multiple selling plans/frequencies
2430          const planAllocationBrothers = this.product.selected_variant.selling_plan_allocations.reduce(
2431            (acc, curr) => {
2432              if (
2433                curr.selling_plan_group_id ===
2434                  planAllocation.selling_plan_group_id &&
2435                curr.selling_plan_id !== planAllocation.selling_plan_id
2436              ) {
2437                acc.brothers = acc.brothers + 1;
2438
2439                if (curr.price !== planAllocation.price) {
2440                  acc.dynamicSavings = acc.dynamicSavings + 1;
2441                }
2442              }
2443
2444              return acc;
2445            },
2446            { brothers: 0, dynamicSavings: 0 },
2447          );
2448
2449          const subscriptionLabel = `<span data-test="subscriptionLabel">${this.getTranslation(
2450            'subscription',
2451            'SUBSCRIPTION',
2452          )}</span>`;
2453          const dotSeparatorLabel =
2454            '<span data-test="dotSeparatorLabel"> ·</span>';
2455          const saveLabel = `<span data-test="saveLabel">${this.getTranslation(
2456            'save',
2457            'Save',
2458          )} ${discount}</span>`;
2459          const extraDiscountLabel = `<span data-test="extraDiscountLabel">${this.getTranslation(
2460            'extra',
2461            'Extra',
2462          )} ${discount} ${this.getTranslation('off', 'off')}</span>`;
2463
2464          let badgeLabel = subscriptionLabel + dotSeparatorLabel + saveLabel;
2465
2466          if (!discount) {
2467            badgeLabel = subscriptionLabel;
2468          }
2469
2470          if (
2471            this.product.selected_variant.compare_at_price &&
2472            this.product.selected_variant.price != planAllocation.price
2473          ) {
2474            badgeLabel = extraDiscountLabel;
2475          }
2476
2477          const html = `<span data-test="subscriptionBadge">${badgeLabel}</span>`;
2478
2479          if (this.$badgePriceEl) {
2480            if ($priceAdjustment) {
2481              $priceAdjustment.innerHTML = html;
2482            } else {
2483              var div = document.createElement('div');
2484              div.classList.add('bundleapp-price-adjustment');
2485              div.innerHTML = html;
2486              this.$badgePriceEl.appendChild(div);
2487            }
2488          }
2489        } else {
2490          if ($priceAdjustment) {
2491            $priceAdjustment.remove();
2492          }
2493        }
2494      },
2495
2496      setSupportInformation: function () {
2497        var $description = this.$selector.querySelector(
2498          '.bundleapp-plan-selector-description',
2499        );
2500
2501        if ($description) {
2502          if (
2503            this.product.selected_selling_plan &&
2504            this.product.selected_selling_plan.description
2505          ) {
2506            $description.innerHTML = `<span>${this.product.selected_selling_plan.description}</span>`;
2507          } else {
2508            $description.innerHTML = '';
2509          }
2510        }
2511      },
2512
2513      handlePlanRadioChange: function (e) {
2514        var target = e.currentTarget || e.target;
2515        var $planGroup = target.closest('.bundleapp-plan-selector-group');
2516
2517        // remove selected class from previously selected group
2518        var $previouslySelected = this.$form.querySelectorAll(
2519          '.bundleapp-plan-selector-group--selected',
2520        );
2521        $previouslySelected.forEach((selectedGroup) =>
2522          selectedGroup.classList.remove(
2523            'bundleapp-plan-selector-group--selected',
2524          ),
2525        );
2526
2527        // add selected class to newly selected group
2528        $planGroup.classList.add('bundleapp-plan-selector-group--selected');
2529
2530        var $planSelect = $planGroup.querySelector('select');
2531        var planId = $planSelect.value;
2532        this.product.selected_selling_plan = this.product.selling_plans_by_id[
2533          planId
2534        ];
2535
2536        this.setPlansVisibility();
2537        this.setSupportInformation();
2538      },
2539
2540      handlePlanOptionsChange: function (e) {
2541        var target = e.currentTarget || e.target;
2542        var planId = target.value;
2543
2544        if (window.bundleapp.settings.useRadioButtonFrequencySelector) {
2545          // remove selected class from previously selected plan label
2546          var $previouslySelectedLabels = document.querySelectorAll(
2547            '.bundleapp-plan-selector-radio__label--selected',
2548          );
2549          $previouslySelectedLabels.forEach((selectedLabel) =>
2550            selectedLabel.classList.remove(
2551              'bundleapp-plan-selector-radio__label--selected',
2552            ),
2553          );
2554
2555          // add selected class to selected label
2556          var $label = document.querySelector(
2557            `.bundleapp-plan-selector-radio__label[for="${planId}"]`,
2558          );
2559          if ($label) {
2560            $label.classList.add(
2561              'bundleapp-plan-selector-radio__label--selected',
2562            );
2563          }
2564        }
2565
2566        this.product.selected_selling_plan = this.product.selling_plans_by_id[
2567          planId
2568        ];
2569        this.setPlansVisibility();
2570      },
2571
2572      handleFormDomChanged: function (e) {
2573        setTimeout(
2574          function () {
2575            var variantId = this.$form.querySelector('[name=id]').value;
2576            this.product.selected_variant = this.product.variants.find(
2577              (v) => v.id == variantId,
2578            );
2579            this.setPlansVisibility();
2580          }.bind(this),
2581          20,
2582        );
2583      },
2584    });
2585
2586    //Validates app is public
2587    const inPreviewMode = !!(
2588      window.location.search.includes('awt-preview') ||
2589      window.localStorage.getItem(PREVIEW_MODE_STORAGE_KEY) === 'true'
2590    );
2591
2592    // make sure preview mode is set in local storage if in preview mode
2593    inPreviewMode &&
2594      window.localStorage.setItem(PREVIEW_MODE_STORAGE_KEY, inPreviewMode);
2595
2596    // if we're in preview mode we can get rid of the URL param
2597    inPreviewMode && insertUrlParam('awt-preview');
2598
2599    // show preview control if !appPublic and inPreviewMode
2600    if (inPreviewMode && !window.bundleapp.settings.appPublic) {
2601      showPreviewModeControl();
2602    }
2603
2604    // update CSS vars
2605    setCssVars(window.bundleapp.settings.shopStyleSettings);
2606
2607    if (window.bundleapp.settings.appPublic || inPreviewMode) {
2608      window.bundleapp.BundleAppWidget = BundleAppWidget;
2609      document.dispatchEvent(new Event('bundleapp:ready'));
2610    }
2611
2612    /**
2613    * Iterating over forms
2614    */
2615    var shopInfoPromise = getShopInfo();
2616
2617    window.bundleapp.initializeForms = function () {
2618      var $forms = document.querySelectorAll("form[action='/cart/add']");
2619      $forms.forEach(function (el) {
2620        // if we found more than one form, lets make sure we're adding only to the
2621        // forms that we want to..
2622        if ($forms.length > 1) {
2623          // check if this is the installments form (from Dawn theme) before
2624          // initializing the plan selector widget
2625          if (el.getAttribute('id') && el.getAttribute('id').includes('product-form-installment')) {
2626            return;
2627          }
2628
2629          // additional checks will go here
2630        }
2631        var settings = window.bundleapp.settings;
2632        var $variantEl = el.querySelector('[name=id]');
2633
2634        // Checking if the widget has been initialized already
2635        if (el.querySelector('[data-bundleapp-wrapper]')) {
2636          console.warn('Bundleapp: Form already initialized');
2637          return;
2638        }
2639        if ($variantEl) {
2640          var pathname = window.location.pathname;
2641          var search = window.location.search;
2642          var searchParams = new URLSearchParams(search);
2643          var reqParams = new URLSearchParams();
2644
2645          //gets product handle if in a product page
2646          let productHandle = pathname.includes('/products/')
2647            ? pathname.split('/').filter(Boolean).pop()
2648            : null;
2649
2650          // If there is a container selector we want to try to get the handle from it.
2651          // This because in collection pages or product pages with recommended products it
2652          // will be easier: ie <div data-bundleapp-widget=""/>
2653
2654          var $containerSel = el.querySelector(
2655            settings.containerSel || '[data-bundleapp-widget]',
2656          );
2657
2658          if (
2659            $containerSel &&
2660            $containerSel.dataset &&
2661            $containerSel.dataset.bundleappWidget
2662          ) {
2663            productHandle = $containerSel.dataset.bundleappWidget;
2664          }
2665
2666          if (productHandle) {
2667            reqParams.append('productHandle', productHandle);
2668          }
2669          var getProductSelector = function () {
2670              return;
2671            return fetch(
2672              settings.productSelectorUrl
2673                ? settings.productSelectorUrl +
2674                    productHandle +
2675                    '?view=selector&' +
2676                    reqParams.toString()
2677                : settings.proxy + '/product-selector?' + reqParams.toString(),
2678            ).then(function (res) {
2679              if (!res.ok) {
2680                throw new Error(res.statusText);
2681              }
2682              return res.text();
2683            });
2684          };
2685
2686          // gets selected variant
2687          var variantId = $variantEl.value;
2688          if (variantId) {
2689            reqParams.append('variant', variantId);
2690          }
2691
2692          // gets selected selling plan
2693          var sellingPlan = searchParams.get('selling_plan');
2694          if (sellingPlan) {
2695            reqParams.append('selling_plan', sellingPlan);
2696          }
2697
2698          var compareHtmlStrings = function (html1, html2) {
2699            // We need to remove this uuid from the string since it is always different
2700            // This is used to uniquely identify each widget. and it cannot be any product related
2701            // attribute because we could have multiple selectors for the same product
2702            var regexWrapperIdHtml = /data-bundleapp-wrapper=["|']\d+["|']/gm;
2703            var regexWrapperIdJs = /"widget_id":\s?"\d+"/gm;
2704
2705            var str1 = (html1 || '')
2706              .replace(regexWrapperIdHtml, '')
2707              .replace(regexWrapperIdJs, '');
2708            var str2 = (html2 || '')
2709              .replace(regexWrapperIdHtml, '')
2710              .replace(regexWrapperIdJs, '');
2711            return str1 === str2;
2712          };
2713
2714          var cachedSelector;
2715          var selectorStorageKey = `bundleSelector1${productHandle + variantId}`;
2716
2717          // We check first if there is a cached selector in local storage
2718          // to speed the render time
2719          try {
2720            cachedSelector = window.localStorage.getItem(selectorStorageKey);
2721            if (cachedSelector && cachedSelector !== 'undefined') {
2722              Promise.all([shopInfoPromise]).then(function () {
2723                if (window.bundleapp.settings.appPublic || inPreviewMode) {
2724                  addAndInitiateSelector(
2725                    cachedSelector,
2726                    window.bundleapp.settings.shopStyleSettings,
2727                  );
2728                }
2729              });
2730            }
2731          } catch (err) {
2732            console.error(err);
2733          }
2734
2735          // we want to store the selector in a cache
2736          // in case there is a new version we can remove it and
2737          // create and initiate a new one
2738          var cachedDivContainer;
2739          var addAndInitiateSelector = function (htmlString, styleSettings) {
2740            var addSelector = function ($el) {
2741              // if selector style is selected use that
2742              if (styleSettings && styleSettings.SelectorStyle) {
2743                $el.classList.add(styleSettings.SelectorStyle);
2744              }
2745              // if a container class has been set in the settings this means
2746              // that we've manually set them up, use this class
2747              else if (settings.containerClass) {
2748                $el.classList.add(settings.containerClass);
2749              }
2750              // if styleSettings exist but no selector style has been chosen, default to awt-style-1
2751              else if (styleSettings && !styleSettings.SelectorStyle) {
2752                $el.classList.add('awt-style-1');
2753              }
2754              // final default is bundleapp-container
2755              else {
2756                $el.classList.add('bundleapp-container');
2757              }
2758
2759              $el.innerHTML = htmlString.trim();
2760
2761              var $renderBeforeEl, $renderAfterEl, $renderInsideEl;
2762              if (
2763                settings.renderAfterSel ||
2764                (styleSettings && styleSettings.RenderAfterSel)
2765              ) {
2766                $renderAfterEl = el.querySelector(
2767                  settings.renderAfterSel || styleSettings.RenderAfterSel,
2768                );
2769              } else if (
2770                settings.renderBeforeEl ||
2771                (styleSettings && styleSettings.RenderBeforeSel)
2772              ) {
2773                $renderBeforeEl = el.querySelector(
2774                  settings.renderBeforeEl || styleSettings.RenderBeforeSel,
2775                );
2776              } else if (
2777                settings.renderInsideSel ||
2778                (styleSettings && styleSettings.RenderInsideSel)
2779              ) {
2780                $renderInsideEl = el.querySelector(
2781                  settings.renderInsideSel || styleSettings.RenderInsideSel,
2782                );
2783              }
2784
2785              // If there is a custom selector to render the widget
2786              if ($renderInsideEl) {
2787                $renderInsideEl.append($el);
2788              } else if ($containerSel) {
2789                // if the default container selector is available
2790                $containerSel.append($el);
2791              } else if ($renderAfterEl) {
2792                // else if renderAfterSel is set, render widget after that
2793                $renderAfterEl.parentNode.insertBefore(
2794                  $el,
2795                  $renderAfterEl.nextSibling,
2796                );
2797              } else if ($renderBeforeEl) {
2798                // else if renderBeforeSel is set, render widget after that
2799                $renderBeforeEl.parentNode.insertBefore($el, $renderBeforeEl);
2800              } else if ($variantEl) {
2801                // else render the widget after the input field
2802                $variantEl.parentNode.insertBefore($el, $variantEl.nextSibling);
2803              }
2804            };
2805
2806            if (cachedDivContainer) {
2807              var newEl = document.createElement('div');
2808              addSelector(newEl);
2809              cachedDivContainer.parentNode.removeChild(cachedDivContainer);
2810            } else {
2811              cachedDivContainer = document.createElement('div');
2812              addSelector(cachedDivContainer);
2813            }
2814
2815            const scriptMatches = [
2816              ...htmlString.matchAll(/
2816<script type=.*>(.+)<\/script>/gims),
2817            ];
2818            if (scriptMatches.length && scriptMatches[0] && scriptMatches[0][1]) {
2819              try {
2820                var product = JSON.parse(scriptMatches[0][1]);
2821                /**
2822                * Initiates the widget selector
2823                */
2824                var $selector = document.querySelector(
2825                  "[data-bundleapp-wrapper='" + product.widget_id + "']",
2826                );
2827                new window.bundleapp.BundleAppWidget($selector, product);
2828              } catch (err) {
2829                console.warn('Bundle: Could not parse and initiate widget', err);
2830              }
2831            }
2832          };
2833
2834          try {
2835            var prodSelectorPromise = getProductSelector();
2836            Promise.all([prodSelectorPromise, shopInfoPromise]).then((values) => {
2837              const responseText = values[0];
2838              // replaces to minify a bit the html string
2839              // .replace(/\n|\t/g, ' ') // replaces newlines and tabs
2840              // .replace(/>[\s]*?</g, '><') // removes spaces between open and close brackets
2841              // .replace(/[\s]*?</g, '<'); // removes spaces at start
2842
2843              if (
2844                (window.bundleapp.settings.appPublic || inPreviewMode) &&
2845                !compareHtmlStrings(responseText, cachedSelector)
2846              ) {
2847                window.localStorage.setItem(selectorStorageKey, responseText);
2848                addAndInitiateSelector(
2849                  responseText,
2850                  window.bundleapp.settings.shopStyleSettings,
2851                );
2852              }
2853            });
2854          } catch (err) {
2855            console.error(
2856              'Something went wrong while fetching and parsing the product',
2857              err,
2858            );
2859          }
2860        }
2861      });
2862    };
2863
2864    window.bundleapp.initializeForms();
2865  })();
2866
2867  (function () {
2868    function addStyle(styleString) {
2869        const style = document.createElement('style');
2870        style.textContent = styleString;
2871        document.head.append(style);
2872    }
2873    const rootStyles = Object.values(STYLE_VAR_MAP).reduce(
2874        (accum, { cssVar, defaultVal = '' } = {}) => {
2875        return `${accum}${cssVar}: ${defaultVal};`;
2876        },
2877        '',
2878    );
2879
2880    addStyle(`
2881        /**** CUSTOM COLORS ****/
2882        :root {
2883        ${rootStyles}
2884        }
2885        /**** END CUSTOM COLORS ****/
2886    `);
2887  })();
2888</script>
2888
2889
2890<style>
2891
2892  .bundleapp-wrapper {
2893      border: none;
2894      padding: 0;
2895      margin-bottom: 20px;
2896      width: 100%;
2897  }
2898  .bundleapp-wrapper legend {
2899      font-size: 90%;
2900      margin-bottom: 5px;
2901  }
2902  .bundleapp-wrapper .bundleapp-plan-selector-group {
2903      margin-bottom: 5px;
2904  }
2905  .bundleapp-wrapper .bundleapp-plan-selector-group > label {
2906      display: flex;
2907      align-items: center;
2908      font-size: 90%;
2909  }
2910  .bundleapp-wrapper .bundleapp-plan-selector-group label > input {
2911      min-height: 30px;
2912      margin-right: 10px;
2913  }
2914  .bundleapp-wrapper .bundleapp-plan-selector-group select {
2915      width: 100%;
2916      margin-bottom: 20px;
2917  }
2918  .bundleapp-wrapper .bundleapp-plan-selector-group-pricing {
2919      margin-left: auto;
2920  }
2921  .bundleapp-wrapper .bundleapp-plan-selector-plan {
2922      margin-left: 23px;
2923  }
2924  .bundleapp-wrapper .bundleapp-plan-selector-plan > label {
2925      font-size: 80%;
2926      display: block;
2927      text-align: left;
2928  }
2929  .bundleapp-wrapper .bundleapp-plan-selector-description span {
2930      border: solid 1px #dfe3e8;
2931      padding: 16px;
2932      height: auto;
2933      margin-top: 16px;
2934      border-radius: 0px;
2935      font-size: 90%;
2936      margin-left: 23px;
2937      display: block;
2938  }
2939  .bundleapp-price-adjustment {
2940      display: inline-block;
2941      margin-left: 10px;
2942      border: 1px solid;
2943      border-color: inherit;
2944      font-size: 80%;
2945      padding-left: 10px;
2946      padding-right: 10px;
2947      border-radius: 3px;
2948  }
2949  .bundleapp-legend {
2950      text-align: left;
2951      margin-bottom: 5px;
2952  }
2953  .awt-hidden-add-to-cart-button {
2954      display: none !important;
2955  }
2956  /**** PLAN SELECTOR BASICS ****/
2957  .awt-style-1, .awt-style-2 {
2958      width: 100%;
2959      margin-top: 20px;
2960      margin-bottom: 20px;
2961  }
2962  .awt-style-1 .bundleapp-wrapper, .awt-style-2 .bundleapp-wrapper {
2963      margin-bottom: 0;
2964  }
2965  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-description span, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-description span {
2966      margin-left: 0;
2967  }
2968  /**** PLAN SELECTOR BASICS ****/
2969  /**** CUSTOM DROP DOWN ****/
2970  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group select.bundleapp-plan-selector-select, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group select.bundleapp-plan-selector-select {
2971      padding: 14px 50px 14px 17px;
2972      margin-bottom: 8px;
2973      appearance: none;
2974      -webkit-appearance: none;
2975      background-repeat: no-repeat;
2976      background-position: center right;
2977      background-image: url("data:image/svg+xml,%3Csvg width='44' height='24' xmlns='http://www.w3.org/2000/svg' role='presentation' focusable='false' aria-hidden='true' class='icon-chevron '%3E%3Cg%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath transform='rotate(90 12.414 12.4145)' stroke='null' id='svg_1' d='m10.121,19.122l6,-6a1,1 0 0 0 0,-1.415l-6,-6a1,1 0 0 0 -1.414,0a1,1 0 0 0 0,1.415l5.293,5.292l-5.293,5.293a1,1 0 1 0 1.414,1.415z' fill-rule='evenodd' fill='currentColor'/%3E%3C/g%3E%3C/svg%3E");
2978      background-size: 35px;
2979      background-color: #fff;
2980      border: 1px solid var(--awt-border-color);
2981      outline: 0;
2982      height: auto;
2983  }
2984  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group select.bundleapp-plan-selector-select:focus-visible, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group select.bundleapp-plan-selector-select:focus-visible {
2985      box-shadow: none;
2986  }
2987  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group select.bundleapp-plan-selector-select:hover, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group select.bundleapp-plan-selector-select:hover {
2988      cursor: pointer;
2989  }
2990  /**** END CUSTOM DROP DOWN ****/
2991  /**** CUSTOM RADIO BUTTON ****/
2992  .awt-style-1 .bundleapp-wrapper input[type='radio'], .awt-style-2 .bundleapp-wrapper input[type='radio'] {
2993      /* Add if not using autoprefixer */
2994      -webkit-appearance: none;
2995      /* Remove most all native input styles */
2996      appearance: none;
2997      /* For iOS <15 */
2998      background-color: #fff;
2999      /* Not removed via appearance */
3000      margin: 0 10px 0 0;
3001      color: currentColor;
3002      width: 20px;
3003      height: 20px;
3004      border: 1px solid currentColor;
3005      border-radius: 50%;
3006      /* transform: translateY(-0.075em);
3007      */
3008      display: grid;
3009      place-content: center;
3010      min-height: 0 !important;
3011      min-width: 20px;
3012      outline: none;
3013      padding: 0;
3014  }
3015  .awt-style-1 .bundleapp-wrapper input[type='radio']:focus .awt-style-2 .bundleapp-wrapper input[type='radio']:focus {
3016      /* remove outline */
3017      outline: none;
3018  }
3019  .awt-style-1 .bundleapp-wrapper input[type='radio']::before, .awt-style-2 .bundleapp-wrapper input[type='radio']::before {
3020      content: '';
3021      width: 10px;
3022      height: 10px;
3023      border-radius: 50%;
3024      transform: scale(0);
3025      transition: 120ms transform ease-in-out;
3026      background-color: var(--awt-radio-button-background);
3027      transition: background-color 0.3s;
3028  }
3029  .awt-style-1 .bundleapp-wrapper input[type='radio']:checked::before, .awt-style-2 .bundleapp-wrapper input[type='radio']:checked::before {
3030      transform: scale(1);
3031  }
3032  /**** END CUSTOM RADIO BUTTON ****/
3033  /**** CUSTOM FREQUENCY BUTTONS ****/
3034  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-radio input, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-radio input {
3035      clip: rect(0, 0, 0, 0);
3036      overflow: hidden;
3037      position: absolute;
3038      height: 1px;
3039      width: 1px;
3040  }
3041  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-radio__label, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-radio__label {
3042      display: inline-block;
3043      text-align: center;
3044      min-width: 36px;
3045      padding: 6px 10px;
3046      border: var(--awt-freq-button-border);
3047      color: var(--awt-freq-button-color);
3048      background-color: var(--awt-freq-button-background);
3049      cursor: pointer;
3050      border-radius: var(--awt-freq-button-border-radius);
3051      margin: 6px 8px 6px 0;
3052      transition: border 0.3s, color 0.3s, background-color 0.3s;
3053  }
3054  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-radio__label:hover, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-radio__label:hover {
3055      color: var(--awt-freq-button-color-hover);
3056      background-color: var(--awt-freq-button-background-hover);
3057      border: var(--awt-freq-button-border-hover);
3058  }
3059  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-radio__label.bundleapp-plan-selector-radio__label--selected, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-radio__label.bundleapp-plan-selector-radio__label--selected {
3060      background-color: var(--awt-freq-button-background-selected);
3061      color: var(--awt-freq-button-color-selected);
3062      border: var(--awt-freq-button-border-selected);
3063      transition: border 0.3s, color 0.3s, background-color 0.3s;
3064  }
3065  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-radio__label.bundleapp-plan-selector-radio__label--selected:hover, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-radio__label.bundleapp-plan-selector-radio__label--selected:hover {
3066      background-color: var(--awt-freq-button-background-hover-selected);
3067      color: var(--awt-freq-button-color-hover-selected);
3068      border: var(--awt-freq-button-border-hover-selected);
3069  }
3070  /**** END CUSTOM FREQUENCY BUTTONS ****/
3071  /**** CUSTOM LABEL ACCENT ****/
3072  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group > label .awt-accent, .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group > label .awt-accent {
3073      background-color: var(--awt-accent-background);
3074      padding: 2px 8px;
3075      border-radius: 20px;
3076      font-size: 12px;
3077      display: inline-block;
3078      color: var(--awt-accent-color);
3079  }
3080  /**** END CUSTOM LABEL ACCENT ****/
3081  /*****************************************/
3082  /*****************************************/
3083  /**************** STYLE 1 ****************/
3084  /*****************************************/
3085  /*****************************************/
3086  /**** CUSTOM PLAN SELECTOR ****/
3087  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group > label {
3088      font-weight: 400;
3089      margin-bottom: 0;
3090  }
3091  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group > label:hover {
3092      cursor: pointer;
3093  }
3094  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group {
3095      margin-bottom: 10px;
3096      padding: 10px 15px;
3097      border-radius: var(--awt-border-radius);
3098      border: 1px solid var(--awt-border-color);
3099      transition: border 0.3s, color 0.3s, background-color 0.3s;
3100  }
3101  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group .bundleapp-plan-selector-select {
3102      margin-bottom: 0;
3103  }
3104  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group .bundleapp-plan-selector-plan {
3105      margin-top: 10px;
3106  }
3107  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group .bundleapp-plan-selector-plan > label {
3108      margin-bottom: 8px;
3109  }
3110  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group.bundleapp-plan-selector-group--selected {
3111      border-color: var(--awt-selected-plan-border-color);
3112      background-color: var(--awt-selected-plan-background);
3113  }
3114  .awt-style-1 .bundleapp-wrapper .bundleapp-plan-selector-group.bundleapp-plan-selector-group--single-group {
3115      //border: none;
3116      background-color: initial;
3117      border-color: var(--awt-border-color);
3118      transition: border 0.3s, color 0.3s, background-color 0.3s;
3119  }
3120  /**** END CUSTOM PLAN SELECTOR ****/
3121  /*****************************************/
3122  /*****************************************/
3123  /**************** STYLE 2 ****************/
3124  /*****************************************/
3125  /*****************************************/
3126  /**** CUSTOM PLAN SELECTOR ****/
3127  .awt-style-2 .bundleapp-wrapper {
3128      border: 1px solid var(--awt-border-color);
3129  }
3130  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group:not(:last-child) {
3131      border-bottom: 1px solid var(--awt-border-color);
3132  }
3133  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group > label {
3134      font-weight: 400;
3135      margin-bottom: 0;
3136  }
3137  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group > label:hover {
3138      cursor: pointer;
3139  }
3140  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group .bundleapp-plan-selector-plan {
3141      margin-top: 10px;
3142  }
3143  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group .bundleapp-plan-selector-plan > label {
3144      margin-bottom: 8px;
3145  }
3146  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group {
3147      margin-bottom: 0;
3148      padding: 8px 20px;
3149      transition: border 0.3s, color 0.3s, background-color 0.3s;
3150  }
3151  .awt-style-2 .bundleapp-wrapper .bundleapp-plan-selector-group.bundleapp-plan-selector-group--selected {
3152      border-color: var(--awt-selected-plan-border-color);
3153      background-color: var(--awt-selected-plan-background);
3154      border-bottom: 0;
3155  }
3156  /**** END CUSTOM PLAN SELECTOR ****/
3157  /**** CUSTOMIZE CP ****/
3158  .bundle-button.button--primary:enabled {
3159      background-color: var(--awt-primary-button-background);
3160      color: var(--awt-primary-button-color);
3161      border-style: solid;
3162      border: var(--awt-primary-button-border);
3163      border-radius: var(--awt-primary-button-border-radius);
3164      transition: color 0.3s, background-color 0.3s, border-color 0.3s, border-width 0.3s;
3165  }
3166  .bundle-button.button--primary:enabled:hover {
3167      background-color: var(--awt-primary-button-background-hover);
3168      color: var(--awt-primary-button-color-hover);
3169      border: var(--awt-primary-button-border-hover);
3170  }
3171  /**** END CUSTOMIZE CP ****/
3172  /**** BaB UI ****/
3173  .bundleapp-modal__logo {
3174      background-image: url();
3175      background-position: center;
3176  }
3177  .awtomatic-progress-item {
3178      transition: border 0.3s, color 0.3s, background-color 0.3s;
3179  }
3180  .awtomatic-progress-item.awtomatic-progress-item--completed {
3181      background-color: var(--awt-progress-bar-background);
3182  }
3183  .awtomatic-progress-item.awtomatic-progress-item--completed .bundle-text--subheading {
3184      color: var(--awt-progress-bar-color);
3185  }
3186  .bundle-stepper-counter--complete {
3187      background-color: var(--awt-progress-bar-background);
3188      color: var(--awt-progress-bar-color);
3189  }
3190  .bundle-stepper-item:after {
3191      transition: border-color 0.3s;
3192  }
3193  .bundle-stepper-item--complete:after {
3194      border-bottom-color: var(--awt-progress-bar-background);
3195  }
3196  /**** End BaB UI ****/
3197  
3198  /**** Gift styling ****/
3199  .awt-gift-info-title {
3200      font-weight: 400;
3201      font-size: 16px;
3202      text-align: start;
3203  }
3204  .awt-error-msg {
3205      color: #ff2a51;
3206      text-align: start;
3207  }
3208  .awt-input-error.awt-error {
3209      background-color: rgba(255,42,81,.1);
3210      border: 2px solid #ff2a51;
3211  }
3212  .awt-floating-label {
3213      display: block;
3214      position: relative;
3215      border-radius: 5px;
3216      width: 100%;
3217  }
3218  .awt-floating-label:last-child {
3219      margin-bottom: 0;
3220  }
3221  .awt-floating-label input, .awt-floating-label textarea {
3222      font-family: inherit;
3223      width: 100%;
3224      height: 40px;
3225      border: none;
3226      outline: none;
3227      background-color: #f8f8f8;
3228      border-radius: 8px;
3229      padding: 0 12px;
3230      font-size: 16px;
3231      margin: 0px;
3232      font-family: inherit;
3233  }
3234  .awt-floating-label textarea {
3235      height: 120px;
3236      padding: 12px;
3237  }
3238  .awt-floating-label input::placeholder, .awt-floating-label textarea::placeholder {
3239      opacity: 0;
3240  }
3241  .awt-floating-label span {
3242      position: absolute;
3243      top: 20px;
3244      left: 8px;
3245      transform: translateY(-50%);
3246      font-size: 16px;
3247      padding: 0 4px;
3248      transition-duration: 300ms;
3249      border-radius: 5px;
3250  }
3251  label.awt-floating-label:focus-within > span, .awt-floating-label input:not(:placeholder-shown) + span, .awt-floating-label textarea:not(:placeholder-shown) + span {
3252      transform: translateY(-150%);
3253      font-size: 11px;
3254      background-color: rgba(255, 255, 255);
3255  }
3256  .awt-floating-label-warning {
3257      font-size: 14px;
3258      padding: 0 2px;
3259      text-align: start;
3260  }
3261  /*! form field group in 2 columns */
3262  .awt-form-group {
3263      display: flex;
3264      justify-content: space-between;
3265  }
3266  .awt-form-group > * {
3267      width: calc(50% - 4px);
3268      padding-bottom: 16px;
3269  }
3270  .awt-gift-input-container {
3271      padding-bottom:16px 
3272  }
3273  /*! custom checkbox */
3274  .awt-checkbox {
3275      display: flex;
3276      align-items: center;
3277      margin: 16px 0;
3278  }
3279  .awt-checkbox input[type="checkbox"] {
3280      /* Add if not using autoprefixer */
3281      -webkit-appearance: none;
3282      /* Remove most all native input styles */
3283      appearance: none;
3284      /* For iOS <15 */
3285      background-color: #fff;
3286      width: 18px;
3287      height: 18px;
3288      margin-right: 4px;
3289      position: relative;
3290      border-radius: 2px;
3291      box-shadow: 0 0 0 1px inset #000;
3292  }
3293  .awt-checkbox input[type="checkbox"]:checked {
3294      /* For iOS <15 */
3295      background-color: #000000;
3296  }
3297  .awt-checkbox input[type="checkbox"]:checked::before {
3298      content: "";
3299      position: absolute;
3300      left: 4px;
3301      top: 8px;
3302      background: white;
3303      width: 2px;
3304      height: 2px;
3305      box-shadow: 2px 0 0 white, 4px 0 0 white, 4px -2px 0 white, 4px -4px 0 white, 4px -6px 0 white, 4px -8px 0 white;
3306      transform: rotate(45deg);
3307  }
3308  .awt-checkbox input[type="checkbox"]:disabled {
3309      background-color: #f8f8f8;
3310      cursor: not-allowed;
3311  }
3312  /**** End Gift styling ****/
3313
3314  /*** PREVIEW CONTROL ***/
3315  #awt-preview-mode-control {
3316      position: fixed;
3317      bottom: 15px;
3318      left: 50%;
3319      transform: translateX(-50%);
3320      height: 75px;
3321      z-index: 2147483647;
3322      background-color: #fff;
3323      color: #222;
3324      padding: 17px;
3325      display: flex;
3326      justify-content: space-between;
3327      align-content: center;
3328      box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.08);
3329      border-radius: 8px;
3330      box-sizing: border-box;
3331  }
3332  #awt-preview-mode-control.hidden {
3333      display: none;
3334  }
3335  #awt-preview-mode-control div.awt-logo {
3336      display: flex;
3337      height: 100%;
3338      align-items: center;
3339      flex-wrap: nowrap;
3340  }
3341  #awt-preview-mode-control div.awt-logo span {
3342      margin-top: 3px;
3343      font-size: 16px;
3344      font-family: sans-serif;
3345      color: #3700ff;
3346  }
3347  #awt-preview-mode-control div.awt-logo .awt-logo--image {
3348      display: block;
3349      background-image: url('https://bundle-public-assets.s3.amazonaws.com/customerPortal/awtomatic-no-dot.svg');
3350      background-repeat: no-repeat;
3351      background-size: contain;
3352      background-position: center;
3353      width: 95px;
3354      height: 100%;
3355      margin-right: 6px;
3356  }
3357  #awt-preview-mode-control div.awt-logo .awt-logo--info-icon {
3358      display: block;
3359      background-image: url('https://bundle-public-assets.s3.amazonaws.com/customerPortal/info-icon.svg');
3360      background-repeat: no-repeat;
3361      background-size: contain;
3362      background-position: center;
3363      width: 15px;
3364      height: 15px;
3365      margin: 5px 25px 0 9px;
3366  }
3367  #awt-preview-mode-control button {
3368      display: inline-block;
3369      border: 1px solid #eee;
3370      background-color: #fff;
3371      border-radius: 4px;
3372      padding: 5px 15px;
3373      margin: 0;
3374      text-decoration: none;
3375      color: #000;
3376      font-family: sans-serif;
3377      font-size: 15px;
3378      cursor: pointer;
3379      text-align: center;
3380      transition: background 250ms ease-in-out, transform 150ms ease;
3381      -webkit-appearance: none;
3382      -moz-appearance: none;
3383      font-weight: bold;
3384      height: 100%;
3385      outline: none;
3386      box-shadow: none;
3387  }
3388  #awt-preview-mode-control button:hover, #awt-preview-mode-control button:focus {
3389      background-color: #fbfbfb;
3390  }
3391  #awt-preview-mode-control button:focus {
3392      outline: none;
3393  }
3394  #awt-preview-mode-control button:active {
3395      transform: scale(0.99);
3396  }
3397  button#awt-preview-mode-control__hide {
3398      background-color: #fff;
3399      color: #000;
3400  }
3401  #awt-preview-mode-control button#awt-preview-mode-control__hide:hover, #awt-preview-mode-control button#awt-preview-mode-control__hide:focus {
3402      background: #eee;
3403  }
3404  @media only screen and (max-width: 480px) {
3405      #awt-preview-mode-control button#awt-preview-mode-control__hide {
3406          display: none;
3407      }
3408  }
3409  /*** END PREVIEW CONTROL ***/ 
3410
3411</style> 
3411<script>
3412  window.bundleapp = window.bundleapp || {};
3413  window.bundleapp.settings = Object.assign({}, window.bundleapp.settings || {}, {
3414    bab: {
3415      productImage: 600,
3416    },
3417  });
3418</script>
3418
3419
3420<style>
3421        /** custom colors */
3422        :root {
3423            --logo-image-url: url();
3424            --primary-btn-bg-color: #000;
3425            --primary-btn-color: #fff;
3426            --primary-btn-border: 1px solid #000;
3427            --primary-btn-bg-color-hover: #222;
3428            --primary-btn-color-hover: #fff;
3429            --primary-btn-border-hover: 1px solid #222;
3430            --primary-btn-disabled-color: #828282;
3431            --primary-btn-disabled-bg-color: #e9e9e9;
3432            --primary-btn-disabled-border: 1px solid #e9e9e9;
3433            --primary-btn-disabled-bg-color-hover: #e9e9e9;
3434            --primary-btn-disabled-color-hover: #828282;
3435            --primary-btn-disabled-border-hover: 1px solid #e9e9e9;
3436            --btn-border-radius: 0;
3437            --unselected-btn-border: 1px solid var(--primary-btn-disabled-color);
3438            --unselected-btn-color: var(--primary-btn-disabled-color);
3439            --unselected-btn-bg-color: transparent;
3440            --progress-bar-bg-color: #EEEEEE;
3441            --progress-bar-completed-bg-color: #000;
3442            --progress-bar-color: #000;
3443            --progress-bar-completed-color: #FFF;
3444        }
3445        /** end custom colors */
3446
3447        .awtomatic-progress-item.awtomatic-progress-item {
3448            background-color: var(--progress-bar-bg-color);
3449        }
3450        .awtomatic-progress-item.awtomatic-progress-item--completed {
3451            background-color: var(--progress-bar-completed-bg-color);
3452        }
3453        .bundle-stepper-item--complete:after {
3454            border-bottom-color: var(--progress-bar-completed-bg-color);
3455        }
3456        .bundle-stepper-item:after {
3457            border-bottom-color: var(--progress-bar-bg-color);
3458        }
3459
3460        .bundle-stepper-counter--complete {
3461            color: var(--progress-bar-completed-color);
3462            background-color: var(--progress-bar-completed-bg-color);
3463        }
3464
3465        .bundle-stepper-counter--incomplete {
3466            background-color: var(--progress-bar-bg-color);
3467            color: var(--progress-bar-color);
3468        }
3469
3470        /* CUSTOM PROGRESS BAR */
3471        @media only screen and (min-width: 750px) {
3472
3473            .awtomatic-progress-item--completed button.awtomatic-progress-remove-button {
3474                display: inline-block;
3475                position: absolute;
3476                top: -8px;
3477                right: -8px;
3478                height: 20px;
3479                width: 20px;
3480                min-height: 0;
3481                border-radius: 50%;
3482                background-color: #fff;
3483                padding: 0;
3484                border-radius: 50%;
3485                box-shadow: 0px 0px 1px #000000d6;
3486                background-image: url(https://bundle-public-assets.s3.amazonaws.com/closeIcons/close-svgrepo-com.svg);
3487                background-size: 16px;
3488                transition: box-shadow .2s;
3489                background-position: center;
3490            }
3491            .awtomatic-progress-item--completed button.awtomatic-progress-remove-button:hover {
3492                box-shadow: 0px 0px 1px 1px #0000006e;
3493            }
3494
3495
3496            .awtomatic-progress-item--completed button.awtomatic-progress-remove-button:after {
3497                content: none;
3498            }
3499
3500
3501            .awtomatic-progress-count-label {
3502                display:none;
3503            }
3504
3505            .bundle-container .awtomatic-progress-container {
3506                margin-left: auto;
3507                padding-bottom: 20px;
3508            }
3509
3510            .bundleapp-modal__container--complete-screen footer { /* BaB Footer */
3511                height: 80px;
3512            }
3513
3514            .bundleapp-modal__container--complete-screen .bundle-container { /* BaB content */
3515                padding-top: 10px;
3516            }
3517
3518            .bundle-container .awtomatic-bab-options-container {
3519                order: 0;
3520            }
3521            .bundle-container .bundle-scrollable-section {
3522                order: 2;
3523                row-gap: 1rem;
3524            }
3525            .bundle-container .awtomatic-progress-container {
3526                order: 1;
3527            }
3528            .bundle-container footer {
3529                order: 3;
3530            }
3531
3532
3533            .awtomatic-progress-item--completed .awtomatic-progress-product-count-container .bundle-text--subheading {
3534                margin-right: 10px;
3535            }
3536
3537            .awtomatic-progress-item.awtomatic-progress-item--pending .bundle-text--subheading {
3538                color: #000;
3539            }
3540
3541            .awtomatic-progress-item.awtomatic-progress-item--completed {
3542                background-color: #fff;
3543            }
3544
3545            .awtomatic-progress-item .bundle-text--subheading {
3546                min-width: 50px;
3547                display: block;
3548                color: #fff;
3549            }
3550
3551            .awtomatic-progress-container {
3552                display: block;
3553                text-align: center;
3554                max-width: 80%;
3555                margin: 0 auto;
3556            }
3557            div.awtomatic-progress-item {
3558                width: 45px;
3559                height: 45px;
3560                display: inline-block;
3561                background-image: url();
3562                background-size: cover;
3563                background-repeat: no-repeat;
3564                background-position: center;
3565                background-color: #eee;
3566                margin: 0 5px;
3567                border-radius: 5px;
3568                border: 2px solid #ddd;
3569            }
3570
3571            /* CUSTOM PROGRESS IMAGES */
3572            div.awtomatic-progress-item.awtomatic-progress-item--completed {
3573                background-color: #eee;
3574                background-image: var(--awt-pb-img);
3575            }
3576
3577
3578        }
3579        /* END CUSTOM PROGRESS BAR */
3580
3581        /* buttons */
3582        .bundle-button.button--primary {
3583            background-color: var(--primary-btn-disabled-bg-color);
3584            color: var(--primary-btn-disabled-color);
3585            border: var(--primary-btn-disabled-border);
3586            border-radius: var(--btn-border-radius);
3587            transition: background-color .3s, color .3s;
3588        }
3589        .awtomatic-bab-options-container .bundle-button {
3590            background-color: var(--unselected-btn-bg-color);
3591            color: var(--unselected-btn-color);
3592            border: var(--unselected-btn-border);
3593            border-radius: var(--btn-border-radius);
3594            transition: background-color .3s, color .3s;
3595        }
3596        .awtomatic-bab-options-container .bundle-button span {
3597            background-color: transparent;
3598            color: var(--primary-btn-disabled-color);
3599            transition: color .3s;
3600        }
3601        .bundle-button.button--primary:hover,
3602        .awtomatic-bab-options-container .bundle-button:hover {
3603            background-color: var(--primary-btn-disabled-bg-color-hover);
3604            color: var(--primary-btn-disabled-color-hover);
3605            border: var(--primary-btn-disabled-border-hover);
3606        }
3607        .awtomatic-bab-options-container .bundle-button:hover span {
3608            color: var(--primary-btn-disabled-color-hover);
3609        }
3610        .bundle-button.button--primary:enabled,
3611        .awtomatic-bab-options-container .bundle-button.selected {
3612            background-color: var(--primary-btn-bg-color);
3613            color: var(--primary-btn-color);
3614            border: var(--primary-btn-border);
3615            border-radius: var(--btn-border-radius);
3616            transition: background-color .3s, color .3s;
3617        }
3618        .bundle-product-card__quantity-button-container--button svg {
3619            fill: var(--primary-btn-color) !important;
3620        }
3621        .bundle-product-card__quantity-button-container--button:hover svg {
3622            fill: var(--primary-btn-color-hover);
3623        }
3624        .awtomatic-bab-options-container .bundle-button.selected span {
3625            color: var(--primary-btn-color);
3626        }
3627        .bundle-button.button--primary:enabled:hover,
3628        .awtomatic-bab-options-container .bundle-button:hover {
3629            cursor: pointer;
3630            background-color: var(--primary-btn-bg-color-hover);
3631            color: var(--primary-btn-color-hover);
3632            border: var(--primary-btn-border-hover);
3633        }
3634        .awtomatic-bab-options-container .bundle-button:hover span {
3635            color: var(--primary-btn-color-hover);
3636        }
3637        /* end buttons*/
3638
3639        /* Customer quantity button */
3640        .bundle-product-card__quantity-button-container--unavailable button.bundle-product-card__quantity-button-container--button {
3641            padding: 0;
3642            width: 0;
3643        }
3644
3645        div.bundle-product-card__quantity-button-container {
3646            /*border-color: #000586;*/
3647            border-width: 0;
3648            border-radius: var(--btn-border-radius);
3649            background-color: var(--primary-btn-bg-color);
3650            color: var(--primary-btn-color);
3651            font-weight: bold;
3652            line-height: 15px;
3653            padding: 0;
3654        }
3655
3656        .bundle-product-card__quantity-button-container span {
3657            padding: 14px 10px;
3658        }
3659
3660        .bundle-product-card__quantity-button-container--button {
3661            padding: 14px 10px;
3662            border-radius: 0;
3663            transition: background-color 0.3s;
3664        }
3665
3666        .bundle-product-card__quantity-button-container--button:first-child {
3667            border-top-left-radius: var(--btn-border-radius);
3668            border-bottom-left-radius: var(--btn-border-radius);
3669        }
3670        .bundle-product-card__quantity-button-container--button:last-child {
3671            border-top-right-radius: var(--btn-border-radius);
3672            border-bottom-right-radius: var(--btn-border-radius);
3673        }
3674
3675        button.bundle-product-card__quantity-button-container--button:hover {
3676            background-color: var(--primary-btn-bg-color-hover);
3677        }
3678
3679        .bundle-product-card__quantity-button-container--button svg {
3680            fill: var(--primary-btn-color);
3681        }
3682        /* End Customer quantity button */
3683
3684        /* 2 items per row in BaB */
3685        @media only screen and (max-width: 750px) {
3686            main.bundle-scrollable-section,
3687            main .bundle-section {
3688                grid-template-columns: repeat(auto-fit, minmax(50%, 1fr));
3689                row-gap: 0;
3690            }
3691
3692            .bundleapp-modal__container--complete-screen .bundle-product-card {
3693                width: 100%;
3694            }
3695
3696            .bundle-lazy-image-container {
3697                width: 100%;
3698            }
3699
3700            .bundle-product-card__quantity-button-container {
3701                width: 100%;
3702            }
3703        }
3704        /* end 2 items per row in BaB */
3705
3706        /* square images */
3707        .bundleapp-modal__container--complete-screen .bundle-product-card {
3708            width: 300px;
3709            height: 100%;
3710        }
3711        @media screen and (max-width: 768px) {
3712            .bundleapp-modal__container--complete-screen .bundle-product-card {
3713                width: 300px;
3714            }
3715        }
3716        @media screen and (max-width: 758px) {
3717            .bundleapp-modal__container--complete-screen .bundle-product-card {
3718                width: 100%;
3719            }
3720        }
3721
3722        .bundle-lazy-image-container {
3723            padding-bottom: 100%;
3724            border-radius: 0;
3725        }
3726        /* end square images */
3727
3728        body.awt-bab-open .bundleapp-modal__logo {
3729            background-image: var(--logo-image-url);
3730        }
3731
3732        body.awt-bab-open #dummy-chat-button-iframe {
3733            display: none !important;
3734        }
3735
3736
3737        
3738        body.awt-bab-open .bundleapp-modal__container--complete-screen {
3739          top: 105px;
3740          top: 0;
3741        }
3742        body.awt-bab-open .bundleapp-modal {
3743          background: none;
3744        }
3745
3746        body.awt-bab-open .bundleapp-modal__container--complete-screen:focus-visited {
3747          outline: none;
3748        }
3749
3750        body.awt-bab-open  .bundle-product-card.selected {
3751          position: relative;
3752        }
3753
3754        body.awt-bab-open  .bundle-product-card.selected:before {
3755          content: "IN BOX";
3756          position: absolute;
3757          top: 35px;
3758          right: 35px;
3759          font-size: 14px;
3760          z-index: 9;
3761          padding: 3px 9px;
3762          background-color: var(--primary-btn-bg-color);
3763          color: var(--primary-btn-color);
3764          border: var(--primary-btn-border);
3765          border-radius: var(--btn-border-radius);
3766          transition: background-color 0.3s, color 0.3s;
3767        }
3768
3769        
3770        body.awt-bab-open .bundleapp-modal {
3771          background: none;
3772          top: 105px;
3773          z-index: 999;
3774        }
3775
3776        body.awt-bab-open #bundleapp-subscriptions-portal *:focus-visible {
3777          outline: none;
3778        }
3779
3780        body.awt-bab-open  .bundle-product-card.selected {
3781          position: relative;
3782        }
3783
3784        body.awt-bab-open  .bundle-product-card.selected:before {
3785          content: "IN BOX";
3786          position: absolute;
3787          top: 35px;
3788          right: 35px;
3789          font-size: 14px;
3790          z-index: 9;
3791          padding: 3px 9px;
3792          background-color: var(--primary-btn-bg-color);
3793          color: var(--primary-btn-color);
3794          border: var(--primary-btn-border);
3795          border-radius: var(--btn-border-radius);
3796          transition: background-color 0.3s, color 0.3s;
3797        }
3798
3799        body.list-collections .awt-style-1 {
3800          max-width: 540px;
3801          margin-top: 0;
3802        }
3803
3804        #bundleapp-subscriptions-root .bundle-subs-detail-layout .bundle-table__header td {
3805          background: #f9f9f9;
3806        }
3807
3808        #bundleapp-subscriptions-root .bundle-subs-detail-layout tr > * {
3809          border-right:  none;
3810        }
3811
3812        h4.bundle-card__title {
3813          font-size: initial;
3814          margin: initial;
3815          padding: initial;
3816          line-height: initial;
3817      }
3818      button.bundle-card__button {
3819        color: initial;
3820    }
3821    .awt-nbd-code-container button.bundleapp-btn--text {
3822      line-height: initial;
3823      padding: initial;
3824      font-size: initial;
3825      margin: initial;
3826      height: 28px;
3827      min-height: initial;
3828  }
3829
3830  button.bundleapp-btn--text:before, button.bundleapp-btn--text:after {
3831      content: initial;
3832  }
3833</style>
3834
3835  
3836  
3837<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3837
3838</body> <!-- bold subscriptions app   --> 
3838<script type="lazyload2" data-src="//baconsheir.com/cdn/shop/t/84/assets/bold-helper-functions.js?v=109594920164983513461700515168" async="async"></script>
3838
3839  
3840
3841<script>
3842  jQuery(document).on('click', '[name="checkout"]', function(){bold_ro_checkout(this)});
3843  function bold_ro_checkout(target) {
3844    var ro_from = jQuery(target).closest('form');
3845    if (typeof mixed_cart != "undefined" && mixed_cart)
3846    {
3847      jQuery.ajax({
3848        type: 'GET',
3849        url: '/cart.json',
3850        dataType: 'jsonp',
3851        async: false,
3852        success: function (data) {
3853          if (data.hasOwnProperty("items")) {
3854            for (var key in data.items) {
3855              if (data.items[key].hasOwnProperty('product_description')) {
3856                data.items[key].product_description = '';
3857              }
3858            }
3859          }
3860          ro_from.append('<input type="hidden" name="shopify_cart" value="' + encodeURIComponent(JSON.stringify(data)) + '">');
3861          ro_from.append('<input type="hidden" name="csrf_bold_token" value="775e4634405371661f03beaac36d1c1b" />');
3862          ro_from.attr('action', "https://recurringcheckout.com/s/bacons-heir/checkout/recurring/" + data.token + "?shop_url=bacons-heir.myshopify.com" + google_analytics_get_param_string());
3863        }
3864      });
3865    }
3866  }
3867  function show_promotional_modal() {
3868    $('.hover_modal').tooltip({
3869      title: "<div align=\"left\">\n<div><strong>Subscription Details<\/strong><\/div>\n<div>\n<ul>\n<li>Set it and forget it!<\/li>\n<li>Pause, edit or cancel anytime.<\/li>\n<\/ul>\n<\/div>\n<\/div>",
3870      html: true,
3871      placement: "bottom"
3872    });
3873  }
3874  function google_analytics_get_param_string() {
3875    var google_analytics_get_param_string = '';
3876    var get_param_string = decodeURIComponent(window.location.search.substring(1));
3877    var get_param_array = get_param_string.split('&');
3878    for (var i = 0; i <get_param_array.length; i++) {
3879      var get_param_pair = get_param_array[i].split('=');
3880      if (get_param_pair[0] === 'utm_source' || get_param_pair[0] === 'utm_medium' || get_param_pair[0] === 'utm_term' || get_param_pair[0] === 'utm_content' || get_param_pair[0] === 'utm_campaign') {
3881        google_analytics_get_param_string = google_analytics_get_param_string + "&" + get_param_pair[0] + '=' + get_param_pair[1];
3882      }
3883    }
3884    return google_analytics_get_param_string;
3885  }
3886</script>
3886 
3886<script>
3887    var windowWidth,lazyImages,lazyBackground,lazyIframe,lazyScripts,navigator_platform,src,style,datasrc,urls,analytics,s,x,i,j,flag;function ks_init(){flag&&(flag=0,lazyLoadImg(),lazyLoadBackground(),lazyLoadIframe(),load_all_js())}function isElementInViewport(t){var a=t.getBoundingClientRect();return a.top>=0&&a.left>=0&&a.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&a.right<=(window.innerWidth||document.documentElement.clientWidth)}function lazyLoadImg(){lazyImages.forEach(function(t){null!=(src=windowWidth<600?null==t.dataset.mobsrc?t.dataset.src:t.dataset.mobsrc:t.dataset.src)&&(t.src=src),t.classList.remove("lazy2")})}function lazyLoadImg2(){lazyImages.forEach(function(t){isElementInViewport(t)&&(null!=(src=windowWidth<600?null==t.dataset.mobsrc?t.dataset.src:t.dataset.mobsrc:t.dataset.src)&&(t.src=src),t.classList.remove("lazy"))})}function lazyLoadBackground(){lazyBackground.forEach(function(t){lazybg=windowWidth<600?null==t.dataset.mobstyle?t.dataset.style:t.dataset.mobstyle:t.dataset.style,null!=lazybg&&(t.style=lazybg),t.classList.remove("lazybg")})}function lazyLoadIframe(){lazyIframe.forEach(function(t){null!=t.dataset.src&&(t.src=t.dataset.src)})}function lazyLoadScripts(){j!=lazyScripts.length&&("lazyload2"==lazyScripts[j].getAttribute("type")?(lazyScripts[j].setAttribute("type","lazyloaded"),void 0!==lazyScripts[j].dataset.src?((s=document.createElement("script")).src=lazyScripts[j].dataset.src,document.body.appendChild(s),s.onload=function(){j++,lazyLoadScripts()}):((s=document.createElement("script")).innerHTML=lazyScripts[j].innerHTML,document.body.appendChild(s),j++,lazyLoadScripts())):(j++,lazyLoadScripts()))}function lazyLoadCss(t){(s=document.createElement("link")).rel="stylesheet",s.href=t,document.getElementsByTagName("head")[0].appendChild(s)}function lazyLoadJS(t){(s=document.createElement("script")).src=t,document.body.appendChild(s)}function load_all_js(){document.body.click(),lazyLoadCss("https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.6/jquery.fancybox.css"),lazyLoadCss(slick),window.location.href.indexOf("bacons-heir.myshopify.com")>-1||window.location.href.indexOf("/cart")>-1||window.location.href.indexOf("/checkout")>-1?console.log("No-Optimization"):(console.log("No-Optimization"),setTimeout(function(){const t=new Event("ks_load");window.dispatchEvent(t)},200),lazyLoadJS("https://cdn.shopify.com/shopifycloud/shopify/assets/storefront/load_feature-a55261a7a987674749989983b5889eadaac6795d8d48548fb61470a96edb9524.js"),lazyLoadJS("https://cdn.shopify.com/shopifycloud/shopify/assets/shopify_pay/storefront-b61f50798075db890698930c4405673937fe89353f7fea7be88b5ce16a9c0af8.js?v=20210208"),lazyLoadJS("https://cdn.shopify.com/shopifycloud/shopify/assets/storefront/features-87e8399988880142f2c62771b9d8f2ff6c290b3ff745dd426eb0dfe0db9d1dae.js")),j=0,lazyScripts=document.getElementsByTagName("script"),lazyLoadScripts(),setInterval(function(){lazyImages=document.querySelectorAll("img.lazy2"),lazyBackground=document.querySelectorAll(".lazybg"),lazyLoadImg(),lazyLoadBackground()},2e3)}document.addEventListener("DOMContentLoaded",function(){windowWidth=screen.width,lazyImages=document.querySelectorAll("img.lazy2"),nolazyImages=document.querySelectorAll("img.lazy"),lazyBackground=document.querySelectorAll(".lazybg"),lazyIframe=document.querySelectorAll("iframe"),lazyScripts=document.getElementsByTagName("script"),navigator_platform=navigator.platform,i=0,j=0,flag=1,window.addEventListener("scroll",function(){ks_init()}),window.addEventListener("mousemove",function(){ks_init()}),window.addEventListener("touchstart",function(){ks_init()}),"Linux x86_64"!=navigator_platform&&ks_init()});</script>
3887
3888  
3889</html>
3890
3891
3892

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