@webability/core 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dom.cjs CHANGED
@@ -402,7 +402,7 @@ Omit "fix" for passes.`;function LM(p){let d=p.items.map(({screenshot:y,...h})=>
402
402
  Conformance level: ${p.level}
403
403
 
404
404
  Findings:
405
- ${JSON.stringify(d,null,1)}`}function OM(p,d={}){let y=p.vision&&p.items.some(D=>D.screenshot),h=y?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(y)for(let D of p.items)D.screenshot&&(m.push({type:"text",text:`Crop for ${D.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${D.screenshot}`}}));return {model:h,temperature:0,max_tokens:4096,...h===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),y=false;try{let h=new URL(d).hostname;y=h==="openrouter.ai"||h.endsWith(".openrouter.ai");}catch{}return async(h,m)=>{let D=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(h,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:y}))});if(!D.ok)throw new Zn(`judge model HTTP ${D.status}`);let _=(await D.json()).choices?.[0]?.message?.content;if(typeof _=="string")return _;if(Array.isArray(_))return _.map(I=>typeof I?.text=="string"?I.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(y,h)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:h,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(y)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,y){let h={promoted:[],judged:[]},m=qM(y);if(d.length===0)return h;let D=y.level??"AA",R=y.timeoutMs??bM,_=Date.now()+R,I=Za([...d],D);if(I.length===0)return h;let O=new Map;for(let v of I){let x=`${v.selector}|${Fu(v)}`,b=O.get(x);b?b.members.push(v):O.set(x,{key:x,members:[v],rep:v,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...O.keys()].map(v=>O.get(v).rep.selector),maxHtml:Eg});}catch{}for(let v of O.values())v.ctx=F.elements[v.rep.selector],v.ctx&&!v.ctx.found&&(v.ctx=void 0),v.kind=CM(v.rep,v.ctx);let A=new Map;for(let[v,x]of [...O]){if(!x.ctx)continue;let b=`${x.ctx.elementKey}|${Fu(x.rep)}`,T=A.get(b);if(!T){A.set(b,x);continue}T.members.push(...x.members),O.delete(v);}let k={promoted:[],judged:[]},E=(v,x)=>{for(let b of v.members){if(x.verdict==="violation"){let T=VM(b,v,x);if(!T)continue;k.promoted.push(T);}k.judged.push({id:b.id.replace("axe-incomplete-","axe-"),type:b.type,verdict:x.verdict,reason:x.reason});}},P=[...O.values()].filter(v=>v.kind==="contrast");if(P.length&&p){for(let x of P)x.pixels=y.measured?.get(x.rep.selector);let v=P.filter(x=>!x.pixels).map(x=>x.rep.selector);if(v.length)try{for(let x of await xg(p,v))for(let b of P)b.rep.selector===x.selector&&(b.pixels=x);}catch{}}let M=[];for(let v of O.values()){let x=m?No.get(Sg(y.url,v.rep,v.ctx?.html??v.rep.html??"")):void 0;if(x){E(v,x);continue}let b=HM(v);if(b!=="drop"){if(b){E(v,b);continue}M.push(v);}}if(M.length===0||!m)return k;let H=y.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,G=0,U=BM(y),ee=v=>({id:v.rep.id,type:v.rep.type,wcag:v.rep.wcag,message:v.rep.message,selector:v.rep.selector,html:(v.ctx?.html??v.rep.html??"").slice(0,Eg),context:j.has(v.key)?{...kg(v),cropNote:"no image attached: the crop was too large to send"}:kg(v),...B.has(v.key)?{screenshot:B.get(v.key)}:{}}),C=H?vM:gM;for(let v=0;v<M.length;v+=C){let x=_-Date.now();if(x<=0)break;let b=M.slice(v,v+C);if(H){for(let Z of b){if(G>=yM||Date.now()>_)break;let oe=await zM(p,Z.ctx,U);oe&&(G++,oe.data?B.set(Z.key,oe.data):j.add(Z.key));}if(Date.now()>_)break}let T=new Map(b.map(Z=>[Z.rep.id,Z])),L=new AbortController,N=setTimeout(()=>L.abort(),x),$=null,Y=false,ae=Date.now();try{let Z=await Promise.race([m({url:y.url,level:D,vision:H,items:b.map(ee)},L.signal),new Promise((oe,ce)=>L.signal.addEventListener("abort",()=>ce(new Error("judge deadline"))))]);$=IM(Z),Iu()&&console.error(`ai judge: batch ${b.length} items, ${b.filter(oe=>B.has(oe.key)).length} crops, ${Date.now()-ae}ms, ${$?$.length+" verdicts":"MALFORMED: "+String(Z).slice(0,200)}`);}catch(Z){Iu()&&console.error(`ai judge: batch ${b.length} items failed after ${Date.now()-ae}ms: ${Z.message}`),$=null,Y=Z instanceof Zn;}finally{clearTimeout(N);}if(!$){if(L.signal.aborted||Y)break;continue}for(let Z of $){let oe=T.get(Z.id);if(!oe)continue;T.delete(Z.id);let ce={verdict:Z.verdict,reason:kM(Z.reason),fix:Z.fix};No.size>=AM&&No.clear(),No.set(Sg(y.url,oe.rep,oe.ctx?.html??oe.rep.html??""),ce),E(oe,ce);}}return k}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:y,attrH:h,naturalW:m,naturalH:D}=d.img;if(y>0&&y<=1&&h>0&&h<=1||m>0&&m<=1&&D>0&&D<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let y=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=y?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${y}:1`}:p.pixels.bestRatio<y*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${y}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,y={};return p.rep.reviewReason&&(y.engineNote=p.rep.reviewReason),d&&(y.tag=d.tag,d.nearText&&(y.nearbyText=d.nearText),d.parentInteractive&&(y.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(y.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(y.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(y.fg=Jn(p.pixels.fg),y.threshold=Lu(p.rep,p.pixels.threshold),y.bestRatio=Tg(p.pixels.bestRatio),y.worstRatio=Tg(p.pixels.worstRatio),y.fontSize=d.fontSize,y.fontWeight=d.fontWeight),p.kind==="generic"&&(y.fg=Jn(d.fg),y.bg=Jn(d.bg),y.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),y}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,y){let h=FM(p);if(d.kind==="alt"){let D=TM(y.fix?.value);return D?Mu(d.ctx)?{...h,fix:{attribute:"aria-label",currentValue:"",suggestedValue:D,needsManualReview:false}}:{...h,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:D,needsManualReview:false}}:null}if(d.kind==="contrast"){let D=d.pixels;if(!D)return null;let R=Jn(D.fg),_=Lu(p,D.threshold),I=D.worstBg?Jn(D.worstBg):null,O=D.bestBg?Jn(D.bestBg):null,F=P=>!!P&&!!I&&Sn(P,I)>=_&&(!O||Sn(P,O)>=_),A,k=RM(y.fix?.value),E=I?jM(R,I,_):null;return k&&k!==R.toLowerCase()&&F(k)?A=`color:${k} !important;`:F(E)?A=`color:${E} !important;`:O&&Sn(R,O)>=_&&(A=`background-color:${O} !important;`),{...h,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${D.worstRatio.toFixed(2)}:1 at worst (${D.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${y.reason||"not readable"}), needs ${_}:1`,fix:{attribute:"style",currentValue:R,...A?{suggestedValue:A}:{},needsManualReview:true}}}let m=p.fix;return m?{...h,fix:m}:y.fix?.attribute&&y.fix.value?{...h,fix:{attribute:y.fix.attribute,currentValue:"",suggestedValue:y.fix.value,needsManualReview:true}}:h}function jM(p,d,y){let h=p.match(Rg);if(!h)return null;let m=parseInt(h[1],16),D=[m>>16&255,m>>8&255,m&255],R=O=>"#"+O.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),_=(O,F)=>R(D.map(A=>F?A*(1-O):A+(255-A)*O)),I=null;for(let O of [true,false]){if(Sn(_(1,O),d)<y)continue;let F=0,A=1;for(let E=0;E<24;E++){let P=(F+A)/2;Sn(_(P,O),d)>=y?A=P:F=P;}let k=_(A,O);Sn(k,d)>=y&&(!I||A<I.t)&&(I={t:A,hex:k});}return I?.hex??null}var $M=[1,.6,.35];async function zM(p,d,y){let h=p.screenshot;if(typeof h!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let D=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),_=d.rect.x+d.rect.w/2,I=d.rect.y+d.rect.h/2,O=globalThis.Buffer;if(!O)return null;let F=0;for(let A of y===void 0?[1]:$M){let k=Math.max(2,Math.round(D*A)),E=Math.max(2,Math.round(R*A)),P=A===1?Math.max(0,d.rect.x-8):Math.max(0,_-k/2),M=A===1?Math.max(0,d.rect.y-8):Math.max(0,I-E/2),H=await h.call(p,{clip:{x:P,y:M,width:k,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=O.from(H).toString("base64");if(F=B.length,y===void 0||B.length<=y)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${y} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function h(b){try{return document.querySelectorAll(b).length===1}catch{return false}}function m(b){if(!b||/^_?[Rr]_[a-z0-9]+_/.test(b)||/^:[Rr][0-9a-z]+:/.test(b)||/^«[Rr][0-9a-z]+»/.test(b)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(b)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(b)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(b)||/[0-9a-f]{16,}/i.test(b))return true;for(var T=b.split(/[-_:.]/).filter(Boolean),L=T.some(function(Z){var oe=(Z.match(/[a-z]/gi)||[]).length,ce=(Z.match(/[aeiou]/gi)||[]).length;return oe>=4&&ce>=1&&!/\d/.test(Z)}),N=0;N<T.length;N++){var $=T[N];if(!L&&/^\d{7,}$/.test($)||/^[0-9a-f]{13}$/i.test($)&&/[a-f]/i.test($)&&/\d/.test($))return true;if($.length>=7&&/\d/.test($)&&/[a-z]/i.test($)){var Y=($.match(/[aeiou]/gi)||[]).length,ae=($.match(/[a-z]/gi)||[]).length;if(ae>=4&&Y/ae<.2||($.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function D(b){if(!b.classList||!b.classList.length)return [];for(var T=[],L=0;L<b.classList.length&&T.length<3;L++){var N=b.classList[L];N&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(N)||/^[a-z][a-z0-9_-]{1,40}$/i.test(N)&&T.push(N));}return T}function R(b){var T=b.tagName.toLowerCase(),L=D(b);return L.length?T+"."+L.map(function(N){return CSS.escape(N)}).join("."):T}function _(b){var T=b.tagName.toLowerCase();if(!b.parentElement)return T;var L=Array.from(b.parentElement.children).filter(function(N){return N.tagName===b.tagName});return L.length===1?T:T+":nth-of-type("+(L.indexOf(b)+1)+")"}function I(b){for(var T=[],L=b;L&&L!==document.body&&L!==document.documentElement;)T.unshift(_(L)),L=L.parentElement;return T.join(" > ")}function O(b){if(!b||b===document.body||b===document.documentElement)return "body";var T=b.getAttribute?b.getAttribute("id"):null;if(T&&!m(T)){var L="#"+CSS.escape(T);if(h(L))return L}for(var N=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],$=0;$<N.length;$++){var Y=b.getAttribute(N[$]);if(Y&&Y.length<60){var ae=b.tagName.toLowerCase()+"["+N[$]+'="'+CSS.escape(Y)+'"]';if(h(ae))return ae}}var Z=R(b);if(Z.indexOf(".")!==-1&&h(Z))return Z;for(var oe=[],ce=null,fe=b;fe&&fe!==document.body&&fe!==document.documentElement;){var Ee=fe.getAttribute?fe.getAttribute("id"):null;if(Ee&&!m(Ee)){var Oe="#"+CSS.escape(Ee);if(h(Oe)){ce=Oe;break}}var ke=R(fe);if(ke.indexOf(".")!==-1&&h(ke)){ce=ke;break}if(oe.unshift(fe),fe=fe.parentElement,oe.length>6)break}var _e=oe.map(function(st){var He=R(st);if(He.indexOf(".")!==-1&&st.parentElement){var lt=st.parentElement.querySelectorAll(":scope > "+He);if(lt.length===1)return "> "+He}return "> "+_(st)}).join(" "),he="";if(ce&&_e?he=(ce+" "+_e).slice(0,200):ce&&(he=ce),he&&h(he))return he;var vt=I(b);return vt&&h(vt)?vt:he||vt||R(b)}function F(b){if(!b)return false;let T=getComputedStyle(b);if(T.display==="none"||T.visibility==="hidden")return false;let L=parseFloat(T.opacity);if(!isNaN(L)&&L<.1)return false;if(!isNaN(L)&&L<.5){var N=T.transform||"";if(N&&N!=="none"&&N!=="matrix(1, 0, 0, 1, 0, 0)")return false}let $=b.getBoundingClientRect();if($.width<=1||$.height<=1)return false;var Y=T.clipPath||"";return !(Y!=="none"&&/inset\(\s*(?:50|100)%/.test(Y)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(T.clip||""))}function A(b){if(!b)return "";for(var T=[],L=String(b).trim().split(/\s+/),N=0;N<L.length;N++){var $=document.getElementById(L[N]);if($){var Y=($.textContent||"").trim();Y&&T.push(Y);}}return T.join(" ").replace(/\s+/g," ").trim()}function k(b){var T=A(b.getAttribute("aria-labelledby"));if(T)return T;var L=b.getAttribute("aria-label")||"";if(L.trim())return L.trim();var N=b.tagName?b.tagName.toLowerCase():"";if(N==="input"||N==="select"||N==="textarea"){var $=b.getAttribute("id");if($)try{var Y=document.querySelector('label[for="'+CSS.escape($)+'"]');if(Y&&(Y.textContent||"").trim())return (Y.textContent||"").trim().replace(/\s+/g," ")}catch{}var ae=b.closest?b.closest("label"):null;if(ae&&(ae.textContent||"").trim())return (ae.textContent||"").trim().replace(/\s+/g," ")}var Z=(b.textContent||"").trim().replace(/\s+/g," ");if(!Z&&b.querySelector){var oe=b.querySelector('img[alt]:not([alt=""])');if(oe&&(Z=(oe.getAttribute("alt")||"").trim()),!Z){var ce=b.querySelector("svg > title");ce&&(Z=(ce.textContent||"").trim());}}if(Z)return Z;var fe=b.getAttribute("title")||"";return fe.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(b){return b?b.closest(E)!==null:false}function M(b){if(!b)return false;if(b.getAttribute("aria-hidden")==="true"||b.getAttribute("role")==="presentation"||b.getAttribute("role")==="none")return true;let T=b.parentElement,L=0;for(;T&&T!==document.body&&L<6;){if(T.getAttribute("aria-hidden")==="true")return true;T=T.parentElement,L++;}return false}function H(b){let T=b.naturalWidth||b.width||0,L=b.naturalHeight||b.height||0;if(T<=2&&L<=2)return true;let N=b.getBoundingClientRect();if(N.width<=2&&N.height<=2)return true;let $=(b.src||"").toLowerCase();return !!($.includes("pixel")||$.includes("beacon")||$.includes("tracker")||$.includes("analytics")||$.includes("adsrvr")||$.includes("doubleclick")||$.includes("facebook.com/tr"))}function B(b){var T=b.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");T||(T=b.closest("div,nav,main,aside,header,footer"));var L=T?T.querySelector("h1,h2,h3,h4,h5,h6"):null,N=L?(L.textContent||"").trim().slice(0,80):"",$=b.parentElement,Y=$?$.tagName.toLowerCase():"",ae=$&&$.getAttribute("role")||"",Z="";if(T){var oe=T.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");oe&&(Z=(oe.textContent||"").trim().slice(0,120));}var ce="";if(T){var fe=T.querySelector('img[alt]:not([alt=""])');fe&&(ce=(fe.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:N,parentTag:Y,parentRole:ae,cardText:Z,imgAlt:ce}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},G=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(b,T,L){var N=[];if(b)for(var $=b.split(/\s+/),Y=0;Y<$.length;Y++){var ae=$[Y];if(ae){var Z=ae.toLowerCase().replace(G,"").replace(/^icon-/,"");Z&&Z!==ae.toLowerCase()&&N.push(Z);}}if(T&&N.push(T.toLowerCase().trim()),L){var oe=L.trim().toLowerCase();oe.length<30&&/^[a-z_-]+$/.test(oe)&&N.push(oe.replace(/_/g,"-"));}for(var ce=0;ce<N.length;ce++)if(j[N[ce]])return j[N[ce]];for(var fe=0;fe<N.length;fe++)for(var Ee=N[fe].split("-"),Oe=0;Oe<Ee.length;Oe++)if(j[Ee[Oe]])return j[Ee[Oe]];return null}var ee;function C(b){if(!b)return null;var T=b.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(T)return [parseInt(T[1],10),parseInt(T[2],10),parseInt(T[3],10),T[4]?parseFloat(T[4]):1];if(b==="transparent"||b==="none")return [0,0,0,0];try{if(ee===void 0){var L=document.createElement("canvas");L.width=1,L.height=1,ee=L.getContext("2d",{willReadFrequently:!0});}if(!ee)return null;ee.clearRect(0,0,1,1),ee.fillStyle="#000000",ee.fillStyle=b,ee.fillRect(0,0,1,1);var N=ee.getImageData(0,0,1,1).data;return [N[0],N[1],N[2],N[3]/255]}catch{return null}}function v(b,T,L){var N=function($){var Y=$/255;return Y<=.03928?Y/12.92:Math.pow((Y+.055)/1.055,2.4)};return .2126*N(b)+.7152*N(T)+.0722*N(L)}function x(b,T){var L=v(b[0],b[1],b[2]),N=v(T[0],T[1],T[2]),$=Math.max(L,N),Y=Math.min(L,N);return ($+.05)/(Y+.05)}Object.assign(p,{__isUnique:h,__isGeneratedId:m,__cleanClasses:D,__tagWithClass:R,__nthSelector:_,__fullPath:I,uniqueSel:O,isVisible:F,__resolveIdRefs:A,getAccessibleName:k,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:M,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:G,lookupIconLabel:U,__colorCtx:ee,parseCssColor:C,relLuminance:v,contrastRatio:x}),p.__waDomKernelInstalled=true;}var Mg="1.14.0";function GM(p){return {async evaluate(d,...y){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...y)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let y=GM(d),h=[],m=[],D=[],R=[];await bu(y);let _=await dg(y,m,D,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(h.push(..._.map(yg)),p.includeAxe!==false)try{let k=await Promise.resolve().then(()=>k3(Og(),1)),P=await(k.default??k).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let M of P.violations??[])for(let H of M.nodes??[])h.push({id:`axe-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let M of P.incomplete??[])for(let H of M.nodes??[])h.push({id:`axe-incomplete-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{D.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let I=Au(Lo(h).verdicts);try{I=await mg(y,I);}catch{}try{I=await hg(y,I);}catch{}try{I=await fg(y,I);}catch{}I=Za(I,p.level??"AA");let O=Lo(I),F=O.verdicts,A;if(p.judge)try{let k=Za([...Lo(h).undecided,...O.undecided],p.level??"AA"),E=await Fg(y,k,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(A=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(y,F,R);}catch{}return wu(R,await yu(y)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...A?{judged:A}:{},...m.length?{truncated:m}:{},...D.length?{engineWarnings:D}:{},summary:wg(F)}}/*! Bundled license information:
405
+ ${JSON.stringify(d,null,1)}`}function OM(p,d={}){let y=p.vision&&p.items.some(D=>D.screenshot),h=y?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(y)for(let D of p.items)D.screenshot&&(m.push({type:"text",text:`Crop for ${D.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${D.screenshot}`}}));return {model:h,temperature:0,max_tokens:4096,...h===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),y=false;try{let h=new URL(d).hostname;y=h==="openrouter.ai"||h.endsWith(".openrouter.ai");}catch{}return async(h,m)=>{let D=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(h,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:y}))});if(!D.ok)throw new Zn(`judge model HTTP ${D.status}`);let _=(await D.json()).choices?.[0]?.message?.content;if(typeof _=="string")return _;if(Array.isArray(_))return _.map(I=>typeof I?.text=="string"?I.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(y,h)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:h,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(y)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,y){let h={promoted:[],judged:[]},m=qM(y);if(d.length===0)return h;let D=y.level??"AA",R=y.timeoutMs??bM,_=Date.now()+R,I=Za([...d],D);if(I.length===0)return h;let O=new Map;for(let v of I){let x=`${v.selector}|${Fu(v)}`,b=O.get(x);b?b.members.push(v):O.set(x,{key:x,members:[v],rep:v,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...O.keys()].map(v=>O.get(v).rep.selector),maxHtml:Eg});}catch{}for(let v of O.values())v.ctx=F.elements[v.rep.selector],v.ctx&&!v.ctx.found&&(v.ctx=void 0),v.kind=CM(v.rep,v.ctx);let A=new Map;for(let[v,x]of [...O]){if(!x.ctx)continue;let b=`${x.ctx.elementKey}|${Fu(x.rep)}`,T=A.get(b);if(!T){A.set(b,x);continue}T.members.push(...x.members),O.delete(v);}let k={promoted:[],judged:[]},E=(v,x)=>{for(let b of v.members){if(x.verdict==="violation"){let T=VM(b,v,x);if(!T)continue;k.promoted.push(T);}k.judged.push({id:b.id.replace("axe-incomplete-","axe-"),type:b.type,verdict:x.verdict,reason:x.reason});}},P=[...O.values()].filter(v=>v.kind==="contrast");if(P.length&&p){for(let x of P)x.pixels=y.measured?.get(x.rep.selector);let v=P.filter(x=>!x.pixels).map(x=>x.rep.selector);if(v.length)try{for(let x of await xg(p,v))for(let b of P)b.rep.selector===x.selector&&(b.pixels=x);}catch{}}let M=[];for(let v of O.values()){let x=m?No.get(Sg(y.url,v.rep,v.ctx?.html??v.rep.html??"")):void 0;if(x){E(v,x);continue}let b=HM(v);if(b!=="drop"){if(b){E(v,b);continue}M.push(v);}}if(M.length===0||!m)return k;let H=y.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,G=0,U=BM(y),ee=v=>({id:v.rep.id,type:v.rep.type,wcag:v.rep.wcag,message:v.rep.message,selector:v.rep.selector,html:(v.ctx?.html??v.rep.html??"").slice(0,Eg),context:j.has(v.key)?{...kg(v),cropNote:"no image attached: the crop was too large to send"}:kg(v),...B.has(v.key)?{screenshot:B.get(v.key)}:{}}),C=H?vM:gM;for(let v=0;v<M.length;v+=C){let x=_-Date.now();if(x<=0)break;let b=M.slice(v,v+C);if(H){for(let Z of b){if(G>=yM||Date.now()>_)break;let oe=await zM(p,Z.ctx,U);oe&&(G++,oe.data?B.set(Z.key,oe.data):j.add(Z.key));}if(Date.now()>_)break}let T=new Map(b.map(Z=>[Z.rep.id,Z])),L=new AbortController,N=setTimeout(()=>L.abort(),x),$=null,Y=false,ae=Date.now();try{let Z=await Promise.race([m({url:y.url,level:D,vision:H,items:b.map(ee)},L.signal),new Promise((oe,ce)=>L.signal.addEventListener("abort",()=>ce(new Error("judge deadline"))))]);$=IM(Z),Iu()&&console.error(`ai judge: batch ${b.length} items, ${b.filter(oe=>B.has(oe.key)).length} crops, ${Date.now()-ae}ms, ${$?$.length+" verdicts":"MALFORMED: "+String(Z).slice(0,200)}`);}catch(Z){Iu()&&console.error(`ai judge: batch ${b.length} items failed after ${Date.now()-ae}ms: ${Z.message}`),$=null,Y=Z instanceof Zn;}finally{clearTimeout(N);}if(!$){if(L.signal.aborted||Y)break;continue}for(let Z of $){let oe=T.get(Z.id);if(!oe)continue;T.delete(Z.id);let ce={verdict:Z.verdict,reason:kM(Z.reason),fix:Z.fix};No.size>=AM&&No.clear(),No.set(Sg(y.url,oe.rep,oe.ctx?.html??oe.rep.html??""),ce),E(oe,ce);}}return k}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:y,attrH:h,naturalW:m,naturalH:D}=d.img;if(y>0&&y<=1&&h>0&&h<=1||m>0&&m<=1&&D>0&&D<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let y=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=y?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${y}:1`}:p.pixels.bestRatio<y*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${y}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,y={};return p.rep.reviewReason&&(y.engineNote=p.rep.reviewReason),d&&(y.tag=d.tag,d.nearText&&(y.nearbyText=d.nearText),d.parentInteractive&&(y.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(y.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(y.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(y.fg=Jn(p.pixels.fg),y.threshold=Lu(p.rep,p.pixels.threshold),y.bestRatio=Tg(p.pixels.bestRatio),y.worstRatio=Tg(p.pixels.worstRatio),y.fontSize=d.fontSize,y.fontWeight=d.fontWeight),p.kind==="generic"&&(y.fg=Jn(d.fg),y.bg=Jn(d.bg),y.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),y}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,y){let h=FM(p);if(d.kind==="alt"){let D=TM(y.fix?.value);return D?Mu(d.ctx)?{...h,fix:{attribute:"aria-label",currentValue:"",suggestedValue:D,needsManualReview:false}}:{...h,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:D,needsManualReview:false}}:null}if(d.kind==="contrast"){let D=d.pixels;if(!D)return null;let R=Jn(D.fg),_=Lu(p,D.threshold),I=D.worstBg?Jn(D.worstBg):null,O=D.bestBg?Jn(D.bestBg):null,F=P=>!!P&&!!I&&Sn(P,I)>=_&&(!O||Sn(P,O)>=_),A,k=RM(y.fix?.value),E=I?jM(R,I,_):null;return k&&k!==R.toLowerCase()&&F(k)?A=`color:${k} !important;`:F(E)?A=`color:${E} !important;`:O&&Sn(R,O)>=_&&(A=`background-color:${O} !important;`),{...h,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${D.worstRatio.toFixed(2)}:1 at worst (${D.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${y.reason||"not readable"}), needs ${_}:1`,fix:{attribute:"style",currentValue:R,...A?{suggestedValue:A}:{},needsManualReview:true}}}let m=p.fix;return m?{...h,fix:m}:y.fix?.attribute&&y.fix.value?{...h,fix:{attribute:y.fix.attribute,currentValue:"",suggestedValue:y.fix.value,needsManualReview:true}}:h}function jM(p,d,y){let h=p.match(Rg);if(!h)return null;let m=parseInt(h[1],16),D=[m>>16&255,m>>8&255,m&255],R=O=>"#"+O.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),_=(O,F)=>R(D.map(A=>F?A*(1-O):A+(255-A)*O)),I=null;for(let O of [true,false]){if(Sn(_(1,O),d)<y)continue;let F=0,A=1;for(let E=0;E<24;E++){let P=(F+A)/2;Sn(_(P,O),d)>=y?A=P:F=P;}let k=_(A,O);Sn(k,d)>=y&&(!I||A<I.t)&&(I={t:A,hex:k});}return I?.hex??null}var $M=[1,.6,.35];async function zM(p,d,y){let h=p.screenshot;if(typeof h!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let D=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),_=d.rect.x+d.rect.w/2,I=d.rect.y+d.rect.h/2,O=globalThis.Buffer;if(!O)return null;let F=0;for(let A of y===void 0?[1]:$M){let k=Math.max(2,Math.round(D*A)),E=Math.max(2,Math.round(R*A)),P=A===1?Math.max(0,d.rect.x-8):Math.max(0,_-k/2),M=A===1?Math.max(0,d.rect.y-8):Math.max(0,I-E/2),H=await h.call(p,{clip:{x:P,y:M,width:k,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=O.from(H).toString("base64");if(F=B.length,y===void 0||B.length<=y)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${y} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function h(b){try{return document.querySelectorAll(b).length===1}catch{return false}}function m(b){if(!b||/^_?[Rr]_[a-z0-9]+_/.test(b)||/^:[Rr][0-9a-z]+:/.test(b)||/^«[Rr][0-9a-z]+»/.test(b)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(b)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(b)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(b)||/[0-9a-f]{16,}/i.test(b))return true;for(var T=b.split(/[-_:.]/).filter(Boolean),L=T.some(function(Z){var oe=(Z.match(/[a-z]/gi)||[]).length,ce=(Z.match(/[aeiou]/gi)||[]).length;return oe>=4&&ce>=1&&!/\d/.test(Z)}),N=0;N<T.length;N++){var $=T[N];if(!L&&/^\d{7,}$/.test($)||/^[0-9a-f]{13}$/i.test($)&&/[a-f]/i.test($)&&/\d/.test($))return true;if($.length>=7&&/\d/.test($)&&/[a-z]/i.test($)){var Y=($.match(/[aeiou]/gi)||[]).length,ae=($.match(/[a-z]/gi)||[]).length;if(ae>=4&&Y/ae<.2||($.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function D(b){if(!b.classList||!b.classList.length)return [];for(var T=[],L=0;L<b.classList.length&&T.length<3;L++){var N=b.classList[L];N&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(N)||/^[a-z][a-z0-9_-]{1,40}$/i.test(N)&&T.push(N));}return T}function R(b){var T=b.tagName.toLowerCase(),L=D(b);return L.length?T+"."+L.map(function(N){return CSS.escape(N)}).join("."):T}function _(b){var T=b.tagName.toLowerCase();if(!b.parentElement)return T;var L=Array.from(b.parentElement.children).filter(function(N){return N.tagName===b.tagName});return L.length===1?T:T+":nth-of-type("+(L.indexOf(b)+1)+")"}function I(b){for(var T=[],L=b;L&&L!==document.body&&L!==document.documentElement;)T.unshift(_(L)),L=L.parentElement;return T.join(" > ")}function O(b){if(!b||b===document.body||b===document.documentElement)return "body";var T=b.getAttribute?b.getAttribute("id"):null;if(T&&!m(T)){var L="#"+CSS.escape(T);if(h(L))return L}for(var N=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],$=0;$<N.length;$++){var Y=b.getAttribute(N[$]);if(Y&&Y.length<60){var ae=b.tagName.toLowerCase()+"["+N[$]+'="'+CSS.escape(Y)+'"]';if(h(ae))return ae}}var Z=R(b);if(Z.indexOf(".")!==-1&&h(Z))return Z;for(var oe=[],ce=null,fe=b;fe&&fe!==document.body&&fe!==document.documentElement;){var Ee=fe.getAttribute?fe.getAttribute("id"):null;if(Ee&&!m(Ee)){var Oe="#"+CSS.escape(Ee);if(h(Oe)){ce=Oe;break}}var ke=R(fe);if(ke.indexOf(".")!==-1&&h(ke)){ce=ke;break}if(oe.unshift(fe),fe=fe.parentElement,oe.length>6)break}var _e=oe.map(function(st){var He=R(st);if(He.indexOf(".")!==-1&&st.parentElement){var lt=st.parentElement.querySelectorAll(":scope > "+He);if(lt.length===1)return "> "+He}return "> "+_(st)}).join(" "),he="";if(ce&&_e?he=(ce+" "+_e).slice(0,200):ce&&(he=ce),he&&h(he))return he;var vt=I(b);return vt&&h(vt)?vt:he||vt||R(b)}function F(b){if(!b)return false;let T=getComputedStyle(b);if(T.display==="none"||T.visibility==="hidden")return false;let L=parseFloat(T.opacity);if(!isNaN(L)&&L<.1)return false;if(!isNaN(L)&&L<.5){var N=T.transform||"";if(N&&N!=="none"&&N!=="matrix(1, 0, 0, 1, 0, 0)")return false}let $=b.getBoundingClientRect();if($.width<=1||$.height<=1)return false;var Y=T.clipPath||"";return !(Y!=="none"&&/inset\(\s*(?:50|100)%/.test(Y)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(T.clip||""))}function A(b){if(!b)return "";for(var T=[],L=String(b).trim().split(/\s+/),N=0;N<L.length;N++){var $=document.getElementById(L[N]);if($){var Y=($.textContent||"").trim();Y&&T.push(Y);}}return T.join(" ").replace(/\s+/g," ").trim()}function k(b){var T=A(b.getAttribute("aria-labelledby"));if(T)return T;var L=b.getAttribute("aria-label")||"";if(L.trim())return L.trim();var N=b.tagName?b.tagName.toLowerCase():"";if(N==="input"||N==="select"||N==="textarea"){var $=b.getAttribute("id");if($)try{var Y=document.querySelector('label[for="'+CSS.escape($)+'"]');if(Y&&(Y.textContent||"").trim())return (Y.textContent||"").trim().replace(/\s+/g," ")}catch{}var ae=b.closest?b.closest("label"):null;if(ae&&(ae.textContent||"").trim())return (ae.textContent||"").trim().replace(/\s+/g," ")}var Z=(b.textContent||"").trim().replace(/\s+/g," ");if(!Z&&b.querySelector){var oe=b.querySelector('img[alt]:not([alt=""])');if(oe&&(Z=(oe.getAttribute("alt")||"").trim()),!Z){var ce=b.querySelector("svg > title");ce&&(Z=(ce.textContent||"").trim());}}if(Z)return Z;var fe=b.getAttribute("title")||"";return fe.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(b){return b?b.closest(E)!==null:false}function M(b){if(!b)return false;if(b.getAttribute("aria-hidden")==="true"||b.getAttribute("role")==="presentation"||b.getAttribute("role")==="none")return true;let T=b.parentElement,L=0;for(;T&&T!==document.body&&L<6;){if(T.getAttribute("aria-hidden")==="true")return true;T=T.parentElement,L++;}return false}function H(b){let T=b.naturalWidth||b.width||0,L=b.naturalHeight||b.height||0;if(T<=2&&L<=2)return true;let N=b.getBoundingClientRect();if(N.width<=2&&N.height<=2)return true;let $=(b.src||"").toLowerCase();return !!($.includes("pixel")||$.includes("beacon")||$.includes("tracker")||$.includes("analytics")||$.includes("adsrvr")||$.includes("doubleclick")||$.includes("facebook.com/tr"))}function B(b){var T=b.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");T||(T=b.closest("div,nav,main,aside,header,footer"));var L=T?T.querySelector("h1,h2,h3,h4,h5,h6"):null,N=L?(L.textContent||"").trim().slice(0,80):"",$=b.parentElement,Y=$?$.tagName.toLowerCase():"",ae=$&&$.getAttribute("role")||"",Z="";if(T){var oe=T.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");oe&&(Z=(oe.textContent||"").trim().slice(0,120));}var ce="";if(T){var fe=T.querySelector('img[alt]:not([alt=""])');fe&&(ce=(fe.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:N,parentTag:Y,parentRole:ae,cardText:Z,imgAlt:ce}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},G=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(b,T,L){var N=[];if(b)for(var $=b.split(/\s+/),Y=0;Y<$.length;Y++){var ae=$[Y];if(ae){var Z=ae.toLowerCase().replace(G,"").replace(/^icon-/,"");Z&&Z!==ae.toLowerCase()&&N.push(Z);}}if(T&&N.push(T.toLowerCase().trim()),L){var oe=L.trim().toLowerCase();oe.length<30&&/^[a-z_-]+$/.test(oe)&&N.push(oe.replace(/_/g,"-"));}for(var ce=0;ce<N.length;ce++)if(j[N[ce]])return j[N[ce]];for(var fe=0;fe<N.length;fe++)for(var Ee=N[fe].split("-"),Oe=0;Oe<Ee.length;Oe++)if(j[Ee[Oe]])return j[Ee[Oe]];return null}var ee;function C(b){if(!b)return null;var T=b.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(T)return [parseInt(T[1],10),parseInt(T[2],10),parseInt(T[3],10),T[4]?parseFloat(T[4]):1];if(b==="transparent"||b==="none")return [0,0,0,0];try{if(ee===void 0){var L=document.createElement("canvas");L.width=1,L.height=1,ee=L.getContext("2d",{willReadFrequently:!0});}if(!ee)return null;ee.clearRect(0,0,1,1),ee.fillStyle="#000000",ee.fillStyle=b,ee.fillRect(0,0,1,1);var N=ee.getImageData(0,0,1,1).data;return [N[0],N[1],N[2],N[3]/255]}catch{return null}}function v(b,T,L){var N=function($){var Y=$/255;return Y<=.03928?Y/12.92:Math.pow((Y+.055)/1.055,2.4)};return .2126*N(b)+.7152*N(T)+.0722*N(L)}function x(b,T){var L=v(b[0],b[1],b[2]),N=v(T[0],T[1],T[2]),$=Math.max(L,N),Y=Math.min(L,N);return ($+.05)/(Y+.05)}Object.assign(p,{__isUnique:h,__isGeneratedId:m,__cleanClasses:D,__tagWithClass:R,__nthSelector:_,__fullPath:I,uniqueSel:O,isVisible:F,__resolveIdRefs:A,getAccessibleName:k,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:M,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:G,lookupIconLabel:U,__colorCtx:ee,parseCssColor:C,relLuminance:v,contrastRatio:x}),p.__waDomKernelInstalled=true;}var Mg="1.15.0";function GM(p){return {async evaluate(d,...y){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...y)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let y=GM(d),h=[],m=[],D=[],R=[];await bu(y);let _=await dg(y,m,D,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(h.push(..._.map(yg)),p.includeAxe!==false)try{let k=await Promise.resolve().then(()=>k3(Og(),1)),P=await(k.default??k).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let M of P.violations??[])for(let H of M.nodes??[])h.push({id:`axe-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let M of P.incomplete??[])for(let H of M.nodes??[])h.push({id:`axe-incomplete-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{D.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let I=Au(Lo(h).verdicts);try{I=await mg(y,I);}catch{}try{I=await hg(y,I);}catch{}try{I=await fg(y,I);}catch{}I=Za(I,p.level??"AA");let O=Lo(I),F=O.verdicts,A;if(p.judge)try{let k=Za([...Lo(h).undecided,...O.undecided],p.level??"AA"),E=await Fg(y,k,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(A=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(y,F,R);}catch{}return wu(R,await yu(y)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...A?{judged:A}:{},...m.length?{truncated:m}:{},...D.length?{engineWarnings:D}:{},summary:wg(F)}}/*! Bundled license information:
406
406
 
407
407
  axe-core/axe.js:
408
408
  (*! axe v4.11.3
package/dist/dom.js CHANGED
@@ -402,7 +402,7 @@ Omit "fix" for passes.`;function LM(p){let d=p.items.map(({screenshot:y,...h})=>
402
402
  Conformance level: ${p.level}
403
403
 
404
404
  Findings:
405
- ${JSON.stringify(d,null,1)}`}function OM(p,d={}){let y=p.vision&&p.items.some(D=>D.screenshot),h=y?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(y)for(let D of p.items)D.screenshot&&(m.push({type:"text",text:`Crop for ${D.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${D.screenshot}`}}));return {model:h,temperature:0,max_tokens:4096,...h===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),y=false;try{let h=new URL(d).hostname;y=h==="openrouter.ai"||h.endsWith(".openrouter.ai");}catch{}return async(h,m)=>{let D=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(h,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:y}))});if(!D.ok)throw new Zn(`judge model HTTP ${D.status}`);let _=(await D.json()).choices?.[0]?.message?.content;if(typeof _=="string")return _;if(Array.isArray(_))return _.map(I=>typeof I?.text=="string"?I.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(y,h)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:h,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(y)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,y){let h={promoted:[],judged:[]},m=qM(y);if(d.length===0)return h;let D=y.level??"AA",R=y.timeoutMs??bM,_=Date.now()+R,I=Za([...d],D);if(I.length===0)return h;let O=new Map;for(let v of I){let x=`${v.selector}|${Fu(v)}`,b=O.get(x);b?b.members.push(v):O.set(x,{key:x,members:[v],rep:v,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...O.keys()].map(v=>O.get(v).rep.selector),maxHtml:Eg});}catch{}for(let v of O.values())v.ctx=F.elements[v.rep.selector],v.ctx&&!v.ctx.found&&(v.ctx=void 0),v.kind=CM(v.rep,v.ctx);let A=new Map;for(let[v,x]of [...O]){if(!x.ctx)continue;let b=`${x.ctx.elementKey}|${Fu(x.rep)}`,T=A.get(b);if(!T){A.set(b,x);continue}T.members.push(...x.members),O.delete(v);}let k={promoted:[],judged:[]},E=(v,x)=>{for(let b of v.members){if(x.verdict==="violation"){let T=VM(b,v,x);if(!T)continue;k.promoted.push(T);}k.judged.push({id:b.id.replace("axe-incomplete-","axe-"),type:b.type,verdict:x.verdict,reason:x.reason});}},P=[...O.values()].filter(v=>v.kind==="contrast");if(P.length&&p){for(let x of P)x.pixels=y.measured?.get(x.rep.selector);let v=P.filter(x=>!x.pixels).map(x=>x.rep.selector);if(v.length)try{for(let x of await xg(p,v))for(let b of P)b.rep.selector===x.selector&&(b.pixels=x);}catch{}}let M=[];for(let v of O.values()){let x=m?No.get(Sg(y.url,v.rep,v.ctx?.html??v.rep.html??"")):void 0;if(x){E(v,x);continue}let b=HM(v);if(b!=="drop"){if(b){E(v,b);continue}M.push(v);}}if(M.length===0||!m)return k;let H=y.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,G=0,U=BM(y),ee=v=>({id:v.rep.id,type:v.rep.type,wcag:v.rep.wcag,message:v.rep.message,selector:v.rep.selector,html:(v.ctx?.html??v.rep.html??"").slice(0,Eg),context:j.has(v.key)?{...kg(v),cropNote:"no image attached: the crop was too large to send"}:kg(v),...B.has(v.key)?{screenshot:B.get(v.key)}:{}}),C=H?vM:gM;for(let v=0;v<M.length;v+=C){let x=_-Date.now();if(x<=0)break;let b=M.slice(v,v+C);if(H){for(let Z of b){if(G>=yM||Date.now()>_)break;let oe=await zM(p,Z.ctx,U);oe&&(G++,oe.data?B.set(Z.key,oe.data):j.add(Z.key));}if(Date.now()>_)break}let T=new Map(b.map(Z=>[Z.rep.id,Z])),L=new AbortController,N=setTimeout(()=>L.abort(),x),$=null,Y=false,ae=Date.now();try{let Z=await Promise.race([m({url:y.url,level:D,vision:H,items:b.map(ee)},L.signal),new Promise((oe,ce)=>L.signal.addEventListener("abort",()=>ce(new Error("judge deadline"))))]);$=IM(Z),Iu()&&console.error(`ai judge: batch ${b.length} items, ${b.filter(oe=>B.has(oe.key)).length} crops, ${Date.now()-ae}ms, ${$?$.length+" verdicts":"MALFORMED: "+String(Z).slice(0,200)}`);}catch(Z){Iu()&&console.error(`ai judge: batch ${b.length} items failed after ${Date.now()-ae}ms: ${Z.message}`),$=null,Y=Z instanceof Zn;}finally{clearTimeout(N);}if(!$){if(L.signal.aborted||Y)break;continue}for(let Z of $){let oe=T.get(Z.id);if(!oe)continue;T.delete(Z.id);let ce={verdict:Z.verdict,reason:kM(Z.reason),fix:Z.fix};No.size>=AM&&No.clear(),No.set(Sg(y.url,oe.rep,oe.ctx?.html??oe.rep.html??""),ce),E(oe,ce);}}return k}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:y,attrH:h,naturalW:m,naturalH:D}=d.img;if(y>0&&y<=1&&h>0&&h<=1||m>0&&m<=1&&D>0&&D<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let y=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=y?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${y}:1`}:p.pixels.bestRatio<y*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${y}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,y={};return p.rep.reviewReason&&(y.engineNote=p.rep.reviewReason),d&&(y.tag=d.tag,d.nearText&&(y.nearbyText=d.nearText),d.parentInteractive&&(y.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(y.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(y.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(y.fg=Jn(p.pixels.fg),y.threshold=Lu(p.rep,p.pixels.threshold),y.bestRatio=Tg(p.pixels.bestRatio),y.worstRatio=Tg(p.pixels.worstRatio),y.fontSize=d.fontSize,y.fontWeight=d.fontWeight),p.kind==="generic"&&(y.fg=Jn(d.fg),y.bg=Jn(d.bg),y.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),y}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,y){let h=FM(p);if(d.kind==="alt"){let D=TM(y.fix?.value);return D?Mu(d.ctx)?{...h,fix:{attribute:"aria-label",currentValue:"",suggestedValue:D,needsManualReview:false}}:{...h,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:D,needsManualReview:false}}:null}if(d.kind==="contrast"){let D=d.pixels;if(!D)return null;let R=Jn(D.fg),_=Lu(p,D.threshold),I=D.worstBg?Jn(D.worstBg):null,O=D.bestBg?Jn(D.bestBg):null,F=P=>!!P&&!!I&&Sn(P,I)>=_&&(!O||Sn(P,O)>=_),A,k=RM(y.fix?.value),E=I?jM(R,I,_):null;return k&&k!==R.toLowerCase()&&F(k)?A=`color:${k} !important;`:F(E)?A=`color:${E} !important;`:O&&Sn(R,O)>=_&&(A=`background-color:${O} !important;`),{...h,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${D.worstRatio.toFixed(2)}:1 at worst (${D.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${y.reason||"not readable"}), needs ${_}:1`,fix:{attribute:"style",currentValue:R,...A?{suggestedValue:A}:{},needsManualReview:true}}}let m=p.fix;return m?{...h,fix:m}:y.fix?.attribute&&y.fix.value?{...h,fix:{attribute:y.fix.attribute,currentValue:"",suggestedValue:y.fix.value,needsManualReview:true}}:h}function jM(p,d,y){let h=p.match(Rg);if(!h)return null;let m=parseInt(h[1],16),D=[m>>16&255,m>>8&255,m&255],R=O=>"#"+O.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),_=(O,F)=>R(D.map(A=>F?A*(1-O):A+(255-A)*O)),I=null;for(let O of [true,false]){if(Sn(_(1,O),d)<y)continue;let F=0,A=1;for(let E=0;E<24;E++){let P=(F+A)/2;Sn(_(P,O),d)>=y?A=P:F=P;}let k=_(A,O);Sn(k,d)>=y&&(!I||A<I.t)&&(I={t:A,hex:k});}return I?.hex??null}var $M=[1,.6,.35];async function zM(p,d,y){let h=p.screenshot;if(typeof h!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let D=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),_=d.rect.x+d.rect.w/2,I=d.rect.y+d.rect.h/2,O=globalThis.Buffer;if(!O)return null;let F=0;for(let A of y===void 0?[1]:$M){let k=Math.max(2,Math.round(D*A)),E=Math.max(2,Math.round(R*A)),P=A===1?Math.max(0,d.rect.x-8):Math.max(0,_-k/2),M=A===1?Math.max(0,d.rect.y-8):Math.max(0,I-E/2),H=await h.call(p,{clip:{x:P,y:M,width:k,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=O.from(H).toString("base64");if(F=B.length,y===void 0||B.length<=y)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${y} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function h(b){try{return document.querySelectorAll(b).length===1}catch{return false}}function m(b){if(!b||/^_?[Rr]_[a-z0-9]+_/.test(b)||/^:[Rr][0-9a-z]+:/.test(b)||/^«[Rr][0-9a-z]+»/.test(b)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(b)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(b)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(b)||/[0-9a-f]{16,}/i.test(b))return true;for(var T=b.split(/[-_:.]/).filter(Boolean),L=T.some(function(Z){var oe=(Z.match(/[a-z]/gi)||[]).length,ce=(Z.match(/[aeiou]/gi)||[]).length;return oe>=4&&ce>=1&&!/\d/.test(Z)}),N=0;N<T.length;N++){var $=T[N];if(!L&&/^\d{7,}$/.test($)||/^[0-9a-f]{13}$/i.test($)&&/[a-f]/i.test($)&&/\d/.test($))return true;if($.length>=7&&/\d/.test($)&&/[a-z]/i.test($)){var Y=($.match(/[aeiou]/gi)||[]).length,ae=($.match(/[a-z]/gi)||[]).length;if(ae>=4&&Y/ae<.2||($.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function D(b){if(!b.classList||!b.classList.length)return [];for(var T=[],L=0;L<b.classList.length&&T.length<3;L++){var N=b.classList[L];N&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(N)||/^[a-z][a-z0-9_-]{1,40}$/i.test(N)&&T.push(N));}return T}function R(b){var T=b.tagName.toLowerCase(),L=D(b);return L.length?T+"."+L.map(function(N){return CSS.escape(N)}).join("."):T}function _(b){var T=b.tagName.toLowerCase();if(!b.parentElement)return T;var L=Array.from(b.parentElement.children).filter(function(N){return N.tagName===b.tagName});return L.length===1?T:T+":nth-of-type("+(L.indexOf(b)+1)+")"}function I(b){for(var T=[],L=b;L&&L!==document.body&&L!==document.documentElement;)T.unshift(_(L)),L=L.parentElement;return T.join(" > ")}function O(b){if(!b||b===document.body||b===document.documentElement)return "body";var T=b.getAttribute?b.getAttribute("id"):null;if(T&&!m(T)){var L="#"+CSS.escape(T);if(h(L))return L}for(var N=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],$=0;$<N.length;$++){var Y=b.getAttribute(N[$]);if(Y&&Y.length<60){var ae=b.tagName.toLowerCase()+"["+N[$]+'="'+CSS.escape(Y)+'"]';if(h(ae))return ae}}var Z=R(b);if(Z.indexOf(".")!==-1&&h(Z))return Z;for(var oe=[],ce=null,fe=b;fe&&fe!==document.body&&fe!==document.documentElement;){var Ee=fe.getAttribute?fe.getAttribute("id"):null;if(Ee&&!m(Ee)){var Oe="#"+CSS.escape(Ee);if(h(Oe)){ce=Oe;break}}var ke=R(fe);if(ke.indexOf(".")!==-1&&h(ke)){ce=ke;break}if(oe.unshift(fe),fe=fe.parentElement,oe.length>6)break}var _e=oe.map(function(st){var He=R(st);if(He.indexOf(".")!==-1&&st.parentElement){var lt=st.parentElement.querySelectorAll(":scope > "+He);if(lt.length===1)return "> "+He}return "> "+_(st)}).join(" "),he="";if(ce&&_e?he=(ce+" "+_e).slice(0,200):ce&&(he=ce),he&&h(he))return he;var vt=I(b);return vt&&h(vt)?vt:he||vt||R(b)}function F(b){if(!b)return false;let T=getComputedStyle(b);if(T.display==="none"||T.visibility==="hidden")return false;let L=parseFloat(T.opacity);if(!isNaN(L)&&L<.1)return false;if(!isNaN(L)&&L<.5){var N=T.transform||"";if(N&&N!=="none"&&N!=="matrix(1, 0, 0, 1, 0, 0)")return false}let $=b.getBoundingClientRect();if($.width<=1||$.height<=1)return false;var Y=T.clipPath||"";return !(Y!=="none"&&/inset\(\s*(?:50|100)%/.test(Y)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(T.clip||""))}function A(b){if(!b)return "";for(var T=[],L=String(b).trim().split(/\s+/),N=0;N<L.length;N++){var $=document.getElementById(L[N]);if($){var Y=($.textContent||"").trim();Y&&T.push(Y);}}return T.join(" ").replace(/\s+/g," ").trim()}function k(b){var T=A(b.getAttribute("aria-labelledby"));if(T)return T;var L=b.getAttribute("aria-label")||"";if(L.trim())return L.trim();var N=b.tagName?b.tagName.toLowerCase():"";if(N==="input"||N==="select"||N==="textarea"){var $=b.getAttribute("id");if($)try{var Y=document.querySelector('label[for="'+CSS.escape($)+'"]');if(Y&&(Y.textContent||"").trim())return (Y.textContent||"").trim().replace(/\s+/g," ")}catch{}var ae=b.closest?b.closest("label"):null;if(ae&&(ae.textContent||"").trim())return (ae.textContent||"").trim().replace(/\s+/g," ")}var Z=(b.textContent||"").trim().replace(/\s+/g," ");if(!Z&&b.querySelector){var oe=b.querySelector('img[alt]:not([alt=""])');if(oe&&(Z=(oe.getAttribute("alt")||"").trim()),!Z){var ce=b.querySelector("svg > title");ce&&(Z=(ce.textContent||"").trim());}}if(Z)return Z;var fe=b.getAttribute("title")||"";return fe.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(b){return b?b.closest(E)!==null:false}function M(b){if(!b)return false;if(b.getAttribute("aria-hidden")==="true"||b.getAttribute("role")==="presentation"||b.getAttribute("role")==="none")return true;let T=b.parentElement,L=0;for(;T&&T!==document.body&&L<6;){if(T.getAttribute("aria-hidden")==="true")return true;T=T.parentElement,L++;}return false}function H(b){let T=b.naturalWidth||b.width||0,L=b.naturalHeight||b.height||0;if(T<=2&&L<=2)return true;let N=b.getBoundingClientRect();if(N.width<=2&&N.height<=2)return true;let $=(b.src||"").toLowerCase();return !!($.includes("pixel")||$.includes("beacon")||$.includes("tracker")||$.includes("analytics")||$.includes("adsrvr")||$.includes("doubleclick")||$.includes("facebook.com/tr"))}function B(b){var T=b.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");T||(T=b.closest("div,nav,main,aside,header,footer"));var L=T?T.querySelector("h1,h2,h3,h4,h5,h6"):null,N=L?(L.textContent||"").trim().slice(0,80):"",$=b.parentElement,Y=$?$.tagName.toLowerCase():"",ae=$&&$.getAttribute("role")||"",Z="";if(T){var oe=T.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");oe&&(Z=(oe.textContent||"").trim().slice(0,120));}var ce="";if(T){var fe=T.querySelector('img[alt]:not([alt=""])');fe&&(ce=(fe.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:N,parentTag:Y,parentRole:ae,cardText:Z,imgAlt:ce}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},G=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(b,T,L){var N=[];if(b)for(var $=b.split(/\s+/),Y=0;Y<$.length;Y++){var ae=$[Y];if(ae){var Z=ae.toLowerCase().replace(G,"").replace(/^icon-/,"");Z&&Z!==ae.toLowerCase()&&N.push(Z);}}if(T&&N.push(T.toLowerCase().trim()),L){var oe=L.trim().toLowerCase();oe.length<30&&/^[a-z_-]+$/.test(oe)&&N.push(oe.replace(/_/g,"-"));}for(var ce=0;ce<N.length;ce++)if(j[N[ce]])return j[N[ce]];for(var fe=0;fe<N.length;fe++)for(var Ee=N[fe].split("-"),Oe=0;Oe<Ee.length;Oe++)if(j[Ee[Oe]])return j[Ee[Oe]];return null}var ee;function C(b){if(!b)return null;var T=b.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(T)return [parseInt(T[1],10),parseInt(T[2],10),parseInt(T[3],10),T[4]?parseFloat(T[4]):1];if(b==="transparent"||b==="none")return [0,0,0,0];try{if(ee===void 0){var L=document.createElement("canvas");L.width=1,L.height=1,ee=L.getContext("2d",{willReadFrequently:!0});}if(!ee)return null;ee.clearRect(0,0,1,1),ee.fillStyle="#000000",ee.fillStyle=b,ee.fillRect(0,0,1,1);var N=ee.getImageData(0,0,1,1).data;return [N[0],N[1],N[2],N[3]/255]}catch{return null}}function v(b,T,L){var N=function($){var Y=$/255;return Y<=.03928?Y/12.92:Math.pow((Y+.055)/1.055,2.4)};return .2126*N(b)+.7152*N(T)+.0722*N(L)}function x(b,T){var L=v(b[0],b[1],b[2]),N=v(T[0],T[1],T[2]),$=Math.max(L,N),Y=Math.min(L,N);return ($+.05)/(Y+.05)}Object.assign(p,{__isUnique:h,__isGeneratedId:m,__cleanClasses:D,__tagWithClass:R,__nthSelector:_,__fullPath:I,uniqueSel:O,isVisible:F,__resolveIdRefs:A,getAccessibleName:k,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:M,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:G,lookupIconLabel:U,__colorCtx:ee,parseCssColor:C,relLuminance:v,contrastRatio:x}),p.__waDomKernelInstalled=true;}var Mg="1.14.0";function GM(p){return {async evaluate(d,...y){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...y)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let y=GM(d),h=[],m=[],D=[],R=[];await bu(y);let _=await dg(y,m,D,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(h.push(..._.map(yg)),p.includeAxe!==false)try{let k=await Promise.resolve().then(()=>k3(Og(),1)),P=await(k.default??k).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let M of P.violations??[])for(let H of M.nodes??[])h.push({id:`axe-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let M of P.incomplete??[])for(let H of M.nodes??[])h.push({id:`axe-incomplete-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{D.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let I=Au(Lo(h).verdicts);try{I=await mg(y,I);}catch{}try{I=await hg(y,I);}catch{}try{I=await fg(y,I);}catch{}I=Za(I,p.level??"AA");let O=Lo(I),F=O.verdicts,A;if(p.judge)try{let k=Za([...Lo(h).undecided,...O.undecided],p.level??"AA"),E=await Fg(y,k,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(A=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(y,F,R);}catch{}return wu(R,await yu(y)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...A?{judged:A}:{},...m.length?{truncated:m}:{},...D.length?{engineWarnings:D}:{},summary:wg(F)}}/*! Bundled license information:
405
+ ${JSON.stringify(d,null,1)}`}function OM(p,d={}){let y=p.vision&&p.items.some(D=>D.screenshot),h=y?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(y)for(let D of p.items)D.screenshot&&(m.push({type:"text",text:`Crop for ${D.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${D.screenshot}`}}));return {model:h,temperature:0,max_tokens:4096,...h===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),y=false;try{let h=new URL(d).hostname;y=h==="openrouter.ai"||h.endsWith(".openrouter.ai");}catch{}return async(h,m)=>{let D=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(h,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:y}))});if(!D.ok)throw new Zn(`judge model HTTP ${D.status}`);let _=(await D.json()).choices?.[0]?.message?.content;if(typeof _=="string")return _;if(Array.isArray(_))return _.map(I=>typeof I?.text=="string"?I.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(y,h)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:h,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(y)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,y){let h={promoted:[],judged:[]},m=qM(y);if(d.length===0)return h;let D=y.level??"AA",R=y.timeoutMs??bM,_=Date.now()+R,I=Za([...d],D);if(I.length===0)return h;let O=new Map;for(let v of I){let x=`${v.selector}|${Fu(v)}`,b=O.get(x);b?b.members.push(v):O.set(x,{key:x,members:[v],rep:v,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...O.keys()].map(v=>O.get(v).rep.selector),maxHtml:Eg});}catch{}for(let v of O.values())v.ctx=F.elements[v.rep.selector],v.ctx&&!v.ctx.found&&(v.ctx=void 0),v.kind=CM(v.rep,v.ctx);let A=new Map;for(let[v,x]of [...O]){if(!x.ctx)continue;let b=`${x.ctx.elementKey}|${Fu(x.rep)}`,T=A.get(b);if(!T){A.set(b,x);continue}T.members.push(...x.members),O.delete(v);}let k={promoted:[],judged:[]},E=(v,x)=>{for(let b of v.members){if(x.verdict==="violation"){let T=VM(b,v,x);if(!T)continue;k.promoted.push(T);}k.judged.push({id:b.id.replace("axe-incomplete-","axe-"),type:b.type,verdict:x.verdict,reason:x.reason});}},P=[...O.values()].filter(v=>v.kind==="contrast");if(P.length&&p){for(let x of P)x.pixels=y.measured?.get(x.rep.selector);let v=P.filter(x=>!x.pixels).map(x=>x.rep.selector);if(v.length)try{for(let x of await xg(p,v))for(let b of P)b.rep.selector===x.selector&&(b.pixels=x);}catch{}}let M=[];for(let v of O.values()){let x=m?No.get(Sg(y.url,v.rep,v.ctx?.html??v.rep.html??"")):void 0;if(x){E(v,x);continue}let b=HM(v);if(b!=="drop"){if(b){E(v,b);continue}M.push(v);}}if(M.length===0||!m)return k;let H=y.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,G=0,U=BM(y),ee=v=>({id:v.rep.id,type:v.rep.type,wcag:v.rep.wcag,message:v.rep.message,selector:v.rep.selector,html:(v.ctx?.html??v.rep.html??"").slice(0,Eg),context:j.has(v.key)?{...kg(v),cropNote:"no image attached: the crop was too large to send"}:kg(v),...B.has(v.key)?{screenshot:B.get(v.key)}:{}}),C=H?vM:gM;for(let v=0;v<M.length;v+=C){let x=_-Date.now();if(x<=0)break;let b=M.slice(v,v+C);if(H){for(let Z of b){if(G>=yM||Date.now()>_)break;let oe=await zM(p,Z.ctx,U);oe&&(G++,oe.data?B.set(Z.key,oe.data):j.add(Z.key));}if(Date.now()>_)break}let T=new Map(b.map(Z=>[Z.rep.id,Z])),L=new AbortController,N=setTimeout(()=>L.abort(),x),$=null,Y=false,ae=Date.now();try{let Z=await Promise.race([m({url:y.url,level:D,vision:H,items:b.map(ee)},L.signal),new Promise((oe,ce)=>L.signal.addEventListener("abort",()=>ce(new Error("judge deadline"))))]);$=IM(Z),Iu()&&console.error(`ai judge: batch ${b.length} items, ${b.filter(oe=>B.has(oe.key)).length} crops, ${Date.now()-ae}ms, ${$?$.length+" verdicts":"MALFORMED: "+String(Z).slice(0,200)}`);}catch(Z){Iu()&&console.error(`ai judge: batch ${b.length} items failed after ${Date.now()-ae}ms: ${Z.message}`),$=null,Y=Z instanceof Zn;}finally{clearTimeout(N);}if(!$){if(L.signal.aborted||Y)break;continue}for(let Z of $){let oe=T.get(Z.id);if(!oe)continue;T.delete(Z.id);let ce={verdict:Z.verdict,reason:kM(Z.reason),fix:Z.fix};No.size>=AM&&No.clear(),No.set(Sg(y.url,oe.rep,oe.ctx?.html??oe.rep.html??""),ce),E(oe,ce);}}return k}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:y,attrH:h,naturalW:m,naturalH:D}=d.img;if(y>0&&y<=1&&h>0&&h<=1||m>0&&m<=1&&D>0&&D<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let y=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=y?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${y}:1`}:p.pixels.bestRatio<y*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${y}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,y={};return p.rep.reviewReason&&(y.engineNote=p.rep.reviewReason),d&&(y.tag=d.tag,d.nearText&&(y.nearbyText=d.nearText),d.parentInteractive&&(y.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(y.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(y.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(y.fg=Jn(p.pixels.fg),y.threshold=Lu(p.rep,p.pixels.threshold),y.bestRatio=Tg(p.pixels.bestRatio),y.worstRatio=Tg(p.pixels.worstRatio),y.fontSize=d.fontSize,y.fontWeight=d.fontWeight),p.kind==="generic"&&(y.fg=Jn(d.fg),y.bg=Jn(d.bg),y.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),y}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,y){let h=FM(p);if(d.kind==="alt"){let D=TM(y.fix?.value);return D?Mu(d.ctx)?{...h,fix:{attribute:"aria-label",currentValue:"",suggestedValue:D,needsManualReview:false}}:{...h,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:D,needsManualReview:false}}:null}if(d.kind==="contrast"){let D=d.pixels;if(!D)return null;let R=Jn(D.fg),_=Lu(p,D.threshold),I=D.worstBg?Jn(D.worstBg):null,O=D.bestBg?Jn(D.bestBg):null,F=P=>!!P&&!!I&&Sn(P,I)>=_&&(!O||Sn(P,O)>=_),A,k=RM(y.fix?.value),E=I?jM(R,I,_):null;return k&&k!==R.toLowerCase()&&F(k)?A=`color:${k} !important;`:F(E)?A=`color:${E} !important;`:O&&Sn(R,O)>=_&&(A=`background-color:${O} !important;`),{...h,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${D.worstRatio.toFixed(2)}:1 at worst (${D.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${y.reason||"not readable"}), needs ${_}:1`,fix:{attribute:"style",currentValue:R,...A?{suggestedValue:A}:{},needsManualReview:true}}}let m=p.fix;return m?{...h,fix:m}:y.fix?.attribute&&y.fix.value?{...h,fix:{attribute:y.fix.attribute,currentValue:"",suggestedValue:y.fix.value,needsManualReview:true}}:h}function jM(p,d,y){let h=p.match(Rg);if(!h)return null;let m=parseInt(h[1],16),D=[m>>16&255,m>>8&255,m&255],R=O=>"#"+O.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),_=(O,F)=>R(D.map(A=>F?A*(1-O):A+(255-A)*O)),I=null;for(let O of [true,false]){if(Sn(_(1,O),d)<y)continue;let F=0,A=1;for(let E=0;E<24;E++){let P=(F+A)/2;Sn(_(P,O),d)>=y?A=P:F=P;}let k=_(A,O);Sn(k,d)>=y&&(!I||A<I.t)&&(I={t:A,hex:k});}return I?.hex??null}var $M=[1,.6,.35];async function zM(p,d,y){let h=p.screenshot;if(typeof h!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let D=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),_=d.rect.x+d.rect.w/2,I=d.rect.y+d.rect.h/2,O=globalThis.Buffer;if(!O)return null;let F=0;for(let A of y===void 0?[1]:$M){let k=Math.max(2,Math.round(D*A)),E=Math.max(2,Math.round(R*A)),P=A===1?Math.max(0,d.rect.x-8):Math.max(0,_-k/2),M=A===1?Math.max(0,d.rect.y-8):Math.max(0,I-E/2),H=await h.call(p,{clip:{x:P,y:M,width:k,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=O.from(H).toString("base64");if(F=B.length,y===void 0||B.length<=y)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${y} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function h(b){try{return document.querySelectorAll(b).length===1}catch{return false}}function m(b){if(!b||/^_?[Rr]_[a-z0-9]+_/.test(b)||/^:[Rr][0-9a-z]+:/.test(b)||/^«[Rr][0-9a-z]+»/.test(b)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(b)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(b)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(b)||/[0-9a-f]{16,}/i.test(b))return true;for(var T=b.split(/[-_:.]/).filter(Boolean),L=T.some(function(Z){var oe=(Z.match(/[a-z]/gi)||[]).length,ce=(Z.match(/[aeiou]/gi)||[]).length;return oe>=4&&ce>=1&&!/\d/.test(Z)}),N=0;N<T.length;N++){var $=T[N];if(!L&&/^\d{7,}$/.test($)||/^[0-9a-f]{13}$/i.test($)&&/[a-f]/i.test($)&&/\d/.test($))return true;if($.length>=7&&/\d/.test($)&&/[a-z]/i.test($)){var Y=($.match(/[aeiou]/gi)||[]).length,ae=($.match(/[a-z]/gi)||[]).length;if(ae>=4&&Y/ae<.2||($.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function D(b){if(!b.classList||!b.classList.length)return [];for(var T=[],L=0;L<b.classList.length&&T.length<3;L++){var N=b.classList[L];N&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(N)||/^[a-z][a-z0-9_-]{1,40}$/i.test(N)&&T.push(N));}return T}function R(b){var T=b.tagName.toLowerCase(),L=D(b);return L.length?T+"."+L.map(function(N){return CSS.escape(N)}).join("."):T}function _(b){var T=b.tagName.toLowerCase();if(!b.parentElement)return T;var L=Array.from(b.parentElement.children).filter(function(N){return N.tagName===b.tagName});return L.length===1?T:T+":nth-of-type("+(L.indexOf(b)+1)+")"}function I(b){for(var T=[],L=b;L&&L!==document.body&&L!==document.documentElement;)T.unshift(_(L)),L=L.parentElement;return T.join(" > ")}function O(b){if(!b||b===document.body||b===document.documentElement)return "body";var T=b.getAttribute?b.getAttribute("id"):null;if(T&&!m(T)){var L="#"+CSS.escape(T);if(h(L))return L}for(var N=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],$=0;$<N.length;$++){var Y=b.getAttribute(N[$]);if(Y&&Y.length<60){var ae=b.tagName.toLowerCase()+"["+N[$]+'="'+CSS.escape(Y)+'"]';if(h(ae))return ae}}var Z=R(b);if(Z.indexOf(".")!==-1&&h(Z))return Z;for(var oe=[],ce=null,fe=b;fe&&fe!==document.body&&fe!==document.documentElement;){var Ee=fe.getAttribute?fe.getAttribute("id"):null;if(Ee&&!m(Ee)){var Oe="#"+CSS.escape(Ee);if(h(Oe)){ce=Oe;break}}var ke=R(fe);if(ke.indexOf(".")!==-1&&h(ke)){ce=ke;break}if(oe.unshift(fe),fe=fe.parentElement,oe.length>6)break}var _e=oe.map(function(st){var He=R(st);if(He.indexOf(".")!==-1&&st.parentElement){var lt=st.parentElement.querySelectorAll(":scope > "+He);if(lt.length===1)return "> "+He}return "> "+_(st)}).join(" "),he="";if(ce&&_e?he=(ce+" "+_e).slice(0,200):ce&&(he=ce),he&&h(he))return he;var vt=I(b);return vt&&h(vt)?vt:he||vt||R(b)}function F(b){if(!b)return false;let T=getComputedStyle(b);if(T.display==="none"||T.visibility==="hidden")return false;let L=parseFloat(T.opacity);if(!isNaN(L)&&L<.1)return false;if(!isNaN(L)&&L<.5){var N=T.transform||"";if(N&&N!=="none"&&N!=="matrix(1, 0, 0, 1, 0, 0)")return false}let $=b.getBoundingClientRect();if($.width<=1||$.height<=1)return false;var Y=T.clipPath||"";return !(Y!=="none"&&/inset\(\s*(?:50|100)%/.test(Y)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(T.clip||""))}function A(b){if(!b)return "";for(var T=[],L=String(b).trim().split(/\s+/),N=0;N<L.length;N++){var $=document.getElementById(L[N]);if($){var Y=($.textContent||"").trim();Y&&T.push(Y);}}return T.join(" ").replace(/\s+/g," ").trim()}function k(b){var T=A(b.getAttribute("aria-labelledby"));if(T)return T;var L=b.getAttribute("aria-label")||"";if(L.trim())return L.trim();var N=b.tagName?b.tagName.toLowerCase():"";if(N==="input"||N==="select"||N==="textarea"){var $=b.getAttribute("id");if($)try{var Y=document.querySelector('label[for="'+CSS.escape($)+'"]');if(Y&&(Y.textContent||"").trim())return (Y.textContent||"").trim().replace(/\s+/g," ")}catch{}var ae=b.closest?b.closest("label"):null;if(ae&&(ae.textContent||"").trim())return (ae.textContent||"").trim().replace(/\s+/g," ")}var Z=(b.textContent||"").trim().replace(/\s+/g," ");if(!Z&&b.querySelector){var oe=b.querySelector('img[alt]:not([alt=""])');if(oe&&(Z=(oe.getAttribute("alt")||"").trim()),!Z){var ce=b.querySelector("svg > title");ce&&(Z=(ce.textContent||"").trim());}}if(Z)return Z;var fe=b.getAttribute("title")||"";return fe.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(b){return b?b.closest(E)!==null:false}function M(b){if(!b)return false;if(b.getAttribute("aria-hidden")==="true"||b.getAttribute("role")==="presentation"||b.getAttribute("role")==="none")return true;let T=b.parentElement,L=0;for(;T&&T!==document.body&&L<6;){if(T.getAttribute("aria-hidden")==="true")return true;T=T.parentElement,L++;}return false}function H(b){let T=b.naturalWidth||b.width||0,L=b.naturalHeight||b.height||0;if(T<=2&&L<=2)return true;let N=b.getBoundingClientRect();if(N.width<=2&&N.height<=2)return true;let $=(b.src||"").toLowerCase();return !!($.includes("pixel")||$.includes("beacon")||$.includes("tracker")||$.includes("analytics")||$.includes("adsrvr")||$.includes("doubleclick")||$.includes("facebook.com/tr"))}function B(b){var T=b.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");T||(T=b.closest("div,nav,main,aside,header,footer"));var L=T?T.querySelector("h1,h2,h3,h4,h5,h6"):null,N=L?(L.textContent||"").trim().slice(0,80):"",$=b.parentElement,Y=$?$.tagName.toLowerCase():"",ae=$&&$.getAttribute("role")||"",Z="";if(T){var oe=T.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");oe&&(Z=(oe.textContent||"").trim().slice(0,120));}var ce="";if(T){var fe=T.querySelector('img[alt]:not([alt=""])');fe&&(ce=(fe.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:N,parentTag:Y,parentRole:ae,cardText:Z,imgAlt:ce}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},G=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(b,T,L){var N=[];if(b)for(var $=b.split(/\s+/),Y=0;Y<$.length;Y++){var ae=$[Y];if(ae){var Z=ae.toLowerCase().replace(G,"").replace(/^icon-/,"");Z&&Z!==ae.toLowerCase()&&N.push(Z);}}if(T&&N.push(T.toLowerCase().trim()),L){var oe=L.trim().toLowerCase();oe.length<30&&/^[a-z_-]+$/.test(oe)&&N.push(oe.replace(/_/g,"-"));}for(var ce=0;ce<N.length;ce++)if(j[N[ce]])return j[N[ce]];for(var fe=0;fe<N.length;fe++)for(var Ee=N[fe].split("-"),Oe=0;Oe<Ee.length;Oe++)if(j[Ee[Oe]])return j[Ee[Oe]];return null}var ee;function C(b){if(!b)return null;var T=b.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(T)return [parseInt(T[1],10),parseInt(T[2],10),parseInt(T[3],10),T[4]?parseFloat(T[4]):1];if(b==="transparent"||b==="none")return [0,0,0,0];try{if(ee===void 0){var L=document.createElement("canvas");L.width=1,L.height=1,ee=L.getContext("2d",{willReadFrequently:!0});}if(!ee)return null;ee.clearRect(0,0,1,1),ee.fillStyle="#000000",ee.fillStyle=b,ee.fillRect(0,0,1,1);var N=ee.getImageData(0,0,1,1).data;return [N[0],N[1],N[2],N[3]/255]}catch{return null}}function v(b,T,L){var N=function($){var Y=$/255;return Y<=.03928?Y/12.92:Math.pow((Y+.055)/1.055,2.4)};return .2126*N(b)+.7152*N(T)+.0722*N(L)}function x(b,T){var L=v(b[0],b[1],b[2]),N=v(T[0],T[1],T[2]),$=Math.max(L,N),Y=Math.min(L,N);return ($+.05)/(Y+.05)}Object.assign(p,{__isUnique:h,__isGeneratedId:m,__cleanClasses:D,__tagWithClass:R,__nthSelector:_,__fullPath:I,uniqueSel:O,isVisible:F,__resolveIdRefs:A,getAccessibleName:k,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:M,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:G,lookupIconLabel:U,__colorCtx:ee,parseCssColor:C,relLuminance:v,contrastRatio:x}),p.__waDomKernelInstalled=true;}var Mg="1.15.0";function GM(p){return {async evaluate(d,...y){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...y)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let y=GM(d),h=[],m=[],D=[],R=[];await bu(y);let _=await dg(y,m,D,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(h.push(..._.map(yg)),p.includeAxe!==false)try{let k=await Promise.resolve().then(()=>k3(Og(),1)),P=await(k.default??k).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let M of P.violations??[])for(let H of M.nodes??[])h.push({id:`axe-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let M of P.incomplete??[])for(let H of M.nodes??[])h.push({id:`axe-incomplete-${M.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:M.id,wcag:Su(M.tags),level:ku(M.tags),impact:Cu(M.impact),message:M.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{D.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let I=Au(Lo(h).verdicts);try{I=await mg(y,I);}catch{}try{I=await hg(y,I);}catch{}try{I=await fg(y,I);}catch{}I=Za(I,p.level??"AA");let O=Lo(I),F=O.verdicts,A;if(p.judge)try{let k=Za([...Lo(h).undecided,...O.undecided],p.level??"AA"),E=await Fg(y,k,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(A=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(y,F,R);}catch{}return wu(R,await yu(y)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...A?{judged:A}:{},...m.length?{truncated:m}:{},...D.length?{engineWarnings:D}:{},summary:wg(F)}}/*! Bundled license information:
406
406
 
407
407
  axe-core/axe.js:
408
408
  (*! axe v4.11.3