1function S(){return window.dataLayer=window.dataLayer||[],window.dataLayer}function U(e,t={}){let r=S(),o={event:e,...t,timestamp:new Date().toISOString()};r.push(o)}function R(){S().push({ecommerce:null})}function C(e){R(),U("begin_checkout",{ecommerce:{currency:e.currency||"USD",value:parseFloat(e.price.toFixed(2)),items:[j(e)]}})}function j(e){let t="Subscription";return e.type==="basic"?t="Basic Plan":e.type==="pro"?t="Pro Plan":e.cycle==="once"&&e.type!=="addon"&&(t="Lifetime Plan"),{item_id:e.code,item_name:e.name,price:parseFloat(e.price.toFixed(2)),quantity:1,item_category:t,item_category2:e.cycle,credits:e.credits}}function F(){let e="",t;for(let r=0;r<32;r++)t=Math.random()*16|0,r>4&&r<21&&!(r%4)&&(e+="-"),e+=(r===12?4:r===16?t&3|8:t).toString(16);return e}var A={success:{borderColor:"border-green-100 dark:border-green-800",iconBg:"bg-green-100 dark:bg-green-800/40",iconColor:"text-green-600 dark:text-green-300",progressColor:"bg-green-600 dark:bg-green-400",linkColor:"text-green-700 hover:text-green-800 active:text-green-900 dark:text-green-300 dark:hover:text-green-200 dark:active:text-green-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 2 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" /> 3 </svg>`},error:{borderColor:"border-red-100 dark:border-red-800",iconBg:"bg-red-100 dark:bg-red-800/40",iconColor:"text-red-600 dark:text-red-300",progressColor:"bg-red-600 dark:bg-red-400",linkColor:"text-red-700 hover:text-red-800 active:text-red-900 dark:text-red-300 dark:hover:text-red-200 dark:active:text-red-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 4 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /> 5 </svg>`},warning:{borderColor:"border-yellow-100 dark:border-yellow-800",iconBg:"bg-yellow-100 dark:bg-yellow-800/40",iconColor:"text-yellow-600 dark:text-yellow-300",progressColor:"bg-yellow-600 dark:bg-yellow-400",linkColor:"text-yellow-700 hover:text-yellow-800 active:text-yellow-900 dark:text-yellow-300 dark:hover:text-yellow-200 dark:active:text-yellow-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 6 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" /> 7 </svg>`},info:{borderColor:"border-blue-100 dark:border-blue-800",iconBg:"bg-blue-100 dark:bg-blue-800/40",iconColor:"text-blue-600 dark:text-blue-300",progressColor:"bg-blue-600 dark:bg-blue-400",linkColor:"text-blue-700 hover:text-blue-800 active:text-blue-900 dark:text-blue-300 dark:hover:text-blue-200 dark:active:text-blue-100",icon:`<svg class="w-5 h-5 sm:w-6 sm:h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 8 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /> 9 </svg>`}};function $(){if(!document.getElementById("toast-styles")){let e=document.createElement("style");e.id="toast-styles",e.textContent=` 10 @keyframes slide-in-down { 11 0% { 12 transform: translate(-50%, -100%); 13 opacity: 0; 14 } 15 100% { 16 transform: translate(-50%, 0); 17 opacity: 1; 18 } 19 } 20 .animate-slide-in-down { 21 animation: slide-in-down 0.3s ease-out forwards; 22 } 23 @keyframes progress-bar { 24 from { 25 width: 100%; 26 } 27 to { 28 width: 0%; 29 } 30 } 31 @keyframes infinite-loader { 32 0% { 33 transform: translateX(-100%); 34 } 35 100% { 36 transform: translateX(100%); 37 } 38 } 39 .infinite-progress { 40 animation: infinite-loader 1.5s ease-in-out infinite; 41 } 42 .message-content a { 43 text-decoration: underline; 44 transition-property: all; 45 transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); 46 transition-duration: 150ms; 47 } 48 `,document.head.appendChild(e)}}function k({type:e="info",title:t="",message:r="",timeout:o=5e3}){$(),x();let n=A[e]||A.info,c=o<0,i=document.createElement("div");i.id="mm-toast-container",i.className="fixed top-16 left-1/2 -translate-x-1/2 z-50 animate-slide-in-down w-full max-w-[calc(100%-2rem)] sm:max-w-md px-4",i.style.position="fixed",i.innerHTML=` 49 <div class=" 50 relative 51 bg-white dark:bg-gray-900 52 rounded-lg 53 shadow-lg dark:shadow-gray-900/30 54 border ${n.borderColor} 55 p-4 56 w-full 57 overflow-hidden 58 "> 59 <div class="flex items-center gap-3"> 60 <div class=" 61 flex-shrink-0 62 w-12 h-12 63 ${n.iconBg} 64 rounded-full 65 inline-flex 66 items-center 67 justify-center 68 ${n.iconColor} 69 shadow-sm 70 "> 71 ${n.icon} 72 </div> 73 <div class="flex-1 min-w-0"> 74 <h3 class="font-semibold text-base text-gray-900 dark:text-white leading-5">${t}</h3> 75 <div class="text-sm text-gray-600 dark:text-gray-300 message-content leading-5 mt-0.5">${r}</div> 76 </div> 77 <button class=" 78 flex-shrink-0 79 ml-2 80 text-gray-400 81 hover:text-gray-600 82 active:text-gray-800 83 dark:text-gray-500 84 dark:hover:text-gray-300 85 dark:active:text-gray-100 86 transition-colors 87 duration-150 88 outline-none 89 rounded-full 90 p-1 91 focus-visible:ring-2 92 focus-visible:ring-offset-2 93 focus-visible:ring-offset-white 94 dark:focus-visible:ring-offset-gray-900 95 focus-visible:ring-gray-400 96 dark:focus-visible:ring-gray-500 97 "> 98 <svg viewBox="0 0 24 24" fill="currentColor" class="w-5 h-5"> 99 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/> 100 </svg> 101 </button> 102 </div> 103 <div class="absolute bottom-0 left-0 right-0 h-1 bg-gray-100 dark:bg-gray-800"> 104 ${c?` 105 <div class="h-full ${n.progressColor} infinite-progress" style="width: 50%"></div> 106 `:o?` 107 <div class="h-full ${n.progressColor}" 108 style="width: 100%; animation: progress-bar ${o}ms linear forwards;"> 109 </div> 110 `:""} 111 </div> 112 </div> 113 `;let a=i.querySelector(".message-content");
113if(a){let s=a.getElementsByTagName("a");Array.from(s).forEach(u=>{u.className=` 114 font-medium 115 ${n.linkColor} 116 transition-colors 117 duration-150 118 hover:underline 119 outline-none 120 rounded 121 px-0.5 122 -mx-0.5 123 focus-visible:ring-2 124 focus-visible:ring-offset-1 125 focus-visible:ring-offset-white 126 dark:focus-visible:ring-offset-gray-900 127 focus-visible:ring-current 128 `.trim()})}document.body.appendChild(i);let l=i.querySelector("button");l.addEventListener("click",()=>{l.blur(),x()}),o>0&&setTimeout(()=>{i&&i.parentNode&&(i.style.opacity="0",i.style.transform="translate(-50%, -100%)",i.style.transition="all 0.3s ease-out",setTimeout(()=>x(),300))},o)}function x(){let e=document.getElementById("mm-toast-container");e&&e.remove();let t=document.getElementsByClassName("mm-banner");if(t){for(let r of t)r.classList.add("hidden");document.dispatchEvent(new CustomEvent("banners-hidden-by-toast"))}}function w(e,t,r){let o=String(t).toLowerCase(),n=String(r).toLowerCase(),c=n==="lite"||n==="plus"||n==="ultimate"?`lifetime-${n}`:n;for(let i of e)if(!(!i||!i.cycle||!i.code)&&i.cycle.toLowerCase()===o&&i.code.toLowerCase().startsWith(c))return i.code;return null}var D=!1,L="en",z=null,g=null;var E=new Map;function H(e){return String(e||"").trim().replace(/_/g,"-")}function J(e){let t=[];if(e){t.push(e);let r=e.split("-")[0];r&&r!==e&&t.push(r)}t.push(L);for(let r of t)try{if(Intl.DateTimeFormat.supportedLocalesOf(r).length>0)return r}catch{}return L}function T(){if(g)return g;let e=z||V();return g=J(H(e)),g}function V(){return typeof window=="undefined"?null:window.userFormatLocale||window.userLocale||null}function G(e,t,r){let o=e+"|"+T()+"|"+JSON.stringify(t||{}),n=E.get(o);if(n===void 0){try{n=r(T(),t)}catch{n=null}E.set(o,n)}return n}function N(e){return G("n",e,(t,r)=>new Intl.NumberFormat(t,r))}function q(e){return D?Object.assign({numberingSystem:"latn"},e):e}function W(e,t){let r=typeof e=="number"?e:Number(e);if(!Number.isFinite(r))return"";let o=q(Number.isFinite(t)?{minimumFractionDigits:t,maximumFractionDigits:t}:{}),n=N(o);return n?n.format(r):String(r)}function y(e,t,r){let o=typeof e=="number"?e:Number(e);if(!Number.isFinite(o))return"";let n=Number.isFinite(r)?r:Number.isInteger(o)?0:2,c=N(q({style:"currency",currency:t||"USD",minimumFractionDigits:n,maximumFractionDigits:n}));if(c)return c.format(o);let i=W(o,n);return t&&t!=="USD"?i+" "+t:"$"+i}var se=[{limit:1024,divisor:1,unit:"byte",display:"narrow",symbol:"B",digits:0},{limit:1024*1024,divisor:1024,unit:"kilobyte",display:"short",symbol:"kB",digits:1},{limit:1/0,divisor:1024*1024,unit:"megabyte",display:"short",symbol:"MB",digits:1}];var le=[{unit:"year",ms:365*24*36e5},{unit:"month",ms:720*36e5},{unit:"week",ms:168*36e5},{unit:"day",ms:24*36e5},{unit:"hour",ms:36e5},{unit:"minute",ms:6e4}];var v=typeof upgradePlanDetails!="undefined"?JSON.parse(upgradePlanDetails):[];function p(e,t,r,o){let n=Number.parseInt(e,10);return Number.isNaN(n)?o:Math.min(r,Math.max(t,n))}function h(e,t){e.disabled=t;let r=e.querySelector(".button-loading"),o=e.querySelector(".button-text");r&&r.classList.toggle("hidden",!t),o&&o.classList.toggle("hidden",t)}var f="me",m="yearly";function b(){f==="team"&&m==="lifetime"&&(m="yearly"),document.querySelectorAll("[data-audience]").forEach(a=>{let l=a.dataset.audience===f;a.classList.toggle("is-active",l),a.setAttribute("aria-selected",l?"true":"false")}),document.querySelectorAll("[data-billing-tab]").forEach(a=>{let l=a.dataset.billingTab===m;a.classList.toggle("is-active",l),a.setAttribute("aria-selected",l?"true":"false")});let e=document.getElementById("pp-lifetime-tab");e&&e.classList.toggle("hidden",f==="team");let t=f+"-"+m;document.querySelectorAll("[data-plan-group]").forEach(a=>{a.classList.toggle("hidden",a.dataset.planGroup!==t)});let r=document.getElementById("pp-compare-wrap");r&&r.classList.toggle("hidden",f!=="me"||m==="lifetime");let o=m==="monthly"?"monthly":"yearly";document.querySelectorAll("[data-cmp-price]").forEach(a=>{let l=a.getAttribute("data-"+o),s=l?y(Number(l),"USD",2):"";s&&(a.textContent=s)}),document.querySelectorAll("[data-cmp-sub]").forEach(a=>{let l=a.getAttribute("data-"+o);l&&(a.textContent=l)}),document.querySelectorAll("[data-cmp-cta]").forEach(a=>{a.dataset.billing=o});let n=document.querySelector("[data-credits-strip]");if(n){let a=m==="lifetime"?n.getAttribute("data-lifetime"):n.getAttribute("data-default");a&&(n.innerHTML=a)}let c=document.getElementById("pp-extra-individual"),i=document.getElementById("pp-extra-team");c&&c.classList.toggle("hidden",f!=="me"),i&&i.classList.toggle("hidden",f!=="team")}function X(){document.querySelectorAll("[data-audience]").forEach(e
128=>{e.addEventListener("click",()=>{f=e.dataset.audience,b()})}),document.querySelectorAll("[data-billing-tab]").forEach(e=>{e.addEventListener("click",()=>{m=e.dataset.billingTab;try{history.replaceState(null,"","#"+m)}catch{}b()})}),document.querySelectorAll("[data-goto-team]").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),f="team",b(),requestAnimationFrame(()=>{let r=document.getElementById("paid-plans");if(r){let o=r.getBoundingClientRect().top+window.scrollY-24;window.scrollTo({top:o,behavior:"smooth"})}})})})}function K(){document.querySelectorAll("[data-seat-card]").forEach(e=>{let t=e.querySelector("[data-seat-input]"),r=e.querySelector("[data-seat-dec]"),o=e.querySelector("[data-seat-inc]"),n=e.querySelector("[data-seat-total]"),c=e.querySelector(".subscribe-button");if(!t||!c)return;let i=p(t.getAttribute("min"),1,1e3,2),a=p(t.getAttribute("max"),1,1e3,100),l=parseFloat(t.dataset.unitPrice||"0"),s=e.dataset.billingCycle||"monthly";function u(){let d=p(t.value,i,a,i);if(t.value=String(d),c.dataset.seats=String(d),c.dataset.seatsResolved=String(d),n){let I=s==="yearly"?12:1,M=y(l*d*I,"USD",2),B=y(l*d,"USD",2),P=n.dataset.billedLabel||"Billed",O=n.dataset.moLabel||"/mo equivalent",_=P+" <strong>"+M+"</strong>";s==="yearly"&&(_+=' <span class="text-slate-400">\xB7 '+B+" "+O+"</span>"),n.innerHTML=_}}r&&r.addEventListener("click",d=>{d.preventDefault(),t.value=String(Math.max(i,p(t.value,i,a,i)-1)),u()}),o&&o.addEventListener("click",d=>{d.preventDefault(),t.value=String(Math.min(a,p(t.value,i,a,i)+1)),u()}),t.addEventListener("input",()=>{t.value!==""&&(t.value=t.value.replace(/[^0-9]/g,""))}),t.addEventListener("change",u),t.addEventListener("blur",u),u()})}function Y(e){if(e.dataset.seatsResolved)return p(e.dataset.seatsResolved,1,1e3,2);if(e.dataset.seats)return p(e.dataset.seats,1,1e3,2);let t=e.closest("[data-seat-card]"),r=t?t.querySelector("[data-seat-input]"):null;return r?p(r.value,1,1e3,2):1}function Z(){let e=document.getElementById("pp-compare-toggle"),t=document.getElementById("pp-compare-panel");!e||!t||e.addEventListener("click",()=>{let r=t.classList.toggle("hidden")===!1;e.classList.toggle("is-open",r),e.setAttribute("aria-expanded",r?"true":"false");let o=e.dataset.labelShow,n=e.dataset.labelHide,c=e.querySelector("[data-compare-label]");c&&o&&n&&(c.textContent=r?n:o)})}function Q(){let e=document.querySelectorAll(".pp-faq-item");e.forEach((t,r)=>{let o=t.querySelector(".pp-faq-q"),n=t.querySelector(".pp-faq-a");!o||!n||(r===0&&(t.classList.add("is-open"),o.setAttribute("aria-expanded","true"),n.style.maxHeight=n.scrollHeight+"px"),o.addEventListener("click",()=>{let c=!t.classList.contains("is-open");e.forEach(i=>{if(i===t)return;i.classList.remove("is-open");let a=i.querySelector(".pp-faq-q"),l=i.querySelector(".pp-faq-a");a&&a.setAttribute("aria-expanded","false"),l&&(l.style.maxHeight="0px")}),t.classList.toggle("is-open",c),o.setAttribute("aria-expanded",c?"true":"false"),n.style.maxHeight=c?n.scrollHeight+"px":"0px"}))})}function ee(){document.querySelectorAll(".subscribe-button").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation(),t.preventDefault();let r=e.dataset.billing||"yearly",o=e.dataset.plan||"basic",n=e.dataset.trial==="true",c=e.dataset.team==="true",i=c?Y(e):1;if(!(userIdHash!=="-1")){let s=w(v,r,o),u=`/upgrade?billing=${r}&plan=${s}&trial=${n}&team=${c}&quantity=${i}`,d=encodeURIComponent(u);window.location.href=`/login?rt=${d}`;return}h(e,!0);let l=v.find(s=>s.code.toLowerCase().includes(o.toLowerCase())&&s.cycle===r);l&&C({...l,quantity:i}),fetch("/subscription/create-link",{method:"POST",credentials:"same-origin",headers:{"X-Correlation-ID":F(),"Content-Type":"application/json"},body:JSON.stringify({billing:r,plan:w(v,r,o),trial:n,quantity:i,teamPlan:c})}).then(s=>{if(s.redirected)throw new Error("Redirect");if(!s.ok)throw new Error("ServerError");return s.json()}).then(s=>{s.code==="S1000"?setTimeout(()=>{window.location.href=s.result},250):(h(e,!1),k({type:"error",title:"Upgrade Error",message:s.description}))}).catch(s=>{if(h(e,!1),console.error("Error while creating subscription link:",s),s.message==="Redirect")window.location.reload();else{let u=s.message==="ServerError"?"The server encountered an error. Please try again later.":"Something went wrong while processing your request.";k({type:"error",title:"Upgrade Error",message:u})}})})})}document.addEventListener("DOMContentLoaded",()=>{let e=window.location.hash.replace("#","");["monthly","yearly","lifetime"].includes(e)&&(m=e),X(),K(),Z(),Q(),ee(),b()});window.addEventListener("pageshow",()=>
128{document.querySelectorAll(".subscribe-button").forEach(e=>{h(e,!1)})});
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.