Showing source for: https://my.liquidandgrit.com/
Duration: 1.025371s
Server: Apache


<!DOCTYPE html>
<!--[if IE 7]> <html class="no-js lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<html class="no-js" lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge"><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"cea68d43c0",applicationID:"54644924",browserID:"254997677"};;/*! For license information please see nr-loader-rum-1.324.0.min.js.LICENSE.txt */
(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),a=0===Object.keys(r).length?e:r;for(let s in a)if(void 0!==e[s])try{if(null===e[s]){r[s]=null;continue}Array.isArray(e[s])&&Array.isArray(t[s])?r[s]=Array.from(new Set([...e[s],...t[s]])):e[s]instanceof Map||e[s]instanceof Set||e[s]instanceof Date||e[s]instanceof RegExp?r[s]=e[s]:"object"==typeof e[s]&&null!==t[s]&&"object"==typeof t[s]?r[s]=i(e[s],t[s]):r[s]=e[s]}catch(e){r[s]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>s});var n=r(384),i=r(8122);const a={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function s(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,a)])},7699(e,t,r){"use strict";var n=r(860);const i=1e6,a={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,i,"KC",0,a,"qh",0,"SESSION_ERROR","zd",0,5e5])},9324(e,t,r){"use strict";r.d(t,["xv",0,"1.324.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,a="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),s=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===s?.document?.visibilityState),c=""+s?.location,u=/iPad|iPhone|iPod/.test(s.navigator?.userAgent),d=u&&"undefined"==typeof SharedWorker,l=((()=>{const e=s.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)());r.d(t,["OF",0,u,"RI",0,i,"WN",0,l,"bv",0,a,"gm",0,s,"m",0,c,"mw",0,o,"sb",0,d,"zk",0,()=>{const e=s?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<s.performance.now())return e}])},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>u,x3:()=>c});var n=r(3241),i=r(3606),a=r(860),s=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:a.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&d(e))}function u(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,d(e)}}function d(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const a=e.ee,o=i.i.handlers;if(a&&!a.aborted&&a.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=a.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof s.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}a.isolatedBacklog||delete o[t],a.backlog[t]=null,a.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],a=e[2];n.apply(i,a)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),a=r(2646),s=r(5607);const o="nr@context:".concat(s.W),c=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&u.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,a){!1!==a&&(a=!0);if(c.aborted&&!i)return;t&&a&&t.emit(e,r,n);var o=g(n);m(e).forEach(e=>{e.apply(o,r)});var u=v()[s[e]];u&&u.push([f,e,r,o]);return o},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{s[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,o,()=>new a.y(o)):new a.y(o)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),u=(0,n.Zm)();u.ee||(u.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,a){a?(a.buffer([e],i),a.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(9908);a.on=s;var i=a.handlers={};function a(e,t,r,a){s(a||n.d,i,e,t,r)}function s(e,t,r,i,a){a||(a="feature"),e||(e=n.d);var s=t[a]=t[a]||{};(s[r]=s[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function a(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>a,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,a=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const s=[];for(var o=0;o<e;o++)s.push(i(r,a++).toString(16));return s.join("")}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(944);const i=new Map;function a(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),a=t.includes("nrWrapper");return r||a||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},5289(e,t,r){"use strict";r.d(t,{GG:()=>s,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function a(){return"undefined"==typeof document||"complete"===document.readyState}function s(e,t){if(a())return e();const r=(0,i.J)(e),s=setInterval(()=>{a()&&(clearInterval(s),r())},500);(0,n.sp)("load",r,t)}function o(e){if(a())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(a())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>d,dV:()=>u,pV:()=>l});var n=r(6154),i=r(1863),a=r(944),s=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function u(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,s.i)(...Object.values(e.o))),e}function d(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,a.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),u(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>a,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function a(e,t,r){(0,n.sp)("pagehide",e,t,r)}},9300(e,t,r){"use strict";r(860).K7.ajax;r.d(t,["mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>a});var n=r(9566),i=r(1741);class a extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>a});var n=r(944),i=r(4261);class a{#e(e,...t){if(this[e]!==a.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>d});var n=r(3241),i=r(9908),a=r(1863),s=r(944),o=r(3969),c=r(8362),u=r(860);function d(e,t,r,a){const d=a||r;!d||d[e]&&d[e]!==c.d.prototype[e]||(d[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,u.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,s.R)(23,e)}})}function l(e,t,r,n,s){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(s||null===r)&&(0,i.p)("api-"+n,[(0,a.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",a="browser/blobs",s="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},u={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:a,[o.sessionReplay]:a,[o.logging]:s,[o.genericEvents]:"ins"};r.d(t,["$J",0,u,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,s,"df",0,a,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],a=t[n++];r.o(e,i)?0===a&&n++:0===a?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:a})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>"nr-rum-1.324.0.min.js",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.324.0.PROD:";r.l=(n,i,a,s)=>{if(e[n])return void e[n].push(i);let o,c;if(void 0!==a){const e=document.getElementsByTagName("script");for(var u=0;u<e.length;u++){const r=e[u];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+a){o=r;break}}}if(!o){c=!0;var d={296:"sha512-Pjy0Jxmo6oAG6oGKLKrf8x8xyaSM1NuL7vLGv9xRLEw0hrpERDruLI5RxlCHNy0NpMyEPWhlC34zujXIR3qJPQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+a),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),d[s]&&(o.integrity=d[s])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={374:0,840:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const a=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=a);const s=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(s,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,a,s]=n;var o,c,u=0;if(i.some(t=>0!==e[t])){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(s)s(r)}for(t&&t(n);u<i.length;u++)c=i[u],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.324.0.PROD"]=self["webpackChunk:NRBA-1.324.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),a=r(1741);var s=r(2555),o=r(981);t.K7.genericEvents,o.R.PA,o.R.UA,o.R.BP;const c={RESOURCES:"experimental.resources",REGISTER:"register"};var u=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var l=r(2614),f=r(944),g=r(8122);const p="[data-nr-mask]",m=e=>(0,g.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:u.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(c.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(c.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,f.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(c.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:l.wk,inactiveMs:l.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(p):""===t||null===t?e.mask_selector=p:(0,f.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,f.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,f.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var h=r(6154),v=r(9324);let b=0;const y={buildEnv:"PROD",distMethod:"CDN",version:v.xv,originTime:h.WN},_={consented:!1},w={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||_.consented},set consented(e){_.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++b},listeningForIframeMessages:!1},R="BA";var A=r(7836),x=r(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908);const k="newrelic-iframe-";function T(e,t={},n,o){let{init:c,info:u,loader_config:d,runtime:l={},exposed:f=!0}=t;if(!u){const e=(0,i.pV)();c=e.init,u=e.info,d=e.loader_config}var p;e.init=m(c||{}),e.loader_config=(p=d||{},(0,g.a)(p,E)),u.jsAttributes??={},h.bv&&(u.jsAttributes.isWorker=!0),e.info=(0,s.D)(u);const v=e.init;e.runtime??=(e=>{const t=(0,g.a)(e,w),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:R,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(a.W.prototype).forEach(r=>{const n=a.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=A.ee.get(e.agentIdentifier),e.exposed=f,(0,x.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&h.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(k)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var j=r(1863),P=r(4261),N=r(1738);var O=r(1687),M=r(4234),I=r(5289),D=r(7767);function V(e){return!!(0,i.dV)().o.MO&&(0,D.V)(e)&&!0===e?.session_trace.enabled}var W=r(6389),B=r(7699);const C=new WeakSet,K=new WeakMap;class U extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,W.J)(()=>{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,s.f)(e.info))return(0,f.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(K.has(e))return K.get(e);const i=(async()=>{if((0,D.V)(e.init))try{const{setupAgentSession:t}=await r.e(296).then(r.bind(r,1768));t(e)}catch(e){(0,f.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(B.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await Promise.resolve().then(function(){const e=new Error("Cannot find module '../../loaders/configure/iframe-message-handler'");throw e.code="MODULE_NOT_FOUND",e});t(e)}catch(e){(0,f.R)(23,e)}const[{Connector:i},{Harvester:a}]=await Promise.all([r.e(296).then(r.bind(r,6589)),r.e(296).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new a(e);const s=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(s.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();K.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,f.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,f.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};h.RI?(0,I.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return V(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!C.has(e)&&(C.add(e),!(0,s.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var L=r(6630);class F extends U{static featureName=L.T;constructor(e){var t;super(e,L.T),this.setupInspectionEvents(),t=e,(0,N.Y)(P.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+P.Fw,[(0,j.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(296).then(r.bind(r,908)):r.e(296).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,x.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,I.sB)(t=>{e(t,"DOMContentLoaded")}),(0,I.GG)(t=>{e(t,"load")}),(0,I.Qr)(t=>{e(t,"navigate")}),this.ee.on(l.tS.UPDATE,(e,t)=>{(0,x.W)({type:"lifecycle",name:"session",data:t})})}}class G extends e.d{constructor(e){var t;(super(),h.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(F),T(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(P.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,P.cD,n);(0,f.R)(40,typeof r)}else(0,f.R)(39,typeof e)},t),function(e){(0,N.Y)(P.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,f.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,P.Dl,!0)},e)}(this),function(e){(0,N.Y)(P.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,P.nb,!1);(0,f.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(P.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+P.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,f.R)(65,typeof t)},e)}(this),this.run()):(0,f.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,f.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,f.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var H=r(2843),z=r(782);class Y extends U{static featureName=z.T;constructor(e){super(e,z.T),h.RI&&((0,H.u)(()=>(0,S.p)("docHidden",[(0,j.t)()],void 0,z.T,this.ee),!0),(0,H.G)(()=>(0,S.p)("winPagehide",[(0,j.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9981))))}}var Z=r(3969);class q extends U{static featureName=Z.TZ;constructor(e){super(e,Z.TZ),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9623)))}}new G({features:[F,Y,q],loaderType:"lite"})})()})();</script>
	<title>Premium Access - Liquid and Grit</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name = "format-detection" content = "telephone=no" />
        <meta name="google-site-verification" content="rO94SQCBnXixA8EoQyKn3LDI21nfFF06m11rPSNoT00" />
    	
	<script> 
		 var csrfHash = '3980174c18d0168bc6dc6ff9dae01a66'; 
	</script>
    <script type="text/javascript">
    function inIframe () {
		// return true;
        try {
            return window.self !== window.top;
        } catch (e) {
            return true;
        }
    }
	    </script>

        <script src="/theme/lib/js/jquery-2.1.4.min.1787178010.js" data-cfasync="false"></script>
<script src="/theme/lib/js/jquery-migrate-1.2.1.min.1787178010.js" data-cfasync="false"></script>

    <script src="/theme/lib/js/jquery-ui-1.10.1.min.1787178010.js" data-cfasync="false"></script>
<script src="/theme/lib/js/sabramedia-v4.1788454062.js" data-cfasync="false"></script>

                        
        
	<link href="https://my.liquidandgrit.com/theme/pigeon/ui/css/fonts.1787178011.css" rel="stylesheet" type="text/css" media="screen" />
		<link href="/theme/lib/css/pigeon.1792181466.css" rel="stylesheet" type="text/css" media="screen" />
	<link href="/theme/lib/css/jquery.dropdown.1787178010.css" rel="stylesheet" type="text/css" media="screen" />
	<link href="https://my.liquidandgrit.com/theme/pigeon/ui/css/site-specific/gen-myliquidandgritcom.1791998615.css" rel="stylesheet" type="text/css" media="screen" />
			<link rel="icon" type="image/x-icon" href="https://myliquidandgritcom.s3.us-east-va.io.cloud.ovh.us/33fa79d62d9cc5374d82c4c4cd2dd6c2.ico" />
		<link href="https://my.liquidandgrit.com/theme/pigeon/ui/css/site-specific/liquid-grit.1787178011.css" rel="stylesheet" type="text/css" media="screen" />
	<link href="https://my.liquidandgrit.com/theme/pigeon/ui/css/print.1787178011.css" rel="stylesheet" type="text/css" media="print" />

				<script src="/theme/lib/js/modernizr-2.6.1-respond-1.1.0.min.1787178010.js" data-cfasync="false"></script>
<!--	<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>-->
	<script>
        jQuery.voLocale = {
            confirmationRequired: 'Confirmation Required',
            okay: 'Ok',
            cancel: 'Cancel'
        };
	</script>

	<script src="/theme/lib/js/cmn-form.1790695446.js" data-cfasync="false"></script>
<script src="/theme/lib/js/cmc-cart.1787178010.js" data-cfasync="false"></script>
<script src="/theme/lib/js/jquery.kinetic.min.1787178010.js" data-cfasync="false"></script>


    
    
	


                            <script src="/theme/lib/js/vo-pigeon-login.1787233205.js" data-cfasync="false"></script>
    
	<script type="text/javascript">
        
        function voScrollToBlock( element )
        {
        	var scrollToBlock = $(element);
            var scrollTop = scrollToBlock.length ? scrollToBlock.offset().top - 15 : 0;
            if( navigator.userAgent.match(/(iPod|iPhone|iPad)/) && !window.MSStream){
                window.top.postMessage($.toJSON({'action':'scrollPigeon','scrollTop':scrollTop}),'*');
            }else{
                // $('html,body').animate({scrollTop:scrollTop},500);
                $('html,body').scrollTop(scrollTop);
            }
        }
        
        function voShowLogin()
        {
                        var voLoginBlock = $('.vo-login,.section.login');
            if( ! voLoginBlock.length ){
                document.location.href = '/';
                return;
            }

                        $('.vo-lead-message,.vo-access-options,.vo-more-access-options,.modal-on-demand,.section.plans,.vo-subscribe,.vo-freemium,.vo-combo-card,.vo-combo-brand-chooser,.vo-combo-brand-summary').hide();
                        $('.vo-sign-in-prompt').show();
			voLoginBlock.fadeIn('fast', function(){
				voScrollToBlock('#login');
				if( $.voPasskey ){
					$.voPasskey.init();
				}
			});
        }

                function voFreemiumLeads()
        {
            return $('.vo-freemium:not(.vo-freemium--off):not(.vo-freemium--set-aside)').length > 0;
        }

        function voShowAccessOptions()
        {
                        if( voFreemiumLeads() ){
                voShowFreemium();
                return;
            }

        	var voLogin = $('.vo-login,.section.login');
        	if( voLogin.length ){
                                voLogin.hide();
                
				$('.vo-lead-message,.vo-access-options,.vo-more-access-options,.modal-on-demand,.section.plans,.vo-subscribe,.vo-combo-card,.vo-combo-brand-chooser,.vo-combo-brand-summary').fadeIn('fast', function(){
					voScrollToBlock('.homepage .main-content:first');
				});
            }else{
                $('.vo-lead-message,.vo-access-options,.vo-more-access-options,.modal-on-demand,.section.plans,.vo-subscribe,.vo-combo-card,.vo-combo-brand-chooser,.vo-combo-brand-summary').fadeIn('fast', function(){
                    voScrollToBlock('.homepage .main-content:first');
                });
            }

                    }

                function voShowPlanOptions()
        {
            $('.vo-login,.section.login,.vo-freemium').hide();
                        $('.vo-sign-in-prompt').show();
            $('.vo-freemium-return').show();
            $('.vo-lead-message,.vo-access-options,.vo-more-access-options,.modal-on-demand,.section.plans,.vo-subscribe,.vo-combo-card,.vo-combo-brand-chooser,.vo-combo-brand-summary').fadeIn('fast');
                        voScrollToBlock( $('#sections,.vo-sign-in-prompt:visible,.main-content:visible').first() );
        }

                function voShowFreemium()
        {
                        $('.vo-login,.section.login,.vo-lead-message,.vo-access-options,.vo-more-access-options,.modal-on-demand,.section.plans,.vo-subscribe,.vo-combo-card,.vo-combo-brand-chooser,.vo-combo-brand-summary,.vo-freemium-return,.vo-sign-in-prompt').hide();
            $('.vo-freemium').fadeIn('fast');
            voScrollToBlock('.vo-freemium');
        }

                var voReopenPlans = window.location.hash === '#vo-plans';
        if( voReopenPlans && window.history.replaceState ){
            window.history.replaceState(null, '', window.location.pathname + window.location.search);
        }

        function voReloadOnPlans()
        {
                        if( window.history.replaceState ){
                window.history.replaceState(null, '', window.location.pathname + window.location.search + '#vo-plans');
            }
            window.location.reload();
        }

                function voJumpTo( block )
        {
            if( voReopenPlans && block === 'subscriptions' ){
                voReopenPlans = false;
                block = 'plans';
            }
            switch( block ){
                case 'login': voShowLogin(); break;
                case 'subscriptions': voShowAccessOptions(); break;
                                case 'plans':
                    if( voFreemiumLeads() ) voShowPlanOptions();
                    else voShowAccessOptions();
                    break;
            }
        }

		var setParentSizes=false;

				if(inIframe()){
            var callingOrigin = '';

            // The embedding page's origin is otherwise only learned in receiveMessage() below, from
            // the first message pigeon.js posts in on load. Two cases never deliver one: an embed on
            // our own origin, where the MetaMask guard returns before the assignment, and any load
            // where that message doesn't arrive. Everything that reports back to the parent then
            // throws on an empty targetOrigin, so seed it from the referrer, which for a framed
            // document is the page doing the framing. Not '*' — the payloads carry checkout detail.
            if( !callingOrigin && document.referrer ){
                try{
                    callingOrigin = new URL(document.referrer).origin;
                }catch(referrerError){
                    // Leave it empty; the senders all treat that as "no parent to tell".
                }
            }
			$(document).ready(function(){
			    var $html = $('html');
                
                $html.css('background','none').addClass('in-iframe');
                if( $html.hasClass('modal') ){
                    $('body')
                        .css('cssText','background: none repeat scroll 0 0 rgba(18, 20, 22, 0) !important')
                        .css({
                            '-webkit-overflow-scrolling':'touch',
                            'overflow':'auto'
                        });
                }else{
                    $('body')
                        .css('cssText','background: none repeat scroll 0 0 rgba(255, 255, 255, 1) !important')
                        .css({
                            '-webkit-overflow-scrolling':'touch',
                            'overflow':'auto'
                        });
                }

				$('#header').hide();
				$('#footer').hide();

				// Hide main content blocks so the plugin can determine which ones to show
                				$('.vo-login,.vo-lead-message,.vo-access-options,.vo-more-access-options').hide();
				
				$('.vo-hide-in-modal').hide();
				$('.vo-show-in-modal').show();

				window.addEventListener("message", receiveMessage, false);
				window.paiPromise = new $.Deferred();

				function receiveMessage(e)
				{
					// Don't receive postMessages from same Pigeon subdomain. This is the hack to fix the metaMask issue
					// (its injected script posts within this window). The exception is our own parent: a publisher
					// on Pigeon CMS (pharmadispatch.com) opens this dialog from the same origin, and dropping
					// its jumpTo left every block hidden -- an empty dark overlay.
                    					if( e.origin == 'https://my.liquidandgrit.com' && !( window.parent !== window && e.source === window.parent ) ){
						return true;
					}
										if(e.origin == 'https://js.stripe.com'){
						return true;
					}

                    try{
                        var input = $.parseJSON(e.data);
					}catch(tryEvent){
						$.log('Pigeon: Improperly formatted data object.');
						$.log(e);
						return true;
					}
					// Only a message that speaks our protocol may name the origin we reply to.
					// This used to adopt the origin of the first message that merely PARSED as
					// JSON, and on a page with Stripe Elements that is a js.stripe.com frame
					// long before pigeon.js gets a word in. Once poisoned, every
					// parent.postMessage(..., callingOrigin) on the page throws
					// "target origin ... does not match the recipient window's origin" --
					// silently for the getSizes reply, which is caught, and fatally for the
					// combo-checkout notifications, which are on the money path.
					// Reproduced on my.gtreview.com; invisible locally, where no Stripe frame
					// is on the page to win the race.
					if( ! callingOrigin && input && typeof input.action === 'string' )
						callingOrigin = e.origin;

					// Check origin for security
					//if (e.origin !== "//" || ! input.action )
					// 	return;

					switch( input.action ){
                        case 'getSizes':
                        	try {
								setParentSizes = {
									'action': 'childSizes',
									'iframeId': typeof (input.iframeId) != 'undefined' ? input.iframeId : '',
									'window': {'height': $(window).height()},
									'document': {'height': $(document).height()}
								};
								parent.postMessage($.toJSON(setParentSizes), callingOrigin);
							}catch(e){
                        		//
                            }
                            break;
						case 'resize':
							break;

                        case 'jumpTo':
                            voJumpTo(input.block);
                        	break;
                                                case 'paiAuth':
                            window.paiPromise = $.voAjax({
                                actionController:'/action/some-auth-endpoint',
                                dataObject:{'token':input.token},
                                success:[function(data){

                                }]
                            });
							break;
					}
				}

								$('a').not('.check-delivery-rules,.close-iframe,.vo-close-iframe-and-reload,.ignore').on('click tap touchstart',function(e){
					e.preventDefault();
					window.top.postMessage($.toJSON({'action':'link', 'url':$(this).get(0).href}),'*');
				});
				
				// An Image block linked to a promotion (.ignore, so neither branch above touches
				// it). The 'link' action would send the publisher's whole page there, and the
				// 'modal' action can't carry a query string — pigeon.js appends
				// "?access_method=iframe" to the path, which mangles a combo's ?promo=<hash>. So
				// the frame follows the link itself, taking the params pigeon.js opened it with:
				// access_method keeps it a modal page, _pipses keeps the reader's session pin.
				$(document).on('click', 'a.vo-image-promo-link', function(e){
					e.preventDefault();
					var target = new URL($(this).prop('href')),
						current = new URLSearchParams(window.location.search);
					$.each(['access_method', 'modalControl', '_pipses', 'content_id', 'content_title'], function(i, key){
						if( current.has(key) ) target.searchParams.set(key, current.get(key));
					});
					window.location.href = target.href;
				});


				$('body').click(function(e){
					// "Clicked the backdrop, so close" — and .main-content is how the card is
					// recognised. The sign-in prompt is page content that deliberately sits
					// OUTSIDE the card (a collapsed line above it, not a card of its own), so
					// without naming it here, clicking "Already have an account? Sign in" inside
					// a modal closed the modal instead of opening the login.
					if( $(e.target).closest('.main-content, .vo-sign-in-prompt').length == 0 ){
						if( $('#cmc_subscribe-complete').length){
							window.top.postMessage($.toJSON({'action':'reload'}),'*');
						}else{
                            window.top.postMessage($.toJSON({'action':'closePigeon'}),'*');
						}
					}
				});

												window.voLoginComplete = function(){
										parent.postMessage($.toJSON({'action':'reload'}),callingOrigin);
									};

				$(document).ajaxSuccess(function(e,xhr,settings){
					if( settings.url == '/action/public/vo/login-limited' || settings.url == '/action/public/cmc/register' ){
						var data = $.parseJSON(xhr.responseText);

						// mfa_required means the PASSWORD was right and nothing more. Treating it
						// as success tore the popup down before the code could be entered, and
						// reloaded the parent to a still-logged-out page — making login through
						// the SDK impossible for any tenant with multi-factor switched on.
						// vo-mfa.js calls voLoginComplete() once the challenge really is done.
						if( ! data.error_message && ! data.login_limit && ! data.mfa_required ){
							window.voLoginComplete();
						}
					}
				});

				$('.voForm.use-credit').data('ajaxSuccess',function(data){
					if( ! data.error_message ){
						parent.postMessage($.toJSON({'action':'link','url':data.reload_link}),callingOrigin);
					}
				});

				$('.close-iframe').on('click tap touchstart',function(e){
					e.preventDefault();
                    window.top.postMessage($.toJSON({'action':'closePigeon'}),'*');
				});

				$('.vo-close-iframe-and-reload').on('click tap touchstart',function(e){
					e.preventDefault();
					parent.postMessage($.toJSON({'action':'reload'}),callingOrigin);
				});
				// For OTC
                $('button.vo-allow-all').on('click tap touchstart',function(){
                    // Accept all cookies and close dialog
                    parent.postMessage($.toJSON({'action':'closePigeon','otc':0}),callingOrigin);
                });
				// FOR OTC
                $('.vo-link-to-out').on('click tap touchstart',function(e){
					e.preventDefault();
                    // Accept all cookies and close dialog
                    parent.postMessage($.toJSON({'action':'link','url':$(this).get(0).href}),callingOrigin);
                });

				$('.vo-close-iframe-and-reload').on('click tap touchstart',function(e){
					e.preventDefault();
                    window.top.postMessage($.toJSON({'action':'reload'}),'*');
				});

				$('a.scroll-to-login').on('click tap touchstart',function(e){
					e.preventDefault();
                    voScrollToBlock('#login');
				});

				$('a.scroll-to-options').on('click tap touchstart',function(e){
					e.preventDefault();
                    voScrollToBlock('.homepage .subscription-options');
				});
			});
		}
        $(document).ready(function(){
			            $('a.vo-show-login').on('click tap touchstart',function(e){
                e.preventDefault();
                $('.vo-hide-in-modal').hide();
                $('.vo-show-in-modal').show();
                voShowLogin();
            });

            $('a.vo-show-options').on('click tap touchstart',function(e){
                e.preventDefault();
                $('.vo-hide-in-modal').hide();
                $('.vo-show-in-modal').show();
                voShowAccessOptions();
            });

            $('a.vo-show-freemium').on('click tap touchstart',function(e){
                e.preventDefault();
                $('.vo-hide-in-modal').hide();
                $('.vo-show-in-modal').show();
                voShowFreemium();
            });

                        if( $('.vo-freemium--set-aside').length ){
                $('.vo-freemium-return').show().closest('.login-banner-prompt').show();
            }

            // The optional button under an Image & Text block. Delegated on document, unlike the
            // two above: a layout block can be redrawn by the editor after this runs, and a
            // handler bound to the element itself would not survive that.
            //
            // A scroll rather than an href to an id: the plan options block has no id of its own,
            // and giving it one would leave "#plans" in the reader's history for a page they
            // never left. voScrollToBlock also handles iOS, where the page is usually inside the
            // pigeon.js frame and only the top window can scroll.
            $(document).on('click tap', 'a.vo-cta-plans', function(e){
                e.preventDefault();

                // TWO classes, because the Plan Options block renders differently per layout
                // type. A single plan's page wraps cmc/form-subscriptions.tpl in
                // .vo-plan-options; a combo page hands off to cmc/form-combo-options.tpl, which
                // brings its own .vo-combo-options and gets no wrapper at all (see
                // layoutBlockPlanOptions). Targeting only the first meant the button did nothing
                // useful on every combo page — which is where it is most wanted.
                var planBlock = $('.vo-plan-options, .vo-combo-options').first();

                // Nothing to scroll to — a layout with the block removed, or a page that never
                // had one. Do nothing, rather than let voScrollToBlock's 0 fallback throw the
                // reader to the top of the page for no reason.
                if( ! planBlock.length ) return;

                voScrollToBlock(planBlock);
            });
					});
	</script>

        	
			<script>
			$(document).ready(function(){
				// Add a class to the body if the user is on Windows
				if (navigator.platform.indexOf('Win') > -1) {
					document.documentElement.classList.add('windows-os');
				}
				
				// Menu button on mobile
				$('#menu-trigger').click(function(e) {
					$('#account-header').toggleClass('open');
					$(this).toggleClass('open');
					$(this).text($(this).text() === 'Open Menu' ? 'Close Menu' : 'Open Menu');
				});
				
				// Filters button on mobile
				$('#sidebar-trigger').click(function(e) {
					$('#sidebar').addClass('open');
					$('body').addClass('body-no-scroll');
				});
				$('#sidebar-close, #show-results').click(function(e) {
					$('#sidebar').removeClass('open');
					$('body').removeClass('body-no-scroll');
				});
			});
		</script>
	

        
    <!-- Google tag (gtag.js) --><script async src='https://www.googletagmanager.com/gtag/js?id=G-9PVJ6TK0V7'></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-9PVJ6TK0V7');
</script>        
    

		        </head>


<body id="cms_static_home" class="index catalog-show-filters blog-show-filters logged-out">



<div id="skip-to">
	<a href="#content">Skip to main content</a>
</div>

<header id="header" class="dark" role="banner">
	<div class="container">
		
		<h1><a href="https://my.liquidandgrit.com/library/gallery">Liquid and Grit</a></h1>
		
					<span class="powered-by-liquid">Powered by Liquid and Grit</span>
		
		
        


					<ul id="account-header" role="navigation">
				
					
				
                				

	            

	
		        			        <li id="shopping-cart">
			            <button class="cart" aria-controls="cart-popup" aria-haspopup="dialog" aria-expanded="false">
							<span class="checkout">Cart</span>
							<span class="quantity-link" style="display:none">
								<span class="sr-only">, </span>
								<span class="quantity">0</span>
								<span class="sr-only"> items</span>
							</span>
						</button>
			            <div id="cart-popup" class ="totals" role="dialog" aria-hidden="true" style="display:none" aria-labelledby="cart-popup-heading">
	<button class="button close">Close</button>
	<h2 id="cart-popup-heading">Your Cart</h2>
	<p>You have <strong><span class="quantity">0 Items</span></strong> in your cart.</p>
	<p class="subtotal">Subtotal: <span class="amount">$0.00</span></p>
	<div><span class="shipping-total-not-free" style="display:none;"><span class="amount"></span></span></div>
	<div><span class="shipping-total-free" style="display:none;"><span class="amount"></span></span></div>
	<button class="button view-cart">View Cart</button>
	<a class="button checkout" href="/cmc/checkout-one">Checkout</a>
	<button class="continue">Continue Shopping</button>
</div>

<div class="cart-block dialog" style="display:none" title="Your Shopping Cart">
	<a class="button close" role="button">Close</a>
	<table cellspacing="0" class="cart list">
		<caption style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;">Your shopping cart</caption>
		<colgroup>
			<col class="image" style="width: 125px" />
			<col class="name" />
			<col class="quantity" />
			<col class="price" />
			<col class="total" />
		</colgroup>
		<thead>
			<tr>
				<th scope="col">Preview</th>
				<th scope="col">Cart Items</th>
                <th scope="col">Price</th>
                <th scope="col">Quantity</th>
				<th scope="col">Total</th>
			</tr>
		</thead>
		<tbody>
			<!-- Template: Cart Items
			 <tr>
				<td class="preview"><img class="thumbnail" src="" style="height: 60px"/></td>
				<td class="title"><span class="name"></span><span class="delete" role="button" tabindex="0">(remove)</span></td>
				<td class="subtotal"><span class="price"></span> <span class="original" style="display:none"></span></td>
				<td class="quantity">
					<label for="input-cart-quantity" style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;">Quantity</label>
					<input id="input-cart-quantity" type="number" name="qty"/>
				</td>
				<td class="total last"><span class="price"></span></td>
			</tr>
			-->
		</tbody>
	</table>

	<div class="no-cart-results">Your cart is empty.</div>

	
	<div class="totals">
		<span class="subtotal">Subtotal <span class="amount">$0.00</span></span>
		<div><span class="savings-total" style="display:none;">Discount: -<span class="amount">$0.00</span></span></div>
		<div><span class="shipping-total" style="display:none;">Shipping: <span class="amount">$0.00</span></span></div>
		<div><span class="shipping-total-not-free" style="display:none;"></span></div>
		<div><span class="shipping-total-free" style="display:none;"></span></div>
		<span class="savings-total" style="display:none;">You save <span class="amount">$0.00</span></span>
	</div>

	<div class="buttons">
		<button class="button continue">Continue Shopping</button>
		<a class="button checkout" href="/cmc/checkout-one">Checkout</a>
	</div>

</div>			        </li>
		        		        
			</ul><!-- #account-header -->
				
								<div id="menu-trigger">Open Menu</div>
				
	</div><!-- .container -->
</header>

<div id="content"><!-- closing tag in footer.tpl -->


    <script type="text/javascript">
        $(document).ready(function(){

            $('div.zip-check input[type="radio"]').change(function(){
                $(this).closest('div.zip-check').find('a.route-item-selection').attr('href',$(this).val());
            });

            $('a.check-delivery-rules').click(function(e){
                e.preventDefault();
                var divContainer = $(this).closest('div.zip-check');
                var divSignupContainer = $(this).closest('div.signup');
                var optionsAvailable = false;
                var otherOptionsAvailable = false;

                $('div.item-options', divSignupContainer).each(function(i,el){
                    if( $.inArray($('[name="zip"]',divContainer).val(), $(this).data('deliveryRules').zip) != -1 ){
                        optionsAvailable = true;
                        $(this).show();
                    }else{
                        $(this).hide();
                    }
                }).each(function(i,el){
                    // Loop over again and check for an asterisk meaning any other location
                    if( ! optionsAvailable && $.inArray('*', $(this).data('deliveryRules').zip) != -1 ){
                        otherOptionsAvailable = true;
                        $(this).show();
                    }
                });

                if( !optionsAvailable && !otherOptionsAvailable ){
                    $('.no-item-matches',divContainer).show();
                }else{
                    $('div.item-options:visible input[type="radio"]:eq(0)', divSignupContainer).prop('checked',true).trigger('change');
                    $('.zip-check-form').hide();
                    $('a.route-item-selection',divContainer).show();
                    $('.no-item-matches',divContainer).hide();
                }
            });
        });
    </script>



    
	<div id="pigeon-home" class="homepage">

	
    

    

			<div class="main-content landing-image"></div>
		<div class="main-content vo-login">
    <div id="login">
        <div class="option-heading dark">
            <h2 data-bind="header">Sign in</h2>
            <p class="vo-hide-in-modal" data-bind="header_sub">To continue reading, sign in or <strong>choose an access option below</strong>.</p>
            <p class="vo-show-in-modal" style="display:none;"><a href="#" class="vo-show-options ignore" style="color:white;">Click here if you don't have an account</a></p>
            <div class="login-close close-iframe">Close</div>
        </div>

        <div class="login-block">
            <form class="voForm pigeon-ui-login">
                                <div class="message"></div>
                <input name="email" id="email" class="input" type="text" autocomplete="email" inputmode="email" autocapitalize="off" autocorrect="off" spellcheck="false" aria-label="Email Address" placeholder="Your Email" />
                <div class="password-field">
                    <input name="password" id="password" class="input" type="password" aria-label="Password" placeholder="Your Password" />
                    <button type="button" class="password-toggle" aria-label="Show password" aria-pressed="false"></button>
                </div>
                <input type="submit" id="action-login" class="button green" value="Sign in" />
                <div class="waiting-for-results" style="display:none;"></div>
            </form>
                        <div class="vo-passkey-mount"></div>
            <div class="register-facebook" style="display: none;">
                <button id="facebook-login" class="button" data-reroute="1" >Sign in with Facebook</button>
            </div>
                        <a href="https://my.liquidandgrit.com/password-reset?request=1" class="forgot">Forgot your password?</a>
                        
                    </div>
    </div>
</div><!-- .main-content -->

<script>
// Reveal password toggle. Guarded so pigeon-home.tpl (which has several login copies) can
// include the same handler without stacking clicks.
if (!window.voPasswordToggleBound) {
window.voPasswordToggleBound = true;
$(document).on('click', '.password-toggle', function() {
    const $button = $(this);
    const $pwdInput = $button.closest('.password-field').find('input');
    const isRevealed = $button.attr('aria-pressed') === 'true';
    const nextRevealed = !isRevealed;

    $pwdInput.prop('type', nextRevealed ? 'text' : 'password');
    $button
        .toggleClass('is-revealed', nextRevealed)
        .attr('aria-pressed', String(nextRevealed))
        .attr('aria-label', nextRevealed ? 'Hide password' : 'Show password');
});
}
</script>	


    

    

    

			
						<div class="main-content vo-access-options" id="qJfsN9">
                <div class="subscription-options" id="pigeon-buy-access">
                    <div class="option-heading dark">
                        <h2>The #1 Mobile Gaming Research Report</h2>
                        <p class="vo-hide-in-modal"></p>
                        <div class="login-close close-iframe">Close</div>
                    </div>

                                        <div class="login-banner-prompt signup vo-show-in-modal" style="display: none;">
                        Already have an account? <a href="#" class="vo-show-login ignore">Sign in</a>
                    </div>
                    
                                        <div class="global-access-message">
                        <p>Interested in getting access? <a href='https://www.liquidandgrit.com/contact/'>Contact us to learn how</a>.</p>                    </div>
                    
                    
                                </div>
            </div><!-- .main-content -->
            			


        

            <div class="main-content">
            <div class="option-heading dark">
                <h2>Enterprise Solutions</h2>
                <p><a href="mailto:[email protected]?subject=I would like access">Contact us and we will get you setup.</a></p>
            </div>
        </div>
    
        


    

	
		
        
		</div>
		</div><!-- .homepage -->

    

</div><!-- #content - opening tag in header.tpl -->

<div id="footer" class="light" role="contentinfo">
	<div class="container">
	<p class="left">
		&copy;
				2026 liquidandgrit.com.
					All rights reserved.
			</p>
	<p class="right">
		<a href="/privacy-policy" target="_blank" aria-label="Privacy Policy - link opens in a new tab">Privacy Policy</a>
		&nbsp;
		<a href="/terms-of-service" target="_blank" aria-label="Terms of Use - link opens in a new tab">Terms of Use</a>
		&nbsp;
		
					Powered by <a href="https://pigeon.io" target="_blank" aria-label="Pigeon - link opens in a new tab">Pigeon</a>
			</p>

	</div>
</div>

<!-- This is a reusable reference element for screen readers. -->
<span id="new-tab-warning" class="sr-only">Opens in a new tab</span>

<!-- Text can be dynamically added to this element to make action announcements for screen readers -->
<span id="announcement" aria-live="polite" aria-atomic="true" class="sr-only"></span>



    <script>
    var APP_ID = "hd9fhos2";

    window.intercomSettings = {
        app_id: APP_ID
      };
    (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/' + APP_ID;var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();

    </script>

<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"cea68d43c0","applicationID":"54644924","transactionName":"ZlwHZhRXWUZWVBEIW18WMEAPGUVaQkMAExpBURU=","queueTime":0,"applicationTime":86,"atts":"ShsEEFxNSkg=","errorBeacon":"bam.nr-data.net","agent":""}</script></body>
</html>

Latest requests

# Url Url Source Date
1 https://my.liquidandgrit.com/ 2026-10-19 22:22:19
2 https://nivus.ru/%22/services/drug… 2026-10-19 22:22:19
3 https://www.panram.ru/anti-ddos/ch… 2026-10-19 22:22:17
4 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:16
5 https://www.thebolditalic.com/?gi=… 2026-10-19 22:22:16
6 https://www.thebolditalic.com/?gi=… 2026-10-19 22:22:16
7 https://www.thebolditalic.com/?gi=… 2026-10-19 22:22:14
8 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:14
9 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:13
10 https://auth.acog.org/OAuth/SignIn… 2026-10-19 22:22:13
11 https://www.thebolditalic.com/?gi=… 2026-10-19 22:22:12
12 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:12
13 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:11
14 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:11
15 https://hack.allmende.io/s/7u7Vh8Z… 2026-10-19 22:22:10
16 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:10
17 https://www.thebolditalic.com/?gi=… 2026-10-19 22:22:09
18 https://macgregor-buus.thoughtlane… 2026-10-19 22:22:08
19 https://www.texarkanatwins.com/%25… 2026-10-19 22:22:07
20 https://auth.acog.org/OAuth/SignIn… 2026-10-19 22:22:06