PageSourceSearch

https://lighthouse-metrics.com/_next/static/chunks/3o4qs5264c_td.js?dpl=dpl_FbimV1of7MEZhGSkHymBsLJaYvy9

js lighthouse-metrics.com collected 2026-09-24 20:07:22 UTC 33,815 bytes, 4 lines download raw bytes

1;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="01582aa0-324f-17f9-6029-879395e56023")}catch(e){}}();
2(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,664173,e=>{"use strict";e.s(["getOneTimeProductRunTotal",0,function(e){return e.grants.reduce((e,t)=>e+t.total,0)},"oneTimeProducts",0,[{slug:"test-runs-50",name:"50 Test Runs",description:"For quick audits",price:10,paddleProductId:"926432",grants:[{resource:"lighthouse.web.run",total:50}]},{slug:"test-runs-150",name:"150 Test Runs",description:"Most popular",price:25,paddleProductId:"926433",grants:[{resource:"lighthouse.web.run",total:150}]},{slug:"test-runs-500",name:"500 Test Runs",description:"Best value",price:60,paddleProductId:"926434",grants:[{resource:"lighthouse.web.run",total:500}]}]])},36095,114392,e=>{"use strict";let t;var i=e.i(271645);let n=(e,t,i)=>{let n=document.createElement(e),[r,s]=Array.isArray(t)?[void 0,t]:[t,i];return r&&Object.assign(n,r),null==s||s.forEach(e=>n.appendChild(e)),n},r=String.raw,s=(()=>{try{document.createElement("div").animate({opacity:0}
2,{easing:"linear(0, 1)"})}catch{return!1}return!0})(),a="u">typeof CSS&&CSS.supports&&CSS.supports("line-height","mod(1,1)"),o="u">typeof matchMedia?matchMedia("(prefers-reduced-motion: reduce)"):null,l="--_number-flow-d-opacity",d="--_number-flow-d-width",u="--_number-flow-dx",c="--_number-flow-d",h=(()=>{try{return CSS.registerProperty({name:l,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:u,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:d,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:c,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),p="var(--number-flow-char-height, 1em)",m="var(--number-flow-mask-height, 0.25em)",f=`calc(${m} / 2)`,g="var(--number-flow-mask-width, 0.5em)",v=`calc(${g} / var(--scale-x))`,y="#000 0, transparent 71%",w=r`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:${p} !important}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${d}) / var(--width));transform:translateX(var(${u})) scaleX(var(--scale-x));margin:0 calc(-1 * ${g});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${v},#000 calc(100% - ${v}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${m},#000 calc(100% - ${m}),transparent 100% ),radial-gradient(at bottom right,${y}),radial-gradient(at bottom left,${y}),radial-gradient(at top left,${y}),radial-gradient(at top right,${y});-webkit-mask-size:100% calc(100% - ${m} * 2),calc(100% - ${v} * 2) 100%,${v} ${m},${v} ${m},${v} ${m},${v} ${m};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${f} ${g};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${u})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${c})}.digit__num,.number .section::after{padding:${f} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${l}))}`,b=HTMLElement,C=(r`:host{display:inline-block;direction:ltr;white-space:nowrap;line-height:${p} !important}span{display:inline-block}:host([data-will-change]) span{will-change:transform}.number,.digit{padding:${f} 0}.symbol{white-space:pre}`,a&&s&&h);class x extends b{constructor(){super(),this.created=!1,this.batched=!1;const{animated:e,...t}=this.constructor.defaultProps;this._animated=this.computedAnimated=e,Object.assign(this,t)}get animated(){return this._animated}set animated(e){var t;this.animated!==e&&(this._animated=e,null==(t=this.shadowRoot)||t.getAnimations().forEach(e=>e.finish()))}set data(e){var i;if(null==e)return;let{pre:n,integer:r,fraction:s,post:a,value:l}=e;if(this.created){let t=this._data;this._data=e,this.computedTrend="function"==typeof this.trend?this.trend(t.value,l):this.trend,this.computedAnimated=C&&this._animated&&(!this.respectMotionPreference||!(null!=o&&o.matches))&&this.offsetWidth>0&&this.offsetHeight>
20,null==(i=this.plugins)||i.forEach(i=>{var n;return null==(n=i.onUpdate)?void 0:n.call(i,e,t,this)}),this.batched||this.willUpdate(),this._pre.update(n),this._num.update({integer:r,fraction:s}),this._post.update(a),this.batched||this.didUpdate()}else{this._data=e,this.attachShadow({mode:"open"});try{this._internals??(this._internals=this.attachInternals()),this._internals.role="img"}catch{}if("u">typeof CSSStyleSheet&&this.shadowRoot.adoptedStyleSheets)t||(t=new CSSStyleSheet).replaceSync(w),this.shadowRoot.adoptedStyleSheets=[t];else{let e=document.createElement("style");e.textContent=w,this.shadowRoot.appendChild(e)}this._pre=new R(this,n,{justify:"right",part:"left"}),this.shadowRoot.appendChild(this._pre.el),this._num=new _(this,r,s),this.shadowRoot.appendChild(this._num.el),this._post=new R(this,a,{justify:"left",part:"right"}),this.shadowRoot.appendChild(this._post.el),this.created=!0}try{this._internals.ariaLabel=e.valueAsString}catch{}}willUpdate(){this._pre.willUpdate(),this._num.willUpdate(),this._post.willUpdate()}didUpdate(){if(!this.computedAnimated)return;this._abortAnimationsFinish?this._abortAnimationsFinish.abort():this.dispatchEvent(new Event("animationsstart")),this._pre.didUpdate(),this._num.didUpdate(),this._post.didUpdate();let e=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{e.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),this._abortAnimationsFinish=void 0)}),this._abortAnimationsFinish=e}}x.defaultProps={transformTiming:{duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"},spinTiming:void 0,opacityTiming:{duration:450,easing:"ease-out"},animated:!0,trend:(e,t)=>Math.sign(t-e),respectMotionPreference:!0,plugins:void 0,digits:void 0};class _{constructor(e,t,i,{className:r,...s}={}){this.flow=e,this._integer=new P(e,t,{justify:"right",part:"integer"}),this._fraction=new P(e,i,{justify:"left",part:"fraction"}),this._inner=n("span",{className:"number__inner"},[this._integer.el,this._fraction.el]),this.el=n("span",{...s,part:"number",className:`number ${r??""}`},[this._inner])}willUpdate(){this._prevWidth=this.el.offsetWidth,this._prevLeft=this.el.getBoundingClientRect().left,this._integer.willUpdate(),this._fraction.willUpdate()}update({integer:e,fraction:t}){this._integer.update(e),this._fraction.update(t)}didUpdate(){let e=this.el.getBoundingClientRect();this._integer.didUpdate(),this._fraction.didUpdate();let t=this._prevLeft-e.left,i=this.el.offsetWidth,n=this._prevWidth-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[u]:[`${t}px`,"0px"],[d]:[n,0]},{...this.flow.transformTiming,composite:"accumulate"})}}class k{constructor(e,t,{justify:i,className:r,...s},a){this.flow=e,this.children=new Map,this.onCharRemove=e=>()=>{this.children.delete(e)},this.justify=i;const o=t.map(e=>this.addChar(e).el);this.el=n("span",{...s,className:`section section--justify-${i} ${r??""}`},a?a(o):o)}addChar(e,{startDigitsAtZero:t=!1,...i}={}){let n="integer"===e.type||"fraction"===e.type?new E(this,e.type,t?0:e.value,e.pos,{...i,onRemove:this.onCharRemove(e.key)}):new A(this,e.type,e.value,{...i,onRemove:this.onCharRemove(e.key)});return this.children.set(e.key,n),n}unpop(e){e.el.removeAttribute("inert"),e.el.style.top="",e.el.style[this.justify]=""}pop(e){e.forEach(e=>{var t,i;e.el.style.top=`${e.el.offsetTop}px`,e.el.style[this.justify]=`${t=e.el,"left"===this.justify?t.offsetLeft:((null==(i=t.offsetParent instanceof HTMLElement?t.offsetParent:null)?void 0:i.offsetWidth)??0)-t.offsetWidth-t.offsetLeft}px`}),e.forEach(e=>{e.el.setAttribute("inert",""),e.present=!1})}addNewAndUpdateExisting(e){let t=new Map,i=new Map,n="left"===this.justify,r=n?"prepe
2nd":"append";if(function(e,t,{reverse:i=!1}={}){let n=e.length;for(let r=i?n-1:0;i?r>=0:r<n;i?r--:r++)t(e[r],r)}(e,e=>{let n;this.children.has(e.key)?(n=this.children.get(e.key),i.set(e,n),this.unpop(n),n.present=!0):(n=this.addChar(e,{startDigitsAtZero:!0,animateIn:!0}),t.set(e,n)),this.el[r](n.el)},{reverse:n}),this.flow.computedAnimated){let e=this.el.getBoundingClientRect();t.forEach(t=>{t.willUpdate(e)})}t.forEach((e,t)=>{e.update(t.value)}),i.forEach((e,t)=>{e.update(t.value)})}willUpdate(){let e=this.el.getBoundingClientRect();this._prevOffset=e[this.justify],this.children.forEach(t=>t.willUpdate(e))}didUpdate(){let e=this.el.getBoundingClientRect();this.children.forEach(t=>t.didUpdate(e));let t=e[this.justify],i=this._prevOffset-t;i&&this.children.size&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}class P extends k{update(e){let t=new Map;this.children.forEach((i,n)=>{e.find(e=>e.key===n)||t.set(n,i),this.unpop(i)}),this.addNewAndUpdateExisting(e),t.forEach(e=>{e instanceof E&&e.update(0)}),this.pop(t)}}class R extends k{update(e){let t=new Map;this.children.forEach((i,n)=>{e.find(e=>e.key===n)||t.set(n,i)}),this.pop(t),this.addNewAndUpdateExisting(e)}}class S{constructor(e,t,{onRemove:i,animateIn:n=!1}
2={}){this.flow=e,this.el=t,this._present=!0,this._remove=()=>{var e;this.el.remove(),null==(e=this._onRemove)||e.call(this)},this.el.classList.add("animate-presence"),this.flow.computedAnimated&&n&&this.el.animate({[l]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),this._onRemove=i}get present(){return this._present}set present(e){if(this._present!==e){if(this._present=e,e?this.el.removeAttribute("inert"):this.el.setAttribute("inert",""),!this.flow.computedAnimated){e||this._remove();return}this.el.style.setProperty("--_number-flow-d-opacity",e?"0":"-.999"),this.el.animate({[l]:e?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),e?this.flow.removeEventListener("animationsfinish",this._remove):this.flow.addEventListener("animationsfinish",this._remove,{once:!0})}}}class T extends S{constructor(e,t,i,n){super(e.flow,i,n),this.section=e,this.value=t,this.el=i}}class E extends T{constructor(e,t,i,r,s){var a,o;const l=((null==(o=null==(a=e.flow.digits)?void 0:a[r])?void 0:o.max)??9)+1,d=Array.from({length:l}).map((e,t)=>{let r=n("span",{className:"digit__num"},[document.createTextNode(String(t))]);return t!==i&&r.setAttribute("inert",""),r.style.setProperty("--n",String(t)),r}),u=n("span",{part:`digit ${t}-digit`,className:"digit"},d);u.style.setProperty("--current",String(i)),u.style.setProperty("--length",String(l)),super(e,i,u,s),this.pos=r,this._onAnimationsFinish=()=>{this.el.classList.remove("is-spinning")},this._numbers=d,this.length=l}willUpdate(e){let t=this.el.getBoundingClientRect();this._prevValue=this.value;let i=t[this.section.justify]-e[this.section.justify],n=t.width/2;this._prevCenter="left"===this.section.justify?i+n:i-n}update(e){this.el.style.setProperty("--current",String(e)),this._numbers.forEach((t,i)=>i===e?t.removeAttribute("inert"):t.setAttribute("inert","")),this.value=e}didUpdate(e){let t=this.el.getBoundingClientRect(),i=t[this.section.justify]-e[this.section.justify],n=t.width/2,r="left"===this.section.justify?i+n:i-n,s=this._prevCenter-r;s&&this.el.animate({transform:[`translateX(${s}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});let a=this.getDelta();a&&(this.el.classList.add("is-spinning"),this.el.animate({[c]:[-a,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",this._onAnimationsFinish,{once:!0}))}getDelta(){var e;if(this.flow.plugins)for(let t of this.flow.plugins){let i=null==(e=t.getDelta)?void 0:e.call(t,this.value,this._prevValue,this);if(null!=i)return i}let t=this.value-this._prevValue,i=this.flow.computedTrend||Math.sign(t);return i<0&&this.value>this._prevValue?this.value-this.length-this._prevValue:i>0&&this.value<this._prevValue?this.length-this._prevValue+this.value:t}}class A extends T{constructor(e,t,i,r){const s=n("span",{className:"symbol__value",textContent:i});super(e,i,n("span",{part:`symbol ${t}`,className:"symbol"},[s]),r),this.type=t,this._children=new Map,this._onChildRemove=e=>()=>{this._children.delete(e)},this._children.set(i,new S(this.flow,s,{onRemove:this._onChildRemove(i)}))}willUpdate(e){if("decimal"===this.type)return;let t=this.el.getBoundingClientRect();this._prevOffset=t[this.section.justify]-e[this.section.justify]}update(e){if(this.value!==e){let t=this._children.get(this.value);t&&(t.present=!1);let i=this._children.get(e);if(i)i.present=!0;else{let t=n("span",{className:"symbol__value",textContent:e});this.el.appendChild(t),this._children.set(e,new S(this.flow,t,{animateIn:!0,onRemove:this._onChildRemove(e)}))}}this.value=e}didUpdate(e){if("decimal"===this.type)return;let t=this.el.getBoundingClientRect()[this.section.justify]-e[this.section.justify],i=this._prevOffset-t;i&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}var j=i;let $=parseInt(j.version.match(/^(\d+)\./)?.[1])>=19;class U extends x{attributeChangedCallback(e,t,i){this[e]=JSON.parse(i)}}U.observedAttributes=$?[]:["data","digits"],customElements.get("number-flow-react")||customElements.define("number-flow-react",U);let L={},M=$?e=>e:JSON.stringify;function O(e){let{transformTiming:t,spinTiming:i,opacityTiming:n,animated:r,respectMotionPreference:s,trend:a,plugins:o,...l}=e;return[{transformTiming:t,spinTiming:i,opacityTiming:n,animated:r,respectMotionPreference:s,trend:a,plugins:o},l]}class N extends j.Component{updateProperties(e){if(!this.el)return;this.el.batched=!this.props.isolate;let[t]=O(this.props);Object.entries(t).forEach(([e,t])=>{this.el[e]=t??U.defaultProps[e]}),e?.onAnimationsStart&&this.el.removeEventListener("animationsstart",e.onAnimationsStart),this.props.onAnimationsStart&&this.el.addEventListener("animationsstart",this.props.onAnimationsStart),e?.onAnimationsFinish&&this.el.removeEventListener("animationsfinish",e.onAnimationsFinish),this.props.onAnimationsFinish&&this.el.addEventListener("animationsfinish",this.props.onAnimationsFinish)}componentDidMount(){this.updateProperties(),$&&this.el&&(this.el.digits=this.props.digits,this.el.data=this.props.data)}getSnapshotBeforeUpdate(e){if(this.updateProperties(e),e.data!==this.props.data){if(this.props.group)return this.props.group.willUpdate(),()=>this.props.group?.didUpdate();if(!this.props.isolate)return this.el?.willUpdate(),()=>this.el?.didUpdate()}return null}componentDidUpdate(e,t,i){i?.()}handleRef(e){this.props.innerRef&&(this.props.innerRef.current=e),this.el=e}render(){let[e,{innerRef:t,className:i,data:n,willChange:r,isolate:s,group:a,digits:o,onAnimationsStart:l,onAnimationsFinish:d,...u}]=O(this.props);return j.createElement("number-flow-react",{ref:this.handleRef,"data-will-change":r?"":void 0,class:i,...u,dangerouslySetInnerHTML:{__html:""},suppressHydrationWarning:!0,digits:M(o),data:M(n)})}constructor(e){super(e),this.handleRef=this.handleRef.bind(this)}}let I=j.forwardRef(function({value:e,locales:t,format:i,prefix:n,suffix:r,...s},a){j.useImperativeHandle(a,()=>o.current,[]);let o=j.useRef(),l=j.useContext(F);l?.useRegister(o);let d=j.useMemo(()=>t?JSON.stringify(t):"",[t]),u=j.useMemo(()=>i?JSON.stringify(i):"",[i]),c=j.useMemo(()=>(function(e,t,i,n){let r=t.formatToParts(e);i&&r.unshift({type:"prefix",value:i}),n&&r.push({type:"suffix",value:n});let s=[],a=[],o=[],l=[],d={},u=e=>`${e}:${d[e]=(d[e]??-1)+1}`,c="",h=!1,p=!1;for(let e of r){c+=e.value;let t="minusSign"===e.type||"plusSign"===e.type?"sign":e.type;"integer"===t?(h=!0,a.push(...e.value.split("").map(e=>({type:t,value:parseInt(e)})))):"group"===t?a.push({type:t,value:e.value}):"decimal"===t?(p=!0,o.push({type:t,value:e.value,key:u(t)})):"fraction"===t?o.push(...e.value.split("").map(e=>({type:t,value:parseInt(e),key:u(t),pos:-1-d[t]}))):(h||p?l:s).push({type:t,value:e.value,key:u(t)})}let m=[];for(let e=a.length-1;e>=0;e--){let t=a[e];m.unshift("integer"===t.type?{...t,key:u(t.type),pos:d[t.type]}:{...t,key:u(t.type)})}return{pre:s,integer:m,fraction:o,post:l,valueAsString:c,value:"string"==typeof e?parseFloat(e):e}})(e,L[`${d}:${u}`]??=new Intl.NumberFormat(t,i),n,r),[e,d,u,n,r]);return j.createElement(N,{...s,group:l,data:c,innerRef:o})}),F=j.createContext(void 0);e.s([],36095),e.s(["default",0,I],114392)},368851,e=>{"use strict";var t=e.i(843476),i=e.i(618566),n=e.i(271645);let r=(0,n.createContext)(void 0);e.s(["UserContextProvider",0,function(e){return(0,t.jsx)(r.Provider,{value:{user:e.user},children:e.children})},"useUser",0,function(e){let t=(0,i.usePathname)(),s=(0,n.useContext)(r);if(void 0===s)throw Error("useUser must be used within a UserContextProvider");if(e?.required!==!1||s.user)return s.user?s.user:(0,i.redirect)(`/auth/login?returnTo=${t}`)}])},88082,e=>{"use strict";var t=e.i(843476),i=e.i(618566),n=e.i(271645);let r=(0,n.createContext)(void 0);e.s(["TeamContextProvider",0,function(e){return(0,t.jsx)(r.Provider,{value:{team:e.team},children:e.children})},"useTeam",0,function(e){let t=(0,n.useContext)(r);if(void 0===t)throw Error("useTeam must be used within a TeamContextProvider");if(e?.required!==!1||t.team)return t.team?t.team:(0,i.redirect)("/auth/login?returnTo=/app")}])},679818,32533,e=>{"use strict";var t=e.i(662537),i=e.i(114134);async function n(e,t){try{await t()}catch(t){try{e.onProviderError?.({error:t,provider:e.provider,event:e.event,hook:e.hook}
2)}catch(e){console.error("[analytics] provider error handler failed",e)}}}async function r(e,t,i={}){let s={id:e.event.id,name:e.event.name,properties:function(e){if(!e)return;let t={};for(let[i,n]of Object.entries(e))if(void 0!==n){if(null===n||"string"==typeof n||"boolean"==typeof n){t[i]=n;continue}"number"==typeof n&&Number.isFinite(n)&&(t[i]=n)}return Object.keys(t).length>0?t:void 0}(e.properties),context:e.context};for(let e of t)s.context&&e.identify&&await n({provider:e,event:s,hook:"identify",onProviderError:i.onProviderError},()=>e.identify?.(s.context)),s.context?.team?.id&&e.group&&await n({provider:e,event:s,hook:"group",onProviderError:i.onProviderError},()=>e.group?.(s.context)),await n({provider:e,event:s,hook:"track",onProviderError:i.onProviderError},()=>e.track(s)),e.flush&&await n({provider:e,event:s,hook:"flush",onProviderError:i.onProviderError},()=>e.flush?.())}var s=e.i(550404);function a(){return"u">typeof window}e.i(247167);function o(){return(a()?window.vam:"production")||"production"}function l(){return"production"===o()}function d(e,t,i){var n,r;if(!a()){let e="[Vercel Web Analytics] Please import `track` from `@vercel/analytics/server` when using this function in a server environment";if(l())console.warn(e);else throw Error(e);return}if(!t){null==(n=window.va)||n.call(window,"event",{name:e,options:i});return}try{let n=function(e,t){if(!e)return;let i=e,n=[];for(let[r,s]of Object.entries(e))"object"==typeof s&&null!==s&&(t.strip?i=function(e,{[e]:t,...i}){return i}(r,i):n.push(r));if(n.length>0&&!t.strip)throw Error(`The following properties are not valid: ${n.join(", ")}. Only strings, numbers, booleans, and null are allowed.`);return i}(t,{strip:l()});null==(r=window.va)||r.call(window,"event",{name:e,data:n,options:i})}catch(e){e instanceof Error&&"development"===o()&&console.error(e)}}let u=[{name:"vercel",track(e){let t,i=(t={...e.properties??{}},e.context?.team?.state&&(t["team.state"]=e.context.team.state),e.context?.team?.plan&&(t["team.plan"]=e.context.team.plan),Object.keys(t).length>0?t:void 0);i?d(e.name,i):d(e.name)}},s.posthogClientAnalyticsProvider];e.s(["reportAnalyticsEvent",0,function(...e){var n;let s;r((n=function(e){let[t,i,n]=e;return void 0!==n||!i||"object"!=typeof i||Array.isArray(i)||"string"!=typeof i.userId&&"string"!=typeof i.visitorId&&("object"!=typeof i.team||null===i.team)?{event:t,properties:i,context:n}:{event:t,context:i}}(e),!(s=(0,i.getBrowserVisitorId)())||n.context?.visitorId?n:{...n,context:{...n.context,visitorId:s}}),u,{onProviderError({error:e,provider:i,event:n,hook:r}){console.error(`[analytics] ${i.name}.${r} failed for "${n.name}"`,e),t.captureException(e)}})}],679818),e.s(["events",0,{FreeCheckRateLimited:{id:"FreeCheckRateLimited",name:"Daily Free Lighthouse Check Limit Reached"},FreeCheckRateLimitModalCTAClicked:{id:"FreeCheckRateLimitModalCTAClicked",name:"Daily Free Lighthouse Check Limit Reached Modal CTA Clicked"},LighthouseCheckBannerCTAClicked:{id:"LighthouseCheckBannerCTAClicked",name:"Lighthouse Check Banner CTA Clicked"},LowCreditBannerViewed:{id:"LowCreditBannerViewed",name:"Low Credit Banner Viewed"},LowCreditCTAClicked:{id:"LowCreditCTAClicked",name:"Low Credit CTA Clicked"},CreditsExhaustedModalViewed:{id:"CreditsExhaustedModalViewed",name:"Credits Exhausted Modal Viewed"},CreditsExhaustedCTAClicked:{id:"CreditsExhaustedCTAClicked",name:"Credits Exhausted CTA Clicked"},TestRunPackSelected:{id:"TestRunPackSelected",name:"Test Run Pack Selected"},TestRunCheckoutOpened:{id:"TestRunCheckoutOpened",name:"Test Run Checkout Opened"},TestRunCheckoutCompleted:{id:"TestRunCheckoutCompleted",name:"Test Run Checkout Completed"},TestRunCheckoutClosed:{id:"TestRunCheckoutClosed",name:"Test Run Checkout Closed"},TestRunCheckoutError:{id:"TestRunCheckoutError",name:"Test Run Checkout Error"},TestRunPurchaseCompleted:{id:"TestRunPurchaseCompleted",name:"Test Run Purchase Completed"},TestRunPurchaseFailed:{id:"TestRunPurchaseFailed",name:"Test Run Purchase Failed"},MonitorPaywallViewed:{id:"MonitorPaywallViewed",name:"Monitor Paywall Viewed"},MonitorPaywallCTAClicked:{id:"MonitorPaywallCTAClicked",name:"Monitor Paywall CTA Clicked"},SubscriptionPlanSelected:{id:"SubscriptionPlanSelected",name:"Subscription Plan Selected"},SubscriptionCheckoutOpened:{id:"SubscriptionCheckoutOpened",name:"Subscription Checkout Opened"}
2,SubscriptionCreated:{id:"SubscriptionCreated",name:"Subscription Created"}}],32533)},805055,e=>{"use strict";var t=e.i(271645),i=e.i(88082),n=e.i(368851);e.s(["useAnalyticsContext",0,function(){let e=(0,i.useTeam)(),r=(0,n.useUser)(),s=e.subscription?.plan.slug,a=e.subscription?"subscribed":"free";return(0,t.useMemo)(()=>({userId:r.id,team:{id:e.id,state:a,plan:s}}),[e.id,s,a,r.id])}])},407398,991918,e=>{"use strict";var t=e.i(843476),i=e.i(271645),n=e.i(820783),r=Symbol.for("react.lazy"),s=i[" use ".trim().toString()];function a(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===r&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function o(e){var r;let o,l=(r=e,(o=i.forwardRef((e,t)=>{let{children:r,...o}=e;if(a(r)&&"function"==typeof s&&(r=s(r._payload)),i.isValidElement(r)){var l;let e,s,a=(l=r,(s=(e=Object.getOwnPropertyDescriptor(l.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.ref:(s=(e=Object.getOwnPropertyDescriptor(l,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.props.ref:l.props.ref||l.ref),d=function(e,t){let i={...t};for(let n in t){let r=e[n],s=t[n];/^on[A-Z]/.test(n)?r&&s?i[n]=(...e)=>{let t=s(...e);return r(...e),t}:r&&(i[n]=r):"style"===n?i[n]={...r,...s}:"className"===n&&(i[n]=[r,s].filter(Boolean).join(" "))}return{...e,...i}}(o,r.props);return r.type!==i.Fragment&&(d.ref=t?(0,n.composeRefs)(t,a):a),i.cloneElement(r,d)}return i.Children.count(r)>1?i.Children.only(null):null})).displayName=`${r}.SlotClone`,o),d=i.forwardRef((e,n)=>{let{children:r,...o}=e;a(r)&&"function"==typeof s&&(r=s(r._payload));let d=i.Children.toArray(r),c=d.find(u);if(c){let e=c.props.children,r=d.map(t=>t!==c?t:i.Children.count(e)>1?i.Children.only(null):i.isValidElement(e)?e.props.children:null);return(0,t.jsx)(l,{...o,ref:n,children:i.isValidElement(e)?i.cloneElement(e,void 0,r):null})}return(0,t.jsx)(l,{...o,ref:n,children:r})});return d.displayName=`${e}.Slot`,d}var l=o("Slot"),d=Symbol("radix.slottable");function u(e){return i.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===d}e.s(["Slot",0,l,"createSlot",0,o],991918);var c=e.i(225913),h=e.i(318150);let p=(0,c.cva)("inline-flex items-center justify-center rounded-md font-medium ring-offset-white transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 duration-200 ease-in-out",{variants:{variant:{default:"bg-gray-700 text-gray-50 hover:bg-gray-700/90",destructive:"bg-red-500 text-gray-50 hover:bg-red-500/90",outline:"border border-gray-200 bg-white hover:bg-gray-50 hover:text-gray-900 shadow-xs",secondary:"bg-gray-100 text-gray-900 hover:bg-gray-200/70",ghost:"hover:bg-gray-100 hover:text-gray-900",link:"text-gray-900 underline-offset-4 hover:underline"},size:{default:"h-8 px-3.5 text-sm",sm:"h-6 px-2 text-xs",lg:"h-10 px-8",icon:"h-8 w-8"}},defaultVariants:{variant:"default",size:"default"}}),m=i.forwardRef(({className:e,variant:i,size:n,asChild:r=!1,...s},a)=>(0,t.jsx)(r?l:"button",{className:(0,h.cn)(p({variant:i,size:n,className:e})),ref:a,...s}));m.displayName="Button",e.s(["Button",0,m,"button",0,p],407398)},131860,e=>{"use strict";var t=e.i(614719);e.s(["useToast",0,function(){return{success:function(e,i){return t.toast.success(e,{id:i})},error:function(e,i){return t.toast.error(e,{id:i})},loading:function(e,i){return t.toast.loading(e,{id:i})},promise:function(e,i){return t.toast.promise(e,{loading:i.loading,success:i.success||null,error:i.error||null})},remove:function(e){t.toast.remove(e)}}}])},95187,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n={callServer:function(){return s.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return a.findSourceMapURL}};for(var r in n)Object.defineProperty(i,r,{enumerable:!0,get:n[r]});let s=e.r(132120),a=e.r(92245),o=e.r(235326)},3303,(e,t,i)=>{t.exports=e.r(479520)},548789,e=>{"use strict";let t,i=!1;e.s(["clearPaddleClassicCheckoutEventHandler",0,function(){t=void 0},"setPaddleClassicCheckoutEventHandler",0,function(e){return t=e,()=>{t===e&&(t=void 0)}},"setupPaddleClassic",0,function(){i||("vendors.paddle.com".includes("sandbox-vendors")&&window.Paddle.Environment.set("sandbox"),window.Paddle.Setup({vend
2or:parseInt("116913"),eventCallback:e=>{t?.(e)}}),i=!0)}])},612394,294132,421193,e=>{"use strict";var t=e.i(843476);e.i(36095);var i=e.i(114392),n=e.i(271645),r=e.i(679818),s=e.i(32533),a=e.i(318150),o=e.i(805055),l=e.i(664173),d=e.i(662537),u=e.i(3303),c=e.i(95187);let h=(0,c.createServerReference)("00eaf4730548373aeab2bb000265c151709fa5ee83",c.callServer,void 0,c.findSourceMapURL,"getWebRunUsageCreditSummary"),p=(0,c.createServerReference)("40cecb7523e95d233d161cc92ce50f83ddc7a826a7",c.callServer,void 0,c.findSourceMapURL,"verifyWebRunUsageCreditTotal");var m=e.i(407398),f=e.i(88082),g=e.i(368851),v=e.i(950216),y=e.i(131860),w=e.i(548789);function b(e,t,i={}){return{...i,productSlug:e.slug,testRuns:(0,l.getOneTimeProductRunTotal)(e),price:e.price,surface:t}}function C(e,t,i={}){return{...b(e,t,i),paddleProductId:e.paddleProductId}}function x(e){let t=!1;function i(i){t||(t=!0,e(i))}return{handlePaddleEvent(e){"object"!=typeof e||null===e||Array.isArray(e)||"Checkout.Error"!==e.event||i(s.events.TestRunCheckoutError)},checkoutCompleted(){i(s.events.TestRunCheckoutCompleted)},checkoutClosed(){i(s.events.TestRunCheckoutClosed)}}}function _(e){let{analyticsSurface:i="billing",children:a,className:l,disabled:c,onCheckoutIntent:b,onSuccess:_,product:k,successMessage:P}=e,[R,S]=(0,n.useState)(!1),[T,E]=(0,n.useState)(null),[A,j]=(0,n.useState)(!1),[$,U]=(0,n.useTransition)(),L=(0,y.useToast)(),M=(0,f.useTeam)(),O=(0,g.useUser)(),N=(0,o.useAnalyticsContext)(),I=C(k,i,e.requestAnalyticsProperties),{paddleProductId:F,price:V,productSlug:B,requestedRuns:W,selectedRegionCount:D,surface:z,testRuns:H}=I;return(0,n.useEffect)(()=>{let e,t=0;return!e&&A&&null!==T&&(e=setInterval(()=>{U(async()=>{await p(T)&&(j(!1),E(null),null!==P&&L.success(P??"Payment received. New limits will be applied."),_&&await _())}),t>10&&(j(!1),E(null),(0,r.reportAnalyticsEvent)(s.events.TestRunPurchaseFailed,{paddleProductId:F,price:V,productSlug:B,requestedRuns:W,reason:"credit_verification_timeout",selectedRegionCount:D,surface:z,testRuns:H},N),L.error("Payment received, but credits are still being applied. Please try again in a moment."),d.captureMessage("Failed to verify one-time usage credits after 10 retries",{level:"warning"})),t++},1e3)),e&&!A&&clearInterval(e),()=>clearInterval(e)},[N,T,A,_,F,V,B,W,D,P,z,H,L]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.default,{id:"paddle-js",src:"https://cdn.paddle.com/paddle/paddle.js",onLoad:w.setupPaddleClassic}),(0,t.jsx)(m.Button,{className:l,disabled:c||R||A||!k.paddleProductId,onClick:()=>{if(!k.paddleProductId)return void L.error("This product is currently not configured.");b?.();let e=h().catch(()=>null),t=()=>{},i=x(e=>{(0,r.reportAnalyticsEvent)(e,I,N),e===s.events.TestRunCheckoutError&&t()});t=(0,w.setPaddleClassicCheckoutEventHandler)(i.handlePaddleEvent),window.Paddle.Checkout.open({product:k.paddleProductId,email:O.email,passthrough:M.id,disableLogout:!0,marketingConsent:!1,title:k.name,message:k.description,loadCallback:()=>{(0,r.reportAnalyticsEvent)(s.events.TestRunCheckoutOpened,I,N),S(!0)},successCallback:()=>{i.checkoutCompleted(),t(),S(!1),e.then(e=>{E((e?.total??0)+I.testRuns),j(!0)})},closeCallback:()=>{i.checkoutClosed(),t(),S(!1)}})},children:A?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v.Spinner,{className:"mr-2 h-4 w-4"}),"Verifying..."]}):a??`Buy ${k.name}`})]})}function k(e){return l.oneTimeProducts.find(t=>t.slug===e)??l.oneTimeProducts[1]??l.oneTimeProducts[0]}function P(e){let n=(0,o.useAnalyticsContext)(),d=k(e.selectedProductSlug);if(!d)return null;let u="sm"===e.size,c=e.showMostPopular??!0;return(0,t.jsx)("div",{className:(0,a.cn)("grid sm:grid-cols-3",u?"gap-2":"gap-3"),children:l.oneTimeProducts.map(o=>{let h=o.slug===d.slug,p=c&&"test-runs-150"===o.slug;return(0,t.jsxs)("button",{type:"button","aria-pressed":h,className:(0,a.cn)("relative flex w-full flex-col justify-end rounded-md border bg-gray-50 text-left transition",u?"min-h-20 px-3 py-2.5":"min-h-24 px-4 py-3",h?"border-primary-700 bg-white ring-1 ring-primary-700":"border-gray-100 hover:border-gray-200 hover:bg-white"),onClick:()=>{h||(0,r.reportAnalyticsEvent)(s.events.TestRunPackSelected,b(o,e.analyticsSurface??"billing",e.requestAnalyticsProperties),n),e.onSelectedProductSlugChange(o.slug)},children:[p?(0,t.jsx)("span",{className:(0,a.cn)("absolute inline-flex rounded-full bg-green-50 font-medium text-green-700 ring-1 ring-inset ring-green-600/20",u?"right-2 top-2 px-1.5 py-0.5 text-[10px]":"right-3 top-3 px-2 py-1 text-xs"),children:"Most popular"}):null,(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"flex items-baseline gap-x-1",children:[(0,t.jsx)(i.default,{value:o.price,className:"text-lg font-semibold tabular-nums text-gray-900",format:{style:"currency",currency:"USD",trailingZeroDisplay:"str
2ipIfInteger"}}),(0,t.jsx)("span",{className:(0,a.cn)("font-medium text-gray-500",u?"text-xs":"text-sm"),children:"one-time"})]}),(0,t.jsxs)("p",{className:(0,a.cn)("mt-1 text-gray-600",u?"text-xs":"text-sm"),children:[(0,l.getOneTimeProductRunTotal)(o)," test runs"]})]})]},o.slug)})})}e.s(["createTestRunCheckoutEventTracker",0,x,"getTestRunCheckoutAnalyticsProperties",0,C,"getTestRunProductAnalyticsProperties",0,b],294132),e.s(["OneTimeProductButton",0,_],421193),e.s(["TestRuns",0,function(e){let i=l.oneTimeProducts[1]??l.oneTimeProducts[0],[r,s]=(0,n.useState)(i?.slug),o=l.oneTimeProducts.find(e=>e.slug===r)??i;if(!o)return null;let d="sm"===e.size;return(0,t.jsxs)("div",{children:[(0,t.jsx)(P,{selectedProductSlug:o.slug,onSelectedProductSlugChange:s,size:e.size,analyticsSurface:e.analyticsSurface}),(0,t.jsxs)(_,{product:o,className:(0,a.cn)("w-full",d?"mt-3":"mt-4"),analyticsSurface:e.analyticsSurface,children:["Purchase ",(0,l.getOneTimeProductRunTotal)(o)," additional runs"]})]})},"TestRunsPicker",0,P,"getOneTimeProductBySlug",0,k],612394)}]);
3
4//# debugId=01582aa0-324f-17f9-6029-879395e56023

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.