1<!DOCTYPE html> 2<html style="font-size: 16px;" lang="en-US"><head> 3 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 4 <meta charset="utf-8"> 5 <meta name="keywords" content=""> 6 <meta name="description" content=""> 7 <title>Shop</title> 8 <link rel="stylesheet" href="nicepage.css" media="screen"> 9<link rel="stylesheet" href="Shop.css" media="screen"> 10
10<script class="u-script" type="text/javascript" src="jquery.js" defer=""></script>
10 11
11<script class="u-script" type="text/javascript" src="nicepage.js" defer=""></script>
11 12 <meta name="generator" content="Nicepage 8.6.2, nicepage.com"> 13 14 15 16 17 18
18<script type="application/ld+json">{ 19 "@context": "http://schema.org", 20 "@type": "Organization", 21 "name": "Utah Brazilian Festival 2026", 22 "logo": "images/UBF_Colorful.png" 23}</script>
23 24 <meta name="theme-color" content="#478ac9"> 25 <meta property="og:title" content="Shop"> 26 <meta property="og:description" content=""> 27 <meta property="og:type" content="website"> 28
28<script> 29 (function() { 30 function gdprConfirmed() { 31 return true; 32 } 33 34 var added = false; 35 var currentScript = document.currentScript; 36 37 function insertHTML(html) { 38 var container = document.createElement('div'); 39 container.innerHTML = html; 40 container.querySelectorAll('script').forEach(s => { 41 const ns = document.createElement('script'); 42 ns.async = s.async; 43 if (s.src) { 44 ns.src = s.src; 45 } else { 46 ns.textContent = s.textContent; 47 } 48 s.replaceWith(ns); 49 }); 50 51 var fragment = document.createDocumentFragment(); 52 fragment.append(...container.childNodes); 53 54 if (currentScript && currentScript.parentNode) { 55 currentScript.after(fragment); 56 } 57 } 58 59 window._npAddGAnalytics = function () { 60 if (gdprConfirmed() && !added) { 61 var gaBody = "<!-- Google Analytics -->\n <gascript async src=\"https://www.googletagmanager.com/gtag/js?id=G-N2XQHR16XZ\"></gascript>\n <gascript>\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', 'G-N2XQHR16XZ');\n </gascript>\n <!-- End Google Analytics -->"; 62 var replacedBody = gaBody.replace(/gascript/g, 'script'); 63 insertHTML(replacedBody); 64 added = true; 65 } 66 } 67 68 window._npAddGAnalytics(); 69 })(); 70 </script>
70<meta name="referrer" content="origin">
70<script> 71 window.recaptchaRenderedV2 = false; 72 window.recaptchaFallback = false; 73 window.recaptchaSiteKeyV2 = '6LebRIorAAAAAEBCYCVXLpZKNt1KxwfbefWqDvFL'; 74 75 function gdprConfirmed() { 76 return true; 77 } 78 79 function dynamicLoadScript() { 80 var script = document.createElement('script'); 81 script.src = 'https://www.google.com/recaptcha/api.js?render=6LepmIorAAAAAOBS8hQCdl-qPMLC3n2AucNtUjPt'; 82 script.async = true; 83 script.onload = function () { 84 var event = new CustomEvent("recaptchaLoaded"); 85 document.dispatchEvent(event); 86 }; 87 document.body.appendChild(script); 88 } 89 90 function showRecaptchaError(error) { 91 error = error || ''; 92 var formError = document.querySelector('.u-form-send-error'); 93 94 if (formError) { 95 formError.innerText = 'Site Owner Error: ' + error.replace(/:[\s\S]*/, ''); 96 formError.style.display = 'block'; 97 } 98 99 console.error('Error in grecaptcha: ', error); 100 } 101 102 document.addEventListener('DOMContentLoaded', function () { 103 var confirmButtons = document.querySelectorAll('.u-cookies-consent .u-button-confirm'); 104 confirmButtons.forEach(function (button) { 105 button.onclick = dynamicLoadScript; 106 }); 107 }); 108 </script>
108 109 110
110<script> 111 document.addEventListener("DOMContentLoaded", function(){ 112 if (!gdprConfirmed()) { 113 return; 114 } 115 dynamicLoadScript(); 116 }); 117 </script>
117 118 119
119<script> 120 document.addEventListener("recaptchaLoaded", function() { 121 if (!gdprConfirmed()) { 122 return; 123 } 124 125 (function (grecaptcha, sitekey, actions) { 126 var recaptcha = { 127 execute: function (action, submitFormCb) { 128 if (typeof grecaptcha === 'undefined' || typeof grecaptcha.execute !== 'function') { 129 showRecaptchaError('reCAPTCHA script failed to load.'); 130 return; 131 } 132 133 try { 134 grecaptcha.execute(sitekey, {action: action}).then((token) => { 135 if (!token) { 136 throw new Error('Empty token received from reCAPTCHA'); 137 } 138 139 var forms = document.getElementsByTagName('form'); 140 141 for (var i = 0; i < forms.length; i++) { 142 var response = forms[i].querySelector('[name="recaptchaResponse"]'); 143 144 if (!response) { 145 response = document.createElement('input'); 146 response.setAttribute('type', 'hidden'); 147 response.setAttribute('name', 'recaptchaResponse'); 148 forms[i].appendChild(response); 149 } 150 151 response.value = token; 152 } 153 154 submitFormCb(); 155 }).catch((e) => { 156 showRecaptchaError(e.message); 157 }); 158 } catch (e) { 159 showRecaptchaError(e.message); 160 } 161 }, 162 163 executeContact: function (submitFormCb) { 164 recaptcha.execute(actions['contact'], submitFormCb); 165 } 166 }; 167 168 window.recaptchaObject = recaptcha; 169 window.grecaptchaObject = grecaptcha; 170 })( 171 grecaptcha, 172 173 '6LepmIorAAAAAOBS8hQCdl-qPMLC3n2AucNtUjPt', 174 {'contact': 'contact'} 175 ); 176 }); 177 </script>
177 178 179
179<script> 180 window.showRecaptchaV2 = function (form) { 181 if (!form || !form.length) { 182 return; 183 } 184 if (typeof window.grecaptchaObject === 'undefined' || !window.grecaptchaObject) { 185 return; 186 } 187 188 const formEl = form[0]; 189 190 let container = document.getElementById('recaptcha-v2-container'); 191 if (!container) { 192 container = document.createElement('div'); 193 container.id = 'recaptcha-v2-container'; 194 formEl.parentElement.appendChild(container); 195 } 196 197 let tokenReceived = false; 198 let timeoutHandle; 199 200 if (window.recaptchaRenderedV2 === false || typeof window.recaptchaRenderedV2 === 'undefined') { 201 window.recaptchaRenderedV2 = window.grecaptchaObject.render('recaptcha-v2-container', { 202 'sitekey': window.recaptchaSiteKeyV2, 203 'size': 'invisible', 204 'callback': function (token) { 205 clearTimeout(timeoutHandle); 206 207 if (!token) { 208 showRecaptchaError('reCAPTCHA v2 token was empty. Please try again.'); 209 return; 210 } 211 212 tokenReceived = true; 213 214 let recaptchaResponseV2 = formEl.querySelector('input[name="recaptchaResponseV2"]'); 215 216 if (!recaptchaResponseV2) { 217 recaptchaResponseV2 = document.createElement('input'); 218 recaptchaResponseV2.type = 'hidden'; 219 recaptchaResponseV2.name = 'recaptchaResponseV2'; 220 formEl.appendChild(recaptchaResponseV2); 221 } 222 223 recaptchaResponseV2.value = token; 224 225 if (window.recaptchaSiteKeyV2) { 226 let siteKeyInput = formEl.querySelector('input[name="siteKey"]'); 227 228 if (siteKeyInput) { 229 siteKeyInput.value = window.recaptchaSiteKeyV2; 230 } 231 } 232 233 document.querySelectorAll('.u-form-send-error').forEach(el => { 234 el.style.display = 'none'; 235 }); 236 237 const event = new CustomEvent('submit', { 238 detail: { recaptchaPassed: true }, 239 bubbles: true, 240 cancelable: true, 241 }); 242 243 formEl.dispatchEvent(event); 244 }, 245 'error-callback': function () { 246 clearTimeout(timeoutHandle); 247 showRecaptchaError('reCAPTCHA v2 error. Please try again.'); 248 }, 249 'expired-callback': function () { 250 clearTimeout(timeoutHandle); 251 } 252 }); 253 254 window.grecaptchaObject.reset(window.recaptchaRenderedV2); 255 256 setTimeout(() => { 257 window.grecaptchaObject.execute(window.recaptchaRenderedV2); 258 }, 300); 259 260 timeoutHandle = setTimeout(function () { 261 if (!tokenReceived) { 262 showRecaptchaError('The Contact Form could not be submitted because Google reCAPTCHA v3 detected unusual activity from your connection. Please try again later, or complete the reCAPTCHA v2 challenge if it appears.'); 263 } 264 }, 120000); 265 } else { 266 window.grecaptchaObject.reset(window.recaptchaRenderedV2); 267 268 setTimeout(() => { 269 window.grecaptchaObject.execute(window.recaptchaRenderedV2); 270 }, 300); 271 } 272 }; 273 </script>
273 274<meta data-intl-tel-input-cdn-path="intlTelInput/"></head> 275 <body data-path-to-root="./" data-include-products="true" class="u-body u-clearfix u-xl-mode" data-lang="en"><header class="u-clearfix u-header u-header" id="sec-8a6e"><div class="u-clearfix u-sheet u-sheet-1"> 276 <a href="#" class="u-image u-logo u-image-1" data-image-width="1309" data-image-height="1201"> 277 <img src="images/UBF_Colorful.png" class="u-logo-image u-logo-image-1"> 278 </a> 279 <nav class="u-menu u-menu-one-level u-offcanvas u-menu-1" role="navigation"> 280 <div class="menu-collapse" style="font-size: 1rem; letter-spacing: 0px;"> 281 <a class="u-button-style u-custom-left-right-menu-spacing u-custom-padding-bottom u-custom-top-bottom-menu-spacing u-hamburger-link u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base" href="#" tabindex="-1" aria-label="Open menu" aria-controls="1b27"> 282 <svg class="u-svg-link" viewBox="0 0 24 24"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#menu-hamburger"></use></svg> 283 <svg class="u-svg-content" version="1.1" id="menu-hamburger" viewBox="0 0 16 16" x="0px" y="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><g><rect y="1" width="16" height="2"></rect><rect y="7" width="16" height="2"></rect><rect y="13" width="16" height="2"></rect> 284</g></svg> 285 </a> 286 </div> 287 <div class="u-custom-menu u-nav-container"> 288 <ul class="u-nav u-unstyled u-nav-1" role="menubar"><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base u-nav-link-2" href="./">Home</a> 289</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base u-nav-link-2" href="About.html">About</a> 290</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base u-nav-link-2" href="Shop.html">Shop</a> 291</li></ul> 292 </div> 293 <div class="u-custom-menu u-nav-container-collapse" id="1b27" role="region" aria-label="Menu panel"> 294 <div class="u-black u-container-style u-inner-container-layout u-opacity u-opacity-95 u-sidenav"> 295 <div class="u-inner-container-layout u-sidenav-overflow"> 296 <div class="u-menu-close" tabindex="-1" aria-label="Close menu"></div> 297 <ul class="u-align-center u-nav u-popupmenu-items u-unstyled u-nav-2" role="menubar"><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link" href="./">Home</a> 298</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link" href="About.html">About</a> 299</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link" href="Shop.html">Shop</a> 300</li></ul> 301 </div> 302 </div> 303 <div class="u-black u-menu-overlay u-opacity u-opacity-70"></div> 304 </div> 305 </nav> 306 <a href="https://www.paypal.com/donate/?hosted_button_id=HC4E6XPQ4BNSN" class="u-active-none u-border-2 u-border-no-left u-border-no-right u-border-no-top u-border-palette-1-base u-btn u-btn-rectangle u-button-style u-hover-none u-none u-btn-1" target="_blank">Donate</a> 307 </div></header> 308 <section class="u-clearfix u-section-1" id="shop-section"> 309 <div class="u-clearfix u-sheet u-sheet-1"> 310 <div class="shop-container"> 311 <h1>Festival T‑Shirts</h1> 312 <p>Support the Utah Brazilian Festival â grab your festival t-shirt!</p> 313 <p>Buy a shirt and you'll have a space in the VIP area of the festival.</p> 314 315 <div class="shop-product"> 316 <div class="shop-product-image"> 317 <img src="images/tshirt.png" alt="Utah Brazilian Festival T-Shirt" width="560" height="581"> 318 </div> 319 <div class="shop-product-details"> 320 <h2>Utah Brazilian Festival T-Shirt</h2> 321 <p class="shop-price">$30.00</p> 322 323 <div class="shop-options"> 324 <div class="shop-field"> 325 <label for="shirt-size">Size</label> 326 <select id="shirt-size" class="u-input u-input-rectangle"> 327 <option value="X-Small">X-Small</option> 328 <option value="Small">Small</option> 329 <option value="Medium" selected="">Medium</option> 330 <option value="Large">Large</option> 331 <option value="X-Large">X-Large</option> 332 <option value="XX-Large">XX-Large</option> 333 </select> 334 </div> 335 336 <div class="shop-field"> 337 <label for="shirt-qty">Quantity</label> 338 <input type="number" id="shirt-qty" class="u-input u-input-rectangle" value="1" min="1" max="20"> 339 </div> 340 </div> 341 342 <a href="#" id="add-to-cart-btn" class="u-active-none u-btn u-btn-rectangle u-button-style u-hover-none u-btn-1">
342Add to Cart</a> 343 </div> 344 </div> 345 </div> 346 </div> 347 </section> 348 <section class="u-align-left u-clearfix u-container-align-left u-section-2" id="cart-section"> 349 <div class="u-clearfix u-sheet u-sheet-1"> 350 <div class="shop-container"> 351 <h2>Your Cart</h2> 352 <div id="cart-empty-message" class="shop-cart-empty">Your cart is empty. Add a t-shirt above to get started.</div> 353 <div id="cart-items" class="shop-cart-items" hidden=""></div> 354 <div id="cart-summary" class="shop-cart-summary" hidden=""> 355 <p><strong>Items:</strong> <span id="cart-item-count">0</span></p> 356 <p><strong>Total:</strong> $<span id="cart-total">0.00</span></p> 357 </div> 358 </div> 359 </div> 360 </section> 361 <section class="u-align-left u-clearfix u-container-align-left u-section-3" id="checkout-section"> 362 <div class="u-clearfix u-sheet u-sheet-1"> 363 <div class="shop-container"> 364 <div class="shop-payment"> 365 <h3>Complete Your Payment</h3> 366 <p>Total due: <strong>$<span id="checkout-total">0.00</span></strong></p> 367 368 <a href="#" id="pay-stripe" class="u-active-none u-btn u-btn-rectangle u-button-style u-hover-none u-btn-1">Pay with Card</a> 369 </div> 370 </div> 371 </div> 372 </section> 373 <footer class="u-align-center u-clearfix u-container-align-center u-footer u-grey-80 u-footer" id="sec-6a69"><div class="u-clearfix u-sheet u-sheet-1"> 374 <p class="u-small-text u-text u-text-variant u-text-1">Utah Brazilian Festival</p> 375 </div></footer> 376
376<script class="u-script" type="text/javascript" src="Shop.js" defer=""></script>
vendor: 1 bytes, line 376
376
377<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"fb7f3efd2dd8411881534e9f5f09ee99","r":1,"spa":2}' crossorigin="anonymous"></script>
377 378</body></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.