PageSourceSearch

https://venturi-belt-co.myshopify.com/cart

html venturi-belt-co.myshopify.com collected 2026-10-09 21:19:38 UTC 196,350 bytes, 3,534 lines download raw bytes

1<!DOCTYPE html>
2<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
3<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
4<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
5<!--[if IE 9 ]><html class="ie ie9" lang="en"> <![endif]-->
6<!--[if (gte IE 10)|!(IE)]><!--><html lang="en"> <!--<![endif]-->
7  <head>
8  <meta name="google-site-verification" content="B_Rl1u-cN61qWNrT7eWSFXXJxLjowPi1r0x77QibFLo" />
9    
10    
10<script src="https://www.googleoptimize.com/optimize.js?id=OPT-K8GZ34C"></script>
10
11    
12    
12<script type="text/javascript">
13  window._mfq = window._mfq || [];
14  (function() {
15    var mf = document.createElement("script");
16    mf.type = "text/javascript"; mf.defer = true;
17    mf.src = "//cdn.mouseflow.com/projects/bac15ebb-1f20-4f09-baac-cfa324f69f32.js";
18    document.getElementsByTagName("head")[0].appendChild(mf);
19  })();
20</script>
20
21    
22    <!-- Infinite Options by ShopPad -->
23    
23<script src="//d1liekpayvooaz.cloudfront.net/apps/customizery/customizery.js?shop=venturi-belt-co.myshopify.com"></script>
23
24    
24<script src="https://fccb8d8bede14c90924f34eca9e024b0.js.ubembed.com" async></script>
24
25    
26    <meta charset="utf-8">
27    <meta http-equiv="cleartype" content="on">
28    <meta name="robots" content="index,follow">
29    
30
31    
32    <meta name="facebook-domain-verification" content="6xbrpuzy1aq98cnjumcwah0un1getm" />
33    
34<!-- Google Tag Manager -->
35<script>
vendor: 327 bytes, lines 35-39
35(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
36new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
37j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
38'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
39})(window,document,'script','dataLayer','
39GTM-MN57ZSX
vendor: 3 bytes, line 39
39');
39</script>
39
40<!-- End Google Tag Manager -->
41    
42
43    <!-- Custom Fonts -->
44    
45      <link href="//fonts.googleapis.com/css?family=.|Lato:light,normal,bold|Lato:light,normal,bold|PT+Sans+Narrow:light,normal,bold|Merriweather:light,normal,bold" rel="stylesheet" type="text/css" />
46    
47
48    
49
50<meta name="author" content="VENTURi Belt Co.">
51<meta property="og:url" content="https://venturi-belt-co.myshopify.com/cart">
52<meta property="og:site_name" content="VENTURi Belt Co.">
53
54
55  <meta property="og:type" content="website">
56  <meta property="og:title" content="Your Shopping Cart">
57
58
59
60
61
62  <meta name="twitter:site" content="@shopify">
63
64<meta name="twitter:card" content="summary">
65
66
67    
68    
69
70    <!-- Mobile Specific Metas -->
71    <meta name="HandheldFriendly" content="True">
72    <meta name="MobileOptimized" content="320">
73    <meta name="viewport" content="width=device-width,initial-scale=1">
74    <meta name="theme-color" content="#ffffff">
75
76    <!-- Stylesheets for Retina 4.0.1 -->
77    <link href="//venturi-belt-co.myshopify.com/cdn/shop/t/20/assets/styles.scss.css?v=7779745716469687781703183784" rel="stylesheet" type="text/css" media="all" />
78    <!--[if lte IE 9]>
79      <link href="//venturi-belt-co.myshopify.com/cdn/shop/t/20/assets/ie.css?v=16370617434440559491626271804" rel="stylesheet" type="text/css" media="all" />
80    <![endif]-->
81
82    
83      <link rel="shortcut icon" type="image/x-icon" href="//venturi-belt-co.myshopify.com/cdn/shop/files/Venturi_Belt_f24c9269-af55-424a-ac04-e5bd417e1442_small.png?v=1613602002">
84    
85
86    <link rel="canonical" href="https://venturi-belt-co.myshopify.com/cart" />
87
88    
89
90    
90<script src="//venturi-belt-co.myshopify.com/cdn/shop/t/20/assets/app.js?v=150836708319549183491626271804" type="text/javascript"></script>
90
91   <!-- Hotjar Tracking Code for https://www.venturibelt.com/ -->
92<script>
vendor: 125 bytes, lines 92-95
92
93    (function(h,o,t,j,a,r){
94        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
95        h._hjSettings={hjid:
951267116
vendor: 258 bytes, lines 95-100
95,hjsv:6};
96        a=o.getElementsByTagName('head')[0];
97        r=o.createElement('script');r.async=1;
98        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
99        a.appendChild(r);
100    })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
101</script>
101
102    
103    
103<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
103<meta name="google-site-verification" content="7Axeod_MFxZmY_iJab9lHcMi-kg94bAvvdSDq87HxnI">
104<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/16765131/digital_wallets/dialog">
105<meta id="in-context-paypal-metadata" data-shop-id="16765131" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
106<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
106<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
106
107<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
108<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=16765131" crossorigin="anonymous"></script>
vendor: 1 bytes, line 108
108
109<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":16765131,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/16765131","merchantName":"VENTURi Belt Co.","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","discover","amex","elo","jcb"],"total":{"type":"pending","label":"VENTURi Belt Co.","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 109
109
110<script id="shopify-features" type="application/json">{"accessToken":"83fb4230ec3ab2d164a4f52c7f79e555","betas":["rich-media-storefront-analytics"],"domain":"venturi-belt-co.myshopify.com","predictiveSearch":true,"shopId":16765131,"locale":"en"}</script>
vendor: 1 bytes, line 110
110
111<script>var Shopify = Shopify || {};
112Shopify.shop = "venturi-belt-co.myshopify.com";
113Shopify.locale = "en";
114Shopify.currency = {"active":"USD","rate":"1.0"};
115Shopify.country = "US";
116Shopify.theme = {"name":"CRO Website-2-JULY-2019","id":120412536909,"schema_name":"Retina","schema_version":"4.0.1","theme_store_id":601,"role":"main"};
117Shopify.theme.handle = "null";
118Shopify.theme.style = {"id":null,"handle":null};
119Shopify.cdnHost = "venturi-belt-co.myshopify.com/cdn";
120Shopify.routes = Shopify.routes || {};
121Shopify.routes.root = "/";
122Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
123Shopify.SignInWithShop = Shopify.SignInWithShop || {};
124Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
125Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 125
125
126<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 126
126
127<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 127
127
128<script>
129  window.ShopifyPay = window.ShopifyPay || {};
130  window.ShopifyPay.apiHost = "shop.app\/pay";
131  window.ShopifyPay.redirectState = null;
132</script>
vendor: 1 bytes, line 132
132
133<script>
134  window.Shopify = window.Shopify || {};
135  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
136  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
137  window.Shopify.SignInWithShop.eligible = true;
138</script>
vendor: 1 bytes, line 138
138
139<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 139
139
140<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 140
140
141<script type="module">
142  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
143
144  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
145
146</script>
vendor: 1 bytes, line 146
146
147<script>
148  window.Shopify = window.Shopify || {};
149  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
150  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"]};
151</script>
vendor: 1 bytes, line 151
151
152<script>(function() {
153  var isLoaded = false;
154  function asyncLoad() {
155    if (isLoaded) return;
156    isLoaded = true;
157    var urls = ["\/\/cdn.ywxi.net\/js\/1.js?shop=venturi-belt-co.myshopify.com","\/\/d1liekpayvooaz.cloudfront.net\/apps\/customizery\/customizery.js?shop=venturi-belt-co.myshopify.com","https:\/\/cdn1.stamped.io\/files\/widget.min.js?shop=venturi-belt-co.myshopify.com","https:\/\/static.klaviyo.com\/onsite\/js\/klaviyo.js?company_id=Wqn9Mc\u0026shop=venturi-belt-co.myshopify.com","https:\/\/static.klaviyo.com\/onsite\/js\/klaviyo.js?company_id=Wqn9Mc\u0026shop=venturi-belt-co.myshopify.com","https:\/\/thanhhd.com\/app\/public\/discounts-combine\/discounts-combine.js?shop=venturi-belt-co.myshopify.com\u0026shop=venturi-belt-co.myshopify.com","https:\/\/stack-discounts.merchantyard.com\/js\/integrations\/script.js?v=6611\u0026shop=venturi-belt-co.myshopify.com","\/\/cdn.secomapp.com\/promotionpopup\/cdn\/allshops\/venturi-belt-co\/1654998180.js?shop=venturi-belt-co.myshopify.com"];
158    for (var i = 0; i < urls.length; i++) {
159      var s = document.createElement('script');
160      s.type = 'text/javascript';
161      s.async = true;
162      s.src = urls[i];
163      var x = document.getElementsByTagName('script')[0];
164      x.parentNode.insertBefore(s, x);
165    }
166  };
167  if(window.attachEvent) {
168    window.attachEvent('onload', asyncLoad);
169  } else {
170    window.addEventListener('load', asyncLoad, false);
171  }
172})();</script>
vendor: 1 bytes, line 172
172
173<script id="__st">var __st={"a":16765131,"offset":-21600,"reqid":"75161882-5ad5-47db-a7b8-ff1828fecb05-1791580777","pageurl":"venturi-belt-co.myshopify.com\/cart","u":"67cee6600125","p":"cart"};</script>
vendor: 1 bytes, line 173
173
174<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 174
174
175<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('DOMContentLoaded',(()=>{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 175
175
176<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 176
176
177<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 = "//venturi-belt-co.myshopify.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>
177<script crossorigin="anonymous" defer="defer" src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 177
177
178<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" 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 178
178
179<script>
180  window.Shopify = window.Shopify || {};
181  window.Shopify.MCP = window.Shopify.MCP || {};
182  window.Shopify.MCP.enabled = true;
183  window.Shopify.MCP.shop = "venturi-belt-co.myshopify.com";
184  window.Shopify.MCP.mcpEndpoint = "https:\/\/venturi-belt-co.myshopify.com\/api\/mcp";
185  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?\"\nSet policy_types to also get the store's written policies (full text and URL).\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."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question — e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}];
186</script>
vendor: 1 bytes, line 186
186
187<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("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/venturi-belt-co.myshopify.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-f427de6a.js","sha256-ypGF+5vIq4Psw4WG7nsVtdd\/TCfsJWnrNuACdqLCElY=");})();
188</script>
vendor: 1 bytes, line 188
188
189<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://venturi-belt-co.myshopify.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
190</script>
vendor: 1 bytes, line 190
190
191<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
192  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);
193</script>
vendor: 1 bytes, line 193
193
194<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(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})}}));
195</script>
195
196<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://venturi-belt-co.myshopify.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
197<style id="shopify-accelerated-checkout-cart">
198        #shopify-buyer-consent {
199  margin-top: 1em;
200  display: inline-block;
201  width: 100%;
202}
203
204#shopify-buyer-consent.hidden {
205  display: none;
206}
207
208#shopify-subscription-policy-button {
209  background: none;
210  border: none;
211  padding: 0;
212  text-decoration: underline;
213  font-size: inherit;
214  cursor: pointer;
215}
216
217#shopify-subscription-policy-button::before {
218  box-shadow: none;
219}
220
221      </style>
222
223<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
223
224  
224<script id="dcScript">
225  var dcCart = {"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};
226  
227  
228  var dcCustomerId = false;
229  var dcCustomerEmail = false;
230  var dcCustomerTags = false;
231  
232  var dcCurrency = '${{amount}}';
233</script>
233
234<link rel="dns-prefetch" href="https://cdn.secomapp.com/">
235<link rel="dns-prefetch" href="https://ajax.googleapis.com/">
236<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com/">
237<link rel="preload" as="stylesheet" href="//venturi-belt-co.myshopify.com/cdn/shop/t/20/assets/sca-pp.css?v=178374312540912810101654196019">
238
239<link rel="stylesheet" href="//venturi-belt-co.myshopify.com/cdn/shop/t/20/assets/sca-pp.css?v=178374312540912810101654196019">
240 
240<script>
241  
242    SCAPPLive = {};
243  
244  SCAPPShop = {};
245    
246  </script>
246 
247  
248<!-- Start of Judge.me Core -->
249<link rel="dns-prefetch" href="https://cdn.judge.me/">
250<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"coupon_receiving_condition":"any_review","coupon_value_type":"percentage","coupon_value_percentage":10,"coupon_value_fixed_amount":0,"coupon_discount_type":"single","coupon_tier_text_enabled":false,"coupon_tier_text_percentage":10,"coupon_tier_text_fixed_amount":0,"coupon_tier_photo_enabled":false,"coupon_tier_photo_percentage":10,"coupon_tier_photo_fixed_amount":0,"coupon_tier_video_enabled":false,"coupon_tier_video_percentage":10,"coupon_tier_video_fixed_amount":0,"enable_coupons":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank y
250ou! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"","widget_rating_filter_color":"#fbcd0a","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"default","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","enable_ai_review_visibility":true,"widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"★ Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"text","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":true,"featured_carousel_show_header":true,"featured_carousel_title":"Let customers speak for us","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"vintage","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":false,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":false,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":false,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","widget_sorting_most_relevant_text":"Most Relevant","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subt
250itle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#108474","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":true,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Load More","widget_load_more_color":"#108474","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"vertical","widget_show_review_information":false,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_text_color":"#000000","review_snippet_widget_lighter_text_color":"#7B7B7B","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":false,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"everyone","store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":true,"widget_autofill_review_title":true,"redirect_reviewers_invited_via_email":"review_widget","request_store_review_after_product_review":false,"request_review_other_products_in_order":false,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":"#108474","review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":"#108474","review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_form_theme":"multi_step","review_form_location":"in_store_popup","review_form_external_page_background_color":"#C5F7F0","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","check_email_screen_resend_message_text":"Email resent!","check_email_resend_hint_text":"Didn't get the email? Check your spam folder or [resend the email].","verification_email_rate_limit_error_text":"You've reached the limit for review attempts on this product. Please check your inbox or try again later.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_
250youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":false,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","coupon_promo_intro_any_review_text":"Write a review and get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_photo_text":"Write a review and add a photo or video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_video_text":"Write a review and add a video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_up_to_any_review_text":"Write a review and get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_up_to_with_photo_text":"Write a review and add a photo or video to get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_external_text":"Write a review and get a reward for your next purchase","coupon_promo_intro_external_with_photo_text":"Write a review and add a photo or video to get a reward for your next purchase","coupon_promo_intro_external_with_video_text":"Write a review and add a video to get a reward for your next purchase","coupon_promo_media_photo_text":"Add a photo or video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_photo_only_text":"Add a photo and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_video_text":"Add a video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_external_photo_text":"Add a photo or video and get a reward for your next purchase","coupon_promo_media_external_photo_only_text":"Add a photo and get a reward for your next purchase","coupon_promo_media_external_video_text":"Add a video and get a reward for your next purchase","coupon_promo_success_text":"You've got a coupon for your next purchase at {{ shop_name }}!","coupon_promo_success_subtext":"You'll receive your coupon email within the hour.","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_other_languages_reviews_per_page":3,"widget_store_review_label_text":"Review about the store","widget_cart_mode_aggregate_heading_text":"Customers rate this store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":true,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":true,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":true,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural"
250:"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","review_widget_filter_rating_title":"Rating","review_widget_filter_keyword_title":"Keyword","review_widget_clear_filters_text":"Clear filters","review_widget_expand_more_text":"More","review_widget_review_highlights_title":"Review highlights","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"We’ll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","all_reviews_widget_v2025_review_highlights_title":"Review highlights","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_card_grouping":"per_media","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"trust_badge_enabled":false,"trust_badge_structure":"outline","trust_badge_color":"black","trust_badge_star":"black","trust_badge_rating_display_default":"show_avg_text","platform":"shopify","branding_url":"https://app.judge.me/reviews/stores/venturi-belt-co.myshopify.com","branding_text":"Powered by Judge.me","locale":"en","reply_name":"VENTURi Belt Co.","shop_currency":"USD","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_use_review_site":true,"shop_locale":"en","enable_multi_locales_translations":false,"show_review_title_input":true,"autofill_review_title":true,"review_verification_email_status":"always","require_verification_before_submit":false,"sign_in_with_
250shop_enabled":false,"customer_account_validation_enabled":true,"most_relevant_sort_enabled":false,"coupon_promo_invited_eligible":true,"coupon_promo_web_eligible":false,"uses_coupon_integration":false,"uses_external_coupon":false,"can_be_branded":true,"rtl_stars_enabled_ar":true,"rtl_stars_enabled_he":true,"reply_name_text":"VENTURi Belt Co."};</script>
250 <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #108474;--jdgm-secondary-color: rgba(16,132,116,0.1);--jdgm-star-color: #108474;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #108474;--jdgm-paginate-color: #108474;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #108474}.jdgm-histogram__bar-content{background-color:#108474}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#108474}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget{--jdgm-snippet-card-color: #fff;--jdgm-snippet-text-color: #000;--jdgm-snippet-lighter-text-color: #7B7B7B;--jdgm-snippet-star-color: #108474;--jdgm-snippet-border-radius: 8px;--jdgm-snippet-arrows-bg-color: #fff;--jdgm-snippet-arrows-color: #000}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'VENTURi Belt Co.'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )}
251</style> <style class='jdgm-settings-style'></style>
252
253  
254  
255  
256  <style class='jdgm-miracle-styles'>
257  @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK
257/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-prev-badge{display:block !important}
258
259</style>
260
261
262  
263  
264   
265
266
267<script data-cfasync='false' class='jdgm-script'>
268!function(e){window.jdgm=window.jdgm||{},jdgm.CDN_HOST="https://cdn.judge.me/",
269jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)?
270setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,s){
271!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d),
272(s=e.createElement("link")).rel="stylesheet",s.class="jdgm-stylesheet",s.media="nope!",
273s.href=d,s.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(s))},
274jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest;
275t.onreadystatechange=function(){4===t.readyState&&(Function(t.response)(),d&&d(t.response))},
276t.open("GET",e),t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll(
277".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting?
278parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_HOST+"widget_v3/base.css"):
279jdgm.loadCSS(jdgm.CDN_HOST+"widget/base.css"):jdgm.loadCSS(jdgm.CDN_HOST+"shopify_v2.css"),
280jdgm.loadJS(jdgm.CDN_HOST+"loader.js"))}))}(document);
281</script>
281
282
283<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.judge.me/shopify_v2.css"></noscript>
284<!-- End of Judge.me Core -->
285
286
287<meta property="og:image" content="https://cdn.shopify.com/s/files/1/1676/5131/files/Venturi-Logo-Final_dec14a8e-d5e2-41e3-affc-f99ca0a7a0cc.png?height=628&pad_color=fff&v=1613646310&width=1200" />
288<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/1676/5131/files/Venturi-Logo-Final_dec14a8e-d5e2-41e3-affc-f99ca0a7a0cc.png?height=628&pad_color=fff&v=1613646310&width=1200" />
289<meta property="og:image:width" content="1200" />
290<meta property="og:image:height" content="628" />
291<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
292<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: 16765131,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};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 292
292
293<script>
294  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
295</script>
vendor: 1 bytes, line 295
295
296<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}
296).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: 16765131,storefrontBaseUrl: "https://venturi-belt-co.myshopify.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://venturi-belt-co.myshopify.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab"],webPixelsConfigList: [{"id":"1521418317","configuration":"{\"accountID\":\"Wqn9Mc\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":[]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"786268237","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
296,"dataSharingState":"unrestricted"},{"id":"318767181","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-D3YEK1FTQ8\\\",\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/7IpMCIrZ1-8CEJi618oC\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/-SCSCIfZ1-8CEJi618oC\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/uR-VCIHZ1-8CEJi618oC\\\",\\\"MC-ZQHKK5P2DY\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/BFCQCP7Y1-8CEJi618oC\\\",\\\"MC-ZQHKK5P2DY\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/nHT0CPvY1-8CEJi618oC\\\",\\\"MC-ZQHKK5P2DY\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/EzARCI3Z1-8CEJi618oC\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-D3YEK1FTQ8\\\",\\\"AW-693493016\\\/mmvUCITZ1-8CEJi618oC\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"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":"106463309","configuration":"{\"pixel_id\":\"1888282024752711\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","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":"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":"VENTURi Belt Co.","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"venturi-belt-co.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/venturi-belt-co.myshopify.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://venturi-belt-co.myshopify.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"120412536909","themeStoreId":"601","themePublished":"true","eventMetadataId":"5f200ab0-e869-4e77-bd22-745c9e54081d","pageType":"cart","shopId":"16765131","storefrontBaseUrl":"https:\/\/venturi-belt-co.myshopify.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
296<script>
297  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
298  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
299  window.ShopifyAnalytics.meta.currency = 'USD';
300  var meta = {"page":{"pageType":"cart","requestId":"75161882-5ad5-47db-a7b8-ff1828fecb05-1791580777"}};
301  for (var attr in meta) {
302    window.ShopifyAnalytics.meta[attr] = meta[attr];
303  }
304</script>
vendor: 1 bytes, line 304
304
305<script class="analytics">
306  (function () {
307    var customDocumentWrite = function(content) {
308      var jquery = null;
309
310      if (window.jQuery) {
311        jquery = window.jQuery;
312      } else if (window.Checkout && window.Checkout.$) {
313        jquery = window.Checkout.$;
314      }
315
316      if (jquery) {
317        jquery('body').append(content);
318      }
319    };
320
321    var hasLoggedConversion = function(token) {
322      if (token) {
323        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
324      }
325      return false;
326    }
327
328    var setCookieIfConversion = function(token) {
329      if (token) {
330        var twoMonthsFromNow = new Date(Date.now());
331        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
332
333        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
334      }
335    }
336
337    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
338    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
339    if (trekkie.integrations) {
340      return;
341    }
342    trekkie.methods = [
343      'identify',
344      'page',
345      'ready',
346      'track',
347      'trackForm',
348      'trackLink'
349    ];
350    trekkie.factory = function(method) {
351      return function() {
352        var args = Array.prototype.slice.call(arguments);
353        args.unshift(method);
354        trekkie.push(args);
355        if (method == 'track' || method == 'page') {
356          var pageUrl;
357          try {
358            pageUrl = window.location.href;
359          } catch (e) {}
360          var pageReferrer;
361          try {
362            pageReferrer = document.referrer;
363          } catch (e) {}
364          try {
365            if (window.__TREKKIE_SHIM_QUEUE == null) {
366              window.__TREKKIE_SHIM_QUEUE = [];
367            }
368            window.__TREKKIE_SHIM_QUEUE.push({
369              from: 'trekkie-stub',
370              method: method,
371              args: args.slice(1),
372              pageContext: {
373                url: pageUrl,
374                referrer: pageReferrer
375              }
376            });
377          } catch (e) {
378            // no-op
379          }
380        }
381        return trekkie;
382      };
383    };
384    for (var i = 0; i < trekkie.methods.length; i++) {
385      var key = trekkie.methods[i];
386      trekkie[key] = trekkie.factory(key);
387    }
388    trekkie.load = function(config) {
389      trekkie.config = config || {};
390      trekkie.config.initialDocumentCookie = document.cookie;
391      var first = document.getElementsByTagName('script')[0];
392var script = document.createElement('script');
393script.type = 'text/javascript';
394script.onerror = function(e) {
395  var scriptFallback = document.createElement('script');
396  scriptFallback.type = 'text/javascript';
397  scriptFallback.onerror = function(error) {
398          var Monorail = {
399      produce: function produce(monorailDomain, schemaId, payload) {
400        var currentMs = new Date().getTime();
401        var event = {
402          schema_id: schemaId,
403          payload: payload,
404          metadata: {
405            event_created_at_ms: currentMs,
406            event_sent_at_ms: currentMs
407          }
408        };
409        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
410      },
411      sendRequest: function sendRequest(endpointUrl, payload) {
412        // Try the sendBeacon API
413        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
414          var blobData = new window.Blob([payload], {
415            type: 'text/plain'
416          });
417
418          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
419            return true;
420          } // sendBeacon was not successful
421
422        } // XHR beacon
423
424        var xhr = new XMLHttpRequest();
425
426        try {
427          xhr.open('POST', endpointUrl);
428          xhr.setRequestHeader('Content-Type', 'text/plain');
429          xhr.send(payload);
430        } catch (e) {
431          console.log(e);
432        }
433
434        return false;
435      },
436      isIos12: function isIos12() {
437        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
438      }
439    };
440    Monorail.produce('monorail-edge.shopifysvc.com',
441      'trekkie_storefront_load_errors/1.1',
442      {shop_id: 16765131,
443      theme_id: 120412536909,
444      app_name: "storefront",
445      context_url: window.location.href,
446      source_url: "//venturi-belt-co.myshopify.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"});
447
448  };
449  scriptFallback.async = true;
450  scriptFallback.src = '//venturi-belt-co.myshopify.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js';
451  first.parentNode.insertBefore(scriptFallback, first);
452};
453script.async = true;
454script.src = '//venturi-belt-co.myshopify.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js';
455first.parentNode.insertBefore(script, first);
456
457    };
458    trekkie.load(
459      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":16765131,"isMerchantRequest":null,"themeId":120412536909,"themeCityHash":"385626638857856155","contentLanguage":"en","currency":"USD","eventMetadataId":"5f200ab0-e869-4e77-bd22-745c9e54081d"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
460    );
461
462    var loaded = false;
463    trekkie.ready(function() {
464      if (loaded) return;
465      loaded = true;
466
467      window.ShopifyAnalytics.lib = window.trekkie;
468
469      var originalDocumentWrite = document.write;
470      document.write = customDocumentWrite;
471      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
472      document.write = originalDocumentWrite;
473
474      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
475      var token = match? match[1]: undefined;
476      if (!hasLoggedConversion(token)) {
477        setCookieIfConversion(token);
478        
479      }
480    });
481
482    window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"75161882-5ad5-47db-a7b8-ff1828fecb05-1791580777","shopifyEmitted":true});
483
484    var eventsListenerScript = document.createElement('script');
485    eventsListenerScript.async = true;
486    eventsListenerScript.src = "//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
487    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
488})();</script>
488
489  
489<script>
490  if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
491    window.ga = function ga() {
492      (window.ga.q = window.ga.q || []).push(arguments);
493      if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
494        window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
495      }
496      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.");
497    };
498    if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
499      window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
500    }
501  }
502</script>
vendor: 1 bytes, line 502
502
503<script
504  defer
505  src="https://venturi-belt-co.myshopify.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.1.min.js"
506  data-application="storefront-renderer"
507  data-shop-id="16765131"
508  data-render-region="gcp-us-central1"
509  data-page-type="cart"
510  data-theme-instance-id="120412536909"
511  data-theme-name="Retina"
512  data-theme-version="4.0.1"
513  data-monorail-region="shop_domain"
514  data-resource-timing-sampling-rate="10"
515  data-shs="true"
516  data-shs-beacon="true"
517  data-shs-export-with-fetch="true"
518  data-shs-logs-sample-rate="1"
519  data-shs-beacon-endpoint="https://venturi-belt-co.myshopify.com/api/collect"
520></script>
520
521<meta name="shopify-y" content="2b25d32d-869f-456f-a21b-0bbc9bd498f6" data-expiration="1823138377000"><meta name="shopify-s" content="f475ecc8-197e-42f1-a7ac-14ea56192e19" data-expiration="1791582577000">
522</head>
523  
524  <body class="cart ">
525    <div id="content_wrapper">
526<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 526-527
526
527<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
527GTM-MN57ZSX
vendor: 83 bytes, lines 527-528
527"
528height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
529<!-- End Google Tag Manager (noscript) -->
530      <div id="shopify-section-header" class="shopify-section header-section"><div id="header" class="mm-fixed-top Fixed mobile-header" data-search-enabled="true">
531  <a href="#nav" class="icon-menu"> <span>Menu</span></a>
532  <a href="#cart" class="icon-cart right"> <span>Cart</span></a>
533
534  <div class="formobileonly">
535    
536    <div class="promo_banner">
537      
538      <a href="https://www.venturibelt.com/collections/4-combo-collection?ose=false">
539        <p>FREE SHIPPING ON ALL USA ORDERS OVER $50!</p>
540      </a>
541      
542    </div>
543    
544  </div>
545</div>
546
547<div class="hidden">
548  <div id="nav">
549    <ul>
550      
551        
552          <li ><a href="/">Home</a></li>
553        
554      
555        
556          <li ><span>NEW ReLeases</span>
557            <ul>
558              
559                
560                  <li ><a href="/collections/black-belt-collection">Black Belt Collection</a></li>
561                
562              
563                
564                  <li ><a href="/collections/blue-belt-collection">Blue Belt Collection</a></li>
565                
566              
567                
568                  <li ><a href="/collections/brown-belt-collection">Brown Belt Collection</a></li>
569                
570              
571                
572                  <li ><a href="/collections/gray-belt-collection">Gray Belt Collection</a></li>
573                
574              
575                
576                  <li ><a href="/collections/webbing-belt-collection">Webbing Belt Collection</a></li>
577                
578              
579            </ul>
580          </li>
581        
582      
583        
584          <li ><span>Shop</span>
585            <ul>
586              
587                
588                  <li ><a href="/pages/new-style-venturi">1 VENTURi Belt </a></li>
589                
590              
591                
592                  <li ><a href="/collections/4-combo-collection">2 Belt Combo</a></li>
593                
594              
595                
596                  <li ><a href="/collections/webbing-belt-collection">Webbing Belt (NEW)</a></li>
597                
598              
599                
600                  <li ><a href="/collections/venturi-buckles">Buckles</a></li>
601                
602              
603                
604                  <li ><a href="/collections/classic-venturi-belt">Classic VENTURi Belt </a></li>
605                
606              
607                
608                  <li ><a href="/collections/kids-belt">Kids Belts</a></li>
609                
610              
611                
612                  <li ><a href="/collections/all">Shop All Products</a></li>
613                
614              
615                
616                  <li ><a href="/products/venturi-belt-gift-cards">Gift Cards</a></li>
617                
618              
619            </ul>
620          </li>
621        
622      
623        
624          <li ><a href="/pages/gallery">Gallery</a></li>
625        
626      
627        
628          <li ><a href="/pages/how-to">- How To VENTURi -</a></li>
629        
630      
631        
632          <li ><a href="http://www.venturibelt.com/apps/help-center">FAQs -</a></li>
633        
634      
635      
636        
637          <li>
638            <a href="https://venturi-belt-co.myshopify.com/customer_authentication/redirect?locale=en&amp;region_country=US" id="customer_login_link">My Account</a>
639          </li>
640        
641      
642      
643        <li class="currencies">
644          <select id="currencies" class="currencies" name="currencies">
645  
646  
647  <option value="USD" selected="selected">USD</option>
648  
649    
650  
651    
652    <option value="CAD">CAD</option>
653    
654  
655    
656    <option value="INR">INR</option>
657    
658  
659    
660    <option value="GBP">GBP</option>
661    
662  
663    
664    <option value="AUD">AUD</option>
665    
666  
667    
668    <option value="EUR">EUR</option>
669    
670  
671    
672    <option value="JPY">JPY</option>
673    
674  
675</select>
676        </li>
677            
678    </ul>
679  </div>
680
681  <form action="/checkout" method="post" id="cart">
682    <ul data-money-format="${{amount}}" data-shop-currency="USD" data-shop-name="VENTURi Belt Co.">
683      <li class="mm-subtitle"><a class="mm-subclose continue" href="#cart">Continue Shopping</a></li>
684
685      
686        <li class="mm-label empty_cart"><a href="/cart">Your Cart is Empty</a></li>
687      
688    </ul>
689  </form>
690</div>
691
692
693<div class="header default-header mm-fixed-top Fixed behind-menu--false header_bar js-no-change">
694  
695    <div class="promo_banner">
696      
697        <a href="https://www.venturibelt.com/collections/4-combo-collection?ose=false">
698          <p>FREE SHIPPING ON ALL USA ORDERS OVER $50!</p>
699        </a>
700      
701    </div>
702  
703
704  <div class="container">
705    <div class="four columns logo ">
706      <a href="https://venturi-belt-co.myshopify.com" title="VENTURi Belt Co.">
707        
708          <img src="//venturi-belt-co.myshopify.com/cdn/shop/files/[email protected]?v=1614968102" alt="VENTURi Belt Co." class="primary_logo" />
709
710          
711        
712      </a>
713    </div>
714
715    <div class="twelve columns nav mobile_hidden">
716      <ul class="menu">
717        
718          
719            <li><a href="/" class="top-link ">Home</a></li>
720          
721        
722          
723
724            
725            
726            
727            
728
729            <li><a href="/pages/new-style-venturi" class="sub-menu  ">NEW ReLeases
730              <span class="arrow">▾</span></a>
731              <div class="dropdown ">
732                <ul>
733                  
734                  
735                  
736                    
737                    <li><a href="/collections/black-belt-collection">Black Belt Collection</a></li>
738                    
739
740                    
741                  
742                    
743                    <li><a href="/collections/blue-belt-collection">Blue Belt Collection</a></li>
744                    
745
746                    
747                  
748                    
749                    <li><a href="/collections/brown-belt-collection">Brown Belt Collection</a></li>
750                    
751
752                    
753                  
754                    
755                    <li><a href="/collections/gray-belt-collection">Gray Belt Collection</a></li>
756                    
757
758                    
759                  
760                    
761                    <li><a href="/collections/webbing-belt-collection">Webbing Belt Collection</a></li>
762                    
763
764                    
765                  
766                </ul>
767              </div>
768            </li>
769          
770        
771          
772
773            
774            
775            
776            
777
778            <li><a href="/" class="sub-menu  ">Shop
779              <span class="arrow">▾</span></a>
780              <div class="dropdown ">
781                <ul>
782                  
783                  
784                  
785                    
786                    <li><a href="/pages/new-style-venturi">1 VENTURi Belt </a></li>
787                    
788
789                    
790                  
791                    
792                    <li><a href="/collections/4-combo-collection">2 Belt Combo</a></li>
793                    
794
795                    
796                  
797                    
798                    <li><a href="/collections/webbing-belt-collection">Webbing Belt (NEW)</a></li>
799                    
800
801                    
802                  
803                    
804                    <li><a href="/collections/venturi-buckles">Buckles</a></li>
805                    
806
807                    
808                  
809                    
810                    <li><a href="/collections/classic-venturi-belt">Classic VENTURi Belt </a></li>
811                    
812
813                    
814                  
815                    
816                    <li><a href="/collections/kids-belt">Kids Belts</a></li>
817                    
818
819                    
820                  
821                    
822                    <li><a href="/collections/all">Shop All Products</a></li>
823                    
824
825                    
826                  
827                    
828                    <li><a href="/products/venturi-belt-gift-cards">Gift Cards</a></li>
829                    
830
831                    
832                  
833                </ul>
834              </div>
835            </li>
836          
837        
838          
839            <li><a href="/pages/gallery" class="top-link ">Gallery</a></li>
840          
841        
842          
843            <li><a href="/pages/how-to" class="top-link ">- How To VENTURi -</a></li>
844          
845        
846          
847            <li><a href="http://www.venturibelt.com/apps/help-center" class="top-link ">FAQs -</a></li>
848          
849        
850
851        
852          <span class="js-social-icons">
853            
854  <li class="twitter"><a href="https://twitter.com/VenturiBeltCo" title="VENTURi Belt Co. on Twitter" rel="me" target="_blank"><span class="icon-twitter"></span></a></li>
855
856
857
858  <li class="facebook"><a href="https://www.facebook.com/Venturibeltco" title="VENTURi Belt Co. on Facebook" rel="me" target="_blank"><span class="icon-facebook"></span></a></li>
859
860
861
862
863
864  <li class="youtube"><a href="https://www.youtube.com/watch?v=w-s0R2dkYbQ" title="VENTURi Belt Co. on YouTube" rel="me" target="_blank"><span class="icon-youtube"></span></a></li>
865
866
867
868
869
870
871
872
873
874
875
876  <li class="instagram"><a href="https://www.instagram.com/venturibeltco/?hl=en" title="VENTURi Belt Co. on Instagram" rel="me" target="_blank"><span class="icon-instagram"></span></a></li>
877
878
879
880
881
882
883
884  <li class="email"><a href="mailto:[email protected]" title="Email VENTURi Belt Co." rel="me" target="_blank"><span class="icon-email"></span></a></li>
885
886
887          </span>
888        
889
890        
891          <li>
892            <a href="/account" title="My Account " class="icon-account"></a>
893          </li>
894        
895        
896          <li>
897            <a href="/search" title="Search" class="icon-search" id="search-toggle"></a>
898          </li>
899        
900        
901          <li>
902            <select id="currencies" class="currencies" name="currencies">
903  
904  
905  <option value="USD" selected="selected">USD</option>
906  
907    
908  
909    
910    <option value="CAD">CAD</option>
911    
912  
913    
914    <option value="INR">INR</option>
915    
916  
917    
918    <option value="GBP">GBP</option>
919    
920  
921    
922    <option value="AUD">AUD</option>
923    
924  
925    
926    <option value="EUR">EUR</option>
927    
928  
929    
930    <option value="JPY">JPY</option>
931    
932  
933</select>
934          </li>
935        
936        <li>
937          <a href="#cart" class="icon-cart cart-button"> <span>Cart</span></a>
938        </li>
939      </ul>
940    </div>
941  </div>
942</div>
943
944
945
946<div class="container mobile_logo">
947  <div class="logo">
948    <a href="https://venturi-belt-co.myshopify.com" title="VENTURi Belt Co.">
949      
950        <img src="//venturi-belt-co.myshopify.com/cdn/shop/files/[email protected]?v=1614968102" alt="VENTURi Belt Co." />
951      
952    </a>
953  </div>
954</div>
955
956<style>
957  div.formobileonly
958  {
959    position:relative;
960    top:40px;
961    display:none;
962    margin:0 -50px;
963  }
964  
965  div.content.container {
966    padding: 120px 0px 0px 0px;
967  }
968
969  
970    div.content {
971      padding: 120px 0px 0px 0px;
972    }
973  
974
975  @media only screen and (max-width: 767px) {
976    div.content.container, div.content {
977      padding-top: 5px;
978    }
979    div.formobileonly
980    {
981      display:block;
982    }
983  }
984
985  .logo a {
986    display: block;
987    padding-top: 0px;
988    max-width: 250px;
989  }
990
991  
992    .nav ul.menu { padding-top: 0px; }
993  
994
995  
996
997</style>
998
999
1000</div>
1001
1002      <div class="content container">
1003        
1004
1005<div id="shopify-section-cart-template" class="shopify-section cart
1005-section"><div class="sixteen columns clearfix collection_nav">
1006  <h1 class="collection_title">Shopping Cart</h1>
1007
1008  
1009</div>
1010
1011
1012  <div class="sixteen columns">
1013    <div class="section clearfix">
1014      <p class="quote">There are no items in your cart. <a href="/collections/all">Continue Shopping &rarr;</a></p>
1015      <br class="clear" />
1016
1017      
1018      
1019      
1020      
1021
1022
1023
1024
1025
1026
1027
1028<div itemtype="http://schema.org/ItemList" class="products">
1029  
1030</div>
1031    </div>
1032  </div>
1033
1034
1035
1036</div>
1037
1038      </div>
1039
1040      
1041      <div id="shopify-section-footer" class="shopify-section footer-section"><div class="sub-footer">
1042  <div class="container">
1043    
1044      
1045        <div class="four columns">
1046          <h6 class="title">News &amp; Updates</h6>
1047          <p>Sign up to get the latest on sales, new releases and more …</p>
1048          <div class="newsletter ">
1049  <p class="message"></p>
1050
1051  <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" />
1052    
1053
1054    
1055      <input type="hidden" name="contact[tags]" value="prospect,newsletter"/>
1056      
1057      
1058    
1059    <input type="email" class="contact_email" name="contact[email]" required placeholder="Enter your email address..." />
1060    <input type='submit' class="action_button sign_up" value="Sign Up" />
1061  </form>
1062</div>
1063
1064
1065          
1066        </div>
1067      
1068    
1069      
1070        <div class="four columns">
1071          
1072
1073          
1074            <p>YOUR NEW FAVORITE BELT</p>
1075          
1076
1077          
1078            <ul class="social_icons">
1079              
1080  <li class="twitter"><a href="https://twitter.com/VenturiBeltCo" title="VENTURi Belt Co. on Twitter" rel="me" target="_blank"><span class="icon-twitter"></span></a></li>
1081
1082
1083
1084  <li class="facebook"><a href="https://www.facebook.com/Venturibeltco" title="VENTURi Belt Co. on Facebook" rel="me" target="_blank"><span class="icon-facebook"></span></a></li>
1085
1086
1087
1088
1089
1090  <li class="youtube"><a href="https://www.youtube.com/watch?v=w-s0R2dkYbQ" title="VENTURi Belt Co. on YouTube" rel="me" target="_blank"><span class="icon-youtube"></span></a></li>
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102  <li class="instagram"><a href="https://www.instagram.com/venturibeltco/?hl=en" title="VENTURi Belt Co. on Instagram" rel="me" target="_blank"><span class="icon-instagram"></span></a></li>
1103
1104
1105
1106
1107
1108
1109
1110  <li class="email"><a href="mailto:[email protected]" title="Email VENTURi Belt Co." rel="me" target="_blank"><span class="icon-email"></span></a></li>
1111
1112
1113            </ul>
1114          
1115        </div>
1116      
1117    
1118      
1119        <div class="four columns">
1120          <h6 class="title">Venturi Belt Co.</h6>
1121          <ul class="footer_menu">
1122            
1123              <li><a href="/pages/gallery" title="Gallery">Gallery</a></li>
1124            
1125          </ul>
1126
1127          
1128        </div>
1129      
1130    
1131      
1132        <div class="four columns">
1133          <h6 class="title">Customer Service</h6>
1134          <ul class="footer_menu">
1135            
1136              <li><a href="/search" title="Search">Search</a></li>
1137            
1138              <li><a href="/pages/about-us" title="About Us">About Us</a></li>
1139            
1140              <li><a href="/pages/privacy-policy" title="Privacy Policy">Privacy Policy</a></li>
1141            
1142              <li><a href="/pages/refund-policy" title="Refund Policy">Refund Policy</a></li>
1143            
1144              <li><a href="/pages/terms-of-service" title="Terms of Service">Terms of Service</a></li>
1145            
1146          </ul>
1147
1148          
1149        </div>
1150      
1151    
1152  </div>
1153</div>
1154
1155<div class="footer">
1156  <div class="container">
1157    <div class="sixteen columns">
1158      <p class="credits">
1159        &copy; 2026 <a href="/" title="">VENTURi Belt Co.</a>.
1160        
1161        
1162        <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore">Powered by Shopify</a>
1163      </p>
1164      
1165        <div class="payment_methods">
1166          
1167            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/american_express-2bdbf0e2.svg" alt="American express" />
1168          
1169            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/apple_pay-1721ebad.svg" alt="Apple pay" />
1170          
1171            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/diners_club-678e3046.svg" alt="Diners club" />
1172          
1173            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/discover-59880595.svg" alt="Discover" />
1174          
1175            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/google_pay-34c30515.svg" alt="Google pay" />
1176          
1177            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/master-f5a74105.svg" alt="Master" />
1178          
1179            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/paypal-a7c68b85.svg" alt="Paypal" />
1180          
1181            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/shopify_pay-925ab76d.svg" alt="Shopify pay" />
1182          
1183            <img src="//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/payment_icons/visa-b614b878.svg" alt="Visa" />
1184          
1185        </div>
1186      
1187    </div>
1188  </div>
1189</div>
1190
1191
1192
1193
1194</div>
1195
1196      <div id="search">
1197        <div class="container">
1198          <div class="ten columns offset-by-three center">
1199            <div class="right search-close">
1200              <span class="icon-close"></span>
1201            </div>
1202            <form action="/search">
1203              
1204                <input type="hidden" name="type" value="product" />
1205              
1206              <span class="icon-search search-submit"></span>
1207              <input type="text" name="q" placeholder="Search VENTURi Belt Co...." value="" autocapitalize="off" autocomplete="off" autocorrect="off" />
1208            </form>
1209          </div>
1210        </div>
1211      </div>
1212    </div>
1213    
1214
1215    
1216
1217    
1218
1219<script src="/services/javascripts/currencies.js" type="text/javascript"></script>
vendor: 1 bytes, line 1219
1219
1220<script src="//venturi-belt-co.myshopify.com/cdn/shop/t/20/assets/jquery.currencies.min.js?v=165048700939037185011626271788" type="text/javascript"></script>
1220
1221
1222<script>
1223
1224
1225  Currency.format = 'money_with_currency_format';
1226
1227
1228var shopCurrency = 'USD';
1229
1230/* Sometimes merchants change their shop currency, let's tell our JavaScript file */
1231Currency.money_with_currency_format[shopCurrency] = "${{amount}} USD";
1232Currency.money_format[shopCurrency] = "${{amount}}";
1233  
1234/* Default currency */
1235var defaultCurrency = 'USD' || shopCurrency;
1236  
1237/* Cookie currency */
1238var cookieCurrency = Currency.cookie.read();
1239
1240/* Fix for customer account pages */
1241jQuery('span.money span.money').each(function() {
1242  jQuery(this).parents('span.money').removeClass('money');
1243});
1244
1245/* Saving the current price */
1246jQuery('span.money').each(function() {
1247  jQuery(this).attr('data-currency-USD', jQuery(this).html());
1248});
1249
1250// If there's no cookie.
1251if (cookieCurrency == null) {
1252  if (shopCurrency !== defaultCurrency) {
1253    Currency.convertAll(shopCurrency, defaultCurrency);
1254  }
1255  else {
1256    Currency.currentCurrency = defaultCurrency;
1257  }
1258}
1259// If the cookie value does not correspond to any value in the currency dropdown.
1260else if (jQuery('[name=currencies]').size() && jQuery('[name=currencies] option[value=' + cookieCurrency + ']').size() === 0) {
1261  Currency.currentCurrency = shopCurrency;
1262  Currency.cookie.write(shopCurrency);
1263}
1264else if (cookieCurrency === shopCurrency) {
1265  Currency.currentCurrency = shopCurrency;
1266}
1267else {
1268  Currency.convertAll(shopCurrency, cookieCurrency);
1269}
1270
1271jQuery('[name=currencies]').val(Currency.currentCurrency).change(function() {
1272  var newCurrency = jQuery(this).val();
1273  Currency.convertAll(Currency.currentCurrency, newCurrency);
1274  jQuery('[name=currencies]').val(newCurrency);
1275  jQuery('.selected-currency').text(Currency.currentCurrency);
1276});
1277
1278var original_selectCallback = window.selectCallback;
1279var selectCallback = function(variant, selector) {
1280  original_selectCallback(variant, selector);
1281  Currency.convertAll(shopCurrency, jQuery('[name=currencies]').val());
1282  jQuery('.selected-currency').text(Currency.currentCurrency);
1283};
1284
1285jQuery('.selected-currency').text(Currency.currentCurrency);
1286
1287</script>
1287
1288
1289
1290    
1291    </div>
1292  
1293<!-- spurit_uev-added -->
1294<!-- "snippets/spurit_uev-theme-snippet.liquid" was not rendered, the associated app was uninstalled -->
1295<!-- /spurit_uev-added -->
1296
1297<!-- BEEKETINGSCRIPT CODE START --><!-- BEEKETINGSCRIPT CODE END -->
1298<!-- spurit_sct-added -->
1299<script>
1300    var SCTParams = {
1301        "id" : "1cf40a3d66f4f82d8a42ba891d500cb5",
1302        "apiScript" : "//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/themes_support/api.jquery-7ab1a3a4.js",
1303        "product" : null,
1304        "collection": null,
1305        "template": "cart",
1306      	"page": null
1307    }
1308</script>
1308
1309<!-- /spurit_sct-added -->
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348<style>.ocu-hidden.ocu-hidden.ocu-hidden,.bold_hidden.bold_hidden.bold_hidden{display:none !important}</style>
1349<script>
1350!function(){
1351if (window.performance) {
1352    const navEntries = window.performance.getEntriesByType && window.performance.getEntriesByType('navigation');
1353    if (navEntries && navEntries.length > 0 && navEntries[0].type === 'back_forward') {
1354      location.reload();
1355    } else if (window.performance.navigation && window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD) {
1356      location.reload();
1357    }
1358}
1359
1360!function(){var e=[];window.Promise||e.push("Promise"),window.URLSearchParams||e.push("URL"),Element.prototype.closest||e.push("Element.prototype.closest"),Array.from||e.push("Array.from"),Object.assign||e.push("Object.assign");try{new Event("event")}catch(t){e.push("Event")}try{Symbol}catch(t){e.push("Symbol")}if(e.length){var t=document.createElement("script");t.src="https://polyfill-fastly.net/v3/polyfill.min.js?features="+e.join(",")+"&flags=gated",t.async=!0,document.head.appendChild(t)}Object.setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e}}();
1361
1362var ajax,utils={store:Object.freeze(new Store),cookie:{options:{expires:86400,path:"/",encodeValue:!1},get:function(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0},set:function(e,t,n){var i=(n=n||this.options).expires;if("number"==typeof i&&i){var r=new Date;r.setTime(r.getTime()+1e3*i),i=n.expires=r}i&&i.toUTCString&&(n.expires=i.toUTCString());var o=e+"="+(t=encodeURIComponent(t));for(var s in n){o+="; "+s;var a=n[s];!0!==a&&(o+="="+a)}document.cookie=o},remove:function(e){this.set(e,null,{expires:-1})}},queryParams:function(e){var t={};return e.replace("?","").split("&").forEach(function(e){var n=e.split("=")[0],i=e.split("=")[1];t[n]=decodeURIComponent(i)}),t},shareableDiscount:function(e){e=e||{};var t=utils.queryParams(location.search)[e.key||"discount"];t&&(utils.cookie.set(e.name||"ocu-share-discount",t,utils.cookie.options),!e.clear||history.pushState(null,null,location.href.replace(/\?.+/,"")))},serializeForm:function(e){return new URLSearchParams(new FormData(e).fd || new FormData(e)).toString()},serializeFormEdge:function(e){var t,n=[];if("object"==typeof e&&"FORM"==e.nodeName){var r=e.elements.length;for(i=0;i<r;i++)if((t=e.elements[i]).name&&!t.disabled&&"file"!=t.type&&"reset"!=t.type&&"submit"!=t.type&&"button"!=t.type)if("select-multiple"==t.type)for(j=e.elements[i].options.length-1;j>=0;j--)t.options[j].selected&&(n[n.length]=encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[j].value));else("checkbox"!=t.type&&"radio"!=t.type||t.checked)&&(n[n.length]=encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}return n.join("&").replace(/%20/g,"+")},serialize:function(e,t,n,i){if(this.helpers.isFormData(t)&&(i=n,n=t,t=null),(t=t||{}).indices=t.indices||!1,n=n||new URLSearchParams,this.helpers.isUndefined(e))return n;if(this.helpers.isNull(e))n.append(i,"");else if(this.helpers.isArray(e))if(e.length)e.forEach(function(e,r){var o="object"==typeof e,s=i+"["+(t.indices&&o?r:"")+"]";this.serialize(e,t,n,s)}.bind(this));else{var r=i+"[]";n.append(r,"")}else this.helpers.isDate(e)?n.append(i,e.toISOString()):!this.helpers.isObject(e)||this.helpers.isFile(e)||this.helpers.isBlob(e)?n.append(i,e):Object.keys(e).forEach(function(r){var o=e[r];if(this.helpers.isArray(o))for(;2<r.length&&r.lastIndexOf("[]")===r.length-2;)r=r.substring(0,r.length-2);var s=i?i+"["+r+"]":r;this.serialize(o,t,n,s)}.bind(this));return n},inArray:function(e,t,n){return e.some(function(e){return e[t]===n})},filterObject:function(e,t){return t.reduce(function(t,n){return t[n]=e[n],t},{})},helpers:{isUndefined:function(e){return void 0===e},isNull:function(e){return null===e},isObject:function(e){return e===Object(e)},isArray:function(e){return Array.isArray(e)},isDate:function(e){return e instanceof Date},isBlob:function(e){return e&&"number"==typeof e.size&&"string"==typeof e.type&&"function"==typeof e.slice},isFile:function(e){return this.isBlob(e)&&("object"==typeof e.lastModifiedDate||"number"==typeof e.lastModified)&&"string"==typeof e.name},isFormData:function(e){return e instanceof FormData}}};
1363
1364window.OCUIncart = {
1365    cart_items: [],
1366    cart_products_json: JSON.parse("[]"),
1367    cart_variants_json: [],
1368    incarts: null,
1369    subscription_tags: '',
1370    proxy_url: '',
1371    money_format: '${{amount}}',
1372    settings: null,
1373    option_selection: '//venturi-belt-co.myshopify.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js',
1374    is_precheckout: false,
1375
1376    get tags() {
1377        const tags = ;
1378        return tags && tags.pre_checkout.map(function(tag) { return tag.toLowerCase(); });
1379    },
1380
1381    get variants() {
1382        const variants = ;
1383        return variants && variants.pre_checkout;
1384    },
1385
1386    cartContainsPrecheckoutTriggers: function(collection, productTriggers, product) {
1387        var self = this;
1388        let triggers = '';
1389
1390        collection.forEach(function(trigger) {
1391          if (!~productTriggers.indexOf(trigger)) return;
1392
1393          var items = self.cart_items.filter(function(item) {
1394            return item.product_id === product.id;
1395          });
1396
1397          if (items[0]) {
1398            triggers += items[0].variant_id + ':' + trigger + ',';
1399          }
1400
1401          self.is_precheckout = true;
1402          return triggers
1403
1404        });
1405
1406        return triggers
1407    },
1408
1409    get triggers() {
1410        var self = this;
1411        var triggers = '';
1412
1413        self.cart_items.forEach(function(item) {
1414            var product_id = item.product_id;
1415
1416            self.cart_products_json.forEach(function(product) {
1417                const productVariants = product.variants && product.variants.map(function(variant) { return variant.id });
1418                const productTags = product.tags && product.tags.map(function(tag) { return tag.toLowerCase(); });
1419
1420                if (!productTags) return;
1421                if (!Array.isArray(self.tags) && !Array.isArray(self.variants)) return;
1422
1423              	triggers += self.cartContainsPrecheckoutTriggers(self.variants, productVariants, product);
1424              	triggers += self.cartContainsPrecheckoutTriggers(self.tags, productTags, product);
1425            })
1426        });
1427
1428        return triggers;
1429    }
1430};
1431
1432var lqd = {
1433    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},
1434    path: '' === 'true' ? 'd56719fefdd75e95ba06caea3d9a3732' : '5965fedc7708e03e1024db4bf2ed5fe6',
1435    template_name: 'cart',
1436    shop_currency: 'USD',
1437    upsellapp_tags: ,
1438    upsellapp_variants: ,
1439    skip_cart: false,
1440    cart_products_json: JSON.parse("[]"),
1441    cart_collections_json: [],
1442    cart_variants_json: [],
1443    customer_id: "",
1444    customer: { id: "", email: '' },
1445    proxy_url: '',
1446    permanent_domain: 'venturi-belt-co.myshopify.com',
1447    current_domain: 'venturi-belt-co.myshopify.com',
1448    disabled_by_subscription_app: false,
1449    subscription_app_enabled: false,
1450    subscription_products_json: '',
1451    subscription_variants_json: '',
1452    subscription_products_size: 0,
1453    integrate_with_recharge: '' === 'true',
1454    product: null,
1455    product_tags: [],
1456    amazon_pay: '' === 'true',
1457    themePopup: '' === 'true' || '' === 'true',
1458    themeSkipCart: 'ajax' === 'redirect_checkout'
1459        || '' === 'true'
1460        || '' === 'skip_cart',
1461
1462    get is_precheckout() {
1463        OCUIncart.triggers;
1464        return OCUIncart.is_precheckout || OCUIncart.subscription_tags;
1465    },
1466
1467    get precheckout_tags() {
1468        return this.upsellapp_tags.pre_checkout;
1469    },
1470
1471    get precheckout_variants() {
1472        return this.upsellapp_variants.pre_checkout;
1473    },
1474
1475    get postcheckout_tags() {
1476        return this.upsellapp_tags.post_checkout.map(function(tag) { return tag.toLowerCase(); });
1477    },
1478
1479    get postcheckout_variants() {
1480        return this.upsellapp_variants.post_checkout;
1481    },
1482
1483    get upsell_cart_include_subscription_upsells() {
1484        var self = this;
1485
1486        var hasSubscription = this.product_tags.reduce(function(acc, tag) {
1487            return acc || ~self.postcheckout_tags.indexOf(tag.toLowerCase());
1488        }, false);
1489
1490        return hasSubscription;
1491    },
1492
1493    get upsell_cart_include_upsells() {
1494        var self = this;
1495        var upsellapp_triggers = {
1496            pre_checkout: self.precheckout_tags.concat(self.precheckout_variants),
1497            post_checkout: self.postcheckout_tags.concat(self.postcheckout_variants)
1498        };
1499
1500        return self.upsell_cart_include_subscription_upsells || Object.keys(self.upsellapp_tags).reduce(function(acc, key) {
1501            if (acc) return acc;
1502
1503            if (!self.cart_products_json.length && self.template_name === 'product') {
1504                const productVariants = self.product.variants.map(function(variant) { return variant.id });
1505                const productTags = self.product.tags.map(function(tag) { return tag.toLowerCase(); });
1506
1507                if (!Array.isArray(self.upsellapp_tags[key])) return false;
1508
1509                return upsellapp_triggers[key].reduce(function(acc, trigger) {
1510                    if (acc) return acc;
1511
1512                    if (typeof trigger === 'number') return !!~productVariants.indexOf(trigger);
1513
1514                    return !!~productTags.indexOf(trigger.toLowerCase());
1515                }, false);
1516            }
1517
1518            return self.cart_products_json.reduce(function(acc, product) {
1519                if (acc || !Array.isArray(self.upsellapp_tags[key])) return acc;
1520
1521                const productVariants = product.variants.map(function(variant) { return variant.id });
1522                const productTags = product.tags.map(function(tag) { return tag.toLowerCase(); });
1523
1524                return upsellapp_triggers[key].reduce(function(acc, trigger) {
1525                    if (acc) return acc;
1526
1527                    if (typeof trigger === 'number') return !!~productVariants.indexOf(trigger);
1528
1529                    return !!~productTags.indexOf(trigger.toLowerCase());
1530                }, false)
1531            }, false);
1532        }, false);
1533    },
1534
1535    get incarts() {
1536        return null;
1537    },
1538    get is_ajax_precheckout() {
1539        var isIncarts = Object.keys(this.incarts).some(function(key) {
1540           return Object.keys(this.incarts[key]).length;
1541        }.bind(this));
1542
1543        if (!isIncarts) return;
1544
1545         var tags = utils.store.get('tags') || [];
1546         var isIncludes = Array.isArray(lqd.precheckout_tags) && lqd.precheckout_tags.some(function(tag) {
1547            return ~tags.indexOf(tag);
1548         });
1549
1550        return isIncludes;
1551    },
1552    get isThemePopupTag() {
1553        return this.product && this.product.tags.some(function(tag) {
1554            return /cross-sell-\d/.test(tag);
1555        });
1556    },
1557    get isSkipCartPage() {
1558        return /index|collection|product/.test(this.template_name);
1559    },
1560    get isSkipCartCondition() {
1561        return (this.skip_cart || this.themeSkipCart) && this.isSkipCartPage && !this.isThemePopupTag;
1562    }
1563};
1564
1565lqd.cart_products_json = lqd.cart_products_json.filter(function(item) {
1566    return item.handle && !item.error;
1567});
1568
1569utils.shareableDiscount({ clear:false });
1570
1571if (lqd.is_precheckout) requireOptionSelectors();
1572
1573var ocuCdn="https://cdn07.zipify.com";!function(){if("cart"===lqd.template_name&&lqd.upsell_cart_include_upsells){var e;e=utils.store.get("fallback").timeout,c=setTimeout(s.bind(null,!0),e),s(!1);var n="https://cdn09.zipify.com",o=document.createElement("script"),a=document.createElement("link"),c=null;0;var t=document.createElement("script");t.src="https://zipify-ocu.s3.amazonaws.com/ocu/production/assets/"+lqd.path+"/build_number.js?ts="+Date.now(),t.onload=function(){var e=window.OCU_assets_build_number,t=n+"/"+lqd.path+"/assets."+e+".js",c=document.createElement("script");document.head.appendChild(c),c.src=t,c.onload=function(e){var t=window.ocu_precheckout_assets;o.src=t["precheckout.js"],a.href=t["precheckout.css"],l(o,a)}},document.head.appendChild(t)}function l(e,t){e.onload=function(){s(!0),clearTimeout(c)},t.rel="stylesheet",document.head.appendChild(e),document.head.appendChild(t)}function s(t){var e=document.querySelectorAll(utils.store.get("ocuSelectors"));Array.prototype.forEach.call(e,function(e){e.disabled=!t})}}();
1574function Application() {
1575    ajax = axios.create({ timeout: 8000 });
1576    ajax.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
1577
1578    new PublicMethod();
1579    new SkipCart();
1580    new HistoryApi();
1581
1582    this.setAttributes();
1583}
1584
1585Application.prototype = {
1586    checkout: null,
1587    ocuSelectors: utils.store.get('ocuSelectors'),
1588    integrations: new Integrations(),
1589    helpers: new Helpers(),
1590    verify: new Verify(),
1591    cart: new Cart(),
1592
1593    setAttributes: function() {
1594        this.integrations.smar7();
1595        if (
1596            !lqd.upsell_cart_include_upsells
1597            && !this.helpers.isOfferProduct()
1598            && !lqd.integrate_with_recharge && !lqd.subscription_products_size
1599            && lqd.template_name === 'cart') return;
1600
1601        const forEach = Array.prototype.forEach;
1602        const checkoutButtons = document.querySelectorAll(this.ocuSelectors);
1603        const links = document.querySelectorAll('a'); // for ios
1604
1605        forEach.call(checkoutButtons, function(item) {
1606            item.dataset.ocuCheckout = true;
1607        });
1608
1609        setTimeout(function() {
1610            var checkoutBtn = document.querySelector('[data-ocu-checkout]');
1611            if (checkoutBtn) checkoutBtn.style.display = 'inline-block';
1612        });
1613
1614        forEach.call(checkoutButtons, function(item) {
1615            item.dataset.disableRecharge = true;
1616        });
1617
1618        forEach.call(links, function(link) {
1619            var isNeededHref = utils.store.get('permalink').test(link.href);
1620            if (isNeededHref) link.dataset.ocuCheckoutLink = true;
1621        });
1622
1623        // if (lqd.amazon_pay) {
1624        //     window.onAmazonLoginReady = this.integrations.amazonPay;
1625        //     if (window.onAmazonLoginReady && !utils.store.get('amazonPayInitiated')) this.integrations.amazonPay(this);
1626        // }
1627
1628        this.listenEvents();
1629    },
1630
1631    check: function(event, target) {
1632        event.preventDefault();
1633        event.stopPropagation();
1634
1635        var form = target.closest('[action="/cart"], [action="/checkout"]');
1636        if (form && !this.validate(form)) {
1637            clearTimeout(utils.store.get('fallback').id);
1638            utils.store.set('submitted', false);
1639            return form.reportValidity();
1640        }
1641        if (!utils.store.get('cartChanged')) return this.handle(target);
1642
1643        utils.store.listen('cartChanged').then(function() {this.handle(target)}.bind(this));
1644    },
1645
1646    handle: function(target) {
1647        this.integrations.discounts();
1648
1649        if (utils.store.get('checkoutButtonState')) return;
1650        // if (utils.store.get('submitted')) return; // TODO fix_ff_multi_requests_2384
1651        utils.store.set('checkoutButtonState', true);
1652
1653        this.helpers.payPal(target);
1654        this.verify.init(target);
1655    },
1656
1657    init: function(event, target) {
1658        var self = this;
1659
1660        if (lqd.template_name === 'cart' && utils.store.get('submitted')) {
1661            event.stopPropagation();
1662            return event.preventDefault();
1663        }
1664        utils.store.set('submitted', true);
1665
1666        this.fallbackRedirect();
1667
1668        if (window.RevyApp) this.handleMonkeyPatching();
1669
1670        if (!this.allowUpsells(target)) return;
1671
1672        if (lqd.template_name === 'product' && target.name === 'add' && !target.closest('form[action^="/cart/add"]')) {
1673            event.preventDefault();
1674            event.stopPropagation();
1675            const form = document.querySelector('form[action^="/cart/add"]');
1676            return form.submit();
1677        }
1678
1679        if ((utils.store.get('amazonPayInitiated') || lqd.is_precheckout) && !utils.cookie.get('ocu_shown_popup') && lqd.template_name === 'cart') {
1680            event.preventDefault();
1681            event.stopPropagation();
1682            if (utils.store.get('amazonPayInitiated')) return null;
1683
1684            const form = target.closest('[action="/cart"], [action="/checkout"]');
1685            if (form && !this.validate(form)) {
1686                clearTimeout(utils.store.get('fallback').id);
1687                utils.store.set('submitted', false);
1688                return form.reportValidity();
1689            }
1690
1691            const isRechargeEnabled = lqd.integrate_with_recharge && !lqd.disabled_by_subscription_app;
1692
1693            if (!window.OCUPrecheckout) return this.check(event, target);
1694
1695            const precheckoutConfig = {
1696                utils: utils,
1697                Updater: Updater,
1698                is_recharge_enabled: isRechargeEnabled
1699            };
1700
1701            return OCUPrecheckout(precheckoutConfig);
1702        }
1703
1704        if (target.dataset.customBuyNow) {
1705            event.preventDefault();
1706            event.stopPropagation();
1707
1708            var id = target.dataset.varientId;
1709            var qty = target.dataset.itemQuantity;
1710            var data = { id: id, quantity: qty };
1711            var handle = function() { self.checkout({ redirect:true }) };
1712            var onError = function() { alert('Network Error') };
1713
1714            this.cart.add(null, null, data).then(handle).catch(onError);
1715        }
1716
1717        var isIPhone = /iPhone/.test(navigator.userAgent);
1718        var isSmar7 = window.SMAR7 && SMAR7.bundle_app === 'yes';
1719        var smar7Modal = document.querySelector('.sm7-popup');
1720        var needSkipClick = (this.integrations.needSkipClick || isSmar7)
1721            && !lqd.integrate_with_recharge
1722            && (event.isTrusted || isIPhone);
1723
1724        if ((!event.isTrusted || isIPhone) && !smar7Modal) return this.check(event, target);
1725        if (needSkipClick && this.integrations.list.bold.productUpsell) {
1726            if (target.name === 'checkout') return this.check(event, target);
1727        }
1728        if (!needSkipClick && !isSmar7) return this.check(event, target);
1729        if (isSmar7 && (!event.isTrusted || isIPhone)) return;
1730
1731        if (smar7Modal) return this.integrations.smar7();
1732        else return this.check(event, target);
1733    },
1734
1735    validate: function(form) {
1736        var elems = form.querySelectorAll('[type="text"], [type="checkbox"], select, textarea');
1737
1738        var requiredElems = Array.prototype.filter.call(elems, function(el) {
1739            return el && el.required;
1740        });
1741
1742        if (!requiredElems.length) return true;
1743
1744        return !requiredElems.some(function(el) {
1745            return !el.checkValidity();
1746        });
1747    },
1748
1749    allowUpsells: function(el) {
1750        if (window.mixed_cart) return; //integration with Recurring Orders & Subscriptions by Bold
1751        if (window.popup_upsell && !document.querySelector('#upsellclosebtn')) return; // integration with Product Upsell
1752        if (window.ol_checkout_ok instanceof Function && !ol_checkout_ok()) return; // integration with OrderLogic
1753        if (el.dataset.zpaSubmitButton === '') return; // integration with ZipifyPages CRM popup
1754
1755        return true;
1756    },
1757
1758    fallbackRedirect: function() {
1759        var fallback = utils.store.get('fallback');
1760        fallback.id = setTimeout(function() { this.checkout({ redirect:true }) }.bind(this), fallback.timeout);
1761        utils.store.set('fallback', fallback);
1762    },
1763
1764    handleMonkeyPatching: function() {
1765        const send = utils.store.get('XHR').send;
1766
1767        if (XMLHttpRequest.prototype.send !== send) {
1768            XMLHttpRequest.prototype.send = send;
1769        }
1770    },
1771
1772    handleClick: function(e) {
1773        if (lqd.template_name === 'page' && !e.isTrusted) return;
1774
1775        if (e.target.name === 'update' || e.target.closest('[name="update"]')) return;
1776
1777        if (!lqd.amazon_pay && e.target.closest('form[action^="https://payments.amazon"]')) return;
1778
1779        if (this.helpers.zpPreventRedirect(e.target)) return;
1780
1781        if (this.helpers.isBuyNow(e)) return new BuyNow(e);
1782
1783        if (this.helpers.checkDirectCheckoutButtons(e.target)) {
1784            e.target.dataset.ocuCheckout = true;
1785            utils.store.set('redirect_url', '/checkout');
1786        }
1787
1788        if (e.target.dataset.ocuCheckoutLink || e.target.closest('[data-ocu-checkout-link]')) {
1789            e.preventDefault();
1790            var href = (e.target.dataset.ocuCheckoutLink ? e.target : e.target.closest('[data-ocu-checkout-link]')).href;
1791            if (utils.store.get('isPermalinkHandling')) return;
1792            utils.store.set('isPermalinkHandling', true);
1793            var result = this.integrations.handlePermalink(href, 'redirect');
1794            return result.promise.then(result.callback);
1795        }
1796
1797        if ((e.target.dataset.skipCart === 'true' || e.target.closest('[data-skip-cart]')) && utils.store.get('submitted')) {
1798            e.preventDefault();
1799            e.stopPropagation();
1800            e.stopImmediatePropagation();
1801            return;
1802        }
1803
1804        var target = this.helpers.checkSelector(e.target);
1805
1806        if (target) this.init(e, target);
1807    },
1808
1809    handleMousedown: function(e) {
1810        var self = this;
1811
1812        if (e.target.dataset.skipCart !== 'true' && !e.target.closest('[data-skip-cart]')) return;
1813
1814        if (e.target.name === 'update' || e.target.closest('[name="update"]')) return; // 283fa429
1815
1816        if (this.helpers.zpPreventRedirect(e.target)) return;
1817
1818        var amazonForm = e.target.closest('form[action^="https://payments.amazon"]');
1819        if (amazonForm && lqd.amazon_pay) {
1820            e.preventDefault();
1821            e.stopPropagation();
1822
1823            var path = {
1824                ocu: lqd.proxy_url + '/amazon/forward',
1825                shopify: amazonForm.querySelector('[name="redirectURL"]').value
1826            };
1827
1828            var handle = function() {
1829                self.checkout()
1830                    .then(function(res) { location = path[res.status ? 'ocu' : 'shopify'] })
1831                    .catch(function(res) { location = path.shopify })
1832            };
1833
1834            var onError = function(form) {
1835                form.submit();
1836            };
1837
1838            if (!e.target.closest('form[action="/cart/add"]')) return handle();
1839
1840            var cart = document.querySelector('form[action="/cart/add"]');
1841            var button = amazonForm.querySelector('[type="submit"]');
1842            return self.cart.add(cart, button, path).then(handle).catch(onError.bind(null, amazonForm));
1843        }
1844
1845        var form = e.target.closest('form[action="/cart/add"]') || document.querySelector('form[action="/cart/add"]');
1846        var button = e.target.dataset.skipCart === 'true' ? e.target : e.target.closest('[data-skip-cart]');
1847
1848        if (!form) return;
1849
1850        e.preventDefault();
1851        e.stopPropagation();
1852        utils.store.set('submitted', true);
1853
1854        var handle = function() { self.checkout({ redirect:true }) };
1855        var onError = function(form) { form.submit(); };
1856        return self.cart.add(form, button).then(handle).catch(onError.bind(null, form));
1857    },
1858
1859    listenEvents: function() {
1860        document.addEventListener('mousedown', this.integrations.amazonPay.bind(this), true);
1861        document.addEventListener('touchstart', this.handleClick.bind(this), true);
1862        document.addEventListener('click', this.handleClick.bind(this), true);
1863        window.addEventListener('pagehide', this.helpers.disableButtons);
1864        window.addEventListener('locationchange', function() {
1865            document.removeEventListener('click', this.handleClick.bind(this), true);
1866            document.addEventListener('click', this.handleClick.bind(this), true);
1867        }.bind(this));
1868
1869        window.addEventListener('pageshow', function(e) {
1870            if (e.persisted) location.reload();
1871            this.helpers.disableButtons();
1872        }.bind(this));
1873
1874        // if (lqd.template_name !== 'cart') return;
1875        // document.addEventListener('mousedown', this.cart.update.bind(this), true);
1876        // document.addEventListener('change', this.cart.state.bind(this));
1877    }
1878};
1879
1880function amazonPay(e) {
1881    const self = this;
1882    const amazonForm = e.target.closest('form[action^="https://payments.amazon"]');
1883
1884    if (!amazonForm || !lqd.amazon_pay) return;
1885
1886    e.preventDefault();
1887    e.stopPropagation();
1888
1889    utils.store.set('amazonPayInitiated', true);
1890
1891    const addForm = e.target.closest('form[action="/cart/add"]');
1892    const path = lqd.proxy_url + '/amazon/forward';
1893
1894    const getToken = function(url) {
1895        const escaped = lqd.proxy_url.replace(/\//g, '\\/');
1896        const reg = new RegExp(escaped + '\\/((?:\\w+[-_]?)+)\\/?');
1897        const match = reg.exec(url);
1898
1899        return match && match[1];
1900    };
1901
1902    const fallback = function() {
1903        amazonForm.submit();
1904    };
1905
1906    const onSuccess = function(res) {
1907        if (!res.status) return fallback();
1908
1909        const token = getToken(res.checkout_url);
1910        if (!token) return fallback();
1911
1912        utils.cookie.set('ocu_checkout_token', token);
1913        location.assign(path);
1914    };
1915
1916    if (!addForm) {
1917        return self.checkout().then(onSuccess).catch(fallback);
1918    }
1919
1920    const cart = document.querySelector('form[action="/cart/add"]');
1921    const button = amazonForm.querySelector('[type="submit"]');
1922
1923    self.cart.add(cart, button)
1924        .then(self.checkout)
1925        .then(onSuccess)
1926        .catch(fallback);
1927}
1928
1929function Bold() {
1930    this.isBoldRecuring = function() {
1931        var boldRecurringEl = document.querySelector('[data-bold-recurring]');
1932        var isBoldRecuring = boldRecurringEl && boldRecurringEl.checked;
1933        return isBoldRecuring;
1934    };
1935
1936    this.upsellPopup = function(target) {
1937        var modalButtons = [
1938            target.querySelector('[data-bold-component-id="upsell_continue"]'),
1939            target.querySelector('[data-bold-component-id="upsell_no_thanks"]'),
1940            target.querySelector('#bold-modal__btn-close')
1941        ];
1942
1943        modalButtons.forEach(function(item) {
1944            if (!item) return;
1945            item.addEventListener('click', function(e) {
1946                setTimeout(function() {
1947                    self.checkout({ redirect: true });
1948                }, 500);
1949            });
1950        });
1951    };
1952
1953    this.initRecurring = function() {
1954        var clones = document.querySelectorAll('[data-ocu-clone]');
1955        var clone = Array.prototype.filter.call(clones, function(i) { return i && !i.dataset.ocuCheckout; })[0];
1956        if (clone) clone.click();
1957    };
1958
1959    this.recurring = function(form, token) {
1960        var cfg = {
1961            protocol: 'https://',
1962            host: 'recurringcheckout.com',
1963            proxy: '/s/',
1964            permanent: /(\w+)\.myshopify\.com/.exec(BOLD.common.Shopify.shop.permanent_domain)[1],
1965            path: '/checkout/recurring/',
1966            query: '?shop_url=' + location.host
1967        };
1968
1969        form.action = cfg.protocol + cfg.host + cfg.proxy + cfg.permanent + cfg.path + token + cfg.query;
1970        form.submit();
1971    };
1972}
1973
1974function BuyNowBtns() {
1975    if (!lqd.themeSkipCart) return;
1976
1977    const self = this;
1978
1979    const buyNowBtn = document.querySelector('button[id="AddToCart"]');
1980    if (!buyNowBtn) return;
1981
1982    const innerTextEl = buyNowBtn.querySelector('#AddToCartText');
1983    if (!/buy\s*(it)?\s*now/i.test(innerTextEl && innerTextEl.innerText)) return;
1984
1985    const cb = function() { self.checkout({ redirect: true }); };
1986    const onError = function(form) { form.submit() };
1987
1988    buyNowBtn.addEventListener('click', function(e) {
1989        e.preventDefault();
1990        const form = buyNowBtn.closest('form[action="/cart/add"]');
1991        self.cart.add(form, e.target).then(cb).catch(onError.bind(null, form));
1992    });
1993}
1994
1995function HandlePermalink(url, redirect) {
1996    var self = this;
1997    var reg = utils.store.get('permalink');
1998    var match = reg.exec(url);
1999    var cfg = { redirect: redirect };
2000
2001    if (!match) return {
2002        promise: new Promise(function(resolve) { resolve({ checkout_url: url }); }),
2003        callback: function(res) {
2004            return redirect ? location.assign(url) : new Promise(function(resolve) { resolve(res); })
2005        }
2006    };
2007
2008    var discount = match[2];
2009    if (discount) cfg.params = [{ discount: discount }];
2010
2011    var groups = match[1].split(',');
2012
2013    var data = groups.reduce(function(acc, item, i, arr) {
2014        var id = +item.split(':')[0];
2015        var qty = +item.split(':')[1];
2016
2017        var cartItem = lqd.cart_variants_json.filter(function(item) { return item.id === id })[0];
2018        if (cartItem) qty += cartItem.quantity;
2019
2020        if (acc) acc += '&';
2021        return acc += 'updates[' + id + ']=' + qty;
2022    }, '');
2023
2024    return {
2025        promise: self.cart.bulkAdd(data),
2026        callback: function() { return self.checkout(cfg); }
2027    };
2028}
2029
2030function CartDrawer(target) {
2031    var form = target.querySelector('form[action="/cart"]');
2032    var btn = form && form.querySelector('input[type="submit"]');
2033    if (!btn) return;
2034
2035    btn.type = 'button';
2036    btn.addEventListener('click', function(e) {
2037        self.checkout({ redirect: true });
2038    });
2039}
2040
2041function CartPopup() {
2042    var btn = document.querySelector('.bkt--upsell-target-checkout');
2043    if (!btn) return;
2044
2045    var cfg = {
2046        tag: 'input ',
2047        type: 'type="button" ',
2048        style: 'style="position:absolute;left:0;top:0;width:100%;height:100%;cursor:pointer;opacity:0" ',
2049        data: 'data-ocu-dialog-btn '
2050    };
2051
2052    btn.style.position = 'relative';
2053    btn.insertAdjacentHTML('beforeend','<'+cfg.tag+cfg.type+cfg.style+cfg.data+'>');
2054
2055    var clone = document.querySelector('[data-ocu-dialog-btn]');
2056    clone.addEventListener('click', function(e) {
2057        e.stopPropagation();
2058        btn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="bkt--nc-icon" x="0px" y="0px" width="64px" height="15px" viewBox="0 0 64 64"><g><circle class="nc-dots-7-2" data-color="color-2" fill="#445FFF" cx="32" cy="32" r="26" transform="translate(6.26687999999989 6.26687999999989) scale(0.8041600000000034)" style="opacity:0.8041600000000034"></circle><circle class="nc-dots-7-1" fill="#445FFF" cx="-72" cy="32" r="26" transform="translate(3.2332800000000272 12.933120000000109) scale(0.5958399999999966)" style="opacity:0.5958399999999966"></circle><circle class="nc-dots-7-3" fill="#445FFF" cx="132" cy="32" r="26" transform="translate(33.6 19.2) scale(0.4)" style="opacity:0.4"></circle></g></svg>';
2059        function setAttributes(e,t){for (var i in t)e.setAttribute(i,t[i]);} function dotsSevenStep(e){startDots7||(startDots7=e);var t=e-startDots7,n=Math.min(t/250,4);n=4==n?0:n,decimalRot=n%1,upperInteger=Math.ceil(n),1e3>t||(startDots7+=1e3);if (circleDots7[0][0]){window.requestAnimationFrame(dotsSevenStep);var a=[],r=[],o=[],s=[-72,32,132],c=[32,32,32];for (j = 0;  circleDots7Number > j ; j++) {for (a[0]=a[1]=a[2]=.4,1==upperInteger?(a[0]=1-3*decimalRot/5,a[1]=.4+3*decimalRot/5):2==upperInteger?(a[1]=1-3*decimalRot/5,a[2]=.4+3*decimalRot/5):3==upperInteger?(a[1]=.4+3*decimalRot/5,a[2]=1-3*decimalRot/5):4==upperInteger?(a[0]=.4+3*decimalRot/5,a[1]=1-3*decimalRot/5):a[0]=1,i=0;3>i;i++)r[i]=(1-a[i])*s[i],o[i]=(1-a[i])*c[i],setAttributes(circleDots7[i][j],{
2060transform: 'translate('+r[i]+' '+o[i]+') scale('+a[i]+')',
2061style: 'opacity:'+a[i]+';'
2062});}}}!function(){var e=0;window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var i=(new Date).getTime(),n=Math.max(0,16-(i-e)),a=window.setTimeout(function(){t(i+n);},n);return e=i+n,a;});}();var circleDots7=[],startDots7=null;circleDots7[0]=document.getElementsByClassName('nc-dots-7-1'),circleDots7[1]=document.getElementsByClassName('nc-dots-7-2'),circleDots7[2]=document.getElementsByClassName('nc-dots-7-3'),circleDots7Number = circleDots7[0].length,window.requestAnimationFrame(dotsSevenStep);
2063        self.checkout({ redirect: true });
2064    });
2065}
2066
2067function CheckoutLinks() {
2068    var checkoutLinks = document.querySelectorAll('a[href="/checkout"]');
2069
2070    Array.prototype.forEach.call(checkoutLinks, function(link) {
2071        if (!link) return;
2072
2073        link.addEventListener('click', function(e) {
2074            e.stopPropagation();
2075            e.preventDefault();
2076            self.checkout({ redirect: true });
2077        });
2078    });
2079}
2080
2081function Discounts() {
2082    var discount = document.querySelector('input[name="discount"]');
2083    var discountCC = utils.cookie.get('discount_code'); // integration with CouponCountdown
2084    var discountShare = utils.cookie.get('ocu-share-discount');
2085    var isPopupShown = utils.cookie.get('popupcookie');
2086
2087    if (window._chpmgr && !isPopupShown) return; // integration with chilliapps exit popup
2088    if (!discount && !discountCC && !discountShare) return;
2089
2090    var code;
2091    if (discount) code = discount.value;
2092    if (discountCC) {
2093        code = discountCC;
2094        utils.cookie.remove('discount_code');
2095    }
2096
2097    if (discountShare) {
2098        code = discountShare;
2099        utils.cookie.remove('ocu-share-discount');
2100    }
2101
2102    var param = {
2103        name: 'discount',
2104        value: encodeURIComponent(code)
2105    };
2106
2107    var params = utils.store.get('params');
2108
2109    if (discountShare && lqd.template_name === 'page' || !param.value) return; // zp & shareable discount
2110
2111    params.arr.push(param);
2112    utils.store.set('params', params);
2113}
2114
2115function Recharge() {
2116    var self = this;
2117
2118    this.isSubscription = function(res) {
2119        var cart = res.cart || res.data.cart || res.data;
2120
2121        return cart.items.some(function(item) {
2122            return item.properties && (item.properties.subscription_id || item.properties.shipping_interval_frequency);
2123        });
2124    };
2125
2126    this.processCart = function() {
2127        window.reChargeProcessCart = function() {
2128            self.checkout({ redirect: true });
2129        };
2130    };
2131
2132    this.needRedirect = function(isError, lqd, data) {
2133        const hasError = lqd.integrate_with_recharge && (isError || !data.status);
2134        const hasSubscription = !lqd.integrate_with_recharge && self.isSubscription(lqd);
2135        return hasError || hasSubscription;
2136    };
2137
2138    this.redirect = function(checkoutUrl) {
2139        let checkout_url = "https://checkout.rechargeapps.com";
2140        function buildCheckoutUrl(){var t=["myshopify_domain="+Shopify.shop];return checkout_url+"/r/checkout?"+(t=t.concat(get_cart_token()).concat(get_ga_linker())).join("&")}function filterVisible(t){return t.filter(function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)})}function filterValues(t){return t.filter(function(t){var e="radio"===t.getAttribute("type")&&t.checked,n="checkbox"===t.getAttribute("type")&&t.checked,r="checkbox"!==t.getAttribute("type")&&"radio"!==t.getAttribute("type");return!!t.value&&(r||e||n)})}function getCartJSON(){return fetch("/cart.js").then(function(t){return t.json()}).then(function(t){return{cart:JSON.stringify(t)}}).catch(function(t){return console.error("Error retreiving cart: ",t),{cart:{}}})}function getTermsAndConditions(){var t=document.querySelectorAll(["#terms","#agree"].join(",")),e=filterValues(Array.prototype.slice.apply(t)).map(function(t){return t.value});return e.length?{terms_and_conditions:e.join(", ")}:{}}function getNotes(){var t=document.querySelectorAll(['[name="note"]'].join(",")),e=filterVisible(Array.prototype.slice.apply(t)).map(function(t){return t.value}),n=new URLSearchParams(decodeURIComponent(window.location.search)).get("note");return n&&e.push(n),e.length?{note:e.filter(function(t,e,n){return n.indexOf(t)===e}).join(", ")}:""}function getUTMAttributes(){var t=/^_shopify_sa_p/,e=/^utm_/,n=/^_shopify_sa_t/,r={},o="",i="";document.cookie.split(";").map(function(t){return t.trim()}).forEach(function(e){t.test(e)&&(o=e),n.test(e)&&(i=decodeURIComponent(e.split("=")[1]))});var c=o.split("=")[1];if(decodeURIComponent(c).split("&").forEach(function(t){var n=t.split("=")[0],o=t.split("=")[1];if(e.test(n))return r[n]=o}),Object.keys(r).length)return r.utm_timestamp=i,r.utm_data_source="shopify_cookie",r}function getAttributes(){var t=/attributes\[(.*?)\]/,e=/\[(.*?)\]/,n=document.querySelectorAll(['[name*="attributes"]'].join(",")),r=filterValues(Array.prototype.slice.apply(n)),o={},i=getUTMAttributes(),c=new URLSearchParams(decodeURIComponent(window.location.search));for(let n of c)if(t.test(n[0])){var u=n[0].match(e)[0];u=u.substring(1,u.length-1),o[u]=c.get(n[0])}return r.forEach(function(n){var r=n.getAttribute("name"),i=n.value;if(t.test(r)){var c=r.match(e)[0];return c=c.substring(1,c.length-1),o[c]=i}return o[r]=i}
2140),i&&Object.keys(i).forEach(function(t){o[t]=i[t]}),Object.keys(o).length?{attributes:Object.assign({},o)}:{}}function getCartData(){return getCartJSON().then(function(t){var e={};return[getTermsAndConditions(),getNotes(),getAttributes(),e=t].forEach(function(t){Object.assign(e,t)}),e})}function get_cart_token(){try{return["cart_token="+(document.cookie.match("(^|; )cart=([^;]*)")||0)[2]]}catch(t){return[]}}function get_ga_linker(){try{return[ga.getAll()[0].get("linkerParam")]}catch(t){return[]}}function buildInputs(t,e){Object.keys(e).forEach(function(n){var r=document.createElement("input");r.setAttribute("type","hidden"),r.setAttribute("name",n),r.setAttribute("value","object"==typeof e[n]?JSON.stringify(e[n]):e[n]),t.appendChild(r)})}function buildForm(t,e){var n=document.createElement("form");return n.setAttribute("method","post"),n.setAttribute("action",e),n.setAttribute("id","rc_form"),n.style.display="none",buildInputs(n,t),n}function hasSubscription(t){return[...JSON.parse(t.cart).items].some(t=>t.properties&&t.properties.shipping_interval_unit_type)}function ReChargeCartSubmit(){return getCartData().then(function(t){if(hasSubscription(t)){var e=buildCheckoutUrl();if(t){var n=new XMLHttpRequest;n.open("POST","/cart/update.js"),n.setRequestHeader("Content-Type","application/json"),n.onload=function(){200===n.status?window.console.log("done",JSON.parse(n.responseText)):200!==n.status&&window.console.log("fail",JSON.parse(n.responseText));var r=buildForm(t,e);document.body.appendChild(r),r.submit()},n.send(JSON.stringify(t))}else window.location.href=e}else window.location.href=checkoutUrl||"/checkout"})}
2141        ReChargeCartSubmit();
2142
2143        return { redirecting: true };
2144    };
2145}
2146
2147function smar7() {
2148    var self = this;
2149
2150    var isSmar7Installed = ~document.head.innerHTML.indexOf('bundle-upsell');
2151    if (!isSmar7Installed) return;
2152
2153    var ctaBtns = document.querySelectorAll("[name='checkout'], [href^='/checkout'], form[action='/checkout'] [type='submit'], #checkout, [name='goto_pp'], .checkout_button");
2154    Array.prototype.forEach.call(ctaBtns, function(btn) {
2155        btn.disabled = true;
2156    });
2157
2158    var i = 0;
2159    var int = setInterval(function() {
2160        if ((++i && i > 7) || (window.SMAR7 && SMAR7.bundle)) {
2161            Array.prototype.forEach.call(ctaBtns, function(btn) {
2162                btn.disabled = false;
2163            });
2164            clearInterval(int);
2165        }
2166    }, 3000);
2167
2168    var redirect = function(discount) {
2169        var button, path, params = utils.store.get('params');
2170
2171        if (discount) {
2172            SMAR7.util.setCookie('smar7coupon', discount, 3600);
2173
2174            params.arr.push({
2175                name: 'discount',
2176                value: encodeURIComponent(discount)
2177            });
2178        } else {
2179            discount = SMAR7.bundle.helper.determineCoupon && SMAR7.bundle.helper.determineCoupon();
2180        }
2181
2182        if (SMAR7.paypal) {
2183            path = '/checkout?goto_pp=paypal_express&discount=' + encodeURIComponent(discount);
2184            button = document.querySelector('[name="goto_pp"]');
2185        } else {
2186            path = '/checkout?discount=' + encodeURIComponent(discount);
2187            button = document.querySelector(
2188                '[name="checkout"], [href="/checkout"], form[action="/checkout"] input[type="submit"], #checkout'
2189            );
2190        }
2191
2192        utils.store.set('params', params);
2193        self.checkout({ redirect: true });
2194    };
2195
2196    var handle = function() {
2197        if (window.SMAR7 && SMAR7.bundle) SMAR7.bundle.redirect = redirect;
2198    };
2199
2200    document.addEventListener('click', handle, true);
2201};
2202
2203function Integrations() {
2204    var self = this;
2205    var bold = new Bold();
2206    var recharge = new Recharge();
2207
2208    this.list = {
2209        bold: {
2210            get isInstalled() { return window.BOLD && BOLD.apps_installed; },
2211            get productOptions() { return this.isInstalled && BOLD.apps_installed['Product Options']; },
2212            get productUpsell() { return this.isInstalled && BOLD.apps_installed['Product Upsell']; },
2213        },
2214        recharge: {
2215            isSubscriptionProduct: function(cart) {
2216                return cart.items.some(function(item) {
2217                    return item.properties && (item.properties.subscription_id || item.properties.shipping_interval_frequency);
2218                });
2219            }
2220        }
2221    };
2222
2223
2224    // for future integartion
2225    this.boldUpsellCheckoutOffer = function() {
2226        if (!window.BOLD || !window.Shopify) return;
2227
2228        var data  = {
2229            data: {
2230                cart: {
2231                  items: lqd.cart.items,
2232                  total_price: lqd.cart.total_price
2233                }
2234            }
2235        };
2236
2237        return ajax.request({
2238            method: 'post',
2239            url: window.BOLD.upsell.path + window.Shopify.shop + '/validate_checkout_offer',
2240            data: JSON.stringify(data)
2241        });
2242    };
2243
2244    this.needSkipClick = this.list.bold.productOptions || this.list.bold.productUpsell;
2245
2246    this.start = function() {
2247        if (!lqd.upsell_cart_include_upsells) return;
2248        if (lqd.template_name !== 'cart') this.main();
2249        // try {
2250        //     this[(lqd.template_name === 'cart' ? 'cart' : 'main')]();
2251        // } catch (e) { console.warn(e); }
2252    };
2253
2254    this.main = function() {
2255        var handleMutation = function(mutation) {
2256            if (
2257                mutation.type !== 'attributes'
2258                || mutation.target !== document.querySelector(self.ocuSelectors)
2259                || !/cart-?(popup|container|drawer)/i.test(mutation.target.id)
2260                || !/bold-upsell-modal-window/i.test(mutation.target.id)
2261            ) return;
2262
2263            if (mutation.target.id === 'bold-upsell-modal-window') {
2264                return self.boldUpsellPopup(mutation.target);
2265            }
2266
2267            var checkoutButtons = document.querySelectorAll(self.ocuSelectors);
2268            // var dataOcuCheckoutValue = checkoutButtons[0].dataset.ocuCheckout === 'true';
2269            var dataDisableRechargeValue = checkoutButtons[0].dataset.disableRecharge === 'true';
2270            var forEach = Array.prototype.forEach;
2271
2272            forEach.call(checkoutButtons, function(item) {
2273                if (item.innerHTML === 'Checkout') item.removeAttribute('onclick'); // Integration with AceCase store
2274            });
2275
2276            // if (!dataOcuCheckoutValue) { // Integration with MyDietChief store
2277            //     Array.prototype.forEach.call(checkoutButtons, function(item) {s
2278            //         item.dataset.ocuCheckout = true;
2279            //     });
2280            // }
2281
2282            if (lqd.disabled_by_subscription_app && dataDisableRechargeValue) return;
2283
2284            forEach.call(checkoutButtons, function(item) {
2285                item.disableRecharge = true;
2286            });
2287
2288            self.cartPopup();
2289            self.cartDrawer(mutation.target);
2290            self.checkoutLinks();
2291            self.listenEvents();
2292        };
2293
2294        var handleMutations = function(mutations) { mutations.forEach(handleMutation); };
2295
2296        var config = {
2297            childList: true,
2298            subtree: true,
2299            attributes: true
2300        };
2301
2302        new MutationObserver(handleMutations).observe(document, config);
2303
2304        self.buyNowBtns();
2305        self.recharge.processCart();
2306        self.revy();
2307    };
2308
2309    // this.cart = function() {
2310    //     // var handleMutation = function(mutation) {
2311    //     //     var target = document.querySelector(self.ocuSelectors);
2312    //     //     if (mutation.type === 'attributes' && mutation.target === target) {
2313    //     //         self.smar7();
2314    //     //     }
2315    //     // };
2316
2317    //     // var handleMutations = function(mutations) { mutations.forEach(handleMutation); };
2318
2319    //     // var config = {
2320    //     //     subtree: true,
2321    //     //     attributes: true
2322    //     // };
2323
2324    //     // new MutationObserver(handleMutations).observe(document, config);
2325
2326    //     self.revy();
2327    // };
2328
2329    this.revy = function() {
2330        if (window.RevyApp && RevyApp.events) RevyApp.events.updatedCart = [];
2331    };
2332
2333    this.discounts = Discounts;
2334    this.smar7 = smar7;
2335    this.isBoldRecuring = bold.isBoldRecuring;
2336    this.boldRecurring = bold.initRecurring;
2337    this.bold = bold.recurring;
2338    this.boldUpsellPopup = bold.upsellPopup;
2339    this.cartPopup = CartPopup;
2340    this.cartDrawer = CartDrawer;
2341    this.checkoutLinks = CheckoutLinks;
2342    this.handlePermalink = window.oneClickUpsellHandlePermalink = HandlePermalink.bind(this);
2343    this.buyNowBtns = BuyNowBtns;
2344    this.recharge = recharge;
2345    this.amazonPay = amazonPay;
2346    // this.amazonPay = function() { AmazonPay(self) };
2347
2348    this.start();
2349}
2350
2351function HistoryApi() {
2352    history.pushState = (function(f) {
2353        return function() {
2354            var result = f.apply(this, arguments);
2355            window.dispatchEvent(new Event('pushState'));
2356            window.dispatchEvent(new Event('locationchange'));
2357            return result;
2358        };
2359    })(history.pushState);
2360
2361    history.replaceState = (function(f) {
2362        return function() {
2363            var result = f.apply(this, arguments);
2364            window.dispatchEvent(new Event('replaceState'));
2365            window.dispatchEvent(new Event('locationchange'));
2366            return result;
2367        };
2368    })(history.replaceState);
2369
2370    window.addEventListener('popstate', function() {
2371        window.dispatchEvent(new Event('locationchange'));
2372    });
2373}
2374
2375function Verify() {
2376    var self = this;
2377    var target;
2378
2379    this.init = function(target) {
2380        target = target;
2381
2382        if (window.catchXHR) {
2383            catchXHR = false;
2384            XMLHttpRequest.callbacks = [];
2385        }
2386        if (window.beeketingWPJP) beeketingWPJP = {};
2387
2388        self.checkout()
2389            .then(self.handle)
2390            .catch(self.helpers.redirect);
2391    };
2392
2393    this.data = function() {
2394        var options = {
2395            method: 'get',
2396            url: self.helpers.getProxyUrl() + utils.store.get('lqdCart')
2397        };
2398
2399        return ajax.request(options);
2400    };
2401
2402    this.upsells = function(res) {
2403        if (self.integrations.recharge.isSubscription(res) && !lqd.integrate_with_recharge) {
2404            return new Promise(function(resolve) { resolve(res); });
2405        }
2406
2407        res = self.cart.modify(res);
2408
2409        const cart = res.data;
2410        return self._addToken(cart)
2411            .then(function(c) {
2412                return self._makeCheckUpsells(c, res);
2413            });
2414    };
2415
2416    this.handle = function(res) {
2417        if (!res || res.redirecting) return;
2418        // var isAppSkipCart = lqd.skip_cart && /index|collection|product/.test(lqd.template_name);
2419        // var isThemeSkipCart = lqd.themeSkipCart;
2420        // if (cart.redirect_url) return location = cart.redirect_url;
2421        if (!res.status && !lqd.themeSkipCart) return self.helpers.redirect(res);
2422        // if (!res.status && !lqd.themeSkipCart) return location.assign('/cart');
2423
2424        location = res.status || lqd.themeSkipCart
2425            ? res.redirect_url || res.checkout_url
2426            : '/cart';
2427    };
2428
2429    this._makeCheckUpsells = function(cart, res) {
2430        cart.items = self.helpers.filterCartItemFields(cart.items);
2431
2432        const data = {
2433            shop_domain: lqd.current_domain,
2434            cart: cart,
2435            require_paypal: utils.store.get('requirePayPal'),
2436            customer: { id: res.data.customer_id },
2437            incarts: utils.store.get('incarts')
2438            // incarts: { 47: { status: 'declined', shopify_variant_id: 16052480475207, quantity: 1, shown_at: Date.now() }}
2439            // incarts: { 47: { status: 'offered', shopify_variant_id: 16052480475207, quantity: 1, shown_at: Date.now() }}
2440        };
2441
2442        const options = {
2443            method: 'post',
2444            url: self.helpers.getProxyUrl() + utils.store.get('checkUpsells'),
2445            data: utils.serialize(data, { indices: true })
2446        };
2447
2448        return ajax.request(options);
2449    };
2450
2451
2452    this._addToken = function(cart) {
2453        const store_token = utils.store.get('cart_token');
2454        return new Promise(function(resolve, reject) {
2455            if (!cart.token && store_token) {
2456                cart.token = store_token;
2457                resolve(cart);
2458            } else if (!cart.token) {
2459                self.cart.get().then(function(res) {
2460                    cart.token = res.data.token;
2461                    resolve(cart);
2462                });
2463            } else {
2464                resolve(cart);
2465            }
2466        });
2467    }
2468};
2469
2470const appendChain = window.Symbol ? Symbol('appendChain') : 'oneClickUpsellAppendChain';
2471Object[appendChain]=function(t,o){for(var n=o,e=o2nd=oLast=t instanceof this?t:new t.constructor(t),r=this.getPrototypeOf(o2nd);r!==Object.prototype&&r!==Function.prototype;r=this.getPrototypeOf(o2nd))o2nd=r;return o.constructor===String&&(n=Function.prototype,e=Function.apply(null,Array.prototype.slice.call(arguments,1)),this.setPrototypeOf(e,oLast)),this.setPrototypeOf(o2nd,n),e};
2472
2473function Updater(res) {
2474    this.res = res;
2475    this.cart = res && res.data.cart;
2476    this.isCartUpdated = utils.store.get('cartUpdated');
2477    this.isOfferDeclined = utils.store.get('offerDeclined');
2478    this.options = {
2479        add:    { method: 'post', url: '/cart/add.js' },
2480        change: { method: 'post', url: '/cart/change.js' },
2481        update: { method: 'post', url: '/cart/update.js' }
2482    };
2483    this.regs = {
2484        attributes: /\[(.+?)\]/,
2485        key: /(?:updates_(?:.*?))?(\d+:\w+)/,
2486        id: /(?:updates_(?:.*?))?(\d+):?/
2487    };
2488    this.selectors = {
2489        form: 'form[action^="/checkout"], form[action*="/cart"]:not([action*="/cart/add"])',
2490        attributes: '[name^="attributes["]',
2491        currency: '[name="currency"]',
2492        updates: '[name^="updates["], [name="quantity"]',
2493        note: '[name="note"]'
2494    };
2495    this.data = {
2496        currency: lqd.shop_currency,
2497        attributes: {},
2498        lineItems: [],
2499        updates: {},
2500        changes: [],
2501        sameIds: [],
2502        note: ''
2503    };
2504    this.payload = {
2505        updates: {},
2506        currency: '',
2507        note: null,
2508        attributes: {}
2509    };
2510}
2511Updater.prototype = {
2512    init: function() {
2513        const afterPopupUpdate = !this.isCartUpdated && this.hasAttributes;
2514        const skipUpdate = (this.isCartUpdated && !this.isOfferDeclined) && (!this.isNoteChanged && !afterPopupUpdate);
2515        if (skipUpdate) return this.resolve(this.res);
2516        if (!this.form) return this.updateCurrency();
2517
2518        this.buildPayload();
2519        if (this.res) return this.updateCart();
2520    }
2521};
2522const UpdaterRequests = {
2523    updateCart: function(data, isUpgrade) {
2524        const options = this._getOptions('update', data, isUpgrade);
2525        const params = isUpgrade && data.changeData;
2526        const updateCart = function() { return ajax.request(options); };
2527
2528        return this._updateSameId(params).then(updateCart);
2529    },
2530    addToCart: function(data) {
2531        const options = this._getOptions('add', data);
2532
2533        return ajax.request(options);
2534    },
2535    changeCart: function(data, chain) {
2536        const options = this._getOptions('change', data);
2537        const request = !chain || chain instanceof Object
2538            ? ajax.request(options)
2539            : function() { return ajax.request(options); };
2540
2541        return request;
2542    },
2543    updateCurrency: function() {
2544        if (!this.needCurrencyUpdate) return this.resolve(this.res);
2545
2546        this.getCurrency();
2547        const options = this._getOptions('update', { currency: this.data.currency });
2548
2549        return ajax.request(options).catch(this.resolve.bind(this, this.res));
2550    },
2551    _updateSameId: function(changeData) {
2552        if (!this.data.sameIds.length) return this.resolve(false);
2553
2554        const allRequests = this._getCartChangeRequests(changeData);
2555        const requestChain = this._requestChain(allRequests);
2556
2557        return new Promise(requestChain.bind(this));
2558    },
2559    _getCartChangeRequests: function(changeData) {
2560        const cb = function(acc, change) {
2561            if (!change.id && !change.line) return acc;
2562            if (changeData) {
2563                const id = changeData.id;
2564                const line = changeData.__line || changeData.line;
2565                const isUpgradeItem = change.line === line || (id && change.id === id);
2566                if (isUpgradeItem) return acc;
2567            }
2568
2569            delete change.__variantId;
2570            acc.push(this.changeCart(change, 'chain'));
2571
2572            return acc;
2573        };
2574
2575        return this.data.changes.reduce(cb.bind(this), []);
2576    },
2577    _requestChain: function(allRequests) {
2578        return function(resolve, reject) {
2579            if (!allRequests.length) return resolve(false);
2580            !function createRequest() {
2581                const req = allRequests.pop();
2582                const cb = function(res) {
2583                    if (allRequests.length) return createRequest();
2584                    resolve(res);
2585                };
2586
2587                return req().then(cb).catch(reject);
2588            }();
2589        }
2590    },
2591    _getOptions: function(type, data, isUpgrade) {
2592        const options = Object.assign({}, this.options[type]);
2593        options.data = isUpgrade ? data.updateData : (data || this.payload);
2594        return options;
2595    }
2596};
2597const UpdaterPayload = {
2598    buildPayload: function() {
2599        this.getUpdates();
2600        this.getAttributes();
2601        this.getCurrency();
2602        this.getNote();
2603
2604        Object.keys(this.payload).forEach(function(key) {
2605            this.payload[key] = this.data[key];
2606        }.bind(this));
2607
2608        return this.payload;
2609    },
2610    getUpdates: function() {
2611        this.updateElements.forEach(function(item) {
2612            const isNoId = !item || (!item.dataset.id && !item.id);
2613            if (isNoId) return;
2614
2615            const quantity = +item.value;
2616            const line = this._getLine(item);
2617            const key = this._getKey(item);
2618            const id = this._getId(item);
2619            const isIdMissing = id.toString().length < 3;
2620
2621            this._saveLineItem(id, key, line, quantity);
2622            if (this.data.updates[id] || isIdMissing) this._saveSameId(id);
2623            this._saveChanges();
2624            if (~this.data.sameIds.indexOf(id) || isIdMissing) return;
2625            this._saveUpdates(id, quantity);
2626        }.bind(this));
2627
2628        return this.data.updates;
2629    },
2630    getAttributes: function() {
2631        if (!this.attributesElements.length) return {};
2632
2633        const cb = function(acc, item) {
2634            const attribute = this._getAttribute(item);
2635            if (!attribute.key) return acc;
2636
2637            acc[attribute.key] = attribute.value;
2638            return acc;
2639        };
2640
2641        this.data.attributes = this.attributesElements.reduce(cb.bind(this), {});
2642        return this.data.attributes;
2643    },
2644    getCurrency: function() {
2645        if (!this.currencyElement) return this.data.currency;
2646        this.data.currency = this.currencyElement.value;
2647        return this.data.currency;
2648    },
2649    getNote: function() {
2650        if (!this.noteElement) return '';
2651        this.data.note = this.noteElement.value;
2652        return this.data.note;
2653    }
2654};
2655const UpdaterPrecheckout = {
2656    acceptAddOffer: function(data) {
2657        return this.updateCart().then(this.addToCart.bind(this, data));
2658    },
2659    acceptUpgradeOffer: function(addData, cartItem, cartItemLine) {
2660        const data = this._getUpgradeOfferData(cartItem, cartItemLine);
2661        const changeData = Object.assign({}, data.changeData);
2662        delete changeData.__line;
2663
2664        return this.updateCart(data, 'upgrade')
2665            .then(this.changeCart.bind(this, changeData))
2666            .then(this.addToCart.bind(this, addData));
2667    },
2668    _getUpgradeOfferData: function(cartItem, cartItemLine) {
2669        const udpateData = Object.assign({}, this.payload);
2670        const lineItemByKey = this.data.lineItems.find(function(item) {
2671            return item.id === cartItem.key;
2672        });
2673        const lineItemById = this.data.lineItems.find(function(item) {
2674            return item.__variantId === cartItem.id;
2675        });
2676        const lineItem = lineItemByKey || lineItemById;
2677        const quantity = lineItem.quantity ? lineItem.quantity - 1 : 0;
2678        const changeData = {
2679            // __line: cartItemLine,
2680            // id: cartItem.key,
2681            line: cartItemLine,
2682            quantity: quantity
2683        };
2684
2685        delete udpateData.updates[cartItem.id];
2686
2687        return {
2688            updateData: udpateData,
2689            changeData: changeData
2690        };
2691    }
2692};
2693const UpdaterElements = {
2694    get forms() {
2695        const forms = document.querySelectorAll(this.selectors.form);
2696        const visibleForms = this.arrayFrom(forms).filter(function(form) {
2697            return form.offsetHeight;
2698        });
2699
2700        return visibleForms;
2701    },
2702    get form() {
2703        const isNotePresent = this.forms.some(function(e) {
2704            return e.note && e.note.value;
2705        });
2706        const filteredForm = this.forms.find(function(form) {
2707            return form.querySelector(this.selectors.updates) && (isNotePresent ? form.note && form.note.value : true);
2708        }.bind(this));
2709
2710        return filteredForm;
2711    },
2712    get updateElements() {
2713        const arr = this.arrayFrom(this.form.querySelectorAll(this.selectors.updates));
2714
2715        return arr.filter(function(item) {
2716            return item && !item.disabled;
2717        });
2718    },
2719    get attributesElements() {
2720        const nodeList = this.form.querySelectorAll(this.selectors.attributes);
2721        return this.arrayFrom(nodeList);
2722    },
2723    get noteElement() {
2724        return this.form.querySelector(this.selectors.note);
2725    },
2726    get currencyElement() {
2727        return document.querySelector(this.selectors.currency);
2728    }
2729};
2730const UpdaterHelpers = {
2731    resolve: function(res) {
2732        return new Promise(function(resolve) { resolve(res); });
2733    },
2734    arrayFrom: function(nodeList) {
2735        if (!(nodeList instanceof NodeList)) nodeList = [nodeList];
2736        return Array.prototype.slice.call(nodeList);
2737    },
2738    _getLine: function(item) {
2739        return +(item.dataset.quantityItem || item.dataset.lineId);
2740    },
2741    _getKey: function(item) {
2742        const match = this.regs.key.exec(item.dataset.id || item.id);
2743        return match && match[1];
2744    },
2745    _getId: function(item) {
2746        const match = this.regs.id.exec(item.dataset.id || item.id);
2747        return match && +match[1];
2748    },
2749    _saveSameId: function(id) {
2750        delete this.data.updates[id];
2751        this.data.sameIds.push(id);
2752    },
2753    _saveLineItem: function(id, key, line, quantity) {
2754        const lineItem = {
2755            __variantId: id,
2756            quantity: quantity,
2757        };
2758
2759        if (line) lineItem.line = line;
2760        else if (key) lineItem.id = key;
2761
2762        this.data.lineItems.push(lineItem);
2763    },
2764    _saveChanges: function() {
2765        this.data.changes = this.data.lineItems.filter(function(item) {
2766            return ~this.data.sameIds.indexOf(item.__variantId);
2767        }.bind(this));
2768    },
2769    _saveUpdates: function(id, quantity) {
2770        this.data.updates[id] = quantity;
2771    },
2772    _getAttribute: function(item) {
2773        const match = this.regs.attributes.exec(item.name);
2774        if (!match) return {};
2775        return { key: match[1], value: item.value };
2776    },
2777    get needCurrencyUpdate() {
2778        return this.currencyElement && this.currencyElement.value !== this.data.currency;
2779    },
2780    get isNoteChanged() {
2781        return this.form && this.res && (this.res.data.cart.note !== this.getNote());
2782    },
2783    get hasAttributes() {
2784        return this.form && Object.keys(this.getAttributes()).length;
2785    }
2786};
2787
2788[UpdaterRequests, UpdaterPayload, UpdaterPrecheckout, UpdaterElements, UpdaterHelpers]
2789.forEach(function(module) {
2790    Updater.prototype = Object[appendChain](Updater.prototype, module);
2791});
2792
2793function Cart() {
2794    var self = this;
2795
2796    this.add = function(form, button, data) {
2797        if (form) {
2798            var noId = function(serialized) { return !/id/.test(serialized); };
2799
2800            data = self.serialize(form);
2801
2802            if (noId(data)) {
2803                data = self.serialize(document.querySelector('#AddToCartForm'));
2804            }
2805
2806            if (noId(data)) {
2807                var idOnBtn = document.querySelector('[data-cart-add]');
2808                if (idOnBtn) data = 'id=' + idOnBtn.dataset.cartAdd;
2809            }
2810        }
2811
2812        var options = {
2813            method: 'post',
2814            url: '/cart/add.js',
2815            data: data
2816        };
2817
2818        return ajax.request(options);
2819    };
2820
2821    this.bulkAdd = function(data) {
2822        var options = {
2823            method: 'post',
2824            url: '/cart/update.js',
2825            data: data
2826        };
2827
2828        return ajax.request(options)
2829    };
2830
2831    this.get = function() {
2832        var options = {
2833            method: 'get',
2834            url: '/cart.js'
2835        };
2836
2837        return ajax.request(options);
2838    };
2839
2840    this.update = function(res) {
2841        return new Updater(res).init();
2842    };
2843
2844    this.save = function(res) {
2845        // if (self.needCurrencyUpdate()) self.updateCurrency();
2846        self.disableMultiUpdate(res.data.cart.items);
2847        self.saveTags(res);
2848
2849        // if (!lqd.is_precheckout && lqd.is_ajax_precheckout && !utils.cookie.get('ocu_countdown_start')) {
2850        //     return window.OCUPrecheckout({ utils: utils });
2851        // }
2852
2853        lqd.cart_products_json = res.data.cart_products;
2854        lqd.cart_collections_json = res.data.cart_collections;
2855        lqd.subscription_products_json = res.data.subscription_products;
2856        lqd.subscription_variants_json = res.data.subscription_variants;
2857
2858        return self.resolve(res);
2859    };
2860
2861    this.modify = function(res) {
2862        const cart = res.cart || res.data.cart || res.data;
2863
2864        // res.data = self.helpers.filterFields(cart);
2865        res.data = cart;
2866        res.data.subscription_products = lqd.subscription_products_json;
2867        res.data.cart_collections = lqd.cart_collections_json;
2868        res.data.cart_products = lqd.cart_products_json.filter(function(item) { return !item.error; });
2869        res.data.customer_id = lqd.customer_id;
2870        res = self.helpers.addBuyXGetYDiscount(res);
2871        if (cart.cart_level_discount_applications) res.data.automatic_discount = cart.cart_level_discount_applications[0];
2872
2873        return res;
2874    };
2875
2876    this.serialize = function(form) {
2877        return /trident|edge/i.test(navigator.userAgent)
2878            ? utils.serializeFormEdge(form)
2879            : utils.serializeForm(form);
2880    };
2881
2882    this.attrubutes = function(attr) {
2883        const options = {
2884            method: 'post',
2885            url: '/cart/update.js',
2886            data: { attributes: attr }
2887        };
2888
2889        ajax.request(options);
2890    };
2891
2892    this.prepareUpdate = function(items) {
2893        var handle = function(acc, item) {
2894            var id = item.id.replace(/(\w+_)(\d+)(:\w+)/, '$2');
2895            acc[id] = item.value;
2896
2897            return acc;
2898        };
2899
2900        items = items.length ? items : [items];
2901
2902        var updates = Array.prototype.reduce.call(items, handle, {});
2903
2904        return {
2905            updates: updates,
2906            currency: lqd.shop_currency
2907         };
2908    };
2909
2910    this.saveTags = function(res) {
2911        var tags = res.data.cart_products.reduce(function(acc, product) {
2912            return acc.concat(product.tags);
2913        }, []);
2914
2915        utils.store.set('tags', tags);
2916    };
2917
2918    this.disableMultiUpdate = function(lineItems) {
2919        const inputs = document.querySelectorAll('input[name="updates[]"]');
2920        const offer = utils.store.get('offer');
2921        const isAdd = offer === 'add';
2922
2923        if (isAdd && lineItems.length === inputs.length + 1) return;
2924        if (!isAdd && lineItems.length === inputs.length) return;
2925
2926        Array.prototype.forEach.call(inputs, function(input) {
2927            if (!input.offsetHeight) input.disabled = true;
2928        });
2929    };
2930
2931    this.state = function(e) {
2932        if (e.target.name !== 'updates[]') return;
2933        utils.store.set('cartChanged', true);
2934    };
2935
2936    this.resolve = function(res) {
2937        return new Promise(function(resolve) { resolve(res); });
2938    };
2939
2940    this.needCurrencyUpdate = function() {
2941        return document.querySelector('[name="currency"]');
2942    };
2943
2944    this.updateCurrency = function() {
2945        var options = {
2946            method: 'post',
2947            url: '/cart/update.js',
2948            data: { currency: lqd.shop_currency }
2949        };
2950
2951        ajax.request(options).then(function() { utils.store.set('cartChanged', false); });
2952    };
2953
2954    this.isNotePresent = function(forms) {
2955        return Array.prototype.some.call(forms, function(e) { return e.note && e.note.value });
2956    };
2957
2958    this.filterFormsIfNotes = function(forms, isNotePresent) {
2959        var handle = function(form) {
2960            return form['updates[]'] && (isNotePresent ? form.note && form.note.value : true);
2961        };
2962
2963        return Array.prototype.filter.call(forms, handle)[0];
2964    };
2965
2966    this.error = function(e) {
2967        var desc = e.data.description;
2968
2969        if (e.status !== 422) return alert(desc || 'Something went wrong. Please try again.');
2970
2971        var allInCart = /all/i.test(desc);
2972        var soldOut = /sold out/i.test(desc);
2973
2974        alert(desc);
2975
2976        if (allInCart) return self.checkout({ redirect: true });
2977        if (soldOut) location.reload();
2978    };
2979};
2980
2981var SyncQtyFields = {
2982    init: function() {
2983        if (!lqd.upsell_cart_include_upsells) return;
2984        if (!this.fields.length) return;
2985        this.listenEvents();
2986    },
2987    get fields() {
2988        return document.querySelectorAll('[data-quantity-item]');
2989    },
2990    getFiledsForUpdate: function(target) {
2991        var id = this.getId(target);
2992        var elems = document.querySelectorAll('[data-quantity-item="' + id + '"]');
2993        var arr = this.getArray(elems);
2994
2995        return arr;
2996    },
2997    getId: function(target) {
2998        return target.dataset.quantityItem;
2999    },
3000    getArray: function(nodeList) {
3001        return Array.prototype.slice.call(nodeList);
3002    },
3003    update: function(target, value) {
3004        this.getFiledsForUpdate(target).forEach(function(field) {
3005            field.value = value;
3006        });
3007    },
3008    handle: function(e) {
3009        this.update(e.target, e.target.value);
3010    },
3011    listenEvents: function(e) {
3012        this.getArray(this.fields).forEach(function(field) {
3013            field.addEventListener('input', this.handle.bind(this));
3014        }.bind(this));
3015    }
3016}.init();
3017
3018function SkipCart() {
3019    var self = this;
3020
3021    if (lqd.themePopup && lqd.isThemePopupTag) return;
3022    // if (/product/.test(lqd.template_name) && !lqd.upsell_cart_include_upsells) return;
3023
3024    this.init = function() {
3025        var isSkipCartPage = /index|collection|product/.test(lqd.template_name);
3026        lqd.skip_cart && isSkipCartPage && setTimeout(function() { self.removeEvents(); });
3027    };
3028
3029    this.removeEvents = function() {
3030        let forms = document.querySelectorAll('form[action*="cart"], [data-zp-add-to-cart-form], #AddToCartForm1');
3031        forms = Array.prototype.filter.call(forms, function(form) { return form.dataset.zpLinkType !== 'zipify_page'; });
3032        var elems = [];
3033
3034        var fakeForms = document.querySelectorAll('.product-form__cart');
3035        // TODO: move selectors to store
3036        if (fakeForms.length) {
3037            var getArr = function(nodeList) { return Array.prototype.slice.call(nodeList); };
3038            forms = getArr(forms).concat(getArr(fakeForms));
3039        }
3040
3041        Array.prototype.forEach.call(forms, function(form) {
3042            var buttons = form.querySelectorAll('*[type="submit"], input[type="button"], button');
3043
3044            Array.prototype.forEach.call(buttons, function(button) {
3045                elems.push({
3046                    button: button,
3047                    sibling: button.previousElementSibling,
3048                    parent: button.parentElement
3049                });
3050            });
3051        });
3052
3053        elems.forEach(function(item) {
3054            if (item.button.dataset.qty) return;
3055            if (item.button.getAttribute('aria-controls')) return;
3056            if (/plus|minus|zpa-quantity/.test(item.button.className)) return;
3057            if (/error_txt|quantity|sold-out/i.test(item.button.id)) return;
3058            if (/amount|review/i.test(item.button.value)) return;
3059
3060            item.button.removeAttribute('onclick');
3061            item.button.dataset.skipCart = true;
3062            item.button.type = 'button';
3063
3064            // try {
3065            //     item.sibling
3066            //         ? item.sibling.insertAdjacentHTML('afterend', item.button.outerHTML)
3067            //         : item.parent.insertAdjacentHTML('afterbegin', item.button.outerHTML);
3068            // } catch (e) { console.warn(e); }
3069
3070            // item.button.dataset.ocuClone = true;
3071            // item.button.classList.add('ocu-hidden');
3072        });
3073
3074        self.listenEvents(forms);
3075    };
3076
3077    this.onSuccess = function(res) {
3078        if (self.integrations.recharge.isSubscription(res)) return location = '/cart';
3079
3080        var handle = function(item) { return item.properties && item.properties.frequency_num; };
3081        utils.store.set('cart_token', res.data.token);
3082
3083        var isBoldSubscription = res.data.items.some(handle);
3084
3085        if (!isBoldSubscription) return self.verify.init();
3086
3087        try {
3088            self.integrations.bold(form, res.token);
3089        } catch (e) {
3090            console.warn(e);
3091            self.verify.init();
3092        }
3093    };
3094
3095    this.onError = function(form) {
3096        form.submit();
3097    };
3098
3099    this.listenEvents = function(forms) {
3100        Array.prototype.forEach.call(forms, function(form) {
3101            var buttons = form.querySelectorAll('[data-skip-cart]');
3102
3103            Array.prototype.forEach.call(buttons, function(button) {
3104                button.addEventListener('click', function(e) {
3105                    if (self.integrations.isBoldRecuring()) {
3106                        return self.integrations.boldRecurring();
3107                    }
3108
3109                    e.stopImmediatePropagation();
3110                    e.stopPropagation();
3111                    e.preventDefault();
3112                    button.disabled = true;
3113
3114                    if (!button.closest('form')) form = document.querySelector('form[action="/cart/add"]');
3115
3116                    self.cart.add(form, button)
3117                        .then(self.cart.get)
3118                        .then(self.onSuccess)
3119                        .catch(self.onError.bind(null, form));
3120                });
3121            });
3122        });
3123    };
3124
3125    this.init();
3126}
3127
3128function BuyNow(e) {
3129    const self = this;
3130
3131    if (lqd.themePopup && lqd.isThemePopupTag) return;
3132    if (!e.isTrusted) return;
3133
3134    const form = e.target.closest('form[action="/cart/add"]') || document.querySelector('form[action="/cart/add"]');
3135    if (!form) return;
3136
3137    e.stopImmediatePropagation();
3138    e.preventDefault();
3139    e.target.disabled = true;
3140
3141    const cb = function() { self.checkout({ redirect: true }) };
3142    const onError = function(form) { form.submit() };
3143
3144    self.cart.add(form, e.target).then(cb).catch(onError.bind(null, form));
3145}
3146
3147function PublicMethod() {
3148    var self = this;
3149    var proto = self.__proto__.__proto__;
3150
3151    this.init = function() {
3152        window.oneClickUpsellGetCheckoutUrl = proto.checkout = self.create;
3153    };
3154
3155    this.create = function(config) {
3156        if (config === 'skip_cart') {
3157            return new Promise(function(resolve) { resolve(lqd.skip_cart); });
3158        }
3159
3160        self.prepare(config);
3161        return self.check();
3162    };
3163
3164    this.prepare = function(config) {
3165        const params = utils.store.get('params');
3166        self.config = config || {};
3167        self.config.incarts && utils.store.set('incarts', self.config.incarts);
3168        self.config.path && utils.store.set('amazonPath', self.config.path);
3169        self.config.button && self.helpers.payPal(self.config.button);
3170        self.config.params && self.params();
3171        self.integrations.discounts();
3172        self.helpers.params();
3173        self.handleDeclineOffer(config);
3174
3175        params.str = params.str ? '?' + params.str : '';
3176        utils.store.set('params', params);
3177    };
3178
3179    this.check = function() {
3180        return self.verify.data()
3181            .then(self.cart.save)
3182            .then(self.cart.update)
3183            .then(self.verify.upsells)
3184            .then(self.resolve)
3185            .catch(self.resolve);
3186    };
3187
3188    this.resolve = function(res) {
3189        const isError = res instanceof Error;
3190        if (isError) console.log(res);
3191
3192        res = (isError || !res) ? {} : (res.data || res.response);
3193        const data = self.build(res);
3194        utils.store.set('isPermalinkHandling', false);
3195
3196        const recharge = self.integrations.recharge;
3197        if (recharge.needRedirect(isError, lqd, data)) return recharge.redirect();
3198
3199        return self.config.redirect
3200            ? self.redirect(data)
3201            : new Promise(function(resolve) { resolve(data); });
3202  };
3203
3204    this.build = function(res) {
3205        const isEnabled = this._isEnabled(res);
3206        const params = utils.store.get('params');
3207        const amazonPath = utils.store.get('amazonPath') && utils.store.get('amazonPath')[isEnabled ? 'ocu' : 'shopify'];
3208
3209        const result = {
3210            status: isEnabled,
3211            checkout_url: (isEnabled ? res.checkout_url : '/checkout') + params.str,
3212            skip_cart: lqd.skip_cart,
3213            redirect_url: amazonPath || res.redirect_url || utils.store.get('redirect_url')
3214        };
3215
3216        params.str = '';
3217        utils.store.set('params', params);
3218
3219        return result;
3220    };
3221
3222    this.params = function() {
3223        var params = utils.store.get('params');
3224
3225        self.config.params
3226            .map(function(param) {
3227                return Object.keys(param).map(function(key) {
3228                    return {
3229                        name: encodeURIComponent(key),
3230                        value: key === 'discount' ? param[key] : encodeURIComponent(param[key])
3231                    };
3232                })[0];
3233            })
3234            .forEach(function(param) {
3235                params.arr.push(param);
3236            });
3237
3238        utils.store.set('params', params);
3239    };
3240
3241    this.getUrl = function(res) {
3242        if (utils.store.get('amazonPath')) return res.redirect_url;
3243        return res.redirect_url || res.checkout_url;
3244    };
3245
3246    this.redirect = function(res) {
3247        location = self.getUrl(res);
3248    };
3249
3250    this.handleDeclineOffer = function(config) {
3251        if (!config || config && !config.incarts) return;
3252
3253        const isDeclined = Object.keys(config.incarts).some(function(key) {
3254            return config.incarts[key].status === 'declined';
3255        });
3256
3257        utils.store.set('offerDeclined', isDeclined);
3258    };
3259
3260    this._isEnabled = function(res) {
3261        return res.status ? res.status && !/\d+/.test(res.status) : false;
3262    };
3263
3264    this.init();
3265}
3266
3267function Helpers() {
3268    var self = this;
3269
3270    this.disableButtons = function() {
3271        utils.store.set('checkoutButtonState', false);
3272    };
3273
3274    this.params = function() {
3275        var params = utils.store.get('params');
3276
3277        for (var i = 0; params.arr.length > i; i++) {
3278            var reg = new RegExp(params.arr[i].name);
3279            if (reg.test(params.str)) continue;
3280
3281            params.str += params.arr[i].name + '=' + params.arr[i].value;
3282            if (i + 1 !== params.arr.length) params.str += '&';
3283        }
3284
3285        utils.store.set('params', params);
3286    };
3287
3288    this.redirect = function(res) {
3289        if (res.redirect_url) return location.assign(res.redirect_url);
3290        if (!lqd.subscription_products_size) return location.assign(res.checkout_url);
3291
3292        const form = document.querySelector('form[action="/checkout"], form[action="/cart"]');
3293        if (!form) return self.checkout({ redirect: true });
3294
3295        form.submit();
3296    };
3297
3298    this.simulateSubmit = function() {
3299        var checkoutButtons = document.querySelectorAll(self.ocuSelectors);
3300        if (!checkoutButtons.length) return location = '/cart';
3301
3302        var last = Array.prototype.slice.call(checkoutButtons, -1)[0];
3303        last.dispatchEvent(new MouseEvent('click'));
3304    };
3305
3306    this.simulateDocumentClick = function() {
3307        var event = new Event('click');
3308        var target = document.createElement('button');
3309
3310        target.type = 'submit';
3311        target.name = 'checkout';
3312        Object.defineProperty(event, 'target', { value: target });
3313
3314        document.dispatchEvent(event);
3315    };
3316
3317    this.preventMouseDown = function(e) {
3318        e.preventDefault();
3319        e.stopPropagation();
3320        // e.stopImmediatePropagation();
3321    };
3322
3323    this.payPal = function(el) {
3324        if (el.name !== 'goto_pp' || el.value !== 'paypal_express') return;
3325
3326        var params = utils.store.get('params');
3327
3328        params.arr.push({
3329            name: el.name,
3330            value: el.value
3331        });
3332
3333        utils.store.set('requirePayPal', true);
3334        utils.store.set('params', params);
3335    };
3336
3337    this.filterFields = function(cart) {
3338        var needed_cart_fileds = utils.store.get('neededCartFileds');
3339        var needed_cart_items_fields = utils.store.get('neededCartItemsFields');
3340
3341        cart = utils.filterObject(cart, needed_cart_fileds);
3342
3343        cart.items = cart.items.map(function(item) {
3344            return utils.filterObject(item, needed_cart_items_fields);
3345        });
3346
3347        return cart;
3348    };
3349
3350    this.filterCartItemFields = function(items) {
3351        return items.map(function(item) {
3352            return Object.keys(item).reduce(function(acc, key) {
3353                if (key === 'product_description') return acc;
3354                acc[key] = item[key];
3355                return acc;
3356            }, {});
3357        });
3358    };
3359
3360    this.getProxyUrl = function() {
3361        return lqd.proxy_url || utils.store.get('proxy');
3362    };
3363
3364    this.checkSelector = function(target) {
3365        if (target.dataset.ocuCheckout === 'true') return target;
3366
3367        const checkoutButtons = document.querySelectorAll(self.ocuSelectors);
3368        const isInclude = Array.prototype.some.call(checkoutButtons, function(item) {
3369            return item === target;
3370        });
3371
3372        const isCartContentParent = target.closest('.cart_content') && target.closest('form[action="/checkout"] [type="submit"]');
3373        const isCartTemplate = lqd.template_name === 'cart' && target.closest('form[action="/cart"] [type="submit"]');
3374        const isCartAction = target.closest(self.ocuSelectors) || isCartContentParent || isCartTemplate;
3375        const notIncartUpsell = !target.closest('#nudge-offer'); // check if triggered Incart Upsell widget triggered
3376
3377        const addToCartButton = (lqd.template_name === 'product' && !target.closest('form[action^="/cart/add"]'))
3378            && (((target.name === 'add' && target.type === 'submit') ? target : null)
3379            || (target.closest('[name="add"]')) && target.closest('[type="submit"]'));
3380
3381        const parent = !isInclude
3382            && (isCartAction || target.closest('[name="checkout"]'))
3383            || addToCartButton;
3384
3385        if ((isInclude || parent) && notIncartUpsell) return isInclude ? target : parent;
3386    };
3387
3388    this.checkDirectCheckoutButtons = function(target) {
3389        return /\/checkout/.test(target.onclick && target.onclick.toString())
3390    };
3391
3392    this.checkAddToCart = function(target) {
3393        if (target.closest('form[action="/cart/add"]')) return true;
3394    };
3395
3396    this.zpPreventRedirect = function(target) {
3397        const condition = target.dataset.type === 'crm_dest'
3398            || target.dataset.zpProductRedirectLink === ''
3399            || target.dataset.zpAddToCart === ''
3400            || target.closest('[data-type="crm_dest"]')
3401            || target.closest('[data-zp-product-redirect-link]')
3402            || target.closest('[data-zp-add-to-cart]');
3403
3404        if (condition) return true;
3405    };
3406
3407    this.isOfferProduct = function() {
3408        return lqd.cart_variants_json.some(function(item) {
3409            return item.properties && item.properties._offer_id;
3410        });
3411    };
3412
3413    this.addBuyXGetYDiscount = function(res) {
3414        var discounts = res.data.items.reduce(function(acc, variant) {
3415            if (!variant.discounts[0]) return acc;
3416            let item = {
3417                item_key: variant.key,
3418                discount: variant.discounts,
3419            };
3420            if (variant.line_level_discount_allocations[0]) item.discount_data = variant.line_level_discount_allocations;
3421            acc.push(item);
3422            return acc;
3423        }, []);
3424
3425        if (discounts.length) res.data.per_item_discounts = discounts;
3426        return res;
3427    };
3428
3429    this.isBuyNow = function(e) {
3430        const selectors = utils.store.get('classList');
3431        return e.target.classList.contains(selectors.buyNow) && !e.target.classList.contains(selectors.buyNowBranded);
3432    };
3433}
3434
3435[Helpers, Integrations, Verify, Cart, PublicMethod, SkipCart, BuyNow].forEac
3435h(function(item) {
3436    Object.setPrototypeOf(item.prototype, Application.prototype);
3437});
3438
3439const script = document.createElement('script');
3440document.head.appendChild(script);
3441script.src = ocuCdn + '/axios.min.js';
3442script.onload = function() {
3443    if (window.axios) return new Application();
3444    if (window.require) {
3445        require([ocuCdn + '/axios.min.js'], function(e) {
3446            window.axios = e;
3447            new Application();
3448        });
3449    }
3450};
3451
3452function requireOptionSelectors() {
3453    if (window.Shopify && Shopify.OptionSelectors) return;
3454
3455    const s = document.createElement('script');
3456    document.head.appendChild(s);
3457    s.src = OCUIncart.option_selection;
3458}
3459
3460function Store() {
3461    var _private = {
3462        store: {
3463            ocuSelectors: '[name="checkout"], [href^="/checkout"], form[action^="/checkout"] [type="submit"], #checkout, [name="goto_pp"], .checkout_button, .checkout-button, [value="Checkout"], .cart-button-checkout, #btn-checkout, .ajaxCart-checkout-btn',
3464            addToCartButton: '[name="add"]',
3465            proxy: '/apps/secure-checkout',
3466            lqdCart: '/upsellapp_cart',
3467            checkUpsells: '/check_upsells',
3468            neededCartFileds: ['token','note','attributes','items', 'currency', 'cart_level_discount_applications'],
3469            neededCartItemsFields: ['product_id','variant_id','quantity','grams','price','line_price','title','properties','vendor','sku','key'],
3470            permalink: /cart\/(\d+:\d+(?:,\d+:\d+)*)(?:[?&]discount=([-\w! %205]+))*/,
3471            isAddToCartClicked: false,
3472            cartChanged: false,
3473            cartUpdated: false,
3474            requirePayPal: false,
3475            checkoutButtonState: false,
3476            submitted: false,
3477            amazonPayInitiated: false,
3478            redirect_url: null,
3479            offer: null,
3480            offerDeclined: false,
3481            incarts: {},
3482            tags: [],
3483            isPermalinkHandling: false,
3484            cart_token: null,
3485            classList: {
3486                buyNow: 'shopify-payment-button__button',
3487                buyNowBranded: 'shopify-payment-button__button--branded'
3488            },
3489            params: {
3490                str: '',
3491                arr: []
3492            },
3493            fallback: {
3494                timeout: 15000,
3495                id: 0
3496            },
3497            XHR: {
3498                send: XMLHttpRequest.prototype.send
3499            }
3500        },
3501        event: function(e) {
3502            return new Event('store:' + e);
3503        },
3504        emit: function(e) {
3505            document.dispatchEvent(this.event(e));
3506        }
3507    };
3508
3509    this.get = function(key) {
3510        return _private.store[key];
3511    };
3512
3513    this.set = function(key, val) {
3514        if (!_private.store.hasOwnProperty(key)) return console.error('Unavailable key! ', key);
3515        _private.emit(key);
3516        _private.store[key] = val;
3517    };
3518
3519    this.listen = function(e) {
3520        return new Promise(function(resolve) {
3521            document.addEventListener('store:' + e, resolve);
3522        });
3523    };
3524}
3525
3526}();
3527</script>
3527
3528
3529
3530
3531<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3531
3532</body>
3533
3534</html>

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