[Lighthouse] Roll Lighthouse 12.3.0 Bug: 40543651 Change-Id: I8a72d552e8beb47ee7004b62de9b4f8c59a4082a Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6090913 Auto-Submit: Adam Raine <asraine@chromium.org> Reviewed-by: Connor Clark <cjamcl@chromium.org> Commit-Queue: Connor Clark <cjamcl@chromium.org>
diff --git a/front_end/third_party/lighthouse/README.chromium b/front_end/third_party/lighthouse/README.chromium index 6c4bf5a..1a4cdb9 100644 --- a/front_end/third_party/lighthouse/README.chromium +++ b/front_end/third_party/lighthouse/README.chromium
@@ -1,7 +1,7 @@ Name: Lighthouse Short Name: lighthouse -Version: 12.2.2 -Revision: b64b3534542c9dcaabb33d40b84ed7c93eefbd7d +Version: 12.3.0 +Revision: 240102e547f7d17bb607a3cb314b57ac0ca0225d URL: https://github.com/GoogleChrome/lighthouse License: Apache License 2.0 License File: LICENSE
diff --git a/front_end/third_party/lighthouse/lighthouse-dt-bundle.js b/front_end/third_party/lighthouse/lighthouse-dt-bundle.js index bb12170..7007d1d 100644 --- a/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +++ b/front_end/third_party/lighthouse/lighthouse-dt-bundle.js
@@ -1,5 +1,5 @@ /** - * Lighthouse v12.2.2 (Nov 14 2024) + * Lighthouse v12.3.0 (Dec 12 2024) * * Automated auditing, performance metrics, and best practices for the web. * @@ -10,165 +10,165 @@ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -"use strict";(()=>{var Mq=Object.create;var Gu=Object.defineProperty;var Lq=Object.getOwnPropertyDescriptor;var Pq=Object.getOwnPropertyNames;var Oq=Object.getPrototypeOf,Bq=Object.prototype.hasOwnProperty;var s=(e,t)=>Gu(e,"name",{value:t,configurable:!0});var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var pe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Gu(e,r,{get:t[r],enumerable:!0})},AF=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Pq(t))!Bq.call(e,i)&&i!==r&&Gu(e,i,{get:()=>t[i],enumerable:!(n=Lq(t,i))||n.enumerable});return e};var yr=(e,t,r)=>(r=e!=null?Mq(Oq(e)):{},AF(t||!e||!e.__esModule?Gu(r,"default",{value:e,enumerable:!0}):r,e)),Uq=e=>AF(Gu({},"__esModule",{value:!0}),e);function NF(){throw new Error("setTimeout has not been defined")}function MF(){throw new Error("clearTimeout has not been defined")}function LF(e){if(Ni===setTimeout)return setTimeout(e,0);if((Ni===NF||!Ni)&&setTimeout)return Ni=setTimeout,setTimeout(e,0);try{return Ni(e,0)}catch{try{return Ni.call(null,e,0)}catch{return Ni.call(this,e,0)}}}function jq(e){if(Mi===clearTimeout)return clearTimeout(e);if((Mi===MF||!Mi)&&clearTimeout)return Mi=clearTimeout,clearTimeout(e);try{return Mi(e)}catch{try{return Mi.call(null,e)}catch{return Mi.call(this,e)}}}function qq(){!Go||!Ma||(Go=!1,Ma.length?Qn=Ma.concat(Qn):xp=-1,Qn.length&&PF())}function PF(){if(!Go){var e=LF(qq);Go=!0;for(var t=Qn.length;t;){for(Ma=Qn,Qn=[];++xp<t;)Ma&&Ma[xp].run();xp=-1,t=Qn.length}Ma=null,Go=!1,jq(e)}}function ir(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Qn.push(new OF(e,t)),Qn.length===1&&!Go&&LF(PF)}function OF(e,t){this.fun=e,this.array=t}function La(){} -function iz(e){throw new Error("process.binding is not supported")}function az(){return"/"}function oz(e){throw new Error("process.chdir is not supported")}function sz(){return 0}function lz(e){var t=uz.call(Wo)*.001,r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r=r-e[0],n=n-e[1],n<0&&(r--,n+=1e9)),[r,n]}function dz(){var e=new Date,t=e-cz;return t/1e3}var Ni,Mi,Qn,Go,Ma,xp,zq,Hq,Wq,Gq,Vq,$q,Yq,Kq,Jq,Zq,Xq,Qq,ez,tz,rz,nz,Wo,uz,cz,ar,Li=g(()=>{d();s(NF,"defaultSetTimout");s(MF,"defaultClearTimeout");Ni=NF,Mi=MF;typeof globalThis.setTimeout=="function"&&(Ni=setTimeout);typeof globalThis.clearTimeout=="function"&&(Mi=clearTimeout);s(LF,"runTimeout");s(jq,"runClearTimeout");Qn=[],Go=!1,xp=-1;s(qq,"cleanUpNextTick");s(PF,"drainQueue");s(ir,"nextTick");s(OF,"Item");OF.prototype.run=function(){this.fun.apply(null,this.array)};zq="browser",Hq="browser",Wq=!0,Gq={},Vq=[],$q="",Yq={},Kq={},Jq={};s(La,"noop");Zq=La,Xq=La,Qq=La,ez=La,tz=La,rz=La,nz=La;s(iz,"binding");s(az,"cwd");s(oz,"chdir");s( -sz,"umask");Wo=globalThis.performance||{},uz=Wo.now||Wo.mozNow||Wo.msNow||Wo.oNow||Wo.webkitNow||function(){return new Date().getTime()};s(lz,"hrtime");cz=new Date;s(dz,"uptime");ar={nextTick:ir,title:zq,browser:Wq,env:Gq,argv:Vq,version:$q,versions:Yq,on:Zq,addListener:Xq,once:Qq,off:ez,removeListener:tz,removeAllListeners:rz,emit:nz,binding:iz,cwd:az,chdir:oz,umask:sz,hrtime:lz,platform:Hq,release:Kq,config:Jq,uptime:dz}});var d=g(()=>{"use strict";Li();globalThis.process=ar});function qF(){Hh=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t<r;++t)Sn[t]=e[t],zr[e.charCodeAt(t)]=t;zr[45]=62,zr[95]=63}function mz(e){Hh||qF();var t,r,n,i,a,o,u=e.length;if(u%4>0)throw new Error("Invalid string. Length must be a multiple of 4");a=e[u-2]==="="?2:e[u-1]==="="?1:0,o=new pz(u*3/4-a),n=a>0?u-4:u;var l=0;for(t=0,r=0;t<n;t+=4,r+=3)i=zr[e.charCodeAt(t)]<<18|zr[e.charCodeAt(t+1)]<<12|zr[e.charCodeAt(t+2)]<<6|zr[e.charCodeAt(t+3)],o[l++]=i>>16&255,o[l++]=i>>8&255,o[l++]=i&255;return a===2?(i=zr[e.charCodeAt(t)]<<2|zr[e.charCodeAt(t+1)]>>4,o[l++]=i&255):a===1&&(i=zr[e.charCodeAt(t)]<<10|zr[e.charCodeAt(t+1)]<<4|zr[e.charCodeAt(t+2)]>>2,o[l++]=i>>8&255,o[l++]=i&255),o}function fz(e){return Sn[e>>18&63]+Sn[e>>12&63]+Sn[e>>6&63]+Sn[e&63]}function hz(e,t,r){for(var n,i=[],a=t;a<r;a+=3)n=(e[a]<<16)+(e[a+1]<<8)+e[a+2],i.push(fz(n));return i.join("")}function BF(e){Hh||qF();for(var t,r=e.length,n=r%3,i="",a=[],o=16383,u=0,l=r-n;u<l;u+= -o)a.push(hz(e,u,u+o>l?l:u+o));return n===1?(t=e[r-1],i+=Sn[t>>2],i+=Sn[t<<4&63],i+="=="):n===2&&(t=(e[r-2]<<8)+e[r-1],i+=Sn[t>>10],i+=Sn[t>>4&63],i+=Sn[t<<2&63],i+="="),a.push(i),a.join("")}function Fp(e,t,r,n,i){var a,o,u=i*8-n-1,l=(1<<u)-1,c=l>>1,p=-7,m=r?i-1:0,f=r?-1:1,h=e[t+m];for(m+=f,a=h&(1<<-p)-1,h>>=-p,p+=u;p>0;a=a*256+e[t+m],m+=f,p-=8);for(o=a&(1<<-p)-1,a>>=-p,p+=n;p>0;o=o*256+e[t+m],m+=f,p-=8);if(a===0)a=1-c;else{if(a===l)return o?NaN:(h?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-c}return(h?-1:1)*o*Math.pow(2,a-n)}function zF(e,t,r,n,i,a){var o,u,l,c=a*8-i-1,p=(1<<c)-1,m=p>>1,f=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,y=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=p):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+m>=1?t+=f/l:t+=f*Math.pow(2,1-m),t*l>=2&&(o++,l/=2),o+m>=p?(u=0,o=p):o+m>=1?(u=(t*l-1)*Math.pow(2,i),o=o+m):(u=t*Math.pow(2,m-1)*Math.pow(2,i),o=0));i>=8;e[r+h]=u&255,h+=y,u/=256,i-=8);for(o=o<<i|u,c+= -i;c>0;e[r+h]=o&255,h+=y,o/=256,c-=8);e[r+h-y]|=b*128}function Sp(){return q.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function ei(e,t){if(Sp()<t)throw new RangeError("Invalid typed array length");return q.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t),e.__proto__=q.prototype):(e===null&&(e=new q(t)),e.length=t),e}function q(e,t,r){if(!q.TYPED_ARRAY_SUPPORT&&!(this instanceof q))return new q(e,t,r);if(typeof e=="number"){if(typeof t=="string")throw new Error("If encoding is specified then the first argument must be a string");return Wh(this,e)}return WF(this,e,t,r)}function WF(e,t,r,n){if(typeof t=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer?wz(e,t,r,n):typeof t=="string"?bz(e,t,r):Dz(e,t)}function GF(e){if(typeof e!="number")throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function vz(e,t,r,n){return GF(t),t<=0?ei(e,t):r!==void 0?typeof n== -"string"?ei(e,t).fill(r,n):ei(e,t).fill(r):ei(e,t)}function Wh(e,t){if(GF(t),e=ei(e,t<0?0:Gh(t)|0),!q.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)e[r]=0;return e}function bz(e,t,r){if((typeof r!="string"||r==="")&&(r="utf8"),!q.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=VF(t,r)|0;e=ei(e,n);var i=e.write(t,r);return i!==n&&(e=e.slice(0,i)),e}function zh(e,t){var r=t.length<0?0:Gh(t.length)|0;e=ei(e,r);for(var n=0;n<r;n+=1)e[n]=t[n]&255;return e}function wz(e,t,r,n){if(t.byteLength,r<0||t.byteLength<r)throw new RangeError("'offset' is out of bounds");if(t.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");return r===void 0&&n===void 0?t=new Uint8Array(t):n===void 0?t=new Uint8Array(t,r):t=new Uint8Array(t,r,n),q.TYPED_ARRAY_SUPPORT?(e=t,e.__proto__=q.prototype):e=zh(e,t),e}function Dz(e,t){if(Cn(t)){var r=Gh(t.length)|0;return e=ei(e,r),e.length===0||t.copy(e,0,0,r),e}if(t){if(typeof ArrayBuffer<"u"&&t.buffer instanceof ArrayBuffer|| -"length"in t)return typeof t.length!="number"||jz(t.length)?ei(e,0):zh(e,t);if(t.type==="Buffer"&&HF(t.data))return zh(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Gh(e){if(e>=Sp())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Sp().toString(16)+" bytes");return e|0}function Cn(e){return!!(e!=null&&e._isBuffer)}function VF(e,t){if(Cn(e))return e.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var r=e.length;if(r===0)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Cp(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return QF(e).length;default:if(n)return Cp(e).length;t=(""+t).toLowerCase(),n=!0}}function Ez(e,t,r){var n=!1; -if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Az(this,t,r);case"utf8":case"utf-8":return KF(this,t,r);case"ascii":return Rz(this,t,r);case"latin1":case"binary":return Iz(this,t,r);case"base64":return kz(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Nz(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Pa(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function $F(e,t,r,n,i){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=q.from(t,n)),Cn(t))return t.length===0?-1:UF(e,t,r,n,i);if(typeof t=="number")return t=t&255,q.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"? -i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):UF(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function UF(e,t,r,n,i){var a=1,o=e.length,u=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,u/=2,r/=2}function l(h,y){return a===1?h[y]:h.readUInt16BE(y*a)}s(l,"read");var c;if(i){var p=-1;for(c=r;c<o;c++)if(l(e,c)===l(t,p===-1?0:c-p)){if(p===-1&&(p=c),c-p+1===u)return p*a}else p!==-1&&(c-=c-p),p=-1}else for(r+u>o&&(r=o-u),c=r;c>=0;c--){for(var m=!0,f=0;f<u;f++)if(l(e,c+f)!==l(t,f)){m=!1;break}if(m)return c}return-1}function Tz(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var a=t.length;if(a%2!==0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o<n;++o){var u=parseInt(t.substr(o*2,2),16);if(isNaN(u))return o;e[r+o]=u}return o}function xz(e,t,r,n){return Rp(Cp(t,e.length-r),e, -r,n)}function YF(e,t,r,n){return Rp(Bz(t),e,r,n)}function Sz(e,t,r,n){return YF(e,t,r,n)}function Cz(e,t,r,n){return Rp(QF(t),e,r,n)}function Fz(e,t,r,n){return Rp(Uz(t,e.length-r),e,r,n)}function kz(e,t,r){return t===0&&r===e.length?BF(e):BF(e.slice(t,r))}function KF(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var a=e[i],o=null,u=a>239?4:a>223?3:a>191?2:1;if(i+u<=r){var l,c,p,m;switch(u){case 1:a<128&&(o=a);break;case 2:l=e[i+1],(l&192)===128&&(m=(a&31)<<6|l&63,m>127&&(o=m));break;case 3:l=e[i+1],c=e[i+2],(l&192)===128&&(c&192)===128&&(m=(a&15)<<12|(l&63)<<6|c&63,m>2047&&(m<55296||m>57343)&&(o=m));break;case 4:l=e[i+1],c=e[i+2],p=e[i+3],(l&192)===128&&(c&192)===128&&(p&192)===128&&(m=(a&15)<<18|(l&63)<<12|(c&63)<<6|p&63,m>65535&&m<1114112&&(o=m))}}o===null?(o=65533,u=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=u}return _z(n)}function _z(e){var t=e.length;if(t<=jF)return String.fromCharCode.apply(String,e);for(var r="",n=0;n<t;)r+=String.fromCharCode. -apply(String,e.slice(n,n+=jF));return r}function Rz(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]&127);return n}function Iz(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function Az(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",a=t;a<r;++a)i+=Oz(e[a]);return i}function Nz(e,t,r){for(var n=e.slice(t,r),i="",a=0;a<n.length;a+=2)i+=String.fromCharCode(n[a]+n[a+1]*256);return i}function Vt(e,t,r){if(e%1!==0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function Fr(e,t,r,n,i,a){if(!Cn(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<a)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function kp(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i<a;++i)e[r+i]=(t&255<<8*(n?i:1-i))>>>(n?i:1-i)* -8}function _p(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i<a;++i)e[r+i]=t>>>(n?i:3-i)*8&255}function JF(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function ZF(e,t,r,n,i){return i||JF(e,t,r,4),zF(e,t,r,n,23,4),r+4}function XF(e,t,r,n,i){return i||JF(e,t,r,8),zF(e,t,r,n,52,8),r+8}function Lz(e){if(e=Pz(e).replace(Mz,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function Pz(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Oz(e){return e<16?"0"+e.toString(16):e.toString(16)}function Cp(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],o=0;o<n;++o){if(r=e.charCodeAt(o),r>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)< -0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Bz(e){for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r)&255);return t}function Uz(e,t){for(var r,n,i,a=[],o=0;o<e.length&&!((t-=2)<0);++o)r=e.charCodeAt(o),n=r>>8,i=r%256,a.push(i),a.push(n);return a}function QF(e){return mz(Lz(e))}function Rp(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function jz(e){return e!==e}function qz(e){return e!=null&&(!!e._isBuffer||ek(e)||zz(e))}function ek(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function zz(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&ek(e.slice(0,0))}var Sn,zr,pz,Hh,gz,HF,yz,Tfe,jF,Mz,Vo=g(()=>{d();Sn=[],zr=[],pz=typeof Uint8Array< -"u"?Uint8Array:Array,Hh=!1;s(qF,"init");s(mz,"toByteArray");s(fz,"tripletToBase64");s(hz,"encodeChunk");s(BF,"fromByteArray");s(Fp,"read");s(zF,"write");gz={}.toString,HF=Array.isArray||function(e){return gz.call(e)=="[object Array]"};yz=50;q.TYPED_ARRAY_SUPPORT=globalThis.TYPED_ARRAY_SUPPORT!==void 0?globalThis.TYPED_ARRAY_SUPPORT:!0;Tfe=Sp();s(Sp,"kMaxLength");s(ei,"createBuffer");s(q,"Buffer");q.poolSize=8192;q._augment=function(e){return e.__proto__=q.prototype,e};s(WF,"from");q.from=function(e,t,r){return WF(null,e,t,r)};q.TYPED_ARRAY_SUPPORT&&(q.prototype.__proto__=Uint8Array.prototype,q.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&q[Symbol.species]);s(GF,"assertSize");s(vz,"alloc");q.alloc=function(e,t,r){return vz(null,e,t,r)};s(Wh,"allocUnsafe");q.allocUnsafe=function(e){return Wh(null,e)};q.allocUnsafeSlow=function(e){return Wh(null,e)};s(bz,"fromString");s(zh,"fromArrayLike");s(wz,"fromArrayBuffer");s(Dz,"fromObject");s(Gh,"checked");q.isBuffer=qz;s(Cn,"internalIs\ -Buffer");q.compare=s(function(t,r){if(!Cn(t)||!Cn(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var n=t.length,i=r.length,a=0,o=Math.min(n,i);a<o;++a)if(t[a]!==r[a]){n=t[a],i=r[a];break}return n<i?-1:i<n?1:0},"compare");q.isEncoding=s(function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},"isEncoding");q.concat=s(function(t,r){if(!HF(t))throw new TypeError('"list" argument must be an Array of Buffers');if(t.length===0)return q.alloc(0);var n;if(r===void 0)for(r=0,n=0;n<t.length;++n)r+=t[n].length;var i=q.allocUnsafe(r),a=0;for(n=0;n<t.length;++n){var o=t[n];if(!Cn(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,a),a+=o.length}return i},"concat");s(VF,"byteLength");q.byteLength=VF;s(Ez,"slowToString");q.prototype._isBuffer=!0;s(Pa,"swap");q.prototype.swap16=s(function(){var t=this. -length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<t;r+=2)Pa(this,r,r+1);return this},"swap16");q.prototype.swap32=s(function(){var t=this.length;if(t%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<t;r+=4)Pa(this,r,r+3),Pa(this,r+1,r+2);return this},"swap32");q.prototype.swap64=s(function(){var t=this.length;if(t%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<t;r+=8)Pa(this,r,r+7),Pa(this,r+1,r+6),Pa(this,r+2,r+5),Pa(this,r+3,r+4);return this},"swap64");q.prototype.toString=s(function(){var t=this.length|0;return t===0?"":arguments.length===0?KF(this,0,t):Ez.apply(this,arguments)},"toString");q.prototype.equals=s(function(t){if(!Cn(t))throw new TypeError("Argument must be a Buffer");return this===t?!0:q.compare(this,t)===0},"equals");q.prototype.inspect=s(function(){var t="",r=yz;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length> -r&&(t+=" ... ")),"<Buffer "+t+">"},"inspect");q.prototype.compare=s(function(t,r,n,i,a){if(!Cn(t))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;for(var o=a-i,u=n-r,l=Math.min(o,u),c=this.slice(i,a),p=t.slice(r,n),m=0;m<l;++m)if(c[m]!==p[m]){o=c[m],u=p[m];break}return o<u?-1:u<o?1:0},"compare");s($F,"bidirectionalIndexOf");s(UF,"arrayIndexOf");q.prototype.includes=s(function(t,r,n){return this.indexOf(t,r,n)!==-1},"includes");q.prototype.indexOf=s(function(t,r,n){return $F(this,t,r,n,!0)},"indexOf");q.prototype.lastIndexOf=s(function(t,r,n){return $F(this,t,r,n,!1)},"lastIndexOf");s(Tz,"hexWrite");s(xz,"utf8Write");s(YF,"asciiWrite");s(Sz,"latin1Write");s(Cz,"base64Write");s(Fz,"ucs2Write");q.prototype.write= -s(function(t,r,n,i){if(r===void 0)i="utf8",n=this.length,r=0;else if(n===void 0&&typeof r=="string")i=r,n=this.length,r=0;else if(isFinite(r))r=r|0,isFinite(n)?(n=n|0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return Tz(this,t,r,n);case"utf8":case"utf-8":return xz(this,t,r,n);case"ascii":return YF(this,t,r,n);case"latin1":case"binary":return Sz(this,t,r,n);case"base64":return Cz(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Fz(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},"write");q.prototype.toJSON=s(function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},"toJSON");s(kz,"base64Slice");s(KF,"utf8\ -Slice");jF=4096;s(_z,"decodeCodePointsArray");s(Rz,"asciiSlice");s(Iz,"latin1Slice");s(Az,"hexSlice");s(Nz,"utf16leSlice");q.prototype.slice=s(function(t,r){var n=this.length;t=~~t,r=r===void 0?n:~~r,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r<t&&(r=t);var i;if(q.TYPED_ARRAY_SUPPORT)i=this.subarray(t,r),i.__proto__=q.prototype;else{var a=r-t;i=new q(a,void 0);for(var o=0;o<a;++o)i[o]=this[o+t]}return i},"slice");s(Vt,"checkOffset");q.prototype.readUIntLE=s(function(t,r,n){t=t|0,r=r|0,n||Vt(t,r,this.length);for(var i=this[t],a=1,o=0;++o<r&&(a*=256);)i+=this[t+o]*a;return i},"readUIntLE");q.prototype.readUIntBE=s(function(t,r,n){t=t|0,r=r|0,n||Vt(t,r,this.length);for(var i=this[t+--r],a=1;r>0&&(a*=256);)i+=this[t+--r]*a;return i},"readUIntBE");q.prototype.readUInt8=s(function(t,r){return r||Vt(t,1,this.length),this[t]},"readUInt8");q.prototype.readUInt16LE=s(function(t,r){return r||Vt(t,2,this.length),this[t]|this[t+1]<<8},"readUInt16LE");q.prototype.readUInt16BE= -s(function(t,r){return r||Vt(t,2,this.length),this[t]<<8|this[t+1]},"readUInt16BE");q.prototype.readUInt32LE=s(function(t,r){return r||Vt(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216},"readUInt32LE");q.prototype.readUInt32BE=s(function(t,r){return r||Vt(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])},"readUInt32BE");q.prototype.readIntLE=s(function(t,r,n){t=t|0,r=r|0,n||Vt(t,r,this.length);for(var i=this[t],a=1,o=0;++o<r&&(a*=256);)i+=this[t+o]*a;return a*=128,i>=a&&(i-=Math.pow(2,8*r)),i},"readIntLE");q.prototype.readIntBE=s(function(t,r,n){t=t|0,r=r|0,n||Vt(t,r,this.length);for(var i=r,a=1,o=this[t+--i];i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o},"readIntBE");q.prototype.readInt8=s(function(t,r){return r||Vt(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]},"readInt8");q.prototype.readInt16LE=s(function(t,r){r||Vt(t,2,this.length);var n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n},"rea\ -dInt16LE");q.prototype.readInt16BE=s(function(t,r){r||Vt(t,2,this.length);var n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n},"readInt16BE");q.prototype.readInt32LE=s(function(t,r){return r||Vt(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},"readInt32LE");q.prototype.readInt32BE=s(function(t,r){return r||Vt(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},"readInt32BE");q.prototype.readFloatLE=s(function(t,r){return r||Vt(t,4,this.length),Fp(this,t,!0,23,4)},"readFloatLE");q.prototype.readFloatBE=s(function(t,r){return r||Vt(t,4,this.length),Fp(this,t,!1,23,4)},"readFloatBE");q.prototype.readDoubleLE=s(function(t,r){return r||Vt(t,8,this.length),Fp(this,t,!0,52,8)},"readDoubleLE");q.prototype.readDoubleBE=s(function(t,r){return r||Vt(t,8,this.length),Fp(this,t,!1,52,8)},"readDoubleBE");s(Fr,"checkInt");q.prototype.writeUIntLE=s(function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;Fr(this,t,r,n,a,0)}var o=1,u=0;for(this[r]=t&255;++u< -n&&(o*=256);)this[r+u]=t/o&255;return r+n},"writeUIntLE");q.prototype.writeUIntBE=s(function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;Fr(this,t,r,n,a,0)}var o=n-1,u=1;for(this[r+o]=t&255;--o>=0&&(u*=256);)this[r+o]=t/u&255;return r+n},"writeUIntBE");q.prototype.writeUInt8=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,1,255,0),q.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=t&255,r+1},"writeUInt8");s(kp,"objectWriteUInt16");q.prototype.writeUInt16LE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,2,65535,0),q.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):kp(this,t,r,!0),r+2},"writeUInt16LE");q.prototype.writeUInt16BE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,2,65535,0),q.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):kp(this,t,r,!1),r+2},"writeUInt16BE");s(_p,"objectWriteUInt32");q.prototype.writeUInt32LE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,4,4294967295,0),q.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8, -this[r]=t&255):_p(this,t,r,!0),r+4},"writeUInt32LE");q.prototype.writeUInt32BE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,4,4294967295,0),q.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):_p(this,t,r,!1),r+4},"writeUInt32BE");q.prototype.writeIntLE=s(function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Fr(this,t,r,n,a-1,-a)}var o=0,u=1,l=0;for(this[r]=t&255;++o<n&&(u*=256);)t<0&&l===0&&this[r+o-1]!==0&&(l=1),this[r+o]=(t/u>>0)-l&255;return r+n},"writeIntLE");q.prototype.writeIntBE=s(function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Fr(this,t,r,n,a-1,-a)}var o=n-1,u=1,l=0;for(this[r+o]=t&255;--o>=0&&(u*=256);)t<0&&l===0&&this[r+o+1]!==0&&(l=1),this[r+o]=(t/u>>0)-l&255;return r+n},"writeIntBE");q.prototype.writeInt8=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,1,127,-128),q.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=t&255,r+1},"writeInt8");q.prototype.writeInt16LE=s(function(t,r,n){return t=+t,r=r|0, -n||Fr(this,t,r,2,32767,-32768),q.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):kp(this,t,r,!0),r+2},"writeInt16LE");q.prototype.writeInt16BE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,2,32767,-32768),q.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):kp(this,t,r,!1),r+2},"writeInt16BE");q.prototype.writeInt32LE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,4,2147483647,-2147483648),q.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):_p(this,t,r,!0),r+4},"writeInt32LE");q.prototype.writeInt32BE=s(function(t,r,n){return t=+t,r=r|0,n||Fr(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),q.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):_p(this,t,r,!1),r+4},"writeInt32BE");s(JF,"checkIEEE754");s(ZF,"writeFloat");q.prototype.writeFloatLE=s(function(t,r,n){return ZF(this,t,r,!0,n)},"writeFloatLE");q.prototype.writeFloatBE=s(function(t,r,n){return ZF(this,t,r,!1,n)},"writeFloatBE");s(XF,"w\ -riteDouble");q.prototype.writeDoubleLE=s(function(t,r,n){return XF(this,t,r,!0,n)},"writeDoubleLE");q.prototype.writeDoubleBE=s(function(t,r,n){return XF(this,t,r,!1,n)},"writeDoubleBE");q.prototype.copy=s(function(t,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i<n&&(i=n),i===n||t.length===0||this.length===0)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r<i-n&&(i=t.length-r+n);var a=i-n,o;if(this===t&&n<r&&r<i)for(o=a-1;o>=0;--o)t[o+r]=this[o+n];else if(a<1e3||!q.TYPED_ARRAY_SUPPORT)for(o=0;o<a;++o)t[o+r]=this[o+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),r);return a},"copy");q.prototype.fill=s(function(t,r,n,i){if(typeof t=="string"){if(typeof r=="string"?(i=r,r=0,n=this.length):typeof n=="string"&&(i=n,n=this.length),t.length===1){var a=t.charCodeAt( -0);a<256&&(t=a)}if(i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(typeof i=="string"&&!q.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else typeof t=="number"&&(t=t&255);if(r<0||this.length<r||this.length<n)throw new RangeError("Out of range index");if(n<=r)return this;r=r>>>0,n=n===void 0?this.length:n>>>0,t||(t=0);var o;if(typeof t=="number")for(o=r;o<n;++o)this[o]=t;else{var u=Cn(t)?t:Cp(new q(t,i).toString()),l=u.length;for(o=0;o<n-r;++o)this[o+r]=u[o%l]}return this},"fill");Mz=/[^+\/0-9A-Za-z-_]/g;s(Lz,"base64clean");s(Pz,"stringtrim");s(Oz,"toHex");s(Cp,"utf8ToBytes");s(Bz,"asciiToBytes");s(Uz,"utf16leToBytes");s(QF,"base64ToBytes");s(Rp,"blitBuffer");s(jz,"isnan");s(qz,"isBuffer");s(ek,"isFastBuffer");s(zz,"isSlowBuffer")});function Pi(){}function Ge(){Ge.init.call(this)}function tk(e){return e._maxListeners===void 0?Ge.defaultMaxListeners:e._maxListeners}function Hz(e,t,r){if(t)e.call(r);else for(var n=e.length,i=Vu(e,n),a=0;a<n;++a)i[a].call(r)}function Wz(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,a=Vu(e,i),o=0;o<i;++o)a[o].call(r,n)}function Gz(e,t,r,n,i){if(t)e.call(r,n,i);else for(var a=e.length,o=Vu(e,a),u=0;u<a;++u)o[u].call(r,n,i)}function Vz(e,t,r,n,i,a){if(t)e.call(r,n,i,a);else for(var o=e.length,u=Vu(e,o),l=0;l<o;++l)u[l].call(r,n,i,a)}function $z(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,a=Vu(e,i),o=0;o<i;++o)a[o].apply(r,n)}function rk(e,t,r,n){var i,a,o;if(typeof r!="function")throw new TypeError('"listener" argument must be a function');if(a=e._events,a?(a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]):(a=e._events=new Pi,e._eventsCount=0),!o)o=a[t]=r,++e._eventsCount;else if(typeof o=="function"?o=a[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push( -r),!o.warned&&(i=tk(e),i&&i>0&&o.length>i)){o.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=o.length,Yz(u)}return e}function Yz(e){typeof console.warn=="function"?console.warn(e):console.log(e)}function nk(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return s(i,"g"),i.listener=r,i}function ik(e){var t=this._events;if(t){var r=t[e];if(typeof r=="function")return 1;if(r)return r.length}return 0}function Kz(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}function Vu(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}function Jz(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}var Vh,Hr,ti=g(()=>{"use strict";d();s(Pi,"EventHandlers");Pi.prototype=Object.create(null);s(Ge,"EventEmitter");Hr=Ge;Ge.EventEmitter=Ge;Ge.usingDomains= -!1;Ge.prototype.domain=void 0;Ge.prototype._events=void 0;Ge.prototype._maxListeners=void 0;Ge.defaultMaxListeners=10;Ge.init=function(){this.domain=null,Ge.usingDomains&&Vh.active&&!(this instanceof Vh.Domain)&&(this.domain=Vh.active),(!this._events||this._events===Object.getPrototypeOf(this)._events)&&(this._events=new Pi,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ge.prototype.setMaxListeners=s(function(t){if(typeof t!="number"||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this},"setMaxListeners");s(tk,"$getMaxListeners");Ge.prototype.getMaxListeners=s(function(){return tk(this)},"getMaxListeners");s(Hz,"emitNone");s(Wz,"emitOne");s(Gz,"emitTwo");s(Vz,"emitThree");s($z,"emitMany");Ge.prototype.emit=s(function(t){var r,n,i,a,o,u,l,c=!1,p=t==="error";if(u=this._events,u)p=p&&u.error==null;else if(!p)return!1;if(l=this.domain,p){if(r=arguments[1],l)r||(r=new Error('Uncaught, unspecified "error" event')), -r.domainEmitter=this,r.domain=l,r.domainThrown=!1,l.emit("error",r);else{if(r instanceof Error)throw r;var m=new Error('Uncaught, unspecified "error" event. ('+r+")");throw m.context=r,m}return!1}if(n=u[t],!n)return!1;var f=typeof n=="function";switch(i=arguments.length,i){case 1:Hz(n,f,this);break;case 2:Wz(n,f,this,arguments[1]);break;case 3:Gz(n,f,this,arguments[1],arguments[2]);break;case 4:Vz(n,f,this,arguments[1],arguments[2],arguments[3]);break;default:for(a=new Array(i-1),o=1;o<i;o++)a[o-1]=arguments[o];$z(n,f,this,a)}return c&&l.exit(),!0},"emit");s(rk,"_addListener");s(Yz,"emitWarning");Ge.prototype.addListener=s(function(t,r){return rk(this,t,r,!1)},"addListener");Ge.prototype.on=Ge.prototype.addListener;Ge.prototype.prependListener=s(function(t,r){return rk(this,t,r,!0)},"prependListener");s(nk,"_onceWrap");Ge.prototype.once=s(function(t,r){if(typeof r!="function")throw new TypeError('"listener" argument must be a function');return this.on(t,nk(this,t,r)),this},"once");Ge.prototype. -prependOnceListener=s(function(t,r){if(typeof r!="function")throw new TypeError('"listener" argument must be a function');return this.prependListener(t,nk(this,t,r)),this},"prependOnceListener");Ge.prototype.removeListener=s(function(t,r){var n,i,a,o,u;if(typeof r!="function")throw new TypeError('"listener" argument must be a function');if(i=this._events,!i)return this;if(n=i[t],!n)return this;if(n===r||n.listener&&n.listener===r)--this._eventsCount===0?this._events=new Pi:(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length;o-- >0;)if(n[o]===r||n[o].listener&&n[o].listener===r){u=n[o].listener,a=o;break}if(a<0)return this;if(n.length===1){if(n[0]=void 0,--this._eventsCount===0)return this._events=new Pi,this;delete i[t]}else Kz(n,a);i.removeListener&&this.emit("removeListener",t,u||r)}return this},"removeListener");Ge.prototype.off=function(e,t){return this.removeListener(e,t)};Ge.prototype.removeAllListeners=s(function(t){ -var r,n;if(n=this._events,!n)return this;if(!n.removeListener)return arguments.length===0?(this._events=new Pi,this._eventsCount=0):n[t]&&(--this._eventsCount===0?this._events=new Pi:delete n[t]),this;if(arguments.length===0){for(var i=Object.keys(n),a=0,o;a<i.length;++a)o=i[a],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=new Pi,this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r)do this.removeListener(t,r[r.length-1]);while(r[0]);return this},"removeAllListeners");Ge.prototype.listeners=s(function(t){var r,n,i=this._events;return i?(r=i[t],r?typeof r=="function"?n=[r.listener||r]:n=Jz(r):n=[]):n=[],n},"listeners");Ge.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):ik.call(e,t)};Ge.prototype.listenerCount=ik;s(ik,"listenerCount");Ge.prototype.eventNames=s(function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]},"eventNames");s( -Kz,"spliceOne");s(Vu,"arrayClone");s(Jz,"unwrapListeners")});var ok=pe((Rfe,ak)=>{d();var $o=1e3,Yo=$o*60,Ko=Yo*60,Oa=Ko*24,Zz=Oa*7,Xz=Oa*365.25;ak.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return Qz(e);if(r==="number"&&isFinite(e))return t.long?tH(e):eH(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Qz(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*Xz;case"weeks":case"week":case"w":return r*Zz;case"days":case"day":case"d":return r*Oa;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Ko;case"minutes":case"minute":case"mins":case"min":case"m":return r*Yo;case"seconds":case"second":case"secs":case"sec":case"s":return r*$o;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default: -return}}}}s(Qz,"parse");function eH(e){var t=Math.abs(e);return t>=Oa?Math.round(e/Oa)+"d":t>=Ko?Math.round(e/Ko)+"h":t>=Yo?Math.round(e/Yo)+"m":t>=$o?Math.round(e/$o)+"s":e+"ms"}s(eH,"fmtShort");function tH(e){var t=Math.abs(e);return t>=Oa?Ip(e,t,Oa,"day"):t>=Ko?Ip(e,t,Ko,"hour"):t>=Yo?Ip(e,t,Yo,"minute"):t>=$o?Ip(e,t,$o,"second"):e+" ms"}s(tH,"fmtLong");function Ip(e,t,r,n){var i=t>=r*1.5;return Math.round(e/r)+" "+n+(i?"s":"")}s(Ip,"plural")});var uk=pe((Nfe,sk)=>{d();function rH(e){r.debug=r,r.default=r,r.coerce=l,r.disable=a,r.enable=i,r.enabled=o,r.humanize=ok(),r.destroy=c,Object.keys(e).forEach(p=>{r[p]=e[p]}),r.names=[],r.skips=[],r.formatters={};function t(p){let m=0;for(let f=0;f<p.length;f++)m=(m<<5)-m+p.charCodeAt(f),m|=0;return r.colors[Math.abs(m)%r.colors.length]}s(t,"selectColor"),r.selectColor=t;function r(p){let m,f=null,h,y;function b(...w){if(!b.enabled)return;let E=b,T=Number(new Date),S=T-(m||T);E.diff=S,E.prev=m,E.curr=T,m=T,w[0]=r.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let C=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(L,M)=>{if(L==="%%")return"%";C++;let H=r.formatters[M];if(typeof H=="function"){let te=w[C];L=H.call(E,te),w.splice(C,1),C--}return L}),r.formatArgs.call(E,w),(E.log||r.log).apply(E,w)}return s(b,"debug"),b.namespace=p,b.useColors=r.useColors(),b.color=r.selectColor(p),b.extend=n,b.destroy=r.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(h!== -r.namespaces&&(h=r.namespaces,y=r.enabled(p)),y),set:w=>{f=w}}),typeof r.init=="function"&&r.init(b),b}s(r,"createDebug");function n(p,m){let f=r(this.namespace+(typeof m>"u"?":":m)+p);return f.log=this.log,f}s(n,"extend");function i(p){r.save(p),r.namespaces=p,r.names=[],r.skips=[];let m,f=(typeof p=="string"?p:"").split(/[\s,]+/),h=f.length;for(m=0;m<h;m++)f[m]&&(p=f[m].replace(/\*/g,".*?"),p[0]==="-"?r.skips.push(new RegExp("^"+p.slice(1)+"$")):r.names.push(new RegExp("^"+p+"$")))}s(i,"enable");function a(){let p=[...r.names.map(u),...r.skips.map(u).map(m=>"-"+m)].join(",");return r.enable(""),p}s(a,"disable");function o(p){if(p[p.length-1]==="*")return!0;let m,f;for(m=0,f=r.skips.length;m<f;m++)if(r.skips[m].test(p))return!1;for(m=0,f=r.names.length;m<f;m++)if(r.names[m].test(p))return!0;return!1}s(o,"enabled");function u(p){return p.toString().substring(2,p.toString().length-2).replace(/\.\*\?$/,"*")}s(u,"toNamespace");function l(p){return p instanceof Error?p.stack||p.message:p}s( -l,"coerce");function c(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return s(c,"destroy"),r.enable(r.load()),r}s(rH,"setup");sk.exports=rH});var lk=pe((Lr,Ap)=>{d();Lr.formatArgs=iH;Lr.save=aH;Lr.load=oH;Lr.useColors=nH;Lr.storage=sH();Lr.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Lr.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#\ -FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function nH(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}s(nH,"useColors");function iH(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Ap.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice( -1,0,t,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),e.splice(n,0,t)}s(iH,"formatArgs");Lr.log=console.debug||console.log||(()=>{});function aH(e){try{e?Lr.storage.setItem("debug",e):Lr.storage.removeItem("debug")}catch{}}s(aH,"save");function oH(){let e;try{e=Lr.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}s(oH,"load");function sH(){try{return localStorage}catch{}}s(sH,"localstorage");Ap.exports=uk()(Lr);var{formatters:uH}=Ap.exports;uH.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});function Np(e){if(!e)throw new Error("name must be non-empty")}function lH(e,t){for(var r=0,n=e.length,i;r<n;)i=r+n>>>1,e[i].startTime<t.startTime?r=i+1:n=i;e.splice(r,0,t)}var vr,ck,Pp,Op,$u,Bp,Mp,Lp,dk=g(()=>{d();vr=typeof performance<"u"&&performance,ck=vr&&vr.now?function(){return vr.now()}:function(){return Date.now()};s(Np,"throwIfEmpty");s(lH,"insertSorted");vr&&vr.mark&&vr.getEntriesByName&&vr.getEntriesByType&&vr.clearMeasures?(Pp=s(function(e){Np(e),vr.mark("start "+e)},"mark"),Op=s(function(e){Np(e),vr.mark("end "+e),vr.measure(e,"start "+e,"end "+e);var t=vr.getEntriesByName(e);return t[t.length-1]},"stop"),$u=s(function(){return vr.getEntriesByType("measure")},"getEntries"),Bp=s(function(){vr.clearMarks(),vr.clearMeasures()},"clear")):(Mp={},Lp=[],Pp=s(function(e){Np(e);var t=ck();Mp["$"+e]=t},"mark"),Op=s(function(e){Np(e);var t=ck(),r=Mp["$"+e];if(!r)throw new Error("no known mark: "+e);var n={startTime:r,name:e,duration:t-r,entryType:"measure"};return lH(Lp,n),n},"stop"), -$u=s(function(){return Lp},"getEntries"),Bp=s(function(){Mp={},Lp=[]},"clear"))});var Bi,Oi,Jo,Zo,$h,pk,dH,mk,Xo,N,Ne=g(()=>{d();Li();ti();Bi=yr(lk());dk();Oi=ar.platform==="win32",Jo=ar.browser,Zo={red:Jo?"crimson":1,yellow:Jo?"gold":3,cyan:Jo?"darkturquoise":6,green:Jo?"forestgreen":2,blue:Jo?"steelblue":4,magenta:Jo?"palevioletred":5};Bi.default.colors=[Zo.cyan,Zo.green,Zo.blue,Zo.magenta];$h=class extends Ge{static{s(this,"Emitter")}issueStatus(t,r){(t==="status"||t==="statusEnd")&&this.emit(t,[t,...r])}issueWarning(t,r){this.emit("warning",[t,...r])}},pk={},dH=25,Xo=class e{static{s(this,"Log")}static _logToStdErr(t,r){e.loggerfn(t)(...r)}static loggerfn(t){t=`LH:${t}`;let r=pk[t];return r||(r=(0,Bi.default)(t),pk[t]=r,t.endsWith("error")?r.color=Zo.red:t.endsWith("warn")&&(r.color=Zo.yellow)),r}static setLevel(t){switch(mk=t,t){case"silent":Bi.default.enable("-LH:*");break;case"verbose":Bi.default.enable("LH:*");break;case"warn":Bi.default.enable("-LH:*, LH:*:warn, LH:*:error");break;case"error":Bi.default.enable("-LH:*, LH:*:error");break;default:Bi.default.enable( -"LH:*, -LH:*:verbose")}}static formatProtocol(t,r,n){let i=!ar||ar.browser?1/0:ar.stdout.columns,a=r.method||"?????",o=i-a.length-t.length-dH,u=r.params&&a!=="IO.read"?JSON.stringify(r.params).substr(0,o):"";e._logToStdErr(`${t}:${n||""}`,[a,u])}static isVerbose(){return mk==="verbose"}static time({msg:t,id:r,args:n=[]},i="log"){Pp(r),e[i]("status",t,...n)}static timeEnd({msg:t,id:r,args:n=[]},i="verbose"){e[i]("statusEnd",t,...n),Op(r)}static log(t,...r){return e.events.issueStatus(t,r),e._logToStdErr(t,r)}static warn(t,...r){return e.events.issueWarning(t,r),e._logToStdErr(`${t}:warn`,r)}static error(t,...r){return e._logToStdErr(`${t}:error`,r)}static verbose(t,...r){return e.events.issueStatus(t,r),e._logToStdErr(`${t}:verbose`,r)}static greenify(t){return`${e.green}${t}${e.reset}`}static redify(t){return`${e.red}${t}${e.reset}`}static get green(){return"\x1B[32m"}static get red(){return"\x1B[31m"}static get yellow(){return"\x1B[33m"}static get purple(){return"\x1B[95m"}static get reset(){ -return"\x1B[0m"}static get bold(){return"\x1B[1m"}static get dim(){return"\x1B[2m"}static get tick(){return Oi?"√":"✓"}static get cross(){return Oi?"×":"✘"}static get whiteSmallSquare(){return Oi?"·":"▫"}static get heavyHorizontal(){return Oi?"─":"━"}static get heavyVertical(){return Oi?"│ ":"┃ "}static get heavyUpAndRight(){return Oi?"└":"┗"}static get heavyVerticalAndRight(){return Oi?"├":"┣"}static get heavyDownAndHorizontal(){return Oi?"┬":"┳"}static get doubleLightHorizontal(){return"──"}};Xo.events=new $h;Xo.takeTimeEntries=()=>{let e=$u();return Bp(),e};Xo.getTimeEntries=()=>$u();N=Xo});var or=g(()=>{"use strict";d();});var Yh,X,Ke=g(()=>{"use strict";d();or();Yh=class{static{s(this,"BaseGatherer")}meta={supportedModes:[]};startInstrumentation(t){}startSensitiveInstrumentation(t){}stopSensitiveInstrumentation(t){}stopInstrumentation(t){}getArtifact(t){}},X=Yh});var pH,mH,fH,hH,gH,yH,tr,ri=g(()=>{"use strict";d();Ne();pH=/^(chrome|https?):/,mH=16,fH="RunTask",hH="ThreadControllerImpl::RunTask",gH="ThreadControllerImpl::DoWork",yH="TaskQueueManager::ProcessTaskFromWorkQueue",tr=class e{static{s(this,"TraceProcessor")}static get TIMESPAN_MARKER_ID(){return"__lighthouseTimespanStart__"}static createNoNavstartError(){return new Error("No navigationStart event found")}static createNoResourceSendRequestError(){return new Error("No ResourceSendRequest event found")}static createNoTracingStartedError(){return new Error("No tracingStartedInBrowser event found")}static createNoFirstContentfulPaintError(){return new Error("No FirstContentfulPaint event found")}static createNoLighthouseMarkerError(){return new Error("No Lighthouse timespan marker event found")}static _isNavigationStartOfInterest(t){return t.name!=="navigationStart"?!1:t.args.data?.documentLoaderURL===void 0?!0:t.args.data?.documentLoaderURL?pH.test(t.args.data.documentLoaderURL):!1}static _sortTimestampEventGroup(t,r,n,i){ -let a=s(m=>r[m],"lookupArrayIndexByTsIndex"),o=s(m=>i[a(m)],"lookupEventByTsIndex"),u=[],l=[],c=[];for(let m of t){let f=a(m),h=o(m);h.ph==="E"?u.push(f):h.ph==="X"||h.ph==="B"?l.push(f):c.push(f)}let p=new Map;for(let m of l){let f=i[m];if(f.ph==="X")p.set(m,f.dur);else{let h=Number.MAX_SAFE_INTEGER,y=0,b=n+t.length;for(let w=b;w<r.length;w++){let E=o(w);if(E.name===f.name&&E.pid===f.pid&&E.tid===f.tid)if(E.ph==="E"&&y===0){h=E.ts-f.ts;break}else E.ph==="E"?y--:E.ph==="B"&&y++}p.set(m,h)}}return l.sort((m,f)=>(p.get(f)||0)-(p.get(m)||0)||m-f),c.sort((m,f)=>m-f),[...u,...l,...c]}static filteredTraceSort(t,r){let n=[];for(let a=0;a<t.length;a++)r(t[a])&&n.push(a);n.sort((a,o)=>t[a].ts-t[o].ts);for(let a=0;a<n.length-1;a++){let o=t[n[a]].ts,u=[a];for(let c=a+1;c<n.length&&t[n[c]].ts===o;c++)u.push(c);if(u.length===1)continue;let l=e._sortTimestampEventGroup(u,n,a,t);n.splice(a,l.length,...l),a+=u.length-1}let i=[];for(let a=0;a<n.length;a++)i.push(t[n[a]]);return i}static assertHasToplevelEvents(t){ -if(!t.some(this.isScheduleableTask))throw new Error("Could not find any top level events")}static _riskPercentiles(t,r,n,i=0){let a=0;for(let f=0;f<t.length;f++)a+=t[f];a-=i;let o=r-a,u=0,l=o,c=[],p=-1,m=t.length+1;i>0&&m--;for(let f of n){let h=f*r;for(;l<h&&p<t.length-1;)o+=u,m-=u<0?-1:1,i>0&&i<t[p+1]?(u=-i,i=0):(p++,u=t[p]),l=o+Math.abs(u)*m;c.push({percentile:f,time:Math.max(0,(h-o)/m)+mH})}return c}static getRiskToResponsiveness(t,r,n,i=[.5,.75,.9,.99,1]){let a=n-r;i.sort((u,l)=>u-l);let o=this.getMainThreadTopLevelEventDurations(t,r,n);return this._riskPercentiles(o.durations,a,i,o.clippedLength)}static getMainThreadTopLevelEventDurations(t,r=0,n=1/0){let i=[],a=0;for(let o of t){if(o.end<r||o.start>n)continue;let u=o.duration,l=o.start;l<r&&(l=r,u=o.end-r),o.end>n&&(a=u-(n-l)),i.push(u)}return i.sort((o,u)=>o-u),{durations:i,clippedLength:a}}static getMainThreadTopLevelEvents(t,r=0,n=1/0){let i=[],a;for(let o of t.mainThreadEvents){if(!this.isScheduleableTask(o)||!o.dur)continue; -let u=(o.ts-t.timeOriginEvt.ts)/1e3,l=(o.ts+o.dur-t.timeOriginEvt.ts)/1e3;u>n||l<r||(a&&u<a.end&&(a.end=u-.001),a={start:u,end:l,duration:o.dur/1e3},i.push(a))}return i}static findMainFrameIds(t){let r=t.find(o=>o.name==="TracingStartedInBrowser");if(r?.args.data?.frames){let o=r.args.data.frames.find(c=>!c.parent),u=o?.frame,l=o?.processId;if(l&&u)return{startingPid:l,frameId:u}}let n=t.find(o=>o.name==="TracingStartedInPage");if(n?.args?.data){let o=n.args.data.page;if(o)return{startingPid:n.pid,frameId:o}}let i=t.find(o=>this._isNavigationStartOfInterest(o)&&o.args.data?.isLoadingMainFrame),a=t.find(o=>o.name==="ResourceSendRequest");if(i?.args?.data&&a&&a.pid===i.pid&&a.tid===i.tid){let o=i.args.frame;if(o)return{startingPid:i.pid,frameId:o}}throw this.createNoTracingStartedError()}static findMainFramePidTids(t,r){let n=r.filter(o=>(o.name==="FrameCommittedInBrowser"||o.name==="ProcessReadyInBrowser")&&o.args?.data?.frame===t.frameId&&o?.args?.data?.processId),i=n.length?n.map(o=>o?. -args?.data?.processId):[t.startingPid],a=new Map;for(let o of new Set(i)){let u=r.filter(p=>p.cat==="__metadata"&&p.pid===o&&p.ph==="M"&&p.name==="thread_name"),l=u.find(p=>p.args.name==="CrRendererMain");l||(l=u.find(p=>p.args.name==="CrBrowserMain"));let c=l?.tid;if(!c)throw new Error("Unable to determine tid for renderer process");a.set(o,c)}return a}static isScheduleableTask(t){return t.name===fH||t.name===hH||t.name===gH||t.name===yH}static isLCPEvent(t){return t.name!=="largestContentfulPaint::Invalidate"&&t.name!=="largestContentfulPaint::Candidate"?!1:!!t.args?.frame}static isLCPCandidateEvent(t){return!!(t.name==="largestContentfulPaint::Candidate"&&t.args?.frame&&t.args.data&&t.args.data.size!==void 0)}static getFrameId(t){return t.args?.data?.frame||t.args.data?.frameID||t.args.frame}static computeValidLCPAllFrames(t,r){let n=t.filter(this.isLCPEvent).reverse(),i=new Map;for(let o of n){if(o.ts<=r.ts)break;let u=o.args.frame;i.has(u)||i.set(u,o)}let a;for(let o of i.values()) -this.isLCPCandidateEvent(o)&&(!a||o.args.data.size>a.args.data.size)&&(a=o);return{lcp:a,invalidated:!!(!a&&i.size)}}static resolveRootFrames(t){let r=new Map;for(let i of t)i.parent&&r.set(i.id,i.parent);let n=new Map;for(let i of t){let a=i.id;for(;r.has(a);)a=r.get(a);if(a===void 0)throw new Error("Unexpected undefined frameId");n.set(i.id,a)}return n}static processTrace(t,r){let{timeOriginDeterminationMethod:n="auto"}=r||{},i=this.filteredTraceSort(t.traceEvents,C=>C.cat.includes("blink.user_timing")||C.cat.includes("loading")||C.cat.includes("devtools.timeline")||C.cat==="__metadata"),a=this.findMainFrameIds(i),o=this.findMainFramePidTids(a,i),u=e.filteredTraceSort(t.traceEvents,C=>o.has(C.pid)),l=new Map,c=i.find(C=>C.name==="TracingStartedInBrowser")?.args?.data?.frames;if(c)for(let C of c)l.set(C.frame,{id:C.frame,url:C.url,parent:C.parent});i.filter(C=>!!(C.name==="FrameCommittedInBrowser"&&C.args.data?.frame&&C.args.data.url!==void 0)).forEach(C=>{l.set(C.args.data.frame,{id:C. -args.data.frame,url:C.args.data.url,parent:C.args.data.parent})});let p=[...l.values()],m=this.resolveRootFrames(p),f=[...m.entries()].filter(([,C])=>C===a.frameId).map(([C])=>C);function h(C){return e.getFrameId(C)===a.frameId}s(h,"associatedToMainFrame");function y(C){let _=e.getFrameId(C);return _?f.includes(_):!1}s(y,"associatedToAllFrames");let b=i.filter(C=>h(C)),w=[];m.has(a.frameId)?w=i.filter(C=>y(C)):(N.warn("TraceProcessor","frameTreeEvents may be incomplete, make sure the trace has frame events"),m.set(a.frameId,a.frameId),w=b);let E=this.computeTimeOrigin({keyEvents:i,frameEvents:b,mainFrameInfo:a},n),T=u.filter(C=>C.tid===o.get(C.pid)),S=this.computeTraceEnd(t.traceEvents,E);return{frames:p,mainThreadEvents:T,frameEvents:b,frameTreeEvents:w,processEvents:u,mainFrameInfo:a,timeOriginEvt:E,timings:{timeOrigin:0,traceEnd:S.timing},timestamps:{timeOrigin:E.ts,traceEnd:S.timestamp},_keyEvents:i,_rendererPidToTid:o}}static processNavigation(t){let{frameEvents:r,frameTreeEvents:n, -timeOriginEvt:i,timings:a,timestamps:o}=t,u=this.computeNavigationTimingsForFrame(r,{timeOriginEvt:i}),l=n.find(f=>f.name==="firstContentfulPaint"&&f.ts>i.ts);if(!l)throw this.createNoFirstContentfulPaintError();let c=this.computeValidLCPAllFrames(n,i).lcp,p=s(f=>(f-i.ts)/1e3,"getTiming"),m=s(f=>f===void 0?void 0:p(f),"maybeGetTiming");return{timings:{timeOrigin:a.timeOrigin,firstPaint:u.timings.firstPaint,firstContentfulPaint:u.timings.firstContentfulPaint,firstContentfulPaintAllFrames:p(l.ts),largestContentfulPaint:u.timings.largestContentfulPaint,largestContentfulPaintAllFrames:m(c?.ts),load:u.timings.load,domContentLoaded:u.timings.domContentLoaded,traceEnd:a.traceEnd},timestamps:{timeOrigin:o.timeOrigin,firstPaint:u.timestamps.firstPaint,firstContentfulPaint:u.timestamps.firstContentfulPaint,firstContentfulPaintAllFrames:l.ts,largestContentfulPaint:u.timestamps.largestContentfulPaint,largestContentfulPaintAllFrames:c?.ts,load:u.timestamps.load,domContentLoaded:u.timestamps.domContentLoaded, -traceEnd:o.traceEnd},firstPaintEvt:u.firstPaintEvt,firstContentfulPaintEvt:u.firstContentfulPaintEvt,firstContentfulPaintAllFramesEvt:l,largestContentfulPaintEvt:u.largestContentfulPaintEvt,largestContentfulPaintAllFramesEvt:c,loadEvt:u.loadEvt,domContentLoadedEvt:u.domContentLoadedEvt,lcpInvalidated:u.lcpInvalidated}}static computeTraceEnd(t,r){let n=-1/0;for(let i of t)n=Math.max(i.ts+(i.dur||0),n);return{timestamp:n,timing:(n-r.ts)/1e3}}static computeTimeOrigin(t,r){let n=s(()=>t.frameEvents.filter(this._isNavigationStartOfInterest).pop(),"lastNavigationStart"),i=s(()=>t.keyEvents.find(o=>o.name==="clock_sync"&&o.args.sync_id===e.TIMESPAN_MARKER_ID),"lighthouseMarker");switch(r){case"firstResourceSendRequest":{let a=t.keyEvents.find(o=>o.name!=="ResourceSendRequest"?!1:(o.args.data||{}).frame===t.mainFrameInfo.frameId);if(!a)throw this.createNoResourceSendRequestError();return a}case"lastNavigationStart":{let a=n();if(!a)throw this.createNoNavstartError();return a}case"lighthouseMar\ -ker":{let a=i();if(!a)throw this.createNoLighthouseMarkerError();return a}case"auto":{let a=i()||n();if(!a)throw this.createNoNavstartError();return a}}}static computeNavigationTimingsForFrame(t,r){let{timeOriginEvt:n}=r,i=t.find(y=>y.name==="firstPaint"&&y.ts>n.ts),a=t.find(y=>y.name==="firstContentfulPaint"&&y.ts>n.ts);if(!a)throw this.createNoFirstContentfulPaintError();let o=this.computeValidLCPAllFrames(t,n),u=t.find(y=>y.name==="loadEventEnd"&&y.ts>n.ts),l=t.find(y=>y.name==="domContentLoadedEventEnd"&&y.ts>n.ts),c=s(y=>y?.ts,"getTimestamp"),p={timeOrigin:n.ts,firstPaint:c(i),firstContentfulPaint:a.ts,largestContentfulPaint:c(o.lcp),load:c(u),domContentLoaded:c(l)},m=s(y=>(y-n.ts)/1e3,"getTiming"),f=s(y=>y===void 0?void 0:m(y),"maybeGetTiming");return{timings:{timeOrigin:0,firstPaint:f(p.firstPaint),firstContentfulPaint:m(p.firstContentfulPaint),largestContentfulPaint:f(p.largestContentfulPaint),load:f(p.load),domContentLoaded:f(p.domContentLoaded)},timestamps:p,timeOriginEvt:n,firstPaintEvt:i, -firstContentfulPaintEvt:a,largestContentfulPaintEvt:o.lcp,loadEvt:u,domContentLoadedEvt:l,lcpInvalidated:o.invalidated}}}});var fk={};x(fk,{default:()=>cn});var Kh,cn,Ba=g(()=>{"use strict";d();Ke();ri();Kh=class e extends X{static{s(this,"Trace")}_trace={traceEvents:[]};static getDefaultTraceCategories(){return["-*","disabled-by-default-lighthouse","loading","v8","v8.execute","blink.user_timing","blink.console","devtools.timeline","disabled-by-default-devtools.timeline","disabled-by-default-devtools.screenshot","disabled-by-default-devtools.timeline.stack","disabled-by-default-devtools.timeline.frame","latencyInfo","disabled-by-default-devtools.timeline.invalidationTracking"]}static async endTraceAndCollectEvents(t){let r=[],n=s(function(i){r.push(...i.value)},"dataListener");return t.on("Tracing.dataCollected",n),new Promise((i,a)=>{t.once("Tracing.tracingComplete",o=>{t.off("Tracing.dataCollected",n),i({traceEvents:r})}),t.sendCommand("Tracing.end").catch(a)})}static symbol=Symbol("Trace");meta={symbol:e.symbol,supportedModes:["timespan","navigation"]};async startSensitiveInstrumentation({driver:t,gatherMode:r, -settings:n}){let i=e.getDefaultTraceCategories().concat(n.additionalTraceCategories||[]);await t.defaultSession.sendCommand("Page.enable"),await t.defaultSession.sendCommand("Tracing.start",{categories:i.join(","),options:"sampling-frequency=10000"}),r==="timespan"&&await t.defaultSession.sendCommand("Tracing.recordClockSyncMarker",{syncId:tr.TIMESPAN_MARKER_ID})}async stopSensitiveInstrumentation({driver:t}){this._trace=await e.endTraceAndCollectEvents(t.defaultSession)}getDebugData(){return this._trace}getArtifact(){return this._trace}},cn=Kh});var hk={};x(hk,{default:()=>Wr});var Wr,ni=g(()=>{d();Wr={}});function gk(e,t){for(var r=0,n=e.length-1;n>=0;n--){var i=e[n];i==="."?e.splice(n,1):i===".."?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function Jh(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:"/";if(typeof n!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!n)continue;e=n+"/"+e,t=n.charAt(0)==="/"}return e=gk(Xh(e.split("/"),function(i){return!!i}),!t).join("/"),(t?"/":"")+e||"."}function yk(e){var t=vk(e),r=CH(e,-1)==="/";return e=gk(Xh(e.split("/"),function(n){return!!n}),!t).join("/"),!e&&!t&&(e="."),e&&r&&(e+="/"),(t?"/":"")+e}function vk(e){return e.charAt(0)==="/"}function bH(){var e=Array.prototype.slice.call(arguments,0);return yk(Xh(e,function(t,r){if(typeof t!="string")throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))}function wH(e,t){e=Jh(e).substr(1),t=Jh(t).substr(1);function r(c){for(var p=0;p<c.length&&c[p]==="";p++);for(var m=c.length- -1;m>=0&&c[m]==="";m--);return p>m?[]:c.slice(p,m-p+1)}s(r,"trim");for(var n=r(e.split("/")),i=r(t.split("/")),a=Math.min(n.length,i.length),o=a,u=0;u<a;u++)if(n[u]!==i[u]){o=u;break}for(var l=[],u=o;u<n.length;u++)l.push("..");return l=l.concat(i.slice(o)),l.join("/")}function TH(e){var t=Zh(e),r=t[0],n=t[1];return!r&&!n?".":(n&&(n=n.substr(0,n.length-1)),r+n)}function xH(e,t){var r=Zh(e)[2];return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r}function SH(e){return Zh(e)[3]}function Xh(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n<e.length;n++)t(e[n],n,e)&&r.push(e[n]);return r}var vH,Zh,DH,EH,St,CH,Ui=g(()=>{d();s(gk,"normalizeArray");vH=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Zh=s(function(e){return vH.exec(e).slice(1)},"splitPath");s(Jh,"resolve");s(yk,"normalize");s(vk,"isAbsolute");s(bH,"join");s(wH,"relative");DH="/",EH=":";s(TH,"dirname");s(xH,"basename");s(SH,"extname");St={extname:SH,basename:xH,dirname:TH,sep:DH,delimiter:EH, -relative:wH,join:bH,isAbsolute:vk,normalize:yk,resolve:Jh};s(Xh,"filter");CH="ab".substr(-1)==="b"?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}});var FH,Up,Qh=g(()=>{d();FH=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,Up=FH});var kH,_H,$t,Fn=g(()=>{d();Qh();kH=typeof self=="object"&&self&&self.Object===Object&&self,_H=Up||kH||Function("return this")(),$t=_H});var RH,ii,jp=g(()=>{d();Fn();RH=$t.Symbol,ii=RH});function NH(e){var t=IH.call(e,Yu),r=e[Yu];try{e[Yu]=void 0;var n=!0}catch{}var i=AH.call(e);return n&&(t?e[Yu]=r:delete e[Yu]),i}var bk,IH,AH,Yu,wk,Dk=g(()=>{d();jp();bk=Object.prototype,IH=bk.hasOwnProperty,AH=bk.toString,Yu=ii?ii.toStringTag:void 0;s(NH,"getRawTag");wk=NH});function PH(e){return LH.call(e)}var MH,LH,Ek,Tk=g(()=>{d();MH=Object.prototype,LH=MH.toString;s(PH,"objectToString");Ek=PH});function UH(e){return e==null?e===void 0?BH:OH:xk&&xk in Object(e)?wk(e):Ek(e)}var OH,BH,xk,ai,Ku=g(()=>{d();jp();Dk();Tk();OH="[object Null]",BH="[object Undefined]",xk=ii?ii.toStringTag:void 0;s(UH,"baseGetTag");ai=UH});function jH(e){return e!=null&&typeof e=="object"}var oi,Ju=g(()=>{d();s(jH,"isObjectLike");oi=jH});var qH,Ua,qp=g(()=>{d();qH=Array.isArray,Ua=qH});function zH(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var zp,eg=g(()=>{d();s(zH,"isObject");zp=zH});function $H(e){if(!zp(e))return!1;var t=ai(e);return t==WH||t==GH||t==HH||t==VH}var HH,WH,GH,VH,Hp,tg=g(()=>{d();Ku();eg();HH="[object AsyncFunction]",WH="[object Function]",GH="[object GeneratorFunction]",VH="[object Proxy]";s($H,"isFunction");Hp=$H});var YH,Wp,Sk=g(()=>{d();Fn();YH=$t["__core-js_shared__"],Wp=YH});function KH(e){return!!Ck&&Ck in e}var Ck,Fk,kk=g(()=>{d();Sk();Ck=function(){var e=/[^.]+$/.exec(Wp&&Wp.keys&&Wp.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();s(KH,"isMasked");Fk=KH});function XH(e){if(e!=null){try{return ZH.call(e)}catch{}try{return e+""}catch{}}return""}var JH,ZH,si,rg=g(()=>{d();JH=Function.prototype,ZH=JH.toString;s(XH,"toSource");si=XH});function oW(e){if(!zp(e)||Fk(e))return!1;var t=Hp(e)?aW:eW;return t.test(si(e))}var QH,eW,tW,rW,nW,iW,aW,_k,Rk=g(()=>{d();tg();kk();eg();rg();QH=/[\\^$.*+?()[\]{}|]/g,eW=/^\[object .+?Constructor\]$/,tW=Function.prototype,rW=Object.prototype,nW=tW.toString,iW=rW.hasOwnProperty,aW=RegExp("^"+nW.call(iW).replace(QH,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");s(oW,"baseIsNative");_k=oW});function sW(e,t){return e?.[t]}var Ik,Ak=g(()=>{d();s(sW,"getValue");Ik=sW});function uW(e,t){var r=Ik(e,t);return _k(r)?r:void 0}var Gr,ja=g(()=>{d();Rk();Ak();s(uW,"getNative");Gr=uW});var lW,Gp,Nk=g(()=>{d();ja();Fn();lW=Gr($t,"WeakMap"),Gp=lW});function pW(e,t){var r=typeof e;return t=t??cW,!!t&&(r=="number"||r!="symbol"&&dW.test(e))&&e>-1&&e%1==0&&e<t}var cW,dW,Mk,Lk=g(()=>{d();cW=9007199254740991,dW=/^(?:0|[1-9]\d*)$/;s(pW,"isIndex");Mk=pW});function mW(e,t){return e===t||e!==e&&t!==t}var Vp,ng=g(()=>{d();s(mW,"eq");Vp=mW});function hW(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=fW}var fW,$p,ig=g(()=>{d();fW=9007199254740991;s(hW,"isLength");$p=hW});function gW(e){return e!=null&&$p(e.length)&&!Hp(e)}var Pk,Ok=g(()=>{d();tg();ig();s(gW,"isArrayLike");Pk=gW});function vW(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||yW;return e===r}var yW,Bk,Uk=g(()=>{d();yW=Object.prototype;s(vW,"isPrototype");Bk=vW});function bW(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}var jk,qk=g(()=>{d();s(bW,"baseTimes");jk=bW});function DW(e){return oi(e)&&ai(e)==wW}var wW,ag,zk=g(()=>{d();Ku();Ju();wW="[object Arguments]";s(DW,"baseIsArguments");ag=DW});var Hk,EW,TW,xW,Wk,Gk=g(()=>{d();zk();Ju();Hk=Object.prototype,EW=Hk.hasOwnProperty,TW=Hk.propertyIsEnumerable,xW=ag(function(){return arguments}())?ag:function(e){return oi(e)&&EW.call(e,"callee")&&!TW.call(e,"callee")},Wk=xW});function SW(){return!1}var Vk,$k=g(()=>{d();s(SW,"stubFalse");Vk=SW});var Jk,Yk,CW,Kk,FW,kW,Zu,og=g(()=>{d();Fn();$k();Jk=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yk=Jk&&typeof module=="object"&&module&&!module.nodeType&&module,CW=Yk&&Yk.exports===Jk,Kk=CW?$t.Buffer:void 0,FW=Kk?Kk.isBuffer:void 0,kW=FW||Vk,Zu=kW});function QW(e){return oi(e)&&$p(e.length)&&!!Dt[ai(e)]}var _W,RW,IW,AW,NW,MW,LW,PW,OW,BW,UW,jW,qW,zW,HW,WW,GW,VW,$W,YW,KW,JW,ZW,XW,Dt,Zk,Xk=g(()=>{d();Ku();ig();Ju();_W="[object Arguments]",RW="[object Array]",IW="[object Boolean]",AW="[object Date]",NW="[object Error]",MW="[object Function]",LW="[object Map]",PW="[object Number]",OW="[object Object]",BW="[object RegExp]",UW="[object Set]",jW="[object String]",qW="[object WeakMap]",zW="[object ArrayBuffer]",HW="[object DataView]",WW="[object Float32Array]",GW="[object Float64Array]",VW="[object Int8Array]",$W="[object Int16Array]",YW="[object Int32Array]",KW="[object Uint8Array]",JW="[object Uint8ClampedArray]",ZW="[object Uint16Array]",XW="[object Uint32Array]",Dt={};Dt[WW]=Dt[GW]=Dt[VW]=Dt[$W]=Dt[YW]=Dt[KW]=Dt[JW]=Dt[ZW]=Dt[XW]=!0;Dt[_W]=Dt[RW]=Dt[zW]=Dt[IW]=Dt[HW]=Dt[AW]=Dt[NW]=Dt[MW]=Dt[LW]=Dt[PW]=Dt[OW]=Dt[BW]=Dt[UW]=Dt[jW]=Dt[qW]=!1;s(QW,"baseIsTypedArray");Zk=QW});function eG(e){return function(t){return e(t)}}var Qk,e_=g(()=>{d();s(eG,"baseUnary");Qk=eG});var t_,Xu,tG,sg,rG,ug,r_=g(()=>{d();Qh();t_=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xu=t_&&typeof module=="object"&&module&&!module.nodeType&&module,tG=Xu&&Xu.exports===t_,sg=tG&&Up.process,rG=function(){try{var e=Xu&&Xu.require&&Xu.require("util").types;return e||sg&&sg.binding&&sg.binding("util")}catch{}}(),ug=rG});var n_,nG,Yp,lg=g(()=>{d();Xk();e_();r_();n_=ug&&ug.isTypedArray,nG=n_?Qk(n_):Zk,Yp=nG});function oG(e,t){var r=Ua(e),n=!r&&Wk(e),i=!r&&!n&&Zu(e),a=!r&&!n&&!i&&Yp(e),o=r||n||i||a,u=o?jk(e.length,String):[],l=u.length;for(var c in e)(t||aG.call(e,c))&&!(o&&(c=="length"||i&&(c=="offset"||c=="parent")||a&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Mk(c,l)))&&u.push(c);return u}var iG,aG,i_,a_=g(()=>{d();qk();Gk();qp();og();Lk();lg();iG=Object.prototype,aG=iG.hasOwnProperty;s(oG,"arrayLikeKeys");i_=oG});function sG(e,t){return function(r){return e(t(r))}}var o_,s_=g(()=>{d();s(sG,"overArg");o_=sG});var uG,u_,l_=g(()=>{d();s_();uG=o_(Object.keys,Object),u_=uG});function dG(e){if(!Bk(e))return u_(e);var t=[];for(var r in Object(e))cG.call(e,r)&&r!="constructor"&&t.push(r);return t}var lG,cG,c_,d_=g(()=>{d();Uk();l_();lG=Object.prototype,cG=lG.hasOwnProperty;s(dG,"baseKeys");c_=dG});function pG(e){return Pk(e)?i_(e):c_(e)}var p_,m_=g(()=>{d();a_();d_();Ok();s(pG,"keys");p_=pG});var mG,ui,Qu=g(()=>{d();ja();mG=Gr(Object,"create"),ui=mG});function fG(){this.__data__=ui?ui(null):{},this.size=0}var f_,h_=g(()=>{d();Qu();s(fG,"hashClear");f_=fG});function hG(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var g_,y_=g(()=>{d();s(hG,"hashDelete");g_=hG});function bG(e){var t=this.__data__;if(ui){var r=t[e];return r===gG?void 0:r}return vG.call(t,e)?t[e]:void 0}var gG,yG,vG,v_,b_=g(()=>{d();Qu();gG="__lodash_hash_undefined__",yG=Object.prototype,vG=yG.hasOwnProperty;s(bG,"hashGet");v_=bG});function EG(e){var t=this.__data__;return ui?t[e]!==void 0:DG.call(t,e)}var wG,DG,w_,D_=g(()=>{d();Qu();wG=Object.prototype,DG=wG.hasOwnProperty;s(EG,"hashHas");w_=EG});function xG(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ui&&t===void 0?TG:t,this}var TG,E_,T_=g(()=>{d();Qu();TG="__lodash_hash_undefined__";s(xG,"hashSet");E_=xG});function Qo(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}var cg,x_=g(()=>{d();h_();y_();b_();D_();T_();s(Qo,"Hash");Qo.prototype.clear=f_;Qo.prototype.delete=g_;Qo.prototype.get=v_;Qo.prototype.has=w_;Qo.prototype.set=E_;cg=Qo});function SG(){this.__data__=[],this.size=0}var S_,C_=g(()=>{d();s(SG,"listCacheClear");S_=SG});function CG(e,t){for(var r=e.length;r--;)if(Vp(e[r][0],t))return r;return-1}var ji,el=g(()=>{d();ng();s(CG,"assocIndexOf");ji=CG});function _G(e){var t=this.__data__,r=ji(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():kG.call(t,r,1),--this.size,!0}var FG,kG,F_,k_=g(()=>{d();el();FG=Array.prototype,kG=FG.splice;s(_G,"listCacheDelete");F_=_G});function RG(e){var t=this.__data__,r=ji(t,e);return r<0?void 0:t[r][1]}var __,R_=g(()=>{d();el();s(RG,"listCacheGet");__=RG});function IG(e){return ji(this.__data__,e)>-1}var I_,A_=g(()=>{d();el();s(IG,"listCacheHas");I_=IG});function AG(e,t){var r=this.__data__,n=ji(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var N_,M_=g(()=>{d();el();s(AG,"listCacheSet");N_=AG});function es(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}var qi,tl=g(()=>{d();C_();k_();R_();A_();M_();s(es,"ListCache");es.prototype.clear=S_;es.prototype.delete=F_;es.prototype.get=__;es.prototype.has=I_;es.prototype.set=N_;qi=es});var NG,zi,Kp=g(()=>{d();ja();Fn();NG=Gr($t,"Map"),zi=NG});function MG(){this.size=0,this.__data__={hash:new cg,map:new(zi||qi),string:new cg}}var L_,P_=g(()=>{d();x_();tl();Kp();s(MG,"mapCacheClear");L_=MG});function LG(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var O_,B_=g(()=>{d();s(LG,"isKeyable");O_=LG});function PG(e,t){var r=e.__data__;return O_(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Hi,rl=g(()=>{d();B_();s(PG,"getMapData");Hi=PG});function OG(e){var t=Hi(this,e).delete(e);return this.size-=t?1:0,t}var U_,j_=g(()=>{d();rl();s(OG,"mapCacheDelete");U_=OG});function BG(e){return Hi(this,e).get(e)}var q_,z_=g(()=>{d();rl();s(BG,"mapCacheGet");q_=BG});function UG(e){return Hi(this,e).has(e)}var H_,W_=g(()=>{d();rl();s(UG,"mapCacheHas");H_=UG});function jG(e,t){var r=Hi(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var G_,V_=g(()=>{d();rl();s(jG,"mapCacheSet");G_=jG});function ts(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}var Jp,dg=g(()=>{d();P_();j_();z_();W_();V_();s(ts,"MapCache");ts.prototype.clear=L_;ts.prototype.delete=U_;ts.prototype.get=q_;ts.prototype.has=H_;ts.prototype.set=G_;Jp=ts});function qG(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}var $_,Y_=g(()=>{d();s(qG,"arrayPush");$_=qG});function zG(){this.__data__=new qi,this.size=0}var K_,J_=g(()=>{d();tl();s(zG,"stackClear");K_=zG});function HG(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var Z_,X_=g(()=>{d();s(HG,"stackDelete");Z_=HG});function WG(e){return this.__data__.get(e)}var Q_,eR=g(()=>{d();s(WG,"stackGet");Q_=WG});function GG(e){return this.__data__.has(e)}var tR,rR=g(()=>{d();s(GG,"stackHas");tR=GG});function $G(e,t){var r=this.__data__;if(r instanceof qi){var n=r.__data__;if(!zi||n.length<VG-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Jp(n)}return r.set(e,t),this.size=r.size,this}var VG,nR,iR=g(()=>{d();tl();Kp();dg();VG=200;s($G,"stackSet");nR=$G});function rs(e){var t=this.__data__=new qi(e);this.size=t.size}var Zp,aR=g(()=>{d();tl();J_();X_();eR();rR();iR();s(rs,"Stack");rs.prototype.clear=K_;rs.prototype.delete=Z_;rs.prototype.get=Q_;rs.prototype.has=tR;rs.prototype.set=nR;Zp=rs});function YG(e,t){for(var r=-1,n=e==null?0:e.length,i=0,a=[];++r<n;){var o=e[r];t(o,r,e)&&(a[i++]=o)}return a}var oR,sR=g(()=>{d();s(YG,"arrayFilter");oR=YG});function KG(){return[]}var uR,lR=g(()=>{d();s(KG,"stubArray");uR=KG});var JG,ZG,cR,XG,dR,pR=g(()=>{d();sR();lR();JG=Object.prototype,ZG=JG.propertyIsEnumerable,cR=Object.getOwnPropertySymbols,XG=cR?function(e){return e==null?[]:(e=Object(e),oR(cR(e),function(t){return ZG.call(e,t)}))}:uR,dR=XG});function QG(e,t,r){var n=t(e);return Ua(e)?n:$_(n,r(e))}var mR,fR=g(()=>{d();Y_();qp();s(QG,"baseGetAllKeys");mR=QG});function eV(e){return mR(e,p_,dR)}var pg,hR=g(()=>{d();fR();pR();m_();s(eV,"getAllKeys");pg=eV});var tV,Xp,gR=g(()=>{d();ja();Fn();tV=Gr($t,"DataView"),Xp=tV});var rV,Qp,yR=g(()=>{d();ja();Fn();rV=Gr($t,"Promise"),Qp=rV});var nV,em,vR=g(()=>{d();ja();Fn();nV=Gr($t,"Set"),em=nV});var bR,iV,wR,DR,ER,TR,aV,oV,sV,uV,lV,qa,mg,xR=g(()=>{d();gR();Kp();yR();vR();Nk();Ku();rg();bR="[object Map]",iV="[object Object]",wR="[object Promise]",DR="[object Set]",ER="[object WeakMap]",TR="[object DataView]",aV=si(Xp),oV=si(zi),sV=si(Qp),uV=si(em),lV=si(Gp),qa=ai;(Xp&&qa(new Xp(new ArrayBuffer(1)))!=TR||zi&&qa(new zi)!=bR||Qp&&qa(Qp.resolve())!=wR||em&&qa(new em)!=DR||Gp&&qa(new Gp)!=ER)&&(qa=s(function(e){var t=ai(e),r=t==iV?e.constructor:void 0,n=r?si(r):"";if(n)switch(n){case aV:return TR;case oV:return bR;case sV:return wR;case uV:return DR;case lV:return ER}return t},"getTag"));mg=qa});var cV,fg,SR=g(()=>{d();Fn();cV=$t.Uint8Array,fg=cV});function pV(e){return this.__data__.set(e,dV),this}var dV,CR,FR=g(()=>{d();dV="__lodash_hash_undefined__";s(pV,"setCacheAdd");CR=pV});function mV(e){return this.__data__.has(e)}var kR,_R=g(()=>{d();s(mV,"setCacheHas");kR=mV});function tm(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Jp;++t<r;)this.add(e[t])}var RR,IR=g(()=>{d();dg();FR();_R();s(tm,"SetCache");tm.prototype.add=tm.prototype.push=CR;tm.prototype.has=kR;RR=tm});function fV(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}var AR,NR=g(()=>{d();s(fV,"arraySome");AR=fV});function hV(e,t){return e.has(t)}var MR,LR=g(()=>{d();s(hV,"cacheHas");MR=hV});function vV(e,t,r,n,i,a){var o=r&gV,u=e.length,l=t.length;if(u!=l&&!(o&&l>u))return!1;var c=a.get(e),p=a.get(t);if(c&&p)return c==t&&p==e;var m=-1,f=!0,h=r&yV?new RR:void 0;for(a.set(e,t),a.set(t,e);++m<u;){var y=e[m],b=t[m];if(n)var w=o?n(b,y,m,t,e,a):n(y,b,m,e,t,a);if(w!==void 0){if(w)continue;f=!1;break}if(h){if(!AR(t,function(E,T){if(!MR(h,T)&&(y===E||i(y,E,r,n,a)))return h.push(T)})){f=!1;break}}else if(!(y===b||i(y,b,r,n,a))){f=!1;break}}return a.delete(e),a.delete(t),f}var gV,yV,rm,hg=g(()=>{d();IR();NR();LR();gV=1,yV=2;s(vV,"equalArrays");rm=vV});function bV(e){var t=-1,r=Array(e.size);return e.forEach(function(n,i){r[++t]=[i,n]}),r}var PR,OR=g(()=>{d();s(bV,"mapToArray");PR=bV});function wV(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var BR,UR=g(()=>{d();s(wV,"setToArray");BR=wV});function MV(e,t,r,n,i,a,o){switch(r){case NV:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case AV:return!(e.byteLength!=t.byteLength||!a(new fg(e),new fg(t)));case TV:case xV:case FV:return Vp(+e,+t);case SV:return e.name==t.name&&e.message==t.message;case kV:case RV:return e==t+"";case CV:var u=PR;case _V:var l=n&DV;if(u||(u=BR),e.size!=t.size&&!l)return!1;var c=o.get(e);if(c)return c==t;n|=EV,o.set(e,t);var p=rm(u(e),u(t),n,i,a,o);return o.delete(e),p;case IV:if(gg)return gg.call(e)==gg.call(t)}return!1}var DV,EV,TV,xV,SV,CV,FV,kV,_V,RV,IV,AV,NV,jR,gg,qR,zR=g(()=>{d();jp();SR();ng();hg();OR();UR();DV=1,EV=2,TV="[object Boolean]",xV="[object Date]",SV="[object Error]",CV="[object Map]",FV="[object Number]",kV="[object RegExp]",_V="[object Set]",RV="[object String]",IV="[object Symbol]",AV="[object ArrayBuffer]",NV="[object DataView]",jR=ii?ii.prototype:void 0,gg=jR?jR.valueOf:void 0;s(MV,"equalByTag");qR=MV});function BV(e,t,r,n,i,a){var o=r&LV,u=pg(e),l=u.length,c=pg(t),p=c.length;if(l!=p&&!o)return!1;for(var m=l;m--;){var f=u[m];if(!(o?f in t:OV.call(t,f)))return!1}var h=a.get(e),y=a.get(t);if(h&&y)return h==t&&y==e;var b=!0;a.set(e,t),a.set(t,e);for(var w=o;++m<l;){f=u[m];var E=e[f],T=t[f];if(n)var S=o?n(T,E,f,t,e,a):n(E,T,f,e,t,a);if(!(S===void 0?E===T||i(E,T,r,n,a):S)){b=!1;break}w||(w=f=="constructor")}if(b&&!w){var C=e.constructor,_=t.constructor;C!=_&&"constructor"in e&&"constructor"in t&&!(typeof C=="function"&&C instanceof C&&typeof _=="function"&&_ instanceof _)&&(b=!1)}return a.delete(e),a.delete(t),b}var LV,PV,OV,HR,WR=g(()=>{d();hR();LV=1,PV=Object.prototype,OV=PV.hasOwnProperty;s(BV,"equalObjects");HR=BV});function qV(e,t,r,n,i,a){var o=Ua(e),u=Ua(t),l=o?VR:mg(e),c=u?VR:mg(t);l=l==GR?nm:l,c=c==GR?nm:c;var p=l==nm,m=c==nm,f=l==c;if(f&&Zu(e)){if(!Zu(t))return!1;o=!0,p=!1}if(f&&!p)return a||(a=new Zp),o||Yp(e)?rm(e,t,r,n,i,a):qR(e,t,l,r,n,i,a);if(!(r&UV)){var h=p&&$R.call(e,"__wrapped__"),y=m&&$R.call(t,"__wrapped__");if(h||y){var b=h?e.value():e,w=y?t.value():t;return a||(a=new Zp),i(b,w,r,n,a)}}return f?(a||(a=new Zp),HR(e,t,r,n,i,a)):!1}var UV,GR,VR,nm,jV,$R,YR,KR=g(()=>{d();aR();hg();zR();WR();xR();qp();og();lg();UV=1,GR="[object Arguments]",VR="[object Array]",nm="[object Object]",jV=Object.prototype,$R=jV.hasOwnProperty;s(qV,"baseIsEqualDeep");YR=qV});function JR(e,t,r,n,i){return e===t?!0:e==null||t==null||!oi(e)&&!oi(t)?e!==e&&t!==t:YR(e,t,r,n,JR,i)}var ZR,XR=g(()=>{d();KR();Ju();s(JR,"baseIsEqual");ZR=JR});function zV(e,t){return ZR(e,t)}var kn,QR=g(()=>{d();XR();s(zV,"isEqual");kn=zV});var nl=g(()=>{d();QR();});var eI,tI=g(()=>{"use strict";d();Li();eI=!!ar.env.CI||ar.env.NODE_ENV==="test"});function VV(e){let t=Math.sign(e);e=Math.abs(e);let r=.254829592,n=-.284496736,i=1.421413741,a=-1.453152027,o=1.061405429,l=1/(1+.3275911*e),c=l*(r+l*(n+l*(i+l*(a+l*o))));return t*(1-c*Math.exp(-e*e))}function rI({median:e,p10:t},r){if(e<=0)throw new Error("median must be greater than zero");if(t<=0)throw new Error("p10 must be greater than zero");if(t>=e)throw new Error("p10 must be less than the median");if(r<=0)return 1;let n=.9061938024368232,i=Math.max(Number.MIN_VALUE,r/e),a=Math.log(i),o=Math.max(Number.MIN_VALUE,t/e),u=-Math.log(o),l=a*n/u,c=(1-VV(l))/2,p;return r<=t?p=Math.max(.9,Math.min(1,c)):r<=e?p=Math.max(WV,Math.min(HV,c)):p=Math.max(0,Math.min(GV,c)),p}function nI(e,t,r,n,i){let a=(n-t)/(r-e);return t+(i-e)*a}var HV,WV,GV,yg=g(()=>{"use strict";d();HV=.8999999999999999,WV=.5,GV=.49999999999999994;s(VV,"erf");s(rI,"getLogNormalScore");s(nI,"linearInterpolation")});var li,YV,iI,KV,JV,Me,Pr=g(()=>{"use strict";d();yg();li="…",YV=" ",iI=.9,KV={PASS:{label:"pass",minScore:iI},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},JV=["com","co","gov","edu","ac","org","go","gob","or","net","in","ne","nic","gouv","web","spb","blog","jus","kiev","mil","wi","qc","ca","bel","on"],Me=class e{static{s(this,"Util")}static get RATINGS(){return KV}static get PASS_THRESHOLD(){return iI}static get MS_DISPLAY_VALUE(){return`%10d${YV}ms`}static getFinalDisplayedUrl(t){if(t.finalDisplayedUrl)return t.finalDisplayedUrl;if(t.finalUrl)return t.finalUrl;throw new Error("Could not determine final displayed URL")}static getMainDocumentUrl(t){return t.mainDocumentUrl||t.finalUrl}static getFullPageScreenshot(t){return t.fullPageScreenshot?t.fullPageScreenshot:t.audits["full-page-screenshot"]?.details}static getEntityFromUrl(t,r){return r&&r.find(i=>i.origins.find(a=>t.startsWith(a)))||e.getPseudoRootDomain(t)}static splitMarkdownCodeSpans(t){let r=[], -n=t.split(/`(.*?)`/g);for(let i=0;i<n.length;i++){let a=n[i];if(!a)continue;let o=i%2!==0;r.push({isCode:o,text:a})}return r}static splitMarkdownLink(t){let r=[],n=t.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;n.length;){let[i,a,o]=n.splice(0,3);i&&r.push({isLink:!1,text:i}),a&&o&&r.push({isLink:!0,text:a,linkHref:o})}return r}static truncate(t,r,n="…"){if(t.length<=r)return t;let a=new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(t)[Symbol.iterator](),o=0;for(let u=0;u<=r-n.length;u++){let l=a.next();if(l.done)return t;o=l.value.index}for(let u=0;u<n.length;u++)if(a.next().done)return t;return t.slice(0,o)+n}static getURLDisplayName(t,r){r=r||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0};let n=r.numPathParts!==void 0?r.numPathParts:2,i=r.preserveQuery!==void 0?r.preserveQuery:!0,a=r.preserveHost||!1,o;if(t.protocol==="about:"||t.protocol==="data:")o=t.href;else{o=t.pathname;let l=o.split("/").filter(c=>c.length);n&&l.length>n&&(o=li+l.slice(-1*n).join( -"/")),a&&(o=`${t.host}/${o.replace(/^\//,"")}`),i&&(o=`${o}${t.search}`)}let u=64;if(t.protocol!=="data:"&&(o=o.slice(0,200),o=o.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,`$1${li}`),o=o.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,`$1${li}`),o=o.replace(/(\d{3})\d{6,}/g,`$1${li}`),o=o.replace(/\u2026+/g,li),o.length>u&&o.includes("?")&&(o=o.replace(/\?([^=]*)(=)?.*/,`?$1$2${li}`),o.length>u&&(o=o.replace(/\?.*/,`?${li}`)))),o.length>u){let l=o.lastIndexOf(".");l>=0?o=o.slice(0,u-1-(o.length-l))+`${li}${o.slice(l)}`:o=o.slice(0,u-1)+li}return o}static getChromeExtensionOrigin(t){let r=new URL(t);return r.protocol+"//"+r.host}static parseURL(t){let r=new URL(t);return{file:e.getURLDisplayName(r),hostname:r.hostname,origin:r.protocol==="chrome-extension:"?e.getChromeExtensionOrigin(t):r.origin}}static createOrReturnURL(t){return t instanceof URL?t:new URL(t)}static getPseudoTld(t){let r=t.split(".").slice(-2);return JV.includes(r[0])?`.${r.join(".")}`: -`.${r[r.length-1]}`}static getPseudoRootDomain(t){let r=e.createOrReturnURL(t).hostname,i=e.getPseudoTld(r).split(".");return r.split(".").slice(-i.length).join(".")}static filterRelevantLines(t,r,n){if(r.length===0)return t.slice(0,n*2+1);let i=3,a=new Set;return r=r.sort((o,u)=>(o.lineNumber||0)-(u.lineNumber||0)),r.forEach(({lineNumber:o})=>{let u=o-n,l=o+n;for(;u<1;)u++,l++;a.has(u-i-1)&&(u-=i);for(let c=u;c<=l;c++){let p=c;a.add(p)}}),t.filter(o=>a.has(o.lineNumber))}static computeLogNormalScore(t,r){let n=rI(t,r);return n>.9&&(n+=.05*(n-.9)),Math.floor(n*100)/100}}});var ZV,XV,QV,v,V=g(()=>{"use strict";d();or();tI();Pr();ZV="defaultPass",XV={FCP:50,LCP:50,INP:50,TBT:50,CLS:.001},QV=s(e=>Math.round(e*100)/100,"clampTo2Decimals"),v=class e{static{s(this,"Audit")}static get DEFAULT_PASS(){return ZV}static get SCORING_MODES(){return{NUMERIC:"numeric",METRIC_SAVINGS:"metricSavings",BINARY:"binary",MANUAL:"manual",INFORMATIVE:"informative",NOT_APPLICABLE:"notApplicable",ERROR:"error"}}static get meta(){throw new Error("Audit meta information must be overridden.")}static get defaultOptions(){return{}}static audit(t,r){throw new Error("audit() method must be overridden")}static computeLogNormalScore(t,r){return Me.computeLogNormalScore(t,r)}static assertHeadingKeysExist(t,r){if(r.length&&eI)for(let n of t){if(n.key===null)continue;let i=n.key;if(!r.some(a=>i in a))throw new Error(`"${n.key}" is missing from items`)}}static makeTableDetails(t,r,n={}){let{wastedBytes:i,wastedMs:a,sortedBy:o,skipSumming:u,isEntityGrouped:l}=n,c=i||a?{wastedBytes:i,wastedMs:a}: -void 0;return r.length===0?{type:"table",headings:[],items:[],summary:c}:(e.assertHeadingKeysExist(t,r),{type:"table",headings:t,items:r,summary:c,sortedBy:o,skipSumming:u,isEntityGrouped:l})}static makeListDetails(t){return{type:"list",items:t}}static makeSnippetDetails({content:t,title:r,lineMessages:n,generalMessages:i,node:a,maxLineLength:o=200,maxLinesAroundMessage:u=20}){let l=e._makeSnippetLinesArray(t,o);return{type:"snippet",lines:Me.filterRelevantLines(l,n,u),title:r,lineMessages:n,generalMessages:i,lineCount:l.length,node:a}}static _makeSnippetLinesArray(t,r){return t.split(` -`).map((n,i)=>{let a=i+1,o={content:Me.truncate(n,r),lineNumber:a};return n.length>r&&(o.truncated=!0),o})}static makeOpportunityDetails(t,r,n){e.assertHeadingKeysExist(t,r);let{overallSavingsMs:i,overallSavingsBytes:a,sortedBy:o,skipSumming:u,isEntityGrouped:l}=n;return{type:"opportunity",headings:r.length===0?[]:t,items:r,overallSavingsMs:i,overallSavingsBytes:a,sortedBy:o,skipSumming:u,isEntityGrouped:l}}static makeNodeItem(t){return{type:"node",lhId:t.lhId,path:t.devtoolsNodePath,selector:t.selector,boundingRect:t.boundingRect,snippet:t.snippet,nodeLabel:t.nodeLabel}}static _findOriginalLocation(t,r,n){let i=t?.map.findEntry(r,n);if(i)return{file:i.sourceURL||"",line:i.sourceLineNumber||0,column:i.sourceColumnNumber||0}}static makeSourceLocation(t,r,n,i){return{type:"source-location",url:t,urlProvider:"network",line:r,column:n,original:i&&this._findOriginalLocation(i,r,n)}}static makeSourceLocationFromConsoleMessage(t,r){if(!t.url)return;let n=t.lineNumber||0,i=t.columnNumber||0;return this. -makeSourceLocation(t.url,n,i,r)}static _normalizeAuditScore(t,r,n){if(r===e.SCORING_MODES.INFORMATIVE)return 1;if(r!==e.SCORING_MODES.BINARY&&r!==e.SCORING_MODES.NUMERIC&&r!==e.SCORING_MODES.METRIC_SAVINGS)return null;if(t===null||!Number.isFinite(t))throw new Error(`Invalid score for ${n}: ${t}`);if(t>1)throw new Error(`Audit score for ${n} is > 1`);if(t<0)throw new Error(`Audit score for ${n} is < 0`);return t=QV(t),t}static _quantizeMetricSavings(t){if(!t)return;let r={...t};for(let n of Object.keys(t)){let i=t[n];if(i===void 0)continue;i=Math.max(i,0);let a=XV[n];a!==void 0&&(i=Math.round(i/a)*a),r[n]=i}return r}static generateErrorAuditResult(t,r,n){return e.generateAuditResult(t,{score:null,errorMessage:r,errorStack:n})}static generateAuditResult(t,r){if(r.score===void 0)throw new Error("generateAuditResult requires a score");let n=t.meta.scoreDisplayMode||e.SCORING_MODES.BINARY,i=r.score;r.errorMessage!==void 0?n=e.SCORING_MODES.ERROR:r.notApplicable?n=e.SCORING_MODES.NOT_APPLICABLE: -r.scoreDisplayMode&&(n=r.scoreDisplayMode);let a=e._quantizeMetricSavings(r.metricSavings),o=Object.values(a||{}).some(c=>c);n===e.SCORING_MODES.METRIC_SAVINGS&&(i&&i>=Me.PASS_THRESHOLD?i=1:o?i=0:i=.5),i=e._normalizeAuditScore(i,n,t.meta.id);let u=t.meta.title;t.meta.failureTitle&&i!==null&&i<Me.PASS_THRESHOLD&&(u=t.meta.failureTitle);let l="numericUnit"in r?r:void 0;return{id:t.meta.id,title:u,description:t.meta.description,score:i,scoreDisplayMode:n,numericValue:l?.numericValue,numericUnit:l?.numericUnit,displayValue:r.displayValue,explanation:r.explanation,errorMessage:r.errorMessage,errorStack:r.errorStack,warnings:r.warnings,scoringOptions:r.scoringOptions,metricSavings:a,details:r.details,guidanceLevel:t.meta.guidanceLevel}}static makeMetricComputationDataInput(t,r){let n=t.traces[e.DEFAULT_PASS],i=t.devtoolsLogs[e.DEFAULT_PASS],a=t.GatherContext;return{trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings,URL:t.URL}}}});var e$,im,aI=g(()=>{"use strict";d();V();e$=s(e=>Math.round(e*100)/100,"clampTo2Decimals"),im=class e{static{s(this,"ReportScoring")}static arithmeticMean(t){if(t=t.filter(n=>n.weight>0),t.some(n=>n.score===null))return null;let r=t.reduce((n,i)=>{let a=i.score,o=i.weight;return{weight:n.weight+o,sum:n.sum+a*o}},{weight:0,sum:0});return e$(r.sum/r.weight||0)}static scoreAllCategories(t,r){let n={};for(let[i,a]of Object.entries(t)){let o=a.auditRefs.map(c=>{let p={...c},m=r[p.id];return(m.scoreDisplayMode===v.SCORING_MODES.NOT_APPLICABLE||m.scoreDisplayMode===v.SCORING_MODES.INFORMATIVE||m.scoreDisplayMode===v.SCORING_MODES.MANUAL)&&(p.weight=0),p}),u=o.map(c=>({score:r[c.id].score,weight:c.weight})),l=e.arithmeticMean(u);n[i]={...a,auditRefs:o,id:i,score:l}}return n}}});function il(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");vg(e,t);function r(){this.constructor=e}s(r,"__"),e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}function oI(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r}function am(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,a;n<i;n++)(a||!(n in t))&&(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var vg,dn,bg=g(()=>{d();vg=s(function(e,t){return vg=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[i]= -n[i])},vg(e,t)},"extendStatics");s(il,"__extends");dn=s(function(){return dn=Object.assign||s(function(t){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},"__assign"),dn.apply(this,arguments)},"__assign");s(oI,"__rest");s(am,"__spreadArray")});var ns,wg=g(()=>{d();ns=s(function(){return ns=Object.assign||s(function(t){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},"__assign"),ns.apply(this,arguments)},"__assign")});var Ve,Dg=g(()=>{d();(function(e){e[e.EXPECT_ARGUMENT_CLOSING_BRACE=1]="EXPECT_ARGUMENT_CLOSING_BRACE",e[e.EMPTY_ARGUMENT=2]="EMPTY_ARGUMENT",e[e.MALFORMED_ARGUMENT=3]="MALFORMED_ARGUMENT",e[e.EXPECT_ARGUMENT_TYPE=4]="EXPECT_ARGUMENT_TYPE",e[e.INVALID_ARGUMENT_TYPE=5]="INVALID_ARGUMENT_TYPE",e[e.EXPECT_ARGUMENT_STYLE=6]="EXPECT_ARGUMENT_STYLE",e[e.INVALID_NUMBER_SKELETON=7]="INVALID_NUMBER_SKELETON",e[e.INVALID_DATE_TIME_SKELETON=8]="INVALID_DATE_TIME_SKELETON",e[e.EXPECT_NUMBER_SKELETON=9]="EXPECT_NUMBER_SKELETON",e[e.EXPECT_DATE_TIME_SKELETON=10]="EXPECT_DATE_TIME_SKELETON",e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE=11]="UNCLOSED_QUOTE_IN_ARGUMENT_STYLE",e[e.EXPECT_SELECT_ARGUMENT_OPTIONS=12]="EXPECT_SELECT_ARGUMENT_OPTIONS",e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE=13]="EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE",e[e.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE=14]="INVALID_PLURAL_ARGUMENT_OFFSET_VALUE",e[e.EXPECT_SELECT_ARGUMENT_SELECTOR=15]="EXPECT_SELECT_ARGUMENT_SELECTOR",e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR= -16]="EXPECT_PLURAL_ARGUMENT_SELECTOR",e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT=17]="EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT",e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT=18]="EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT",e[e.INVALID_PLURAL_ARGUMENT_SELECTOR=19]="INVALID_PLURAL_ARGUMENT_SELECTOR",e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR=20]="DUPLICATE_PLURAL_ARGUMENT_SELECTOR",e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR=21]="DUPLICATE_SELECT_ARGUMENT_SELECTOR",e[e.MISSING_OTHER_CLAUSE=22]="MISSING_OTHER_CLAUSE",e[e.INVALID_TAG=23]="INVALID_TAG",e[e.INVALID_TAG_NAME=25]="INVALID_TAG_NAME",e[e.UNMATCHED_CLOSING_TAG=26]="UNMATCHED_CLOSING_TAG",e[e.UNCLOSED_TAG=27]="UNCLOSED_TAG"})(Ve||(Ve={}))});function Eg(e){return e.type===Et.literal}function sI(e){return e.type===Et.argument}function om(e){return e.type===Et.number}function sm(e){return e.type===Et.date}function um(e){return e.type===Et.time}function lm(e){return e.type===Et.select}function cm(e){return e.type===Et.plural}function uI(e){return e.type===Et.pound}function dm(e){return e.type===Et.tag}function pm(e){return!!(e&&typeof e=="object"&&e.type===za.number)}function al(e){return!!(e&&typeof e=="object"&&e.type===za.dateTime)}var Et,za,mm=g(()=>{d();(function(e){e[e.literal=0]="literal",e[e.argument=1]="argument",e[e.number=2]="number",e[e.date=3]="date",e[e.time=4]="time",e[e.select=5]="select",e[e.plural=6]="plural",e[e.pound=7]="pound",e[e.tag=8]="tag"})(Et||(Et={}));(function(e){e[e.number=0]="number",e[e.dateTime=1]="dateTime"})(za||(za={}));s(Eg,"isLiteralElement");s(sI,"isArgumentElement");s(om,"isNumberElement");s(sm,"isDateElement");s(um,"isTimeElement");s(lm,"isSelectElement");s(cm,"isPluralElement");s(uI,"\ -isPoundElement");s(dm,"isTagElement");s(pm,"isNumberSkeleton");s(al,"isDateTimeSkeleton")});var Tg,lI=g(()=>{d();Tg=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/});function cI(e){var t={};return e.replace(t$,function(r){var n=r.length;switch(r[0]){case"G":t.era=n===4?"long":n===5?"narrow":"short";break;case"y":t.year=n===2?"2-digit":"numeric";break;case"Y":case"u":case"U":case"r":throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");case"q":case"Q":throw new RangeError("`q/Q` (quarter) patterns are not supported");case"M":case"L":t.month=["numeric","2-digit","short","long","narrow"][n-1];break;case"w":case"W":throw new RangeError("`w/W` (week) patterns are not supported");case"d":t.day=["numeric","2-digit"][n-1];break;case"D":case"F":case"g":throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");case"E":t.weekday=n===4?"short":n===5?"narrow":"short";break;case"e":if(n<4)throw new RangeError("`e..eee` (weekday) patterns are not supported");t.weekday=["short","long","narrow","short"][n-4];break;case"c":if(n<4)throw new RangeError("`c..ccc` (weekday) patterns are not supported");t.weekday=["s\ -hort","long","narrow","short"][n-4];break;case"a":t.hour12=!0;break;case"b":case"B":throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead");case"h":t.hourCycle="h12",t.hour=["numeric","2-digit"][n-1];break;case"H":t.hourCycle="h23",t.hour=["numeric","2-digit"][n-1];break;case"K":t.hourCycle="h11",t.hour=["numeric","2-digit"][n-1];break;case"k":t.hourCycle="h24",t.hour=["numeric","2-digit"][n-1];break;case"j":case"J":case"C":throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");case"m":t.minute=["numeric","2-digit"][n-1];break;case"s":t.second=["numeric","2-digit"][n-1];break;case"S":case"A":throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead");case"z":t.timeZoneName=n<4?"short":"long";break;case"Z":case"O":case"v":case"V":case"X":case"x":throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")}return""}),t}var t$,dI=g(()=>{d();t$=/(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g; -s(cI,"parseDateTimeSkeleton")});var _t,pI=g(()=>{d();_t=s(function(){return _t=Object.assign||s(function(t){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},"__assign"),_t.apply(this,arguments)},"__assign")});var mI,fI=g(()=>{d();mI=/[\t-\r \x85\u200E\u200F\u2028\u2029]/i});function vI(e){if(e.length===0)throw new Error("Number skeleton cannot be empty");for(var t=e.split(mI).filter(function(f){return f.length>0}),r=[],n=0,i=t;n<i.length;n++){var a=i[n],o=a.split("/");if(o.length===0)throw new Error("Invalid number skeleton");for(var u=o[0],l=o.slice(1),c=0,p=l;c<p.length;c++){var m=p[c];if(m.length===0)throw new Error("Invalid number skeleton")}r.push({stem:u,options:l})}return r}function r$(e){return e.replace(/^(.*?)-/,"")}function gI(e){var t={};return e[e.length-1]==="r"?t.roundingPriority="morePrecision":e[e.length-1]==="s"&&(t.roundingPriority="lessPrecision"),e.replace(bI,function(r,n,i){return typeof i!="string"?(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length):i==="+"?t.minimumSignificantDigits=n.length:n[0]==="#"?t.maximumSignificantDigits=n.length:(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length+(typeof i=="string"?i.length:0)),""}),t}function DI(e){switch(e){case"sign-auto":return{signDisplay:"a\ -uto"};case"sign-accounting":case"()":return{currencySign:"accounting"};case"sign-always":case"+!":return{signDisplay:"always"};case"sign-accounting-always":case"()!":return{signDisplay:"always",currencySign:"accounting"};case"sign-except-zero":case"+?":return{signDisplay:"exceptZero"};case"sign-accounting-except-zero":case"()?":return{signDisplay:"exceptZero",currencySign:"accounting"};case"sign-never":case"+_":return{signDisplay:"never"}}}function i$(e){var t;if(e[0]==="E"&&e[1]==="E"?(t={notation:"engineering"},e=e.slice(2)):e[0]==="E"&&(t={notation:"scientific"},e=e.slice(1)),t){var r=e.slice(0,2);if(r==="+!"?(t.signDisplay="always",e=e.slice(2)):r==="+?"&&(t.signDisplay="exceptZero",e=e.slice(2)),!wI.test(e))throw new Error("Malformed concise eng/scientific notation");t.minimumIntegerDigits=e.length}return t}function yI(e){var t={},r=DI(e);return r||t}function EI(e){for(var t={},r=0,n=e;r<n.length;r++){var i=n[r];switch(i.stem){case"percent":case"%":t.style="percent";continue;case"\ -%x100":t.style="percent",t.scale=100;continue;case"currency":t.style="currency",t.currency=i.options[0];continue;case"group-off":case",_":t.useGrouping=!1;continue;case"precision-integer":case".":t.maximumFractionDigits=0;continue;case"measure-unit":case"unit":t.style="unit",t.unit=r$(i.options[0]);continue;case"compact-short":case"K":t.notation="compact",t.compactDisplay="short";continue;case"compact-long":case"KK":t.notation="compact",t.compactDisplay="long";continue;case"scientific":t=_t(_t(_t({},t),{notation:"scientific"}),i.options.reduce(function(l,c){return _t(_t({},l),yI(c))},{}));continue;case"engineering":t=_t(_t(_t({},t),{notation:"engineering"}),i.options.reduce(function(l,c){return _t(_t({},l),yI(c))},{}));continue;case"notation-simple":t.notation="standard";continue;case"unit-width-narrow":t.currencyDisplay="narrowSymbol",t.unitDisplay="narrow";continue;case"unit-width-short":t.currencyDisplay="code",t.unitDisplay="short";continue;case"unit-width-full-name":t.currencyDisplay= -"name",t.unitDisplay="long";continue;case"unit-width-iso-code":t.currencyDisplay="symbol";continue;case"scale":t.scale=parseFloat(i.options[0]);continue;case"integer-width":if(i.options.length>1)throw new RangeError("integer-width stems only accept a single optional option");i.options[0].replace(n$,function(l,c,p,m,f,h){if(c)t.minimumIntegerDigits=p.length;else{if(m&&f)throw new Error("We currently do not support maximum integer digits");if(h)throw new Error("We currently do not support exact integer digits")}return""});continue}if(wI.test(i.stem)){t.minimumIntegerDigits=i.stem.length;continue}if(hI.test(i.stem)){if(i.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");i.stem.replace(hI,function(l,c,p,m,f,h){return p==="*"?t.minimumFractionDigits=c.length:m&&m[0]==="#"?t.maximumFractionDigits=m.length:f&&h?(t.minimumFractionDigits=f.length,t.maximumFractionDigits=f.length+h.length):(t.minimumFractionDigits=c.length,t.maximumFractionDigits= -c.length),""});var a=i.options[0];a==="w"?t=_t(_t({},t),{trailingZeroDisplay:"stripIfInteger"}):a&&(t=_t(_t({},t),gI(a)));continue}if(bI.test(i.stem)){t=_t(_t({},t),gI(i.stem));continue}var o=DI(i.stem);o&&(t=_t(_t({},t),o));var u=i$(i.stem);u&&(t=_t(_t({},t),u))}return t}var hI,bI,n$,wI,TI=g(()=>{d();pI();fI();s(vI,"parseNumberSkeletonFromString");s(r$,"icuUnitToEcma");hI=/^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,bI=/^(@+)?(\+|#+)?[rs]?$/g,n$=/(\*)(0+)|(#+)(0+)|(0+)/g,wI=/^(0+)$/;s(gI,"parseSignificantPrecision");s(DI,"parseSign");s(i$,"parseConciseScientificAndEngineeringStem");s(yI,"parseNotationOptions");s(EI,"parseNumberSkeleton")});var xI=g(()=>{d();dI();TI()});var ol,SI=g(()=>{d();ol={"001":["H","h"],AC:["H","h","hb","hB"],AD:["H","hB"],AE:["h","hB","hb","H"],AF:["H","hb","hB","h"],AG:["h","hb","H","hB"],AI:["H","h","hb","hB"],AL:["h","H","hB"],AM:["H","hB"],AO:["H","hB"],AR:["H","h","hB","hb"],AS:["h","H"],AT:["H","hB"],AU:["h","hb","H","hB"],AW:["H","hB"],AX:["H"],AZ:["H","hB","h"],BA:["H","hB","h"],BB:["h","hb","H","hB"],BD:["h","hB","H"],BE:["H","hB"],BF:["H","hB"],BG:["H","hB","h"],BH:["h","hB","hb","H"],BJ:["H","hB"],BL:["H","hB"],BM:["h","hb","H","hB"],BN:["hb","hB","h","H"],BO:["H","hB","h","hb"],BQ:["H"],BR:["H","hB"],BS:["h","hb","H","hB"],BT:["h","H"],BW:["H","h","hb","hB"],BZ:["H","h","hb","hB"],CA:["h","hb","H","hB"],CC:["H","h","hb","hB"],CD:["hB","H"],CF:["H","h","hB"],CG:["H","hB"],CH:["H","hB","h"],CI:["H","hB"],CK:["H","h","hb","hB"],CL:["H","h","hB","hb"],CM:["H","h","hB"],CN:["H","hB","hb","h"],CO:["h","H","hB","hb"],CP:["H"],CR:["H","h","hB","hb"],CU:["H","h","hB","hb"],CV:["H","hB"],CX:["H","h","hb","hB"],CY:["h","H","h\ +"use strict";(()=>{var bH=Object.create;var Vc=Object.defineProperty;var wH=Object.getOwnPropertyDescriptor;var DH=Object.getOwnPropertyNames;var xH=Object.getPrototypeOf,EH=Object.prototype.hasOwnProperty;var s=(e,t)=>Vc(e,"name",{value:t,configurable:!0});var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var de=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var n in t)Vc(e,n,{get:t[n],enumerable:!0})},fF=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of DH(t))!EH.call(e,a)&&a!==n&&Vc(e,a,{get:()=>t[a],enumerable:!(r=wH(t,a))||r.enumerable});return e};var mn=(e,t,n)=>(n=e!=null?bH(xH(e)):{},fF(t||!e||!e.__esModule?Vc(n,"default",{value:e,enumerable:!0}):n,e)),TH=e=>fF(Vc({},"__esModule",{value:!0}),e);function hF(){throw new Error("setTimeout has not been defined")}function gF(){throw new Error("clearTimeout has not been defined")}function yF(e){if(za===setTimeout)return setTimeout(e,0);if((za===hF||!za)&&setTimeout)return za=setTimeout,setTimeout(e,0);try{return za(e,0)}catch{try{return za.call(null,e,0)}catch{return za.call(this,e,0)}}}function SH(e){if(qa===clearTimeout)return clearTimeout(e);if((qa===gF||!qa)&&clearTimeout)return qa=clearTimeout,clearTimeout(e);try{return qa(e)}catch{try{return qa.call(null,e)}catch{return qa.call(this,e)}}}function CH(){!Ji||!$o||(Ji=!1,$o.length?sa=$o.concat(sa):km=-1,sa.length&&vF())}function vF(){if(!Ji){var e=yF(CH);Ji=!0;for(var t=sa.length;t;){for($o=sa,sa=[];++km<t;)$o&&$o[km].run();km=-1,t=sa.length}$o=null,Ji=!1,SH(e)}}function pn(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];sa.push(new bF(e,t)),sa.length===1&&!Ji&&yF(vF)}function bF(e,t){this.fun=e,this.array=t}function Yo(){} +function HH(e){throw new Error("process.binding is not supported")}function WH(){return"/"}function GH(e){throw new Error("process.chdir is not supported")}function VH(){return 0}function YH(e){var t=$H.call(Ki)*.001,n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n=n-e[0],r=r-e[1],r<0&&(n--,r+=1e9)),[n,r]}function JH(){var e=new Date,t=e-KH;return t/1e3}var za,qa,sa,Ji,$o,km,kH,FH,RH,IH,AH,_H,MH,NH,OH,LH,PH,BH,UH,jH,zH,qH,Ki,$H,KH,fn,Ha=g(()=>{d();s(hF,"defaultSetTimout");s(gF,"defaultClearTimeout");za=hF,qa=gF;typeof globalThis.setTimeout=="function"&&(za=setTimeout);typeof globalThis.clearTimeout=="function"&&(qa=clearTimeout);s(yF,"runTimeout");s(SH,"runClearTimeout");sa=[],Ji=!1,km=-1;s(CH,"cleanUpNextTick");s(vF,"drainQueue");s(pn,"nextTick");s(bF,"Item");bF.prototype.run=function(){this.fun.apply(null,this.array)};kH="browser",FH="browser",RH=!0,IH={},AH=[],_H="",MH={},NH={},OH={};s(Yo,"noop");LH=Yo,PH=Yo,BH=Yo,UH=Yo,jH=Yo,zH=Yo,qH=Yo;s(HH,"binding");s(WH,"cwd");s(GH,"chdir");s( +VH,"umask");Ki=globalThis.performance||{},$H=Ki.now||Ki.mozNow||Ki.msNow||Ki.oNow||Ki.webkitNow||function(){return new Date().getTime()};s(YH,"hrtime");KH=new Date;s(JH,"uptime");fn={nextTick:pn,title:kH,browser:RH,env:IH,argv:AH,version:_H,versions:MH,on:LH,addListener:PH,once:BH,off:UH,removeListener:jH,removeAllListeners:zH,emit:qH,binding:HH,cwd:WH,chdir:GH,umask:VH,hrtime:YH,platform:FH,release:NH,config:OH,uptime:JH}});var d=g(()=>{"use strict";Ha();globalThis.process=fn});function EF(){Yh=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Nr[t]=e[t],Yn[e.charCodeAt(t)]=t;Yn[45]=62,Yn[95]=63}function ZH(e){Yh||EF();var t,n,r,a,o,i,c=e.length;if(c%4>0)throw new Error("Invalid string. Length must be a multiple of 4");o=e[c-2]==="="?2:e[c-1]==="="?1:0,i=new XH(c*3/4-o),r=o>0?c-4:c;var u=0;for(t=0,n=0;t<r;t+=4,n+=3)a=Yn[e.charCodeAt(t)]<<18|Yn[e.charCodeAt(t+1)]<<12|Yn[e.charCodeAt(t+2)]<<6|Yn[e.charCodeAt(t+3)],i[u++]=a>>16&255,i[u++]=a>>8&255,i[u++]=a&255;return o===2?(a=Yn[e.charCodeAt(t)]<<2|Yn[e.charCodeAt(t+1)]>>4,i[u++]=a&255):o===1&&(a=Yn[e.charCodeAt(t)]<<10|Yn[e.charCodeAt(t+1)]<<4|Yn[e.charCodeAt(t+2)]>>2,i[u++]=a>>8&255,i[u++]=a&255),i}function QH(e){return Nr[e>>18&63]+Nr[e>>12&63]+Nr[e>>6&63]+Nr[e&63]}function eW(e,t,n){for(var r,a=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],a.push(QH(r));return a.join("")}function wF(e){Yh||EF();for(var t,n=e.length,r=n%3,a="",o=[],i=16383,c=0,u=n-r;c<u;c+= +i)o.push(eW(e,c,c+i>u?u:c+i));return r===1?(t=e[n-1],a+=Nr[t>>2],a+=Nr[t<<4&63],a+="=="):r===2&&(t=(e[n-2]<<8)+e[n-1],a+=Nr[t>>10],a+=Nr[t>>4&63],a+=Nr[t<<2&63],a+="="),o.push(a),o.join("")}function Im(e,t,n,r,a){var o,i,c=a*8-r-1,u=(1<<c)-1,l=u>>1,m=-7,p=n?a-1:0,f=n?-1:1,h=e[t+p];for(p+=f,o=h&(1<<-m)-1,h>>=-m,m+=c;m>0;o=o*256+e[t+p],p+=f,m-=8);for(i=o&(1<<-m)-1,o>>=-m,m+=r;m>0;i=i*256+e[t+p],p+=f,m-=8);if(o===0)o=1-l;else{if(o===u)return i?NaN:(h?-1:1)*(1/0);i=i+Math.pow(2,r),o=o-l}return(h?-1:1)*i*Math.pow(2,o-r)}function TF(e,t,n,r,a,o){var i,c,u,l=o*8-a-1,m=(1<<l)-1,p=m>>1,f=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,y=r?1:-1,v=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,i=m):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),i+p>=1?t+=f/u:t+=f*Math.pow(2,1-p),t*u>=2&&(i++,u/=2),i+p>=m?(c=0,i=m):i+p>=1?(c=(t*u-1)*Math.pow(2,a),i=i+p):(c=t*Math.pow(2,p-1)*Math.pow(2,a),i=0));a>=8;e[n+h]=c&255,h+=y,c/=256,a-=8);for(i=i<<a|c,l+= +a;l>0;e[n+h]=i&255,h+=y,i/=256,l-=8);e[n+h-y]|=v*128}function Fm(){return z.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function ca(e,t){if(Fm()<t)throw new RangeError("Invalid typed array length");return z.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t),e.__proto__=z.prototype):(e===null&&(e=new z(t)),e.length=t),e}function z(e,t,n){if(!z.TYPED_ARRAY_SUPPORT&&!(this instanceof z))return new z(e,t,n);if(typeof e=="number"){if(typeof t=="string")throw new Error("If encoding is specified then the first argument must be a string");return Kh(this,e)}return CF(this,e,t,n)}function CF(e,t,n,r){if(typeof t=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer?oW(e,t,n,r):typeof t=="string"?aW(e,t,n):iW(e,t)}function kF(e){if(typeof e!="number")throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function rW(e,t,n,r){return kF(t),t<=0?ca(e,t):n!==void 0?typeof r== +"string"?ca(e,t).fill(n,r):ca(e,t).fill(n):ca(e,t)}function Kh(e,t){if(kF(t),e=ca(e,t<0?0:Jh(t)|0),!z.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function aW(e,t,n){if((typeof n!="string"||n==="")&&(n="utf8"),!z.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=FF(t,n)|0;e=ca(e,r);var a=e.write(t,n);return a!==r&&(e=e.slice(0,a)),e}function $h(e,t){var n=t.length<0?0:Jh(t.length)|0;e=ca(e,n);for(var r=0;r<n;r+=1)e[r]=t[r]&255;return e}function oW(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return n===void 0&&r===void 0?t=new Uint8Array(t):r===void 0?t=new Uint8Array(t,n):t=new Uint8Array(t,n,r),z.TYPED_ARRAY_SUPPORT?(e=t,e.__proto__=z.prototype):e=$h(e,t),e}function iW(e,t){if(Or(t)){var n=Jh(t.length)|0;return e=ca(e,n),e.length===0||t.copy(e,0,0,n),e}if(t){if(typeof ArrayBuffer<"u"&&t.buffer instanceof ArrayBuffer|| +"length"in t)return typeof t.length!="number"||SW(t.length)?ca(e,0):$h(e,t);if(t.type==="Buffer"&&SF(t.data))return $h(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Jh(e){if(e>=Fm())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Fm().toString(16)+" bytes");return e|0}function Or(e){return!!(e!=null&&e._isBuffer)}function FF(e,t){if(Or(e))return e.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var n=e.length;if(n===0)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return Rm(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return n*2;case"hex":return n>>>1;case"base64":return OF(e).length;default:if(r)return Rm(e).length;t=(""+t).toLowerCase(),r=!0}}function sW(e,t,n){var r=!1; +if((t===void 0||t<0)&&(t=0),t>this.length||((n===void 0||n>this.length)&&(n=this.length),n<=0)||(n>>>=0,t>>>=0,n<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return yW(this,t,n);case"utf8":case"utf-8":return AF(this,t,n);case"ascii":return hW(this,t,n);case"latin1":case"binary":return gW(this,t,n);case"base64":return pW(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return vW(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Ko(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function RF(e,t,n,r,a){if(e.length===0)return-1;if(typeof n=="string"?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0)if(a)n=0;else return-1;if(typeof t=="string"&&(t=z.from(t,r)),Or(t))return t.length===0?-1:DF(e,t,n,r,a);if(typeof t=="number")return t=t&255,z.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"? +a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):DF(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function DF(e,t,n,r,a){var o=1,i=e.length,c=t.length;if(r!==void 0&&(r=String(r).toLowerCase(),r==="ucs2"||r==="ucs-2"||r==="utf16le"||r==="utf-16le")){if(e.length<2||t.length<2)return-1;o=2,i/=2,c/=2,n/=2}function u(h,y){return o===1?h[y]:h.readUInt16BE(y*o)}s(u,"read");var l;if(a){var m=-1;for(l=n;l<i;l++)if(u(e,l)===u(t,m===-1?0:l-m)){if(m===-1&&(m=l),l-m+1===c)return m*o}else m!==-1&&(l-=l-m),m=-1}else for(n+c>i&&(n=i-c),l=n;l>=0;l--){for(var p=!0,f=0;f<c;f++)if(u(e,l+f)!==u(t,f)){p=!1;break}if(p)return l}return-1}function cW(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r),r>a&&(r=a)):r=a;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var i=0;i<r;++i){var c=parseInt(t.substr(i*2,2),16);if(isNaN(c))return i;e[n+i]=c}return i}function uW(e,t,n,r){return Mm(Rm(t,e.length-n),e, +n,r)}function IF(e,t,n,r){return Mm(EW(t),e,n,r)}function lW(e,t,n,r){return IF(e,t,n,r)}function dW(e,t,n,r){return Mm(OF(t),e,n,r)}function mW(e,t,n,r){return Mm(TW(t,e.length-n),e,n,r)}function pW(e,t,n){return t===0&&n===e.length?wF(e):wF(e.slice(t,n))}function AF(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var o=e[a],i=null,c=o>239?4:o>223?3:o>191?2:1;if(a+c<=n){var u,l,m,p;switch(c){case 1:o<128&&(i=o);break;case 2:u=e[a+1],(u&192)===128&&(p=(o&31)<<6|u&63,p>127&&(i=p));break;case 3:u=e[a+1],l=e[a+2],(u&192)===128&&(l&192)===128&&(p=(o&15)<<12|(u&63)<<6|l&63,p>2047&&(p<55296||p>57343)&&(i=p));break;case 4:u=e[a+1],l=e[a+2],m=e[a+3],(u&192)===128&&(l&192)===128&&(m&192)===128&&(p=(o&15)<<18|(u&63)<<12|(l&63)<<6|m&63,p>65535&&p<1114112&&(i=p))}}i===null?(i=65533,c=1):i>65535&&(i-=65536,r.push(i>>>10&1023|55296),i=56320|i&1023),r.push(i),a+=c}return fW(r)}function fW(e){var t=e.length;if(t<=xF)return String.fromCharCode.apply(String,e);for(var n="",r=0;r<t;)n+=String.fromCharCode. +apply(String,e.slice(r,r+=xF));return n}function hW(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]&127);return r}function gW(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function yW(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",o=t;o<n;++o)a+=xW(e[o]);return a}function vW(e,t,n){for(var r=e.slice(t,n),a="",o=0;o<r.length;o+=2)a+=String.fromCharCode(r[o]+r[o+1]*256);return a}function Jt(e,t,n){if(e%1!==0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function _n(e,t,n,r,a,o){if(!Or(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<o)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function Am(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,o=Math.min(e.length-n,2);a<o;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>(r?a:1-a)* +8}function _m(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,o=Math.min(e.length-n,4);a<o;++a)e[n+a]=t>>>(r?a:3-a)*8&255}function _F(e,t,n,r,a,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function MF(e,t,n,r,a){return a||_F(e,t,n,4),TF(e,t,n,r,23,4),n+4}function NF(e,t,n,r,a){return a||_F(e,t,n,8),TF(e,t,n,r,52,8),n+8}function wW(e){if(e=DW(e).replace(bW,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function DW(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function xW(e){return e<16?"0"+e.toString(16):e.toString(16)}function Rm(e,t){t=t||1/0;for(var n,r=e.length,a=null,o=[],i=0;i<r;++i){if(n=e.charCodeAt(i),n>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}else if(i+1===r){(t-=3)>-1&&o.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),a=n;continue}n=(a-55296<<10|n-56320)+65536}else a&&(t-=3)>-1&&o.push(239,191,189);if(a=null,n<128){if((t-=1)< +0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,n&63|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,n&63|128)}else if(n<1114112){if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,n&63|128)}else throw new Error("Invalid code point")}return o}function EW(e){for(var t=[],n=0;n<e.length;++n)t.push(e.charCodeAt(n)&255);return t}function TW(e,t){for(var n,r,a,o=[],i=0;i<e.length&&!((t-=2)<0);++i)n=e.charCodeAt(i),r=n>>8,a=n%256,o.push(a),o.push(r);return o}function OF(e){return ZH(wW(e))}function Mm(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function SW(e){return e!==e}function CW(e){return e!=null&&(!!e._isBuffer||LF(e)||kW(e))}function LF(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function kW(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&LF(e.slice(0,0))}var Nr,Yn,XH,Yh,tW,SF,nW,oge,xF,bW,Xi=g(()=>{d();Nr=[],Yn=[],XH=typeof Uint8Array< +"u"?Uint8Array:Array,Yh=!1;s(EF,"init");s(ZH,"toByteArray");s(QH,"tripletToBase64");s(eW,"encodeChunk");s(wF,"fromByteArray");s(Im,"read");s(TF,"write");tW={}.toString,SF=Array.isArray||function(e){return tW.call(e)=="[object Array]"};nW=50;z.TYPED_ARRAY_SUPPORT=globalThis.TYPED_ARRAY_SUPPORT!==void 0?globalThis.TYPED_ARRAY_SUPPORT:!0;oge=Fm();s(Fm,"kMaxLength");s(ca,"createBuffer");s(z,"Buffer");z.poolSize=8192;z._augment=function(e){return e.__proto__=z.prototype,e};s(CF,"from");z.from=function(e,t,n){return CF(null,e,t,n)};z.TYPED_ARRAY_SUPPORT&&(z.prototype.__proto__=Uint8Array.prototype,z.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&z[Symbol.species]);s(kF,"assertSize");s(rW,"alloc");z.alloc=function(e,t,n){return rW(null,e,t,n)};s(Kh,"allocUnsafe");z.allocUnsafe=function(e){return Kh(null,e)};z.allocUnsafeSlow=function(e){return Kh(null,e)};s(aW,"fromString");s($h,"fromArrayLike");s(oW,"fromArrayBuffer");s(iW,"fromObject");s(Jh,"checked");z.isBuffer=CW;s(Or,"internalIs\ +Buffer");z.compare=s(function(t,n){if(!Or(t)||!Or(n))throw new TypeError("Arguments must be Buffers");if(t===n)return 0;for(var r=t.length,a=n.length,o=0,i=Math.min(r,a);o<i;++o)if(t[o]!==n[o]){r=t[o],a=n[o];break}return r<a?-1:a<r?1:0},"compare");z.isEncoding=s(function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},"isEncoding");z.concat=s(function(t,n){if(!SF(t))throw new TypeError('"list" argument must be an Array of Buffers');if(t.length===0)return z.alloc(0);var r;if(n===void 0)for(n=0,r=0;r<t.length;++r)n+=t[r].length;var a=z.allocUnsafe(n),o=0;for(r=0;r<t.length;++r){var i=t[r];if(!Or(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(a,o),o+=i.length}return a},"concat");s(FF,"byteLength");z.byteLength=FF;s(sW,"slowToString");z.prototype._isBuffer=!0;s(Ko,"swap");z.prototype.swap16=s(function(){var t=this. +length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var n=0;n<t;n+=2)Ko(this,n,n+1);return this},"swap16");z.prototype.swap32=s(function(){var t=this.length;if(t%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var n=0;n<t;n+=4)Ko(this,n,n+3),Ko(this,n+1,n+2);return this},"swap32");z.prototype.swap64=s(function(){var t=this.length;if(t%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var n=0;n<t;n+=8)Ko(this,n,n+7),Ko(this,n+1,n+6),Ko(this,n+2,n+5),Ko(this,n+3,n+4);return this},"swap64");z.prototype.toString=s(function(){var t=this.length|0;return t===0?"":arguments.length===0?AF(this,0,t):sW.apply(this,arguments)},"toString");z.prototype.equals=s(function(t){if(!Or(t))throw new TypeError("Argument must be a Buffer");return this===t?!0:z.compare(this,t)===0},"equals");z.prototype.inspect=s(function(){var t="",n=nW;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length> +n&&(t+=" ... ")),"<Buffer "+t+">"},"inspect");z.prototype.compare=s(function(t,n,r,a,o){if(!Or(t))throw new TypeError("Argument must be a Buffer");if(n===void 0&&(n=0),r===void 0&&(r=t?t.length:0),a===void 0&&(a=0),o===void 0&&(o=this.length),n<0||r>t.length||a<0||o>this.length)throw new RangeError("out of range index");if(a>=o&&n>=r)return 0;if(a>=o)return-1;if(n>=r)return 1;if(n>>>=0,r>>>=0,a>>>=0,o>>>=0,this===t)return 0;for(var i=o-a,c=r-n,u=Math.min(i,c),l=this.slice(a,o),m=t.slice(n,r),p=0;p<u;++p)if(l[p]!==m[p]){i=l[p],c=m[p];break}return i<c?-1:c<i?1:0},"compare");s(RF,"bidirectionalIndexOf");s(DF,"arrayIndexOf");z.prototype.includes=s(function(t,n,r){return this.indexOf(t,n,r)!==-1},"includes");z.prototype.indexOf=s(function(t,n,r){return RF(this,t,n,r,!0)},"indexOf");z.prototype.lastIndexOf=s(function(t,n,r){return RF(this,t,n,r,!1)},"lastIndexOf");s(cW,"hexWrite");s(uW,"utf8Write");s(IF,"asciiWrite");s(lW,"latin1Write");s(dW,"base64Write");s(mW,"ucs2Write");z.prototype.write= +s(function(t,n,r,a){if(n===void 0)a="utf8",r=this.length,n=0;else if(r===void 0&&typeof n=="string")a=n,r=this.length,n=0;else if(isFinite(n))n=n|0,isFinite(r)?(r=r|0,a===void 0&&(a="utf8")):(a=r,r=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var o=this.length-n;if((r===void 0||r>o)&&(r=o),t.length>0&&(r<0||n<0)||n>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i=!1;;)switch(a){case"hex":return cW(this,t,n,r);case"utf8":case"utf-8":return uW(this,t,n,r);case"ascii":return IF(this,t,n,r);case"latin1":case"binary":return lW(this,t,n,r);case"base64":return dW(this,t,n,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return mW(this,t,n,r);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},"write");z.prototype.toJSON=s(function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},"toJSON");s(pW,"base64Slice");s(AF,"utf8\ +Slice");xF=4096;s(fW,"decodeCodePointsArray");s(hW,"asciiSlice");s(gW,"latin1Slice");s(yW,"hexSlice");s(vW,"utf16leSlice");z.prototype.slice=s(function(t,n){var r=this.length;t=~~t,n=n===void 0?r:~~n,t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),n<0?(n+=r,n<0&&(n=0)):n>r&&(n=r),n<t&&(n=t);var a;if(z.TYPED_ARRAY_SUPPORT)a=this.subarray(t,n),a.__proto__=z.prototype;else{var o=n-t;a=new z(o,void 0);for(var i=0;i<o;++i)a[i]=this[i+t]}return a},"slice");s(Jt,"checkOffset");z.prototype.readUIntLE=s(function(t,n,r){t=t|0,n=n|0,r||Jt(t,n,this.length);for(var a=this[t],o=1,i=0;++i<n&&(o*=256);)a+=this[t+i]*o;return a},"readUIntLE");z.prototype.readUIntBE=s(function(t,n,r){t=t|0,n=n|0,r||Jt(t,n,this.length);for(var a=this[t+--n],o=1;n>0&&(o*=256);)a+=this[t+--n]*o;return a},"readUIntBE");z.prototype.readUInt8=s(function(t,n){return n||Jt(t,1,this.length),this[t]},"readUInt8");z.prototype.readUInt16LE=s(function(t,n){return n||Jt(t,2,this.length),this[t]|this[t+1]<<8},"readUInt16LE");z.prototype.readUInt16BE= +s(function(t,n){return n||Jt(t,2,this.length),this[t]<<8|this[t+1]},"readUInt16BE");z.prototype.readUInt32LE=s(function(t,n){return n||Jt(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216},"readUInt32LE");z.prototype.readUInt32BE=s(function(t,n){return n||Jt(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])},"readUInt32BE");z.prototype.readIntLE=s(function(t,n,r){t=t|0,n=n|0,r||Jt(t,n,this.length);for(var a=this[t],o=1,i=0;++i<n&&(o*=256);)a+=this[t+i]*o;return o*=128,a>=o&&(a-=Math.pow(2,8*n)),a},"readIntLE");z.prototype.readIntBE=s(function(t,n,r){t=t|0,n=n|0,r||Jt(t,n,this.length);for(var a=n,o=1,i=this[t+--a];a>0&&(o*=256);)i+=this[t+--a]*o;return o*=128,i>=o&&(i-=Math.pow(2,8*n)),i},"readIntBE");z.prototype.readInt8=s(function(t,n){return n||Jt(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]},"readInt8");z.prototype.readInt16LE=s(function(t,n){n||Jt(t,2,this.length);var r=this[t]|this[t+1]<<8;return r&32768?r|4294901760:r},"rea\ +dInt16LE");z.prototype.readInt16BE=s(function(t,n){n||Jt(t,2,this.length);var r=this[t+1]|this[t]<<8;return r&32768?r|4294901760:r},"readInt16BE");z.prototype.readInt32LE=s(function(t,n){return n||Jt(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},"readInt32LE");z.prototype.readInt32BE=s(function(t,n){return n||Jt(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},"readInt32BE");z.prototype.readFloatLE=s(function(t,n){return n||Jt(t,4,this.length),Im(this,t,!0,23,4)},"readFloatLE");z.prototype.readFloatBE=s(function(t,n){return n||Jt(t,4,this.length),Im(this,t,!1,23,4)},"readFloatBE");z.prototype.readDoubleLE=s(function(t,n){return n||Jt(t,8,this.length),Im(this,t,!0,52,8)},"readDoubleLE");z.prototype.readDoubleBE=s(function(t,n){return n||Jt(t,8,this.length),Im(this,t,!1,52,8)},"readDoubleBE");s(_n,"checkInt");z.prototype.writeUIntLE=s(function(t,n,r,a){if(t=+t,n=n|0,r=r|0,!a){var o=Math.pow(2,8*r)-1;_n(this,t,n,r,o,0)}var i=1,c=0;for(this[n]=t&255;++c< +r&&(i*=256);)this[n+c]=t/i&255;return n+r},"writeUIntLE");z.prototype.writeUIntBE=s(function(t,n,r,a){if(t=+t,n=n|0,r=r|0,!a){var o=Math.pow(2,8*r)-1;_n(this,t,n,r,o,0)}var i=r-1,c=1;for(this[n+i]=t&255;--i>=0&&(c*=256);)this[n+i]=t/c&255;return n+r},"writeUIntBE");z.prototype.writeUInt8=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,1,255,0),z.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[n]=t&255,n+1},"writeUInt8");s(Am,"objectWriteUInt16");z.prototype.writeUInt16LE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,2,65535,0),z.TYPED_ARRAY_SUPPORT?(this[n]=t&255,this[n+1]=t>>>8):Am(this,t,n,!0),n+2},"writeUInt16LE");z.prototype.writeUInt16BE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,2,65535,0),z.TYPED_ARRAY_SUPPORT?(this[n]=t>>>8,this[n+1]=t&255):Am(this,t,n,!1),n+2},"writeUInt16BE");s(_m,"objectWriteUInt32");z.prototype.writeUInt32LE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,4,4294967295,0),z.TYPED_ARRAY_SUPPORT?(this[n+3]=t>>>24,this[n+2]=t>>>16,this[n+1]=t>>>8, +this[n]=t&255):_m(this,t,n,!0),n+4},"writeUInt32LE");z.prototype.writeUInt32BE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,4,4294967295,0),z.TYPED_ARRAY_SUPPORT?(this[n]=t>>>24,this[n+1]=t>>>16,this[n+2]=t>>>8,this[n+3]=t&255):_m(this,t,n,!1),n+4},"writeUInt32BE");z.prototype.writeIntLE=s(function(t,n,r,a){if(t=+t,n=n|0,!a){var o=Math.pow(2,8*r-1);_n(this,t,n,r,o-1,-o)}var i=0,c=1,u=0;for(this[n]=t&255;++i<r&&(c*=256);)t<0&&u===0&&this[n+i-1]!==0&&(u=1),this[n+i]=(t/c>>0)-u&255;return n+r},"writeIntLE");z.prototype.writeIntBE=s(function(t,n,r,a){if(t=+t,n=n|0,!a){var o=Math.pow(2,8*r-1);_n(this,t,n,r,o-1,-o)}var i=r-1,c=1,u=0;for(this[n+i]=t&255;--i>=0&&(c*=256);)t<0&&u===0&&this[n+i+1]!==0&&(u=1),this[n+i]=(t/c>>0)-u&255;return n+r},"writeIntBE");z.prototype.writeInt8=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,1,127,-128),z.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[n]=t&255,n+1},"writeInt8");z.prototype.writeInt16LE=s(function(t,n,r){return t=+t,n=n|0, +r||_n(this,t,n,2,32767,-32768),z.TYPED_ARRAY_SUPPORT?(this[n]=t&255,this[n+1]=t>>>8):Am(this,t,n,!0),n+2},"writeInt16LE");z.prototype.writeInt16BE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,2,32767,-32768),z.TYPED_ARRAY_SUPPORT?(this[n]=t>>>8,this[n+1]=t&255):Am(this,t,n,!1),n+2},"writeInt16BE");z.prototype.writeInt32LE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,4,2147483647,-2147483648),z.TYPED_ARRAY_SUPPORT?(this[n]=t&255,this[n+1]=t>>>8,this[n+2]=t>>>16,this[n+3]=t>>>24):_m(this,t,n,!0),n+4},"writeInt32LE");z.prototype.writeInt32BE=s(function(t,n,r){return t=+t,n=n|0,r||_n(this,t,n,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),z.TYPED_ARRAY_SUPPORT?(this[n]=t>>>24,this[n+1]=t>>>16,this[n+2]=t>>>8,this[n+3]=t&255):_m(this,t,n,!1),n+4},"writeInt32BE");s(_F,"checkIEEE754");s(MF,"writeFloat");z.prototype.writeFloatLE=s(function(t,n,r){return MF(this,t,n,!0,r)},"writeFloatLE");z.prototype.writeFloatBE=s(function(t,n,r){return MF(this,t,n,!1,r)},"writeFloatBE");s(NF,"w\ +riteDouble");z.prototype.writeDoubleLE=s(function(t,n,r){return NF(this,t,n,!0,r)},"writeDoubleLE");z.prototype.writeDoubleBE=s(function(t,n,r){return NF(this,t,n,!1,r)},"writeDoubleBE");z.prototype.copy=s(function(t,n,r,a){if(r||(r=0),!a&&a!==0&&(a=this.length),n>=t.length&&(n=t.length),n||(n=0),a>0&&a<r&&(a=r),a===r||t.length===0||this.length===0)return 0;if(n<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),t.length-n<a-r&&(a=t.length-n+r);var o=a-r,i;if(this===t&&r<n&&n<a)for(i=o-1;i>=0;--i)t[i+n]=this[i+r];else if(o<1e3||!z.TYPED_ARRAY_SUPPORT)for(i=0;i<o;++i)t[i+n]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+o),n);return o},"copy");z.prototype.fill=s(function(t,n,r,a){if(typeof t=="string"){if(typeof n=="string"?(a=n,n=0,r=this.length):typeof r=="string"&&(a=r,r=this.length),t.length===1){var o=t.charCodeAt( +0);o<256&&(t=o)}if(a!==void 0&&typeof a!="string")throw new TypeError("encoding must be a string");if(typeof a=="string"&&!z.isEncoding(a))throw new TypeError("Unknown encoding: "+a)}else typeof t=="number"&&(t=t&255);if(n<0||this.length<n||this.length<r)throw new RangeError("Out of range index");if(r<=n)return this;n=n>>>0,r=r===void 0?this.length:r>>>0,t||(t=0);var i;if(typeof t=="number")for(i=n;i<r;++i)this[i]=t;else{var c=Or(t)?t:Rm(new z(t,a).toString()),u=c.length;for(i=0;i<r-n;++i)this[i+n]=c[i%u]}return this},"fill");bW=/[^+\/0-9A-Za-z-_]/g;s(wW,"base64clean");s(DW,"stringtrim");s(xW,"toHex");s(Rm,"utf8ToBytes");s(EW,"asciiToBytes");s(TW,"utf16leToBytes");s(OF,"base64ToBytes");s(Mm,"blitBuffer");s(SW,"isnan");s(CW,"isBuffer");s(LF,"isFastBuffer");s(kW,"isSlowBuffer")});function Wa(){}function We(){We.init.call(this)}function PF(e){return e._maxListeners===void 0?We.defaultMaxListeners:e._maxListeners}function FW(e,t,n){if(t)e.call(n);else for(var r=e.length,a=$c(e,r),o=0;o<r;++o)a[o].call(n)}function RW(e,t,n,r){if(t)e.call(n,r);else for(var a=e.length,o=$c(e,a),i=0;i<a;++i)o[i].call(n,r)}function IW(e,t,n,r,a){if(t)e.call(n,r,a);else for(var o=e.length,i=$c(e,o),c=0;c<o;++c)i[c].call(n,r,a)}function AW(e,t,n,r,a,o){if(t)e.call(n,r,a,o);else for(var i=e.length,c=$c(e,i),u=0;u<i;++u)c[u].call(n,r,a,o)}function _W(e,t,n,r){if(t)e.apply(n,r);else for(var a=e.length,o=$c(e,a),i=0;i<a;++i)o[i].apply(n,r)}function BF(e,t,n,r){var a,o,i;if(typeof n!="function")throw new TypeError('"listener" argument must be a function');if(o=e._events,o?(o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),i=o[t]):(o=e._events=new Wa,e._eventsCount=0),!i)i=o[t]=n,++e._eventsCount;else if(typeof i=="function"?i=o[t]=r?[n,i]:[i,n]:r?i.unshift(n):i.push( +n),!i.warned&&(a=PF(e),a&&a>0&&i.length>a)){i.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=i.length,MW(c)}return e}function MW(e){typeof console.warn=="function"?console.warn(e):console.log(e)}function UF(e,t,n){var r=!1;function a(){e.removeListener(t,a),r||(r=!0,n.apply(e,arguments))}return s(a,"g"),a.listener=n,a}function jF(e){var t=this._events;if(t){var n=t[e];if(typeof n=="function")return 1;if(n)return n.length}return 0}function NW(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}function $c(e,t){for(var n=new Array(t);t--;)n[t]=e[t];return n}function OW(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}var Xh,Kn,ua=g(()=>{"use strict";d();s(Wa,"EventHandlers");Wa.prototype=Object.create(null);s(We,"EventEmitter");Kn=We;We.EventEmitter=We;We.usingDomains= +!1;We.prototype.domain=void 0;We.prototype._events=void 0;We.prototype._maxListeners=void 0;We.defaultMaxListeners=10;We.init=function(){this.domain=null,We.usingDomains&&Xh.active&&!(this instanceof Xh.Domain)&&(this.domain=Xh.active),(!this._events||this._events===Object.getPrototypeOf(this)._events)&&(this._events=new Wa,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};We.prototype.setMaxListeners=s(function(t){if(typeof t!="number"||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this},"setMaxListeners");s(PF,"$getMaxListeners");We.prototype.getMaxListeners=s(function(){return PF(this)},"getMaxListeners");s(FW,"emitNone");s(RW,"emitOne");s(IW,"emitTwo");s(AW,"emitThree");s(_W,"emitMany");We.prototype.emit=s(function(t){var n,r,a,o,i,c,u,l=!1,m=t==="error";if(c=this._events,c)m=m&&c.error==null;else if(!m)return!1;if(u=this.domain,m){if(n=arguments[1],u)n||(n=new Error('Uncaught, unspecified "error" event')), +n.domainEmitter=this,n.domain=u,n.domainThrown=!1,u.emit("error",n);else{if(n instanceof Error)throw n;var p=new Error('Uncaught, unspecified "error" event. ('+n+")");throw p.context=n,p}return!1}if(r=c[t],!r)return!1;var f=typeof r=="function";switch(a=arguments.length,a){case 1:FW(r,f,this);break;case 2:RW(r,f,this,arguments[1]);break;case 3:IW(r,f,this,arguments[1],arguments[2]);break;case 4:AW(r,f,this,arguments[1],arguments[2],arguments[3]);break;default:for(o=new Array(a-1),i=1;i<a;i++)o[i-1]=arguments[i];_W(r,f,this,o)}return l&&u.exit(),!0},"emit");s(BF,"_addListener");s(MW,"emitWarning");We.prototype.addListener=s(function(t,n){return BF(this,t,n,!1)},"addListener");We.prototype.on=We.prototype.addListener;We.prototype.prependListener=s(function(t,n){return BF(this,t,n,!0)},"prependListener");s(UF,"_onceWrap");We.prototype.once=s(function(t,n){if(typeof n!="function")throw new TypeError('"listener" argument must be a function');return this.on(t,UF(this,t,n)),this},"once");We.prototype. +prependOnceListener=s(function(t,n){if(typeof n!="function")throw new TypeError('"listener" argument must be a function');return this.prependListener(t,UF(this,t,n)),this},"prependOnceListener");We.prototype.removeListener=s(function(t,n){var r,a,o,i,c;if(typeof n!="function")throw new TypeError('"listener" argument must be a function');if(a=this._events,!a)return this;if(r=a[t],!r)return this;if(r===n||r.listener&&r.listener===n)--this._eventsCount===0?this._events=new Wa:(delete a[t],a.removeListener&&this.emit("removeListener",t,r.listener||n));else if(typeof r!="function"){for(o=-1,i=r.length;i-- >0;)if(r[i]===n||r[i].listener&&r[i].listener===n){c=r[i].listener,o=i;break}if(o<0)return this;if(r.length===1){if(r[0]=void 0,--this._eventsCount===0)return this._events=new Wa,this;delete a[t]}else NW(r,o);a.removeListener&&this.emit("removeListener",t,c||n)}return this},"removeListener");We.prototype.off=function(e,t){return this.removeListener(e,t)};We.prototype.removeAllListeners=s(function(t){ +var n,r;if(r=this._events,!r)return this;if(!r.removeListener)return arguments.length===0?(this._events=new Wa,this._eventsCount=0):r[t]&&(--this._eventsCount===0?this._events=new Wa:delete r[t]),this;if(arguments.length===0){for(var a=Object.keys(r),o=0,i;o<a.length;++o)i=a[o],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Wa,this._eventsCount=0,this}if(n=r[t],typeof n=="function")this.removeListener(t,n);else if(n)do this.removeListener(t,n[n.length-1]);while(n[0]);return this},"removeAllListeners");We.prototype.listeners=s(function(t){var n,r,a=this._events;return a?(n=a[t],n?typeof n=="function"?r=[n.listener||n]:r=OW(n):r=[]):r=[],r},"listeners");We.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):jF.call(e,t)};We.prototype.listenerCount=jF;s(jF,"listenerCount");We.prototype.eventNames=s(function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]},"eventNames");s( +NW,"spliceOne");s($c,"arrayClone");s(OW,"unwrapListeners")});var qF=de((mge,zF)=>{d();var Zi=1e3,Qi=Zi*60,es=Qi*60,Jo=es*24,LW=Jo*7,PW=Jo*365.25;zF.exports=function(e,t){t=t||{};var n=typeof e;if(n==="string"&&e.length>0)return BW(e);if(n==="number"&&isFinite(e))return t.long?jW(e):UW(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function BW(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*PW;case"weeks":case"week":case"w":return n*LW;case"days":case"day":case"d":return n*Jo;case"hours":case"hour":case"hrs":case"hr":case"h":return n*es;case"minutes":case"minute":case"mins":case"min":case"m":return n*Qi;case"seconds":case"second":case"secs":case"sec":case"s":return n*Zi;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default: +return}}}}s(BW,"parse");function UW(e){var t=Math.abs(e);return t>=Jo?Math.round(e/Jo)+"d":t>=es?Math.round(e/es)+"h":t>=Qi?Math.round(e/Qi)+"m":t>=Zi?Math.round(e/Zi)+"s":e+"ms"}s(UW,"fmtShort");function jW(e){var t=Math.abs(e);return t>=Jo?Nm(e,t,Jo,"day"):t>=es?Nm(e,t,es,"hour"):t>=Qi?Nm(e,t,Qi,"minute"):t>=Zi?Nm(e,t,Zi,"second"):e+" ms"}s(jW,"fmtLong");function Nm(e,t,n,r){var a=t>=n*1.5;return Math.round(e/n)+" "+r+(a?"s":"")}s(Nm,"plural")});var WF=de((hge,HF)=>{d();function zW(e){n.debug=n,n.default=n,n.coerce=u,n.disable=o,n.enable=a,n.enabled=i,n.humanize=qF(),n.destroy=l,Object.keys(e).forEach(m=>{n[m]=e[m]}),n.names=[],n.skips=[],n.formatters={};function t(m){let p=0;for(let f=0;f<m.length;f++)p=(p<<5)-p+m.charCodeAt(f),p|=0;return n.colors[Math.abs(p)%n.colors.length]}s(t,"selectColor"),n.selectColor=t;function n(m){let p,f=null,h,y;function v(...w){if(!v.enabled)return;let x=v,E=Number(new Date),S=E-(p||E);x.diff=S,x.prev=p,x.curr=E,p=E,w[0]=n.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let k=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(O,N)=>{if(O==="%%")return"%";k++;let H=n.formatters[N];if(typeof H=="function"){let ne=w[k];O=H.call(x,ne),w.splice(k,1),k--}return O}),n.formatArgs.call(x,w),(x.log||n.log).apply(x,w)}return s(v,"debug"),v.namespace=m,v.useColors=n.useColors(),v.color=n.selectColor(m),v.extend=r,v.destroy=n.destroy,Object.defineProperty(v,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(h!== +n.namespaces&&(h=n.namespaces,y=n.enabled(m)),y),set:w=>{f=w}}),typeof n.init=="function"&&n.init(v),v}s(n,"createDebug");function r(m,p){let f=n(this.namespace+(typeof p>"u"?":":p)+m);return f.log=this.log,f}s(r,"extend");function a(m){n.save(m),n.namespaces=m,n.names=[],n.skips=[];let p,f=(typeof m=="string"?m:"").split(/[\s,]+/),h=f.length;for(p=0;p<h;p++)f[p]&&(m=f[p].replace(/\*/g,".*?"),m[0]==="-"?n.skips.push(new RegExp("^"+m.slice(1)+"$")):n.names.push(new RegExp("^"+m+"$")))}s(a,"enable");function o(){let m=[...n.names.map(c),...n.skips.map(c).map(p=>"-"+p)].join(",");return n.enable(""),m}s(o,"disable");function i(m){if(m[m.length-1]==="*")return!0;let p,f;for(p=0,f=n.skips.length;p<f;p++)if(n.skips[p].test(m))return!1;for(p=0,f=n.names.length;p<f;p++)if(n.names[p].test(m))return!0;return!1}s(i,"enabled");function c(m){return m.toString().substring(2,m.toString().length-2).replace(/\.\*\?$/,"*")}s(c,"toNamespace");function u(m){return m instanceof Error?m.stack||m.message:m}s( +u,"coerce");function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return s(l,"destroy"),n.enable(n.load()),n}s(zW,"setup");HF.exports=zW});var GF=de((jn,Om)=>{d();jn.formatArgs=HW;jn.save=WW;jn.load=GW;jn.useColors=qW;jn.storage=VW();jn.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();jn.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#\ +FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function qW(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}s(qW,"useColors");function HW(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Om.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice( +1,0,t,"color: inherit");let n=0,r=0;e[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(n++,a==="%c"&&(r=n))}),e.splice(r,0,t)}s(HW,"formatArgs");jn.log=console.debug||console.log||(()=>{});function WW(e){try{e?jn.storage.setItem("debug",e):jn.storage.removeItem("debug")}catch{}}s(WW,"save");function GW(){let e;try{e=jn.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}s(GW,"load");function VW(){try{return localStorage}catch{}}s(VW,"localstorage");Om.exports=WF()(jn);var{formatters:$W}=Om.exports;$W.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});function Lm(e){if(!e)throw new Error("name must be non-empty")}function YW(e,t){for(var n=0,r=e.length,a;n<r;)a=n+r>>>1,e[a].startTime<t.startTime?n=a+1:r=a;e.splice(n,0,t)}var Tn,VF,Um,jm,Yc,zm,Pm,Bm,$F=g(()=>{d();Tn=typeof performance<"u"&&performance,VF=Tn&&Tn.now?function(){return Tn.now()}:function(){return Date.now()};s(Lm,"throwIfEmpty");s(YW,"insertSorted");Tn&&Tn.mark&&Tn.getEntriesByName&&Tn.getEntriesByType&&Tn.clearMeasures?(Um=s(function(e){Lm(e),Tn.mark("start "+e)},"mark"),jm=s(function(e){Lm(e),Tn.mark("end "+e),Tn.measure(e,"start "+e,"end "+e);var t=Tn.getEntriesByName(e);return t[t.length-1]},"stop"),Yc=s(function(){return Tn.getEntriesByType("measure")},"getEntries"),zm=s(function(){Tn.clearMarks(),Tn.clearMeasures()},"clear")):(Pm={},Bm=[],Um=s(function(e){Lm(e);var t=VF();Pm["$"+e]=t},"mark"),jm=s(function(e){Lm(e);var t=VF(),n=Pm["$"+e];if(!n)throw new Error("no known mark: "+e);var r={startTime:n,name:e,duration:t-n,entryType:"measure"};return YW(Bm,r),r},"stop"), +Yc=s(function(){return Bm},"getEntries"),zm=s(function(){Pm={},Bm=[]},"clear"))});var Va,Ga,ts,ns,Zh,YF,JW,KF,rs,M,Oe=g(()=>{d();Ha();ua();Va=mn(GF());$F();Ga=fn.platform==="win32",ts=fn.browser,ns={red:ts?"crimson":1,yellow:ts?"gold":3,cyan:ts?"darkturquoise":6,green:ts?"forestgreen":2,blue:ts?"steelblue":4,magenta:ts?"palevioletred":5};Va.default.colors=[ns.cyan,ns.green,ns.blue,ns.magenta];Zh=class extends We{static{s(this,"Emitter")}issueStatus(t,n){(t==="status"||t==="statusEnd")&&this.emit(t,[t,...n])}issueWarning(t,n){this.emit("warning",[t,...n])}},YF={},JW=25,rs=class e{static{s(this,"Log")}static _logToStdErr(t,n){e.loggerfn(t)(...n)}static loggerfn(t){t=`LH:${t}`;let n=YF[t];return n||(n=(0,Va.default)(t),YF[t]=n,t.endsWith("error")?n.color=ns.red:t.endsWith("warn")&&(n.color=ns.yellow)),n}static setLevel(t){switch(KF=t,t){case"silent":Va.default.enable("-LH:*");break;case"verbose":Va.default.enable("LH:*");break;case"warn":Va.default.enable("-LH:*, LH:*:warn, LH:*:error");break;case"error":Va.default.enable("-LH:*, LH:*:error");break;default:Va.default.enable( +"LH:*, -LH:*:verbose")}}static formatProtocol(t,n,r){let a=!fn||fn.browser?1/0:fn.stdout.columns,o=n.method||"?????",i=a-o.length-t.length-JW,c=n.params&&o!=="IO.read"?JSON.stringify(n.params).substr(0,i):"";e._logToStdErr(`${t}:${r||""}`,[o,c])}static isVerbose(){return KF==="verbose"}static time({msg:t,id:n,args:r=[]},a="log"){Um(n),e[a]("status",t,...r)}static timeEnd({msg:t,id:n,args:r=[]},a="verbose"){e[a]("statusEnd",t,...r),jm(n)}static log(t,...n){return e.events.issueStatus(t,n),e._logToStdErr(t,n)}static warn(t,...n){return e.events.issueWarning(t,n),e._logToStdErr(`${t}:warn`,n)}static error(t,...n){return e._logToStdErr(`${t}:error`,n)}static verbose(t,...n){return e.events.issueStatus(t,n),e._logToStdErr(`${t}:verbose`,n)}static greenify(t){return`${e.green}${t}${e.reset}`}static redify(t){return`${e.red}${t}${e.reset}`}static get green(){return"\x1B[32m"}static get red(){return"\x1B[31m"}static get yellow(){return"\x1B[33m"}static get purple(){return"\x1B[95m"}static get reset(){ +return"\x1B[0m"}static get bold(){return"\x1B[1m"}static get dim(){return"\x1B[2m"}static get tick(){return Ga?"√":"✓"}static get cross(){return Ga?"×":"✘"}static get whiteSmallSquare(){return Ga?"·":"▫"}static get heavyHorizontal(){return Ga?"─":"━"}static get heavyVertical(){return Ga?"│ ":"┃ "}static get heavyUpAndRight(){return Ga?"└":"┗"}static get heavyVerticalAndRight(){return Ga?"├":"┣"}static get heavyDownAndHorizontal(){return Ga?"┬":"┳"}static get doubleLightHorizontal(){return"──"}};rs.events=new Zh;rs.takeTimeEntries=()=>{let e=Yc();return zm(),e};rs.getTimeEntries=()=>Yc();M=rs});var hn=g(()=>{"use strict";d();});var Qh,Q,Ke=g(()=>{"use strict";d();hn();Qh=class{static{s(this,"BaseGatherer")}meta={supportedModes:[]};startInstrumentation(t){}startSensitiveInstrumentation(t){}stopSensitiveInstrumentation(t){}stopInstrumentation(t){}getArtifact(t){}},Q=Qh});var XW,ZW,QW,eG,tG,nG,un,la=g(()=>{"use strict";d();Oe();XW=/^(chrome|https?):/,ZW=16,QW="RunTask",eG="ThreadControllerImpl::RunTask",tG="ThreadControllerImpl::DoWork",nG="TaskQueueManager::ProcessTaskFromWorkQueue",un=class e{static{s(this,"TraceProcessor")}static get TIMESPAN_MARKER_ID(){return"__lighthouseTimespanStart__"}static createNoNavstartError(){return new Error("No navigationStart event found")}static createNoResourceSendRequestError(){return new Error("No ResourceSendRequest event found")}static createNoTracingStartedError(){return new Error("No tracingStartedInBrowser event found")}static createNoFirstContentfulPaintError(){return new Error("No FirstContentfulPaint event found")}static createNoLighthouseMarkerError(){return new Error("No Lighthouse timespan marker event found")}static _isNavigationStartOfInterest(t){return t.name!=="navigationStart"?!1:t.args.data?.documentLoaderURL===void 0?!0:t.args.data?.documentLoaderURL?XW.test(t.args.data.documentLoaderURL):!1}static _sortTimestampEventGroup(t,n,r,a){ +let o=s(p=>n[p],"lookupArrayIndexByTsIndex"),i=s(p=>a[o(p)],"lookupEventByTsIndex"),c=[],u=[],l=[];for(let p of t){let f=o(p),h=i(p);h.ph==="E"?c.push(f):h.ph==="X"||h.ph==="B"?u.push(f):l.push(f)}let m=new Map;for(let p of u){let f=a[p];if(f.ph==="X")m.set(p,f.dur);else{let h=Number.MAX_SAFE_INTEGER,y=0,v=r+t.length;for(let w=v;w<n.length;w++){let x=i(w);if(x.name===f.name&&x.pid===f.pid&&x.tid===f.tid)if(x.ph==="E"&&y===0){h=x.ts-f.ts;break}else x.ph==="E"?y--:x.ph==="B"&&y++}m.set(p,h)}}return u.sort((p,f)=>(m.get(f)||0)-(m.get(p)||0)||p-f),l.sort((p,f)=>p-f),[...c,...u,...l]}static filteredTraceSort(t,n){let r=[];for(let o=0;o<t.length;o++)n(t[o])&&r.push(o);r.sort((o,i)=>t[o].ts-t[i].ts);for(let o=0;o<r.length-1;o++){let i=t[r[o]].ts,c=[o];for(let l=o+1;l<r.length&&t[r[l]].ts===i;l++)c.push(l);if(c.length===1)continue;let u=e._sortTimestampEventGroup(c,r,o,t);r.splice(o,u.length,...u),o+=c.length-1}let a=[];for(let o=0;o<r.length;o++)a.push(t[r[o]]);return a}static assertHasToplevelEvents(t){ +if(!t.some(this.isScheduleableTask))throw new Error("Could not find any top level events")}static _riskPercentiles(t,n,r,a=0){let o=0;for(let f=0;f<t.length;f++)o+=t[f];o-=a;let i=n-o,c=0,u=i,l=[],m=-1,p=t.length+1;a>0&&p--;for(let f of r){let h=f*n;for(;u<h&&m<t.length-1;)i+=c,p-=c<0?-1:1,a>0&&a<t[m+1]?(c=-a,a=0):(m++,c=t[m]),u=i+Math.abs(c)*p;l.push({percentile:f,time:Math.max(0,(h-i)/p)+ZW})}return l}static getRiskToResponsiveness(t,n,r,a=[.5,.75,.9,.99,1]){let o=r-n;a.sort((c,u)=>c-u);let i=this.getMainThreadTopLevelEventDurations(t,n,r);return this._riskPercentiles(i.durations,o,a,i.clippedLength)}static getMainThreadTopLevelEventDurations(t,n=0,r=1/0){let a=[],o=0;for(let i of t){if(i.end<n||i.start>r)continue;let c=i.duration,u=i.start;u<n&&(u=n,c=i.end-n),i.end>r&&(o=c-(r-u)),a.push(c)}return a.sort((i,c)=>i-c),{durations:a,clippedLength:o}}static getMainThreadTopLevelEvents(t,n=0,r=1/0){let a=[],o;for(let i of t.mainThreadEvents){if(!this.isScheduleableTask(i)||!i.dur)continue; +let c=(i.ts-t.timeOriginEvt.ts)/1e3,u=(i.ts+i.dur-t.timeOriginEvt.ts)/1e3;c>r||u<n||(o&&c<o.end&&(o.end=c-.001),o={start:c,end:u,duration:i.dur/1e3},a.push(o))}return a}static findMainFrameIds(t){let n=t.find(i=>i.name==="TracingStartedInBrowser");if(n?.args.data?.frames){let i=n.args.data.frames.find(l=>!l.parent),c=i?.frame,u=i?.processId;if(u&&c)return{startingPid:u,frameId:c}}let r=t.find(i=>i.name==="TracingStartedInPage");if(r?.args?.data){let i=r.args.data.page;if(i)return{startingPid:r.pid,frameId:i}}let a=t.find(i=>this._isNavigationStartOfInterest(i)&&i.args.data?.isLoadingMainFrame),o=t.find(i=>i.name==="ResourceSendRequest");if(a?.args?.data&&o&&o.pid===a.pid&&o.tid===a.tid){let i=a.args.frame;if(i)return{startingPid:a.pid,frameId:i}}throw this.createNoTracingStartedError()}static findMainFramePidTids(t,n){let r=n.filter(i=>(i.name==="FrameCommittedInBrowser"||i.name==="ProcessReadyInBrowser")&&i.args?.data?.frame===t.frameId&&i?.args?.data?.processId),a=r.length?r.map(i=>i?. +args?.data?.processId):[t.startingPid],o=new Map;for(let i of new Set(a)){let c=n.filter(m=>m.cat==="__metadata"&&m.pid===i&&m.ph==="M"&&m.name==="thread_name"),u=c.find(m=>m.args.name==="CrRendererMain");u||(u=c.find(m=>m.args.name==="CrBrowserMain"));let l=u?.tid;if(!l)throw new Error("Unable to determine tid for renderer process");o.set(i,l)}return o}static isScheduleableTask(t){return t.name===QW||t.name===eG||t.name===tG||t.name===nG}static isLCPEvent(t){return t.name!=="largestContentfulPaint::Invalidate"&&t.name!=="largestContentfulPaint::Candidate"?!1:!!t.args?.frame}static isLCPCandidateEvent(t){return!!(t.name==="largestContentfulPaint::Candidate"&&t.args?.frame&&t.args.data&&t.args.data.size!==void 0)}static getFrameId(t){return t.args?.data?.frame||t.args.data?.frameID||t.args.frame}static computeValidLCPAllFrames(t,n){let r=t.filter(this.isLCPEvent).reverse(),a=new Map;for(let i of r){if(i.ts<=n.ts)break;let c=i.args.frame;a.has(c)||a.set(c,i)}let o;for(let i of a.values()) +this.isLCPCandidateEvent(i)&&(!o||i.args.data.size>o.args.data.size)&&(o=i);return{lcp:o,invalidated:!!(!o&&a.size)}}static resolveRootFrames(t){let n=new Map;for(let a of t)a.parent&&n.set(a.id,a.parent);let r=new Map;for(let a of t){let o=a.id;for(;n.has(o);)o=n.get(o);if(o===void 0)throw new Error("Unexpected undefined frameId");r.set(a.id,o)}return r}static processTrace(t,n){let{timeOriginDeterminationMethod:r="auto"}=n||{},a=this.filteredTraceSort(t.traceEvents,k=>k.cat.includes("blink.user_timing")||k.cat.includes("loading")||k.cat.includes("devtools.timeline")||k.cat==="__metadata"),o=this.findMainFrameIds(a),i=this.findMainFramePidTids(o,a),c=e.filteredTraceSort(t.traceEvents,k=>i.has(k.pid)),u=new Map,l=a.find(k=>k.name==="TracingStartedInBrowser")?.args?.data?.frames;if(l)for(let k of l)u.set(k.frame,{id:k.frame,url:k.url,parent:k.parent});a.filter(k=>!!(k.name==="FrameCommittedInBrowser"&&k.args.data?.frame&&k.args.data.url!==void 0)).forEach(k=>{u.set(k.args.data.frame,{id:k. +args.data.frame,url:k.args.data.url,parent:k.args.data.parent})});let m=[...u.values()],p=this.resolveRootFrames(m),f=[...p.entries()].filter(([,k])=>k===o.frameId).map(([k])=>k);function h(k){return e.getFrameId(k)===o.frameId}s(h,"associatedToMainFrame");function y(k){let R=e.getFrameId(k);return R?f.includes(R):!1}s(y,"associatedToAllFrames");let v=a.filter(k=>h(k)),w=[];p.has(o.frameId)?w=a.filter(k=>y(k)):(M.warn("TraceProcessor","frameTreeEvents may be incomplete, make sure the trace has frame events"),p.set(o.frameId,o.frameId),w=v);let x=this.computeTimeOrigin({keyEvents:a,frameEvents:v,mainFrameInfo:o},r),E=c.filter(k=>k.tid===i.get(k.pid)),S=this.computeTraceEnd(t.traceEvents,x);return{frames:m,mainThreadEvents:E,frameEvents:v,frameTreeEvents:w,processEvents:c,mainFrameInfo:o,timeOriginEvt:x,timings:{timeOrigin:0,traceEnd:S.timing},timestamps:{timeOrigin:x.ts,traceEnd:S.timestamp},_keyEvents:a,_rendererPidToTid:i}}static processNavigation(t){let{frameEvents:n,frameTreeEvents:r, +timeOriginEvt:a,timings:o,timestamps:i}=t,c=this.computeNavigationTimingsForFrame(n,{timeOriginEvt:a}),u=r.find(f=>f.name==="firstContentfulPaint"&&f.ts>a.ts);if(!u)throw this.createNoFirstContentfulPaintError();let l=this.computeValidLCPAllFrames(r,a).lcp,m=s(f=>(f-a.ts)/1e3,"getTiming"),p=s(f=>f===void 0?void 0:m(f),"maybeGetTiming");return{timings:{timeOrigin:o.timeOrigin,firstPaint:c.timings.firstPaint,firstContentfulPaint:c.timings.firstContentfulPaint,firstContentfulPaintAllFrames:m(u.ts),largestContentfulPaint:c.timings.largestContentfulPaint,largestContentfulPaintAllFrames:p(l?.ts),load:c.timings.load,domContentLoaded:c.timings.domContentLoaded,traceEnd:o.traceEnd},timestamps:{timeOrigin:i.timeOrigin,firstPaint:c.timestamps.firstPaint,firstContentfulPaint:c.timestamps.firstContentfulPaint,firstContentfulPaintAllFrames:u.ts,largestContentfulPaint:c.timestamps.largestContentfulPaint,largestContentfulPaintAllFrames:l?.ts,load:c.timestamps.load,domContentLoaded:c.timestamps.domContentLoaded, +traceEnd:i.traceEnd},firstPaintEvt:c.firstPaintEvt,firstContentfulPaintEvt:c.firstContentfulPaintEvt,firstContentfulPaintAllFramesEvt:u,largestContentfulPaintEvt:c.largestContentfulPaintEvt,largestContentfulPaintAllFramesEvt:l,loadEvt:c.loadEvt,domContentLoadedEvt:c.domContentLoadedEvt,lcpInvalidated:c.lcpInvalidated}}static computeTraceEnd(t,n){let r=-1/0;for(let a of t)r=Math.max(a.ts+(a.dur||0),r);return{timestamp:r,timing:(r-n.ts)/1e3}}static computeTimeOrigin(t,n){let r=s(()=>t.frameEvents.filter(this._isNavigationStartOfInterest).pop(),"lastNavigationStart"),a=s(()=>t.keyEvents.find(i=>i.name==="clock_sync"&&i.args.sync_id===e.TIMESPAN_MARKER_ID),"lighthouseMarker");switch(n){case"firstResourceSendRequest":{let o=t.keyEvents.find(i=>i.name!=="ResourceSendRequest"?!1:(i.args.data||{}).frame===t.mainFrameInfo.frameId);if(!o)throw this.createNoResourceSendRequestError();return o}case"lastNavigationStart":{let o=r();if(!o)throw this.createNoNavstartError();return o}case"lighthouseMar\ +ker":{let o=a();if(!o)throw this.createNoLighthouseMarkerError();return o}case"auto":{let o=a()||r();if(!o)throw this.createNoNavstartError();return o}}}static computeNavigationTimingsForFrame(t,n){let{timeOriginEvt:r}=n,a=t.find(y=>y.name==="firstPaint"&&y.ts>r.ts),o=t.find(y=>y.name==="firstContentfulPaint"&&y.ts>r.ts);if(!o)throw this.createNoFirstContentfulPaintError();let i=this.computeValidLCPAllFrames(t,r),c=t.find(y=>y.name==="loadEventEnd"&&y.ts>r.ts),u=t.find(y=>y.name==="domContentLoadedEventEnd"&&y.ts>r.ts),l=s(y=>y?.ts,"getTimestamp"),m={timeOrigin:r.ts,firstPaint:l(a),firstContentfulPaint:o.ts,largestContentfulPaint:l(i.lcp),load:l(c),domContentLoaded:l(u)},p=s(y=>(y-r.ts)/1e3,"getTiming"),f=s(y=>y===void 0?void 0:p(y),"maybeGetTiming");return{timings:{timeOrigin:0,firstPaint:f(m.firstPaint),firstContentfulPaint:p(m.firstContentfulPaint),largestContentfulPaint:f(m.largestContentfulPaint),load:f(m.load),domContentLoaded:f(m.domContentLoaded)},timestamps:m,timeOriginEvt:r,firstPaintEvt:a, +firstContentfulPaintEvt:o,largestContentfulPaintEvt:i.lcp,loadEvt:c,domContentLoadedEvt:u,lcpInvalidated:i.invalidated}}}});var JF={};T(JF,{default:()=>yr});var eg,yr,Xo=g(()=>{"use strict";d();Ke();la();eg=class e extends Q{static{s(this,"Trace")}_trace={traceEvents:[]};static getDefaultTraceCategories(){return["-*","disabled-by-default-lighthouse","loading","v8","v8.execute","blink.user_timing","blink.console","devtools.timeline","disabled-by-default-devtools.timeline","disabled-by-default-devtools.screenshot","disabled-by-default-devtools.timeline.stack","disabled-by-default-devtools.timeline.frame","latencyInfo","disabled-by-default-devtools.timeline.invalidationTracking"]}static async endTraceAndCollectEvents(t){let n=[],r=s(function(a){n.push(...a.value)},"dataListener");return t.on("Tracing.dataCollected",r),new Promise((a,o)=>{t.once("Tracing.tracingComplete",i=>{t.off("Tracing.dataCollected",r),a({traceEvents:n})}),t.sendCommand("Tracing.end").catch(o)})}static symbol=Symbol("Trace");meta={symbol:e.symbol,supportedModes:["timespan","navigation"]};async startSensitiveInstrumentation({driver:t,gatherMode:n, +settings:r}){let a=e.getDefaultTraceCategories().concat(r.additionalTraceCategories||[]);await t.defaultSession.sendCommand("Page.enable"),await t.defaultSession.sendCommand("Tracing.start",{categories:a.join(","),options:"sampling-frequency=10000"}),n==="timespan"&&await t.defaultSession.sendCommand("Tracing.recordClockSyncMarker",{syncId:un.TIMESPAN_MARKER_ID})}async stopSensitiveInstrumentation({driver:t}){this._trace=await e.endTraceAndCollectEvents(t.defaultSession)}getDebugData(){return this._trace}getArtifact(){return this._trace}},yr=eg});var XF={};T(XF,{default:()=>Jn});var Jn,da=g(()=>{d();Jn={}});function ZF(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];a==="."?e.splice(r,1):a===".."?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function tg(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if(typeof r!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!r)continue;e=r+"/"+e,t=r.charAt(0)==="/"}return e=ZF(rg(e.split("/"),function(a){return!!a}),!t).join("/"),(t?"/":"")+e||"."}function QF(e){var t=eR(e),n=dG(e,-1)==="/";return e=ZF(rg(e.split("/"),function(r){return!!r}),!t).join("/"),!e&&!t&&(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function eR(e){return e.charAt(0)==="/"}function aG(){var e=Array.prototype.slice.call(arguments,0);return QF(rg(e,function(t,n){if(typeof t!="string")throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))}function oG(e,t){e=tg(e).substr(1),t=tg(t).substr(1);function n(l){for(var m=0;m<l.length&&l[m]==="";m++);for(var p=l.length- +1;p>=0&&l[p]==="";p--);return m>p?[]:l.slice(m,p-m+1)}s(n,"trim");for(var r=n(e.split("/")),a=n(t.split("/")),o=Math.min(r.length,a.length),i=o,c=0;c<o;c++)if(r[c]!==a[c]){i=c;break}for(var u=[],c=i;c<r.length;c++)u.push("..");return u=u.concat(a.slice(i)),u.join("/")}function cG(e){var t=ng(e),n=t[0],r=t[1];return!n&&!r?".":(r&&(r=r.substr(0,r.length-1)),n+r)}function uG(e,t){var n=ng(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n}function lG(e){return ng(e)[3]}function rg(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var rG,ng,iG,sG,Ct,dG,$a=g(()=>{d();s(ZF,"normalizeArray");rG=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,ng=s(function(e){return rG.exec(e).slice(1)},"splitPath");s(tg,"resolve");s(QF,"normalize");s(eR,"isAbsolute");s(aG,"join");s(oG,"relative");iG="/",sG=":";s(cG,"dirname");s(uG,"basename");s(lG,"extname");Ct={extname:lG,basename:uG,dirname:cG,sep:iG,delimiter:sG, +relative:oG,join:aG,isAbsolute:eR,normalize:QF,resolve:tg};s(rg,"filter");dG="ab".substr(-1)==="b"?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}});var mG,qm,ag=g(()=>{d();mG=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,qm=mG});var pG,fG,Xt,Lr=g(()=>{d();ag();pG=typeof self=="object"&&self&&self.Object===Object&&self,fG=qm||pG||Function("return this")(),Xt=fG});var hG,ma,Hm=g(()=>{d();Lr();hG=Xt.Symbol,ma=hG});function vG(e){var t=gG.call(e,Kc),n=e[Kc];try{e[Kc]=void 0;var r=!0}catch{}var a=yG.call(e);return r&&(t?e[Kc]=n:delete e[Kc]),a}var tR,gG,yG,Kc,nR,rR=g(()=>{d();Hm();tR=Object.prototype,gG=tR.hasOwnProperty,yG=tR.toString,Kc=ma?ma.toStringTag:void 0;s(vG,"getRawTag");nR=vG});function DG(e){return wG.call(e)}var bG,wG,aR,oR=g(()=>{d();bG=Object.prototype,wG=bG.toString;s(DG,"objectToString");aR=DG});function TG(e){return e==null?e===void 0?EG:xG:iR&&iR in Object(e)?nR(e):aR(e)}var xG,EG,iR,pa,Jc=g(()=>{d();Hm();rR();oR();xG="[object Null]",EG="[object Undefined]",iR=ma?ma.toStringTag:void 0;s(TG,"baseGetTag");pa=TG});function SG(e){return e!=null&&typeof e=="object"}var fa,Xc=g(()=>{d();s(SG,"isObjectLike");fa=SG});var CG,Zo,Wm=g(()=>{d();CG=Array.isArray,Zo=CG});function kG(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Gm,og=g(()=>{d();s(kG,"isObject");Gm=kG});function _G(e){if(!Gm(e))return!1;var t=pa(e);return t==RG||t==IG||t==FG||t==AG}var FG,RG,IG,AG,Vm,ig=g(()=>{d();Jc();og();FG="[object AsyncFunction]",RG="[object Function]",IG="[object GeneratorFunction]",AG="[object Proxy]";s(_G,"isFunction");Vm=_G});var MG,$m,sR=g(()=>{d();Lr();MG=Xt["__core-js_shared__"],$m=MG});function NG(e){return!!cR&&cR in e}var cR,uR,lR=g(()=>{d();sR();cR=function(){var e=/[^.]+$/.exec($m&&$m.keys&&$m.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();s(NG,"isMasked");uR=NG});function PG(e){if(e!=null){try{return LG.call(e)}catch{}try{return e+""}catch{}}return""}var OG,LG,ha,sg=g(()=>{d();OG=Function.prototype,LG=OG.toString;s(PG,"toSource");ha=PG});function GG(e){if(!Gm(e)||uR(e))return!1;var t=Vm(e)?WG:UG;return t.test(ha(e))}var BG,UG,jG,zG,qG,HG,WG,dR,mR=g(()=>{d();ig();lR();og();sg();BG=/[\\^$.*+?()[\]{}|]/g,UG=/^\[object .+?Constructor\]$/,jG=Function.prototype,zG=Object.prototype,qG=jG.toString,HG=zG.hasOwnProperty,WG=RegExp("^"+qG.call(HG).replace(BG,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");s(GG,"baseIsNative");dR=GG});function VG(e,t){return e?.[t]}var pR,fR=g(()=>{d();s(VG,"getValue");pR=VG});function $G(e,t){var n=pR(e,t);return dR(n)?n:void 0}var Xn,Qo=g(()=>{d();mR();fR();s($G,"getNative");Xn=$G});var YG,Ym,hR=g(()=>{d();Qo();Lr();YG=Xn(Xt,"WeakMap"),Ym=YG});function XG(e,t){var n=typeof e;return t=t??KG,!!t&&(n=="number"||n!="symbol"&&JG.test(e))&&e>-1&&e%1==0&&e<t}var KG,JG,gR,yR=g(()=>{d();KG=9007199254740991,JG=/^(?:0|[1-9]\d*)$/;s(XG,"isIndex");gR=XG});function ZG(e,t){return e===t||e!==e&&t!==t}var Km,cg=g(()=>{d();s(ZG,"eq");Km=ZG});function eV(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=QG}var QG,Jm,ug=g(()=>{d();QG=9007199254740991;s(eV,"isLength");Jm=eV});function tV(e){return e!=null&&Jm(e.length)&&!Vm(e)}var vR,bR=g(()=>{d();ig();ug();s(tV,"isArrayLike");vR=tV});function rV(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||nV;return e===n}var nV,wR,DR=g(()=>{d();nV=Object.prototype;s(rV,"isPrototype");wR=rV});function aV(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var xR,ER=g(()=>{d();s(aV,"baseTimes");xR=aV});function iV(e){return fa(e)&&pa(e)==oV}var oV,lg,TR=g(()=>{d();Jc();Xc();oV="[object Arguments]";s(iV,"baseIsArguments");lg=iV});var SR,sV,cV,uV,CR,kR=g(()=>{d();TR();Xc();SR=Object.prototype,sV=SR.hasOwnProperty,cV=SR.propertyIsEnumerable,uV=lg(function(){return arguments}())?lg:function(e){return fa(e)&&sV.call(e,"callee")&&!cV.call(e,"callee")},CR=uV});function lV(){return!1}var FR,RR=g(()=>{d();s(lV,"stubFalse");FR=lV});var _R,IR,dV,AR,mV,pV,Zc,dg=g(()=>{d();Lr();RR();_R=typeof exports=="object"&&exports&&!exports.nodeType&&exports,IR=_R&&typeof module=="object"&&module&&!module.nodeType&&module,dV=IR&&IR.exports===_R,AR=dV?Xt.Buffer:void 0,mV=AR?AR.isBuffer:void 0,pV=mV||FR,Zc=pV});function BV(e){return fa(e)&&Jm(e.length)&&!!Et[pa(e)]}var fV,hV,gV,yV,vV,bV,wV,DV,xV,EV,TV,SV,CV,kV,FV,RV,IV,AV,_V,MV,NV,OV,LV,PV,Et,MR,NR=g(()=>{d();Jc();ug();Xc();fV="[object Arguments]",hV="[object Array]",gV="[object Boolean]",yV="[object Date]",vV="[object Error]",bV="[object Function]",wV="[object Map]",DV="[object Number]",xV="[object Object]",EV="[object RegExp]",TV="[object Set]",SV="[object String]",CV="[object WeakMap]",kV="[object ArrayBuffer]",FV="[object DataView]",RV="[object Float32Array]",IV="[object Float64Array]",AV="[object Int8Array]",_V="[object Int16Array]",MV="[object Int32Array]",NV="[object Uint8Array]",OV="[object Uint8ClampedArray]",LV="[object Uint16Array]",PV="[object Uint32Array]",Et={};Et[RV]=Et[IV]=Et[AV]=Et[_V]=Et[MV]=Et[NV]=Et[OV]=Et[LV]=Et[PV]=!0;Et[fV]=Et[hV]=Et[kV]=Et[gV]=Et[FV]=Et[yV]=Et[vV]=Et[bV]=Et[wV]=Et[DV]=Et[xV]=Et[EV]=Et[TV]=Et[SV]=Et[CV]=!1;s(BV,"baseIsTypedArray");MR=BV});function UV(e){return function(t){return e(t)}}var OR,LR=g(()=>{d();s(UV,"baseUnary");OR=UV});var PR,Qc,jV,mg,zV,pg,BR=g(()=>{d();ag();PR=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qc=PR&&typeof module=="object"&&module&&!module.nodeType&&module,jV=Qc&&Qc.exports===PR,mg=jV&&qm.process,zV=function(){try{var e=Qc&&Qc.require&&Qc.require("util").types;return e||mg&&mg.binding&&mg.binding("util")}catch{}}(),pg=zV});var UR,qV,Xm,fg=g(()=>{d();NR();LR();BR();UR=pg&&pg.isTypedArray,qV=UR?OR(UR):MR,Xm=qV});function GV(e,t){var n=Zo(e),r=!n&&CR(e),a=!n&&!r&&Zc(e),o=!n&&!r&&!a&&Xm(e),i=n||r||a||o,c=i?xR(e.length,String):[],u=c.length;for(var l in e)(t||WV.call(e,l))&&!(i&&(l=="length"||a&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||gR(l,u)))&&c.push(l);return c}var HV,WV,jR,zR=g(()=>{d();ER();kR();Wm();dg();yR();fg();HV=Object.prototype,WV=HV.hasOwnProperty;s(GV,"arrayLikeKeys");jR=GV});function VV(e,t){return function(n){return e(t(n))}}var qR,HR=g(()=>{d();s(VV,"overArg");qR=VV});var $V,WR,GR=g(()=>{d();HR();$V=qR(Object.keys,Object),WR=$V});function JV(e){if(!wR(e))return WR(e);var t=[];for(var n in Object(e))KV.call(e,n)&&n!="constructor"&&t.push(n);return t}var YV,KV,VR,$R=g(()=>{d();DR();GR();YV=Object.prototype,KV=YV.hasOwnProperty;s(JV,"baseKeys");VR=JV});function XV(e){return vR(e)?jR(e):VR(e)}var YR,KR=g(()=>{d();zR();$R();bR();s(XV,"keys");YR=XV});var ZV,ga,eu=g(()=>{d();Qo();ZV=Xn(Object,"create"),ga=ZV});function QV(){this.__data__=ga?ga(null):{},this.size=0}var JR,XR=g(()=>{d();eu();s(QV,"hashClear");JR=QV});function e$(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var ZR,QR=g(()=>{d();s(e$,"hashDelete");ZR=e$});function a$(e){var t=this.__data__;if(ga){var n=t[e];return n===t$?void 0:n}return r$.call(t,e)?t[e]:void 0}var t$,n$,r$,eI,tI=g(()=>{d();eu();t$="__lodash_hash_undefined__",n$=Object.prototype,r$=n$.hasOwnProperty;s(a$,"hashGet");eI=a$});function s$(e){var t=this.__data__;return ga?t[e]!==void 0:i$.call(t,e)}var o$,i$,nI,rI=g(()=>{d();eu();o$=Object.prototype,i$=o$.hasOwnProperty;s(s$,"hashHas");nI=s$});function u$(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=ga&&t===void 0?c$:t,this}var c$,aI,oI=g(()=>{d();eu();c$="__lodash_hash_undefined__";s(u$,"hashSet");aI=u$});function as(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}var hg,iI=g(()=>{d();XR();QR();tI();rI();oI();s(as,"Hash");as.prototype.clear=JR;as.prototype.delete=ZR;as.prototype.get=eI;as.prototype.has=nI;as.prototype.set=aI;hg=as});function l$(){this.__data__=[],this.size=0}var sI,cI=g(()=>{d();s(l$,"listCacheClear");sI=l$});function d$(e,t){for(var n=e.length;n--;)if(Km(e[n][0],t))return n;return-1}var Ya,tu=g(()=>{d();cg();s(d$,"assocIndexOf");Ya=d$});function f$(e){var t=this.__data__,n=Ya(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():p$.call(t,n,1),--this.size,!0}var m$,p$,uI,lI=g(()=>{d();tu();m$=Array.prototype,p$=m$.splice;s(f$,"listCacheDelete");uI=f$});function h$(e){var t=this.__data__,n=Ya(t,e);return n<0?void 0:t[n][1]}var dI,mI=g(()=>{d();tu();s(h$,"listCacheGet");dI=h$});function g$(e){return Ya(this.__data__,e)>-1}var pI,fI=g(()=>{d();tu();s(g$,"listCacheHas");pI=g$});function y$(e,t){var n=this.__data__,r=Ya(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var hI,gI=g(()=>{d();tu();s(y$,"listCacheSet");hI=y$});function os(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}var Ka,nu=g(()=>{d();cI();lI();mI();fI();gI();s(os,"ListCache");os.prototype.clear=sI;os.prototype.delete=uI;os.prototype.get=dI;os.prototype.has=pI;os.prototype.set=hI;Ka=os});var v$,Ja,Zm=g(()=>{d();Qo();Lr();v$=Xn(Xt,"Map"),Ja=v$});function b$(){this.size=0,this.__data__={hash:new hg,map:new(Ja||Ka),string:new hg}}var yI,vI=g(()=>{d();iI();nu();Zm();s(b$,"mapCacheClear");yI=b$});function w$(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var bI,wI=g(()=>{d();s(w$,"isKeyable");bI=w$});function D$(e,t){var n=e.__data__;return bI(t)?n[typeof t=="string"?"string":"hash"]:n.map}var Xa,ru=g(()=>{d();wI();s(D$,"getMapData");Xa=D$});function x$(e){var t=Xa(this,e).delete(e);return this.size-=t?1:0,t}var DI,xI=g(()=>{d();ru();s(x$,"mapCacheDelete");DI=x$});function E$(e){return Xa(this,e).get(e)}var EI,TI=g(()=>{d();ru();s(E$,"mapCacheGet");EI=E$});function T$(e){return Xa(this,e).has(e)}var SI,CI=g(()=>{d();ru();s(T$,"mapCacheHas");SI=T$});function S$(e,t){var n=Xa(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var kI,FI=g(()=>{d();ru();s(S$,"mapCacheSet");kI=S$});function is(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}var Qm,gg=g(()=>{d();vI();xI();TI();CI();FI();s(is,"MapCache");is.prototype.clear=yI;is.prototype.delete=DI;is.prototype.get=EI;is.prototype.has=SI;is.prototype.set=kI;Qm=is});function C$(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}var RI,II=g(()=>{d();s(C$,"arrayPush");RI=C$});function k$(){this.__data__=new Ka,this.size=0}var AI,_I=g(()=>{d();nu();s(k$,"stackClear");AI=k$});function F$(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var MI,NI=g(()=>{d();s(F$,"stackDelete");MI=F$});function R$(e){return this.__data__.get(e)}var OI,LI=g(()=>{d();s(R$,"stackGet");OI=R$});function I$(e){return this.__data__.has(e)}var PI,BI=g(()=>{d();s(I$,"stackHas");PI=I$});function _$(e,t){var n=this.__data__;if(n instanceof Ka){var r=n.__data__;if(!Ja||r.length<A$-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Qm(r)}return n.set(e,t),this.size=n.size,this}var A$,UI,jI=g(()=>{d();nu();Zm();gg();A$=200;s(_$,"stackSet");UI=_$});function ss(e){var t=this.__data__=new Ka(e);this.size=t.size}var ep,zI=g(()=>{d();nu();_I();NI();LI();BI();jI();s(ss,"Stack");ss.prototype.clear=AI;ss.prototype.delete=MI;ss.prototype.get=OI;ss.prototype.has=PI;ss.prototype.set=UI;ep=ss});function M$(e,t){for(var n=-1,r=e==null?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}var qI,HI=g(()=>{d();s(M$,"arrayFilter");qI=M$});function N$(){return[]}var WI,GI=g(()=>{d();s(N$,"stubArray");WI=N$});var O$,L$,VI,P$,$I,YI=g(()=>{d();HI();GI();O$=Object.prototype,L$=O$.propertyIsEnumerable,VI=Object.getOwnPropertySymbols,P$=VI?function(e){return e==null?[]:(e=Object(e),qI(VI(e),function(t){return L$.call(e,t)}))}:WI,$I=P$});function B$(e,t,n){var r=t(e);return Zo(e)?r:RI(r,n(e))}var KI,JI=g(()=>{d();II();Wm();s(B$,"baseGetAllKeys");KI=B$});function U$(e){return KI(e,YR,$I)}var yg,XI=g(()=>{d();JI();YI();KR();s(U$,"getAllKeys");yg=U$});var j$,tp,ZI=g(()=>{d();Qo();Lr();j$=Xn(Xt,"DataView"),tp=j$});var z$,np,QI=g(()=>{d();Qo();Lr();z$=Xn(Xt,"Promise"),np=z$});var q$,rp,eA=g(()=>{d();Qo();Lr();q$=Xn(Xt,"Set"),rp=q$});var tA,H$,nA,rA,aA,oA,W$,G$,V$,$$,Y$,ei,vg,iA=g(()=>{d();ZI();Zm();QI();eA();hR();Jc();sg();tA="[object Map]",H$="[object Object]",nA="[object Promise]",rA="[object Set]",aA="[object WeakMap]",oA="[object DataView]",W$=ha(tp),G$=ha(Ja),V$=ha(np),$$=ha(rp),Y$=ha(Ym),ei=pa;(tp&&ei(new tp(new ArrayBuffer(1)))!=oA||Ja&&ei(new Ja)!=tA||np&&ei(np.resolve())!=nA||rp&&ei(new rp)!=rA||Ym&&ei(new Ym)!=aA)&&(ei=s(function(e){var t=pa(e),n=t==H$?e.constructor:void 0,r=n?ha(n):"";if(r)switch(r){case W$:return oA;case G$:return tA;case V$:return nA;case $$:return rA;case Y$:return aA}return t},"getTag"));vg=ei});var K$,bg,sA=g(()=>{d();Lr();K$=Xt.Uint8Array,bg=K$});function X$(e){return this.__data__.set(e,J$),this}var J$,cA,uA=g(()=>{d();J$="__lodash_hash_undefined__";s(X$,"setCacheAdd");cA=X$});function Z$(e){return this.__data__.has(e)}var lA,dA=g(()=>{d();s(Z$,"setCacheHas");lA=Z$});function ap(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Qm;++t<n;)this.add(e[t])}var mA,pA=g(()=>{d();gg();uA();dA();s(ap,"SetCache");ap.prototype.add=ap.prototype.push=cA;ap.prototype.has=lA;mA=ap});function Q$(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var fA,hA=g(()=>{d();s(Q$,"arraySome");fA=Q$});function eY(e,t){return e.has(t)}var gA,yA=g(()=>{d();s(eY,"cacheHas");gA=eY});function rY(e,t,n,r,a,o){var i=n&tY,c=e.length,u=t.length;if(c!=u&&!(i&&u>c))return!1;var l=o.get(e),m=o.get(t);if(l&&m)return l==t&&m==e;var p=-1,f=!0,h=n&nY?new mA:void 0;for(o.set(e,t),o.set(t,e);++p<c;){var y=e[p],v=t[p];if(r)var w=i?r(v,y,p,t,e,o):r(y,v,p,e,t,o);if(w!==void 0){if(w)continue;f=!1;break}if(h){if(!fA(t,function(x,E){if(!gA(h,E)&&(y===x||a(y,x,n,r,o)))return h.push(E)})){f=!1;break}}else if(!(y===v||a(y,v,n,r,o))){f=!1;break}}return o.delete(e),o.delete(t),f}var tY,nY,op,wg=g(()=>{d();pA();hA();yA();tY=1,nY=2;s(rY,"equalArrays");op=rY});function aY(e){var t=-1,n=Array(e.size);return e.forEach(function(r,a){n[++t]=[a,r]}),n}var vA,bA=g(()=>{d();s(aY,"mapToArray");vA=aY});function oY(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var wA,DA=g(()=>{d();s(oY,"setToArray");wA=oY});function bY(e,t,n,r,a,o,i){switch(n){case vY:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case yY:return!(e.byteLength!=t.byteLength||!o(new bg(e),new bg(t)));case cY:case uY:case mY:return Km(+e,+t);case lY:return e.name==t.name&&e.message==t.message;case pY:case hY:return e==t+"";case dY:var c=vA;case fY:var u=r&iY;if(c||(c=wA),e.size!=t.size&&!u)return!1;var l=i.get(e);if(l)return l==t;r|=sY,i.set(e,t);var m=op(c(e),c(t),r,a,o,i);return i.delete(e),m;case gY:if(Dg)return Dg.call(e)==Dg.call(t)}return!1}var iY,sY,cY,uY,lY,dY,mY,pY,fY,hY,gY,yY,vY,xA,Dg,EA,TA=g(()=>{d();Hm();sA();cg();wg();bA();DA();iY=1,sY=2,cY="[object Boolean]",uY="[object Date]",lY="[object Error]",dY="[object Map]",mY="[object Number]",pY="[object RegExp]",fY="[object Set]",hY="[object String]",gY="[object Symbol]",yY="[object ArrayBuffer]",vY="[object DataView]",xA=ma?ma.prototype:void 0,Dg=xA?xA.valueOf:void 0;s(bY,"equalByTag");EA=bY});function EY(e,t,n,r,a,o){var i=n&wY,c=yg(e),u=c.length,l=yg(t),m=l.length;if(u!=m&&!i)return!1;for(var p=u;p--;){var f=c[p];if(!(i?f in t:xY.call(t,f)))return!1}var h=o.get(e),y=o.get(t);if(h&&y)return h==t&&y==e;var v=!0;o.set(e,t),o.set(t,e);for(var w=i;++p<u;){f=c[p];var x=e[f],E=t[f];if(r)var S=i?r(E,x,f,t,e,o):r(x,E,f,e,t,o);if(!(S===void 0?x===E||a(x,E,n,r,o):S)){v=!1;break}w||(w=f=="constructor")}if(v&&!w){var k=e.constructor,R=t.constructor;k!=R&&"constructor"in e&&"constructor"in t&&!(typeof k=="function"&&k instanceof k&&typeof R=="function"&&R instanceof R)&&(v=!1)}return o.delete(e),o.delete(t),v}var wY,DY,xY,SA,CA=g(()=>{d();XI();wY=1,DY=Object.prototype,xY=DY.hasOwnProperty;s(EY,"equalObjects");SA=EY});function CY(e,t,n,r,a,o){var i=Zo(e),c=Zo(t),u=i?FA:vg(e),l=c?FA:vg(t);u=u==kA?ip:u,l=l==kA?ip:l;var m=u==ip,p=l==ip,f=u==l;if(f&&Zc(e)){if(!Zc(t))return!1;i=!0,m=!1}if(f&&!m)return o||(o=new ep),i||Xm(e)?op(e,t,n,r,a,o):EA(e,t,u,n,r,a,o);if(!(n&TY)){var h=m&&RA.call(e,"__wrapped__"),y=p&&RA.call(t,"__wrapped__");if(h||y){var v=h?e.value():e,w=y?t.value():t;return o||(o=new ep),a(v,w,n,r,o)}}return f?(o||(o=new ep),SA(e,t,n,r,a,o)):!1}var TY,kA,FA,ip,SY,RA,IA,AA=g(()=>{d();zI();wg();TA();CA();iA();Wm();dg();fg();TY=1,kA="[object Arguments]",FA="[object Array]",ip="[object Object]",SY=Object.prototype,RA=SY.hasOwnProperty;s(CY,"baseIsEqualDeep");IA=CY});function _A(e,t,n,r,a){return e===t?!0:e==null||t==null||!fa(e)&&!fa(t)?e!==e&&t!==t:IA(e,t,n,r,_A,a)}var MA,NA=g(()=>{d();AA();Xc();s(_A,"baseIsEqual");MA=_A});function kY(e,t){return MA(e,t)}var Pr,OA=g(()=>{d();NA();s(kY,"isEqual");Pr=kY});var au=g(()=>{d();OA();});var LA,PA=g(()=>{"use strict";d();Ha();LA=!!fn.env.CI||fn.env.NODE_ENV==="test"});function AY(e){let t=Math.sign(e);e=Math.abs(e);let n=.254829592,r=-.284496736,a=1.421413741,o=-1.453152027,i=1.061405429,u=1/(1+.3275911*e),l=u*(n+u*(r+u*(a+u*(o+u*i))));return t*(1-l*Math.exp(-e*e))}function BA({median:e,p10:t},n){if(e<=0)throw new Error("median must be greater than zero");if(t<=0)throw new Error("p10 must be greater than zero");if(t>=e)throw new Error("p10 must be less than the median");if(n<=0)return 1;let r=.9061938024368232,a=Math.max(Number.MIN_VALUE,n/e),o=Math.log(a),i=Math.max(Number.MIN_VALUE,t/e),c=-Math.log(i),u=o*r/c,l=(1-AY(u))/2,m;return n<=t?m=Math.max(.9,Math.min(1,l)):n<=e?m=Math.max(RY,Math.min(FY,l)):m=Math.max(0,Math.min(IY,l)),m}function UA(e,t,n,r,a){let o=(r-t)/(n-e);return t+(a-e)*o}var FY,RY,IY,xg=g(()=>{"use strict";d();FY=.8999999999999999,RY=.5,IY=.49999999999999994;s(AY,"erf");s(BA,"getLogNormalScore");s(UA,"linearInterpolation")});var ya,MY,jA,NY,OY,Le,zn=g(()=>{"use strict";d();xg();ya="…",MY=" ",jA=.9,NY={PASS:{label:"pass",minScore:jA},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},OY=["com","co","gov","edu","ac","org","go","gob","or","net","in","ne","nic","gouv","web","spb","blog","jus","kiev","mil","wi","qc","ca","bel","on"],Le=class e{static{s(this,"Util")}static get RATINGS(){return NY}static get PASS_THRESHOLD(){return jA}static get MS_DISPLAY_VALUE(){return`%10d${MY}ms`}static getFinalDisplayedUrl(t){if(t.finalDisplayedUrl)return t.finalDisplayedUrl;if(t.finalUrl)return t.finalUrl;throw new Error("Could not determine final displayed URL")}static getMainDocumentUrl(t){return t.mainDocumentUrl||t.finalUrl}static getFullPageScreenshot(t){return t.fullPageScreenshot?t.fullPageScreenshot:t.audits["full-page-screenshot"]?.details}static getEntityFromUrl(t,n){return n&&n.find(a=>a.origins.find(o=>t.startsWith(o)))||e.getPseudoRootDomain(t)}static splitMarkdownCodeSpans(t){let n=[], +r=t.split(/`(.*?)`/g);for(let a=0;a<r.length;a++){let o=r[a];if(!o)continue;let i=a%2!==0;n.push({isCode:i,text:o})}return n}static splitMarkdownLink(t){let n=[],r=t.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;r.length;){let[a,o,i]=r.splice(0,3);a&&n.push({isLink:!1,text:a}),o&&i&&n.push({isLink:!0,text:o,linkHref:i})}return n}static truncate(t,n,r="…"){if(t.length<=n)return t;let o=new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(t)[Symbol.iterator](),i=0;for(let c=0;c<=n-r.length;c++){let u=o.next();if(u.done)return t;i=u.value.index}for(let c=0;c<r.length;c++)if(o.next().done)return t;return t.slice(0,i)+r}static getURLDisplayName(t,n){n=n||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0};let r=n.numPathParts!==void 0?n.numPathParts:2,a=n.preserveQuery!==void 0?n.preserveQuery:!0,o=n.preserveHost||!1,i;if(t.protocol==="about:"||t.protocol==="data:")i=t.href;else{i=t.pathname;let u=i.split("/").filter(l=>l.length);r&&u.length>r&&(i=ya+u.slice(-1*r).join( +"/")),o&&(i=`${t.host}/${i.replace(/^\//,"")}`),a&&(i=`${i}${t.search}`)}let c=64;if(t.protocol!=="data:"&&(i=i.slice(0,200),i=i.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,`$1${ya}`),i=i.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,`$1${ya}`),i=i.replace(/(\d{3})\d{6,}/g,`$1${ya}`),i=i.replace(/\u2026+/g,ya),i.length>c&&i.includes("?")&&(i=i.replace(/\?([^=]*)(=)?.*/,`?$1$2${ya}`),i.length>c&&(i=i.replace(/\?.*/,`?${ya}`)))),i.length>c){let u=i.lastIndexOf(".");u>=0?i=i.slice(0,c-1-(i.length-u))+`${ya}${i.slice(u)}`:i=i.slice(0,c-1)+ya}return i}static getChromeExtensionOrigin(t){let n=new URL(t);return n.protocol+"//"+n.host}static parseURL(t){let n=new URL(t);return{file:e.getURLDisplayName(n),hostname:n.hostname,origin:n.protocol==="chrome-extension:"?e.getChromeExtensionOrigin(t):n.origin}}static createOrReturnURL(t){return t instanceof URL?t:new URL(t)}static getPseudoTld(t){let n=t.split(".").slice(-2);return OY.includes(n[0])?`.${n.join(".")}`: +`.${n[n.length-1]}`}static getPseudoRootDomain(t){let n=e.createOrReturnURL(t).hostname,a=e.getPseudoTld(n).split(".");return n.split(".").slice(-a.length).join(".")}static filterRelevantLines(t,n,r){if(n.length===0)return t.slice(0,r*2+1);let a=3,o=new Set;return n=n.sort((i,c)=>(i.lineNumber||0)-(c.lineNumber||0)),n.forEach(({lineNumber:i})=>{let c=i-r,u=i+r;for(;c<1;)c++,u++;o.has(c-a-1)&&(c-=a);for(let l=c;l<=u;l++){let m=l;o.add(m)}}),t.filter(i=>o.has(i.lineNumber))}static computeLogNormalScore(t,n){let r=BA(t,n);return r>.9&&(r+=.05*(r-.9)),Math.floor(r*100)/100}}});var LY,PY,BY,b,V=g(()=>{"use strict";d();hn();PA();zn();LY="defaultPass",PY={FCP:50,LCP:50,INP:50,TBT:50,CLS:.001},BY=s(e=>Math.round(e*100)/100,"clampTo2Decimals"),b=class e{static{s(this,"Audit")}static get DEFAULT_PASS(){return LY}static get SCORING_MODES(){return{NUMERIC:"numeric",METRIC_SAVINGS:"metricSavings",BINARY:"binary",MANUAL:"manual",INFORMATIVE:"informative",NOT_APPLICABLE:"notApplicable",ERROR:"error"}}static get meta(){throw new Error("Audit meta information must be overridden.")}static get defaultOptions(){return{}}static audit(t,n){throw new Error("audit() method must be overridden")}static computeLogNormalScore(t,n){return Le.computeLogNormalScore(t,n)}static assertHeadingKeysExist(t,n){if(n.length&&LA)for(let r of t){if(r.key===null)continue;let a=r.key;if(!n.some(o=>a in o))throw new Error(`"${r.key}" is missing from items`)}}static makeTableDetails(t,n,r={}){let{wastedBytes:a,wastedMs:o,sortedBy:i,skipSumming:c,isEntityGrouped:u}=r,l=a||o?{wastedBytes:a,wastedMs:o}: +void 0;return n.length===0?{type:"table",headings:[],items:[],summary:l}:(e.assertHeadingKeysExist(t,n),{type:"table",headings:t,items:n,summary:l,sortedBy:i,skipSumming:c,isEntityGrouped:u})}static makeListDetails(t){return{type:"list",items:t}}static makeSnippetDetails({content:t,title:n,lineMessages:r,generalMessages:a,node:o,maxLineLength:i=200,maxLinesAroundMessage:c=20}){let u=e._makeSnippetLinesArray(t,i);return{type:"snippet",lines:Le.filterRelevantLines(u,r,c),title:n,lineMessages:r,generalMessages:a,lineCount:u.length,node:o}}static _makeSnippetLinesArray(t,n){return t.split(` +`).map((r,a)=>{let o=a+1,i={content:Le.truncate(r,n),lineNumber:o};return r.length>n&&(i.truncated=!0),i})}static makeOpportunityDetails(t,n,r){e.assertHeadingKeysExist(t,n);let{overallSavingsMs:a,overallSavingsBytes:o,sortedBy:i,skipSumming:c,isEntityGrouped:u}=r;return{type:"opportunity",headings:n.length===0?[]:t,items:n,overallSavingsMs:a,overallSavingsBytes:o,sortedBy:i,skipSumming:c,isEntityGrouped:u}}static makeNodeItem(t){return{type:"node",lhId:t.lhId,path:t.devtoolsNodePath,selector:t.selector,boundingRect:t.boundingRect,snippet:t.snippet,nodeLabel:t.nodeLabel}}static _findOriginalLocation(t,n,r){let a=t?.map.findEntry(n,r);if(a)return{file:a.sourceURL||"",line:a.sourceLineNumber||0,column:a.sourceColumnNumber||0}}static makeSourceLocation(t,n,r,a){return{type:"source-location",url:t,urlProvider:"network",line:n,column:r,original:a&&this._findOriginalLocation(a,n,r)}}static makeSourceLocationFromConsoleMessage(t,n){if(!t.url)return;let r=t.lineNumber||0,a=t.columnNumber||0;return this. +makeSourceLocation(t.url,r,a,n)}static _normalizeAuditScore(t,n,r){if(n===e.SCORING_MODES.INFORMATIVE)return 1;if(n!==e.SCORING_MODES.BINARY&&n!==e.SCORING_MODES.NUMERIC&&n!==e.SCORING_MODES.METRIC_SAVINGS)return null;if(t===null||!Number.isFinite(t))throw new Error(`Invalid score for ${r}: ${t}`);if(t>1)throw new Error(`Audit score for ${r} is > 1`);if(t<0)throw new Error(`Audit score for ${r} is < 0`);return t=BY(t),t}static _quantizeMetricSavings(t){if(!t)return;let n={...t};for(let r of Object.keys(t)){let a=t[r];if(a===void 0)continue;a=Math.max(a,0);let o=PY[r];o!==void 0&&(a=Math.round(a/o)*o),n[r]=a}return n}static generateErrorAuditResult(t,n,r){return e.generateAuditResult(t,{score:null,errorMessage:n,errorStack:r})}static generateAuditResult(t,n){if(n.score===void 0)throw new Error("generateAuditResult requires a score");let r=t.meta.scoreDisplayMode||e.SCORING_MODES.BINARY,a=n.score;n.errorMessage!==void 0?r=e.SCORING_MODES.ERROR:n.notApplicable?r=e.SCORING_MODES.NOT_APPLICABLE: +n.scoreDisplayMode&&(r=n.scoreDisplayMode);let o=e._quantizeMetricSavings(n.metricSavings),i=Object.values(o||{}).some(l=>l);r===e.SCORING_MODES.METRIC_SAVINGS&&(a&&a>=Le.PASS_THRESHOLD?a=1:i?a=0:a=.5),a=e._normalizeAuditScore(a,r,t.meta.id);let c=t.meta.title;t.meta.failureTitle&&a!==null&&a<Le.PASS_THRESHOLD&&(c=t.meta.failureTitle);let u="numericUnit"in n?n:void 0;return{id:t.meta.id,title:c,description:t.meta.description,score:a,scoreDisplayMode:r,numericValue:u?.numericValue,numericUnit:u?.numericUnit,displayValue:n.displayValue,explanation:n.explanation,errorMessage:n.errorMessage,errorStack:n.errorStack,warnings:n.warnings,scoringOptions:n.scoringOptions,metricSavings:o,details:n.details,guidanceLevel:t.meta.guidanceLevel}}static makeMetricComputationDataInput(t,n){let r=t.traces[e.DEFAULT_PASS],a=t.devtoolsLogs[e.DEFAULT_PASS],o=t.GatherContext;return{trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings,URL:t.URL}}}});var UY,sp,zA=g(()=>{"use strict";d();V();UY=s(e=>Math.round(e*100)/100,"clampTo2Decimals"),sp=class e{static{s(this,"ReportScoring")}static arithmeticMean(t){if(t=t.filter(r=>r.weight>0),t.some(r=>r.score===null))return null;let n=t.reduce((r,a)=>{let o=a.score,i=a.weight;return{weight:r.weight+i,sum:r.sum+o*i}},{weight:0,sum:0});return UY(n.sum/n.weight||0)}static scoreAllCategories(t,n){let r={};for(let[a,o]of Object.entries(t)){let i=o.auditRefs.map(l=>{let m={...l},p=n[m.id];return(p.scoreDisplayMode===b.SCORING_MODES.NOT_APPLICABLE||p.scoreDisplayMode===b.SCORING_MODES.INFORMATIVE||p.scoreDisplayMode===b.SCORING_MODES.MANUAL)&&(m.weight=0),m}),c=i.map(l=>({score:n[l.id].score,weight:l.weight})),u=e.arithmeticMean(c);r[a]={...o,auditRefs:i,id:a,score:u}}return r}}});function ou(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Eg(e,t);function n(){this.constructor=e}s(n,"__"),e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function qA(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n}function cp(e,t,n){if(n||arguments.length===2)for(var r=0,a=t.length,o;r<a;r++)(o||!(r in t))&&(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}var Eg,vr,Tg=g(()=>{d();Eg=s(function(e,t){return Eg=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[a]= +r[a])},Eg(e,t)},"extendStatics");s(ou,"__extends");vr=s(function(){return vr=Object.assign||s(function(t){for(var n,r=1,a=arguments.length;r<a;r++){n=arguments[r];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},"__assign"),vr.apply(this,arguments)},"__assign");s(qA,"__rest");s(cp,"__spreadArray")});var cs,Sg=g(()=>{d();cs=s(function(){return cs=Object.assign||s(function(t){for(var n,r=1,a=arguments.length;r<a;r++){n=arguments[r];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},"__assign"),cs.apply(this,arguments)},"__assign")});var Ge,Cg=g(()=>{d();(function(e){e[e.EXPECT_ARGUMENT_CLOSING_BRACE=1]="EXPECT_ARGUMENT_CLOSING_BRACE",e[e.EMPTY_ARGUMENT=2]="EMPTY_ARGUMENT",e[e.MALFORMED_ARGUMENT=3]="MALFORMED_ARGUMENT",e[e.EXPECT_ARGUMENT_TYPE=4]="EXPECT_ARGUMENT_TYPE",e[e.INVALID_ARGUMENT_TYPE=5]="INVALID_ARGUMENT_TYPE",e[e.EXPECT_ARGUMENT_STYLE=6]="EXPECT_ARGUMENT_STYLE",e[e.INVALID_NUMBER_SKELETON=7]="INVALID_NUMBER_SKELETON",e[e.INVALID_DATE_TIME_SKELETON=8]="INVALID_DATE_TIME_SKELETON",e[e.EXPECT_NUMBER_SKELETON=9]="EXPECT_NUMBER_SKELETON",e[e.EXPECT_DATE_TIME_SKELETON=10]="EXPECT_DATE_TIME_SKELETON",e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE=11]="UNCLOSED_QUOTE_IN_ARGUMENT_STYLE",e[e.EXPECT_SELECT_ARGUMENT_OPTIONS=12]="EXPECT_SELECT_ARGUMENT_OPTIONS",e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE=13]="EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE",e[e.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE=14]="INVALID_PLURAL_ARGUMENT_OFFSET_VALUE",e[e.EXPECT_SELECT_ARGUMENT_SELECTOR=15]="EXPECT_SELECT_ARGUMENT_SELECTOR",e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR= +16]="EXPECT_PLURAL_ARGUMENT_SELECTOR",e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT=17]="EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT",e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT=18]="EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT",e[e.INVALID_PLURAL_ARGUMENT_SELECTOR=19]="INVALID_PLURAL_ARGUMENT_SELECTOR",e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR=20]="DUPLICATE_PLURAL_ARGUMENT_SELECTOR",e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR=21]="DUPLICATE_SELECT_ARGUMENT_SELECTOR",e[e.MISSING_OTHER_CLAUSE=22]="MISSING_OTHER_CLAUSE",e[e.INVALID_TAG=23]="INVALID_TAG",e[e.INVALID_TAG_NAME=25]="INVALID_TAG_NAME",e[e.UNMATCHED_CLOSING_TAG=26]="UNMATCHED_CLOSING_TAG",e[e.UNCLOSED_TAG=27]="UNCLOSED_TAG"})(Ge||(Ge={}))});function kg(e){return e.type===Tt.literal}function HA(e){return e.type===Tt.argument}function up(e){return e.type===Tt.number}function lp(e){return e.type===Tt.date}function dp(e){return e.type===Tt.time}function mp(e){return e.type===Tt.select}function pp(e){return e.type===Tt.plural}function WA(e){return e.type===Tt.pound}function fp(e){return e.type===Tt.tag}function hp(e){return!!(e&&typeof e=="object"&&e.type===ti.number)}function iu(e){return!!(e&&typeof e=="object"&&e.type===ti.dateTime)}var Tt,ti,gp=g(()=>{d();(function(e){e[e.literal=0]="literal",e[e.argument=1]="argument",e[e.number=2]="number",e[e.date=3]="date",e[e.time=4]="time",e[e.select=5]="select",e[e.plural=6]="plural",e[e.pound=7]="pound",e[e.tag=8]="tag"})(Tt||(Tt={}));(function(e){e[e.number=0]="number",e[e.dateTime=1]="dateTime"})(ti||(ti={}));s(kg,"isLiteralElement");s(HA,"isArgumentElement");s(up,"isNumberElement");s(lp,"isDateElement");s(dp,"isTimeElement");s(mp,"isSelectElement");s(pp,"isPluralElement");s(WA,"\ +isPoundElement");s(fp,"isTagElement");s(hp,"isNumberSkeleton");s(iu,"isDateTimeSkeleton")});var Fg,GA=g(()=>{d();Fg=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/});function VA(e){var t={};return e.replace(jY,function(n){var r=n.length;switch(n[0]){case"G":t.era=r===4?"long":r===5?"narrow":"short";break;case"y":t.year=r===2?"2-digit":"numeric";break;case"Y":case"u":case"U":case"r":throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");case"q":case"Q":throw new RangeError("`q/Q` (quarter) patterns are not supported");case"M":case"L":t.month=["numeric","2-digit","short","long","narrow"][r-1];break;case"w":case"W":throw new RangeError("`w/W` (week) patterns are not supported");case"d":t.day=["numeric","2-digit"][r-1];break;case"D":case"F":case"g":throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");case"E":t.weekday=r===4?"short":r===5?"narrow":"short";break;case"e":if(r<4)throw new RangeError("`e..eee` (weekday) patterns are not supported");t.weekday=["short","long","narrow","short"][r-4];break;case"c":if(r<4)throw new RangeError("`c..ccc` (weekday) patterns are not supported");t.weekday=["s\ +hort","long","narrow","short"][r-4];break;case"a":t.hour12=!0;break;case"b":case"B":throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead");case"h":t.hourCycle="h12",t.hour=["numeric","2-digit"][r-1];break;case"H":t.hourCycle="h23",t.hour=["numeric","2-digit"][r-1];break;case"K":t.hourCycle="h11",t.hour=["numeric","2-digit"][r-1];break;case"k":t.hourCycle="h24",t.hour=["numeric","2-digit"][r-1];break;case"j":case"J":case"C":throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");case"m":t.minute=["numeric","2-digit"][r-1];break;case"s":t.second=["numeric","2-digit"][r-1];break;case"S":case"A":throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead");case"z":t.timeZoneName=r<4?"short":"long";break;case"Z":case"O":case"v":case"V":case"X":case"x":throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")}return""}),t}var jY,$A=g(()=>{d();jY=/(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g; +s(VA,"parseDateTimeSkeleton")});var At,YA=g(()=>{d();At=s(function(){return At=Object.assign||s(function(t){for(var n,r=1,a=arguments.length;r<a;r++){n=arguments[r];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},"__assign"),At.apply(this,arguments)},"__assign")});var KA,JA=g(()=>{d();KA=/[\t-\r \x85\u200E\u200F\u2028\u2029]/i});function e_(e){if(e.length===0)throw new Error("Number skeleton cannot be empty");for(var t=e.split(KA).filter(function(f){return f.length>0}),n=[],r=0,a=t;r<a.length;r++){var o=a[r],i=o.split("/");if(i.length===0)throw new Error("Invalid number skeleton");for(var c=i[0],u=i.slice(1),l=0,m=u;l<m.length;l++){var p=m[l];if(p.length===0)throw new Error("Invalid number skeleton")}n.push({stem:c,options:u})}return n}function zY(e){return e.replace(/^(.*?)-/,"")}function ZA(e){var t={};return e[e.length-1]==="r"?t.roundingPriority="morePrecision":e[e.length-1]==="s"&&(t.roundingPriority="lessPrecision"),e.replace(t_,function(n,r,a){return typeof a!="string"?(t.minimumSignificantDigits=r.length,t.maximumSignificantDigits=r.length):a==="+"?t.minimumSignificantDigits=r.length:r[0]==="#"?t.maximumSignificantDigits=r.length:(t.minimumSignificantDigits=r.length,t.maximumSignificantDigits=r.length+(typeof a=="string"?a.length:0)),""}),t}function r_(e){switch(e){case"sign-auto":return{signDisplay:"a\ +uto"};case"sign-accounting":case"()":return{currencySign:"accounting"};case"sign-always":case"+!":return{signDisplay:"always"};case"sign-accounting-always":case"()!":return{signDisplay:"always",currencySign:"accounting"};case"sign-except-zero":case"+?":return{signDisplay:"exceptZero"};case"sign-accounting-except-zero":case"()?":return{signDisplay:"exceptZero",currencySign:"accounting"};case"sign-never":case"+_":return{signDisplay:"never"}}}function HY(e){var t;if(e[0]==="E"&&e[1]==="E"?(t={notation:"engineering"},e=e.slice(2)):e[0]==="E"&&(t={notation:"scientific"},e=e.slice(1)),t){var n=e.slice(0,2);if(n==="+!"?(t.signDisplay="always",e=e.slice(2)):n==="+?"&&(t.signDisplay="exceptZero",e=e.slice(2)),!n_.test(e))throw new Error("Malformed concise eng/scientific notation");t.minimumIntegerDigits=e.length}return t}function QA(e){var t={},n=r_(e);return n||t}function a_(e){for(var t={},n=0,r=e;n<r.length;n++){var a=r[n];switch(a.stem){case"percent":case"%":t.style="percent";continue;case"\ +%x100":t.style="percent",t.scale=100;continue;case"currency":t.style="currency",t.currency=a.options[0];continue;case"group-off":case",_":t.useGrouping=!1;continue;case"precision-integer":case".":t.maximumFractionDigits=0;continue;case"measure-unit":case"unit":t.style="unit",t.unit=zY(a.options[0]);continue;case"compact-short":case"K":t.notation="compact",t.compactDisplay="short";continue;case"compact-long":case"KK":t.notation="compact",t.compactDisplay="long";continue;case"scientific":t=At(At(At({},t),{notation:"scientific"}),a.options.reduce(function(u,l){return At(At({},u),QA(l))},{}));continue;case"engineering":t=At(At(At({},t),{notation:"engineering"}),a.options.reduce(function(u,l){return At(At({},u),QA(l))},{}));continue;case"notation-simple":t.notation="standard";continue;case"unit-width-narrow":t.currencyDisplay="narrowSymbol",t.unitDisplay="narrow";continue;case"unit-width-short":t.currencyDisplay="code",t.unitDisplay="short";continue;case"unit-width-full-name":t.currencyDisplay= +"name",t.unitDisplay="long";continue;case"unit-width-iso-code":t.currencyDisplay="symbol";continue;case"scale":t.scale=parseFloat(a.options[0]);continue;case"integer-width":if(a.options.length>1)throw new RangeError("integer-width stems only accept a single optional option");a.options[0].replace(qY,function(u,l,m,p,f,h){if(l)t.minimumIntegerDigits=m.length;else{if(p&&f)throw new Error("We currently do not support maximum integer digits");if(h)throw new Error("We currently do not support exact integer digits")}return""});continue}if(n_.test(a.stem)){t.minimumIntegerDigits=a.stem.length;continue}if(XA.test(a.stem)){if(a.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");a.stem.replace(XA,function(u,l,m,p,f,h){return m==="*"?t.minimumFractionDigits=l.length:p&&p[0]==="#"?t.maximumFractionDigits=p.length:f&&h?(t.minimumFractionDigits=f.length,t.maximumFractionDigits=f.length+h.length):(t.minimumFractionDigits=l.length,t.maximumFractionDigits= +l.length),""});var o=a.options[0];o==="w"?t=At(At({},t),{trailingZeroDisplay:"stripIfInteger"}):o&&(t=At(At({},t),ZA(o)));continue}if(t_.test(a.stem)){t=At(At({},t),ZA(a.stem));continue}var i=r_(a.stem);i&&(t=At(At({},t),i));var c=HY(a.stem);c&&(t=At(At({},t),c))}return t}var XA,t_,qY,n_,o_=g(()=>{d();YA();JA();s(e_,"parseNumberSkeletonFromString");s(zY,"icuUnitToEcma");XA=/^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,t_=/^(@+)?(\+|#+)?[rs]?$/g,qY=/(\*)(0+)|(#+)(0+)|(0+)/g,n_=/^(0+)$/;s(ZA,"parseSignificantPrecision");s(r_,"parseSign");s(HY,"parseConciseScientificAndEngineeringStem");s(QA,"parseNotationOptions");s(a_,"parseNumberSkeleton")});var i_=g(()=>{d();$A();o_()});var su,s_=g(()=>{d();su={"001":["H","h"],AC:["H","h","hb","hB"],AD:["H","hB"],AE:["h","hB","hb","H"],AF:["H","hb","hB","h"],AG:["h","hb","H","hB"],AI:["H","h","hb","hB"],AL:["h","H","hB"],AM:["H","hB"],AO:["H","hB"],AR:["H","h","hB","hb"],AS:["h","H"],AT:["H","hB"],AU:["h","hb","H","hB"],AW:["H","hB"],AX:["H"],AZ:["H","hB","h"],BA:["H","hB","h"],BB:["h","hb","H","hB"],BD:["h","hB","H"],BE:["H","hB"],BF:["H","hB"],BG:["H","hB","h"],BH:["h","hB","hb","H"],BJ:["H","hB"],BL:["H","hB"],BM:["h","hb","H","hB"],BN:["hb","hB","h","H"],BO:["H","hB","h","hb"],BQ:["H"],BR:["H","hB"],BS:["h","hb","H","hB"],BT:["h","H"],BW:["H","h","hb","hB"],BZ:["H","h","hb","hB"],CA:["h","hb","H","hB"],CC:["H","h","hb","hB"],CD:["hB","H"],CF:["H","h","hB"],CG:["H","hB"],CH:["H","hB","h"],CI:["H","hB"],CK:["H","h","hb","hB"],CL:["H","h","hB","hb"],CM:["H","h","hB"],CN:["H","hB","hb","h"],CO:["h","H","hB","hb"],CP:["H"],CR:["H","h","hB","hb"],CU:["H","h","hB","hb"],CV:["H","hB"],CX:["H","h","hb","hB"],CY:["h","H","h\ b","hB"],CZ:["H"],DE:["H","hB"],DG:["H","h","hb","hB"],DJ:["h","H"],DK:["H"],DM:["h","hb","H","hB"],DO:["h","H","hB","hb"],DZ:["h","hB","hb","H"],EA:["H","h","hB","hb"],EC:["H","hB","h","hb"],EE:["H","hB"],EG:["h","hB","hb","H"],EH:["h","hB","hb","H"],ER:["h","H"],ES:["H","hB","h","hb"],ET:["hB","hb","h","H"],FI:["H"],FJ:["h","hb","H","hB"],FK:["H","h","hb","hB"],FM:["h","hb","H","hB"],FR:["H","hB"],GA:["H","hB"],GB:["H","h","hb","hB"],GD:["h","hb","H","hB"],GE:["H","hB","h"],GF:["H","hB"],GG:["H","h","hb","hB"],GH:["h","H"],GI:["H","h","hb","hB"],GM:["h","hb","H","hB"],GN:["H","hB"],GP:["H","hB"],GQ:["H","hB","h","hb"],GR:["h","H","hb","hB"],GT:["H","h","hB","hb"],GU:["h","hb","H","hB"],GW:["H","hB"],GY:["h","hb","H","hB"],HK:["h","hB","hb","H"],HN:["H","h","hB","hb"],HR:["H","hB"],IC:["H","h","hB","hb"],ID:["H"],IE:["H","h","hb","hB"],IL:["H","hB"],IM:["H","h","hb","hB"],IN:["h","H"],IO:["H","h","hb","hB"],IQ:["h","hB","hb","H"],IR:["hB","H"],IS:["H"],IT:["H","hB"],JE:["H","h","hb","\ hB"],JM:["h","hb","H","hB"],JO:["h","hB","hb","H"],JP:["H","h","K"],KE:["hB","hb","H","h"],KG:["H","h","hB","hb"],KH:["hB","h","H","hb"],KI:["h","hb","H","hB"],KM:["H","h","hB","hb"],KN:["h","hb","H","hB"],KP:["h","H","hB","hb"],KR:["h","H","hB","hb"],KW:["h","hB","hb","H"],KY:["h","hb","H","hB"],KZ:["H","hB"],LA:["H","hb","hB","h"],LB:["h","hB","hb","H"],LC:["h","hb","H","hB"],LI:["H","hB","h"],LK:["H","h","hB","hb"],LR:["h","hb","H","hB"],LS:["h","H"],LT:["H","h","hb","hB"],LU:["H","h","hB"],LV:["H","hB","hb","h"],LY:["h","hB","hb","H"],MA:["H","h","hB","hb"],MC:["H","hB"],MD:["H","hB"],ME:["H","hB","h"],MF:["H","hB"],MH:["h","hb","H","hB"],MK:["H","h","hb","hB"],ML:["H"],MM:["hB","hb","H","h"],MN:["H","h","hb","hB"],MO:["h","hB","hb","H"],MP:["h","hb","H","hB"],MQ:["H","hB"],MR:["h","hB","hb","H"],MS:["H","h","hb","hB"],MW:["h","hb","H","hB"],MX:["H","h","hB","hb"],MY:["hb","hB","h","H"],MZ:["H","hB"],NA:["h","H","hB","hb"],NC:["H","hB"],NE:["H"],NF:["H","h","hb","hB"],NG:["H","h","\ hb","hB"],NI:["H","h","hB","hb"],NL:["H","hB"],NP:["H","h","hB"],NR:["H","h","hb","hB"],NU:["H","h","hb","hB"],NZ:["h","hb","H","hB"],OM:["h","hB","hb","H"],PA:["h","H","hB","hb"],PE:["H","hB","h","hb"],PF:["H","h","hB"],PG:["h","H"],PH:["h","hB","hb","H"],PK:["h","hB","H"],PM:["H","hB"],PN:["H","h","hb","hB"],PR:["h","H","hB","hb"],PS:["h","hB","hb","H"],PT:["H","hB"],PW:["h","H"],PY:["H","h","hB","hb"],QA:["h","hB","hb","H"],RE:["H","hB"],RO:["H","hB"],RS:["H","hB","h"],RU:["H"],SA:["h","hB","hb","H"],SB:["h","hb","H","hB"],SC:["H","h","hB"],SD:["h","hB","hb","H"],SE:["H"],SG:["h","hb","H","hB"],SH:["H","h","hb","hB"],SI:["H","hB"],SJ:["H"],SK:["H"],SL:["h","hb","H","hB"],SM:["H","h","hB"],SN:["H","h","hB"],SO:["h","H"],SR:["H","hB"],SS:["h","hb","H","hB"],ST:["H","hB"],SV:["H","h","hB","hb"],SX:["H","h","hb","hB"],SY:["h","hB","hb","H"],SZ:["h","hb","H","hB"],TA:["H","h","hb","hB"],TC:["h","hb","H","hB"],TD:["h","H","hB"],TF:["H","h","hB"],TG:["H","hB"],TL:["H","hB","hb","h"],TN:["h", "hB","hb","H"],TO:["h","H"],TR:["H","hB"],TT:["h","hb","H","hB"],TW:["hB","hb","h","H"],TZ:["hB","hb","H","h"],UA:["H","hB","h"],UG:["hB","hb","H","h"],UM:["h","hb","H","hB"],US:["h","hb","H","hB"],UY:["H","h","hB","hb"],UZ:["H","hB","h"],VA:["H","h","hB"],VC:["h","hb","H","hB"],VE:["h","H","hB","hb"],VG:["h","hb","H","hB"],VI:["h","hb","H","hB"],VU:["h","H"],WF:["H","hB"],WS:["h","H"],XK:["H","hB","h"],YE:["h","hB","hb","H"],YT:["H","hB"],ZA:["H","h","hb","hB"],ZM:["h","hb","H","hB"],"af-ZA":["H","h","hB","hb"],"ar-001":["h","hB","hb","H"],"ca-ES":["H","h","hB"],"en-001":["h","hb","H","hB"],"es-BO":["H","h","hB","hb"],"es-BR":["H","h","hB","hb"],"es-EC":["H","h","hB","hb"],"es-ES":["H","h","hB","hb"],"es-GQ":["H","h","hB","hb"],"es-PE":["H","h","hB","hb"],"fr-CA":["H","h","hB"],"gl-ES":["H","h","hB"],"gu-IN":["hB","hb","h","H"],"hi-IN":["hB","h","H"],"it-CH":["H","h","hB"],"it-IT":["H","h","hB"],"kn-IN":["hB","h","H"],"ml-IN":["hB","h","H"],"mr-IN":["hB","hb","h","H"],"pa-IN":["hB","h\ -b","h","H"],"ta-IN":["hB","h","hb","H"],"te-IN":["hB","h","H"],"zu-ZA":["H","hB","hb","h"]}});function CI(e,t){for(var r="",n=0;n<e.length;n++){var i=e.charAt(n);if(i==="j"){for(var a=0;n+1<e.length&&e.charAt(n+1)===i;)a++,n++;var o=1+(a&1),u=a<2?1:3+(a>>1),l="a",c=a$(t);for((c=="H"||c=="k")&&(u=0);u-- >0;)r+=l;for(;o-- >0;)r=c+r}else i==="J"?r+="H":r+=i}return r}function a$(e){var t=e.hourCycle;if(t===void 0&&e.hourCycles&&e.hourCycles.length&&(t=e.hourCycles[0]),t)switch(t){case"h24":return"k";case"h23":return"H";case"h12":return"h";case"h11":return"K";default:throw new Error("Invalid hourCycle")}var r=e.language,n;r!=="root"&&(n=e.maximize().region);var i=ol[n||""]||ol[r||""]||ol["".concat(r,"-001")]||ol["001"];return i[0]}var FI=g(()=>{d();SI();s(CI,"getBestPattern");s(a$,"getDefaultHourSymbolFromLocale")});function Xe(e,t){return{start:e,end:t}}function AI(e,t){return new RegExp(e,t)}function _g(e){return e>=97&&e<=122||e>=65&&e<=90}function v$(e){return _g(e)||e===47}function b$(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function MI(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function w$(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e=== +b","h","H"],"ta-IN":["hB","h","hb","H"],"te-IN":["hB","h","H"],"zu-ZA":["H","hB","hb","h"]}});function c_(e,t){for(var n="",r=0;r<e.length;r++){var a=e.charAt(r);if(a==="j"){for(var o=0;r+1<e.length&&e.charAt(r+1)===a;)o++,r++;var i=1+(o&1),c=o<2?1:3+(o>>1),u="a",l=WY(t);for((l=="H"||l=="k")&&(c=0);c-- >0;)n+=u;for(;i-- >0;)n=l+n}else a==="J"?n+="H":n+=a}return n}function WY(e){var t=e.hourCycle;if(t===void 0&&e.hourCycles&&e.hourCycles.length&&(t=e.hourCycles[0]),t)switch(t){case"h24":return"k";case"h23":return"H";case"h12":return"h";case"h11":return"K";default:throw new Error("Invalid hourCycle")}var n=e.language,r;n!=="root"&&(r=e.maximize().region);var a=su[r||""]||su[n||""]||su["".concat(n,"-001")]||su["001"];return a[0]}var u_=g(()=>{d();s_();s(c_,"getBestPattern");s(WY,"getDefaultHourSymbolFromLocale")});function et(e,t){return{start:e,end:t}}function f_(e,t){return new RegExp(e,t)}function Ng(e){return e>=97&&e<=122||e>=65&&e<=90}function rK(e){return Ng(e)||e===47}function aK(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function g_(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function oK(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e=== 8217||e===8218||e>=8219&&e<=8220||e===8221||e===8222||e===8223||e>=8224&&e<=8231||e>=8240&&e<=8248||e===8249||e===8250||e>=8251&&e<=8254||e>=8257&&e<=8259||e===8260||e===8261||e===8262||e>=8263&&e<=8273||e===8274||e===8275||e>=8277&&e<=8286||e>=8592&&e<=8596||e>=8597&&e<=8601||e>=8602&&e<=8603||e>=8604&&e<=8607||e===8608||e>=8609&&e<=8610||e===8611||e>=8612&&e<=8613||e===8614||e>=8615&&e<=8621||e===8622||e>=8623&&e<=8653||e>=8654&&e<=8655||e>=8656&&e<=8657||e===8658||e===8659||e===8660||e>=8661&&e<=8691||e>=8692&&e<=8959||e>=8960&&e<=8967||e===8968||e===8969||e===8970||e===8971||e>=8972&&e<=8991||e>=8992&&e<=8993||e>=8994&&e<=9e3||e===9001||e===9002||e>=9003&&e<=9083||e===9084||e>=9085&&e<=9114||e>=9115&&e<=9139||e>=9140&&e<=9179||e>=9180&&e<=9185||e>=9186&&e<=9254||e>=9255&&e<=9279||e>=9280&&e<=9290||e>=9291&&e<=9311||e>=9472&&e<=9654||e===9655||e>=9656&&e<=9664||e===9665||e>=9666&&e<=9719||e>=9720&&e<=9727||e>=9728&&e<=9838||e===9839||e>=9840&&e<=10087||e===10088||e===10089||e===10090|| e===10091||e===10092||e===10093||e===10094||e===10095||e===10096||e===10097||e===10098||e===10099||e===10100||e===10101||e>=10132&&e<=10175||e>=10176&&e<=10180||e===10181||e===10182||e>=10183&&e<=10213||e===10214||e===10215||e===10216||e===10217||e===10218||e===10219||e===10220||e===10221||e===10222||e===10223||e>=10224&&e<=10239||e>=10240&&e<=10495||e>=10496&&e<=10626||e===10627||e===10628||e===10629||e===10630||e===10631||e===10632||e===10633||e===10634||e===10635||e===10636||e===10637||e===10638||e===10639||e===10640||e===10641||e===10642||e===10643||e===10644||e===10645||e===10646||e===10647||e===10648||e>=10649&&e<=10711||e===10712||e===10713||e===10714||e===10715||e>=10716&&e<=10747||e===10748||e===10749||e>=10750&&e<=11007||e>=11008&&e<=11055||e>=11056&&e<=11076||e>=11077&&e<=11078||e>=11079&&e<=11084||e>=11085&&e<=11123||e>=11124&&e<=11125||e>=11126&&e<=11157||e===11158||e>=11159&&e<=11263||e>=11776&&e<=11777||e===11778||e===11779||e===11780||e===11781||e>=11782&&e<=11784||e=== -11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}var xg,o$,s$,u$,l$,c$,d$,p$,m$,f$,h$,Cg,kI,_I,Fg,RI,II,g$,y$,kg,Sg,NI,LI=g(()=>{d();wg();Dg();mm();lI();xI();FI();o$=new RegExp("^".concat(Tg.source,"*")),s$=new RegExp("".concat(Tg.source, -"*$"));s(Xe,"createLocation");u$=!!String.prototype.startsWith&&"_a".startsWith("a",1),l$=!!String.fromCodePoint,c$=!!Object.fromEntries,d$=!!String.prototype.codePointAt,p$=!!String.prototype.trimStart,m$=!!String.prototype.trimEnd,f$=!!Number.isSafeInteger,h$=f$?Number.isSafeInteger:function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},Cg=!0;try{kI=AI("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu"),Cg=((xg=kI.exec("a"))===null||xg===void 0?void 0:xg[0])==="a"}catch{Cg=!1}_I=s(u$?function(t,r,n){return t.startsWith(r,n)}:function(t,r,n){return t.slice(n,n+r.length)===r},"startsWith"),Fg=l$?String.fromCodePoint:s(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var n="",i=t.length,a=0,o;i>a;){if(o=t[a++],o>1114111)throw RangeError(o+" is not a valid code point");n+=o<65536?String.fromCharCode(o):String.fromCharCode(((o-=65536)>>10)+55296,o%1024+56320)}return n},"fromCodePoint"),RI=c$?Object.fromEntries:s(function(t){ -for(var r={},n=0,i=t;n<i.length;n++){var a=i[n],o=a[0],u=a[1];r[o]=u}return r},"fromEntries"),II=s(d$?function(t,r){return t.codePointAt(r)}:function(t,r){var n=t.length;if(!(r<0||r>=n)){var i=t.charCodeAt(r),a;return i<55296||i>56319||r+1===n||(a=t.charCodeAt(r+1))<56320||a>57343?i:(i-55296<<10)+(a-56320)+65536}},"codePointAt"),g$=s(p$?function(t){return t.trimStart()}:function(t){return t.replace(o$,"")},"trimStart"),y$=s(m$?function(t){return t.trimEnd()}:function(t){return t.replace(s$,"")},"trimEnd");s(AI,"RE");Cg?(Sg=AI("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu"),kg=s(function(t,r){var n;Sg.lastIndex=r;var i=Sg.exec(t);return(n=i[1])!==null&&n!==void 0?n:""},"matchIdentifierAtIndex")):kg=s(function(t,r){for(var n=[];;){var i=II(t,r);if(i===void 0||MI(i)||w$(i))break;n.push(i),r+=i>=65536?2:1}return Fg.apply(void 0,n)},"matchIdentifierAtIndex");NI=function(){function e(t,r){r===void 0&&(r={}),this.message=t,this.position={offset:0,line:1,column:1},this.ignoreTag=!!r.ignoreTag, -this.locale=r.locale,this.requiresOtherClause=!!r.requiresOtherClause,this.shouldParseSkeletons=!!r.shouldParseSkeletons}return s(e,"Parser"),e.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},e.prototype.parseMessage=function(t,r,n){for(var i=[];!this.isEOF();){var a=this.char();if(a===123){var o=this.parseArgument(t,n);if(o.err)return o;i.push(o.val)}else{if(a===125&&t>0)break;if(a===35&&(r==="plural"||r==="selectordinal")){var u=this.clonePosition();this.bump(),i.push({type:Et.pound,location:Xe(u,this.clonePosition())})}else if(a===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(Ve.UNMATCHED_CLOSING_TAG,Xe(this.clonePosition(),this.clonePosition()))}else if(a===60&&!this.ignoreTag&&_g(this.peek()||0)){var o=this.parseTag(t,r);if(o.err)return o;i.push(o.val)}else{var o=this.parseLiteral(t,r);if(o.err)return o;i.push(o.val)}}}return{val:i,err:null}},e.prototype.parseTag=function(t,r){var n=this. -clonePosition();this.bump();var i=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:Et.literal,value:"<".concat(i,"/>"),location:Xe(n,this.clonePosition())},err:null};if(this.bumpIf(">")){var a=this.parseMessage(t+1,r,!0);if(a.err)return a;var o=a.val,u=this.clonePosition();if(this.bumpIf("</")){if(this.isEOF()||!_g(this.char()))return this.error(Ve.INVALID_TAG,Xe(u,this.clonePosition()));var l=this.clonePosition(),c=this.parseTagName();return i!==c?this.error(Ve.UNMATCHED_CLOSING_TAG,Xe(l,this.clonePosition())):(this.bumpSpace(),this.bumpIf(">")?{val:{type:Et.tag,value:i,children:o,location:Xe(n,this.clonePosition())},err:null}:this.error(Ve.INVALID_TAG,Xe(u,this.clonePosition())))}else return this.error(Ve.UNCLOSED_TAG,Xe(n,this.clonePosition()))}else return this.error(Ve.INVALID_TAG,Xe(n,this.clonePosition()))},e.prototype.parseTagName=function(){var t=this.offset();for(this.bump();!this.isEOF()&&b$(this.char());)this.bump();return this.message.slice(t,this. -offset())},e.prototype.parseLiteral=function(t,r){for(var n=this.clonePosition(),i="";;){var a=this.tryParseQuote(r);if(a){i+=a;continue}var o=this.tryParseUnquoted(t,r);if(o){i+=o;continue}var u=this.tryParseLeftAngleBracket();if(u){i+=u;continue}break}var l=Xe(n,this.clonePosition());return{val:{type:Et.literal,value:i,location:l},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!v$(this.peek()||0))?(this.bump(),"<"):null},e.prototype.tryParseQuote=function(t){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(t==="plural"||t==="selectordinal")break;return null;default:return null}this.bump();var r=[this.char()];for(this.bump();!this.isEOF();){var n=this.char();if(n===39)if(this.peek()===39)r.push(39),this.bump();else{this.bump();break}else r.push(n);this.bump()}return Fg.apply(void 0,r)},e.prototype.tryParseUnquoted= -function(t,r){if(this.isEOF())return null;var n=this.char();return n===60||n===123||n===35&&(r==="plural"||r==="selectordinal")||n===125&&t>0?null:(this.bump(),Fg(n))},e.prototype.parseArgument=function(t,r){var n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(Ve.EXPECT_ARGUMENT_CLOSING_BRACE,Xe(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(Ve.EMPTY_ARGUMENT,Xe(n,this.clonePosition()));var i=this.parseIdentifierIfPossible().value;if(!i)return this.error(Ve.MALFORMED_ARGUMENT,Xe(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(Ve.EXPECT_ARGUMENT_CLOSING_BRACE,Xe(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:Et.argument,value:i,location:Xe(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(Ve.EXPECT_ARGUMENT_CLOSING_BRACE,Xe(n,this.clonePosition())):this.parseArgumentOptions(t,r,i,n);default:return this.error( -Ve.MALFORMED_ARGUMENT,Xe(n,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var t=this.clonePosition(),r=this.offset(),n=kg(this.message,r),i=r+n.length;this.bumpTo(i);var a=this.clonePosition(),o=Xe(t,a);return{value:n,location:o}},e.prototype.parseArgumentOptions=function(t,r,n,i){var a,o=this.clonePosition(),u=this.parseIdentifierIfPossible().value,l=this.clonePosition();switch(u){case"":return this.error(Ve.EXPECT_ARGUMENT_TYPE,Xe(o,l));case"number":case"date":case"time":{this.bumpSpace();var c=null;if(this.bumpIf(",")){this.bumpSpace();var p=this.clonePosition(),m=this.parseSimpleArgStyleIfPossible();if(m.err)return m;var f=y$(m.val);if(f.length===0)return this.error(Ve.EXPECT_ARGUMENT_STYLE,Xe(this.clonePosition(),this.clonePosition()));var h=Xe(p,this.clonePosition());c={style:f,styleLocation:h}}var y=this.tryParseArgumentClose(i);if(y.err)return y;var b=Xe(i,this.clonePosition());if(c&&_I(c?.style,"::",0)){var w=g$(c.style.slice(2));if(u==="number"){var m=this. -parseNumberSkeletonFromString(w,c.styleLocation);return m.err?m:{val:{type:Et.number,value:n,location:b,style:m.val},err:null}}else{if(w.length===0)return this.error(Ve.EXPECT_DATE_TIME_SKELETON,b);var E=w;this.locale&&(E=CI(w,this.locale));var f={type:za.dateTime,pattern:E,location:c.styleLocation,parsedOptions:this.shouldParseSkeletons?cI(E):{}},T=u==="date"?Et.date:Et.time;return{val:{type:T,value:n,location:b,style:f},err:null}}}return{val:{type:u==="number"?Et.number:u==="date"?Et.date:Et.time,value:n,location:b,style:(a=c?.style)!==null&&a!==void 0?a:null},err:null}}case"plural":case"selectordinal":case"select":{var S=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(Ve.EXPECT_SELECT_ARGUMENT_OPTIONS,Xe(S,ns({},S)));this.bumpSpace();var C=this.parseIdentifierIfPossible(),_=0;if(u!=="select"&&C.value==="offset"){if(!this.bumpIf(":"))return this.error(Ve.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,Xe(this.clonePosition(),this.clonePosition()));this.bumpSpace();var m=this. -tryParseDecimalInteger(Ve.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,Ve.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(m.err)return m;this.bumpSpace(),C=this.parseIdentifierIfPossible(),_=m.val}var L=this.tryParsePluralOrSelectOptions(t,u,r,C);if(L.err)return L;var y=this.tryParseArgumentClose(i);if(y.err)return y;var M=Xe(i,this.clonePosition());return u==="select"?{val:{type:Et.select,value:n,options:RI(L.val),location:M},err:null}:{val:{type:Et.plural,value:n,options:RI(L.val),offset:_,pluralType:u==="plural"?"cardinal":"ordinal",location:M},err:null}}default:return this.error(Ve.INVALID_ARGUMENT_TYPE,Xe(o,l))}},e.prototype.tryParseArgumentClose=function(t){return this.isEOF()||this.char()!==125?this.error(Ve.EXPECT_ARGUMENT_CLOSING_BRACE,Xe(t,this.clonePosition())):(this.bump(),{val:!0,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var t=0,r=this.clonePosition();!this.isEOF();){var n=this.char();switch(n){case 39:{this.bump();var i=this.clonePosition();if(!this.bumpUntil("\ -'"))return this.error(Ve.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,Xe(i,this.clonePosition()));this.bump();break}case 123:{t+=1,this.bump();break}case 125:{if(t>0)t-=1;else return{val:this.message.slice(r.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(r.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(t,r){var n=[];try{n=vI(t)}catch{return this.error(Ve.INVALID_NUMBER_SKELETON,r)}return{val:{type:za.number,tokens:n,location:r,parsedOptions:this.shouldParseSkeletons?EI(n):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(t,r,n,i){for(var a,o=!1,u=[],l=new Set,c=i.value,p=i.location;;){if(c.length===0){var m=this.clonePosition();if(r!=="select"&&this.bumpIf("=")){var f=this.tryParseDecimalInteger(Ve.EXPECT_PLURAL_ARGUMENT_SELECTOR,Ve.INVALID_PLURAL_ARGUMENT_SELECTOR);if(f.err)return f;p=Xe(m,this.clonePosition()),c=this.message.slice(m.offset,this.offset())}else break}if(l.has(c))return this.error(r=== -"select"?Ve.DUPLICATE_SELECT_ARGUMENT_SELECTOR:Ve.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,p);c==="other"&&(o=!0),this.bumpSpace();var h=this.clonePosition();if(!this.bumpIf("{"))return this.error(r==="select"?Ve.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:Ve.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,Xe(this.clonePosition(),this.clonePosition()));var y=this.parseMessage(t+1,r,n);if(y.err)return y;var b=this.tryParseArgumentClose(h);if(b.err)return b;u.push([c,{value:y.val,location:Xe(h,this.clonePosition())}]),l.add(c),this.bumpSpace(),a=this.parseIdentifierIfPossible(),c=a.value,p=a.location}return u.length===0?this.error(r==="select"?Ve.EXPECT_SELECT_ARGUMENT_SELECTOR:Ve.EXPECT_PLURAL_ARGUMENT_SELECTOR,Xe(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!o?this.error(Ve.MISSING_OTHER_CLAUSE,Xe(this.clonePosition(),this.clonePosition())):{val:u,err:null}},e.prototype.tryParseDecimalInteger=function(t,r){var n=1,i=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(n=-1); -for(var a=!1,o=0;!this.isEOF();){var u=this.char();if(u>=48&&u<=57)a=!0,o=o*10+(u-48),this.bump();else break}var l=Xe(i,this.clonePosition());return a?(o*=n,h$(o)?{val:o,err:null}:this.error(r,l)):this.error(t,l)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var t=this.position.offset;if(t>=this.message.length)throw Error("out of bound");var r=II(this.message,t);if(r===void 0)throw Error("Offset ".concat(t," is at invalid UTF-16 code unit boundary"));return r},e.prototype.error=function(t,r){return{val:null,err:{kind:t,message:this.message,location:r}}},e.prototype.bump=function(){if(!this.isEOF()){var t=this.char();t===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=t<65536?1: -2)}},e.prototype.bumpIf=function(t){if(_I(this.message,t,this.offset())){for(var r=0;r<t.length;r++)this.bump();return!0}return!1},e.prototype.bumpUntil=function(t){var r=this.offset(),n=this.message.indexOf(t,r);return n>=0?(this.bumpTo(n),!0):(this.bumpTo(this.message.length),!1)},e.prototype.bumpTo=function(t){if(this.offset()>t)throw Error("targetOffset ".concat(t," must be greater than or equal to the current offset ").concat(this.offset()));for(t=Math.min(t,this.message.length);;){var r=this.offset();if(r===t)break;if(r>t)throw Error("targetOffset ".concat(t," is at invalid UTF-16 code unit boundary"));if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&MI(this.char());)this.bump()},e.prototype.peek=function(){if(this.isEOF())return null;var t=this.char(),r=this.offset(),n=this.message.charCodeAt(r+(t>=65536?2:1));return n??null},e}();s(_g,"_isAlpha");s(v$,"_isAlphaOrSlash");s(b$,"_isPotentialElementNameChar");s(MI,"_isWhiteSpace");s(w$,"_isPa\ -tternSyntax")});function Rg(e){e.forEach(function(t){if(delete t.location,lm(t)||cm(t))for(var r in t.options)delete t.options[r].location,Rg(t.options[r].value);else om(t)&&pm(t.style)||(sm(t)||um(t))&&al(t.style)?delete t.style.location:dm(t)&&Rg(t.children)})}function PI(e,t){t===void 0&&(t={}),t=ns({shouldParseSkeletons:!0,requiresOtherClause:!0},t);var r=new NI(e,t).parse();if(r.err){var n=SyntaxError(Ve[r.err.kind]);throw n.location=r.err.location,n.originalMessage=r.err.message,n}return t?.captureLocation||Rg(r.val),r.val}var Ig=g(()=>{d();wg();Dg();LI();mm();mm();s(Rg,"pruneLocation");s(PI,"parse")});function fm(e,t){var r=t&&t.cache?t.cache:C$,n=t&&t.serializer?t.serializer:S$,i=t&&t.strategy?t.strategy:E$;return i(e,{cache:r,serializer:n})}function D$(e){return e==null||typeof e=="number"||typeof e=="boolean"}function OI(e,t,r,n){var i=D$(n)?n:r(n),a=t.get(i);return typeof a>"u"&&(a=e.call(this,n),t.set(i,a)),a}function BI(e,t,r){var n=Array.prototype.slice.call(arguments,3),i=r(n),a=t.get(i);return typeof a>"u"&&(a=e.apply(this,n),t.set(i,a)),a}function Ag(e,t,r,n,i){return r.bind(t,e,n,i)}function E$(e,t){var r=e.length===1?OI:BI;return Ag(e,this,r,t.cache.create(),t.serializer)}function T$(e,t){return Ag(e,this,BI,t.cache.create(),t.serializer)}function x$(e,t){return Ag(e,this,OI,t.cache.create(),t.serializer)}function Ng(){this.cache=Object.create(null)}var S$,C$,hm,UI=g(()=>{d();s(fm,"memoize");s(D$,"isPrimitive");s(OI,"monadic");s(BI,"variadic");s(Ag,"assemble");s(E$,"strategyDefault");s(T$,"strategyVariadic");s(x$,"strategyMonadic");S$=s(function(){return JSON.stringify(arguments)}, -"serializerDefault");s(Ng,"ObjectWithoutPrototypeCache");Ng.prototype.get=function(e){return this.cache[e]};Ng.prototype.set=function(e,t){this.cache[e]=t};C$={create:s(function(){return new Ng},"create")},hm={variadic:T$,monadic:x$}});var Ha,sl,Mg,jI,qI,Lg=g(()=>{d();bg();(function(e){e.MISSING_VALUE="MISSING_VALUE",e.INVALID_VALUE="INVALID_VALUE",e.MISSING_INTL_API="MISSING_INTL_API"})(Ha||(Ha={}));sl=function(e){il(t,e);function t(r,n,i){var a=e.call(this,r)||this;return a.code=n,a.originalMessage=i,a}return s(t,"FormatError"),t.prototype.toString=function(){return"[formatjs Error: ".concat(this.code,"] ").concat(this.message)},t}(Error),Mg=function(e){il(t,e);function t(r,n,i,a){return e.call(this,'Invalid values for "'.concat(r,'": "').concat(n,'". Options are "').concat(Object.keys(i).join('", "'),'"'),Ha.INVALID_VALUE,a)||this}return s(t,"InvalidValueError"),t}(sl),jI=function(e){il(t,e);function t(r,n,i){return e.call(this,'Value for "'.concat(r,'" must be of type ').concat(n),Ha.INVALID_VALUE,i)||this}return s(t,"InvalidValueTypeError"),t}(sl),qI=function(e){il(t,e);function t(r,n){return e.call(this,'The intl string context variable "'.concat(r,'" was not provided to the string "').concat(n,'"'),Ha.MISSING_VALUE, -n)||this}return s(t,"MissingValueError"),t}(sl)});function F$(e){return e.length<2?e:e.reduce(function(t,r){var n=t[t.length-1];return!n||n.type!==sr.literal||r.type!==sr.literal?t.push(r):n.value+=r.value,t},[])}function k$(e){return typeof e=="function"}function ul(e,t,r,n,i,a,o){if(e.length===1&&Eg(e[0]))return[{type:sr.literal,value:e[0].value}];for(var u=[],l=0,c=e;l<c.length;l++){var p=c[l];if(Eg(p)){u.push({type:sr.literal,value:p.value});continue}if(uI(p)){typeof a=="number"&&u.push({type:sr.literal,value:r.getNumberFormat(t).format(a)});continue}var m=p.value;if(!(i&&m in i))throw new qI(m,o);var f=i[m];if(sI(p)){(!f||typeof f=="string"||typeof f=="number")&&(f=typeof f=="string"||typeof f=="number"?String(f):""),u.push({type:typeof f=="string"?sr.literal:sr.object,value:f});continue}if(sm(p)){var h=typeof p.style=="string"?n.date[p.style]:al(p.style)?p.style.parsedOptions:void 0;u.push({type:sr.literal,value:r.getDateTimeFormat(t,h).format(f)});continue}if(um(p)){var h=typeof p.style=="string"?n.time[p.style]:al(p.style)?p.style. -parsedOptions:n.time.medium;u.push({type:sr.literal,value:r.getDateTimeFormat(t,h).format(f)});continue}if(om(p)){var h=typeof p.style=="string"?n.number[p.style]:pm(p.style)?p.style.parsedOptions:void 0;h&&h.scale&&(f=f*(h.scale||1)),u.push({type:sr.literal,value:r.getNumberFormat(t,h).format(f)});continue}if(dm(p)){var y=p.children,b=p.value,w=i[b];if(!k$(w))throw new jI(b,"function",o);var E=ul(y,t,r,n,i,a),T=w(E.map(function(_){return _.value}));Array.isArray(T)||(T=[T]),u.push.apply(u,T.map(function(_){return{type:typeof _=="string"?sr.literal:sr.object,value:_}}))}if(lm(p)){var S=p.options[f]||p.options.other;if(!S)throw new Mg(p.value,f,Object.keys(p.options),o);u.push.apply(u,ul(S.value,t,r,n,i));continue}if(cm(p)){var S=p.options["=".concat(f)];if(!S){if(!Intl.PluralRules)throw new sl(`Intl.PluralRules is not available in this environment. +11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}var Rg,GY,VY,$Y,YY,KY,JY,XY,ZY,QY,eK,Ag,l_,d_,_g,m_,p_,tK,nK,Mg,Ig,h_,y_=g(()=>{d();Sg();Cg();gp();GA();i_();u_();GY=new RegExp("^".concat(Fg.source,"*")),VY=new RegExp("".concat(Fg.source, +"*$"));s(et,"createLocation");$Y=!!String.prototype.startsWith&&"_a".startsWith("a",1),YY=!!String.fromCodePoint,KY=!!Object.fromEntries,JY=!!String.prototype.codePointAt,XY=!!String.prototype.trimStart,ZY=!!String.prototype.trimEnd,QY=!!Number.isSafeInteger,eK=QY?Number.isSafeInteger:function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},Ag=!0;try{l_=f_("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu"),Ag=((Rg=l_.exec("a"))===null||Rg===void 0?void 0:Rg[0])==="a"}catch{Ag=!1}d_=s($Y?function(t,n,r){return t.startsWith(n,r)}:function(t,n,r){return t.slice(r,r+n.length)===n},"startsWith"),_g=YY?String.fromCodePoint:s(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var r="",a=t.length,o=0,i;a>o;){if(i=t[o++],i>1114111)throw RangeError(i+" is not a valid code point");r+=i<65536?String.fromCharCode(i):String.fromCharCode(((i-=65536)>>10)+55296,i%1024+56320)}return r},"fromCodePoint"),m_=KY?Object.fromEntries:s(function(t){ +for(var n={},r=0,a=t;r<a.length;r++){var o=a[r],i=o[0],c=o[1];n[i]=c}return n},"fromEntries"),p_=s(JY?function(t,n){return t.codePointAt(n)}:function(t,n){var r=t.length;if(!(n<0||n>=r)){var a=t.charCodeAt(n),o;return a<55296||a>56319||n+1===r||(o=t.charCodeAt(n+1))<56320||o>57343?a:(a-55296<<10)+(o-56320)+65536}},"codePointAt"),tK=s(XY?function(t){return t.trimStart()}:function(t){return t.replace(GY,"")},"trimStart"),nK=s(ZY?function(t){return t.trimEnd()}:function(t){return t.replace(VY,"")},"trimEnd");s(f_,"RE");Ag?(Ig=f_("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu"),Mg=s(function(t,n){var r;Ig.lastIndex=n;var a=Ig.exec(t);return(r=a[1])!==null&&r!==void 0?r:""},"matchIdentifierAtIndex")):Mg=s(function(t,n){for(var r=[];;){var a=p_(t,n);if(a===void 0||g_(a)||oK(a))break;r.push(a),n+=a>=65536?2:1}return _g.apply(void 0,r)},"matchIdentifierAtIndex");h_=function(){function e(t,n){n===void 0&&(n={}),this.message=t,this.position={offset:0,line:1,column:1},this.ignoreTag=!!n.ignoreTag, +this.locale=n.locale,this.requiresOtherClause=!!n.requiresOtherClause,this.shouldParseSkeletons=!!n.shouldParseSkeletons}return s(e,"Parser"),e.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},e.prototype.parseMessage=function(t,n,r){for(var a=[];!this.isEOF();){var o=this.char();if(o===123){var i=this.parseArgument(t,r);if(i.err)return i;a.push(i.val)}else{if(o===125&&t>0)break;if(o===35&&(n==="plural"||n==="selectordinal")){var c=this.clonePosition();this.bump(),a.push({type:Tt.pound,location:et(c,this.clonePosition())})}else if(o===60&&!this.ignoreTag&&this.peek()===47){if(r)break;return this.error(Ge.UNMATCHED_CLOSING_TAG,et(this.clonePosition(),this.clonePosition()))}else if(o===60&&!this.ignoreTag&&Ng(this.peek()||0)){var i=this.parseTag(t,n);if(i.err)return i;a.push(i.val)}else{var i=this.parseLiteral(t,n);if(i.err)return i;a.push(i.val)}}}return{val:a,err:null}},e.prototype.parseTag=function(t,n){var r=this. +clonePosition();this.bump();var a=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:Tt.literal,value:"<".concat(a,"/>"),location:et(r,this.clonePosition())},err:null};if(this.bumpIf(">")){var o=this.parseMessage(t+1,n,!0);if(o.err)return o;var i=o.val,c=this.clonePosition();if(this.bumpIf("</")){if(this.isEOF()||!Ng(this.char()))return this.error(Ge.INVALID_TAG,et(c,this.clonePosition()));var u=this.clonePosition(),l=this.parseTagName();return a!==l?this.error(Ge.UNMATCHED_CLOSING_TAG,et(u,this.clonePosition())):(this.bumpSpace(),this.bumpIf(">")?{val:{type:Tt.tag,value:a,children:i,location:et(r,this.clonePosition())},err:null}:this.error(Ge.INVALID_TAG,et(c,this.clonePosition())))}else return this.error(Ge.UNCLOSED_TAG,et(r,this.clonePosition()))}else return this.error(Ge.INVALID_TAG,et(r,this.clonePosition()))},e.prototype.parseTagName=function(){var t=this.offset();for(this.bump();!this.isEOF()&&aK(this.char());)this.bump();return this.message.slice(t,this. +offset())},e.prototype.parseLiteral=function(t,n){for(var r=this.clonePosition(),a="";;){var o=this.tryParseQuote(n);if(o){a+=o;continue}var i=this.tryParseUnquoted(t,n);if(i){a+=i;continue}var c=this.tryParseLeftAngleBracket();if(c){a+=c;continue}break}var u=et(r,this.clonePosition());return{val:{type:Tt.literal,value:a,location:u},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!rK(this.peek()||0))?(this.bump(),"<"):null},e.prototype.tryParseQuote=function(t){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(t==="plural"||t==="selectordinal")break;return null;default:return null}this.bump();var n=[this.char()];for(this.bump();!this.isEOF();){var r=this.char();if(r===39)if(this.peek()===39)n.push(39),this.bump();else{this.bump();break}else n.push(r);this.bump()}return _g.apply(void 0,n)},e.prototype.tryParseUnquoted= +function(t,n){if(this.isEOF())return null;var r=this.char();return r===60||r===123||r===35&&(n==="plural"||n==="selectordinal")||r===125&&t>0?null:(this.bump(),_g(r))},e.prototype.parseArgument=function(t,n){var r=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(Ge.EXPECT_ARGUMENT_CLOSING_BRACE,et(r,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(Ge.EMPTY_ARGUMENT,et(r,this.clonePosition()));var a=this.parseIdentifierIfPossible().value;if(!a)return this.error(Ge.MALFORMED_ARGUMENT,et(r,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(Ge.EXPECT_ARGUMENT_CLOSING_BRACE,et(r,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:Tt.argument,value:a,location:et(r,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(Ge.EXPECT_ARGUMENT_CLOSING_BRACE,et(r,this.clonePosition())):this.parseArgumentOptions(t,n,a,r);default:return this.error( +Ge.MALFORMED_ARGUMENT,et(r,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var t=this.clonePosition(),n=this.offset(),r=Mg(this.message,n),a=n+r.length;this.bumpTo(a);var o=this.clonePosition(),i=et(t,o);return{value:r,location:i}},e.prototype.parseArgumentOptions=function(t,n,r,a){var o,i=this.clonePosition(),c=this.parseIdentifierIfPossible().value,u=this.clonePosition();switch(c){case"":return this.error(Ge.EXPECT_ARGUMENT_TYPE,et(i,u));case"number":case"date":case"time":{this.bumpSpace();var l=null;if(this.bumpIf(",")){this.bumpSpace();var m=this.clonePosition(),p=this.parseSimpleArgStyleIfPossible();if(p.err)return p;var f=nK(p.val);if(f.length===0)return this.error(Ge.EXPECT_ARGUMENT_STYLE,et(this.clonePosition(),this.clonePosition()));var h=et(m,this.clonePosition());l={style:f,styleLocation:h}}var y=this.tryParseArgumentClose(a);if(y.err)return y;var v=et(a,this.clonePosition());if(l&&d_(l?.style,"::",0)){var w=tK(l.style.slice(2));if(c==="number"){var p=this. +parseNumberSkeletonFromString(w,l.styleLocation);return p.err?p:{val:{type:Tt.number,value:r,location:v,style:p.val},err:null}}else{if(w.length===0)return this.error(Ge.EXPECT_DATE_TIME_SKELETON,v);var x=w;this.locale&&(x=c_(w,this.locale));var f={type:ti.dateTime,pattern:x,location:l.styleLocation,parsedOptions:this.shouldParseSkeletons?VA(x):{}},E=c==="date"?Tt.date:Tt.time;return{val:{type:E,value:r,location:v,style:f},err:null}}}return{val:{type:c==="number"?Tt.number:c==="date"?Tt.date:Tt.time,value:r,location:v,style:(o=l?.style)!==null&&o!==void 0?o:null},err:null}}case"plural":case"selectordinal":case"select":{var S=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(Ge.EXPECT_SELECT_ARGUMENT_OPTIONS,et(S,cs({},S)));this.bumpSpace();var k=this.parseIdentifierIfPossible(),R=0;if(c!=="select"&&k.value==="offset"){if(!this.bumpIf(":"))return this.error(Ge.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,et(this.clonePosition(),this.clonePosition()));this.bumpSpace();var p=this. +tryParseDecimalInteger(Ge.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,Ge.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(p.err)return p;this.bumpSpace(),k=this.parseIdentifierIfPossible(),R=p.val}var O=this.tryParsePluralOrSelectOptions(t,c,n,k);if(O.err)return O;var y=this.tryParseArgumentClose(a);if(y.err)return y;var N=et(a,this.clonePosition());return c==="select"?{val:{type:Tt.select,value:r,options:m_(O.val),location:N},err:null}:{val:{type:Tt.plural,value:r,options:m_(O.val),offset:R,pluralType:c==="plural"?"cardinal":"ordinal",location:N},err:null}}default:return this.error(Ge.INVALID_ARGUMENT_TYPE,et(i,u))}},e.prototype.tryParseArgumentClose=function(t){return this.isEOF()||this.char()!==125?this.error(Ge.EXPECT_ARGUMENT_CLOSING_BRACE,et(t,this.clonePosition())):(this.bump(),{val:!0,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var t=0,n=this.clonePosition();!this.isEOF();){var r=this.char();switch(r){case 39:{this.bump();var a=this.clonePosition();if(!this.bumpUntil("\ +'"))return this.error(Ge.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,et(a,this.clonePosition()));this.bump();break}case 123:{t+=1,this.bump();break}case 125:{if(t>0)t-=1;else return{val:this.message.slice(n.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(n.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(t,n){var r=[];try{r=e_(t)}catch{return this.error(Ge.INVALID_NUMBER_SKELETON,n)}return{val:{type:ti.number,tokens:r,location:n,parsedOptions:this.shouldParseSkeletons?a_(r):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(t,n,r,a){for(var o,i=!1,c=[],u=new Set,l=a.value,m=a.location;;){if(l.length===0){var p=this.clonePosition();if(n!=="select"&&this.bumpIf("=")){var f=this.tryParseDecimalInteger(Ge.EXPECT_PLURAL_ARGUMENT_SELECTOR,Ge.INVALID_PLURAL_ARGUMENT_SELECTOR);if(f.err)return f;m=et(p,this.clonePosition()),l=this.message.slice(p.offset,this.offset())}else break}if(u.has(l))return this.error(n=== +"select"?Ge.DUPLICATE_SELECT_ARGUMENT_SELECTOR:Ge.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,m);l==="other"&&(i=!0),this.bumpSpace();var h=this.clonePosition();if(!this.bumpIf("{"))return this.error(n==="select"?Ge.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:Ge.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,et(this.clonePosition(),this.clonePosition()));var y=this.parseMessage(t+1,n,r);if(y.err)return y;var v=this.tryParseArgumentClose(h);if(v.err)return v;c.push([l,{value:y.val,location:et(h,this.clonePosition())}]),u.add(l),this.bumpSpace(),o=this.parseIdentifierIfPossible(),l=o.value,m=o.location}return c.length===0?this.error(n==="select"?Ge.EXPECT_SELECT_ARGUMENT_SELECTOR:Ge.EXPECT_PLURAL_ARGUMENT_SELECTOR,et(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!i?this.error(Ge.MISSING_OTHER_CLAUSE,et(this.clonePosition(),this.clonePosition())):{val:c,err:null}},e.prototype.tryParseDecimalInteger=function(t,n){var r=1,a=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(r=-1); +for(var o=!1,i=0;!this.isEOF();){var c=this.char();if(c>=48&&c<=57)o=!0,i=i*10+(c-48),this.bump();else break}var u=et(a,this.clonePosition());return o?(i*=r,eK(i)?{val:i,err:null}:this.error(n,u)):this.error(t,u)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var t=this.position.offset;if(t>=this.message.length)throw Error("out of bound");var n=p_(this.message,t);if(n===void 0)throw Error("Offset ".concat(t," is at invalid UTF-16 code unit boundary"));return n},e.prototype.error=function(t,n){return{val:null,err:{kind:t,message:this.message,location:n}}},e.prototype.bump=function(){if(!this.isEOF()){var t=this.char();t===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=t<65536?1: +2)}},e.prototype.bumpIf=function(t){if(d_(this.message,t,this.offset())){for(var n=0;n<t.length;n++)this.bump();return!0}return!1},e.prototype.bumpUntil=function(t){var n=this.offset(),r=this.message.indexOf(t,n);return r>=0?(this.bumpTo(r),!0):(this.bumpTo(this.message.length),!1)},e.prototype.bumpTo=function(t){if(this.offset()>t)throw Error("targetOffset ".concat(t," must be greater than or equal to the current offset ").concat(this.offset()));for(t=Math.min(t,this.message.length);;){var n=this.offset();if(n===t)break;if(n>t)throw Error("targetOffset ".concat(t," is at invalid UTF-16 code unit boundary"));if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&g_(this.char());)this.bump()},e.prototype.peek=function(){if(this.isEOF())return null;var t=this.char(),n=this.offset(),r=this.message.charCodeAt(n+(t>=65536?2:1));return r??null},e}();s(Ng,"_isAlpha");s(rK,"_isAlphaOrSlash");s(aK,"_isPotentialElementNameChar");s(g_,"_isWhiteSpace");s(oK,"_isPa\ +tternSyntax")});function Og(e){e.forEach(function(t){if(delete t.location,mp(t)||pp(t))for(var n in t.options)delete t.options[n].location,Og(t.options[n].value);else up(t)&&hp(t.style)||(lp(t)||dp(t))&&iu(t.style)?delete t.style.location:fp(t)&&Og(t.children)})}function v_(e,t){t===void 0&&(t={}),t=cs({shouldParseSkeletons:!0,requiresOtherClause:!0},t);var n=new h_(e,t).parse();if(n.err){var r=SyntaxError(Ge[n.err.kind]);throw r.location=n.err.location,r.originalMessage=n.err.message,r}return t?.captureLocation||Og(n.val),n.val}var Lg=g(()=>{d();Sg();Cg();y_();gp();gp();s(Og,"pruneLocation");s(v_,"parse")});function yp(e,t){var n=t&&t.cache?t.cache:dK,r=t&&t.serializer?t.serializer:lK,a=t&&t.strategy?t.strategy:sK;return a(e,{cache:n,serializer:r})}function iK(e){return e==null||typeof e=="number"||typeof e=="boolean"}function b_(e,t,n,r){var a=iK(r)?r:n(r),o=t.get(a);return typeof o>"u"&&(o=e.call(this,r),t.set(a,o)),o}function w_(e,t,n){var r=Array.prototype.slice.call(arguments,3),a=n(r),o=t.get(a);return typeof o>"u"&&(o=e.apply(this,r),t.set(a,o)),o}function Pg(e,t,n,r,a){return n.bind(t,e,r,a)}function sK(e,t){var n=e.length===1?b_:w_;return Pg(e,this,n,t.cache.create(),t.serializer)}function cK(e,t){return Pg(e,this,w_,t.cache.create(),t.serializer)}function uK(e,t){return Pg(e,this,b_,t.cache.create(),t.serializer)}function Bg(){this.cache=Object.create(null)}var lK,dK,vp,D_=g(()=>{d();s(yp,"memoize");s(iK,"isPrimitive");s(b_,"monadic");s(w_,"variadic");s(Pg,"assemble");s(sK,"strategyDefault");s(cK,"strategyVariadic");s(uK,"strategyMonadic");lK=s(function(){return JSON.stringify(arguments)}, +"serializerDefault");s(Bg,"ObjectWithoutPrototypeCache");Bg.prototype.get=function(e){return this.cache[e]};Bg.prototype.set=function(e,t){this.cache[e]=t};dK={create:s(function(){return new Bg},"create")},vp={variadic:cK,monadic:uK}});var ni,cu,Ug,x_,E_,jg=g(()=>{d();Tg();(function(e){e.MISSING_VALUE="MISSING_VALUE",e.INVALID_VALUE="INVALID_VALUE",e.MISSING_INTL_API="MISSING_INTL_API"})(ni||(ni={}));cu=function(e){ou(t,e);function t(n,r,a){var o=e.call(this,n)||this;return o.code=r,o.originalMessage=a,o}return s(t,"FormatError"),t.prototype.toString=function(){return"[formatjs Error: ".concat(this.code,"] ").concat(this.message)},t}(Error),Ug=function(e){ou(t,e);function t(n,r,a,o){return e.call(this,'Invalid values for "'.concat(n,'": "').concat(r,'". Options are "').concat(Object.keys(a).join('", "'),'"'),ni.INVALID_VALUE,o)||this}return s(t,"InvalidValueError"),t}(cu),x_=function(e){ou(t,e);function t(n,r,a){return e.call(this,'Value for "'.concat(n,'" must be of type ').concat(r),ni.INVALID_VALUE,a)||this}return s(t,"InvalidValueTypeError"),t}(cu),E_=function(e){ou(t,e);function t(n,r){return e.call(this,'The intl string context variable "'.concat(n,'" was not provided to the string "').concat(r,'"'),ni.MISSING_VALUE, +r)||this}return s(t,"MissingValueError"),t}(cu)});function mK(e){return e.length<2?e:e.reduce(function(t,n){var r=t[t.length-1];return!r||r.type!==gn.literal||n.type!==gn.literal?t.push(n):r.value+=n.value,t},[])}function pK(e){return typeof e=="function"}function uu(e,t,n,r,a,o,i){if(e.length===1&&kg(e[0]))return[{type:gn.literal,value:e[0].value}];for(var c=[],u=0,l=e;u<l.length;u++){var m=l[u];if(kg(m)){c.push({type:gn.literal,value:m.value});continue}if(WA(m)){typeof o=="number"&&c.push({type:gn.literal,value:n.getNumberFormat(t).format(o)});continue}var p=m.value;if(!(a&&p in a))throw new E_(p,i);var f=a[p];if(HA(m)){(!f||typeof f=="string"||typeof f=="number")&&(f=typeof f=="string"||typeof f=="number"?String(f):""),c.push({type:typeof f=="string"?gn.literal:gn.object,value:f});continue}if(lp(m)){var h=typeof m.style=="string"?r.date[m.style]:iu(m.style)?m.style.parsedOptions:void 0;c.push({type:gn.literal,value:n.getDateTimeFormat(t,h).format(f)});continue}if(dp(m)){var h=typeof m.style=="string"?r.time[m.style]:iu(m.style)?m.style. +parsedOptions:r.time.medium;c.push({type:gn.literal,value:n.getDateTimeFormat(t,h).format(f)});continue}if(up(m)){var h=typeof m.style=="string"?r.number[m.style]:hp(m.style)?m.style.parsedOptions:void 0;h&&h.scale&&(f=f*(h.scale||1)),c.push({type:gn.literal,value:n.getNumberFormat(t,h).format(f)});continue}if(fp(m)){var y=m.children,v=m.value,w=a[v];if(!pK(w))throw new x_(v,"function",i);var x=uu(y,t,n,r,a,o),E=w(x.map(function(R){return R.value}));Array.isArray(E)||(E=[E]),c.push.apply(c,E.map(function(R){return{type:typeof R=="string"?gn.literal:gn.object,value:R}}))}if(mp(m)){var S=m.options[f]||m.options.other;if(!S)throw new Ug(m.value,f,Object.keys(m.options),i);c.push.apply(c,uu(S.value,t,n,r,a));continue}if(pp(m)){var S=m.options["=".concat(f)];if(!S){if(!Intl.PluralRules)throw new cu(`Intl.PluralRules is not available in this environment. Try polyfilling it using "@formatjs/intl-pluralrules" -`,Ha.MISSING_INTL_API,o);var C=r.getPluralRules(t,{type:p.pluralType}).select(f-(p.offset||0));S=p.options[C]||p.options.other}if(!S)throw new Mg(p.value,f,Object.keys(p.options),o);u.push.apply(u,ul(S.value,t,r,n,i,f-(p.offset||0)));continue}}return F$(u)}var sr,Pg=g(()=>{d();Ig();Lg();(function(e){e[e.literal=0]="literal",e[e.object=1]="object"})(sr||(sr={}));s(F$,"mergeLiteral");s(k$,"isFormatXMLElementFn");s(ul,"formatToParts")});function _$(e,t){return t?dn(dn(dn({},e||{}),t||{}),Object.keys(e).reduce(function(r,n){return r[n]=dn(dn({},e[n]),t[n]||{}),r},{})):e}function R$(e,t){return t?Object.keys(e).reduce(function(r,n){return r[n]=_$(e[n],t[n]),r},dn({},e)):e}function Og(e){return{create:function(){return{get:function(t){return e[t]},set:function(t,r){e[t]=r}}}}}function I$(e){return e===void 0&&(e={number:{},dateTime:{},pluralRules:{}}),{getNumberFormat:fm(function(){for(var t,r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return new((t=Intl.NumberFormat).bind.apply(t,am([void 0],r,!1)))},{cache:Og(e.number),strategy:hm.variadic}),getDateTimeFormat:fm(function(){for(var t,r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return new((t=Intl.DateTimeFormat).bind.apply(t,am([void 0],r,!1)))},{cache:Og(e.dateTime),strategy:hm.variadic}),getPluralRules:fm(function(){for(var t,r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return new((t=Intl.PluralRules).bind.apply(t,am([void 0],r,!1)))},{cache:Og(e.pluralRules), -strategy:hm.variadic})}}var zI,Bg=g(()=>{d();bg();Ig();UI();Pg();s(_$,"mergeConfig");s(R$,"mergeConfigs");s(Og,"createFastMemoizeCache");s(I$,"createDefaultFormatters");zI=function(){function e(t,r,n,i){r===void 0&&(r=e.defaultLocale);var a=this;if(this.formatterCache={number:{},dateTime:{},pluralRules:{}},this.format=function(c){var p=a.formatToParts(c);if(p.length===1)return p[0].value;var m=p.reduce(function(f,h){return!f.length||h.type!==sr.literal||typeof f[f.length-1]!="string"?f.push(h.value):f[f.length-1]+=h.value,f},[]);return m.length<=1?m[0]||"":m},this.formatToParts=function(c){return ul(a.ast,a.locales,a.formatters,a.formats,c,void 0,a.message)},this.resolvedOptions=function(){var c;return{locale:((c=a.resolvedLocale)===null||c===void 0?void 0:c.toString())||Intl.NumberFormat.supportedLocalesOf(a.locales)[0]}},this.getAst=function(){return a.ast},this.locales=r,this.resolvedLocale=e.resolveLocale(r),typeof t=="string"){if(this.message=t,!e.__parse)throw new TypeError("Intl\ -MessageFormat.__parse must be set to process `message` of type `string`");var o=i||{},u=o.formatters,l=oI(o,["formatters"]);this.ast=e.__parse(t,dn(dn({},l),{locale:this.resolvedLocale}))}else this.ast=t;if(!Array.isArray(this.ast))throw new TypeError("A message must be provided as a String or AST.");this.formats=R$(e.formats,n),this.formatters=i&&i.formatters||I$(this.formatterCache)}return s(e,"IntlMessageFormat"),Object.defineProperty(e,"defaultLocale",{get:function(){return e.memoizedDefaultLocale||(e.memoizedDefaultLocale=new Intl.NumberFormat().resolvedOptions().locale),e.memoizedDefaultLocale},enumerable:!1,configurable:!0}),e.memoizedDefaultLocale=null,e.resolveLocale=function(t){if(!(typeof Intl.Locale>"u")){var r=Intl.NumberFormat.supportedLocalesOf(t);return r.length>0?new Intl.Locale(r[0]):new Intl.Locale(typeof t=="string"?t:t[0])}},e.__parse=PI,e.formats={number:{integer:{maximumFractionDigits:0},currency:{style:"currency"},percent:{style:"percent"}},date:{short:{month:"n\ -umeric",day:"numeric",year:"2-digit"},medium:{month:"short",day:"numeric",year:"numeric"},long:{month:"long",day:"numeric",year:"numeric"},full:{weekday:"long",month:"long",day:"numeric",year:"numeric"}},time:{short:{hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric",second:"numeric"},long:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"},full:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}}},e}()});var Ug,HI=g(()=>{d();Bg();Pg();Bg();Lg();Ug=zI});var Wa,is=g(()=>{d();Wa=s(()=>({resolve(){throw new Error("createRequire.resolve is not supported in bundled Lighthouse")}}),"createRequire")});var A$,N$,Ga,ll=g(()=>{d();A$=globalThis.URL,N$=s(e=>e,"fileURLToPath"),Ga={URL:A$,fileURLToPath:N$}});function WI(e){return Ga.fileURLToPath(e.url)}var Va=g(()=>{"use strict";d();is();ll();Ui();s(WI,"getModulePath")});function jg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function GI(e){return typeof e=="object"&&e!==null}var VI=g(()=>{"use strict";d();s(jg,"isObjectOfUnknownValues");s(GI,"isObjectOrArrayOfUnknownValues")});var $I,YI=g(()=>{d();$I={}});function JI(e,t=new Map){for(let r of e)if(!(r.type===gm.literal||r.type===gm.pound)&&(t.set(r.value,r),r.type===gm.plural))for(let n of Object.values(r.options))JI(n.value,t);return t}function P$(e,t={},r){let n=JI(e.getAst()),i={};for(let[a,o]of n){if(!(a in t))throw new Error(`ICU Message "${r}" contains a value reference ("${a}") that wasn't provided`);let u=t[a];if(o.type!==gm.number){i[a]=u;continue}if(typeof u!="number")throw new Error(`ICU Message "${r}" contains a numeric reference ("${a}") but provided value was not a number`);o.style==="milliseconds"?i[a]=Math.round(u/10)*10:o.style==="seconds"&&a==="timeInMs"?i[a]=Math.round(u/100)/10:o.style==="bytes"?i[a]=u/1024:i[a]=u}for(let a of Object.keys(t))if(!(a in i)){if(a==="errorCode"){i.errorCode=t.errorCode;continue}throw new Error(`Provided value "${a}" does not match any placeholder in ICU message "${r}"`)}return i}function O$(e){return e.replace(/'/g,"''").replace(/\\{/g,"'{").replace(/\\}/g,"'}")}function zg(e,t,r){e=O$(e); -let n=r==="en-XA"||r==="en-XL"?"de-DE":r,i=Ug.IntlMessageFormat||Ug,a=new i(e,n,L$,{ignoreTag:!0}),o=P$(a,t,e),u=a.format(o);if(typeof u!="string")throw new Error("unexpected formatted result");return u}function B$(e,t){let n=XI(t)[e.i18nId];return n?zg(n.message,e.values,t):e.formattedDefault}function ZI(e){let t=XI(e),r=Object.keys(t).filter(i=>i.startsWith("report/renderer/report-utils.js")),n={};for(let i of r){let{filename:a,key:o}=j$(i);if(!a.endsWith("report-utils.js"))throw new Error(`Unexpected message: ${i}`);n[o]=t[i].message}return n}function os(e){if(!jg(e))return!1;let{i18nId:t,values:r,formattedDefault:n}=e;if(typeof t!="string"||typeof n!="string")return!1;if(r!==void 0){if(!jg(r))return!1;for(let i of Object.values(r))if(typeof i!="string"&&typeof i!="number")return!1}return KI.test(t)}function $a(e,t){if(os(e))return B$(e,t);if(typeof e=="string")return e;throw new Error("Attempted to format invalid icuMessage type")}function U$(e){let t="";for(let r of e)if(/^[a-z]+$/i. -test(r))t.length&&(t+="."),t+=r;else{if(/]|"|'|\s/.test(r))throw new Error(`Cannot handle "${r}" in i18n`);t+=`[${r}]`}return t}function Hg(e,t){function r(i,a,o=[]){if(GI(i))for(let[u,l]of Object.entries(i)){let c=o.concat([u]);if(os(l)){let p=$a(l,t),m=a[l.i18nId]||[],f=U$(c);m.push(l.values?{values:l.values,path:f}:f),i[u]=p,a[l.i18nId]=m}else r(l,a,c)}}s(r,"replaceInObject");let n={};return r(e,n),n}function XI(e){let t=qg[e];if(!t){if(e===as)return{};throw new Error(`Unsupported locale '${e}'`)}return t}function QI(){return M$}function eA(){return[...new Set([...Object.keys(qg),as])].sort()}function tA(e,t){qg[e]=t}function j$(e){if(!KI.test(e))throw Error(`"${e}" does not appear to be a valid ICU message id`);let[t,r]=e.split(" | ");return{filename:t,key:r}}var gm,qg,as,M$,KI,L$,ci=g(()=>{"use strict";d();ni();HI();Va();VI();YI();gm={literal:0,argument:1,number:2,date:3,time:4,select:5,plural:6,pound:7,tag:8},qg=$I,as="en-US",M$=["ar-XB.json","ar.json","bg.json","ca.json","cs.jso\ -n","da.json","de.json","el.json","en-GB.json","en-US.ctc.json","en-US.json","en-XA.json","en-XL.ctc.json","en-XL.json","es-419.json","es.json","fi.json","fil.json","fr.json","he.json","hi.json","hr.json","hu.json","id.json","it.json","ja.json","ko.json","lt.json","lv.json","nl.json","no.json","pl.json","pt-PT.json","pt.json","ro.json","ru.json","sk.json","sl.json","sr-Latn.json","sr.json","sv.json","ta.json","te.json","th.json","tr.json","uk.json","vi.json","zh-HK.json","zh-TW.json","zh.json"].filter(e=>e.endsWith(".json")&&!e.endsWith(".ctc.json")).map(e=>e.replace(".json","")).sort(),KI=/ | [^\s]+$/,L$={number:{bytes:{maximumFractionDigits:0},milliseconds:{maximumFractionDigits:0},seconds:{minimumFractionDigits:1,maximumFractionDigits:1},extendedPercent:{maximumFractionDigits:2,style:"percent"}}};s(JI,"collectAllCustomElementsFromICU");s(P$,"_preformatValues");s(O$,"escapeIcuMessage");s(zg,"formatMessage");s(B$,"_localizeIcuMessage");s(ZI,"getRendererFormattedStrings");s(os,"isIcuMes\ -sage");s($a,"getFormatted");s(U$,"_formatPathAsString");s(Hg,"replaceIcuMessages");s(XI,"_getLocaleMessages");s(QI,"getCanonicalLocales");s(eA,"getAvailableLocales");s(tA,"registerLocaleData");s(j$,"getIcuMessageIdParts")});var nA=pe((IEe,rA)=>{d();var q$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><path fill="%230379c4" fill-rule="evenodd" d="m171.887 116.28-53.696 89.36h-9.728l9.617-58.227-30.2.047a4.852 4.852 0 0 1-4.855-4.855c0-1.152 1.07-3.102 1.07-3.102l53.52-89.254 9.9.043-9.86 58.317 30.413-.043a4.852 4.852 0 0 1 4.855 4.855c0 1.088-.427 2.044-1.033 2.854l.004.004zM128 0C57.306 0 0 57.3 0 128s57.306 128 128 128 128-57.306 128-128S198.7 0 128 0z"/></svg>',z$={"modern-image-formats":"Consider displaying all [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites) components in WebP formats while specifying an appropriate fallback for other browsers. [Learn more](https://amp.dev/documentation/components/amp-img/#example:-specifying-a-fallback-image).","offscreen-images":"Ensure that you are using [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites) for images to automatically lazy-load. [Learn more](https://amp.dev/\ +`,ni.MISSING_INTL_API,i);var k=n.getPluralRules(t,{type:m.pluralType}).select(f-(m.offset||0));S=m.options[k]||m.options.other}if(!S)throw new Ug(m.value,f,Object.keys(m.options),i);c.push.apply(c,uu(S.value,t,n,r,a,f-(m.offset||0)));continue}}return mK(c)}var gn,zg=g(()=>{d();Lg();jg();(function(e){e[e.literal=0]="literal",e[e.object=1]="object"})(gn||(gn={}));s(mK,"mergeLiteral");s(pK,"isFormatXMLElementFn");s(uu,"formatToParts")});function fK(e,t){return t?vr(vr(vr({},e||{}),t||{}),Object.keys(e).reduce(function(n,r){return n[r]=vr(vr({},e[r]),t[r]||{}),n},{})):e}function hK(e,t){return t?Object.keys(e).reduce(function(n,r){return n[r]=fK(e[r],t[r]),n},vr({},e)):e}function qg(e){return{create:function(){return{get:function(t){return e[t]},set:function(t,n){e[t]=n}}}}}function gK(e){return e===void 0&&(e={number:{},dateTime:{},pluralRules:{}}),{getNumberFormat:yp(function(){for(var t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return new((t=Intl.NumberFormat).bind.apply(t,cp([void 0],n,!1)))},{cache:qg(e.number),strategy:vp.variadic}),getDateTimeFormat:yp(function(){for(var t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return new((t=Intl.DateTimeFormat).bind.apply(t,cp([void 0],n,!1)))},{cache:qg(e.dateTime),strategy:vp.variadic}),getPluralRules:yp(function(){for(var t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return new((t=Intl.PluralRules).bind.apply(t,cp([void 0],n,!1)))},{cache:qg(e.pluralRules), +strategy:vp.variadic})}}var T_,Hg=g(()=>{d();Tg();Lg();D_();zg();s(fK,"mergeConfig");s(hK,"mergeConfigs");s(qg,"createFastMemoizeCache");s(gK,"createDefaultFormatters");T_=function(){function e(t,n,r,a){n===void 0&&(n=e.defaultLocale);var o=this;if(this.formatterCache={number:{},dateTime:{},pluralRules:{}},this.format=function(l){var m=o.formatToParts(l);if(m.length===1)return m[0].value;var p=m.reduce(function(f,h){return!f.length||h.type!==gn.literal||typeof f[f.length-1]!="string"?f.push(h.value):f[f.length-1]+=h.value,f},[]);return p.length<=1?p[0]||"":p},this.formatToParts=function(l){return uu(o.ast,o.locales,o.formatters,o.formats,l,void 0,o.message)},this.resolvedOptions=function(){var l;return{locale:((l=o.resolvedLocale)===null||l===void 0?void 0:l.toString())||Intl.NumberFormat.supportedLocalesOf(o.locales)[0]}},this.getAst=function(){return o.ast},this.locales=n,this.resolvedLocale=e.resolveLocale(n),typeof t=="string"){if(this.message=t,!e.__parse)throw new TypeError("Intl\ +MessageFormat.__parse must be set to process `message` of type `string`");var i=a||{},c=i.formatters,u=qA(i,["formatters"]);this.ast=e.__parse(t,vr(vr({},u),{locale:this.resolvedLocale}))}else this.ast=t;if(!Array.isArray(this.ast))throw new TypeError("A message must be provided as a String or AST.");this.formats=hK(e.formats,r),this.formatters=a&&a.formatters||gK(this.formatterCache)}return s(e,"IntlMessageFormat"),Object.defineProperty(e,"defaultLocale",{get:function(){return e.memoizedDefaultLocale||(e.memoizedDefaultLocale=new Intl.NumberFormat().resolvedOptions().locale),e.memoizedDefaultLocale},enumerable:!1,configurable:!0}),e.memoizedDefaultLocale=null,e.resolveLocale=function(t){if(!(typeof Intl.Locale>"u")){var n=Intl.NumberFormat.supportedLocalesOf(t);return n.length>0?new Intl.Locale(n[0]):new Intl.Locale(typeof t=="string"?t:t[0])}},e.__parse=v_,e.formats={number:{integer:{maximumFractionDigits:0},currency:{style:"currency"},percent:{style:"percent"}},date:{short:{month:"n\ +umeric",day:"numeric",year:"2-digit"},medium:{month:"short",day:"numeric",year:"numeric"},long:{month:"long",day:"numeric",year:"numeric"},full:{weekday:"long",month:"long",day:"numeric",year:"numeric"}},time:{short:{hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric",second:"numeric"},long:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"},full:{hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}}},e}()});var Wg,S_=g(()=>{d();Hg();zg();Hg();jg();Wg=T_});var ri,us=g(()=>{d();ri=s(()=>({resolve(){throw new Error("createRequire.resolve is not supported in bundled Lighthouse")}}),"createRequire")});var yK,vK,ai,lu=g(()=>{d();yK=globalThis.URL,vK=s(e=>e,"fileURLToPath"),ai={URL:yK,fileURLToPath:vK}});function C_(e){return ai.fileURLToPath(e.url)}var oi=g(()=>{"use strict";d();us();lu();$a();s(C_,"getModulePath")});function Gg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function k_(e){return typeof e=="object"&&e!==null}var F_=g(()=>{"use strict";d();s(Gg,"isObjectOfUnknownValues");s(k_,"isObjectOrArrayOfUnknownValues")});var R_,I_=g(()=>{d();R_={}});function __(e,t=new Map){for(let n of e)if(!(n.type===bp.literal||n.type===bp.pound)&&(t.set(n.value,n),n.type===bp.plural))for(let r of Object.values(n.options))__(r.value,t);return t}function DK(e,t={},n){let r=__(e.getAst()),a={};for(let[o,i]of r){if(!(o in t))throw new Error(`ICU Message "${n}" contains a value reference ("${o}") that wasn't provided`);let c=t[o];if(i.type!==bp.number){a[o]=c;continue}if(typeof c!="number")throw new Error(`ICU Message "${n}" contains a numeric reference ("${o}") but provided value was not a number`);i.style==="milliseconds"?a[o]=Math.round(c/10)*10:i.style==="seconds"&&o==="timeInMs"?a[o]=Math.round(c/100)/10:i.style==="bytes"?a[o]=c/1024:a[o]=c}for(let o of Object.keys(t))if(!(o in a)){if(o==="errorCode"){a.errorCode=t.errorCode;continue}throw new Error(`Provided value "${o}" does not match any placeholder in ICU message "${n}"`)}return a}function xK(e){return e.replace(/'/g,"''").replace(/\\{/g,"'{").replace(/\\}/g,"'}")}function $g(e,t,n){e=xK(e); +let r=n==="en-XA"||n==="en-XL"?"de-DE":n,a=Wg.IntlMessageFormat||Wg,o=new a(e,r,wK,{ignoreTag:!0}),i=DK(o,t,e),c=o.format(i);if(typeof c!="string")throw new Error("unexpected formatted result");return c}function EK(e,t){let r=N_(t)[e.i18nId];return r?$g(r.message,e.values,t):e.formattedDefault}function M_(e){let t=N_(e),n=Object.keys(t).filter(a=>a.startsWith("report/renderer/report-utils.js")),r={};for(let a of n){let{filename:o,key:i}=SK(a);if(!o.endsWith("report-utils.js"))throw new Error(`Unexpected message: ${a}`);r[i]=t[a].message}return r}function ds(e){if(!Gg(e))return!1;let{i18nId:t,values:n,formattedDefault:r}=e;if(typeof t!="string"||typeof r!="string")return!1;if(n!==void 0){if(!Gg(n))return!1;for(let a of Object.values(n))if(typeof a!="string"&&typeof a!="number")return!1}return A_.test(t)}function ii(e,t){if(ds(e))return EK(e,t);if(typeof e=="string")return e;throw new Error("Attempted to format invalid icuMessage type")}function TK(e){let t="";for(let n of e)if(/^[a-z]+$/i. +test(n))t.length&&(t+="."),t+=n;else{if(/]|"|'|\s/.test(n))throw new Error(`Cannot handle "${n}" in i18n`);t+=`[${n}]`}return t}function Yg(e,t){function n(a,o,i=[]){if(k_(a))for(let[c,u]of Object.entries(a)){let l=i.concat([c]);if(ds(u)){let m=ii(u,t),p=o[u.i18nId]||[],f=TK(l);p.push(u.values?{values:u.values,path:f}:f),a[c]=m,o[u.i18nId]=p}else n(u,o,l)}}s(n,"replaceInObject");let r={};return n(e,r),r}function N_(e){let t=Vg[e];if(!t){if(e===ls)return{};throw new Error(`Unsupported locale '${e}'`)}return t}function O_(){return bK}function L_(){return[...new Set([...Object.keys(Vg),ls])].sort()}function P_(e,t){Vg[e]=t}function SK(e){if(!A_.test(e))throw Error(`"${e}" does not appear to be a valid ICU message id`);let[t,n]=e.split(" | ");return{filename:t,key:n}}var bp,Vg,ls,bK,A_,wK,va=g(()=>{"use strict";d();da();S_();oi();F_();I_();bp={literal:0,argument:1,number:2,date:3,time:4,select:5,plural:6,pound:7,tag:8},Vg=R_,ls="en-US",bK=["ar-XB.json","ar.json","bg.json","ca.json","cs.jso\ +n","da.json","de.json","el.json","en-GB.json","en-US.json","en-XA.json","en-XL.json","es-419.json","es.json","fi.json","fil.json","fr.json","he.json","hi.json","hr.json","hu.json","id.json","it.json","ja.json","ko.json","lt.json","lv.json","nl.json","no.json","pl.json","pt-PT.json","pt.json","ro.json","ru.json","sk.json","sl.json","sr-Latn.json","sr.json","sv.json","ta.json","te.json","th.json","tr.json","uk.json","vi.json","zh-HK.json","zh-TW.json","zh.json"].filter(e=>e.endsWith(".json")&&!e.endsWith(".ctc.json")).map(e=>e.replace(".json","")).sort(),A_=/ | [^\s]+$/,wK={number:{bytes:{maximumFractionDigits:0},milliseconds:{maximumFractionDigits:0},seconds:{minimumFractionDigits:1,maximumFractionDigits:1},extendedPercent:{maximumFractionDigits:2,style:"percent"}}};s(__,"collectAllCustomElementsFromICU");s(DK,"_preformatValues");s(xK,"escapeIcuMessage");s($g,"formatMessage");s(EK,"_localizeIcuMessage");s(M_,"getRendererFormattedStrings");s(ds,"isIcuMessage");s(ii,"getFormatted");s(TK,"\ +_formatPathAsString");s(Yg,"replaceIcuMessages");s(N_,"_getLocaleMessages");s(O_,"getCanonicalLocales");s(L_,"getAvailableLocales");s(P_,"registerLocaleData");s(SK,"getIcuMessageIdParts")});var U_=de((p2e,B_)=>{d();var CK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><path fill="%230379c4" fill-rule="evenodd" d="m171.887 116.28-53.696 89.36h-9.728l9.617-58.227-30.2.047a4.852 4.852 0 0 1-4.855-4.855c0-1.152 1.07-3.102 1.07-3.102l53.52-89.254 9.9.043-9.86 58.317 30.413-.043a4.852 4.852 0 0 1 4.855 4.855c0 1.088-.427 2.044-1.033 2.854l.004.004zM128 0C57.306 0 0 57.3 0 128s57.306 128 128 128 128-57.306 128-128S198.7 0 128 0z"/></svg>',kK={"modern-image-formats":"Consider displaying all [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites) components in WebP formats while specifying an appropriate fallback for other browsers. [Learn more](https://amp.dev/documentation/components/amp-img/#example:-specifying-a-fallback-image).","offscreen-images":"Ensure that you are using [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites) for images to automatically lazy-load. [Learn more](https://amp.dev/\ documentation/guides-and-tutorials/develop/media_iframes_3p/?format=websites#images).","render-blocking-resources":"Use tools such as [AMP Optimizer](https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer) to [server-side render AMP layouts](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/server-side-rendering/).","unminified-css":"Refer to the [AMP documentation](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/style_pages/) to ensure all styles are supported.","efficient-animated-content":"For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage when the content is offscreen.","uses-responsive-images":"The [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites) component supports the [`srcset`](https://web.dev/use-srcset-to-automatically-choose-the-right-image/) attribute to specify which image assets to use based on the screen size. [Lea\ -rn more](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/)."};rA.exports={id:"amp",title:"AMP",icon:q$,UIStrings:z$}});var aA=pe((NEe,iA)=>{d();var H$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 250 250"><path fill="%23dd0031" d="M125 30 31.9 63.2l14.2 123.1L125 230l78.9-43.7 14.2-123.1z"/><path fill="%23c3002f" d="M125 30v22.2-.1V230l78.9-43.7 14.2-123.1L125 30z"/><path fill="%23fff" d="M125 52.1 66.8 182.6h21.7l11.7-29.2h49.4l11.7 29.2H183L125 52.1zm17 83.3h-34l17-40.9 17 40.9z"/></svg>',W$={"total-byte-weight":"Apply [route-level code splitting](https://web.dev/route-level-code-splitting-in-angular/) to minimize the size of your JavaScript bundles. Also, consider precaching assets with the [Angular service worker](https://web.dev/precaching-with-the-angular-service-worker/).","unminified-warning":"If you are using Angular CLI, ensure that builds are generated in production mode. [Learn more](https://angular.io/guide/deployment#enable-runtime-production-mode).","unused-javascript":"If you are using Angular CLI, include source maps in your production build to inspect your \ -bundles. [Learn more](https://angular.io/guide/deployment#inspect-the-bundles).","uses-responsive-images":"Consider using the `BreakpointObserver` utility in the Component Dev Kit (CDK) to manage image breakpoints. [Learn more](https://material.angular.io/cdk/layout/overview).","uses-rel-preload":"Preload routes ahead of time to speed up navigation. [Learn more](https://web.dev/route-preloading-in-angular/).","dom-size":"Consider virtual scrolling with the Component Dev Kit (CDK) if very large lists are being rendered. [Learn more](https://web.dev/virtualize-lists-with-angular-cdk/)."};iA.exports={id:"angular",title:"Angular",icon:H$,UIStrings:W$}});var sA=pe((LEe,oA)=>{d();var G$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 186.525 243.713"><path fill="%23009cde" d="M131.64 51.91C114.491 34.769 98.13 18.429 93.26 0c-4.87 18.429-21.234 34.769-38.38 51.91C29.16 77.613 0 106.743 0 150.434a93.263 93.263 0 1 0 186.525 0c0-43.688-29.158-72.821-54.885-98.524m-92 120.256c-5.719-.194-26.824-36.571 12.329-75.303l25.909 28.3a2.215 2.215 0 0 1-.173 3.306c-6.183 6.34-32.534 32.765-35.81 41.902-.675 1.886-1.663 1.815-2.256 1.795m53.624 47.943a32.075 32.075 0 0 1-32.076-32.075 33.423 33.423 0 0 1 7.995-21.187c5.784-7.072 24.077-26.963 24.077-26.963s18.012 20.183 24.033 26.896a31.368 31.368 0 0 1 8.046 21.254 32.076 32.076 0 0 1-32.075 32.075m61.392-52.015c-.691 1.512-2.26 4.036-4.376 4.113-3.773.138-4.176-1.796-6.965-5.923-6.122-9.06-59.551-64.9-69.545-75.699-8.79-9.498-1.238-16.195 2.266-19.704 4.395-4.403 17.224-17.225 17.224-17.225s38.255 36.296 54.19 61.096 10.444 46.26 7.206 53.342"/></svg>',V$={"unused-css-rule\ +rn more](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/)."};B_.exports={id:"amp",title:"AMP",icon:CK,UIStrings:kK}});var z_=de((h2e,j_)=>{d();var FK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 250 250"><path fill="%23dd0031" d="M125 30 31.9 63.2l14.2 123.1L125 230l78.9-43.7 14.2-123.1z"/><path fill="%23c3002f" d="M125 30v22.2-.1V230l78.9-43.7 14.2-123.1L125 30z"/><path fill="%23fff" d="M125 52.1 66.8 182.6h21.7l11.7-29.2h49.4l11.7 29.2H183L125 52.1zm17 83.3h-34l17-40.9 17 40.9z"/></svg>',RK={"total-byte-weight":"Apply [route-level code splitting](https://web.dev/route-level-code-splitting-in-angular/) to minimize the size of your JavaScript bundles. Also, consider precaching assets with the [Angular service worker](https://web.dev/precaching-with-the-angular-service-worker/).","unminified-warning":"If you are using Angular CLI, ensure that builds are generated in production mode. [Learn more](https://angular.io/guide/deployment#enable-runtime-production-mode).","unused-javascript":"If you are using Angular CLI, include source maps in your production build to inspect your \ +bundles. [Learn more](https://angular.io/guide/deployment#inspect-the-bundles).","uses-responsive-images":"Consider using the `BreakpointObserver` utility in the Component Dev Kit (CDK) to manage image breakpoints. [Learn more](https://material.angular.io/cdk/layout/overview).","uses-rel-preload":"Preload routes ahead of time to speed up navigation. [Learn more](https://web.dev/route-preloading-in-angular/).","dom-size":"Consider virtual scrolling with the Component Dev Kit (CDK) if very large lists are being rendered. [Learn more](https://web.dev/virtualize-lists-with-angular-cdk/)."};j_.exports={id:"angular",title:"Angular",icon:FK,UIStrings:RK}});var H_=de((y2e,q_)=>{d();var IK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 186.525 243.713"><path fill="%23009cde" d="M131.64 51.91C114.491 34.769 98.13 18.429 93.26 0c-4.87 18.429-21.234 34.769-38.38 51.91C29.16 77.613 0 106.743 0 150.434a93.263 93.263 0 1 0 186.525 0c0-43.688-29.158-72.821-54.885-98.524m-92 120.256c-5.719-.194-26.824-36.571 12.329-75.303l25.909 28.3a2.215 2.215 0 0 1-.173 3.306c-6.183 6.34-32.534 32.765-35.81 41.902-.675 1.886-1.663 1.815-2.256 1.795m53.624 47.943a32.075 32.075 0 0 1-32.076-32.075 33.423 33.423 0 0 1 7.995-21.187c5.784-7.072 24.077-26.963 24.077-26.963s18.012 20.183 24.033 26.896a31.368 31.368 0 0 1 8.046 21.254 32.076 32.076 0 0 1-32.075 32.075m61.392-52.015c-.691 1.512-2.26 4.036-4.376 4.113-3.773.138-4.176-1.796-6.965-5.923-6.122-9.06-59.551-64.9-69.545-75.699-8.79-9.498-1.238-16.195 2.266-19.704 4.395-4.403 17.224-17.225 17.224-17.225s38.255 36.296 54.19 61.096 10.444 46.26 7.206 53.342"/></svg>',AK={"unused-css-rule\ s":"Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page.","modern-image-formats":"Consider configuring [WebP image formats with a Convert image style](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) on your site\ .","offscreen-images":"Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`.","total-byte-weight":"Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page.","render-blocking-resources":"Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript.","unminified-css":'Ensure you have enabled "Aggregate CSS files" in the "Administration » Configuration » Development" page.',"unminified-javascript":'Ensure you have enabled "Aggregate JavaScript files" in the "Administration » Configuration » Development" page.',"efficient-animated-content":"Consider uploading your `GIF\ ` to a service which will make it available to embed as an HTML5 video.","unused-javascript":"Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page.","uses-long-cache-ttl":'Set the "Browser and proxy cache maximum age" in the "Administration » Configuration » Dev\ elopment" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api).',"uses-optimized-images":"Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site.","uses-text-compression":"Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/l\ ighthouse/audits/text-compression).","uses-responsive-images":"Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor.","prioritize-lcp-image":"If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/).","server-response-time":"Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules,\ - and faster servers to lower server response time.",redirects:"Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects).","uses-rel-preconnect":"`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints."};oA.exports={id:"drupal",title:"Drupal",icon:G$,UIStrings:V$}});var lA=pe((OEe,uA)=>{d();var $$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 82 82"><path fill="%235FA624" fill-rule="evenodd" d="M81.37 48.117C85.301 25.821 70.413 4.56 48.117.63 25.821-3.3 4.56 11.586.63 33.883-3.3 56.178 11.586 77.44 33.883 81.37 56.18 85.301 77.44 70.412 81.37 48.117Zm-8.935-14.17c2.77 12.357-1.942 25.721-12.96 33.436-14.57 10.203-34.656 6.662-44.859-7.909a32.434 32.434 0 0 1-2.869-4.98l28.7-20.097a6.53 6.53 0 1 0-3.744-5.347L9.564 48.054c-2.768-12.359 1.943-25.724 12.96-33.439 14.572-10.203 34.656-6.662 44.86 7.91a32.349 32.349 0 0 1 2.868 4.98L41.554 47.6a6.53 6.53 0 1 0 3.746 5.35l27.136-19.003Z"/></svg>',Y$={"unused-css-rules":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Remove Unused CSS` to help with this issue. It will identify the CSS classes that are actually used on each page of your site, and remove any others to keep the file size small.","modern-image-formats":"Use [Ezoic Leap](https://pubdash.ezoic.com/spe\ + and faster servers to lower server response time.",redirects:"Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects).","uses-rel-preconnect":"`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints."};q_.exports={id:"drupal",title:"Drupal",icon:IK,UIStrings:AK}});var G_=de((b2e,W_)=>{d();var _K='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 82 82"><path fill="%235FA624" fill-rule="evenodd" d="M81.37 48.117C85.301 25.821 70.413 4.56 48.117.63 25.821-3.3 4.56 11.586.63 33.883-3.3 56.178 11.586 77.44 33.883 81.37 56.18 85.301 77.44 70.412 81.37 48.117Zm-8.935-14.17c2.77 12.357-1.942 25.721-12.96 33.436-14.57 10.203-34.656 6.662-44.859-7.909a32.434 32.434 0 0 1-2.869-4.98l28.7-20.097a6.53 6.53 0 1 0-3.744-5.347L9.564 48.054c-2.768-12.359 1.943-25.724 12.96-33.439 14.572-10.203 34.656-6.662 44.86 7.91a32.349 32.349 0 0 1 2.868 4.98L41.554 47.6a6.53 6.53 0 1 0 3.746 5.35l27.136-19.003Z"/></svg>',MK={"unused-css-rules":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Remove Unused CSS` to help with this issue. It will identify the CSS classes that are actually used on each page of your site, and remove any others to keep the file size small.","modern-image-formats":"Use [Ezoic Leap](https://pubdash.ezoic.com/spe\ ed) and enable `Next-Gen Formats` to convert images to WebP.","offscreen-images":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Lazy Load Images` to defer loading off-screen images until they are needed.","render-blocking-resources":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Critical CSS` and `Script Delay` to defer non-critical JS/CSS.","unminified-css":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Minify CSS` to automatically minify your CSS to reduce network payload sizes.","unminified-javascript":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Minify Javascript` to automatically minify your JS to reduce network payload sizes.","uses-long-cache-ttl":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Efficient Static Cache Policy` to set recommended values in the caching header for static assests.","uses-optimized-images":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Next-Gen Formats` to \ convert images to WebP.","uses-responsive-images":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Resize Images` to resize images to a device appropriate size, reducing network payload sizes.","server-response-time":"Use [Ezoic Cloud Caching](https://pubdash.ezoic.com/speed/caching) to cache your content across our world wide network, improving time to first byte.","uses-rel-preconnect":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Pre-Connect Origins` to automatically add `preconnect` resource hints to establish early connections to important third-party origins.","uses-rel-preload":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Preload Fonts` and `Preload Background Images` to add `preload` links to prioritize fetching resources that are currently requested later in page load.","font-display":"Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Optimize Fonts` to automatically leverage the `font-display` CSS feature to ensure \ -text is user-visible while webfonts are loading."};uA.exports={id:"ezoic",title:"Ezoic",icon:$$,UIStrings:Y$}});var dA=pe((UEe,cA)=>{d();var K$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28"><circle cx="14" cy="14" r="14" fill="%23639"/><path fill="%23fff" d="M6.2 21.8C4.1 19.7 3 16.9 3 14.2L13.9 25c-2.8-.1-5.6-1.1-7.7-3.2zm10.2 2.9L3.3 11.6C4.4 6.7 8.8 3 14 3c3.7 0 6.9 1.8 8.9 4.5l-1.5 1.3C19.7 6.5 17 5 14 5c-3.9 0-7.2 2.5-8.5 6L17 22.5c2.9-1 5.1-3.5 5.8-6.5H18v-2h7c0 5.2-3.7 9.6-8.6 10.7z"/></svg>',J$={"unused-css-rules":"Use the `PurgeCSS` `Gatsby` plugin to remove unused rules from stylesheets. [Learn more](https://purgecss.com/plugins/gatsby.html).","modern-image-formats":"Use the `gatsby-plugin-image` component instead of `<img>` to automatically optimize image format. [Learn more](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image).","offscreen-images":"Use the `gatsby-plugin-image` component instead of `<img>` to automatically lazy-load images. [Learn more](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plu\ +text is user-visible while webfonts are loading."};W_.exports={id:"ezoic",title:"Ezoic",icon:_K,UIStrings:MK}});var $_=de((D2e,V_)=>{d();var NK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28"><circle cx="14" cy="14" r="14" fill="%23639"/><path fill="%23fff" d="M6.2 21.8C4.1 19.7 3 16.9 3 14.2L13.9 25c-2.8-.1-5.6-1.1-7.7-3.2zm10.2 2.9L3.3 11.6C4.4 6.7 8.8 3 14 3c3.7 0 6.9 1.8 8.9 4.5l-1.5 1.3C19.7 6.5 17 5 14 5c-3.9 0-7.2 2.5-8.5 6L17 22.5c2.9-1 5.1-3.5 5.8-6.5H18v-2h7c0 5.2-3.7 9.6-8.6 10.7z"/></svg>',OK={"unused-css-rules":"Use the `PurgeCSS` `Gatsby` plugin to remove unused rules from stylesheets. [Learn more](https://purgecss.com/plugins/gatsby.html).","modern-image-formats":"Use the `gatsby-plugin-image` component instead of `<img>` to automatically optimize image format. [Learn more](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image).","offscreen-images":"Use the `gatsby-plugin-image` component instead of `<img>` to automatically lazy-load images. [Learn more](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plu\ gin-image).","render-blocking-resources":"Use the `Gatsby Script API` to defer loading of non-critical third-party scripts. [Learn more](https://www.gatsbyjs.com/docs/reference/built-in-components/gatsby-script/).","unused-javascript":"Use `Webpack Bundle Analyzer` to detect unused JavaScript code. [Learn more](https://www.gatsbyjs.com/plugins/gatsby-plugin-webpack-bundle-analyser-v2/)","uses-long-cache-ttl":"Configure caching for immutable assets. [Learn more](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/caching/).","uses-optimized-images":"Use the `gatsby-plugin-image` component instead of `<img>` to adjust image quality. [Learn more](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image).","uses-responsive-images":"Use the `gatsby-plugin-image` component to set appropriate `sizes`. [Learn more](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image).","prioritize-lcp-image":"Use the `gatsby-plugin-image` component a\ -nd set the `loading` prop to `eager`. [Learn more](https://www.gatsbyjs.com/docs/reference/built-in-components/gatsby-plugin-image#shared-props)."};cA.exports={id:"gatsby",title:"Gatsby",icon:K$,UIStrings:J$}});var mA=pe((qEe,pA)=>{"use strict";d();var Z$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 256 258"><path fill="%23F9AE41" d="M255.7 35.6a33.7 33.7 0 0 0-67-4.8l-.4-.2c-27.6-12.4-50.8 9.6-50.8 9.6l-61.4 61.7 24.3 23.4 49.4-48.6c23-23 35.6-7.4 35.6-7.4 17.4 14.6.6 32 .6 32l24.9 24c20.3-22 21.5-41.1 15.3-56.3a33.7 33.7 0 0 0 29.5-33.4"/><path fill="%23EE4035" d="m226.5 190.5.2-.3c12.4-27.6-9.6-50.8-9.6-50.8L155.4 78l-23.3 24.3 48.5 49.4c23 23 7.5 35.6 7.5 35.6-14.7 17.4-32 .6-32 .6l-24 24.9c21.9 20.3 41 21.5 56.2 15.3a33.7 33.7 0 1 0 38.2-37.6"/><path fill="%234F91CD" d="m156 133-49.5 48.6c-23 23-35.6 7.4-35.6 7.4-17.4-14.6-.6-32-.6-32l-24.9-24c-20.3 22-21.4 41.1-15.3 56.3a33.7 33.7 0 1 0 37.6 38.2l.3.2c27.6 12.4 50.8-9.6 50.8-9.6l61.4-61.7-24.3-23.4"/><path fill="%237AC043" d="M75.7 106.6c-23-23-7.4-35.6-7.4-35.6 14.6-17.4 32-.6 32-.6l24-24.9c-22-20.3-41-21.5-56.3-15.3a33.7 33.7 0 1 0-38.2 37.6l-.2.3C17.2 95.7 39.2 119 39.2 119l6\ -1.7 61.4 23.4-24.3-48.6-49.4"/></svg>',X$={"unused-css-rules":"Consider reducing, or switching, the number of [Joomla extensions](https://extensions.joomla.org/) loading unused CSS in your page. To identify extensions that are adding extraneous CSS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the theme/plugin responsible from the URL of the stylesheet. Look out for plugins that have many stylesheets in the list which have a lot of red in code coverage. A plugin should only enqueue a stylesheet if it is actually used on the page.","modern-image-formats":"Consider using a [plugin](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=webp) or service that will automatically convert your uploaded images to the optimal formats.","offscreen-images":"Install a [lazy-load Joomla plugin](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=lazy%20loading) that provid\ +nd set the `loading` prop to `eager`. [Learn more](https://www.gatsbyjs.com/docs/reference/built-in-components/gatsby-plugin-image#shared-props)."};V_.exports={id:"gatsby",title:"Gatsby",icon:NK,UIStrings:OK}});var K_=de((E2e,Y_)=>{"use strict";d();var LK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 256 258"><path fill="%23F9AE41" d="M255.7 35.6a33.7 33.7 0 0 0-67-4.8l-.4-.2c-27.6-12.4-50.8 9.6-50.8 9.6l-61.4 61.7 24.3 23.4 49.4-48.6c23-23 35.6-7.4 35.6-7.4 17.4 14.6.6 32 .6 32l24.9 24c20.3-22 21.5-41.1 15.3-56.3a33.7 33.7 0 0 0 29.5-33.4"/><path fill="%23EE4035" d="m226.5 190.5.2-.3c12.4-27.6-9.6-50.8-9.6-50.8L155.4 78l-23.3 24.3 48.5 49.4c23 23 7.5 35.6 7.5 35.6-14.7 17.4-32 .6-32 .6l-24 24.9c21.9 20.3 41 21.5 56.2 15.3a33.7 33.7 0 1 0 38.2-37.6"/><path fill="%234F91CD" d="m156 133-49.5 48.6c-23 23-35.6 7.4-35.6 7.4-17.4-14.6-.6-32-.6-32l-24.9-24c-20.3 22-21.4 41.1-15.3 56.3a33.7 33.7 0 1 0 37.6 38.2l.3.2c27.6 12.4 50.8-9.6 50.8-9.6l61.4-61.7-24.3-23.4"/><path fill="%237AC043" d="M75.7 106.6c-23-23-7.4-35.6-7.4-35.6 14.6-17.4 32-.6 32-.6l24-24.9c-22-20.3-41-21.5-56.3-15.3a33.7 33.7 0 1 0-38.2 37.6l-.2.3C17.2 95.7 39.2 119 39.2 119l6\ +1.7 61.4 23.4-24.3-48.6-49.4"/></svg>',PK={"unused-css-rules":"Consider reducing, or switching, the number of [Joomla extensions](https://extensions.joomla.org/) loading unused CSS in your page. To identify extensions that are adding extraneous CSS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the theme/plugin responsible from the URL of the stylesheet. Look out for plugins that have many stylesheets in the list which have a lot of red in code coverage. A plugin should only enqueue a stylesheet if it is actually used on the page.","modern-image-formats":"Consider using a [plugin](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=webp) or service that will automatically convert your uploaded images to the optimal formats.","offscreen-images":"Install a [lazy-load Joomla plugin](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=lazy%20loading) that provid\ es the ability to defer any offscreen images, or switch to a template that provides that functionality. Starting with Joomla 4.0, all new images will [automatically](https://github.com/joomla/joomla-cms/pull/30748) get the `loading` attribute from the core.","total-byte-weight":"Consider showing excerpts in your article categories (e.g. via the read more link), reducing the number of articles shown on a given page, breaking your long posts into multiple pages, or using a plugin to lazy-load comments.","render-blocking-resources":"There are a number of Joomla plugins that can help you [inline critical assets](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) or [defer less important resources](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance). Beware that optimizations provided by these plugins may break features of your templates or plugins, so you will need to test these thoroughly.","unminified-css":"A number of [Joomla extens\ ions](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) can speed up your site by concatenating, minifying, and compressing your css styles. There are also templates that provide this functionality.","unminified-javascript":"A number of [Joomla extensions](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) can speed up your site by concatenating, minifying, and compressing your scripts. There are also templates that provide this functionality.","efficient-animated-content":"Consider uploading your GIF to a service which will make it available to embed as an HTML5 video.","unused-javascript":"Consider reducing, or switching, the number of [Joomla extensions](https://extensions.joomla.org/) loading unused JavaScript in your page. To identify plugins that are adding extraneous JS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the ex\ tension responsible from the URL of the script. Look out for extensions that have many scripts in the list which have a lot of red in code coverage. An extension should only enqueue a script if it is actually used on the page.","uses-long-cache-ttl":"Read about [Browser Caching in Joomla](https://docs.joomla.org/Cache).","uses-optimized-images":"Consider using an [image optimization plugin](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) that compresses your images while retaining quality.","uses-text-compression":"You can enable text compression by enabling Gzip Page Compression in Joomla (System > Global configuration > Server).","uses-responsive-images":"Consider using a [responsive images plugin](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=responsive%20images) to use responsive images in your content.","server-response-time":"Templates, extensions, and server specifications all contribute to server response time. Consider finding\ - a more optimized template, carefully selecting an optimization extension, and/or upgrading your server."};pA.exports={id:"joomla",title:"Joomla",icon:Z$,UIStrings:X$}});var hA=pe((HEe,fA)=>{d();var Q$='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="%23f26322" viewBox="0 0 1000 1000"><path d="M916.9 267.4v465.3l-111.3 67.4V331.4l-1.5-.9-303.9-189-304.6 189.2-1.2.8V799L83.1 732.6V267.4l.7-.4L500.3 10l416 257 .6.4zM560.7 468.5v383.3L500.3 890l-61-38.2V306.7l-136 84.3v476.6l197 122.5 196.4-122.5V391l-136-84.3v161.8z"/></svg>',eY={"modern-image-formats":"Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=webp) for a variety of third-party extensions to leverage newer image formats.","offscreen-images":"Consider modifying your product and catalog templates to make use of the web platform's [lazy loading](https://web.dev/native-lazy-loading) feature.","disable-bundling":"Disable Magento's built-in [JavaScript bundling and minification](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html), and consider using [baler](https://github.com/magento/baler/) instead.","\ + a more optimized template, carefully selecting an optimization extension, and/or upgrading your server."};Y_.exports={id:"joomla",title:"Joomla",icon:LK,UIStrings:PK}});var X_=de((S2e,J_)=>{d();var BK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="%23f26322" viewBox="0 0 1000 1000"><path d="M916.9 267.4v465.3l-111.3 67.4V331.4l-1.5-.9-303.9-189-304.6 189.2-1.2.8V799L83.1 732.6V267.4l.7-.4L500.3 10l416 257 .6.4zM560.7 468.5v383.3L500.3 890l-61-38.2V306.7l-136 84.3v476.6l197 122.5 196.4-122.5V391l-136-84.3v161.8z"/></svg>',UK={"modern-image-formats":"Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=webp) for a variety of third-party extensions to leverage newer image formats.","offscreen-images":"Consider modifying your product and catalog templates to make use of the web platform's [lazy loading](https://web.dev/native-lazy-loading) feature.","disable-bundling":"Disable Magento's built-in [JavaScript bundling and minification](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html), and consider using [baler](https://github.com/magento/baler/) instead.","\ unminified-css":`Enable the "Minify CSS Files" option in your store's Developer settings. [Learn more](https://devdocs.magento.com/guides/v2.3/performance-best-practices/configuration.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=minify%20css%20files).`,"unminified-javascript":"Use [Terser](https://www.npmjs.com/package/terser) to minify all JavaScript assets from static content deployment, and disable the built-in minification feature.","unused-javascript":"Disable Magento's built-in [JavaScript bundling](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html).","uses-optimized-images":"Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=optimize%20image) for a variety of third party extensions to optimize images.","server-response-time":"Use Magento's [Varnish integration](https://devdocs.magento.com/guides/v2.3/config-guide/varnish/config-varnish.html).","uses-rel-pre\ -connect":"Preconnect or dns-prefetch resource hints can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html).","uses-rel-preload":"`<link rel=preload>` tags can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html).","critical-request-chains":"If you are not bundling your JavaScript assets, consider using [baler](https://github.com/magento/baler).","font-display":"Specify `@font-display` when [defining custom fonts](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/using-fonts.html)."};fA.exports={id:"magento",title:"Magento",icon:Q$,UIStrings:eY}});var yA=pe((GEe,gA)=>{d();var tY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 207 124"><path fill="%23000" d="M48.942 32.632h38.96v3.082h-35.39v23.193H85.79v3.082H52.513v25.464h35.794v3.081H48.942V32.632Zm42.45 0h4.139l18.343 25.464 18.749-25.464L158.124.287l-41.896 60.485 21.59 29.762h-4.302l-19.642-27.086L94.15 90.534h-4.22l21.751-29.762-20.29-28.14Zm47.967 3.082v-3.082h44.397v3.082h-20.453v54.82h-3.571v-54.82h-20.373ZM.203 32.632h4.464l61.557 91.671-25.439-33.769L3.936 37.011l-.162 53.523H.203zm183.194 53.891c.738 0 1.276-.563 1.276-1.29 0-.727-.538-1.29-1.276-1.29-.73 0-1.277.563-1.277 1.29 0 .727.547 1.29 1.277 1.29Zm3.509-3.393c0 2.146 1.555 3.549 3.822 3.549 2.414 0 3.874-1.446 3.874-3.956v-8.837h-1.946v8.828c0 1.394-.704 2.138-1.946 2.138-1.112 0-1.867-.692-1.893-1.722h-1.911Zm10.24-.113c.14 2.233 2.007 3.662 4.787 3.662 2.97 0 4.83-1.498 4.83-3.887 0-1.878-1.06-2.917-3.632-3.514l-1.38-.338c-1.634-.38-2.294-.891-2.294-1.783 0-1.125 1.025-1.86 2.563-1.\ -86 1.459 0 2.466.718 2.649 1.869h1.893c-.113-2.103-1.971-3.583-4.516-3.583-2.737 0-4.56 1.48-4.56 3.704 0 1.835 1.033 2.926 3.3 3.454l1.616.39c1.659.389 2.388.96 2.388 1.912 0 1.108-1.146 1.913-2.71 1.913-1.676 0-2.84-.753-3.005-1.939h-1.928Z"/></svg>',rY={"unused-css-rules":"Consider setting up `PurgeCSS` in `Next.js` configuration to remove unused rules from stylesheets. [Learn more](https://purgecss.com/guides/next.html).","modern-image-formats":"Use the `next/image` component instead of `<img>` to automatically optimize image format. [Learn more](https://nextjs.org/docs/basic-features/image-optimization).","offscreen-images":"Use the `next/image` component instead of `<img>` to automatically lazy-load images. [Learn more](https://nextjs.org/docs/basic-features/image-optimization).","render-blocking-resources":"Use the `next/script` component to defer loading of non-critical third-party scripts. [Learn more](https://nextjs.org/docs/basic-features/script).","unused-javascript":"Use `\ +connect":"Preconnect or dns-prefetch resource hints can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html).","uses-rel-preload":"`<link rel=preload>` tags can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html).","critical-request-chains":"If you are not bundling your JavaScript assets, consider using [baler](https://github.com/magento/baler).","font-display":"Specify `@font-display` when [defining custom fonts](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/using-fonts.html)."};J_.exports={id:"magento",title:"Magento",icon:BK,UIStrings:UK}});var Q_=de((k2e,Z_)=>{d();var jK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 207 124"><path fill="%23000" d="M48.942 32.632h38.96v3.082h-35.39v23.193H85.79v3.082H52.513v25.464h35.794v3.081H48.942V32.632Zm42.45 0h4.139l18.343 25.464 18.749-25.464L158.124.287l-41.896 60.485 21.59 29.762h-4.302l-19.642-27.086L94.15 90.534h-4.22l21.751-29.762-20.29-28.14Zm47.967 3.082v-3.082h44.397v3.082h-20.453v54.82h-3.571v-54.82h-20.373ZM.203 32.632h4.464l61.557 91.671-25.439-33.769L3.936 37.011l-.162 53.523H.203zm183.194 53.891c.738 0 1.276-.563 1.276-1.29 0-.727-.538-1.29-1.276-1.29-.73 0-1.277.563-1.277 1.29 0 .727.547 1.29 1.277 1.29Zm3.509-3.393c0 2.146 1.555 3.549 3.822 3.549 2.414 0 3.874-1.446 3.874-3.956v-8.837h-1.946v8.828c0 1.394-.704 2.138-1.946 2.138-1.112 0-1.867-.692-1.893-1.722h-1.911Zm10.24-.113c.14 2.233 2.007 3.662 4.787 3.662 2.97 0 4.83-1.498 4.83-3.887 0-1.878-1.06-2.917-3.632-3.514l-1.38-.338c-1.634-.38-2.294-.891-2.294-1.783 0-1.125 1.025-1.86 2.563-1.\ +86 1.459 0 2.466.718 2.649 1.869h1.893c-.113-2.103-1.971-3.583-4.516-3.583-2.737 0-4.56 1.48-4.56 3.704 0 1.835 1.033 2.926 3.3 3.454l1.616.39c1.659.389 2.388.96 2.388 1.912 0 1.108-1.146 1.913-2.71 1.913-1.676 0-2.84-.753-3.005-1.939h-1.928Z"/></svg>',zK={"unused-css-rules":"Consider setting up `PurgeCSS` in `Next.js` configuration to remove unused rules from stylesheets. [Learn more](https://purgecss.com/guides/next.html).","modern-image-formats":"Use the `next/image` component instead of `<img>` to automatically optimize image format. [Learn more](https://nextjs.org/docs/basic-features/image-optimization).","offscreen-images":"Use the `next/image` component instead of `<img>` to automatically lazy-load images. [Learn more](https://nextjs.org/docs/basic-features/image-optimization).","render-blocking-resources":"Use the `next/script` component to defer loading of non-critical third-party scripts. [Learn more](https://nextjs.org/docs/basic-features/script).","unused-javascript":"Use `\ Webpack Bundle Analyzer` to detect unused JavaScript code. [Learn more](https://github.com/vercel/next.js/tree/canary/packages/next-bundle-analyzer)","uses-long-cache-ttl":"Configure caching for immutable assets and `Server-side Rendered` (SSR) pages. [Learn more](https://nextjs.org/docs/going-to-production#caching).","uses-optimized-images":"Use the `next/image` component instead of `<img>` to adjust image quality. [Learn more](https://nextjs.org/docs/basic-features/image-optimization).","uses-text-compression":"Enable compression on your Next.js server. [Learn more](https://nextjs.org/docs/api-reference/next.config.js/compression).","uses-responsive-images":"Use the `next/image` component to set the appropriate `sizes`. [Learn more](https://nextjs.org/docs/api-reference/next/image#sizes).","user-timings":"Consider using `Next.js Analytics` to measure your app's real-world performance. [Learn more](https://nextjs.org/docs/advanced-features/measuring-performance).","prioritize-lcp-imag\ -e":'Use the `next/image` component and set "priority" to true to preload LCP image. [Learn more](https://nextjs.org/docs/api-reference/next/image#priority).',"unsized-images":"Use the `next/image` component to make sure images are always sized appropriately. [Learn more](https://nextjs.org/docs/api-reference/next/image#width)."};gA.exports={id:"next.js",title:"Next.js",icon:tY,UIStrings:rY}});var bA=pe(($Ee,vA)=>{d();var nY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="142" height="54"><g fill="none" fill-rule="evenodd"><g fill="%231B004E"><path d="M19.486 53.24h-3.891L4.682 39.247v13.936H0V32.946h5.444l9.475 12.398V32.946h4.567zM21.346 32.94h4.647v3.57h-4.647v-3.57Zm0 5.477h4.647V53.18h-4.647V38.417ZM40.569 53.183H36c-3.408 0-4.991-1.625-4.991-4.697v-6.22h-3.777V38.42h3.777v-5.474h4.598v5.474h4.958v3.846h-4.958v4.588c0 1.597.477 2.252 2.197 2.252h2.764v4.077ZM46.688 53.183h-4.57V38.42h4.57v2.308c.31-.686 1.351-2.336 4.425-2.336h3.13v4.56h-4.004c-2.593 0-3.55.967-3.55 3.019v7.212ZM70.612 45.802c0 4.56-3.409 7.75-8.01 7.75s-8.006-3.19-8.006-7.75c0-4.56 3.408-7.755 8.006-7.755 4.598 0 8.01 3.195 8.01 7.755Zm-4.599 0c0-2.14-1.35-3.733-3.408-3.733-2.057 0-3.44 1.594-3.44 3.733 0 2.139 1.41 3.733 3.44 3.733 2.03 0 3.408-1.598 3.408-3.733ZM72.47 32.946h11.7c4.543 0 7.192 2.28 7.192 6.526 0 4.247-2.649 6.577-7.191 6.577h-6.935v7.125h-4.765V32.946Zm4.766 4.218v\ +e":'Use the `next/image` component and set "priority" to true to preload LCP image. [Learn more](https://nextjs.org/docs/api-reference/next/image#priority).',"unsized-images":"Use the `next/image` component to make sure images are always sized appropriately. [Learn more](https://nextjs.org/docs/api-reference/next/image#width)."};Z_.exports={id:"next.js",title:"Next.js",icon:jK,UIStrings:zK}});var t3=de((R2e,e3)=>{d();var qK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="142" height="54"><g fill="none" fill-rule="evenodd"><g fill="%231B004E"><path d="M19.486 53.24h-3.891L4.682 39.247v13.936H0V32.946h5.444l9.475 12.398V32.946h4.567zM21.346 32.94h4.647v3.57h-4.647v-3.57Zm0 5.477h4.647V53.18h-4.647V38.417ZM40.569 53.183H36c-3.408 0-4.991-1.625-4.991-4.697v-6.22h-3.777V38.42h3.777v-5.474h4.598v5.474h4.958v3.846h-4.958v4.588c0 1.597.477 2.252 2.197 2.252h2.764v4.077ZM46.688 53.183h-4.57V38.42h4.57v2.308c.31-.686 1.351-2.336 4.425-2.336h3.13v4.56h-4.004c-2.593 0-3.55.967-3.55 3.019v7.212ZM70.612 45.802c0 4.56-3.409 7.75-8.01 7.75s-8.006-3.19-8.006-7.75c0-4.56 3.408-7.755 8.006-7.755 4.598 0 8.01 3.195 8.01 7.755Zm-4.599 0c0-2.14-1.35-3.733-3.408-3.733-2.057 0-3.44 1.594-3.44 3.733 0 2.139 1.41 3.733 3.44 3.733 2.03 0 3.408-1.598 3.408-3.733ZM72.47 32.946h11.7c4.543 0 7.192 2.28 7.192 6.526 0 4.247-2.649 6.577-7.191 6.577h-6.935v7.125h-4.765V32.946Zm4.766 4.218v\ 4.676h6.485c1.832 0 2.736-.883 2.736-2.34 0-1.565-.904-2.336-2.736-2.336h-6.485ZM102.662 51.016c-.254.485-1.636 2.48-4.71 2.48-3.665 0-6.627-2.906-6.627-7.694 0-4.789 2.962-7.667 6.656-7.667 2.962 0 4.372 1.851 4.626 2.336v-2.05h4.567v14.762h-4.512v-2.167Zm-3.327-8.932c-2.03 0-3.384 1.594-3.384 3.733 0 2.14 1.354 3.733 3.384 3.733s3.327-1.597 3.327-3.733-1.298-3.733-3.327-3.733ZM119.184 43.578a2.98 2.98 0 0 0-2.749-1.494c-1.918 0-3.13 1.594-3.13 3.733 0 2.14 1.24 3.758 3.158 3.758 1.807 0 2.625-1.168 2.764-1.51h4.4c-.143 2.052-2.116 5.5-7.275 5.5-4.286 0-7.641-3.078-7.641-7.75 0-4.673 3.328-7.755 7.585-7.755 5.159 0 7.105 3.392 7.33 5.53l-4.442-.012ZM129.712 46.6v6.577h-4.567V32.194h4.567v11.998l5.838-5.784h5.751l-6.994 6.811 7.362 7.952h-5.921z"/></g><g fill="%2325F5CE"><path d="M49.159 4.65c12.832 0 23.235 10.41 23.235 23.251h4.648C77.042 12.491 64.558 0 49.159 0c-15.4 0-27.883 12.492-27.883 27.901h4.647c0-12.841 10.403-23.25 23.236-23.25Z"/><path d="M44.852 25.793a3.632 3.632 0 0 1 \ -2.6-5.097L63.8 16.951 50.426 27.09a3.626 3.626 0 0 1-5.574-1.296Z"/></g></g></svg>',iY={"unused-css-rules":"Enable [`Reduce Unused CSS`](https://support.nitropack.io/hc/en-us/articles/360020418457-Reduce-Unused-CSS) to remove CSS rules that are not applicable to this page.","modern-image-formats":"Use [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/16547237162513) to automatically convert your images to WebP.","offscreen-images":"Defer offscreen images by enabling [`Automatic Image Lazy Loading`](https://support.nitropack.io/hc/en-us/articles/12457493524369-NitroPack-Lazy-Loading-Feature-for-Images).","render-blocking-resources":"Enable [`Remove render-blocking resources`](https://support.nitropack.io/hc/en-us/articles/13820893500049-How-to-Deal-with-Render-Blocking-Resources-in-NitroPack) in NitroPack for faster initial load times.","unminified-css":"Enable [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) in your \ +2.6-5.097L63.8 16.951 50.426 27.09a3.626 3.626 0 0 1-5.574-1.296Z"/></g></g></svg>',HK={"unused-css-rules":"Enable [`Reduce Unused CSS`](https://support.nitropack.io/hc/en-us/articles/360020418457-Reduce-Unused-CSS) to remove CSS rules that are not applicable to this page.","modern-image-formats":"Use [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/16547237162513) to automatically convert your images to WebP.","offscreen-images":"Defer offscreen images by enabling [`Automatic Image Lazy Loading`](https://support.nitropack.io/hc/en-us/articles/12457493524369-NitroPack-Lazy-Loading-Feature-for-Images).","render-blocking-resources":"Enable [`Remove render-blocking resources`](https://support.nitropack.io/hc/en-us/articles/13820893500049-How-to-Deal-with-Render-Blocking-Resources-in-NitroPack) in NitroPack for faster initial load times.","unminified-css":"Enable [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) in your \ Caching settings to reduce the size of your CSS, HTML, and JavaScript files for faster load times.","unminified-javascript":"Enable [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) in your Caching settings to reduce the size of your JS, HTML, and CSS files for faster load times.","unused-javascript":"Configure [`Delayed Scripts`](https://support.nitropack.io/hc/en-us/articles/1500002600942-Delayed-Scripts) in NitroPack to delay loading of scripts until they are needed.","uses-long-cache-ttl":"Go to the [`Improve Server Response Time`](https://support.nitropack.io/hc/en-us/articles/1500002321821-Improve-Server-Response-Time) feature in the `Caching` menu and adjust your page cache expiration time to improve loading times and user experience.","uses-optimized-images":"Automatically compress, optimize, and convert your images into WebP by enabling the [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/14177271695121-How-\ -to-serve-images-in-next-gen-formats-using-NitroPack) setting.","uses-text-compression":"Use [`Gzip compression`](https://support.nitropack.io/hc/en-us/articles/13229297479313-Enabling-GZIP-compression) in NitroPack to reduce the size of the files that are sent to the browser.","uses-responsive-images":"Enable [`Adaptive Image Sizing`](https://support.nitropack.io/hc/en-us/articles/10123833029905-How-to-Enable-Adaptive-Image-Sizing-For-Your-Site) to preemptively optimize your images and make them match the dimensions of the containers they’re displayed in across all devices.","dom-size":"Contact your account manager to enable [`HTML Lazy Load`](https://support.nitropack.io/hc/en-us/articles/17144942904337). Configuring it will prioritize and optimize your page rendering performance.","font-display":"Use the [`Override Font Rendering Behavior`](https://support.nitropack.io/hc/en-us/articles/16547358865041) option in NitroPack to set a desired value for the CSS font-display rule."};vA.exports= -{id:"nitropack",title:"NitroPack",icon:nY,UIStrings:iY}});var DA=pe((KEe,wA)=>{d();var aY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 512 512"><path fill="%2300DC82" d="M281.44 397.667h156.88c5.006 0 9.798-1.759 14.133-4.244.336-2.481 8.805-5.596 11.307-9.894 2.502-4.297 4.242-9.173 4.24-14.134-.002-4.962-1.734-9.836-4.24-14.131l-106-182.321c-2.502-4.297-5.559-7.413-9.893-9.894-4.335-2.48-10.542-4.24-15.547-4.24-5.005 0-9.799 1.76-14.133 4.24-4.335 2.481-7.392 5.597-9.894 9.894l-26.853 46.64-53.707-90.457c-2.504-4.296-5.557-8.823-9.893-11.303-4.336-2.481-9.127-2.827-14.133-2.827-5.006 0-9.798.346-14.134 2.827-4.335 2.48-8.802 7.007-11.306 11.303L46.827 355.268c-2.506 4.295-2.8259.169-2.827 14.131-.002 4.961.325 9.836 2.827 14.134 2.502 4.297 6.97 7.413 11.306 9.894 4.336 2.481 9.127 4.24 14.134 4.24H171.2c39.201 0 67.734-17.585 87.627-50.88L306.88 263.4l25.44-43.813 77.733 132.853H306.88l-25.44 45.227ZM169.787 352.44h-69.254l103.174-178.08L256 263.4l-34.639 60.384c-13.21 21.603-28.272 28.656-51.574 28.\ -656Z"/></svg>',oY={"modern-image-formats":'Use the `nuxt/image` component and set `format="webp"`. [Learn more](https://image.nuxt.com/usage/nuxt-img#format).',"offscreen-images":'Use the `nuxt/image` component and set `loading="lazy"` for offscreen images. [Learn more](https://image.nuxt.com/usage/nuxt-img#loading).',"uses-optimized-images":"Use the `nuxt/image` component and set the appropriate `quality`. [Learn more](https://image.nuxt.com/usage/nuxt-img#quality).","uses-responsive-images":"Use the `nuxt/image` component and set the appropriate `sizes`. [Learn more](https://image.nuxt.com/usage/nuxt-img#sizes).","prioritize-lcp-image":"Use the `nuxt/image` component and specify `preload` for LCP image. [Learn more](https://image.nuxt.com/usage/nuxt-img#preload).","unsized-images":"Use the `nuxt/image` component and specify explicit `width` and `height`. [Learn more](https://image.nuxt.com/usage/nuxt-img#width-height)."};wA.exports={id:"nuxt",title:"Nuxt",icon:aY,UIStrings:oY}});var TA=pe((ZEe,EA)=>{d();var sY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 310 310"><path fill="none" d="M-1-1h802v602H-1z"/><path fill="%23de6c26" d="M135 6.9c-14.2 4.4-34.9 21.8-49.9 42C55.8 88.5 39.6 135.8 41.4 177c.8 20.2 4.9 35.5 14.4 54.5 13.6 27.4 40.8 55.1 65.5 66.9 14.1 6.7 13.4 6.9 14.1-2.8.3-4.4 1-32.4 1.6-62.1 2.7-137.3 4.4-176 8.2-191.3.6-2.3 1.4-4.2 1.9-4.2 1.2 0 3.6 9.1 4.9 18.3.5 4.3 1 17.7 1 29.8 0 12 .3 21.9.7 21.9.3 0 5.7-5 11.9-11 6.9-6.8 12-11 13.3-11 1.8 0 1.9.3 1 2.7-1.2 3.1-7.9 13.2-19.1 28.5L153 128l.1 31.2c.1 17.2.4 37.4.8 44.9l.6 13.7 11-12.6c14-16 35.1-37.1 39.5-39.6l3.3-1.9-.6 3.2c-2 9.8-9.5 20.7-37.4 54.3L154 240.8v31.1c0 18.3.4 31.1.9 31.1 2.8 0 19.3-6.4 26.8-10.5 13.8-7.3 23.8-15 38.3-29.5 15.7-15.7 24.4-27.4 33.4-45.2 20.5-40 21-80.3 1.6-119-17.8-35.6-54.6-72.1-87.8-86.9-11.7-5.3-24.6-7.3-32.2-5z"/></svg>',uY={"unused-css-rules":"Consider reviewing the [plugins](https://octobercms.com/plugins) loading unused CSS on the webs\ +to-serve-images-in-next-gen-formats-using-NitroPack) setting.","uses-text-compression":"Use [`Gzip compression`](https://support.nitropack.io/hc/en-us/articles/13229297479313-Enabling-GZIP-compression) in NitroPack to reduce the size of the files that are sent to the browser.","uses-responsive-images":"Enable [`Adaptive Image Sizing`](https://support.nitropack.io/hc/en-us/articles/10123833029905-How-to-Enable-Adaptive-Image-Sizing-For-Your-Site) to preemptively optimize your images and make them match the dimensions of the containers they’re displayed in across all devices.","dom-size":"Contact your account manager to enable [`HTML Lazy Load`](https://support.nitropack.io/hc/en-us/articles/17144942904337). Configuring it will prioritize and optimize your page rendering performance.","font-display":"Use the [`Override Font Rendering Behavior`](https://support.nitropack.io/hc/en-us/articles/16547358865041) option in NitroPack to set a desired value for the CSS font-display rule."};e3.exports= +{id:"nitropack",title:"NitroPack",icon:qK,UIStrings:HK}});var r3=de((A2e,n3)=>{d();var WK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 512 512"><path fill="%2300DC82" d="M281.44 397.667h156.88c5.006 0 9.798-1.759 14.133-4.244.336-2.481 8.805-5.596 11.307-9.894 2.502-4.297 4.242-9.173 4.24-14.134-.002-4.962-1.734-9.836-4.24-14.131l-106-182.321c-2.502-4.297-5.559-7.413-9.893-9.894-4.335-2.48-10.542-4.24-15.547-4.24-5.005 0-9.799 1.76-14.133 4.24-4.335 2.481-7.392 5.597-9.894 9.894l-26.853 46.64-53.707-90.457c-2.504-4.296-5.557-8.823-9.893-11.303-4.336-2.481-9.127-2.827-14.133-2.827-5.006 0-9.798.346-14.134 2.827-4.335 2.48-8.802 7.007-11.306 11.303L46.827 355.268c-2.506 4.295-2.8259.169-2.827 14.131-.002 4.961.325 9.836 2.827 14.134 2.502 4.297 6.97 7.413 11.306 9.894 4.336 2.481 9.127 4.24 14.134 4.24H171.2c39.201 0 67.734-17.585 87.627-50.88L306.88 263.4l25.44-43.813 77.733 132.853H306.88l-25.44 45.227ZM169.787 352.44h-69.254l103.174-178.08L256 263.4l-34.639 60.384c-13.21 21.603-28.272 28.656-51.574 28.\ +656Z"/></svg>',GK={"modern-image-formats":'Use the `nuxt/image` component and set `format="webp"`. [Learn more](https://image.nuxt.com/usage/nuxt-img#format).',"offscreen-images":'Use the `nuxt/image` component and set `loading="lazy"` for offscreen images. [Learn more](https://image.nuxt.com/usage/nuxt-img#loading).',"uses-optimized-images":"Use the `nuxt/image` component and set the appropriate `quality`. [Learn more](https://image.nuxt.com/usage/nuxt-img#quality).","uses-responsive-images":"Use the `nuxt/image` component and set the appropriate `sizes`. [Learn more](https://image.nuxt.com/usage/nuxt-img#sizes).","prioritize-lcp-image":"Use the `nuxt/image` component and specify `preload` for LCP image. [Learn more](https://image.nuxt.com/usage/nuxt-img#preload).","unsized-images":"Use the `nuxt/image` component and specify explicit `width` and `height`. [Learn more](https://image.nuxt.com/usage/nuxt-img#width-height)."};n3.exports={id:"nuxt",title:"Nuxt",icon:WK,UIStrings:GK}});var o3=de((M2e,a3)=>{d();var VK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 310 310"><path fill="none" d="M-1-1h802v602H-1z"/><path fill="%23de6c26" d="M135 6.9c-14.2 4.4-34.9 21.8-49.9 42C55.8 88.5 39.6 135.8 41.4 177c.8 20.2 4.9 35.5 14.4 54.5 13.6 27.4 40.8 55.1 65.5 66.9 14.1 6.7 13.4 6.9 14.1-2.8.3-4.4 1-32.4 1.6-62.1 2.7-137.3 4.4-176 8.2-191.3.6-2.3 1.4-4.2 1.9-4.2 1.2 0 3.6 9.1 4.9 18.3.5 4.3 1 17.7 1 29.8 0 12 .3 21.9.7 21.9.3 0 5.7-5 11.9-11 6.9-6.8 12-11 13.3-11 1.8 0 1.9.3 1 2.7-1.2 3.1-7.9 13.2-19.1 28.5L153 128l.1 31.2c.1 17.2.4 37.4.8 44.9l.6 13.7 11-12.6c14-16 35.1-37.1 39.5-39.6l3.3-1.9-.6 3.2c-2 9.8-9.5 20.7-37.4 54.3L154 240.8v31.1c0 18.3.4 31.1.9 31.1 2.8 0 19.3-6.4 26.8-10.5 13.8-7.3 23.8-15 38.3-29.5 15.7-15.7 24.4-27.4 33.4-45.2 20.5-40 21-80.3 1.6-119-17.8-35.6-54.6-72.1-87.8-86.9-11.7-5.3-24.6-7.3-32.2-5z"/></svg>',$K={"unused-css-rules":"Consider reviewing the [plugins](https://octobercms.com/plugins) loading unused CSS on the webs\ ite. To identify plugins that add unnecessary CSS, run [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. Identify the theme/plugin responsible from the stylesheet URL. Look for plugins with many stylesheets with lots of red in code coverage. A plugin should only add a stylesheet if it is actually used on the web page.","modern-image-formats":"Consider using a [plugin](https://octobercms.com/plugins?search=image) or service that will automatically convert the uploaded images to the optimal formats. [WebP lossless images](https://developers.google.com/speed/webp) are 26% smaller in size compared to PNGs and 25-34% smaller than comparable JPEG images at the equivalent SSIM quality index. Another next-gen image format to consider is [AVIF](https://jakearchibald.com/2020/avif-has-landed/).","offscreen-images":"Consider installing an [image lazy loading plugin](https://octobercms.com/plugins?search=lazy) that provides the a\ bility to defer any offscreen images, or switch to a theme that provides that functionality. Also consider using [the AMP plugin](https://octobercms.com/plugins?search=Accelerated+Mobile+Pages).","total-byte-weight":"Consider showing excerpts in the post lists (e.g. using a `show more` button), reducing the number of posts shown on a given web page, breaking long posts into multiple web pages, or using a plugin to lazy-load comments.","render-blocking-resources":"There are many plugins that help [inline critical assets](https://octobercms.com/plugins?search=css). These plugins may break other plugins, so you should test thoroughly.","unminified-css":"There are many [plugins](https://octobercms.com/plugins?search=css) that can speed up a website by concatenating, minifying and compressing the styles. Using a build process to do this minification up-front can speed up development.","unminified-javascript":"There are many [plugins](https://octobercms.com/plugins?search=javascript) that ca\ n speed up a website by concatenating, minifying and compressing the scripts. Using a build process to do this minification up-front can speed up development.","efficient-animated-content":"[Replace animated GIFs with video](https://web.dev/replace-gifs-with-videos/) for faster web page loads and consider using modern file formats such as [WebM](https://web.dev/replace-gifs-with-videos/#create-webm-videos) or [AV1](https://developers.google.com/web/updates/2018/09/chrome-70-media-updates#av1-decoder) to improve compression efficiency by greater than 30% over the current state-of-the-art video codec, VP9.","unused-javascript":"Consider reviewing the [plugins](https://octobercms.com/plugins?search=javascript) that load unused JavaScript in the web page. To identify plugins that add unnecessary JavaScript, run [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. Identify the theme/plugin responsible from the URL of the scri\ pt. Look for plugins with many scripts with lots of red in code coverage. A plugin should only add a script if it is actually used on the web page.","uses-long-cache-ttl":"Read about [preventing unnecessary network requests with the HTTP Cache](https://web.dev/http-cache/#caching-checklist). There are many [plugins](https://octobercms.com/plugins?search=Caching) that can be used to speed up caching.","uses-optimized-images":"Consider using an [image optimization plugin](https://octobercms.com/plugins?search=image) to compresses images while retaining the quality.","uses-text-compression":"Enable text compression in the web server configuration.","uses-responsive-images":"Upload images directly in the media manager to ensure the required image sizes are available. Consider using the [resize filter](https://octobercms.com/docs/markup/filter-resize) or an [image resizing plugin](https://octobercms.com/plugins?search=image) to ensure the optimal image sizes are used.","server-response-time":"\ -Themes, plugins and server specifications all contribute to the server response time. Consider finding a more optimized theme, carefully selecting an optimization plugin and/or upgrade the server. October CMS also allows developers to use [`Queues`](https://octobercms.com/docs/services/queues) to defer the processing of a time consuming task, such as sending an e-mail. This drastically speeds up web requests."};EA.exports={id:"octobercms",title:"October CMS",icon:sY,UIStrings:uY}});var SA=pe((QEe,xA)=>{d();var lY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="%2361DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-\ +Themes, plugins and server specifications all contribute to the server response time. Consider finding a more optimized theme, carefully selecting an optimization plugin and/or upgrade the server. October CMS also allows developers to use [`Queues`](https://octobercms.com/docs/services/queues) to defer the processing of a time consuming task, such as sending an e-mail. This drastically speeds up web requests."};a3.exports={id:"octobercms",title:"October CMS",icon:VK,UIStrings:$K}});var s3=de((O2e,i3)=>{d();var YK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="%2361DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-\ 8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27\ -.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>',cY={"unminified-css":"If your build system minifies CSS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build).","unminif\ +.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>',KK={"unminified-css":"If your build system minifies CSS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build).","unminif\ ied-javascript":"If your build system minifies JS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build).","unused-javascript":"If you are not server-side rendering, [split your JavaScript bundles](https://web.dev/code-splitting-suspense/) with `React.lazy()`. Otherwise, code-split using a third-party library such as [loadable-components](https://www.smooth-code.com/open-source/loadable-components/docs/getting-started/).","server-response-time":"If you are server-side rendering any React components, consider using `renderToPipeableStream()` or `renderToStaticNodeStream()` to allow the client to receive and hydrate different parts of the markup instead of all at once. [Learn more](https://reactjs.org/docs/react-dom-server.html#renderToPipeableStream).",redirects:"If you are using React Router, minim\ ize usage of the `<Redirect>` component for [route navigations](https://reacttraining.com/react-router/web/api/Redirect).","user-timings":"Use the React DevTools Profiler, which makes use of the Profiler API, to measure the rendering performance of your components. [Learn more.](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)","dom-size":'Consider using a "windowing" library like `react-window` to minimize the number of DOM nodes created if you are rendering many repeated elements on the page. [Learn more](https://web.dev/virtualize-long-lists-react-window/). Also, minimize unnecessary re-renders using [`shouldComponentUpdate`](https://reactjs.org/docs/optimizing-performance.html#shouldcomponentupdate-in-action), [`PureComponent`](https://reactjs.org/docs/react-api.html#reactpurecomponent), or [`React.memo`](https://reactjs.org/docs/react-api.html#reactmemo) and [skip effects](https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-eff\ -ects) only until certain dependencies have changed if you are using the `Effect` hook to improve runtime performance.'};xA.exports={id:"react",title:"React",icon:lY,UIStrings:cY}});var FA=pe((tTe,CA)=>{d();var dY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 71 28"><path fill-rule="evenodd" d="M0 .032s2.796-.356 4.66 1.31C5.81 2.37 6.145 4.008 6.145 4.008L9.952 18.96l3.165-12.239c.309-1.301.864-2.909 1.743-3.997 1.121-1.385 3.398-1.472 3.641-1.472.242 0 2.519.087 3.639 1.472.88 1.088 1.435 2.696 1.744 3.997l3.165 12.239 3.806-14.953s.336-1.638 1.486-2.666C34.205-.324 37 .032 37 .032l-7.289 27.945s-2.404.176-3.607-.446c-1.58-.816-2.332-1.447-3.289-5.249l-.099-.395c-.349-1.399-.883-3.59-1.424-5.813l-.162-.667-.162-.664c-.779-3.198-1.497-6.143-1.612-6.517-.108-.351-.236-1.187-.855-1.187-.607 0-.746.837-.857 1.187-.13.412-.99 3.955-1.856 7.514l-.162.667c-.512 2.107-1.01 4.151-1.341 5.48l-.1.395c-.956 3.802-1.708 4.433-3.288 5.249-1.204.622-3.608.446-3.608.446zM43.998 5v.995L44 5.994v16.628c-.014 3.413-.373 4.17-1.933 4.956-1.213.61-3.067.379-3.067.379V9.332c0-.935.315-1.548 1.477-2.098.693-.329 1.34-.58 2.012-.953C43.54 5.703 43.998 5 43.99\ -8 5zM46 .125s3.877-.673 5.797 1.107c1.228 1.14 2.602 3.19 2.602 3.19l3.38 4.965c.164.258.378.54.72.54.343 0 .558-.282.722-.54l3.38-4.965s1.374-2.05 2.602-3.19C67.123-.548 71 .125 71 .125l-9.186 13.923 9.161 13.881-.032.004c-.38.045-4.036.423-5.855-1.266-1.229-1.138-2.487-2.992-2.487-2.992l-3.38-4.964c-.164-.26-.379-.54-.721-.54-.343 0-.557.28-.721.54l-3.38 4.964s-1.19 1.854-2.418 2.992c-1.92 1.783-5.957 1.262-5.957 1.262l9.161-13.88zM43.96 0H44c0 1.91-.186 3.042-1.387 3.923-.384.28-1.048.71-1.826.992C39.719 5.304 39 6 39 6c0-3.476.53-4.734 1.95-5.48.865-.452 2.272-.514 2.82-.52z"></path></svg>',pY={"modern-image-formats":"Upload images using `Wix Media Manager` to ensure they are automatically served as WebP. Find [more ways to optimize](https://support.wix.com/en/article/site-performance-optimizing-your-media) your site's media.","render-blocking-resources":"When [adding third-party code](https://support.wix.com/en/article/site-performance-using-third-party-code-on-your-site) in the `\ +ects) only until certain dependencies have changed if you are using the `Effect` hook to improve runtime performance.'};i3.exports={id:"react",title:"React",icon:YK,UIStrings:KK}});var u3=de((P2e,c3)=>{d();var JK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 71 28"><path fill-rule="evenodd" d="M0 .032s2.796-.356 4.66 1.31C5.81 2.37 6.145 4.008 6.145 4.008L9.952 18.96l3.165-12.239c.309-1.301.864-2.909 1.743-3.997 1.121-1.385 3.398-1.472 3.641-1.472.242 0 2.519.087 3.639 1.472.88 1.088 1.435 2.696 1.744 3.997l3.165 12.239 3.806-14.953s.336-1.638 1.486-2.666C34.205-.324 37 .032 37 .032l-7.289 27.945s-2.404.176-3.607-.446c-1.58-.816-2.332-1.447-3.289-5.249l-.099-.395c-.349-1.399-.883-3.59-1.424-5.813l-.162-.667-.162-.664c-.779-3.198-1.497-6.143-1.612-6.517-.108-.351-.236-1.187-.855-1.187-.607 0-.746.837-.857 1.187-.13.412-.99 3.955-1.856 7.514l-.162.667c-.512 2.107-1.01 4.151-1.341 5.48l-.1.395c-.956 3.802-1.708 4.433-3.288 5.249-1.204.622-3.608.446-3.608.446zM43.998 5v.995L44 5.994v16.628c-.014 3.413-.373 4.17-1.933 4.956-1.213.61-3.067.379-3.067.379V9.332c0-.935.315-1.548 1.477-2.098.693-.329 1.34-.58 2.012-.953C43.54 5.703 43.998 5 43.99\ +8 5zM46 .125s3.877-.673 5.797 1.107c1.228 1.14 2.602 3.19 2.602 3.19l3.38 4.965c.164.258.378.54.72.54.343 0 .558-.282.722-.54l3.38-4.965s1.374-2.05 2.602-3.19C67.123-.548 71 .125 71 .125l-9.186 13.923 9.161 13.881-.032.004c-.38.045-4.036.423-5.855-1.266-1.229-1.138-2.487-2.992-2.487-2.992l-3.38-4.964c-.164-.26-.379-.54-.721-.54-.343 0-.557.28-.721.54l-3.38 4.964s-1.19 1.854-2.418 2.992c-1.92 1.783-5.957 1.262-5.957 1.262l9.161-13.88zM43.96 0H44c0 1.91-.186 3.042-1.387 3.923-.384.28-1.048.71-1.826.992C39.719 5.304 39 6 39 6c0-3.476.53-4.734 1.95-5.48.865-.452 2.272-.514 2.82-.52z"></path></svg>',XK={"modern-image-formats":"Upload images using `Wix Media Manager` to ensure they are automatically served as WebP. Find [more ways to optimize](https://support.wix.com/en/article/site-performance-optimizing-your-media) your site's media.","render-blocking-resources":"When [adding third-party code](https://support.wix.com/en/article/site-performance-using-third-party-code-on-your-site) in the `\ Custom Code` tab of your site's dashboard, make sure it's deferred or loaded at the end of the code body. Where possible, use Wix’s [integrations](https://support.wix.com/en/article/about-marketing-integrations) to embed marketing tools on your site. ","efficient-animated-content":"Place videos inside `VideoBoxes`, customize them using `Video Masks` or add `Transparent Videos`. [Learn more](https://support.wix.com/en/article/wix-video-about-wix-video).","unused-javascript":"Review any third-party code you've added to your site in the `Custom Code` tab of your site's dashboard and only keep the services that are necessary to your site. [Find out more](https://support.wix.com/en/article/site-performance-removing-unused-javascript).","server-response-time":"Wix utilizes CDNs and caching to serve responses as fast as possible for most visitors. Consider [manually enabling caching](https://support.wix.com/en/article/site-performance-caching-pages-to-optimize-loading-speed) for your site, \ -especially if using `Velo`."};CA.exports={id:"wix",title:"Wix",icon:dY,UIStrings:pY}});var _A=pe((nTe,kA)=>{d();var mY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 122.5 122.5"><g fill="%232f3439"><path d="M8.7 61.3c0 20.8 12.1 38.7 29.6 47.3l-25-68.7c-3 6.5-4.6 13.7-4.6 21.4zm88-2.7c0-6.5-2.3-11-4.3-14.5-2.7-4.3-5.2-8-5.2-12.3 0-4.8 3.7-9.3 8.9-9.3h.7a52.4 52.4 0 0 0-79.4 9.9h3.3c5.5 0 14-.6 14-.6 2.9-.2 3.2 4 .4 4.3 0 0-2.9.4-6 .5l19.1 57L59.7 59l-8.2-22.5c-2.8-.1-5.5-.5-5.5-.5-2.8-.1-2.5-4.5.3-4.3 0 0 8.7.7 13.9.7 5.5 0 14-.7 14-.7 2.8-.2 3.2 4 .3 4.3 0 0-2.8.4-6 .5l19 56.5 5.2-17.5c2.3-7.3 4-12.5 4-17z"/><path d="m62.2 65.9-15.8 45.8a52.6 52.6 0 0 0 32.3-.9l-.4-.7zM107.4 36a49.6 49.6 0 0 1-3.6 24.2l-16.1 46.5A52.5 52.5 0 0 0 107.4 36z"/><path d="M61.3 0a61.3 61.3 0 1 0 .1 122.7A61.3 61.3 0 0 0 61.3 0zm0 119.7a58.5 58.5 0 1 1 .1-117 58.5 58.5 0 0 1-.1 117z"/></g></svg>',fY={"unused-css-rules":"Consider reducing, or switching, the number of [WordPress plugins](https://wordpress.org/plugins/) loading unused CSS in your page. To identify plugi\ +especially if using `Velo`."};c3.exports={id:"wix",title:"Wix",icon:JK,UIStrings:XK}});var d3=de((U2e,l3)=>{d();var ZK='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 122.5 122.5"><g fill="%232f3439"><path d="M8.7 61.3c0 20.8 12.1 38.7 29.6 47.3l-25-68.7c-3 6.5-4.6 13.7-4.6 21.4zm88-2.7c0-6.5-2.3-11-4.3-14.5-2.7-4.3-5.2-8-5.2-12.3 0-4.8 3.7-9.3 8.9-9.3h.7a52.4 52.4 0 0 0-79.4 9.9h3.3c5.5 0 14-.6 14-.6 2.9-.2 3.2 4 .4 4.3 0 0-2.9.4-6 .5l19.1 57L59.7 59l-8.2-22.5c-2.8-.1-5.5-.5-5.5-.5-2.8-.1-2.5-4.5.3-4.3 0 0 8.7.7 13.9.7 5.5 0 14-.7 14-.7 2.8-.2 3.2 4 .3 4.3 0 0-2.8.4-6 .5l19 56.5 5.2-17.5c2.3-7.3 4-12.5 4-17z"/><path d="m62.2 65.9-15.8 45.8a52.6 52.6 0 0 0 32.3-.9l-.4-.7zM107.4 36a49.6 49.6 0 0 1-3.6 24.2l-16.1 46.5A52.5 52.5 0 0 0 107.4 36z"/><path d="M61.3 0a61.3 61.3 0 1 0 .1 122.7A61.3 61.3 0 0 0 61.3 0zm0 119.7a58.5 58.5 0 1 1 .1-117 58.5 58.5 0 0 1-.1 117z"/></g></svg>',QK={"unused-css-rules":"Consider reducing, or switching, the number of [WordPress plugins](https://wordpress.org/plugins/) loading unused CSS in your page. To identify plugi\ ns that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage/) in Chrome DevTools. You can identify the theme/plugin responsible from the URL of the stylesheet. Look out for plugins that have many stylesheets in the list which have a lot of red in code coverage. A plugin should only enqueue a stylesheet if it is actually used on the page.","modern-image-formats":"Consider using the [Performance Lab](https://wordpress.org/plugins/performance-lab/) plugin to automatically convert your uploaded JPEG images into WebP, wherever supported.","offscreen-images":"Install a [lazy-load WordPress plugin](https://wordpress.org/plugins/search/lazy+load/) that provides the ability to defer any offscreen images, or switch to a theme that provides that functionality. Also consider using [the AMP plugin](https://wordpress.org/plugins/amp/).","total-byte-weight":"Consider showing excerpts in your post lists (e.g. via the more tag), reducing the number\ of posts shown on a given page, breaking your long posts into multiple pages, or using a plugin to lazy-load comments.","render-blocking-resources":"There are a number of WordPress plugins that can help you [inline critical assets](https://wordpress.org/plugins/search/critical+css/) or [defer less important resources](https://wordpress.org/plugins/search/defer+css+javascript/). Beware that optimizations provided by these plugins may break features of your theme or plugins, so you will likely need to make code changes.","unminified-css":"A number of [WordPress plugins](https://wordpress.org/plugins/search/minify+css/) can speed up your site by concatenating, minifying, and compressing your styles. You may also want to use a build process to do this minification up-front if possible.","unminified-javascript":"A number of [WordPress plugins](https://wordpress.org/plugins/search/minify+javascript/) can speed up your site by concatenating, minifying, and compressing your scripts. You may a\ lso want to use a build process to do this minification up front if possible.","efficient-animated-content":"Consider uploading your GIF to a service which will make it available to embed as an HTML5 video.","unused-javascript":"Consider reducing, or switching, the number of [WordPress plugins](https://wordpress.org/plugins/) loading unused JavaScript in your page. To identify plugins that are adding extraneous JS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage/) in Chrome DevTools. You can identify the theme/plugin responsible from the URL of the script. Look out for plugins that have many scripts in the list which have a lot of red in code coverage. A plugin should only enqueue a script if it is actually used on the page.","uses-long-cache-ttl":"Read about [Browser Caching in WordPress](https://wordpress.org/support/article/optimization/#browser-caching).","uses-optimized-images":"Consider using an [image optimization WordPress plugin](https://wordpre\ -ss.org/plugins/search/optimize+images/) that compresses your images while retaining quality.","uses-text-compression":"You can enable text compression in your web server configuration.","uses-responsive-images":"Upload images directly through the [media library](https://wordpress.org/support/article/media-library-screen/) to ensure that the required image sizes are available, and then insert them from the media library or use the image widget to ensure the optimal image sizes are used (including those for the responsive breakpoints). Avoid using `Full Size` images unless the dimensions are adequate for their usage. [Learn More](https://wordpress.org/support/article/inserting-images-into-posts-and-pages/).","server-response-time":"Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service."};kA.exports={id:"wordpress", -title:"WordPress",icon:mY,UIStrings:fY}});var IA=pe((aTe,RA)=>{d();var hY='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 294 524"><defs><linearGradient id="a" x1="36.742%" x2="37.116%" y1="100.518%" y2="-.001%"><stop offset="0%" stop-color="%23DD5F29"/><stop offset="26.042%" stop-color="%23F26B32"/><stop offset="100%" stop-color="%23FAC932"/></linearGradient><linearGradient id="b" x1="28.046%" x2="28.421%" y1="100.518%" y2="-.003%"><stop offset="0%" stop-color="%23DD5F29"/><stop offset="26.042%" stop-color="%23F26B32"/><stop offset="100%" stop-color="%23FAC932"/></linearGradient><linearGradient id="c" x1="38.215%" x2="38.589%" y1="100.518%" y2="0%"><stop offset="0%" stop-color="%23DD5F29"/><stop offset="26.042%" stop-color="%23F26B32"/><stop offset="100%" stop-color="%23FAC932"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path fill="url(%23a)" d="M218.617 270.615c-9.752 0-18.896-5.689-23.366-14.63l-7.72-17.27h-76.6l-7.722 17.27c-4.47 8.941-13.613 14.63-23.366 14.63H75.78l32.712 249.306\ +ss.org/plugins/search/optimize+images/) that compresses your images while retaining quality.","uses-text-compression":"You can enable text compression in your web server configuration.","uses-responsive-images":"Upload images directly through the [media library](https://wordpress.org/support/article/media-library-screen/) to ensure that the required image sizes are available, and then insert them from the media library or use the image widget to ensure the optimal image sizes are used (including those for the responsive breakpoints). Avoid using `Full Size` images unless the dimensions are adequate for their usage. [Learn More](https://wordpress.org/support/article/inserting-images-into-posts-and-pages/).","server-response-time":"Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service."};l3.exports={id:"wordpress", +title:"WordPress",icon:ZK,UIStrings:QK}});var p3=de((z2e,m3)=>{d();var eJ='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 294 524"><defs><linearGradient id="a" x1="36.742%" x2="37.116%" y1="100.518%" y2="-.001%"><stop offset="0%" stop-color="%23DD5F29"/><stop offset="26.042%" stop-color="%23F26B32"/><stop offset="100%" stop-color="%23FAC932"/></linearGradient><linearGradient id="b" x1="28.046%" x2="28.421%" y1="100.518%" y2="-.003%"><stop offset="0%" stop-color="%23DD5F29"/><stop offset="26.042%" stop-color="%23F26B32"/><stop offset="100%" stop-color="%23FAC932"/></linearGradient><linearGradient id="c" x1="38.215%" x2="38.589%" y1="100.518%" y2="0%"><stop offset="0%" stop-color="%23DD5F29"/><stop offset="26.042%" stop-color="%23F26B32"/><stop offset="100%" stop-color="%23FAC932"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path fill="url(%23a)" d="M218.617 270.615c-9.752 0-18.896-5.689-23.366-14.63l-7.72-17.27h-76.6l-7.722 17.27c-4.47 8.941-13.613 14.63-23.366 14.63H75.78l32.712 249.306\ c1.625 4.671 4.673 4.671 6.502 0l32.51-79.648 28.242 79.442c1.625 4.676 4.673 4.676 6.501 0L220.04 270.82l-1.423-.204Z" transform="translate(-1.58 -.2)"/><path fill="url(%23b)" d="M184.47 231.784h-70.3l-10.77 24.179c-3.657 7.314-10.768 12.597-18.489 14.02L109.7 423.791c1.625 2.844 4.673 2.844 6.501 0l31.697-48.155 29.055 47.951c1.829 2.845 4.673 2.845 6.502 0l28.039-154.012c-6.908-2.032-13.004-6.908-16.255-13.613l-10.768-24.18Z" transform="translate(-1.58 -.2)"/><path fill="url(%23c)" d="m195.259 255.988-46.123-103.014-45.92 103.014c-1.625 3.048-3.656 5.69-6.095 7.925l19.1 102.2c1.015 1.423 3.657 1.83 5.485 0l25.601-33.931 25.602 33.728c1.625 2.032 4.47 1.626 5.485 0l21.131-103.42c-1.625-2.032-3.047-4.064-4.266-6.502Z" transform="translate(-1.58 -.2)"/><path fill="%23F56F46" d="M.439 12.559c-1.422-4.877 1.422-8.33 6.299-8.33H47.17c2.845 0 5.486 2.437 6.299 4.876l29.665 116.83h1.422l53.437-121.3c1.016-2.032 3.048-3.86 5.892-3.86h6.299c3.047 0 5.08 1.625 5.892 3.86l53.437 121.3h1.423L240\ -.6 9.105c.61-2.439 3.454-4.877 6.299-4.877h40.433c4.877 0 7.518 3.454 6.299 8.33l-65.221 231.63c-.61 2.845-3.454 4.876-6.298 4.876h-5.487c-2.438 0-4.876-1.625-5.892-3.86l-63.19-141.009h-1.015L83.744 245.203c-1.016 2.032-3.454 3.86-5.892 3.86h-5.486c-2.845 0-5.486-2.031-6.299-4.876L.44 12.559Z"/></g></svg>',gY={"unused-css-rules":"Enable [Remove Unused CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css) in 'WP Rocket' to fix this issue. It reduces page size by removing all CSS and stylesheets that are not used while keeping only the used CSS for each page.","modern-image-formats":"Enable 'Imagify' from the Image Optimization tab in 'WP Rocket' to convert your images to WebP.","unused-javascript":"Enable [Delay JavaScript execution](https://docs.wp-rocket.me/article/1349-delay-javascript-execution) in 'WP Rocket' to fix this problem. It will improve the loading of your page by delaying the execution of scripts until user interaction. If your site has iframes, you can use WP Ro\ +.6 9.105c.61-2.439 3.454-4.877 6.299-4.877h40.433c4.877 0 7.518 3.454 6.299 8.33l-65.221 231.63c-.61 2.845-3.454 4.876-6.298 4.876h-5.487c-2.438 0-4.876-1.625-5.892-3.86l-63.19-141.009h-1.015L83.744 245.203c-1.016 2.032-3.454 3.86-5.892 3.86h-5.486c-2.845 0-5.486-2.031-6.299-4.876L.44 12.559Z"/></g></svg>',tJ={"unused-css-rules":"Enable [Remove Unused CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css) in 'WP Rocket' to fix this issue. It reduces page size by removing all CSS and stylesheets that are not used while keeping only the used CSS for each page.","modern-image-formats":"Enable 'Imagify' from the Image Optimization tab in 'WP Rocket' to convert your images to WebP.","unused-javascript":"Enable [Delay JavaScript execution](https://docs.wp-rocket.me/article/1349-delay-javascript-execution) in 'WP Rocket' to fix this problem. It will improve the loading of your page by delaying the execution of scripts until user interaction. If your site has iframes, you can use WP Ro\ cket's [LazyLoad for iframes and videos](https://docs.wp-rocket.me/article/1674-lazyload-for-iframes-and-videos) and [Replace YouTube iframe with preview image](https://docs.wp-rocket.me/article/1488-replace-youtube-iframe-with-preview-image) as well.","render-blocking-resources":"Enable [Remove Unused CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css) and [Load JavaScript deferred](https://docs.wp-rocket.me/article/1265-load-javascript-deferred) in 'WP Rocket' to address this recommendation. These features will respectively optimize the CSS and JavaScript files so that they don't block the rendering of your page.","unminified-css":"Enable [Minify CSS files](https://docs.wp-rocket.me/article/1350-css-minify-combine) in 'WP Rocket' to fix this issue. Any spaces and comments in your site's CSS files will be removed to make the file size smaller and faster to download.","unminified-javascript":"Enable [Minify JavaScript files](https://docs.wp-rocket.me/article/1351-javascript-\ minify-combine) in 'WP Rocket' to fix this issue. Empty spaces and comments will be removed from JavaScript files to make their size smaller and faster to download.","uses-optimized-images":"Enable 'Imagify' from the Image Optimization tab in 'WP Rocket' and run Bulk Optimization to compress your images.","uses-rel-preconnect":`Use [Prefetch DNS Requests](https://docs.wp-rocket.me/article/1302-prefetch-dns-requests) in 'WP Rocket' to add "dns-prefetch" and speed up the connection with external domains. Also, 'WP Rocket' automatically adds "preconnect" to [Google Fonts domain](https://docs.wp-rocket.me/article/1312-optimize-google-fonts) and any CNAME(S) added via the [Enable CDN](https://docs.wp-rocket.me/article/42-using-wp-rocket-with-a-cdn) feature.`,"uses-rel-preload":"To fix this issue for fonts, enable [Remove Unused CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css) in 'WP Rocket'. Your site's critical fonts will be preloaded with priority.","offscreen-images":"Enabl\ -e [LazyLoad](https://docs.wp-rocket.me/article/1141-lazyload-for-images) in WP Rocket to fix this recommendation. This feature delays the loading of the images until the visitor scrolls down the page and actually needs to see them."};RA.exports={id:"wp-rocket",title:"WP Rocket",icon:hY,UIStrings:gY}});var NA=pe((sTe,AA)=>{d();var yY=[nA(),aA(),sA(),lA(),dA(),mA(),hA(),yA(),bA(),DA(),TA(),SA(),FA(),_A(),IA()];AA.exports=yY});var LA=pe((lTe,MA)=>{d();MA.exports=s(function(t,r){if(typeof t=="string"&&r[t])return t;for(var n=[].concat(t||[]),i=0,a=n.length;i<a;++i)for(var o=n[i].split("-");o.length;){var u=o.join("-");if(r[u])return u;o.pop()}},"lookupClosestLocale")});var ym,vY,PA,cl=g(()=>{"use strict";d();ni();Ui();Va();ym=St.dirname(""),vY=JSON.parse(`{ +e [LazyLoad](https://docs.wp-rocket.me/article/1141-lazyload-for-images) in WP Rocket to fix this recommendation. This feature delays the loading of the images until the visitor scrolls down the page and actually needs to see them."};m3.exports={id:"wp-rocket",title:"WP Rocket",icon:eJ,UIStrings:tJ}});var h3=de((H2e,f3)=>{d();var nJ=[U_(),z_(),H_(),G_(),$_(),K_(),X_(),Q_(),t3(),r3(),o3(),s3(),u3(),d3(),p3()];f3.exports=nJ});var y3=de((G2e,g3)=>{d();g3.exports=s(function(t,n){if(typeof t=="string"&&n[t])return t;for(var r=[].concat(t||[]),a=0,o=r.length;a<o;++a)for(var i=r[a].split("-");i.length;){var c=i.join("-");if(n[c])return c;i.pop()}},"lookupClosestLocale")});var wp,rJ,v3,du=g(()=>{"use strict";d();da();$a();oi();wp=Ct.dirname(""),rJ=JSON.parse(`{ "name": "lighthouse", "type": "module", - "version": "12.2.2", + "version": "12.3.0", "description": "Automated auditing, performance metrics, and best practices for the web.", "main": "./core/index.js", "bin": { @@ -334,7 +334,7 @@ "pako": "^2.0.3", "preact": "^10.7.2", "pretty-json-stringify": "^0.0.2", - "puppeteer": "^23.8.0", + "puppeteer": "^23.10.4", "resolve": "^1.22.1", "rollup": "^2.52.7", "rollup-plugin-polyfill-node": "^0.12.0", @@ -348,7 +348,7 @@ "webtreemap-cdt": "^3.2.1" }, "dependencies": { - "@paulirish/trace_engine": "0.0.32", + "@paulirish/trace_engine": "0.0.39", "@sentry/node": "^7.0.0", "axe-core": "^4.10.2", "chrome-launcher": "^1.1.2", @@ -367,7 +367,7 @@ "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "puppeteer-core": "^23.8.0", + "puppeteer-core": "^23.10.4", "robots-parser": "^3.0.1", "semver": "^5.3.0", "speedline-core": "^1.4.3", @@ -394,227 +394,505 @@ }, "homepage": "https://github.com/GoogleChrome/lighthouse#readme" } -`),PA=vY.version});function vm(e,t){if(typeof Intl!="object")throw new Error("Lighthouse must be run in Node with `Intl` support. See https://nodejs.org/api/intl.html for help");let r=Intl.getCanonicalLocales(e),n=Intl.NumberFormat.supportedLocalesOf(r),i=t||eA(),a=Object.fromEntries(i.map(u=>[u,{}])),o=(0,OA.default)(n,a);return o||(Intl.NumberFormat.supportedLocalesOf("es").length===0&&N.warn("i18n","Requested locale not available in this version of node. The `full-icu` npm module can provide additional locales. For help, see https://github.com/GoogleChrome/lighthouse/blob/main/readme.md#how-do-i-get-localized-lighthouse-results-via-the-cli"),N.warn("i18n",`locale(s) '${e}' not available. Falling back to default '${as}'`)),o||as}function D(e,t={}){e.startsWith("file://")&&(e=Ga.fileURLToPath(e)),St.isAbsolute(e)&&(e=St.relative(ym,e));let r={...F,...t};return s((i,a)=>{let o=Object.keys(r).find(p=>r[p]===i);if(!o)throw new Error(`Could not locate: ${i}`);return{i18nId:`${(o in t?e:St.relative(ym,WI({url:"\ -core/lib/i18n/i18n.js"}))).replace(/\\/g,"/")} | ${o}`,values:a,formattedDefault:zg(i,a,as)}},"getIcuMessageFn")}function _n(e){return typeof e=="string"||os(e)}var OA,F,R=g(()=>{"use strict";d();Ui();ll();OA=yr(LA(),1);Ne();ci();cl();ci();Va();F={ms:"{timeInMs, number, milliseconds} ms",seconds:"{timeInMs, number, seconds} s",displayValueByteSavings:"Potential savings of {wastedBytes, number, bytes} KiB",displayValueMsSavings:"Potential savings of {wastedMs, number, milliseconds} ms",displayValueElementsFound:"{nodeCount, plural, =1 {1 element found} other {# elements found}}",columnURL:"URL",columnSize:"Size",columnResourceSize:"Resource Size",columnTransferSize:"Transfer Size",columnCacheTTL:"Cache TTL",columnWastedBytes:"Potential Savings",columnWastedMs:"Potential Savings",columnBlockingTime:"Main-Thread Blocking Time",columnTimeSpent:"Time Spent",columnLocation:"Location",columnResourceType:"Resource Type",columnRequests:"Requests",columnName:"Name",columnSource:"Source",columnElement:"\ -Element",columnStartTime:"Start Time",columnDuration:"Duration",columnFailingElem:"Failing Elements",columnDescription:"Description",totalResourceType:"Total",documentResourceType:"Document",scriptResourceType:"Script",stylesheetResourceType:"Stylesheet",imageResourceType:"Image",mediaResourceType:"Media",fontResourceType:"Font",otherResourceType:"Other",thirdPartyResourceType:"Third-party",otherResourcesLabel:"Other resources",firstContentfulPaintMetric:"First Contentful Paint",interactiveMetric:"Time to Interactive",firstMeaningfulPaintMetric:"First Meaningful Paint",totalBlockingTimeMetric:"Total Blocking Time",maxPotentialFIDMetric:"Max Potential First Input Delay",speedIndexMetric:"Speed Index",largestContentfulPaintMetric:"Largest Contentful Paint",cumulativeLayoutShiftMetric:"Cumulative Layout Shift",interactionToNextPaint:"Interaction to Next Paint",itemSeverityLow:"Low",itemSeverityMedium:"Medium",itemSeverityHigh:"High"};s(vm,"lookupLocale");s(D,"createIcuMessageFn");s(_n,"is\ -StringOrIcuMessage")});function UA(e){if(!e)return[];let t=[];for(let r of e){let n=Gg.find(l=>l.requiredStacks.includes(`${r.detector}:${r.id}`));if(!n)continue;let i=BA.default.find(l=>l.id===n.packId);if(!i){N.warn("StackPacks",`'${n.packId}' stack pack was matched but is not found in stack-packs lib`);continue}let a=D(`node_modules/lighthouse-stack-packs/packs/${i.id}.js`,i.UIStrings),o={},u=i.UIStrings;for(let l in u)u[l]&&(o[l]=a(u[l]));t.push({id:i.id,title:i.title,iconDataURL:i.icon,descriptions:o})}return t.sort((r,n)=>{let i=Gg.findIndex(o=>o.packId===r.id),a=Gg.findIndex(o=>o.packId===n.id);return i-a})}var BA,Gg,jA=g(()=>{"use strict";d();Ne();BA=yr(NA(),1);R();Gg=[{packId:"gatsby",requiredStacks:["js:gatsby"]},{packId:"wordpress",requiredStacks:["js:wordpress"]},{packId:"wix",requiredStacks:["js:wix"]},{packId:"wp-rocket",requiredStacks:["js:wp-rocket"]},{packId:"ezoic",requiredStacks:["js:ezoic"]},{packId:"drupal",requiredStacks:["js:drupal"]},{packId:"nitropack",requiredStacks:["js:nitropack"]}, -{packId:"amp",requiredStacks:["js:amp"]},{packId:"magento",requiredStacks:["js:magento"]},{packId:"octobercms",requiredStacks:["js:octobercms"]},{packId:"joomla",requiredStacks:["js:joomla"]},{packId:"next.js",requiredStacks:["js:next"]},{packId:"nuxt",requiredStacks:["js:nuxt"]},{packId:"angular",requiredStacks:["js:@angular/core"]},{packId:"react",requiredStacks:["js:react"]}];s(UA,"getStackPacks")});var Vg,Mt,qA=g(()=>{d();typeof Object.create=="function"?Vg=s(function(t,r){t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})},"inherits"):Vg=s(function(t,r){t.super_=r;var n=s(function(){},"TempCtor");n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t},"inherits");Mt=Vg});function EY(e){if(!ty(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(Gi(arguments[r]));return t.join(" ")}for(var r=1,n=arguments,i=n.length,a=String(e).replace(DY,function(u){if(u==="%%")return"%";if(r>=i)return u;switch(u){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch{return"[Circular]"}default:return u}}),o=n[r];r<i;o=n[++r])ey(o)||!dl(o)?a+=" "+o:a+=" "+Gi(o);return a}function Qg(e,t){if(Wi(globalThis.process))return function(){return Qg(e,t).apply(this,arguments)};if(ar.noDeprecation===!0)return e;var r=!1;function n(){if(!r){if(ar.throwDeprecation)throw new Error(t);ar.traceDeprecation?console.trace(t):console.error(t),r=!0}return e.apply(this,arguments)}return s(n,"deprecated"),n}function HA(e){if(Wi($g)&&($g=ar.env.NODE_DEBUG||""),e=e.toUpperCase(),!bm[e])if(new RegExp("\\b"+e+"\\b","i").test($g)){var t=0;bm[e]=function(){var r=EY.apply(null,arguments);console.error("%s %d: %s",e,t,r)}}else bm[e]=function(){}; -return bm[e]}function Gi(e,t){var r={seen:[],stylize:xY};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),WA(t)?r.showHidden=t:t&&IY(r,t),Wi(r.showHidden)&&(r.showHidden=!1),Wi(r.depth)&&(r.depth=2),Wi(r.colors)&&(r.colors=!1),Wi(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=TY),wm(r,e,r.depth)}function TY(e,t){var r=Gi.styles[t];return r?"\x1B["+Gi.colors[r][0]+"m"+e+"\x1B["+Gi.colors[r][1]+"m":e}function xY(e,t){return e}function SY(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function wm(e,t,r){if(e.customInspect&&t&&Zg(t.inspect)&&t.inspect!==Gi&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return ty(n)||(n=wm(e,n,r)),n}var i=CY(e,t);if(i)return i;var a=Object.keys(t),o=SY(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),Jg(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return Yg(t);if(a.length===0){if(Zg(t)){var u=t.name?": "+t.name:"";return e.stylize("[Function"+u+"]","\ -special")}if(Kg(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(zA(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Jg(t))return Yg(t)}var l="",c=!1,p=["{","}"];if(_Y(t)&&(c=!0,p=["[","]"]),Zg(t)){var m=t.name?": "+t.name:"";l=" [Function"+m+"]"}if(Kg(t)&&(l=" "+RegExp.prototype.toString.call(t)),zA(t)&&(l=" "+Date.prototype.toUTCString.call(t)),Jg(t)&&(l=" "+Yg(t)),a.length===0&&(!c||t.length==0))return p[0]+l+p[1];if(r<0)return Kg(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var f;return c?f=FY(e,t,r,o,a):f=a.map(function(h){return Xg(e,t,r,o,h,c)}),e.seen.pop(),kY(f,l,p)}function CY(e,t){if(Wi(t))return e.stylize("undefined","undefined");if(ty(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(RY(t))return e.stylize(""+t,"number");if(WA(t))return e.stylize(""+t,"boolean");if(ey(t))return e.stylize("null","null")}function Yg(e){ -return"["+Error.prototype.toString.call(e)+"]"}function FY(e,t,r,n,i){for(var a=[],o=0,u=t.length;o<u;++o)GA(t,String(o))?a.push(Xg(e,t,r,n,String(o),!0)):a.push("");return i.forEach(function(l){l.match(/^\d+$/)||a.push(Xg(e,t,r,n,l,!0))}),a}function Xg(e,t,r,n,i,a){var o,u,l;if(l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},l.get?l.set?u=e.stylize("[Getter/Setter]","special"):u=e.stylize("[Getter]","special"):l.set&&(u=e.stylize("[Setter]","special")),GA(n,i)||(o="["+i+"]"),u||(e.seen.indexOf(l.value)<0?(ey(r)?u=wm(e,l.value,null):u=wm(e,l.value,r-1),u.indexOf(` -`)>-1&&(a?u=u.split(` -`).map(function(c){return" "+c}).join(` -`).substr(2):u=` -`+u.split(` -`).map(function(c){return" "+c}).join(` -`))):u=e.stylize("[Circular]","special")),Wi(o)){if(a&&i.match(/^\d+$/))return u;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+u}function kY(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` -`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` +`),v3=rJ.version});function Dp(e,t){if(typeof Intl!="object")throw new Error("Lighthouse must be run in Node with `Intl` support. See https://nodejs.org/api/intl.html for help");let n=Intl.getCanonicalLocales(e),r=Intl.NumberFormat.supportedLocalesOf(n),a=t||L_(),o=Object.fromEntries(a.map(c=>[c,{}])),i=(0,b3.default)(r,o);return i||(Intl.NumberFormat.supportedLocalesOf("es").length===0&&M.warn("i18n","Requested locale not available in this version of node. The `full-icu` npm module can provide additional locales. For help, see https://github.com/GoogleChrome/lighthouse/blob/main/readme.md#how-do-i-get-localized-lighthouse-results-via-the-cli"),M.warn("i18n",`locale(s) '${e}' not available. Falling back to default '${ls}'`)),i||ls}function D(e,t={}){e.startsWith("file://")&&(e=ai.fileURLToPath(e)),Ct.isAbsolute(e)&&(e=Ct.relative(wp,e));let n={...F,...t};return s((a,o)=>{let i=Object.keys(n).find(m=>n[m]===a);if(!i)throw new Error(`Could not locate: ${a}`);return{i18nId:`${(i in t?e:Ct.relative(wp,C_({url:"\ +core/lib/i18n/i18n.js"}))).replace(/\\/g,"/")} | ${i}`,values:o,formattedDefault:$g(a,o,ls)}},"getIcuMessageFn")}function Br(e){return typeof e=="string"||ds(e)}var b3,F,A=g(()=>{"use strict";d();$a();lu();b3=mn(y3(),1);Oe();va();du();va();oi();F={ms:"{timeInMs, number, milliseconds} ms",seconds:"{timeInMs, number, seconds} s",displayValueByteSavings:"Potential savings of {wastedBytes, number, bytes} KiB",displayValueMsSavings:"Potential savings of {wastedMs, number, milliseconds} ms",displayValueElementsFound:"{nodeCount, plural, =1 {1 element found} other {# elements found}}",columnURL:"URL",columnSize:"Size",columnResourceSize:"Resource Size",columnTransferSize:"Transfer Size",columnCacheTTL:"Cache TTL",columnWastedBytes:"Potential Savings",columnWastedMs:"Potential Savings",columnBlockingTime:"Main-Thread Blocking Time",columnTimeSpent:"Time Spent",columnLocation:"Location",columnResourceType:"Resource Type",columnRequests:"Requests",columnName:"Name",columnSource:"Source",columnElement:"\ +Element",columnStartTime:"Start Time",columnDuration:"Duration",columnFailingElem:"Failing Elements",columnDescription:"Description",totalResourceType:"Total",documentResourceType:"Document",scriptResourceType:"Script",stylesheetResourceType:"Stylesheet",imageResourceType:"Image",mediaResourceType:"Media",fontResourceType:"Font",otherResourceType:"Other",thirdPartyResourceType:"Third-party",otherResourcesLabel:"Other resources",firstContentfulPaintMetric:"First Contentful Paint",interactiveMetric:"Time to Interactive",firstMeaningfulPaintMetric:"First Meaningful Paint",totalBlockingTimeMetric:"Total Blocking Time",maxPotentialFIDMetric:"Max Potential First Input Delay",speedIndexMetric:"Speed Index",largestContentfulPaintMetric:"Largest Contentful Paint",cumulativeLayoutShiftMetric:"Cumulative Layout Shift",interactionToNextPaint:"Interaction to Next Paint",itemSeverityLow:"Low",itemSeverityMedium:"Medium",itemSeverityHigh:"High"};s(Dp,"lookupLocale");s(D,"createIcuMessageFn");s(Br,"is\ +StringOrIcuMessage")});function D3(e){if(!e)return[];let t=[];for(let n of e){let r=Jg.find(u=>u.requiredStacks.includes(`${n.detector}:${n.id}`));if(!r)continue;let a=w3.default.find(u=>u.id===r.packId);if(!a){M.warn("StackPacks",`'${r.packId}' stack pack was matched but is not found in stack-packs lib`);continue}let o=D(`node_modules/lighthouse-stack-packs/packs/${a.id}.js`,a.UIStrings),i={},c=a.UIStrings;for(let u in c)c[u]&&(i[u]=o(c[u]));t.push({id:a.id,title:a.title,iconDataURL:a.icon,descriptions:i})}return t.sort((n,r)=>{let a=Jg.findIndex(i=>i.packId===n.id),o=Jg.findIndex(i=>i.packId===r.id);return a-o})}var w3,Jg,x3=g(()=>{"use strict";d();Oe();w3=mn(h3(),1);A();Jg=[{packId:"gatsby",requiredStacks:["js:gatsby"]},{packId:"wordpress",requiredStacks:["js:wordpress"]},{packId:"wix",requiredStacks:["js:wix"]},{packId:"wp-rocket",requiredStacks:["js:wp-rocket"]},{packId:"ezoic",requiredStacks:["js:ezoic"]},{packId:"drupal",requiredStacks:["js:drupal"]},{packId:"nitropack",requiredStacks:["js:nitropack"]}, +{packId:"amp",requiredStacks:["js:amp"]},{packId:"magento",requiredStacks:["js:magento"]},{packId:"octobercms",requiredStacks:["js:octobercms"]},{packId:"joomla",requiredStacks:["js:joomla"]},{packId:"next.js",requiredStacks:["js:next"]},{packId:"nuxt",requiredStacks:["js:nuxt"]},{packId:"angular",requiredStacks:["js:@angular/core"]},{packId:"react",requiredStacks:["js:react"]}];s(D3,"getStackPacks")});var Xg,Lt,E3=g(()=>{d();typeof Object.create=="function"?Xg=s(function(t,n){t.super_=n,t.prototype=Object.create(n.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})},"inherits"):Xg=s(function(t,n){t.super_=n;var r=s(function(){},"TempCtor");r.prototype=n.prototype,t.prototype=new r,t.prototype.constructor=t},"inherits");Lt=Xg});function sJ(e){if(!iy(e)){for(var t=[],n=0;n<arguments.length;n++)t.push(Qa(arguments[n]));return t.join(" ")}for(var n=1,r=arguments,a=r.length,o=String(e).replace(iJ,function(c){if(c==="%%")return"%";if(n>=a)return c;switch(c){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch{return"[Circular]"}default:return c}}),i=r[n];n<a;i=r[++n])oy(i)||!mu(i)?o+=" "+i:o+=" "+Qa(i);return o}function ay(e,t){if(Za(globalThis.process))return function(){return ay(e,t).apply(this,arguments)};if(fn.noDeprecation===!0)return e;var n=!1;function r(){if(!n){if(fn.throwDeprecation)throw new Error(t);fn.traceDeprecation?console.trace(t):console.error(t),n=!0}return e.apply(this,arguments)}return s(r,"deprecated"),r}function S3(e){if(Za(Zg)&&(Zg=fn.env.NODE_DEBUG||""),e=e.toUpperCase(),!xp[e])if(new RegExp("\\b"+e+"\\b","i").test(Zg)){var t=0;xp[e]=function(){var n=sJ.apply(null,arguments);console.error("%s %d: %s",e,t,n)}}else xp[e]=function(){}; +return xp[e]}function Qa(e,t){var n={seen:[],stylize:uJ};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),C3(t)?n.showHidden=t:t&&gJ(n,t),Za(n.showHidden)&&(n.showHidden=!1),Za(n.depth)&&(n.depth=2),Za(n.colors)&&(n.colors=!1),Za(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=cJ),Ep(n,e,n.depth)}function cJ(e,t){var n=Qa.styles[t];return n?"\x1B["+Qa.colors[n][0]+"m"+e+"\x1B["+Qa.colors[n][1]+"m":e}function uJ(e,t){return e}function lJ(e){var t={};return e.forEach(function(n,r){t[n]=!0}),t}function Ep(e,t,n){if(e.customInspect&&t&&ny(t.inspect)&&t.inspect!==Qa&&!(t.constructor&&t.constructor.prototype===t)){var r=t.inspect(n,e);return iy(r)||(r=Ep(e,r,n)),r}var a=dJ(e,t);if(a)return a;var o=Object.keys(t),i=lJ(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),ty(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return Qg(t);if(o.length===0){if(ny(t)){var c=t.name?": "+t.name:"";return e.stylize("[Function"+c+"]","\ +special")}if(ey(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(T3(t))return e.stylize(Date.prototype.toString.call(t),"date");if(ty(t))return Qg(t)}var u="",l=!1,m=["{","}"];if(fJ(t)&&(l=!0,m=["[","]"]),ny(t)){var p=t.name?": "+t.name:"";u=" [Function"+p+"]"}if(ey(t)&&(u=" "+RegExp.prototype.toString.call(t)),T3(t)&&(u=" "+Date.prototype.toUTCString.call(t)),ty(t)&&(u=" "+Qg(t)),o.length===0&&(!l||t.length==0))return m[0]+u+m[1];if(n<0)return ey(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var f;return l?f=mJ(e,t,n,i,o):f=o.map(function(h){return ry(e,t,n,i,h,l)}),e.seen.pop(),pJ(f,u,m)}function dJ(e,t){if(Za(t))return e.stylize("undefined","undefined");if(iy(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(hJ(t))return e.stylize(""+t,"number");if(C3(t))return e.stylize(""+t,"boolean");if(oy(t))return e.stylize("null","null")}function Qg(e){ +return"["+Error.prototype.toString.call(e)+"]"}function mJ(e,t,n,r,a){for(var o=[],i=0,c=t.length;i<c;++i)k3(t,String(i))?o.push(ry(e,t,n,r,String(i),!0)):o.push("");return a.forEach(function(u){u.match(/^\d+$/)||o.push(ry(e,t,n,r,u,!0))}),o}function ry(e,t,n,r,a,o){var i,c,u;if(u=Object.getOwnPropertyDescriptor(t,a)||{value:t[a]},u.get?u.set?c=e.stylize("[Getter/Setter]","special"):c=e.stylize("[Getter]","special"):u.set&&(c=e.stylize("[Setter]","special")),k3(r,a)||(i="["+a+"]"),c||(e.seen.indexOf(u.value)<0?(oy(n)?c=Ep(e,u.value,null):c=Ep(e,u.value,n-1),c.indexOf(` +`)>-1&&(o?c=c.split(` +`).map(function(l){return" "+l}).join(` +`).substr(2):c=` +`+c.split(` +`).map(function(l){return" "+l}).join(` +`))):c=e.stylize("[Circular]","special")),Za(i)){if(o&&a.match(/^\d+$/))return c;i=JSON.stringify(""+a),i.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(i=i.substr(1,i.length-2),i=e.stylize(i,"name")):(i=i.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),i=e.stylize(i,"string"))}return i+": "+c}function pJ(e,t,n){var r=0,a=e.reduce(function(o,i){return r++,i.indexOf(` +`)>=0&&r++,o+i.replace(/\u001b\[\d\d?m/g,"").length+1},0);return a>60?n[0]+(t===""?"":t+` `)+" "+e.join(`, - `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function _Y(e){return Array.isArray(e)}function WA(e){return typeof e=="boolean"}function ey(e){return e===null}function RY(e){return typeof e=="number"}function ty(e){return typeof e=="string"}function Wi(e){return e===void 0}function Kg(e){return dl(e)&&ry(e)==="[object RegExp]"}function dl(e){return typeof e=="object"&&e!==null}function zA(e){return dl(e)&&ry(e)==="[object Date]"}function Jg(e){return dl(e)&&(ry(e)==="[object Error]"||e instanceof Error)}function Zg(e){return typeof e=="function"}function ry(e){return Object.prototype.toString.call(e)}function IY(e,t){if(!t||!dl(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}function GA(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function AY(e){if(typeof e!="function")throw new TypeError('The "original" argument must be of type Function');if(Ya&&e[Ya]){var t=e[Ya];if(typeof t!="function")throw new TypeError('The "util.promisify.custom" argument m\ -ust be of type Function');return Object.defineProperty(t,Ya,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var r,n,i=new Promise(function(u,l){r=u,n=l}),a=[],o=0;o<arguments.length;o++)a.push(arguments[o]);a.push(function(u,l){u?n(u):r(l)});try{e.apply(this,a)}catch(u){n(u)}return i}return s(t,"fn"),Object.setPrototypeOf(t,Object.getPrototypeOf(e)),Ya&&Object.defineProperty(t,Ya,{value:t,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(t,wY(e))}var wY,DY,bm,$g,Ya,Vi=g(()=>{d();Li();qA();wY=Object.getOwnPropertyDescriptors||s(function(t){for(var r=Object.keys(t),n={},i=0;i<r.length;i++)n[r[i]]=Object.getOwnPropertyDescriptor(t,r[i]);return n},"getOwnPropertyDescriptors"),DY=/%[sdj%]/g;s(EY,"format");s(Qg,"deprecate");bm={};s(HA,"debuglog");s(Gi,"inspect");Gi.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]}; -Gi.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};s(TY,"stylizeWithColor");s(xY,"stylizeNoColor");s(SY,"arrayToHash");s(wm,"formatValue");s(CY,"formatPrimitive");s(Yg,"formatError");s(FY,"formatArray");s(Xg,"formatProperty");s(kY,"reduceToSingleString");s(_Y,"isArray");s(WA,"isBoolean");s(ey,"isNull");s(RY,"isNumber");s(ty,"isString");s(Wi,"isUndefined");s(Kg,"isRegExp");s(dl,"isObject");s(zA,"isDate");s(Jg,"isError");s(Zg,"isFunction");s(ry,"objectToString");s(IY,"_extend");s(GA,"hasOwnProperty");Ya=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;s(AY,"promisify");AY.custom=Ya});function Ka(){this.head=null,this.tail=null,this.length=0}var VA,$A=g(()=>{d();Vo();VA=Ka;s(Ka,"BufferList");Ka.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length};Ka.prototype.unshift=function(e){var t={data:e,next:this.head};this.length===0&&(this.tail=t),this.head=t,++this.length};Ka.prototype.shift=function(){if(this.length!==0){var e=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,e}};Ka.prototype.clear=function(){this.head=this.tail=null,this.length=0};Ka.prototype.join=function(e){if(this.length===0)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r};Ka.prototype.concat=function(e){if(this.length===0)return q.alloc(0);if(this.length===1)return this.head.data;for(var t=q.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t}});function MY(e){if(e&&!NY(e))throw new Error("Unknown encoding: "+e)}function ss(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),MY(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=PY;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=OY;break;default:this.write=LY;return}this.charBuffer=new q(6),this.charReceived=0,this.charLength=0}function LY(e){return e.toString(this.encoding)}function PY(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function OY(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}var NY,YA=g(()=>{d();Vo();NY=q.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};s(MY,"assertEncoding");s(ss,"StringDecoder");ss.prototype.write=function(e){for(var t="";this.charLength;){ -var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived<this.charLength)return"";e=e.slice(r,e.length),t=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var i=t.charCodeAt(t.length-1);if(i>=55296&&i<=56319){this.charLength+=this.surrogateSize,t="";continue}if(this.charReceived=this.charLength=0,e.length===0)return t;break}this.detectIncompleteChar(e);var n=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,n),n-=this.charReceived),t+=e.toString(this.encoding,0,n);var n=t.length-1,i=t.charCodeAt(n);if(i>=55296&&i<=56319){var a=this.surrogateSize;return this.charLength+=a,this.charReceived+=a,this.charBuffer.copy(this.charBuffer,a,0,a),e.copy(this.charBuffer,0,0,a),t.substring(0,n)}return t};ss.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(t==1&&r>>5==6){this. -charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=t};ss.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t};s(LY,"passThroughWrite");s(PY,"utf16DetectIncompleteChar");s(OY,"base64DetectIncompleteChar")});function BY(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function UY(e,t){return e.listeners(t).length}function XA(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof ur&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16*1024;this.highWaterMark=r||r===0?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new VA,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new ss(e.encoding),this.encoding=e.encoding)}function Ct(e){if(!(this instanceof Ct))return new Ct( -e);this._readableState=new XA(e,this),this.readable=!0,e&&typeof e.read=="function"&&(this._read=e.read),Hr.call(this)}function QA(e,t,r,n,i){var a=zY(t,r);if(a)e.emit("error",a);else if(r===null)t.reading=!1,HY(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var o=new Error("stream.push() after EOF");e.emit("error",o)}else if(t.endEmitted&&i){var u=new Error("stream.unshift() after end event");e.emit("error",u)}else{var l;t.decoder&&!i&&!n&&(r=t.decoder.write(r),l=!t.objectMode&&r.length===0),i||(t.reading=!1),l||(t.flowing&&t.length===0&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&Dm(e))),WY(e,t)}else i||(t.reading=!1);return jY(t)}function jY(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}function qY(e){return e>=KA?e=KA:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function JA(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t. -length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=qY(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function zY(e,t){var r=null;return!Buffer.isBuffer(t)&&typeof t!="string"&&t!==null&&t!==void 0&&!e.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk")),r}function HY(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,Dm(e)}}function Dm(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(pt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?ir(ZA,e):ZA(e))}function ZA(e){pt("emit readable"),e.emit("readable"),iy(e)}function WY(e,t){t.readingMore||(t.readingMore=!0,ir(GY,e,t))}function GY(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(pt("maybeReadMore read 0"),e.read(0),r!==t.length);)r=t.length;t.readingMore=!1}function VY(e){return function(){var t=e._readableState;pt("pipeOnDrain",t.awaitDrain),t.awaitDrain&& -t.awaitDrain--,t.awaitDrain===0&&e.listeners("data").length&&(t.flowing=!0,iy(e))}}function $Y(e){pt("readable nexttick read 0"),e.read(0)}function YY(e,t){t.resumeScheduled||(t.resumeScheduled=!0,ir(KY,e,t))}function KY(e,t){t.reading||(pt("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),iy(e),t.flowing&&!t.reading&&e.read(0)}function iy(e){var t=e._readableState;for(pt("flow",t.flowing);t.flowing&&e.read()!==null;);}function eN(e,t){if(t.length===0)return null;var r;return t.objectMode?r=t.buffer.shift():!e||e>=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.head.data:r=t.buffer.concat(t.length),t.buffer.clear()):r=JY(e,t.buffer,t.decoder),r}function JY(e,t,r){var n;return e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):e===t.head.data.length?n=t.shift():n=r?ZY(e,t):XY(e,t),n}function ZY(e,t){var r=t.head,n=1,i=r.data;for(e-=i.length;r=r.next;){var a=r.data,o=e>a.length?a.length:e;if(o===a.length? -i+=a:i+=a.slice(0,e),e-=o,e===0){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}function XY(e,t){var r=Buffer.allocUnsafe(e),n=t.head,i=1;for(n.data.copy(r),e-=n.data.length;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),e-=o,e===0){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}function ny(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,ir(QY,t,e))}function QY(e,t){!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function eK(e,t){for(var r=0,n=e.length;r<n;r++)t(e[r],r)}function tN(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}var pt,KA,ay=g(()=>{"use strict";d();ti();Vi();$A();YA();pl();Li();Ct.ReadableState=XA;pt=HA("stream");Mt(Ct,Hr);s(BY,"prependListener");s(UY,"listenerCount");s(XA,"Re\ -adableState");s(Ct,"Readable");Ct.prototype.push=function(e,t){var r=this._readableState;return!r.objectMode&&typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=Buffer.from(e,t),t="")),QA(this,r,e,t,!1)};Ct.prototype.unshift=function(e){var t=this._readableState;return QA(this,t,e,"",!0)};Ct.prototype.isPaused=function(){return this._readableState.flowing===!1};s(QA,"readableAddChunk");s(jY,"needMoreData");Ct.prototype.setEncoding=function(e){return this._readableState.decoder=new ss(e),this._readableState.encoding=e,this};KA=8388608;s(qY,"computeNewHighWaterMark");s(JA,"howMuchToRead");Ct.prototype.read=function(e){pt("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return pt("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?ny(this):Dm(this),null;if(e=JA(e,t),e===0&&t.ended)return t.length===0&&ny(this),null;var n=t.needReadable;pt("need readable",n),(t.length=== -0||t.length-e<t.highWaterMark)&&(n=!0,pt("length less than watermark",n)),t.ended||t.reading?(n=!1,pt("reading or ended",n)):n&&(pt("do read"),t.reading=!0,t.sync=!0,t.length===0&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=JA(r,t)));var i;return e>0?i=eN(e,t):i=null,i===null?(t.needReadable=!0,e=0):t.length-=e,t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ny(this)),i!==null&&this.emit("data",i),i};s(zY,"chunkInvalid");s(HY,"onEofChunk");s(Dm,"emitReadable");s(ZA,"emitReadable_");s(WY,"maybeReadMore");s(GY,"maybeReadMore_");Ct.prototype._read=function(e){this.emit("error",new Error("not implemented"))};Ct.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e);break}n.pipesCount+=1,pt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||t.end!==!1,a=i?u:p;n.endEmitted?ir(a):r.once("end",a),e.on("unpipe",o);function o(E){pt("onunpipe"),E===r&& -p()}s(o,"onunpipe");function u(){pt("onend"),e.end()}s(u,"onend");var l=VY(r);e.on("drain",l);var c=!1;function p(){pt("cleanup"),e.removeListener("close",y),e.removeListener("finish",b),e.removeListener("drain",l),e.removeListener("error",h),e.removeListener("unpipe",o),r.removeListener("end",u),r.removeListener("end",p),r.removeListener("data",f),c=!0,n.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&l()}s(p,"cleanup");var m=!1;r.on("data",f);function f(E){pt("ondata"),m=!1;var T=e.write(E);T===!1&&!m&&((n.pipesCount===1&&n.pipes===e||n.pipesCount>1&&tN(n.pipes,e)!==-1)&&!c&&(pt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,m=!0),r.pause())}s(f,"ondata");function h(E){pt("onerror",E),w(),e.removeListener("error",h),UY(e,"error")===0&&e.emit("error",E)}s(h,"onerror"),BY(e,"error",h);function y(){e.removeListener("finish",b),w()}s(y,"onclose"),e.once("close",y);function b(){pt("onfinish"),e.removeListener("close",y),w()}s(b,"onfin\ -ish"),e.once("finish",b);function w(){pt("unpipe"),r.unpipe(e)}return s(w,"unpipe"),e.emit("pipe",r),n.flowing||(pt("pipe resume"),r.resume()),e};s(VY,"pipeOnDrain");Ct.prototype.unpipe=function(e){var t=this._readableState;if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i<n;i++)r[i].emit("unpipe",this);return this}var a=tN(t.pipes,e);return a===-1?this:(t.pipes.splice(a,1),t.pipesCount-=1,t.pipesCount===1&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)};Ct.prototype.on=function(e,t){var r=Hr.prototype.on.call(this,e,t);if(e==="data")this._readableState.flowing!==!1&&this.resume();else if(e==="readable"){var n=this._readableState;!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&Dm(this,n):ir($Y,this))}return r};Ct. -prototype.addListener=Ct.prototype.on;s($Y,"nReadingNextTick");Ct.prototype.resume=function(){var e=this._readableState;return e.flowing||(pt("resume"),e.flowing=!0,YY(this,e)),this};s(YY,"resume");s(KY,"resume_");Ct.prototype.pause=function(){return pt("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(pt("pause"),this._readableState.flowing=!1,this.emit("pause")),this};s(iy,"flow");Ct.prototype.wrap=function(e){var t=this._readableState,r=!1,n=this;e.on("end",function(){if(pt("wrapped end"),t.decoder&&!t.ended){var o=t.decoder.end();o&&o.length&&n.push(o)}n.push(null)}),e.on("data",function(o){if(pt("wrapped data"),t.decoder&&(o=t.decoder.write(o)),!(t.objectMode&&o==null)&&!(!t.objectMode&&(!o||!o.length))){var u=n.push(o);u||(r=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(o){return function(){return e[o].apply(e,arguments)}}(i));var a=["error","close","destroy","pause","resume"];return eK(a,function(o){ -e.on(o,n.emit.bind(n,o))}),n._read=function(o){pt("wrapped _read",o),r&&(r=!1,e.resume())},n};Ct._fromList=eN;s(eN,"fromList");s(JY,"fromListPartial");s(ZY,"copyFromBufferString");s(XY,"copyFromBuffer");s(ny,"endReadable");s(QY,"endReadableNT");s(eK,"forEach");s(tN,"indexOf")});function tK(){}function rK(e,t,r){this.chunk=e,this.encoding=t,this.callback=r,this.next=null}function sy(e,t){Object.defineProperty(this,"buffer",{get:Qg(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")}),e=e||{},this.objectMode=!!e.objectMode,t instanceof ur&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16*1024;this.highWaterMark=r||r===0?r:n,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var i=e.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){lK(t,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new sN(this)}function Yt(e){ -if(!(this instanceof Yt)&&!(this instanceof ur))return new Yt(e);this._writableState=new sy(e,this),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev)),Ge.call(this)}function nK(e,t){var r=new Error("write after end");e.emit("error",r),ir(t,r)}function iK(e,t,r,n){var i=!0,a=!1;return r===null?a=new TypeError("May not write null values to stream"):!q.isBuffer(r)&&typeof r!="string"&&r!==void 0&&!t.objectMode&&(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),ir(n,a),i=!1),i}function aK(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=q.from(t,r)),t}function oK(e,t,r,n,i){r=aK(t,r,n),q.isBuffer(r)&&(n="buffer");var a=t.objectMode?1:r.length;t.length+=a;var o=t.length<t.highWaterMark;if(o||(t.needDrain=!0),t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest=new rK(r,n,i),u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+= -1}else oy(e,t,!1,a,r,n,i);return o}function oy(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function sK(e,t,r,n,i){--t.pendingcb,r?ir(i,n):i(n),e._writableState.errorEmitted=!0,e.emit("error",n)}function uK(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function lK(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(uK(r),t)sK(e,r,n,t,i);else{var a=aN(r);!a&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&iN(e,r),n?ir(rN,e,r,a,i):rN(e,r,a,i)}}function rN(e,t,r,n){r||cK(e,t),t.pendingcb--,n(),oN(e,t)}function cK(e,t){t.length===0&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function iN(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var o=0;r;)i[o]=r,r=r.next,o+=1;oy(e,t,!0,t.length,i,"",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null): -t.corkedRequestsFree=new sN(t)}else{for(;r;){var u=r.chunk,l=r.encoding,c=r.callback,p=t.objectMode?1:u.length;if(oy(e,t,!1,p,u,l,c),r=r.next,t.writing)break}r===null&&(t.lastBufferedRequest=null)}t.bufferedRequestCount=0,t.bufferedRequest=r,t.bufferProcessing=!1}function aN(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function nN(e,t){t.prefinished||(t.prefinished=!0,e.emit("prefinish"))}function oN(e,t){var r=aN(t);return r&&(t.pendingcb===0?(nN(e,t),t.finished=!0,e.emit("finish")):nN(e,t)),r}function dK(e,t,r){t.ending=!0,oN(e,t),r&&(t.finished?ir(r):e.once("finish",r)),t.ended=!0,e.writable=!1}function sN(e){var t=this;this.next=null,this.entry=null,this.finish=function(r){var n=t.entry;for(t.entry=null;n;){var i=n.callback;e.pendingcb--,i(r),n=n.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}}var uy=g(()=>{d();Vi();Vo();ti();pl();Li();Yt.WritableState=sy;Mt(Yt,Ge);s(tK,"nop");s(rK,"WriteReq");s(sy,"WritableState"); -sy.prototype.getBuffer=s(function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r},"writableStateGetBuffer");s(Yt,"Writable");Yt.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};s(nK,"writeAfterEnd");s(iK,"validChunk");Yt.prototype.write=function(e,t,r){var n=this._writableState,i=!1;return typeof t=="function"&&(r=t,t=null),q.isBuffer(e)?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=tK),n.ended?nK(this,r):iK(this,n,e,r)&&(n.pendingcb++,i=oK(this,n,e,t,r)),i};Yt.prototype.cork=function(){var e=this._writableState;e.corked++};Yt.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest&&iN(this,e))};Yt.prototype.setDefaultEncoding=s(function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError( -"Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},"setDefaultEncoding");s(aK,"decodeChunk");s(oK,"writeOrBuffer");s(oy,"doWrite");s(sK,"onwriteError");s(uK,"onwriteStateUpdate");s(lK,"onwrite");s(rN,"afterWrite");s(cK,"onwriteDrain");s(iN,"clearBuffer");Yt.prototype._write=function(e,t,r){r(new Error("not implemented"))};Yt.prototype._writev=null;Yt.prototype.end=function(e,t,r){var n=this._writableState;typeof e=="function"?(r=e,e=null,t=null):typeof t=="function"&&(r=t,t=null),e!=null&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),!n.ending&&!n.finished&&dK(this,n,r)};s(aN,"needFinish");s(nN,"prefinish");s(oN,"finishMaybe");s(dK,"endWritable");s(sN,"CorkedRequest")});function ur(e){if(!(this instanceof ur))return new ur(e);Ct.call(this,e),Yt.call(this,e),e&&e.readable===!1&&(this.readable=!1),e&&e.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,e&&e.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",pK)}function pK(){this.allowHalfOpen||this._writableState.ended||ir(mK,this)}function mK(e){e.end()}var uN,Tm,Em,pl=g(()=>{d();Vi();Li();ay();uy();Mt(ur,Ct);uN=Object.keys(Yt.prototype);for(Em=0;Em<uN.length;Em++)Tm=uN[Em],ur.prototype[Tm]||(ur.prototype[Tm]=Yt.prototype[Tm]);s(ur,"Duplex");s(pK,"onend");s(mK,"onEndNT")});function fK(e){this.afterTransform=function(t,r){return hK(e,t,r)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function hK(e,t,r){var n=e._transformState;n.transforming=!1;var i=n.writecb;if(!i)return e.emit("error",new Error("no writecb in Transform class"));n.writechunk=null,n.writecb=null,r!=null&&e.push(r),i(t);var a=e._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&e._read(a.highWaterMark)}function br(e){if(!(this instanceof br))return new br(e);ur.call(this,e),this._transformState=new fK(this);var t=this;this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.once("prefinish",function(){typeof this._flush=="function"?this._flush(function(r){lN(t,r)}):lN(t)})}function lN(e,t){if(t)return e.emit("error",t);var r=e._writableState,n=e._transformState;if(r.length)throw new Error( -"Calling transform done when ws.length != 0");if(n.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}var ly=g(()=>{d();pl();Vi();Mt(br,ur);s(fK,"TransformState");s(hK,"afterTransform");s(br,"Transform");br.prototype.push=function(e,t){return this._transformState.needTransform=!1,ur.prototype.push.call(this,e,t)};br.prototype._transform=function(e,t,r){throw new Error("Not implemented")};br.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}};br.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};s(lN,"done")});function us(e){if(!(this instanceof us))return new us(e);br.call(this,e)}var cN=g(()=>{d();ly();Vi();Mt(us,br);s(us,"PassThrough");us.prototype._transform=function(e,t,r){r(null,e)}});function Rn(){Hr.call(this)}var cy,dy=g(()=>{d();ti();Vi();pl();ay();uy();ly();cN();Mt(Rn,Hr);Rn.Readable=Ct;Rn.Writable=Yt;Rn.Duplex=ur;Rn.Transform=br;Rn.PassThrough=us;Rn.Stream=Rn;cy=Rn;s(Rn,"Stream");Rn.prototype.pipe=function(e,t){var r=this;function n(p){e.writable&&e.write(p)===!1&&r.pause&&r.pause()}s(n,"ondata"),r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}s(i,"ondrain"),e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",u));var a=!1;function o(){a||(a=!0,e.end())}s(o,"onend");function u(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}s(u,"onclose");function l(p){if(c(),Hr.listenerCount(this,"error")===0)throw p}s(l,"onerror"),r.on("error",l),e.on("error",l);function c(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",u),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",c),r.removeListener("close",c),e.removeListener("close",c)}return s(c,"clean\ -up"),r.on("end",c),r.on("close",c),e.on("close",c),e.emit("pipe",r),e}});var xm,py=g(()=>{d();xm={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});function gK(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var dN,pN=g(()=>{d();s(gK,"ZStream");dN=gK});function ls(e,t,r,n,i){if(t.subarray&&e.subarray){e.set(t.subarray(r,r+n),i);return}for(var a=0;a<n;a++)e[i+a]=t[r+a]}var my,di,fy=g(()=>{"use strict";d();s(ls,"arraySet");my=Uint8Array,di=Uint16Array});function ds(e){for(var t=e.length;--t>=0;)e[t]=0}function gy(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function yy(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function _N(e){return e<256?hl[e]:hl[256+(e>>>7)]}function yl(e,t){e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255}function kr(e,t,r){e.bi_valid>hy-r?(e.bi_buf|=t<<e.bi_valid&65535,yl(e,e.bi_buf),e.bi_buf=t>>hy-e.bi_valid,e.bi_valid+=r-hy):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function In(e,t,r){kr(e,r[t*2],r[t*2+1])}function RN(e,t){var r=0;do r|=e&1,e>>>=1,r<<=1;while(--t>0);return r>>>1}function CK(e){e.bi_valid===16?(yl(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function FK(e,t){var r=t.dyn_tree,n=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,u=t.stat_desc.extra_base,l=t.stat_desc.max_length, -c,p,m,f,h,y,b=0;for(f=0;f<=Ja;f++)e.bl_count[f]=0;for(r[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<DN;c++)p=e.heap[c],f=r[r[p*2+1]*2+1]+1,f>l&&(f=l,b++),r[p*2+1]=f,!(p>n)&&(e.bl_count[f]++,h=0,p>=u&&(h=o[p-u]),y=r[p*2],e.opt_len+=y*(f+h),a&&(e.static_len+=y*(i[p*2+1]+h)));if(b!==0){do{for(f=l-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[l]--,b-=2}while(b>0);for(f=l;f!==0;f--)for(p=e.bl_count[f];p!==0;)m=e.heap[--c],!(m>n)&&(r[m*2+1]!==f&&(e.opt_len+=(f-r[m*2+1])*r[m*2],r[m*2+1]=f),p--)}}function IN(e,t,r){var n=new Array(Ja+1),i=0,a,o;for(a=1;a<=Ja;a++)n[a]=i=i+r[a-1]<<1;for(o=0;o<=t;o++){var u=e[o*2+1];u!==0&&(e[o*2]=RN(n[u]++,u))}}function kK(){var e,t,r,n,i,a=new Array(Ja+1);for(r=0,n=0;n<Dy-1;n++)for(xy[n]=r,e=0;e<1<<by[n];e++)gl[r++]=n;for(gl[r-1]=n,i=0,n=0;n<16;n++)for(Cm[n]=i,e=0;e<1<<Sm[n];e++)hl[i++]=n;for(i>>=7;n<cs;n++)for(Cm[n]=i<<7,e=0;e<1<<Sm[n]-7;e++)hl[256+i++]=n;for(t=0;t<=Ja;t++)a[t]=0;for(e=0;e<=143;)pi[e*2+1]=8,e++,a[8]++;for(;e<=255;)pi[e* -2+1]=9,e++,a[9]++;for(;e<=279;)pi[e*2+1]=7,e++,a[7]++;for(;e<=287;)pi[e*2+1]=8,e++,a[8]++;for(IN(pi,fl+1,a),e=0;e<cs;e++)ml[e*2+1]=5,ml[e*2]=RN(e,5);CN=new gy(pi,by,vl+1,fl,Ja),FN=new gy(ml,Sm,0,cs,Ja),kN=new gy(new Array(0),xK,0,Ey,TK)}function AN(e){var t;for(t=0;t<fl;t++)e.dyn_ltree[t*2]=0;for(t=0;t<cs;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Ey;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Ty*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function NN(e){e.bi_valid>8?yl(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function _K(e,t,r,n){NN(e),n&&(yl(e,r),yl(e,~r)),ls(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}function hN(e,t,r,n){var i=t*2,a=r*2;return e[i]<e[a]||e[i]===e[a]&&n[t]<=n[r]}function vy(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&hN(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!hN(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function gN(e,t,r){var n,i,a=0,o,u;if(e.last_lit!==0)do n=e.pending_buf[e.d_buf+ -a*2]<<8|e.pending_buf[e.d_buf+a*2+1],i=e.pending_buf[e.l_buf+a],a++,n===0?In(e,i,t):(o=gl[i],In(e,o+vl+1,t),u=by[o],u!==0&&(i-=xy[o],kr(e,i,u)),n--,o=_N(n),In(e,o,r),u=Sm[o],u!==0&&(n-=Cm[o],kr(e,n,u)));while(a<e.last_lit);In(e,Ty,t)}function wy(e,t){var r=t.dyn_tree,n=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,o,u,l=-1,c;for(e.heap_len=0,e.heap_max=DN,o=0;o<a;o++)r[o*2]!==0?(e.heap[++e.heap_len]=l=o,e.depth[o]=0):r[o*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,r[c*2]=1,e.depth[c]=0,e.opt_len--,i&&(e.static_len-=n[c*2+1]);for(t.max_code=l,o=e.heap_len>>1;o>=1;o--)vy(e,r,o);c=a;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],vy(e,r,1),u=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=u,r[c*2]=r[o*2]+r[u*2],e.depth[c]=(e.depth[o]>=e.depth[u]?e.depth[o]:e.depth[u])+1,r[o*2+1]=r[u*2+1]=c,e.heap[1]=c++,vy(e,r,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],FK(e,t),IN(r,l,e.bl_count)}function yN(e,t,r){var n,i=-1,a,o=t[0*2+1],u=0,l=7,c=4;for(o=== -0&&(l=138,c=3),t[(r+1)*2+1]=65535,n=0;n<=r;n++)a=o,o=t[(n+1)*2+1],!(++u<l&&a===o)&&(u<c?e.bl_tree[a*2]+=u:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[EN*2]++):u<=10?e.bl_tree[TN*2]++:e.bl_tree[xN*2]++,u=0,i=a,o===0?(l=138,c=3):a===o?(l=6,c=3):(l=7,c=4))}function vN(e,t,r){var n,i=-1,a,o=t[0*2+1],u=0,l=7,c=4;for(o===0&&(l=138,c=3),n=0;n<=r;n++)if(a=o,o=t[(n+1)*2+1],!(++u<l&&a===o)){if(u<c)do In(e,a,e.bl_tree);while(--u!==0);else a!==0?(a!==i&&(In(e,a,e.bl_tree),u--),In(e,EN,e.bl_tree),kr(e,u-3,2)):u<=10?(In(e,TN,e.bl_tree),kr(e,u-3,3)):(In(e,xN,e.bl_tree),kr(e,u-11,7));u=0,i=a,o===0?(l=138,c=3):a===o?(l=6,c=3):(l=7,c=4)}}function RK(e){var t;for(yN(e,e.dyn_ltree,e.l_desc.max_code),yN(e,e.dyn_dtree,e.d_desc.max_code),wy(e,e.bl_desc),t=Ey-1;t>=3&&e.bl_tree[SN[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t}function IK(e,t,r,n){var i;for(kr(e,t-257,5),kr(e,r-1,5),kr(e,n-4,4),i=0;i<n;i++)kr(e,e.bl_tree[SN[i]*2+1],3);vN(e,e.dyn_ltree,t-1),vN(e,e.dyn_dtree,r-1)}function AK(e){var t=4093624447, -r;for(r=0;r<=31;r++,t>>>=1)if(t&1&&e.dyn_ltree[r*2]!==0)return mN;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return fN;for(r=32;r<vl;r++)if(e.dyn_ltree[r*2]!==0)return fN;return mN}function MN(e){bN||(kK(),bN=!0),e.l_desc=new yy(e.dyn_ltree,CN),e.d_desc=new yy(e.dyn_dtree,FN),e.bl_desc=new yy(e.bl_tree,kN),e.bi_buf=0,e.bi_valid=0,AN(e)}function Sy(e,t,r,n){kr(e,(bK<<1)+(n?1:0),3),_K(e,t,r,!0)}function LN(e){kr(e,wN<<1,3),In(e,Ty,pi),CK(e)}function PN(e,t,r,n){var i,a,o=0;e.level>0?(e.strm.data_type===vK&&(e.strm.data_type=AK(e)),wy(e,e.l_desc),wy(e,e.d_desc),o=RK(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=r+5,r+4<=i&&t!==-1?Sy(e,t,r,n):e.strategy===yK||a===i?(kr(e,(wN<<1)+(n?1:0),3),gN(e,pi,ml)):(kr(e,(wK<<1)+(n?1:0),3),IK(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),gN(e,e.dyn_ltree,e.dyn_dtree)),AN(e),n&&NN(e)}function mi(e,t,r){return e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255,e.pending_buf[e. -l_buf+e.last_lit]=r&255,e.last_lit++,t===0?e.dyn_ltree[r*2]++:(e.matches++,t--,e.dyn_ltree[(gl[r]+vl+1)*2]++,e.dyn_dtree[_N(t)*2]++),e.last_lit===e.lit_bufsize-1}var yK,mN,fN,vK,bK,wN,wK,DK,EK,Dy,vl,fl,cs,Ey,DN,Ja,hy,TK,Ty,EN,TN,xN,by,Sm,xK,SN,SK,pi,ml,hl,gl,xy,Cm,CN,FN,kN,bN,ON=g(()=>{"use strict";d();fy();yK=4,mN=0,fN=1,vK=2;s(ds,"zero");bK=0,wN=1,wK=2,DK=3,EK=258,Dy=29,vl=256,fl=vl+1+Dy,cs=30,Ey=19,DN=2*fl+1,Ja=15,hy=16,TK=7,Ty=256,EN=16,TN=17,xN=18,by=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Sm=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],xK=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],SN=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],SK=512,pi=new Array((fl+2)*2);ds(pi);ml=new Array(cs*2);ds(ml);hl=new Array(SK);ds(hl);gl=new Array(EK-DK+1);ds(gl);xy=new Array(Dy);ds(xy);Cm=new Array(cs);ds(Cm);s(gy,"StaticTreeDesc");s(yy,"TreeDesc");s(_N,"d_code");s(yl,"put_short");s(kr,"send_bits");s(In,"send_code");s(RN,"bi_reverse");s(CK,"bi_flush");s(FK, -"gen_bitlen");s(IN,"gen_codes");s(kK,"tr_static_init");s(AN,"init_block");s(NN,"bi_windup");s(_K,"copy_block");s(hN,"smaller");s(vy,"pqdownheap");s(gN,"compress_block");s(wy,"build_tree");s(yN,"scan_tree");s(vN,"send_tree");s(RK,"build_bl_tree");s(IK,"send_all_trees");s(AK,"detect_data_type");bN=!1;s(MN,"_tr_init");s(Sy,"_tr_stored_block");s(LN,"_tr_align");s(PN,"_tr_flush_block");s(mi,"_tr_tally")});function NK(e,t,r,n){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;r!==0;){o=r>2e3?2e3:r,r-=o;do i=i+t[n++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var BN,UN=g(()=>{d();s(NK,"adler32");BN=NK});function MK(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e}return t}function PK(e,t,r,n){var i=LK,a=n+r;e^=-1;for(var o=n;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var LK,fi,jN=g(()=>{d();s(MK,"makeTable");LK=MK();s(PK,"crc32");fi=PK});function Ji(e,t){return e.msg=xm[t],t}function HN(e){return(e<<1)-(e>4?9:0)}function Za(e){for(var t=e.length;--t>=0;)e[t]=0}function $i(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),r!==0&&(ls(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,t.pending===0&&(t.pending_out=0))}function rr(e,t){PN(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,$i(e.strm)}function it(e,t){e.pending_buf[e.pending++]=t}function bl(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255}function eJ(e,t,r,n){var i=e.avail_in;return i>n&&(i=n),i===0?0:(e.avail_in-=i,ls(t,e.input,e.next_in,i,r),e.state.wrap===1?e.adler=BN(e.adler,t,i,r):e.state.wrap===2&&(e.adler=fi(e.adler,t,i,r)),e.next_in+=i,e.total_in+=i,i)}function WN(e,t){var r=e.max_chain_length,n=e.strstart,i,a,o=e.prev_length,u=e.nice_match,l=e.strstart>e.w_size-pn?e.strstart-(e.w_size-pn):0,c=e.window,p=e. -w_mask,m=e.prev,f=e.strstart+Ki,h=c[n+o-1],y=c[n+o];e.prev_length>=e.good_match&&(r>>=2),u>e.lookahead&&(u=e.lookahead);do if(i=t,!(c[i+o]!==y||c[i+o-1]!==h||c[i]!==c[n]||c[++i]!==c[n+1])){n+=2,i++;do;while(c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&n<f);if(a=Ki-(f-n),n=f-Ki,a>o){if(e.match_start=t,o=a,a>=u)break;h=c[n+o-1],y=c[n+o]}}while((t=m[t&p])>l&&--r!==0);return o<=e.lookahead?o:e.lookahead}function El(e){var t=e.w_size,r,n,i,a,o;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-pn)){ls(e.window,e.window,t,t,0),e.match_start-=t,e.strstart-=t,e.block_start-=t,n=e.hash_size,r=n;do i=e.head[--r],e.head[r]=i>=t?i-t:0;while(--n);n=t,r=n;do i=e.prev[--r],e.prev[r]=i>=t?i-t:0;while(--n);a+=t}if(e.strm.avail_in===0)break;if(n=eJ(e.strm,e.window,e.strstart+e.lookahead,a),e.lookahead+=n,e.lookahead+e.insert>=dt)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<<e.hash_shift^ -e.window[o+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+dt-1])&e.hash_mask,e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<dt)););}while(e.lookahead<pn&&e.strm.avail_in!==0)}function tJ(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(El(e),e.lookahead===0&&t===eo)return Wt;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((e.strstart===0||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,rr(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-pn&&(rr(e,!1),e.strm.avail_out===0))return Wt}return e.insert=0,t===Zi?(rr(e,!0),e.strm.avail_out===0?Qa:fs):(e.strstart>e.block_start&&(rr(e,!1),e.strm.avail_out===0),Wt)}function Fy(e,t){for(var r,n;;){if(e.lookahead<pn){if(El(e),e.lookahead<pn&&t===eo)return Wt;if(e.lookahead===0)break}if(r=0,e.lookahead>=dt&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+dt-1])&e.hash_mask, -r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),r!==0&&e.strstart-r<=e.w_size-pn&&(e.match_length=WN(e,r)),e.match_length>=dt)if(n=mi(e,e.strstart-e.match_start,e.match_length-dt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=dt){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+dt-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=mi(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(rr(e,!1),e.strm.avail_out===0))return Wt}return e.insert=e.strstart<dt-1?e.strstart:dt-1,t===Zi?(rr(e,!0),e.strm.avail_out===0?Qa:fs):e.last_lit&&(rr(e,!1),e.strm.avail_out===0)?Wt:Dl}function ps(e,t){for(var r,n,i;;){if(e.lookahead<pn){if(El(e),e.lookahead<pn&&t===eo)return Wt;if(e. -lookahead===0)break}if(r=0,e.lookahead>=dt&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+dt-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=dt-1,r!==0&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-pn&&(e.match_length=WN(e,r),e.match_length<=5&&(e.strategy===qK||e.match_length===dt&&e.strstart-e.match_start>4096)&&(e.match_length=dt-1)),e.prev_length>=dt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-dt,n=mi(e,e.strstart-1-e.prev_match,e.prev_length-dt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+dt-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=dt-1,e.strstart++,n&&(rr(e,!1),e.strm.avail_out===0))return Wt}else if(e.match_available){if(n=mi(e,0,e.window[e.strstart-1]),n&& -rr(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Wt}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=mi(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<dt-1?e.strstart:dt-1,t===Zi?(rr(e,!0),e.strm.avail_out===0?Qa:fs):e.last_lit&&(rr(e,!1),e.strm.avail_out===0)?Wt:Dl}function rJ(e,t){for(var r,n,i,a,o=e.window;;){if(e.lookahead<=Ki){if(El(e),e.lookahead<=Ki&&t===eo)return Wt;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=dt&&e.strstart>0&&(i=e.strstart-1,n=o[i],n===o[++i]&&n===o[++i]&&n===o[++i])){a=e.strstart+Ki;do;while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<a);e.match_length=Ki-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=dt?(r=mi(e,1,e.match_length-dt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=mi(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(rr(e,!1),e.strm.avail_out=== -0))return Wt}return e.insert=0,t===Zi?(rr(e,!0),e.strm.avail_out===0?Qa:fs):e.last_lit&&(rr(e,!1),e.strm.avail_out===0)?Wt:Dl}function nJ(e,t){for(var r;;){if(e.lookahead===0&&(El(e),e.lookahead===0)){if(t===eo)return Wt;break}if(e.match_length=0,r=mi(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(rr(e,!1),e.strm.avail_out===0))return Wt}return e.insert=0,t===Zi?(rr(e,!0),e.strm.avail_out===0?Qa:fs):e.last_lit&&(rr(e,!1),e.strm.avail_out===0)?Wt:Dl}function An(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function iJ(e){e.window_size=2*e.w_size,Za(e.head),e.max_lazy_match=ms[e.level].max_lazy,e.good_match=ms[e.level].good_length,e.nice_match=ms[e.level].nice_length,e.max_chain_length=ms[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=dt-1,e.match_available=0,e.ins_h=0}function aJ(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this. -pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ry,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new di(JK*2),this.dyn_dtree=new di((2*YK+1)*2),this.bl_tree=new di((2*KK+1)*2),Za(this.dyn_ltree),Za(this.dyn_dtree),Za(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new di(ZK+1),this.heap=new di(2*ky+1),Za(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new di(2*ky+1),Za(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert= -0,this.bi_buf=0,this.bi_valid=0}function oJ(e){var t;return!e||!e.state?Ji(e,Xi):(e.total_in=e.total_out=0,e.data_type=WK,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?Iy:Xa,e.adler=t.wrap===2?0:1,t.last_flush=eo,MN(t),Yi)}function Ay(e){var t=oJ(e);return t===Yi&&iJ(e.state),t}function GN(e,t,r,n,i,a){if(!e)return Xi;var o=1;if(t===jK&&(t=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>GK||r!==Ry||n<8||n>15||t<0||t>9||a<0||a>HK)return Ji(e,Xi);n===8&&(n=9);var u=new aJ;return e.state=u,u.strm=e,u.wrap=o,u.gzhead=null,u.w_bits=n,u.w_size=1<<u.w_bits,u.w_mask=u.w_size-1,u.hash_bits=i+7,u.hash_size=1<<u.hash_bits,u.hash_mask=u.hash_size-1,u.hash_shift=~~((u.hash_bits+dt-1)/dt),u.window=new my(u.w_size*2),u.head=new di(u.hash_size),u.prev=new di(u.w_size),u.lit_bufsize=1<<i+6,u.pending_buf_size=u.lit_bufsize*4,u.pending_buf=new my(u.pending_buf_size),u.d_buf=1*u.lit_bufsize,u.l_buf=3*u.lit_bufsize,u.level=t,u.strategy=a,u.method=r,Ay(e)}function VN(e,t){var r, -n,i,a;if(!e||!e.state||t>qN||t<0)return e?Ji(e,Xi):Xi;if(n=e.state,!e.output||!e.input&&e.avail_in!==0||n.status===wl&&t!==Zi)return Ji(e,e.avail_out===0?Cy:Xi);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===Iy)if(n.wrap===2)e.adler=0,it(n,31),it(n,139),it(n,8),n.gzhead?(it(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),it(n,n.gzhead.time&255),it(n,n.gzhead.time>>8&255),it(n,n.gzhead.time>>16&255),it(n,n.gzhead.time>>24&255),it(n,n.level===9?2:n.strategy>=Fm||n.level<2?4:0),it(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(it(n,n.gzhead.extra.length&255),it(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=fi(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=_y):(it(n,0),it(n,0),it(n,0),it(n,0),it(n,0),it(n,n.level===9?2:n.strategy>=Fm||n.level<2?4:0),it(n,QK),n.status=Xa);else{var o=Ry+(n.w_bits-8<<4)<<8,u=-1;n.strategy>=Fm||n.level<2?u=0:n.level<6?u=1:n.level===6?u=2:u=3,o|=u<<6,n.strstart!== -0&&(o|=XK),o+=31-o%31,n.status=Xa,bl(n,o),n.strstart!==0&&(bl(n,e.adler>>>16),bl(n,e.adler&65535)),e.adler=1}if(n.status===_y)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=fi(e.adler,n.pending_buf,n.pending-i,i)),$i(e),i=n.pending,n.pending===n.pending_buf_size));)it(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=fi(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=km)}else n.status=km;if(n.status===km)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=fi(e.adler,n.pending_buf,n.pending-i,i)),$i(e),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,it(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=fi(e.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.gzindex=0,n.status= -_m)}else n.status=_m;if(n.status===_m)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=fi(e.adler,n.pending_buf,n.pending-i,i)),$i(e),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,it(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=fi(e.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.status=Rm)}else n.status=Rm;if(n.status===Rm&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&$i(e),n.pending+2<=n.pending_buf_size&&(it(n,e.adler&255),it(n,e.adler>>8&255),e.adler=0,n.status=Xa)):n.status=Xa),n.pending!==0){if($i(e),e.avail_out===0)return n.last_flush=-1,Yi}else if(e.avail_in===0&&HN(t)<=HN(r)&&t!==Zi)return Ji(e,Cy);if(n.status===wl&&e.avail_in!==0)return Ji(e,Cy);if(e.avail_in!==0||n.lookahead!==0||t!==eo&&n.status!==wl){var l=n.strategy===Fm?nJ(n,t):n.strategy===zK?rJ(n,t):ms[n.level].func(n,t);if((l===Qa||l===fs)&&(n.status=wl),l=== -Wt||l===Qa)return e.avail_out===0&&(n.last_flush=-1),Yi;if(l===Dl&&(t===OK?LN(n):t!==qN&&(Sy(n,0,0,!1),t===BK&&(Za(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),$i(e),e.avail_out===0))return n.last_flush=-1,Yi}return t!==Zi?Yi:n.wrap<=0?zN:(n.wrap===2?(it(n,e.adler&255),it(n,e.adler>>8&255),it(n,e.adler>>16&255),it(n,e.adler>>24&255),it(n,e.total_in&255),it(n,e.total_in>>8&255),it(n,e.total_in>>16&255),it(n,e.total_in>>24&255)):(bl(n,e.adler>>>16),bl(n,e.adler&65535)),$i(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Yi:zN)}function $N(e){var t;return!e||!e.state?Xi:(t=e.state.status,t!==Iy&&t!==_y&&t!==km&&t!==_m&&t!==Rm&&t!==Xa&&t!==wl?Ji(e,Xi):(e.state=null,t===Xa?Ji(e,UK):Yi))}var eo,OK,BK,Zi,qN,Yi,zN,Xi,UK,Cy,jK,qK,Fm,zK,HK,WK,Ry,GK,VK,$K,ky,YK,KK,JK,ZK,dt,Ki,pn,XK,Iy,_y,km,_m,Rm,Xa,wl,Wt,Dl,Qa,fs,QK,ms,YN=g(()=>{d();fy();ON();UN();jN();py();eo=0,OK=1,BK=3,Zi=4,qN=5,Yi=0,zN=1,Xi=-2,UK=-3,Cy=-5,jK=-1,qK=1,Fm=2,zK=3,HK=4,WK=2,Ry=8,GK=9,VK=29,$K=256,ky=$K+1+VK,YK= -30,KK=19,JK=2*ky+1,ZK=15,dt=3,Ki=258,pn=Ki+dt+1,XK=32,Iy=42,_y=69,km=73,_m=91,Rm=103,Xa=113,wl=666,Wt=1,Dl=2,Qa=3,fs=4,QK=3;s(Ji,"err");s(HN,"rank");s(Za,"zero");s($i,"flush_pending");s(rr,"flush_block_only");s(it,"put_byte");s(bl,"putShortMSB");s(eJ,"read_buf");s(WN,"longest_match");s(El,"fill_window");s(tJ,"deflate_stored");s(Fy,"deflate_fast");s(ps,"deflate_slow");s(rJ,"deflate_rle");s(nJ,"deflate_huff");s(An,"Config");ms=[new An(0,0,0,0,tJ),new An(4,4,8,4,Fy),new An(4,5,16,8,Fy),new An(4,6,32,32,Fy),new An(4,4,16,16,ps),new An(8,16,32,32,ps),new An(8,16,128,128,ps),new An(8,32,128,256,ps),new An(32,128,258,1024,ps),new An(32,258,258,4096,ps)];s(iJ,"lm_init");s(aJ,"DeflateState");s(oJ,"deflateResetKeep");s(Ay,"deflateReset");s(GN,"deflateInit2");s(VN,"deflate");s($N,"deflateEnd")});var KN=g(()=>{d()});var Lm={};x(Lm,{DEFLATE:()=>gs,DEFLATERAW:()=>hs,GUNZIP:()=>Am,GZIP:()=>Tl,INFLATE:()=>Nm,INFLATERAW:()=>xl,NONE:()=>Ny,UNZIP:()=>Sl,Z_BEST_COMPRESSION:()=>hJ,Z_BEST_SPEED:()=>fJ,Z_BINARY:()=>EJ,Z_BLOCK:()=>t3,Z_BUF_ERROR:()=>pJ,Z_DATA_ERROR:()=>dJ,Z_DEFAULT_COMPRESSION:()=>gJ,Z_DEFAULT_STRATEGY:()=>DJ,Z_DEFLATED:()=>n3,Z_ERRNO:()=>lJ,Z_FILTERED:()=>yJ,Z_FINISH:()=>e3,Z_FIXED:()=>wJ,Z_FULL_FLUSH:()=>QN,Z_HUFFMAN_ONLY:()=>vJ,Z_NEED_DICT:()=>uJ,Z_NO_COMPRESSION:()=>mJ,Z_NO_FLUSH:()=>JN,Z_OK:()=>Mm,Z_PARTIAL_FLUSH:()=>ZN,Z_RLE:()=>bJ,Z_STREAM_END:()=>r3,Z_STREAM_ERROR:()=>cJ,Z_SYNC_FLUSH:()=>XN,Z_TEXT:()=>TJ,Z_TREES:()=>sJ,Z_UNKNOWN:()=>xJ,Zlib:()=>Nn});function Nn(e){if(e<gs||e>Sl)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function SJ(e,t){for(var r=0;r<e.length;r++)this[t+r]=e[r]}var Ny,gs,Nm,Tl,Am,hs,xl,Sl,JN,ZN,XN,QN,e3,t3,sJ,Mm,r3, -uJ,lJ,cJ,dJ,pJ,mJ,fJ,hJ,gJ,yJ,vJ,bJ,wJ,DJ,EJ,TJ,xJ,n3,Im,i3=g(()=>{d();py();pN();YN();KN();Ny=0,gs=1,Nm=2,Tl=3,Am=4,hs=5,xl=6,Sl=7,JN=0,ZN=1,XN=2,QN=3,e3=4,t3=5,sJ=6,Mm=0,r3=1,uJ=2,lJ=-1,cJ=-2,dJ=-3,pJ=-5,mJ=0,fJ=1,hJ=9,gJ=-1,yJ=1,vJ=2,bJ=3,wJ=4,DJ=0,EJ=0,TJ=1,xJ=2,n3=8;s(Nn,"Zlib");Nn.prototype.init=function(e,t,r,n,i){this.windowBits=e,this.level=t,this.memLevel=r,this.strategy=n,(this.mode===Tl||this.mode===Am)&&(this.windowBits+=16),this.mode===Sl&&(this.windowBits+=32),(this.mode===hs||this.mode===xl)&&(this.windowBits=-this.windowBits),this.strm=new dN;var a;switch(this.mode){case gs:case Tl:case hs:a=GN(this.strm,this.level,n3,this.windowBits,this.memLevel,this.strategy);break;case Nm:case Am:case xl:case Sl:a=(this.strm,this.windowBits,void 0);break;default:throw new Error("Unknown mode "+this.mode)}if(a!==Mm){this._error(a);return}this.write_in_progress=!1,this.init_done=!0};Nn.prototype.params=function(){throw new Error("deflateParams Not supported")};Nn.prototype._writeCheck= -function(){if(!this.init_done)throw new Error("write before init");if(this.mode===Ny)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")};Nn.prototype.write=function(e,t,r,n,i,a,o){this._writeCheck(),this.write_in_progress=!0;var u=this;return process.nextTick(function(){u.write_in_progress=!1;var l=u._write(e,t,r,n,i,a,o);u.callback(l[0],l[1]),u.pending_close&&u.close()}),this};s(SJ,"bufferSet");Nn.prototype.writeSync=function(e,t,r,n,i,a,o){return this._writeCheck(),this._write(e,t,r,n,i,a,o)};Nn.prototype._write=function(e,t,r,n,i,a,o){if(this.write_in_progress=!0,e!==JN&&e!==ZN&&e!==XN&&e!==QN&&e!==e3&&e!==t3)throw new Error("Invalid flush value");t==null&&(t=new Buffer(0),n=0,r=0),i._set?i.set=i._set:i.set=SJ;var u=this.strm;u.avail_in=n,u.input=t,u.next_in=r,u.avail_out=o,u.output=i,u.next_out=a;var l;switch(this.mode){case gs:case Tl:case hs:l=VN(u,e);break;case Sl:case Nm:case Am:case xl: -l=void 0;break;default:throw new Error("Unknown mode "+this.mode)}return l!==r3&&l!==Mm&&this._error(l),this.write_in_progress=!1,[u.avail_in,u.avail_out]};Nn.prototype.close=function(){if(this.write_in_progress){this.pending_close=!0;return}this.pending_close=!1,this.mode===gs||this.mode===Tl||this.mode===hs?$N(this.strm):(this.strm,void 0),this.mode=Ny};Nn.prototype.reset=function(){switch(this.mode){case gs:case hs:Im=Ay(this.strm);break;case Nm:case xl:Im=(this.strm,void 0);break}Im!==Mm&&this._error(Im)};Nn.prototype._error=function(e){this.onerror(xm[e]+": "+this.strm.msg,e),this.write_in_progress=!1,this.pending_close&&this.close()}});function CJ(e,t){if(!e)throw new Error(t)}function a3(e){return new Cl(e)}function o3(e,t,r){return typeof t=="function"&&(r=t,t={}),FJ(new Cl(t),e,r)}function s3(e,t){return kJ(new Pm(t),e)}function FJ(e,t,r){var n=[],i=0;e.on("error",o),e.on("end",u),e.end(t),a();function a(){for(var l;(l=e.read())!==null;)n.push(l),i+=l.length;e.once("readable",a)}s(a,"flow");function o(l){e.removeListener("end",u),e.removeListener("readable",a),r(l)}s(o,"onError");function u(){var l=Buffer.concat(n,i);n=[],r(null,l),e.close()}s(u,"onEnd")}function kJ(e,t){if(typeof t=="string"&&(t=new Buffer(t)),!Buffer.isBuffer(t))throw new TypeError("Not a string or buffer");var r=Q.Z_FINISH;return e._processChunk(t,r)}function Ly(e){if(!(this instanceof Ly))return new Ly(e);Lt.call(this,e,Q.DEFLATE)}function Py(e){if(!(this instanceof Py))return new Py(e);Lt.call(this,e,Q.INFLATE)}function Cl(e){if(!(this instanceof Cl))return new Cl(e);Lt.call(this,e,Q.GZIP)}function Pm(e){if(!(this instanceof Pm))return new Pm( -e);Lt.call(this,e,Q.GUNZIP)}function Oy(e){if(!(this instanceof Oy))return new Oy(e);Lt.call(this,e,Q.DEFLATERAW)}function By(e){if(!(this instanceof By))return new By(e);Lt.call(this,e,Q.INFLATERAW)}function Uy(e){if(!(this instanceof Uy))return new Uy(e);Lt.call(this,e,Q.UNZIP)}function Lt(e,t){if(this._opts=e=e||{},this._chunkSize=e.chunkSize||Q.Z_DEFAULT_CHUNK,br.call(this,e),e.flush&&e.flush!==Q.Z_NO_FLUSH&&e.flush!==Q.Z_PARTIAL_FLUSH&&e.flush!==Q.Z_SYNC_FLUSH&&e.flush!==Q.Z_FULL_FLUSH&&e.flush!==Q.Z_FINISH&&e.flush!==Q.Z_BLOCK)throw new Error("Invalid flush flag: "+e.flush);if(this._flushFlag=e.flush||Q.Z_NO_FLUSH,e.chunkSize&&(e.chunkSize<Q.Z_MIN_CHUNK||e.chunkSize>Q.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBits<Q.Z_MIN_WINDOWBITS||e.windowBits>Q.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.level<Q.Z_MIN_LEVEL||e.level>Q.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e. -memLevel&&(e.memLevel<Q.Z_MIN_MEMLEVEL||e.memLevel>Q.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=Q.Z_FILTERED&&e.strategy!=Q.Z_HUFFMAN_ONLY&&e.strategy!=Q.Z_RLE&&e.strategy!=Q.Z_FIXED&&e.strategy!=Q.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!Buffer.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new Q.Zlib(t);var r=this;this._hadError=!1,this._binding.onerror=function(a,o){r._binding=null,r._hadError=!0;var u=new Error(a);u.errno=o,u.code=Q.codes[o],r.emit("error",u)};var n=Q.Z_DEFAULT_COMPRESSION;typeof e.level=="number"&&(n=e.level);var i=Q.Z_DEFAULT_STRATEGY;typeof e.strategy=="number"&&(i=e.strategy),this._binding.init(e.windowBits||Q.Z_DEFAULT_WINDOWBITS,n,e.memLevel||Q.Z_DEFAULT_MEMLEVEL,i,e.dictionary),this._buffer=new Buffer(this._chunkSize),this._offset=0,this._closed=!1,this._level=n,this._strategy=i,this.once("end",this.close)} -var Q,My,jy=g(()=>{d();dy();i3();Vi();s(CJ,"assert");Q={};Object.keys(Lm).forEach(function(e){Q[e]=Lm[e]});Q.Z_MIN_WINDOWBITS=8;Q.Z_MAX_WINDOWBITS=15;Q.Z_DEFAULT_WINDOWBITS=15;Q.Z_MIN_CHUNK=64;Q.Z_MAX_CHUNK=1/0;Q.Z_DEFAULT_CHUNK=16*1024;Q.Z_MIN_MEMLEVEL=1;Q.Z_MAX_MEMLEVEL=9;Q.Z_DEFAULT_MEMLEVEL=8;Q.Z_MIN_LEVEL=-1;Q.Z_MAX_LEVEL=9;Q.Z_DEFAULT_LEVEL=Q.Z_DEFAULT_COMPRESSION;My={Z_OK:Q.Z_OK,Z_STREAM_END:Q.Z_STREAM_END,Z_NEED_DICT:Q.Z_NEED_DICT,Z_ERRNO:Q.Z_ERRNO,Z_STREAM_ERROR:Q.Z_STREAM_ERROR,Z_DATA_ERROR:Q.Z_DATA_ERROR,Z_MEM_ERROR:Q.Z_MEM_ERROR,Z_BUF_ERROR:Q.Z_BUF_ERROR,Z_VERSION_ERROR:Q.Z_VERSION_ERROR};Object.keys(My).forEach(function(e){My[My[e]]=e});s(a3,"createGzip");s(o3,"gzip");s(s3,"gunzipSync");s(FJ,"zlibBuffer");s(kJ,"zlibBufferSync");s(Ly,"Deflate");s(Py,"Inflate");s(Cl,"Gzip");s(Pm,"Gunzip");s(Oy,"DeflateRaw");s(By,"InflateRaw");s(Uy,"Unzip");s(Lt,"Zlib");Mt(Lt,br);Lt.prototype.params=function(e,t,r){if(e<Q.Z_MIN_LEVEL||e>Q.Z_MAX_LEVEL)throw new RangeError("Invalid compression \ -level: "+e);if(t!=Q.Z_FILTERED&&t!=Q.Z_HUFFMAN_ONLY&&t!=Q.Z_RLE&&t!=Q.Z_FIXED&&t!=Q.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var n=this;this.flush(Q.Z_SYNC_FLUSH,function(){n._binding.params(e,t),n._hadError||(n._level=e,n._strategy=t,r&&r())})}else process.nextTick(r)};Lt.prototype.reset=function(){return this._binding.reset()};Lt.prototype._flush=function(e){this._transform(new Buffer(0),"",e)};Lt.prototype.flush=function(e,t){var r=this._writableState;if((typeof e=="function"||e===void 0&&!t)&&(t=e,e=Q.Z_FULL_FLUSH),r.ended)t&&process.nextTick(t);else if(r.ending)t&&this.once("end",t);else if(r.needDrain){var n=this;this.once("drain",function(){n.flush(t)})}else this._flushFlag=e,this.write(new Buffer(0),"",t)};Lt.prototype.close=function(e){if(e&&process.nextTick(e),!this._closed){this._closed=!0,this._binding.close();var t=this;process.nextTick(function(){t.emit("close")})}};Lt.prototype._transform=function(e,t,r){var n, -i=this._writableState,a=i.ending||i.ended,o=a&&(!e||i.length===e.length);if(!e===null&&!Buffer.isBuffer(e))return r(new Error("invalid input"));o?n=Q.Z_FINISH:(n=this._flushFlag,e.length>=i.length&&(this._flushFlag=this._opts.flush||Q.Z_NO_FLUSH)),this._processChunk(e,n,r)};Lt.prototype._processChunk=function(e,t,r){var n=e&&e.length,i=this._chunkSize-this._offset,a=0,o=this,u=typeof r=="function";if(!u){var l=[],c=0,p;this.on("error",function(b){p=b});do var m=this._binding.writeSync(t,e,a,n,this._buffer,this._offset,i);while(!this._hadError&&y(m[0],m[1]));if(this._hadError)throw p;var f=Buffer.concat(l,c);return this.close(),f}var h=this._binding.write(t,e,a,n,this._buffer,this._offset,i);h.buffer=e,h.callback=y;function y(b,w){if(!o._hadError){var E=i-w;if(CJ(E>=0,"have should not go down"),E>0){var T=o._buffer.slice(o._offset,o._offset+E);o._offset+=E,u?o.push(T):(l.push(T),c+=T.length)}if((w===0||o._offset>=o._chunkSize)&&(i=o._chunkSize,o._offset=0,o._buffer=new Buffer(o._chunkSize)), -w===0){if(a+=n-b,n=b,!u)return!0;var S=o._binding.write(t,e,a,n,o._buffer,o._offset,o._chunkSize);S.callback=y,S.buffer=e;return}if(!u)return!1;r()}}s(y,"callback")};Mt(Ly,Lt);Mt(Py,Lt);Mt(Cl,Lt);Mt(Pm,Lt);Mt(Oy,Lt);Mt(By,Lt);Mt(Uy,Lt)});var Z,qy=g(()=>{d();Z=class extends Error{static{s(this,"LanternError")}}});var Om,u3,_J,RJ,hi,l3=g(()=>{d();qy();Om=class{static{s(this,"UrlUtils")}static rewriteChromeInternalUrl(t){return!t||!t.startsWith("chrome://")?t:(t.endsWith("/")&&(t=t.replace(/\/$/,"")),t.replace(/^chrome:\/\/chrome\//,"chrome://"))}static equalWithExcludedFragments(t,r){[t,r]=[t,r].map(this.rewriteChromeInternalUrl);try{let n=new URL(t);n.hash="";let i=new URL(r);return i.hash="",n.href===i.href}catch{return!1}}},u3=14*1024,_J=.4,RJ={Document:.9,XHR:.9,Fetch:.9},hi=class e{static{s(this,"NetworkAnalyzer")}static get summary(){return"__SUMMARY__"}static groupByOrigin(t){let r=new Map;return t.forEach(n=>{let i=n.parsedURL.securityOrigin,a=r.get(i)||[];a.push(n),r.set(i,a)}),r}static getSummary(t){t.sort((n,i)=>n-i);let r;if(t.length===0)r=t[0];else if(t.length%2===0){let n=t[Math.floor((t.length-1)/2)],i=t[Math.floor((t.length-1)/2)+1];r=(n+i)/2}else r=t[Math.floor((t.length-1)/2)];return{min:t[0],max:t[t.length-1],avg:t.reduce((n,i)=>n+i,0)/t.length,median:r}}static summarize(t){let r=new Map, -n=[];for(let[i,a]of t)r.set(i,e.getSummary(a)),n.push(...a);return r.set(e.summary,e.getSummary(n)),r}static _estimateValueByOrigin(t,r){let n=e.estimateIfConnectionWasReused(t),i=e.groupByOrigin(t),a=new Map;for(let[o,u]of i.entries()){let l=[];for(let c of u){let p=c.timing;if(!p)continue;let m=r({request:c,timing:p,connectionReused:n.get(c.requestId)});typeof m<"u"&&(l=l.concat(m))}l.length&&a.set(o,l)}return a}static _estimateRTTViaConnectionTiming(t){let{timing:r,connectionReused:n,request:i}=t;if(n)return;let{connectStart:a,sslStart:o,sslEnd:u,connectEnd:l}=r;if(l>=0&&a>=0&&i.protocol.startsWith("h3"))return l-a;if(o>=0&&u>=0&&o!==a)return[l-o,o-a];if(a>=0&&l>=0)return l-a}static _estimateRTTViaDownloadTiming(t){let{timing:r,connectionReused:n,request:i}=t;if(n||i.transferSize<=u3||!Number.isFinite(r.receiveHeadersEnd)||r.receiveHeadersEnd<0)return;let o=i.networkEndTime-i.networkRequestTime-r.receiveHeadersEnd,u=Math.log2(i.transferSize/u3);if(!(u>5))return o/u}static _estimateRTTViaSendStartTiming(t){ -let{timing:r,connectionReused:n,request:i}=t;if(n||!Number.isFinite(r.sendStart)||r.sendStart<0)return;let a=1;return i.protocol.startsWith("h3")||(a+=1),i.parsedURL.scheme==="https"&&(a+=1),r.sendStart/a}static _estimateRTTViaHeadersEndTiming(t){let{timing:r,connectionReused:n,request:i}=t;if(!Number.isFinite(r.receiveHeadersEnd)||r.receiveHeadersEnd<0||!i.resourceType)return;let a=RJ[i.resourceType]||_J,o=r.receiveHeadersEnd*a,u=1;return n||(u+=1,i.protocol.startsWith("h3")||(u+=1),i.parsedURL.scheme==="https"&&(u+=1)),Math.max((r.receiveHeadersEnd-o)/u,3)}static _estimateResponseTimeByOrigin(t,r){return e._estimateValueByOrigin(t,({request:n,timing:i})=>{if(n.serverResponseTime!==void 0)return n.serverResponseTime;if(!Number.isFinite(i.receiveHeadersEnd)||i.receiveHeadersEnd<0||!Number.isFinite(i.sendEnd)||i.sendEnd<0)return;let a=i.receiveHeadersEnd-i.sendEnd,o=n.parsedURL.securityOrigin,u=r.get(o)||r.get(e.summary)||0;return Math.max(a-u,0)})}static canTrustConnectionInformation(t){ -let r=new Map;for(let n of t){let i=r.get(n.connectionId)||!n.connectionReused;r.set(n.connectionId,i)}return r.size<=1?!1:Array.from(r.values()).every(n=>n)}static estimateIfConnectionWasReused(t,r){let{forceCoarseEstimates:n=!1}=r||{};if(!n&&e.canTrustConnectionInformation(t))return new Map(t.map(o=>[o.requestId,!!o.connectionReused]));let i=new Map,a=e.groupByOrigin(t);for(let o of a.values()){let u=o.map(c=>c.networkEndTime).reduce((c,p)=>Math.min(c,p),1/0);for(let c of o)i.set(c.requestId,c.networkRequestTime>=u||c.protocol==="h2");let l=o.reduce((c,p)=>c.networkRequestTime>p.networkRequestTime?p:c);i.set(l.requestId,!1)}return i}static estimateRTTByOrigin(t,r){let{forceCoarseEstimates:n=!1,coarseEstimateMultiplier:i=.3,useDownloadEstimates:a=!0,useSendStartEstimates:o=!0,useHeadersEndEstimates:u=!0}=r||{},l=e.estimateIfConnectionWasReused(t),c=e.groupByOrigin(t),p=new Map;for(let[m,f]of c.entries()){let y=function(b,w=1){for(let E of f){let T=E.timing;if(!T)continue;let S=b({request:E, -timing:T,connectionReused:l.get(E.requestId)});S!==void 0&&(Array.isArray(S)?h.push(...S.map(C=>C*w)):h.push(S*w))}};s(y,"collectEstimates");let h=[];n||y(this._estimateRTTViaConnectionTiming),h.length||(a&&y(this._estimateRTTViaDownloadTiming,i),o&&y(this._estimateRTTViaSendStartTiming,i),u&&y(this._estimateRTTViaHeadersEndTiming,i)),h.length&&p.set(m,h)}if(!p.size)throw new Z("No timing information available");return e.summarize(p)}static estimateServerResponseTimeByOrigin(t,r){let n=(r||{}).rttByOrigin;if(!n){n=new Map;let a=e.estimateRTTByOrigin(t,r);for(let[o,u]of a.entries())n.set(o,u.min)}let i=e._estimateResponseTimeByOrigin(t,n);return e.summarize(i)}static estimateThroughput(t){let r=0,n=t.reduce((u,l)=>(l.parsedURL?.scheme==="data"||l.failed||!l.finished||l.statusCode>300||!l.transferSize||(r+=l.transferSize,u.push({time:l.responseHeadersEndTime/1e3,isStart:!0}),u.push({time:l.networkEndTime/1e3,isStart:!1})),u),[]).sort((u,l)=>u.time-l.time);if(!n.length)return 1/0;let i=0, -a=0,o=0;return n.forEach(u=>{u.isStart?(i===0&&(a=u.time),i++):(i--,i===0&&(o+=u.time-a))}),r*8/o}static computeRTTAndServerResponseTime(t){let r=new Map;for(let[u,l]of e.estimateRTTByOrigin(t).entries())r.set(u,l.min);let n=Math.min(...Array.from(r.values())),i=e.estimateServerResponseTimeByOrigin(t,{rttByOrigin:r}),a=new Map,o=new Map;for(let[u,l]of i.entries()){let c=r.get(u)||n;a.set(u,c-n),o.set(u,l.median)}return{rtt:n,additionalRttByOrigin:a,serverResponseTimeByOrigin:o}}static analyze(t){return{throughput:e.estimateThroughput(t),...e.computeRTTAndServerResponseTime(t)}}static findResourceForUrl(t,r){return t.find(n=>r.startsWith(n.url)&&Om.equalWithExcludedFragments(n.url,r))}static findLastDocumentForUrl(t,r){let n=t.filter(i=>i.resourceType==="Document"&&r.startsWith(i.url)&&Om.equalWithExcludedFragments(i.url,r));return n[n.length-1]}static resolveRedirects(t){for(;t.redirectDestination;)t=t.redirectDestination;return t}}});var st={};x(st,{LanternError:()=>Z,NetworkAnalyzer:()=>hi});var Or=g(()=>{d();qy();l3()});var Ze,Bm=g(()=>{d();Or();Ze=class e{static{s(this,"BaseNode")}static types={NETWORK:"network",CPU:"cpu"};_id;_isMainDocument;_dependents;_dependencies;constructor(t){this._id=t,this._isMainDocument=!1,this._dependents=[],this._dependencies=[]}get id(){return this._id}get type(){throw new Z("Unimplemented")}get startTime(){throw new Z("Unimplemented")}get endTime(){throw new Z("Unimplemented")}setIsMainDocument(t){this._isMainDocument=t}isMainDocument(){return this._isMainDocument}getDependents(){return this._dependents.slice()}getNumberOfDependents(){return this._dependents.length}getDependencies(){return this._dependencies.slice()}getNumberOfDependencies(){return this._dependencies.length}getRootNode(){let t=this;for(;t._dependencies.length;)t=t._dependencies[0];return t}addDependent(t){t.addDependency(this)}addDependency(t){if(t===this)throw new Z("Cannot add dependency on itself");this._dependencies.includes(t)||(t._dependents.push(this),this._dependencies.push(t))}removeDependent(t){ -t.removeDependency(this)}removeDependency(t){if(!this._dependencies.includes(t))return;let r=t._dependents.indexOf(this);t._dependents.splice(r,1),this._dependencies.splice(this._dependencies.indexOf(t),1)}removeAllDependencies(){for(let t of this._dependencies.slice())this.removeDependency(t)}isDependentOn(t){let r=!1;return this.traverse(n=>{r||(r=n===t)},n=>r?[]:n.getDependencies()),r}cloneWithoutRelationships(){let t=new e(this.id);return t.setIsMainDocument(this._isMainDocument),t}cloneWithRelationships(t){let r=this.getRootNode(),n=new Map;r.traverse(a=>{if(!n.has(a.id)){if(t===void 0){n.set(a.id,a.cloneWithoutRelationships());return}t(a)&&a.traverse(o=>n.set(o.id,o.cloneWithoutRelationships()),o=>o._dependencies.filter(u=>!n.has(u.id)))}}),r.traverse(a=>{let o=n.get(a.id);if(o)for(let u of a._dependencies){let l=n.get(u.id);if(!l)throw new Z("Dependency somehow not cloned");o.addDependency(l)}});let i=n.get(this.id);if(!i)throw new Z("Cloned graph missing node");return i}traverse(t,r){ -for(let{node:n,traversalPath:i}of this.traverseGenerator(r))t(n,i)}*traverseGenerator(t){t||(t=s(i=>i.getDependents(),"getNextNodes"));let r=[[this]],n=new Set([this.id]);for(;r.length;){let i=r.shift(),a=i[0];yield{node:a,traversalPath:i};for(let o of t(a))n.has(o.id)||(n.add(o.id),r.push([o,...i]))}}static hasCycle(t,r="both"){if(r==="both")return e.hasCycle(t,"dependents")||e.hasCycle(t,"dependencies");let n=new Set,i=[],a=[t],o=new Map([[t,0]]);for(;a.length;){let u=a.pop();if(i.includes(u))return!0;if(n.has(u))continue;for(;i.length>o.get(u);)i.pop();n.add(u),i.push(u);let l=r==="dependents"?u._dependents:u._dependencies;for(let c of l)a.includes(c)||(a.push(c),o.set(c,i.length))}return!1}canDependOn(t){return t.startTime<=this.startTime}}});var Fl,zy=g(()=>{d();Bm();Fl=class e extends Ze{static{s(this,"CPUNode")}_event;_childEvents;_correctedEndTs;constructor(t,r=[],n){let i=`${t.tid}.${t.ts}`;super(i),this._event=t,this._childEvents=r,this._correctedEndTs=n}get type(){return Ze.types.CPU}get startTime(){return this._event.ts}get endTime(){return this._correctedEndTs?this._correctedEndTs:this._event.ts+this._event.dur}get duration(){return this.endTime-this.startTime}get event(){return this._event}get childEvents(){return this._childEvents}didPerformLayout(){return this._childEvents.some(t=>t.name==="Layout")}getEvaluateScriptURLs(){let t=new Set;for(let r of this._childEvents)r.name==="EvaluateScript"&&(!r.args.data||!r.args.data.url||t.add(r.args.data.url));return t}cloneWithoutRelationships(){return new e(this._event,this._childEvents,this._correctedEndTs)}}});function c3(e){let t=e.includes(":")?e.slice(0,e.indexOf(":")):e;return IJ.includes(t)}var IJ,ys,Hy=g(()=>{d();Bm();IJ=["blob","data","intent","file","filesystem","chrome-extension"];s(c3,"isNonNetworkProtocol");ys=class e extends Ze{static{s(this,"NetworkNode")}_request;constructor(t){super(t.requestId),this._request=t}get type(){return Ze.types.NETWORK}get startTime(){return this._request.rendererStartTime*1e3}get endTime(){return this._request.networkEndTime*1e3}get rawRequest(){return this._request.rawRequest}get request(){return this._request}get initiatorType(){return this._request.initiator&&this._request.initiator.type}get fromDiskCache(){return!!this._request.fromDiskCache}get isNonNetworkProtocol(){return c3(this.request.protocol)||c3(this.request.parsedURL.scheme)}get isConnectionless(){return this.fromDiskCache||this.isNonNetworkProtocol}hasRenderBlockingPriority(){let t=this._request.priority,r=this._request.resourceType==="Script",n=this._request.resourceType==="Document"; -return t==="VeryHigh"||t==="High"&&r||t==="High"&&n}cloneWithoutRelationships(){let t=new e(this._request);return t.setIsMainDocument(this._isMainDocument),t}}});var AJ,NJ,MJ,LJ,PJ,OJ,Wy,d3=g(()=>{d();zy();Hy();Or();AJ="RunTask",NJ="ThreadControllerImpl::RunTask",MJ="ThreadControllerImpl::DoWork",LJ="TaskQueueManager::ProcessTaskFromWorkQueue",PJ=10,OJ=/^video/,Wy=class e{static{s(this,"PageDependencyGraph")}static getNetworkInitiators(t){if(!t.initiator)return[];if(t.initiator.url)return[t.initiator.url];if(t.initiator.type==="script"){let r=new Set,n=t.initiator.stack;for(;n;){let i=n.callFrames||[];for(let a of i)a.url&&r.add(a.url);n=n.parent}return Array.from(r)}return[]}static getNetworkNodeOutput(t){let r=[],n=new Map,i=new Map,a=new Map;return t.forEach(o=>{if(OJ.test(o.mimeType)||o.fromWorker)return;for(;n.has(o.requestId);)o.requestId+=":duplicate";let u=new ys(o);r.push(u);let l=i.get(o.url)||[];if(l.push(u),n.set(o.requestId,u),i.set(o.url,l),o.frameId&&o.resourceType==="Document"&&o.documentURL===o.url){let c=a.has(o.frameId)?null:u;a.set(o.frameId,c)}}),{nodes:r,idToNodeMap:n,urlToNodeMap:i,frameIdToNodeMap:a}}static isScheduleableTask(t){ -return t.name===AJ||t.name===NJ||t.name===MJ||t.name===LJ}static assertHasToplevelEvents(t){if(!t.some(this.isScheduleableTask))throw new Z("Could not find any top level events")}static getCPUNodes(t){let r=[],n=0;for(e.assertHasToplevelEvents(t);n<t.length;){let i=t[n];if(n++,!e.isScheduleableTask(i)||!i.dur)continue;let a,o=[];for(let u=i.ts+i.dur;n<t.length&&t[n].ts<u;n++){let l=t[n];if(e.isScheduleableTask(l)&&l.dur){a=l.ts-1;break}o.push(l)}r.push(new Fl(i,o,a))}return r}static linkNetworkNodes(t,r){r.nodes.forEach(n=>{let i=n.request.initiatorRequest||t.request,a=r.idToNodeMap.get(i.requestId)||t,o=!a.isDependentOn(n)&&n.canDependOn(a),u=e.getNetworkInitiators(n.request);if(u.length?u.forEach(c=>{let p=r.urlToNodeMap.get(c)||[];p.length===1&&p[0].startTime<=n.startTime&&!p[0].isDependentOn(n)?n.addDependency(p[0]):o&&a.addDependent(n)}):o&&a.addDependent(n),n!==t&&n.getDependencies().length===0&&n.canDependOn(t)&&n.addDependency(t),!n.request.redirects)return;let l=[...n.request. -redirects,n.request];for(let c=1;c<l.length;c++){let p=r.idToNodeMap.get(l[c-1].requestId),m=r.idToNodeMap.get(l[c].requestId);m&&p&&m.addDependency(p)}})}static linkCPUNodes(t,r,n){let i=new Set(["XHR","Fetch","Script"]);function a(h,y){let b=r.idToNodeMap.get(y);if(!b||b.startTime<=h.startTime)return;let{request:w}=b,E=w.resourceType||w.redirectDestination?.resourceType;i.has(E)&&h.addDependent(b)}s(a,"addDependentNetworkRequest");function o(h,y){if(!y)return;let b=r.frameIdToNodeMap.get(y);b&&(b.startTime>=h.startTime||h.addDependency(b))}s(o,"addDependencyOnFrame");function u(h,y){if(!y)return;let b=-100*1e3,w=r.urlToNodeMap.get(y)||[],E=null,T=1/0;for(let S of w){if(h.startTime<=S.startTime)return;let C=h.startTime-S.endTime;C>=b&&C<T&&(E=S,T=C)}E&&h.addDependency(E)}s(u,"addDependencyOnUrl");let l=new Map;for(let h of n){for(let y of h.childEvents){if(!y.args.data)continue;let b=y.args.data.url,w=(y.args.data.stackTrace||[]).map(E=>E.url).filter(Boolean);switch(y.name){case"Timer\ -Install":l.set(y.args.data.timerId,h),w.forEach(E=>u(h,E));break;case"TimerFire":{let E=l.get(y.args.data.timerId);if(!E||E.endTime>h.startTime)break;E.addDependent(h);break}case"InvalidateLayout":case"ScheduleStyleRecalculation":o(h,y.args.data.frame),w.forEach(E=>u(h,E));break;case"EvaluateScript":o(h,y.args.data.frame),u(h,b),w.forEach(E=>u(h,E));break;case"XHRReadyStateChange":if(y.args.data.readyState!==4)break;u(h,b),w.forEach(E=>u(h,E));break;case"FunctionCall":case"v8.compile":o(h,y.args.data.frame),u(h,b);break;case"ParseAuthorStyleSheet":o(h,y.args.data.frame),u(h,y.args.data.styleSheetUrl);break;case"ResourceSendRequest":o(h,y.args.data.frame),a(h,y.args.data.requestId),w.forEach(E=>u(h,E));break}}h.getNumberOfDependencies()===0&&h.canDependOn(t)&&h.addDependency(t)}let c=PJ*1e3,p=!1,m=!1,f=!1;for(let h of n){let y=!1;!p&&h.childEvents.some(b=>b.name==="Layout")&&(y=p=!0),!m&&h.childEvents.some(b=>b.name==="Paint")&&(y=m=!0),!f&&h.childEvents.some(b=>b.name==="ParseHTML")&&(y= -f=!0),!(y||h.duration>=c)&&(h.getNumberOfDependencies()===1||h.getNumberOfDependents()<=1)&&e._pruneNode(h)}}static _pruneNode(t){let r=t.getDependencies(),n=t.getDependents();for(let i of r){t.removeDependency(i);for(let a of n)i.addDependent(a)}for(let i of n)t.removeDependent(i)}static _debugNormalizeRequests(t){for(let i of t)i.rendererStartTime=Math.round(i.rendererStartTime*1e3)/1e3,i.networkRequestTime=Math.round(i.networkRequestTime*1e3)/1e3,i.responseHeadersEndTime=Math.round(i.responseHeadersEndTime*1e3)/1e3,i.networkEndTime=Math.round(i.networkEndTime*1e3)/1e3;for(let i of t)delete i.rawRequest,i.initiatorRequest&&(i.initiatorRequest={id:i.initiatorRequest.requestId}),i.redirectDestination&&(i.redirectDestination={id:i.redirectDestination.requestId}),i.redirectSource&&(i.redirectSource={id:i.redirectSource.requestId}),i.redirects&&(i.redirects=i.redirects.map(a=>a.requestId));let n=t.map(i=>({requestId:i.requestId,connectionId:i.connectionId,connectionReused:i.connectionReused, -url:i.url,protocol:i.protocol,parsedURL:i.parsedURL,documentURL:i.documentURL,rendererStartTime:i.rendererStartTime,networkRequestTime:i.networkRequestTime,responseHeadersEndTime:i.responseHeadersEndTime,networkEndTime:i.networkEndTime,transferSize:i.transferSize,resourceSize:i.resourceSize,fromDiskCache:i.fromDiskCache,fromMemoryCache:i.fromMemoryCache,finished:i.finished,statusCode:i.statusCode,redirectSource:i.redirectSource,redirectDestination:i.redirectDestination,redirects:i.redirects,failed:i.failed,initiator:i.initiator,timing:i.timing?{requestTime:i.timing.requestTime,proxyStart:i.timing.proxyStart,proxyEnd:i.timing.proxyEnd,dnsStart:i.timing.dnsStart,dnsEnd:i.timing.dnsEnd,connectStart:i.timing.connectStart,connectEnd:i.timing.connectEnd,sslStart:i.timing.sslStart,sslEnd:i.timing.sslEnd,workerStart:i.timing.workerStart,workerReady:i.timing.workerReady,workerFetchStart:i.timing.workerFetchStart,workerRespondWithSettled:i.timing.workerRespondWithSettled,sendStart:i.timing.sendStart, -sendEnd:i.timing.sendEnd,pushStart:i.timing.pushStart,pushEnd:i.timing.pushEnd,receiveHeadersStart:i.timing.receiveHeadersStart,receiveHeadersEnd:i.timing.receiveHeadersEnd}:i.timing,resourceType:i.resourceType,mimeType:i.mimeType,priority:i.priority,initiatorRequest:i.initiatorRequest,frameId:i.frameId,fromWorker:i.fromWorker,isLinkPreload:i.isLinkPreload,serverResponseTime:i.serverResponseTime})).filter(i=>!i.fromWorker);console.log(n)}static createGraph(t,r,n){let i=e.getNetworkNodeOutput(r),a=e.getCPUNodes(t),{requestedUrl:o,mainDocumentUrl:u}=n;if(!o)throw new Z("requestedUrl is required to get the root request");if(!u)throw new Z("mainDocumentUrl is required to get the main resource");let l=hi.findResourceForUrl(r,o);if(!l)throw new Z("rootRequest not found");let c=i.idToNodeMap.get(l.requestId);if(!c)throw new Z("rootNode not found");let p=hi.findLastDocumentForUrl(r,u);if(!p)throw new Z("mainDocumentRequest not found");let m=i.idToNodeMap.get(p.requestId);if(!m)throw new Z("mai\ -nDocumentNode not found");if(e.linkNetworkNodes(c,i),e.linkCPUNodes(c,i,a),m.setIsMainDocument(!0),ys.hasCycle(c))throw new Z("Invalid dependency graph created, cycle detected");return c}static printGraph(t,r=100){function n(c,p,m=" "){return c+m.repeat(Math.max(p-c.length,0))}s(n,"padRight");let i=[];t.traverse(c=>i.push(c)),i.sort((c,p)=>c.startTime-p.startTime);let a=i[0].startTime,l=(i.reduce((c,p)=>Math.max(c,p.endTime),0)-a)/r;i.forEach(c=>{let p=Math.round((c.startTime-a)/l),m=Math.ceil((c.endTime-c.startTime)/l),f=n("",p)+n("",m,"="),h=c.request?c.request.url:c.type;console.log(n(f,r),`| ${h.slice(0,30)}`)})}}});var qt={};x(qt,{BaseNode:()=>Ze,CPUNode:()=>Fl,NetworkNode:()=>ys,PageDependencyGraph:()=>Wy});var Mn=g(()=>{d();Bm();zy();Hy();d3()});var lr,Qi=g(()=>{d();Or();Mn();lr=class{static{s(this,"Metric")}static getScriptUrls(t,r){let n=new Set;return t.traverse(i=>{i.type===Ze.types.NETWORK&&i.request.resourceType==="Script"&&r?.(i)&&n.add(i.request.url)}),n}static get coefficients(){throw new Z("coefficients unimplemented!")}static getScaledCoefficients(t){return this.coefficients}static getOptimisticGraph(t,r){throw new Z("Optimistic graph unimplemented!")}static getPessimisticGraph(t,r){throw new Z("Pessmistic graph unimplemented!")}static getEstimateFromSimulation(t,r){return t}static compute(t,r){let{simulator:n,graph:i,processedNavigation:a}=t,o=this.name.replace("Lantern",""),u=this.getOptimisticGraph(i,a),l=this.getPessimisticGraph(i,a),c={label:`optimistic${o}`},p=n.simulate(u,c);c={label:`pessimistic${o}`};let m=n.simulate(l,c),f=this.getEstimateFromSimulation(p,{...r,optimistic:!0}),h=this.getEstimateFromSimulation(m,{...r,optimistic:!1}),y=this.getScaledCoefficients(n.rtt),b=y.intercept>0?Math.min(1,f.timeInMs/ -1e3):1;return{timing:y.intercept*b+y.optimistic*f.timeInMs+y.pessimistic*h.timeInMs,optimisticEstimate:f,pessimisticEstimate:h,optimisticGraph:u,pessimisticGraph:l}}}});var vs,Gy=g(()=>{d();Mn();Qi();vs=class extends lr{static{s(this,"FirstContentfulPaint")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getRenderBlockingNodeData(t,{cutoffTimestamp:r,treatNodeAsRenderBlocking:n,additionalCpuNodesToTreatAsRenderBlocking:i}){let a=new Map,o=[];t.traverse(h=>{if(h.type===Ze.types.CPU){h.startTime<=r&&o.push(h);let y=h.getEvaluateScriptURLs();for(let b of y){let w=a.get(b)||h;a.set(b,h.startTime<w.startTime?h:w)}}}),o.sort((h,y)=>h.startTime-y.startTime);let u=lr.getScriptUrls(t,h=>h.endTime<=r&&n(h)),l=new Set,c=new Set;for(let h of u){let y=a.get(h);if(y){if(o.includes(y)){c.add(y.id);continue}l.add(h)}}let p=o.find(h=>h.didPerformLayout());p&&c.add(p.id);let m=o.find(h=>h.childEvents.some(y=>y.name==="Paint"));m&&c.add(m.id);let f=o.find(h=>h.childEvents.some(y=>y.name==="ParseHTML"));return f&&c.add(f.id),i&&o.filter(i).forEach(h=>c.add(h.id)),{definitelyNotRenderBlockingScriptUrls:l,renderBlockingCpuNodeIds:c}}static getFirstPaintBasedGraph(t,{ -cutoffTimestamp:r,treatNodeAsRenderBlocking:n,additionalCpuNodesToTreatAsRenderBlocking:i}){let a=this.getRenderBlockingNodeData(t,{cutoffTimestamp:r,treatNodeAsRenderBlocking:n,additionalCpuNodesToTreatAsRenderBlocking:i}),{definitelyNotRenderBlockingScriptUrls:o,renderBlockingCpuNodeIds:u}=a;return t.cloneWithRelationships(l=>{if(l.type===Ze.types.NETWORK){if((l.endTime>r||l.startTime>r)&&!l.isMainDocument())return!1;let p=l.request.url;return o.has(p)?!1:n(l)}return u.has(l.id)})}static getOptimisticGraph(t,r){return this.getFirstPaintBasedGraph(t,{cutoffTimestamp:r.timestamps.firstContentfulPaint,treatNodeAsRenderBlocking:n=>n.hasRenderBlockingPriority()&&n.initiatorType!=="script"})}static getPessimisticGraph(t,r){return this.getFirstPaintBasedGraph(t,{cutoffTimestamp:r.timestamps.firstContentfulPaint,treatNodeAsRenderBlocking:n=>n.hasRenderBlockingPriority()})}}});var BJ,Vy,p3=g(()=>{d();Or();Mn();Qi();BJ=20,Vy=class e extends lr{static{s(this,"Interactive")}static get coefficients(){return{intercept:0,optimistic:.45,pessimistic:.55}}static getOptimisticGraph(t){let r=BJ*1e3;return t.cloneWithRelationships(n=>{if(n.type===Ze.types.CPU)return n.duration>r;let i=n.request.resourceType==="Image",a=n.request.resourceType==="Script";return!i&&(a||n.request.priority==="High"||n.request.priority==="VeryHigh")})}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,r){if(!r.lcpResult)throw new Z("missing lcpResult");let n=e.getLastLongTaskEndTime(t.nodeTimings),i=r.optimistic?r.lcpResult.optimisticEstimate.timeInMs:r.lcpResult.pessimisticEstimate.timeInMs;return{timeInMs:Math.max(i,n),nodeTimings:t.nodeTimings}}static compute(t,r){let n=r?.lcpResult;if(!n)throw new Z("LCP is required to calculate the Interactive metric");let i=super.compute(t,r);return i.timing=Math.max(i.timing,n.timing),i}static getLastLongTaskEndTime(t,r=50){return Array. -from(t.entries()).filter(([n,i])=>n.type!==Ze.types.CPU?!1:i.duration>r).map(([n,i])=>i.endTime).reduce((n,i)=>Math.max(n||0,i||0),0)}}});var $y,m3=g(()=>{d();Or();Gy();Qi();$y=class e extends lr{static{s(this,"LargestContentfulPaint")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static isNotLowPriorityImageNode(t){if(t.type!=="network")return!0;let r=t.request.resourceType==="Image",n=t.request.priority==="Low"||t.request.priority==="VeryLow";return!r||!n}static getOptimisticGraph(t,r){let n=r.timestamps.largestContentfulPaint;if(!n)throw new Z("NO_LCP");return vs.getFirstPaintBasedGraph(t,{cutoffTimestamp:n,treatNodeAsRenderBlocking:e.isNotLowPriorityImageNode})}static getPessimisticGraph(t,r){let n=r.timestamps.largestContentfulPaint;if(!n)throw new Z("NO_LCP");return vs.getFirstPaintBasedGraph(t,{cutoffTimestamp:n,treatNodeAsRenderBlocking:i=>!0,additionalCpuNodesToTreatAsRenderBlocking:i=>i.didPerformLayout()})}static getEstimateFromSimulation(t){let r=Array.from(t.nodeTimings.entries()).filter(n=>e.isNotLowPriorityImageNode(n[0])).map(n=>n[1].endTime);return{timeInMs:Math.max(...r),nodeTimings:t. -nodeTimings}}static compute(t,r){let n=r?.fcpResult;if(!n)throw new Z("FCP is required to calculate the LCP metric");let i=super.compute(t,r);return i.timing=Math.max(i.timing,n.timing),i}}});var Yy,f3=g(()=>{d();Or();Mn();Qi();Yy=class e extends lr{static{s(this,"MaxPotentialFID")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(t){return t}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,r){if(!r.fcpResult)throw new Z("missing fcpResult");let n=r.optimistic?r.fcpResult.pessimisticEstimate.timeInMs:r.fcpResult.optimisticEstimate.timeInMs,i=e.getTimingsAfterFCP(t.nodeTimings,n);return{timeInMs:Math.max(...i.map(a=>a.duration),16),nodeTimings:t.nodeTimings}}static compute(t,r){if(!r?.fcpResult)throw new Z("FCP is required to calculate the Max Potential FID metric");return super.compute(t,r)}static getTimingsAfterFCP(t,r){return Array.from(t.entries()).filter(([n,i])=>n.type===Ze.types.CPU&&i.endTime>r).map(([n,i])=>i)}}});var UJ,Ky,h3=g(()=>{d();Or();Mn();Qi();UJ=150,Ky=class e extends lr{static{s(this,"SpeedIndex")}static get coefficients(){return{intercept:0,optimistic:1.4,pessimistic:.4}}static getScaledCoefficients(t){let r=this.coefficients,n=UJ-30,i=Math.max((t-30)/n,0);return{intercept:r.intercept*i,optimistic:.5+(r.optimistic-.5)*i,pessimistic:.5+(r.pessimistic-.5)*i}}static getOptimisticGraph(t){return t}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,r){if(!r.fcpResult)throw new Z("missing fcpResult");if(r.observedSpeedIndex===void 0)throw new Z("missing observedSpeedIndex");let n=r.fcpResult.pessimisticEstimate.timeInMs;return{timeInMs:r.optimistic?r.observedSpeedIndex:e.computeLayoutBasedSpeedIndex(t.nodeTimings,n),nodeTimings:t.nodeTimings}}static compute(t,r){let n=r?.fcpResult;if(!n)throw new Z("FCP is required to calculate the SpeedIndex metric");let i=super.compute(t,r);return i.timing=Math.max(i.timing,n.timing),i}static computeLayoutBasedSpeedIndex(t,r){let n=[]; -for(let[o,u]of t.entries())if(o.type===Ze.types.CPU&&o.childEvents.some(l=>l.name==="Layout")){let l=Math.max(Math.log2(u.endTime-u.startTime),0);n.push({time:u.endTime,weight:l})}let i=n.map(o=>o.weight*Math.max(o.time,r)).reduce((o,u)=>o+u,0),a=n.map(o=>o.weight).reduce((o,u)=>o+u,0);return a?i/a:r}}});var Xy={};x(Xy,{BLOCKING_TIME_THRESHOLD:()=>Jy,calculateSumOfBlockingTime:()=>Zy,calculateTbtImpactForEvent:()=>g3});function g3(e,t,r,n){let i=50;if(n&&(i*=e.duration/n.duration),e.duration<i||e.end<t||e.start>r)return 0;let a=Math.max(e.start,t),u=Math.min(e.end,r)-a;return u<i?0:u-i}function Zy(e,t,r){if(r<=t)return 0;let n=0;for(let i of e)n+=g3(i,t,r);return n}var Jy,Qy=g(()=>{d();Jy=50;s(g3,"calculateTbtImpactForEvent");s(Zy,"calculateSumOfBlockingTime")});var ev,y3=g(()=>{d();Or();Mn();Qi();Qy();ev=class e extends lr{static{s(this,"TotalBlockingTime")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(t){return t}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,r){if(!r.fcpResult)throw new Z("missing fcpResult");if(!r.interactiveResult)throw new Z("missing interactiveResult");let n=r.optimistic?r.fcpResult.pessimisticEstimate.timeInMs:r.fcpResult.optimisticEstimate.timeInMs,i=r.optimistic?r.interactiveResult.optimisticEstimate.timeInMs:r.interactiveResult.pessimisticEstimate.timeInMs,a=50,o=e.getTopLevelEvents(t.nodeTimings,a);return{timeInMs:Zy(o,n,i),nodeTimings:t.nodeTimings}}static compute(t,r){if(!r?.fcpResult)throw new Z("FCP is required to calculate the TBT metric");if(!r?.fcpResult)throw new Z("Interactive is required to calculate the TBT metric");return super.compute(t,r)}static getTopLevelEvents(t,r){let n=[];for(let[i,a]of t.entries())i.type===Ze.types. -CPU&&(a.duration<r||n.push({start:a.startTime,end:a.endTime,duration:a.duration}));return n}}});var Rt={};x(Rt,{FirstContentfulPaint:()=>vs,Interactive:()=>Vy,LargestContentfulPaint:()=>$y,MaxPotentialFID:()=>Yy,Metric:()=>lr,SpeedIndex:()=>Ky,TBTUtils:()=>Xy,TotalBlockingTime:()=>ev});var v3=g(()=>{d();Gy();p3();m3();f3();Qi();h3();y3();Qy()});var to,Um=g(()=>{d();to=class e{static{s(this,"TCPConnection")}_warmed;_ssl;_h2;_rtt;_throughput;_serverLatency;_congestionWindow;_h2OverflowBytesDownloaded;constructor(t,r,n=0,i=!0,a=!1){this._warmed=!1,this._ssl=i,this._h2=a,this._rtt=t,this._throughput=r,this._serverLatency=n,this._congestionWindow=10,this._h2OverflowBytesDownloaded=0}static maximumSaturatedConnections(t,r){let o=1e3/t*1460*8;return Math.floor(r/o)}_computeMaximumCongestionWindowInSegments(){let t=this._throughput/8,r=this._rtt/1e3,n=t*r;return Math.floor(n/1460)}setThroughput(t){this._throughput=t}setCongestionWindow(t){this._congestionWindow=t}setWarmed(t){this._warmed=t}isWarm(){return this._warmed}isH2(){return this._h2}get congestionWindow(){return this._congestionWindow}setH2OverflowBytesDownloaded(t){this._h2&&(this._h2OverflowBytesDownloaded=t)}clone(){return Object.assign(new e(this._rtt,this._throughput),this)}simulateDownloadUntil(t,r){let{timeAlreadyElapsed:n=0,maximumTimeToElapse:i=1/0,dnsResolutionTime:a=0}=r|| -{};this._warmed&&this._h2&&(t-=this._h2OverflowBytesDownloaded);let o=this._rtt,u=o/2,l=this._computeMaximumCongestionWindowInSegments(),c=u;this._warmed||(c=a+u+u+u+(this._ssl?o:0));let p=Math.ceil(c/o),m=c+this._serverLatency+u;this._warmed&&this._h2&&(m=0);let f=Math.max(m-n,0),h=i-f,y=Math.min(this._congestionWindow,l),b=0;f>0?b=y*1460:p=0;let w=0,E=t-b;for(;E>0&&w<=h;){p++,w+=o,y=Math.max(Math.min(l,y*2),1);let L=y*1460;b+=L,E-=L}let T=f+w,S=this._h2?Math.max(b-t,0):0,C=Math.max(Math.min(b,t),0),_;return this._warmed?this._h2?_={timeToFirstByte:m}:_={connectionTime:c,timeToFirstByte:m}:_={dnsResolutionTime:a,connectionTime:c-a,sslTime:this._ssl?o:void 0,timeToFirstByte:m},{roundTrips:p,timeElapsed:T,bytesDownloaded:C,extraBytesDownloaded:S,congestionWindow:y,connectionTiming:_}}}});var jJ,qJ,zJ,kl,tv=g(()=>{d();Or();Um();jJ=30,qJ=["https","wss"],zJ=6,kl=class{static{s(this,"ConnectionPool")}_options;_records;_connectionsByOrigin;_connectionsByRequest;_connectionsInUse;_connectionReusedByRequestId;constructor(t,r){this._options=r,this._records=t,this._connectionsByOrigin=new Map,this._connectionsByRequest=new Map,this._connectionsInUse=new Set,this._connectionReusedByRequestId=hi.estimateIfConnectionWasReused(t,{forceCoarseEstimates:!0}),this._initializeConnections()}connectionsInUse(){return Array.from(this._connectionsInUse)}_initializeConnections(){let t=this._connectionReusedByRequestId,r=this._options.additionalRttByOrigin,n=this._options.serverResponseTimeByOrigin,i=hi.groupByOrigin(this._records);for(let[a,o]of i.entries()){let u=[],l=r.get(a)||0,c=n.get(a)||jJ;for(let m of o){if(t.get(m.requestId))continue;let f=qJ.includes(m.parsedURL.scheme),h=m.protocol==="h2",y=new to(this._options.rtt+l,this._options.throughput,c,f,h);u.push(y)}if(!u.length)throw new Z( -`Could not find a connection for origin: ${a}`);let p=u[0].isH2()?1:zJ;for(;u.length<p;)u.push(u[0].clone());this._connectionsByOrigin.set(a,u)}}_findAvailableConnectionWithLargestCongestionWindow(t){let r=null;for(let n=0;n<t.length;n++){let i=t[n];if(this._connectionsInUse.has(i))continue;let a=r?.congestionWindow||-1/0;i.congestionWindow>a&&(r=i)}return r}acquire(t){if(this._connectionsByRequest.has(t))throw new Z("Record already has a connection");let r=t.parsedURL.securityOrigin,n=this._connectionsByOrigin.get(r)||[],i=this._findAvailableConnectionWithLargestCongestionWindow(n);return i?(this._connectionsInUse.add(i),this._connectionsByRequest.set(t,i),i):null}acquireActiveConnectionFromRequest(t){let r=this._connectionsByRequest.get(t);if(!r)throw new Z("Could not find an active connection for request");return r}release(t){let r=this._connectionsByRequest.get(t);this._connectionsByRequest.delete(t),r&&this._connectionsInUse.delete(r)}}});var HJ,_l,rv=g(()=>{d();HJ={DEVTOOLS_RTT_ADJUSTMENT_FACTOR:3.75,DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR:.9,mobileSlow4G:{rttMs:150,throughputKbps:1638.4,requestLatencyMs:562.5,downloadThroughputKbps:1474.5600000000002,uploadThroughputKbps:675,cpuSlowdownMultiplier:4},mobileRegular3G:{rttMs:300,throughputKbps:700,requestLatencyMs:1125,downloadThroughputKbps:630,uploadThroughputKbps:630,cpuSlowdownMultiplier:4},desktopDense4G:{rttMs:40,throughputKbps:10240,cpuSlowdownMultiplier:1,requestLatencyMs:0,downloadThroughputKbps:0,uploadThroughputKbps:0}},_l={throttling:HJ}});var bs,nv=g(()=>{d();bs=class e{static{s(this,"DNSCache")}static rttMultiplier=2;_rtt;_resolvedDomainNames;constructor({rtt:t}){this._rtt=t,this._resolvedDomainNames=new Map}getTimeUntilResolution(t,r){let{requestedAt:n=0,shouldUpdateCache:i=!1}=r||{},a=t.parsedURL.host,o=this._resolvedDomainNames.get(a),u=this._rtt*e.rttMultiplier;if(o){let c=Math.max(o.resolvedAt-n,0);u=Math.min(c,u)}let l=n+u;return i&&this._updateCacheResolvedAtIfNeeded(t,l),u}_updateCacheResolvedAtIfNeeded(t,r){let n=t.parsedURL.host,i=this._resolvedDomainNames.get(n)||{resolvedAt:r};i.resolvedAt=Math.min(i.resolvedAt,r),this._resolvedDomainNames.set(n,i)}setResolvedAt(t,r){this._resolvedDomainNames.set(t,{resolvedAt:r})}}});var ws,iv=g(()=>{d();Or();Mn();ws=class{static{s(this,"SimulatorTimingMap")}_nodeTimings;constructor(){this._nodeTimings=new Map}getNodes(){return Array.from(this._nodeTimings.keys())}setReadyToStart(t,r){this._nodeTimings.set(t,r)}setInProgress(t,r){let n={...this.getQueued(t),startTime:r.startTime,timeElapsed:0};this._nodeTimings.set(t,t.type===Ze.types.NETWORK?{...n,timeElapsedOvershoot:0,bytesDownloaded:0}:n)}setCompleted(t,r){let n={...this.getInProgress(t),endTime:r.endTime,connectionTiming:r.connectionTiming};this._nodeTimings.set(t,n)}setCpu(t,r){let n={...this.getCpuStarted(t),timeElapsed:r.timeElapsed};this._nodeTimings.set(t,n)}setCpuEstimated(t,r){let n={...this.getCpuStarted(t),estimatedTimeElapsed:r.estimatedTimeElapsed};this._nodeTimings.set(t,n)}setNetwork(t,r){let n={...this.getNetworkStarted(t),timeElapsed:r.timeElapsed,timeElapsedOvershoot:r.timeElapsedOvershoot,bytesDownloaded:r.bytesDownloaded};this._nodeTimings.set(t,n)}setNetworkEstimated(t,r){let n={...this.getNetworkStarted( -t),estimatedTimeElapsed:r.estimatedTimeElapsed};this._nodeTimings.set(t,n)}getQueued(t){let r=this._nodeTimings.get(t);if(!r)throw new Z(`Node ${t.id} not yet queued`);return r}getCpuStarted(t){let r=this._nodeTimings.get(t);if(!r)throw new Z(`Node ${t.id} not yet queued`);if(!("startTime"in r))throw new Z(`Node ${t.id} not yet started`);if("bytesDownloaded"in r)throw new Z(`Node ${t.id} timing not valid`);return r}getNetworkStarted(t){let r=this._nodeTimings.get(t);if(!r)throw new Z(`Node ${t.id} not yet queued`);if(!("startTime"in r))throw new Z(`Node ${t.id} not yet started`);if(!("bytesDownloaded"in r))throw new Z(`Node ${t.id} timing not valid`);return r}getInProgress(t){let r=this._nodeTimings.get(t);if(!r)throw new Z(`Node ${t.id} not yet queued`);if(!("startTime"in r))throw new Z(`Node ${t.id} not yet started`);if(!("estimatedTimeElapsed"in r))throw new Z(`Node ${t.id} not yet in progress`);return r}getCompleted(t){let r=this._nodeTimings.get(t);if(!r)throw new Z(`Node ${t.id} \ -not yet queued`);if(!("startTime"in r))throw new Z(`Node ${t.id} not yet started`);if(!("estimatedTimeElapsed"in r))throw new Z(`Node ${t.id} not yet in progress`);if(!("endTime"in r))throw new Z(`Node ${t.id} not yet completed`);return r}}});var av,WJ,GJ,VJ,Vr,$J,b3,ov,w3=g(()=>{d();Or();Mn();tv();rv();nv();iv();Um();av=_l.throttling.mobileSlow4G,WJ=10,GJ=.5,VJ=1e4,Vr={NotReadyToStart:0,ReadyToStart:1,InProgress:2,Complete:3},$J={VeryHigh:0,High:.25,Medium:.5,Low:1,VeryLow:2},b3=new Map,ov=class e{static{s(this,"Simulator")}static createSimulator(t){let{throttlingMethod:r,throttling:n,precomputedLanternData:i,networkAnalysis:a}=t,o={additionalRttByOrigin:a.additionalRttByOrigin,serverResponseTimeByOrigin:a.serverResponseTimeByOrigin,observedThroughput:a.throughput};switch(i&&(o.additionalRttByOrigin=new Map(Object.entries(i.additionalRttByOrigin)),o.serverResponseTimeByOrigin=new Map(Object.entries(i.serverResponseTimeByOrigin))),r){case"provided":o.rtt=a.rtt,o.throughput=a.throughput,o.cpuSlowdownMultiplier=1,o.layoutTaskMultiplier=1;break;case"devtools":n&&(o.rtt=n.requestLatencyMs/_l.throttling.DEVTOOLS_RTT_ADJUSTMENT_FACTOR,o.throughput=n.downloadThroughputKbps*1024/_l.throttling.DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR), -o.cpuSlowdownMultiplier=1,o.layoutTaskMultiplier=1;break;case"simulate":n&&(o.rtt=n.rttMs,o.throughput=n.throughputKbps*1024,o.cpuSlowdownMultiplier=n.cpuSlowdownMultiplier);break;default:break}return new e(o)}_options;_rtt;_throughput;_maximumConcurrentRequests;_cpuSlowdownMultiplier;_layoutTaskMultiplier;_cachedNodeListByStartPosition;_nodeTimings;_numberInProgressByType;_nodes;_dns;_connectionPool;constructor(t){if(this._options=Object.assign({rtt:av.rttMs,throughput:av.throughputKbps*1024,maximumConcurrentRequests:WJ,cpuSlowdownMultiplier:av.cpuSlowdownMultiplier,layoutTaskMultiplier:GJ,additionalRttByOrigin:new Map,serverResponseTimeByOrigin:new Map},t),this._rtt=this._options.rtt,this._throughput=this._options.throughput,this._maximumConcurrentRequests=Math.max(Math.min(to.maximumSaturatedConnections(this._rtt,this._throughput),this._options.maximumConcurrentRequests),1),this._cpuSlowdownMultiplier=this._options.cpuSlowdownMultiplier,this._layoutTaskMultiplier=this._cpuSlowdownMultiplier* -this._options.layoutTaskMultiplier,this._cachedNodeListByStartPosition=[],this._nodeTimings=new ws,this._numberInProgressByType=new Map,this._nodes={},this._dns=new bs({rtt:this._rtt}),this._connectionPool=null,!Number.isFinite(this._rtt))throw new Z(`Invalid rtt ${this._rtt}`);if(!Number.isFinite(this._throughput))throw new Z(`Invalid rtt ${this._throughput}`)}get rtt(){return this._rtt}_initializeConnectionPool(t){let r=[];t.getRootNode().traverse(n=>{n.type===Ze.types.NETWORK&&r.push(n.request)}),this._connectionPool=new kl(r,this._options)}_initializeAuxiliaryData(){this._nodeTimings=new ws,this._numberInProgressByType=new Map,this._nodes={},this._cachedNodeListByStartPosition=[];for(let t of Object.values(Vr))this._nodes[t]=new Set}_numberInProgress(t){return this._numberInProgressByType.get(t)||0}_markNodeAsReadyToStart(t,r){let n=e._computeNodeStartPosition(t),i=this._cachedNodeListByStartPosition.findIndex(o=>e._computeNodeStartPosition(o)>n),a=i===-1?this._cachedNodeListByStartPosition. -length:i;this._cachedNodeListByStartPosition.splice(a,0,t),this._nodes[Vr.ReadyToStart].add(t),this._nodes[Vr.NotReadyToStart].delete(t),this._nodeTimings.setReadyToStart(t,{queuedTime:r})}_markNodeAsInProgress(t,r){let n=this._cachedNodeListByStartPosition.indexOf(t);this._cachedNodeListByStartPosition.splice(n,1),this._nodes[Vr.InProgress].add(t),this._nodes[Vr.ReadyToStart].delete(t),this._numberInProgressByType.set(t.type,this._numberInProgress(t.type)+1),this._nodeTimings.setInProgress(t,{startTime:r})}_markNodeAsComplete(t,r,n){this._nodes[Vr.Complete].add(t),this._nodes[Vr.InProgress].delete(t),this._numberInProgressByType.set(t.type,this._numberInProgress(t.type)-1),this._nodeTimings.setCompleted(t,{endTime:r,connectionTiming:n});for(let i of t.getDependents())i.getDependencies().some(o=>!this._nodes[Vr.Complete].has(o))||this._markNodeAsReadyToStart(i,r)}_acquireConnection(t){return this._connectionPool.acquire(t)}_getNodesSortedByStartPosition(){return Array.from(this._cachedNodeListByStartPosition)}_startNodeIfPossible(t,r){ -if(t.type===Ze.types.CPU){this._numberInProgress(t.type)===0&&this._markNodeAsInProgress(t,r);return}if(t.type!==Ze.types.NETWORK)throw new Z("Unsupported");!t.isConnectionless&&(this._numberInProgress(t.type)>=this._maximumConcurrentRequests||!this._acquireConnection(t.request))||this._markNodeAsInProgress(t,r)}_updateNetworkCapacity(){let t=this._numberInProgress(Ze.types.NETWORK);if(t!==0)for(let r of this._connectionPool.connectionsInUse())r.setThroughput(this._throughput/t)}_estimateTimeRemaining(t){if(t.type===Ze.types.CPU)return this._estimateCPUTimeRemaining(t);if(t.type===Ze.types.NETWORK)return this._estimateNetworkTimeRemaining(t);throw new Z("Unsupported")}_estimateCPUTimeRemaining(t){let r=this._nodeTimings.getCpuStarted(t),n=t.didPerformLayout()?this._layoutTaskMultiplier:this._cpuSlowdownMultiplier,a=Math.min(Math.round(t.duration/1e3*n),VJ)-r.timeElapsed;return this._nodeTimings.setCpuEstimated(t,{estimatedTimeElapsed:a}),a}_estimateNetworkTimeRemaining(t){let r=t.request, -n=this._nodeTimings.getNetworkStarted(t),i=0;if(t.fromDiskCache)i=8+20*((r.resourceSize||0)/1024/1024)-n.timeElapsed;else if(t.isNonNetworkProtocol)i=2+10*((r.resourceSize||0)/1024/1024)-n.timeElapsed;else{let o=this._connectionPool.acquireActiveConnectionFromRequest(r),u=this._dns.getTimeUntilResolution(r,{requestedAt:n.startTime,shouldUpdateCache:!0}),l=n.timeElapsed;i=o.simulateDownloadUntil(r.transferSize-n.bytesDownloaded,{timeAlreadyElapsed:l,dnsResolutionTime:u,maximumTimeToElapse:1/0}).timeElapsed}let a=i+n.timeElapsedOvershoot;return this._nodeTimings.setNetworkEstimated(t,{estimatedTimeElapsed:a}),a}_findNextNodeCompletionTime(){let t=1/0;for(let r of this._nodes[Vr.InProgress])t=Math.min(t,this._estimateTimeRemaining(r));return t}_updateProgressMadeInTimePeriod(t,r,n){let i=this._nodeTimings.getInProgress(t),a=i.estimatedTimeElapsed===r;if(t.type===Ze.types.CPU||t.isConnectionless){a?this._markNodeAsComplete(t,n):i.timeElapsed+=r;return}if(t.type!==Ze.types.NETWORK)throw new Z( -"Unsupported");if(!("bytesDownloaded"in i))throw new Z("Invalid timing data");let o=t.request,u=this._connectionPool.acquireActiveConnectionFromRequest(o),l=this._dns.getTimeUntilResolution(o,{requestedAt:i.startTime,shouldUpdateCache:!0}),c=u.simulateDownloadUntil(o.transferSize-i.bytesDownloaded,{dnsResolutionTime:l,timeAlreadyElapsed:i.timeElapsed,maximumTimeToElapse:r-i.timeElapsedOvershoot});u.setCongestionWindow(c.congestionWindow),u.setH2OverflowBytesDownloaded(c.extraBytesDownloaded),a?(u.setWarmed(!0),this._connectionPool.release(o),this._markNodeAsComplete(t,n,c.connectionTiming)):(i.timeElapsed+=c.timeElapsed,i.timeElapsedOvershoot+=c.timeElapsed-r,i.bytesDownloaded+=c.bytesDownloaded)}_computeFinalNodeTimings(){let t=this._nodeTimings.getNodes().map(n=>[n,this._nodeTimings.getCompleted(n)]);t.sort((n,i)=>n[1].startTime-i[1].startTime);let r=t.map(([n,i])=>[n,{startTime:i.startTime,endTime:i.endTime,duration:i.endTime-i.startTime}]);return{nodeTimings:new Map(r),completeNodeTimings:new Map( -t)}}getOptions(){return this._options}simulate(t,r){if(Ze.hasCycle(t))throw new Z("Cannot simulate graph with cycle");r=Object.assign({label:void 0},r),this._dns=new bs({rtt:this._rtt}),this._initializeConnectionPool(t),this._initializeAuxiliaryData();let n=this._nodes[Vr.NotReadyToStart],i=this._nodes[Vr.ReadyToStart],a=this._nodes[Vr.InProgress],o=t.getRootNode();o.traverse(m=>n.add(m));let u=0,l=0;for(this._markNodeAsReadyToStart(o,u);i.size||a.size;){for(let f of this._getNodesSortedByStartPosition())this._startNodeIfPossible(f,u);if(!a.size)throw new Z("Failed to start a node");this._updateNetworkCapacity();let m=this._findNextNodeCompletionTime();if(u+=m,!Number.isFinite(m)||l>1e5)throw new Z("Simulation failed, depth exceeded");l++;for(let f of a)this._updateProgressMadeInTimePeriod(f,m,u)}let{nodeTimings:c,completeNodeTimings:p}=this._computeFinalNodeTimings();return b3.set(r.label||"unlabeled",p),{timeInMs:u,nodeTimings:c}}computeWastedMsFromWastedBytes(t){let{throughput:r,observedThroughput:n}=this. -_options,i=r===0?n:r;if(i===0)return 0;let o=t*8/i*1e3;return Math.round(o/10)*10}static get allNodeTimings(){return b3}static _computeNodeStartPosition(t){return t.type==="cpu"?t.startTime:t.startTime+($J[t.request.priority]*1e3*1e3||0)}}});var gi={};x(gi,{ConnectionPool:()=>kl,Constants:()=>_l,DNSCache:()=>bs,Simulator:()=>ov,SimulatorTimingMap:()=>ws,TCPConnection:()=>to});var D3=g(()=>{d();tv();rv();nv();iv();w3();Um()});var YJ,E3=g(()=>{d();YJ={XHR:"XHR",Fetch:"Fetch",EventSource:"EventSource",Script:"Script",Stylesheet:"Stylesheet",Image:"Image",Media:"Media",Font:"Font",Document:"Document",TextTrack:"TextTrack",WebSocket:"WebSocket",Other:"Other",Manifest:"Manifest",SignedExchange:"SignedExchange",Ping:"Ping",Preflight:"Preflight",CSPViolationReport:"CSPViolationReport",Prefetch:"Prefetch"}});var Rl={};x(Rl,{NetworkRequestTypes:()=>YJ});var T3=g(()=>{d();E3()});var Il=g(()=>{d();Or();Mn();v3();D3();T3()});var x3=g(()=>{d()});var Pt={};x(Pt,{DEFAULT_COMPARATOR:()=>tZ,arrayDoesNotContainNullOrUndefined:()=>aZ,binaryIndexOf:()=>XJ,intersectOrdered:()=>QJ,lowerBound:()=>C3,mergeOrdered:()=>eZ,nearestIndexFromBeginning:()=>nZ,nearestIndexFromEnd:()=>iZ,removeElement:()=>KJ,sortRange:()=>ZJ,upperBound:()=>rZ});function uv(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function JJ(e,t,r,n,i){let a=e[i];uv(e,n,i);let o=r;for(let u=r;u<n;++u)t(e[u],a)<0&&(uv(e,o,u),++o);return uv(e,n,o),o}function lv(e,t,r,n,i,a){if(n<=r)return;let o=Math.floor(Math.random()*(n-r))+r,u=JJ(e,t,r,n,o);i<u&&lv(e,t,r,u-1,i,a),u<a&&lv(e,t,u+1,n,i,a)}function ZJ(e,t,r,n,i,a){return r===0&&n===e.length-1&&i===0&&a>=n?e.sort(t):lv(e,t,r,n,i,a),e}function S3(e,t,r,n){let i=[],a=0,o=0;for(;a<e.length&&o<t.length;){let u=r(e[a],t[o]);(n||!u)&&i.push(u<=0?e[a]:t[o]),u<=0&&a++,u>=0&&o++}if(n){for(;a<e.length;)i.push(e[a++]);for(;o<t.length;)i.push(t[o++])}return i}function C3(e,t,r,n,i){let a=n||0,o=i!==void 0?i:e.length;for(;a<o;){let u=a+o>>1;r(t,e[u])>0? -a=u+1:o=u}return o}function rZ(e,t,r,n,i){let a=n||0,o=i!==void 0?i:e.length;for(;a<o;){let u=a+o>>1;r(t,e[u])>=0?a=u+1:o=u}return o}function F3(e,t,r){let n=r==="END";if(e.length===0)return null;let i=0,a=e.length-1,o=0,u=!1,l=!1,c=0;do c=i+(a-i)/2,o=n?Math.ceil(c):Math.floor(c),u=t(e[o]),l=u===n,l?i=Math.min(a,o+(i===o?1:0)):a=Math.max(i,o+(a===o?-1:0));while(a!==i);return t(e[i])?i:null}function nZ(e,t){return F3(e,t,"BEGINNING")}function iZ(e,t){return F3(e,t,"END")}function aZ(e){return!e.includes(null)&&!e.includes(void 0)}var KJ,XJ,QJ,eZ,tZ,k3=g(()=>{d();KJ=s((e,t,r)=>{let n=e.indexOf(t);if(n===-1)return!1;if(r)return e.splice(n,1),!0;for(let i=n+1,a=e.length;i<a;++i)e[i]!==t&&(e[n++]=e[i]);return e.length=n,!0},"removeElement");s(uv,"swap");s(JJ,"partition");s(lv,"quickSortRange");s(ZJ,"sortRange");XJ=s((e,t,r)=>{let n=C3(e,t,r);return n<e.length&&r(t,e[n])===0?n:-1},"binaryIndexOf");s(S3,"mergeOrIntersect");QJ=s((e,t,r)=>S3(e,t,r,!1),"intersectOrdered"),eZ=s((e,t,r)=>S3(e,t,r, -!0),"mergeOrdered"),tZ=s((e,t)=>e<t?-1:e>t?1:0,"DEFAULT_COMPARATOR");s(C3,"lowerBound");s(rZ,"upperBound");s(F3,"nearestIndex");s(nZ,"nearestIndexFromBeginning");s(iZ,"nearestIndexFromEnd");s(aZ,"arrayDoesNotContainNullOrUndefined")});var _3=g(()=>{d()});var R3=g(()=>{d()});var I3=g(()=>{d()});var A3=g(()=>{d()});var N3=g(()=>{d()});var Ae={};x(Ae,{Multimap:()=>jm,getWithDefault:()=>dZ,inverse:()=>cZ});function dZ(e,t,r){let n=e.get(t);return n||(n=r(t),e.set(t,n)),n}var cZ,jm,M3=g(()=>{d();cZ=s(function(e){let t=new jm;for(let[r,n]of e.entries())t.set(n,r);return t},"inverse"),jm=class{static{s(this,"Multimap")}map=new Map;set(t,r){let n=this.map.get(t);n||(n=new Set,this.map.set(t,n)),n.add(r)}get(t){return this.map.get(t)||new Set}has(t){return this.map.has(t)}hasValue(t,r){let n=this.map.get(t);return n?n.has(r):!1}get size(){return this.map.size}delete(t,r){let n=this.get(t);if(!n)return!1;let i=n.delete(r);return n.size||this.map.delete(t),i}deleteAll(t){this.map.delete(t)}keysArray(){return[...this.map.keys()]}keys(){return this.map.keys()}valuesArray(){let t=[];for(let r of this.map.values())t.push(...r.values());return t}clear(){this.map.clear()}};s(dZ,"getWithDefault")});var L3=g(()=>{d()});var qm={};x(qm,{aspectRatio:()=>bZ,bytesToString:()=>hZ,clamp:()=>mZ,floor:()=>yZ,greatestCommonDivisor:()=>P3,mod:()=>fZ,toFixedIfFloating:()=>gZ,withThousandsSeparator:()=>wZ});var mZ,fZ,hZ,gZ,yZ,P3,vZ,bZ,wZ,O3=g(()=>{d();mZ=s((e,t,r)=>{let n=e;return e<t?n=t:e>r&&(n=r),n},"clamp"),fZ=s((e,t)=>(e%t+t)%t,"mod"),hZ=s(e=>{if(e<1e3)return`${e.toFixed(0)} B`;let t=e/1e3;if(t<100)return`${t.toFixed(1)} kB`;if(t<1e3)return`${t.toFixed(0)} kB`;let r=t/1e3;return r<100?`${r.toFixed(1)} MB`:`${r.toFixed(0)} MB`},"bytesToString"),gZ=s(e=>{if(!e||Number.isNaN(Number(e)))return e;let t=Number(e);return t%1?t.toFixed(3):String(t)},"toFixedIfFloating"),yZ=s((e,t=0)=>{let r=Math.pow(10,t);return Math.floor(e*r)/r},"floor"),P3=s((e,t)=>{for(e=Math.round(e),t=Math.round(t);t!==0;){let r=t;t=e%t,e=r}return e},"greatestCommonDivisor"),vZ=new Map([["8∶5","16∶10"]]),bZ=s((e,t)=>{let r=P3(e,t);r!==0&&(e/=r,t/=r);let n=`${e}∶${t}`;return vZ.get(n)||n},"aspectRatio"),wZ=s(function(e){let t=String( -e),r=/(\d+)(\d{3})/;for(;t.match(r);)t=t.replace(r,"$1 $2");return t},"withThousandsSeparator")});var B3=g(()=>{d()});var U3=g(()=>{d()});var j3=g(()=>{d()});var q3=g(()=>{d()});function Al(e,t){throw new Error(t)}var cv=g(()=>{d();s(Al,"assertNever")});var z3=g(()=>{d()});var H3=g(()=>{d()});var cr=g(()=>{d();k3();_3();R3();I3();A3();N3();M3();L3();O3();B3();U3();j3();q3();cv();z3();H3();cv()});var Ln={};x(Ln,{configToCacheKey:()=>_Z,defaults:()=>kZ});function _Z(e){return JSON.stringify(e)}var kZ,W3=g(()=>{d();kZ=s(()=>({includeRuntimeCallStats:!1,showAllEvents:!1,debugMode:!1}),"defaults");s(_Z,"configToCacheKey")});var Ds={};x(Ds,{colorIsValid:()=>IZ,isExtensionPayloadMarker:()=>G3,isExtensionPayloadTrackEntry:()=>V3,isSyntheticExtensionEntry:()=>NZ,isValidExtensionPayload:()=>AZ});function IZ(e){return RZ.includes(e)}function G3(e){return e.dataType==="marker"}function V3(e){let t="track"in e&&!!e.track;return(e.dataType==="track-entry"||e.dataType===void 0)&&t}function AZ(e){return G3(e)||V3(e)}function NZ(e){return e.cat==="devtools.extension"}var RZ,$3=g(()=>{d();RZ=["primary","primary-light","primary-dark","secondary","secondary-light","secondary-dark","tertiary","tertiary-light","tertiary-dark","error"];s(IZ,"colorIsValid");s(G3,"isExtensionPayloadMarker");s(V3,"isExtensionPayloadTrackEntry");s(AZ,"isValidExtensionPayload");s(NZ,"isSyntheticExtensionEntry")});var Y3=g(()=>{d()});var A={};x(A,{MicroSeconds:()=>LZ,MilliSeconds:()=>PZ,Seconds:()=>OZ});function LZ(e){return e}function PZ(e){return e}function OZ(e){return e}var K3=g(()=>{d();s(LZ,"MicroSeconds");s(PZ,"MilliSeconds");s(OZ,"Seconds")});var k={};x(k,{CallFrameID:()=>SX,Categories:()=>jQ,MarkerName:()=>GZ,ProcessID:()=>FX,ProfileID:()=>xX,SampleIndex:()=>CX,ThreadID:()=>kX,WorkerId:()=>_X,eventIsPageLoadEvent:()=>YZ,isAsyncPhase:()=>BZ,isFlowPhase:()=>UZ,isJSInvocationEvent:()=>UQ,isLegacyTraceEventDrawFrameBegin:()=>oX,isNestableAsyncPhase:()=>J3,isNetworkTrackEntry:()=>aQ,isProcessName:()=>UX,isProfileCall:()=>vQ,isSyntheticBasedEvent:()=>nX,isSyntheticConsoleTiming:()=>cQ,isSyntheticCpuProfile:()=>JX,isSyntheticInteractionEvent:()=>iX,isSyntheticLayoutShift:()=>yQ,isSyntheticNetworkRequestEvent:()=>dM,isSyntheticUserTiming:()=>lQ,isSyntheticWebSocketConnectionEvent:()=>mv,isThreadName:()=>BX,isTraceEventActivateLayerTree:()=>hX,isTraceEventAnimation:()=>HX,isTraceEventAsyncPhase:()=>fv,isTraceEventAuctionWorkletDoneWithProcess:()=>HZ,isTraceEventAuctionWorkletRunningInProcess:()=>zZ,isTraceEventBegin:()=>RX,isTraceEventBeginCommitCompositorFrame:()=>JZ,isTraceEventBeginFrame:()=>sX,isTraceEventBeginMainThreadFrame:()=>cX, -isTraceEventCommit:()=>pX,isTraceEventCommitLoad:()=>zX,isTraceEventComplete:()=>tM,isTraceEventCompositeLayers:()=>fX,isTraceEventConsoleTime:()=>mQ,isTraceEventDecodeImage:()=>bX,isTraceEventDecodeLazyPixelRef:()=>vX,isTraceEventDispatch:()=>AX,isTraceEventDisplayListItemListSnapshot:()=>xQ,isTraceEventDrawFrame:()=>aX,isTraceEventDrawLazyPixelRef:()=>yX,isTraceEventDroppedFrame:()=>uX,isTraceEventEnd:()=>IX,isTraceEventEventTiming:()=>pv,isTraceEventEventTimingEnd:()=>VX,isTraceEventEventTimingStart:()=>$X,isTraceEventFireAnimationFrame:()=>CQ,isTraceEventFireIdleCallback:()=>MX,isTraceEventFirstContentfulPaint:()=>aM,isTraceEventFirstPaint:()=>uM,isTraceEventFrameCommittedInBrowser:()=>qX,isTraceEventFunctionCall:()=>BQ,isTraceEventGPUTask:()=>YX,isTraceEventHandlePostMessage:()=>PX,isTraceEventInstant:()=>rM,isTraceEventInteractiveTime:()=>cM,isTraceEventInvalidateLayout:()=>TX,isTraceEventInvalidationTracking:()=>gX,isTraceEventLargestContentfulPaintCandidate:()=>oM,isTraceEventLargestImagePaintCandidate:()=>WX, -isTraceEventLargestTextPaintCandidate:()=>GX,isTraceEventLayerTreeHostImplSnapshot:()=>SQ,isTraceEventLayout:()=>EX,isTraceEventLayoutInvalidationTracking:()=>iM,isTraceEventLayoutShift:()=>nM,isTraceEventMainFrameViewport:()=>uQ,isTraceEventMarkDOMContent:()=>lM,isTraceEventMarkLoad:()=>sM,isTraceEventMarkerEvent:()=>VZ,isTraceEventNavigationStart:()=>dv,isTraceEventNavigationStartWithURL:()=>sQ,isTraceEventNeedsBeginFrameChanged:()=>dX,isTraceEventPaint:()=>bQ,isTraceEventPaintImage:()=>wQ,isTraceEventParseHTML:()=>hQ,isTraceEventPerformanceMark:()=>pQ,isTraceEventPerformanceMeasure:()=>dQ,isTraceEventPipelineReporter:()=>rX,isTraceEventPrePaint:()=>oQ,isTraceEventProfile:()=>KX,isTraceEventProfileChunk:()=>ZX,isTraceEventRasterTask:()=>mX,isTraceEventRenderFrameImplCreateChildFrame:()=>XZ,isTraceEventRendererEvent:()=>NX,isTraceEventRequestAnimationFrame:()=>FQ,isTraceEventRequestIdleCallback:()=>RQ,isTraceEventRequestMainThreadFrame:()=>lX,isTraceEventResourceChangePriority:()=>XX, -isTraceEventResourceFinish:()=>rQ,isTraceEventResourceMarkAsCached:()=>tQ,isTraceEventResourceReceiveResponse:()=>eQ,isTraceEventResourceReceivedData:()=>iQ,isTraceEventResourceSendRequest:()=>QX,isTraceEventResourceWillSendRequest:()=>nQ,isTraceEventRunTask:()=>qZ,isTraceEventSchedulePostMessage:()=>LX,isTraceEventScheduleStyleInvalidationTracking:()=>X3,isTraceEventScheduleStyleRecalculation:()=>ZZ,isTraceEventScreenshot:()=>WZ,isTraceEventScriptRundown:()=>eX,isTraceEventScriptRundownSource:()=>tX,isTraceEventScrollLayer:()=>DQ,isTraceEventSelectorStats:()=>wX,isTraceEventSetLayerId:()=>EQ,isTraceEventStyleInvalidatorInvalidationTracking:()=>eM,isTraceEventStyleRecalcInvalidationTracking:()=>Q3,isTraceEventTargetRundown:()=>QZ,isTraceEventTimeStamp:()=>fQ,isTraceEventTimerFire:()=>_Q,isTraceEventTimerInstall:()=>kQ,isTraceEventTracingSessionIdForWorker:()=>KZ,isTraceEventTracingStartedInBrowser:()=>jX,isTraceEventUpdateCounters:()=>OX,isTraceEventUpdateLayer:()=>TQ,isTraceEventUpdateLayoutTree:()=>DX, -isTraceEventV8Compile:()=>OQ,isTraceEventWebSocketCreate:()=>pM,isTraceEventWebSocketDestroy:()=>LQ,isTraceEventWebSocketInfo:()=>mM,isTraceEventWebSocketReceive:()=>AQ,isTraceEventWebSocketReceiveHandshakeResponse:()=>MQ,isTraceEventWebSocketSend:()=>IQ,isTraceEventWebSocketSendHandshakeRequest:()=>NQ,isTraceEventWebSocketTransfer:()=>fM,isWebSocketEvent:()=>PQ,isWebSocketTraceEvent:()=>hv,objectIsTraceEventCallFrame:()=>jZ});function J3(e){return e==="b"||e==="e"||e==="n"}function BZ(e){return J3(e)||e==="S"||e==="T"||e==="F"||e==="p"}function UZ(e){return e==="s"||e==="t"||e==="f"}function jZ(e){return"functionName"in e&&typeof e.functionName=="string"&&"scriptId"in e&&(typeof e.scriptId=="string"||typeof e.scriptId=="number")&&"columnNumber"in e&&typeof e.columnNumber=="number"&&"lineNumber"in e&&typeof e.lineNumber=="number"&&"url"in e&&typeof e.url=="string"}function qZ(e){return e.name==="RunTask"}function zZ(e){return e.name==="AuctionWorkletRunningInProcess"}function HZ(e){return e. -name==="AuctionWorkletDoneWithProcess"}function WZ(e){return e.name==="Screenshot"}function VZ(e){return Z3.some(t=>t(e))}function YZ(e){return $Z.some(t=>t(e))}function KZ(e){return e.name==="TracingSessionIdForWorker"}function X3(e){return e.name==="ScheduleStyleInvalidationTracking"}function Q3(e){return e.name==="StyleRecalcInvalidationTracking"}function eM(e){return e.name==="StyleInvalidatorInvalidationTracking"}function JZ(e){return e.name==="BeginCommitCompositorFrame"}function ZZ(e){return e.name==="ScheduleStyleRecalculation"}function XZ(e){return e.name==="RenderFrameImpl::createChildFrame"}function QZ(e){if(e.cat!=="disabled-by-default-devtools.target-rundown")return!1;let t=e.args?.data;return t?"frame"in t&&"frameType"in t&&"url"in t&&"isolate"in t&&"v8context"in t&&"scriptId"in t:!1}function eX(e){if(e.cat!=="disabled-by-default-devtools.v8-source-rundown")return!1;let t=e.args?.data;return t?"isolate"in t&&"executionContextId"in t&&"scriptId"in t&&"startLine"in t&&"star\ -tColumn"in t&&"endLine"in t&&"endColumn"in t&&"hash"in t&&"isModule"in t&&"hasSourceUrl"in t:!1}function tX(e){if(e.cat!=="disabled-by-default-devtools.v8-source-rundown-sources")return!1;let t=e.args?.data;return t?"isolate"in t&&"scriptId"in t&&"sourceText"in t:!1}function rX(e){return e.name==="PipelineReporter"}function nX(e){return"rawSourceEvent"in e}function iX(e){return!!("interactionId"in e&&e.args?.data&&"beginEvent"in e.args.data&&"endEvent"in e.args.data)}function aX(e){return e.name==="DrawFrame"&&e.ph==="I"}function oX(e){return e.name==="DrawFrame"&&e.ph==="b"}function sX(e){return!!(e.name==="BeginFrame"&&e.args&&"frameSeqId"in e.args)}function uX(e){return!!(e.name==="DroppedFrame"&&e.args&&"frameSeqId"in e.args)}function lX(e){return e.name==="RequestMainThreadFrame"}function cX(e){return e.name==="BeginMainThreadFrame"}function dX(e){return e.name==="NeedsBeginFrameChanged"}function pX(e){return!!(e.name==="Commit"&&e.args&&"frameSeqId"in e.args)}function mX(e){return e. -name==="RasterTask"}function fX(e){return e.name==="CompositeLayers"}function hX(e){return e.name==="ActivateLayerTree"}function gX(e){return X3(e)||Q3(e)||eM(e)||iM(e)}function yX(e){return e.name==="Draw LazyPixelRef"}function vX(e){return e.name==="Decode LazyPixelRef"}function bX(e){return e.name==="Decode Image"}function wX(e){return e.name==="SelectorStats"}function DX(e){return e.name==="UpdateLayoutTree"}function EX(e){return e.name==="Layout"}function TX(e){return e.name==="InvalidateLayout"}function xX(e){return e}function SX(e){return e}function CX(e){return e}function FX(e){return e}function kX(e){return e}function _X(e){return e}function tM(e){return e.ph==="X"}function RX(e){return e.ph==="B"}function IX(e){return e.ph==="E"}function AX(e){return e.name==="EventDispatch"}function rM(e){return e.ph==="I"}function NX(e){return rM(e)||tM(e)}function MX(e){return e.name==="FireIdleCallback"}function LX(e){return e.name==="SchedulePostMessage"}function PX(e){return e.name==="H\ -andlePostMessage"}function OX(e){return e.name==="UpdateCounters"}function BX(e){return e.name==="thread_name"}function UX(e){return e.name==="process_name"}function jX(e){return e.name==="TracingStartedInBrowser"}function qX(e){return e.name==="FrameCommittedInBrowser"}function zX(e){return e.name==="CommitLoad"}function dv(e){return e.name==="navigationStart"}function HX(e){return e.name==="Animation"&&e.cat.includes("devtools.timeline")}function nM(e){return e.name==="LayoutShift"}function iM(e){return e.name==="LayoutInvalidationTracking"}function aM(e){return e.name==="firstContentfulPaint"}function oM(e){return e.name==="largestContentfulPaint::Candidate"}function WX(e){return e.name==="LargestImagePaint::Candidate"}function GX(e){return e.name==="LargestTextPaint::Candidate"}function sM(e){return e.name==="MarkLoad"}function uM(e){return e.name==="firstPaint"}function lM(e){return e.name==="MarkDOMContent"}function cM(e){return e.name==="InteractiveTime"}function pv(e){return e. -name==="EventTiming"}function VX(e){return pv(e)&&e.ph==="e"}function $X(e){return pv(e)&&e.ph==="b"}function YX(e){return e.name==="GPUTask"}function KX(e){return e.name==="Profile"}function JX(e){return e.name==="CpuProfile"}function ZX(e){return e.name==="ProfileChunk"}function XX(e){return e.name==="ResourceChangePriority"}function QX(e){return e.name==="ResourceSendRequest"}function eQ(e){return e.name==="ResourceReceiveResponse"}function tQ(e){return e.name==="ResourceMarkAsCached"}function rQ(e){return e.name==="ResourceFinish"}function nQ(e){return e.name==="ResourceWillSendRequest"}function iQ(e){return e.name==="ResourceReceivedData"}function dM(e){return e.name==="SyntheticNetworkRequest"}function mv(e){return e.name==="SyntheticWebSocketConnectionEvent"}function aQ(e){return dM(e)||mv(e)||hv(e)}function oQ(e){return e.name==="PrePaint"}function sQ(e){return!!(dv(e)&&e.args.data&&e.args.data.documentLoaderURL!=="")}function uQ(e){return e.name==="PaintTimingVisualizer::Viewp\ -ort"}function lQ(e){if(e.cat!=="blink.user_timing")return!1;let t=e.args?.data;return t?"beginEvent"in t&&"endEvent"in t:!1}function cQ(e){if(e.cat!=="blink.console")return!1;let t=e.args?.data;return t?"beginEvent"in t&&"endEvent"in t:!1}function dQ(e){return e.cat==="blink.user_timing"&&fv(e)}function pQ(e){return e.cat==="blink.user_timing"&&(e.ph==="R"||e.ph==="I")}function mQ(e){return e.cat==="blink.console"&&fv(e)}function fQ(e){return e.ph==="I"&&e.name==="TimeStamp"}function hQ(e){return e.name==="ParseHTML"}function fv(e){return gQ.has(e.ph)}function yQ(e){return!nM(e)||!e.args.data?!1:"rawEvent"in e.args.data}function vQ(e){return"callFrame"in e}function bQ(e){return e.name==="Paint"}function wQ(e){return e.name==="PaintImage"}function DQ(e){return e.name==="ScrollLayer"}function EQ(e){return e.name==="SetLayerTreeId"}function TQ(e){return e.name==="UpdateLayer"}function xQ(e){return e.name==="cc::DisplayItemList"}function SQ(e){return e.name==="cc::LayerTreeHostImpl"}function CQ(e){ -return e.name==="FireAnimationFrame"}function FQ(e){return e.name==="RequestAnimationFrame"}function kQ(e){return e.name==="TimerInstall"}function _Q(e){return e.name==="TimerFire"}function RQ(e){return e.name==="RequestIdleCallback"}function pM(e){return e.name==="WebSocketCreate"}function mM(e){return e.name==="WebSocketSendHandshakeRequest"||e.name==="WebSocketReceiveHandshakeResponse"||e.name==="WebSocketDestroy"}function fM(e){return e.name==="WebSocketSend"||e.name==="WebSocketReceive"}function IQ(e){return e.name==="WebSocketSend"}function AQ(e){return e.name==="WebSocketReceive"}function NQ(e){return e.name==="WebSocketSendHandshakeRequest"}function MQ(e){return e.name==="WebSocketReceiveHandshakeResponse"}function LQ(e){return e.name==="WebSocketDestroy"}function hv(e){return pM(e)||mM(e)||fM(e)}function PQ(e){return hv(e)||mv(e)}function OQ(e){return e.name==="v8.compile"}function BQ(e){return e.name==="FunctionCall"}function UQ(e){switch(e.name){case"RunMicrotasks":case"Func\ -tionCall":case"EvaluateScript":case"v8.evaluateModule":case"EventDispatch":case"V8.Execute":return!0}return!!(e.name.startsWith("v8")||e.name.startsWith("V8"))}var Z3,GZ,$Z,gQ,jQ,hM=g(()=>{d();s(J3,"isNestableAsyncPhase");s(BZ,"isAsyncPhase");s(UZ,"isFlowPhase");s(jZ,"objectIsTraceEventCallFrame");s(qZ,"isTraceEventRunTask");s(zZ,"isTraceEventAuctionWorkletRunningInProcess");s(HZ,"isTraceEventAuctionWorkletDoneWithProcess");s(WZ,"isTraceEventScreenshot");Z3=[lM,sM,uM,aM,oM,dv],GZ=["MarkDOMContent","MarkLoad","firstPaint","firstContentfulPaint","largestContentfulPaint::Candidate"];s(VZ,"isTraceEventMarkerEvent");$Z=[...Z3,cM];s(YZ,"eventIsPageLoadEvent");s(KZ,"isTraceEventTracingSessionIdForWorker");s(X3,"isTraceEventScheduleStyleInvalidationTracking");s(Q3,"isTraceEventStyleRecalcInvalidationTracking");s(eM,"isTraceEventStyleInvalidatorInvalidationTracking");s(JZ,"isTraceEventBeginCommitCompositorFrame");s(ZZ,"isTraceEventScheduleStyleRecalculation");s(XZ,"isTraceEventRenderFrameImplCr\ -eateChildFrame");s(QZ,"isTraceEventTargetRundown");s(eX,"isTraceEventScriptRundown");s(tX,"isTraceEventScriptRundownSource");s(rX,"isTraceEventPipelineReporter");s(nX,"isSyntheticBasedEvent");s(iX,"isSyntheticInteractionEvent");s(aX,"isTraceEventDrawFrame");s(oX,"isLegacyTraceEventDrawFrameBegin");s(sX,"isTraceEventBeginFrame");s(uX,"isTraceEventDroppedFrame");s(lX,"isTraceEventRequestMainThreadFrame");s(cX,"isTraceEventBeginMainThreadFrame");s(dX,"isTraceEventNeedsBeginFrameChanged");s(pX,"isTraceEventCommit");s(mX,"isTraceEventRasterTask");s(fX,"isTraceEventCompositeLayers");s(hX,"isTraceEventActivateLayerTree");s(gX,"isTraceEventInvalidationTracking");s(yX,"isTraceEventDrawLazyPixelRef");s(vX,"isTraceEventDecodeLazyPixelRef");s(bX,"isTraceEventDecodeImage");s(wX,"isTraceEventSelectorStats");s(DX,"isTraceEventUpdateLayoutTree");s(EX,"isTraceEventLayout");s(TX,"isTraceEventInvalidateLayout");s(xX,"ProfileID");s(SX,"CallFrameID");s(CX,"SampleIndex");s(FX,"ProcessID");s(kX,"ThreadID");s( -_X,"WorkerId");s(tM,"isTraceEventComplete");s(RX,"isTraceEventBegin");s(IX,"isTraceEventEnd");s(AX,"isTraceEventDispatch");s(rM,"isTraceEventInstant");s(NX,"isTraceEventRendererEvent");s(MX,"isTraceEventFireIdleCallback");s(LX,"isTraceEventSchedulePostMessage");s(PX,"isTraceEventHandlePostMessage");s(OX,"isTraceEventUpdateCounters");s(BX,"isThreadName");s(UX,"isProcessName");s(jX,"isTraceEventTracingStartedInBrowser");s(qX,"isTraceEventFrameCommittedInBrowser");s(zX,"isTraceEventCommitLoad");s(dv,"isTraceEventNavigationStart");s(HX,"isTraceEventAnimation");s(nM,"isTraceEventLayoutShift");s(iM,"isTraceEventLayoutInvalidationTracking");s(aM,"isTraceEventFirstContentfulPaint");s(oM,"isTraceEventLargestContentfulPaintCandidate");s(WX,"isTraceEventLargestImagePaintCandidate");s(GX,"isTraceEventLargestTextPaintCandidate");s(sM,"isTraceEventMarkLoad");s(uM,"isTraceEventFirstPaint");s(lM,"isTraceEventMarkDOMContent");s(cM,"isTraceEventInteractiveTime");s(pv,"isTraceEventEventTiming");s(VX,"isT\ -raceEventEventTimingEnd");s($X,"isTraceEventEventTimingStart");s(YX,"isTraceEventGPUTask");s(KX,"isTraceEventProfile");s(JX,"isSyntheticCpuProfile");s(ZX,"isTraceEventProfileChunk");s(XX,"isTraceEventResourceChangePriority");s(QX,"isTraceEventResourceSendRequest");s(eQ,"isTraceEventResourceReceiveResponse");s(tQ,"isTraceEventResourceMarkAsCached");s(rQ,"isTraceEventResourceFinish");s(nQ,"isTraceEventResourceWillSendRequest");s(iQ,"isTraceEventResourceReceivedData");s(dM,"isSyntheticNetworkRequestEvent");s(mv,"isSyntheticWebSocketConnectionEvent");s(aQ,"isNetworkTrackEntry");s(oQ,"isTraceEventPrePaint");s(sQ,"isTraceEventNavigationStartWithURL");s(uQ,"isTraceEventMainFrameViewport");s(lQ,"isSyntheticUserTiming");s(cQ,"isSyntheticConsoleTiming");s(dQ,"isTraceEventPerformanceMeasure");s(pQ,"isTraceEventPerformanceMark");s(mQ,"isTraceEventConsoleTime");s(fQ,"isTraceEventTimeStamp");s(hQ,"isTraceEventParseHTML");gQ=new Set(["b","n","e","T","S","F","p"]);s(fv,"isTraceEventAsyncPhase");s(yQ,"\ -isSyntheticLayoutShift");s(vQ,"isProfileCall");s(bQ,"isTraceEventPaint");s(wQ,"isTraceEventPaintImage");s(DQ,"isTraceEventScrollLayer");s(EQ,"isTraceEventSetLayerId");s(TQ,"isTraceEventUpdateLayer");s(xQ,"isTraceEventDisplayListItemListSnapshot");s(SQ,"isTraceEventLayerTreeHostImplSnapshot");s(CQ,"isTraceEventFireAnimationFrame");s(FQ,"isTraceEventRequestAnimationFrame");s(kQ,"isTraceEventTimerInstall");s(_Q,"isTraceEventTimerFire");s(RQ,"isTraceEventRequestIdleCallback");s(pM,"isTraceEventWebSocketCreate");s(mM,"isTraceEventWebSocketInfo");s(fM,"isTraceEventWebSocketTransfer");s(IQ,"isTraceEventWebSocketSend");s(AQ,"isTraceEventWebSocketReceive");s(NQ,"isTraceEventWebSocketSendHandshakeRequest");s(MQ,"isTraceEventWebSocketReceiveHandshakeResponse");s(LQ,"isTraceEventWebSocketDestroy");s(hv,"isWebSocketTraceEvent");s(PQ,"isWebSocketEvent");s(OQ,"isTraceEventV8Compile");s(BQ,"isTraceEventFunctionCall");s(UQ,"isJSInvocationEvent");jQ={Console:"blink.console",UserTiming:"blink.user_timing", -Loading:"loading"}});var Le=g(()=>{d();W3();$3();Y3();K3();hM()});var Br={};x(Br,{SyntheticEventsManager:()=>Nl});var qQ,gM,Es,Nl,gv=g(()=>{d();qQ=[],gM=new Map,Es=null,Nl=class e{static{s(this,"SyntheticEventsManager")}#e=[];#t=[];static initAndActivate(t){let r=gM.get(t);if(r)Es=r;else{let n=new e(t);gM.set(t,n),Es=n}return Es}static getActiveManager(){if(!Es)throw new Error("Attempted to get a SyntheticEventsManager without initializing");return Es}static reset(){qQ.length=0,Es=null}static registerSyntheticBasedEvent(t){try{return e.getActiveManager().registerSyntheticBasedEvent(t)}catch{return t}}constructor(t){this.#t=t}registerSyntheticBasedEvent(t){let r=this.#t.indexOf(t.rawSourceEvent);if(r<0)throw new Error("Attempted to register a synthetic event paired to an unknown raw event.");let n=t;return this.#e[r]=n,n}syntheticEventForRawEventIndex(t){let r=this.#e.at(t);if(!r)throw new Error(`Attempted to get a synthetic event from an unknown raw event index: ${t}`);return r}getSyntheticTraceEvents(){return this.#e}getRawTraceEvents(){return this.#t}}});var me={};x(me,{boundsIncludeTimeRange:()=>JQ,eventTimingsMicroSeconds:()=>no,eventTimingsMilliSeconds:()=>WQ,eventTimingsSeconds:()=>GQ,microSecondsToMilliseconds:()=>ro,microSecondsToSeconds:()=>zm,millisecondsToMicroseconds:()=>mn,secondsToMicroseconds:()=>zQ,secondsToMilliseconds:()=>yM,timeStampForEventAdjustedByClosestNavigation:()=>HQ,timestampIsInBounds:()=>ZQ,traceWindowFromMicroSeconds:()=>KQ,traceWindowFromMilliSeconds:()=>YQ,traceWindowMilliSeconds:()=>VQ,traceWindowMillisecondsToMicroSeconds:()=>$Q});function HQ(e,t,r,n){let i=e.ts-t.min;if(e.args?.data?.navigationId){let a=r.get(e.args.data.navigationId);a&&(i=e.ts-a.ts)}else if(e.args?.data?.frame){let a=yv(e,e.args.data.frame,n);a&&(i=e.ts-a.ts)}return A.MicroSeconds(i)}function no(e){return{startTime:e.ts,endTime:A.MicroSeconds(e.ts+(e.dur||A.MicroSeconds(0))),duration:A.MicroSeconds(e.dur||0)}}function WQ(e){let t=no(e);return{startTime:ro(t.startTime),endTime:ro(t.endTime),duration:ro(t.duration)}}function GQ(e){let t=no( -e);return{startTime:zm(t.startTime),endTime:zm(t.endTime),duration:zm(t.duration)}}function VQ(e){return{min:ro(e.min),max:ro(e.max),range:ro(e.range)}}function $Q(e){return{min:mn(e.min),max:mn(e.max),range:mn(e.range)}}function YQ(e,t){return{min:mn(e),max:mn(t),range:A.MicroSeconds(mn(t)-mn(e))}}function KQ(e,t){return{min:e,max:t,range:A.MicroSeconds(t-e)}}function JQ(e){let{min:t,max:r}=e.bounds,{min:n,max:i}=e.timeRange;return t<=i&&r>=n}function ZQ(e,t){return t>=e.min&&t<=e.max}var mn,yM,zQ,ro,zm,Hm=g(()=>{d();Le();Ml();mn=s(e=>A.MicroSeconds(e*1e3),"millisecondsToMicroseconds"),yM=s(e=>A.MilliSeconds(e*1e3),"secondsToMilliseconds"),zQ=s(e=>mn(yM(e)),"secondsToMicroseconds"),ro=s(e=>A.MilliSeconds(e/1e3),"microSecondsToMilliseconds"),zm=s(e=>A.Seconds(e/1e3/1e3),"microSecondsToSeconds");s(HQ,"timeStampForEventAdjustedByClosestNavigation");s(no,"eventTimingsMicroSeconds");s(WQ,"eventTimingsMilliSeconds");s(GQ,"eventTimingsSeconds");s(VQ,"traceWindowMilliSeconds");s($Q,"traceWind\ -owMillisecondsToMicroSeconds");s(YQ,"traceWindowFromMilliSeconds");s(KQ,"traceWindowFromMicroSeconds");s(JQ,"boundsIncludeTimeRange");s(ZQ,"timestampIsInBounds")});var Pe={};x(Pe,{activeURLForFrameAtTime:()=>tee,addEventToProcessThread:()=>eee,createMatchedSortedSyntheticEvents:()=>ree,createSortedSyntheticEvents:()=>wM,eventHasCategory:()=>dee,eventTimeComparator:()=>bv,extractId:()=>vM,extractOriginFromTrace:()=>QQ,findUpdateLayoutTreeEvents:()=>uee,forEachEvent:()=>lee,frameIDForEvent:()=>oee,getNavigationForTraceEvent:()=>yv,getZeroIndexedLineAndColumnForEvent:()=>nee,getZeroIndexedStackTraceForEvent:()=>iee,isTopLevelEvent:()=>DM,makeProfileCall:()=>Wm,matchEvents:()=>bM,mergeEventsInOrder:()=>Dv,nodeIdForInvalidationEvent:()=>pee,sortTraceEventsInPlace:()=>wv});function XQ(e){return e.args?.data?.stackTrace?e.args.data.stackTrace:k.isTraceEventUpdateLayoutTree(e)&&e.args.beginData?.stackTrace||null}function QQ(e){let t=new URL(e);return t?t.host.startsWith("www.")?t.host.slice(4):t.host:null}function eee(e,t){let{tid:r,pid:n}=e,i=t.get(n);i||(i=new Map);let a=i.get(r);a||(a=[]),a.push(e),i.set(e.tid,a),t.set(e.pid,i)}function bv(e,t){let r=e. -ts,n=t.ts;if(r<n)return-1;if(r>n)return 1;let i=e.dur??0,a=t.dur??0,o=r+i,u=n+a;return o>u?-1:o<u?1:0}function wv(e){e.sort(bv)}function Dv(e,t){let r=[],n=0,i=0;for(;n<e.length&&i<t.length;){let a=e[n],o=t[i],u=bv(a,o);u<=0&&(r.push(a),n++),u===1&&(r.push(o),i++)}for(;n<e.length;)r.push(e[n++]);for(;i<t.length;)r.push(t[i++]);return r}function yv(e,t,r){let n=r.get(t);if(!n||t==="")return null;let i=Pt.nearestIndexFromEnd(n,a=>a.ts<=e.ts);return i===null?null:n[i]}function vM(e){return e.id??e.id2?.global??e.id2?.local}function tee(e,t,r){let n=r.get(e);if(!n)return null;for(let i of n.values())for(let a of i)if(!(a.window.min>t||a.window.max<t))return a.frame.url;return null}function Wm(e,t,r,n,i,a){return{cat:"",name:"ProfileCall",nodeId:e.id,args:{},ph:"X",pid:i,tid:a,ts:n,dur:A.MicroSeconds(0),callFrame:e.callFrame,sampleIndex:r,profileId:t}}function bM(e){let t=new Map;for(let r of e){let n=vv(r);if(n===void 0)continue;let i=Ae.getWithDefault(t,n,()=>({begin:null,end:null,instant:[]})), -a=r.ph==="b",o=r.ph==="e",u=r.ph==="n";a?i.begin=r:o?i.end=r:u&&(i.instant||(i.instant=[]),i.instant.push(r))}return t}function vv(e){let t=vM(e);return t&&`${e.cat}:${t}:${e.name}`}function wM(e,t){let r=[];for(let[n,i]of e.entries()){let c=function(f){let h=f.instantEvents?f.instantEvents.some(b=>n===vv(b)):!1,y=f.endEvent?n===vv(f.endEvent):!1;return!!n&&(h||y)};s(c,"eventsArePairable");let a=i.begin,o=i.end,u=i.instant;if(!a||!(o||u))continue;let l={beginEvent:a,endEvent:o,instantEvents:u};if(!c(l))continue;let p=o||a,m=Nl.registerSyntheticBasedEvent({rawSourceEvent:a,cat:p.cat,ph:p.ph,pid:p.pid,tid:p.tid,id:n,name:a.name,dur:A.MicroSeconds(p.ts-a.ts),ts:a.ts,args:{data:l}});m.dur<0||(t?.(m),r.push(m))}return r.sort((n,i)=>n.ts-i.ts)}function ree(e,t){let r=bM(e);return wM(r,t)}function nee(e){let t=aee(e),{lineNumber:r,columnNumber:n}=t;switch(e.name){case"FunctionCall":case"EvaluateScript":case"v8.compile":case"v8.produceCache":return{lineNumber:typeof r=="number"?r-1:void 0,columnNumber:typeof n== -"number"?n-1:void 0};default:return t}}function iee(e){let t=XQ(e);return t?t.map(r=>{let n={...r};switch(e.name){case"ScheduleStyleRecalculation":case"InvalidateLayout":case"UpdateLayoutTree":n.lineNumber=r.lineNumber&&r.lineNumber-1,n.columnNumber=r.columnNumber&&r.columnNumber-1}return n}):null}function aee(e){if(!e.args?.data)return{lineNumber:void 0,columnNumber:void 0};let t,r;return"lineNumber"in e.args.data&&typeof e.args.data.lineNumber=="number"&&(t=e.args.data.lineNumber),"columnNumber"in e.args.data&&typeof e.args.data.columnNumber=="number"&&(r=e.args.data.columnNumber),{lineNumber:t,columnNumber:r}}function oee(e){return e.args&&"beginData"in e.args&&typeof e.args.beginData=="object"&&e.args.beginData!==null&&"frame"in e.args.beginData&&typeof e.args.beginData.frame=="string"?e.args.beginData.frame:e.args?.data?.frame?e.args.data.frame:null}function DM(e){return e.name==="JSRoot"&&e.cat==="toplevel"?!0:e.cat.includes(see)&&e.name==="RunTask"}function EM(e,t){let r=Pt.upperBound( -e,t,(n,i)=>n-i.ts)-1;for(;r>0&&!DM(e[r]);)r--;return Math.max(r,0)}function uee(e,t,r){let n=[],i=EM(e,t);for(let a=i;a<e.length;a++){let o=e[a];k.isTraceEventUpdateLayoutTree(o)&&(o.ts>=(r||1/0)||n.push(o))}return n}function lee(e,t){let r=t.startTime||A.MicroSeconds(0),n=t.endTime||A.MicroSeconds(1/0),i=t.ignoreAsyncEvents!==!1,a=[],o=EM(e,r);for(let u=o;u<e.length;u++){let l=e[u],c=no(l);if(c.endTime<r)continue;if(c.startTime>n)break;if(i&&k.isAsyncPhase(l.ph)||k.isFlowPhase(l.ph))continue;let m=a.at(-1),f=m?no(m).endTime:null;for(;m&&f&&f<=c.startTime;)a.pop(),t.onEndEvent(m),m=a.at(-1),f=m?no(m).endTime:null;t.eventFilter&&!t.eventFilter(l)||(c.duration?(t.onStartEvent(l),a.push(l)):t.onInstantEvent&&t.onInstantEvent(l))}for(;a.length;){let u=a.pop();u&&t.onEndEvent(u)}}function dee(e,t){let r=cee.get(e.cat);return r||(r=new Set(e.cat.split(",")||[])),r.has(t)}function pee(e){return e.args.data.nodeId??null}var see,cee,Ml=g(()=>{d();cr();Le();gv();Hm();s(XQ,"stackTraceForEvent");s( -QQ,"extractOriginFromTrace");s(eee,"addEventToProcessThread");s(bv,"eventTimeComparator");s(wv,"sortTraceEventsInPlace");s(Dv,"mergeEventsInOrder");s(yv,"getNavigationForTraceEvent");s(vM,"extractId");s(tee,"activeURLForFrameAtTime");s(Wm,"makeProfileCall");s(bM,"matchEvents");s(vv,"getSyntheticId");s(wM,"createSortedSyntheticEvents");s(ree,"createMatchedSortedSyntheticEvents");s(nee,"getZeroIndexedLineAndColumnForEvent");s(iee,"getZeroIndexedStackTraceForEvent");s(aee,"getRawLineAndColumnNumbersForEvent");s(oee,"frameIDForEvent");see="disabled-by-default-devtools.timeline";s(DM,"isTopLevelEvent");s(EM,"topLevelEventIndexEndingAfter");s(uee,"findUpdateLayoutTreeEvents");s(lee,"forEachEvent");cee=new Map;s(dee,"eventHasCategory");s(pee,"nodeIdForInvalidationEvent")});var ea={};x(ea,{canBuildTreesFromEvents:()=>Sv,makeEmptyTraceEntryNode:()=>SM,makeEmptyTraceEntryTree:()=>xM,makeTraceEntryNodeId:()=>TM,treify:()=>Tv,walkEntireTree:()=>fee,walkTreeFromEntry:()=>mee});function Tv(e,t){let r=new Map,n=[];Ev=-1;let i=xM();for(let a=0;a<e.length;a++){let o=e[a];if(t&&!t.filter.has(o.name))continue;let u=o.dur||0,l=TM(),c=SM(o,l);if(n.length===0){i.roots.add(c),c.selfTime=A.MicroSeconds(u),n.push(c),i.maxDepth=Math.max(i.maxDepth,n.length),r.set(o,c);continue}let p=n.at(-1);if(p===void 0)throw new Error("Impossible: no parent node found in the stack");let m=p.entry,f=o.ts,h=m.ts,y=m.dur||0,b=f+u,w=h+y;if(f<h)throw new Error("Impossible: current event starts before the parent event");if(f>=w){n.pop(),a--,Ev--;continue}b>w||(c.depth=n.length,c.parent=p,p.children.push(c),c.selfTime=A.MicroSeconds(u),p.selfTime!==void 0&&(p.selfTime=A.MicroSeconds(p.selfTime-(o.dur||0))),n.push(c),i.maxDepth=Math.max(i.maxDepth,n.length),r.set(o,c))}return{tree:i,entryToNode:r}} -function mee(e,t,r,n){let i=e.get(t);i&&xv(e,i,r,n)}function fee(e,t,r,n,i,a){for(let o of t.roots)xv(e,o,r,n,i,a)}function xv(e,t,r,n,i,a){if(!(i&&!hee(t,i))&&!(typeof a<"u"&&A.MicroSeconds(t.entry.ts+A.MicroSeconds(t.entry.dur||0))<a)){r(t.entry);for(let o of t.children)xv(e,o,r,n,i,a);n(t.entry)}}function hee(e,t){let r=e.entry.ts,n=e.entry.ts+(e.entry.dur||0);return r>=t.min&&r<t.max||n>t.min&&n<=t.max||r<=t.min&&n>=t.max}function Sv(e){let t=[];for(let r of e){let n=r.ts,i=r.ts+(r.dur||0),a=t.at(-1);if(a===void 0){t.push(r);continue}let o=a.ts+(a.dur||0);for(;t.length&&n>=o&&(t.pop(),a=t.at(-1),a!==void 0);)o=a.ts+(a.dur||0);if(t.length&&i>o)return!1;t.push(r)}return!0}var Ev,TM,xM,SM,Cv=g(()=>{d();Le();Ev=0,TM=s(()=>++Ev,"makeTraceEntryNodeId"),xM=s(()=>({roots:new Set,maxDepth:0}),"makeEmptyTraceEntryTree"),SM=s((e,t)=>({entry:e,id:t,parent:null,children:[],depth:0}),"makeEmptyTraceEntryNode");s(Tv,"treify");s(mee,"walkTreeFromEntry");s(fee,"walkEntireTree");s(xv,"walkTreeByNode"); -s(hee,"treeNodeIsInWindow");s(Sv,"canBuildTreesFromEvents")});var Gm={};x(Gm,{buildTrackDataFromExtensionEntries:()=>gee});function gee(e,t,r){let n=new Map;for(let i of e){let a=i.args.trackGroup||`track-name-${i.args.track}`,o=Ae.getWithDefault(n,a,()=>({name:i.args.trackGroup||i.args.track,isTrackGroup:!!i.args.trackGroup,entriesByTrack:{[i.args.track]:[]}}));o.entriesByTrack[i.args.track]||(o.entriesByTrack[i.args.track]=[]),o.entriesByTrack[i.args.track].push(i)}for(let i of n.values()){for(let a of Object.values(i.entriesByTrack))if(wv(a),Sv(a))for(let[o,u]of Tv(a).entryToNode)r.set(o,u);t.push(i)}return{extensionTrackData:t,entryToNode:r}}var CM=g(()=>{d();cr();Ml();Cv();s(gee,"buildTrackDataFromExtensionEntries")});var Vm={};x(Vm,{isSyntheticNetworkRequestEventRenderBlocking:()=>yee});function yee(e){return e.args.data.renderBlocking!=="non_blocking"}var FM=g(()=>{d();s(yee,"isSyntheticNetworkRequestEventRenderBlocking")});var $m={};x($m,{SamplesIntegrator:()=>Fv});var Fv,kM=g(()=>{d();Le();Hm();Ml();Fv=class e{static{s(this,"SamplesIntegrator")}#e=[];#t=[];#n;#r;#i=[];#o=!1;#a;#s=new Map;#u;#l;jsSampleEvents=[];constructor(t,r,n,i,a){this.#a=t,this.#r=i,this.#n=n,this.#u=a||Ln.defaults(),this.#l=r}buildProfileCalls(t){let r=Dv(t,this.callsFromProfileSamples()),n=[];for(let i=0;i<r.length;i++){let a=r[i];if(a.ph==="I")continue;if(n.length===0){if(k.isProfileCall(a)){this.#h(a);continue}n.push(a),this.#c(a);continue}let o=n.at(-1);if(o===void 0)continue;let u=a.ts,l=o.ts,c=o.dur||0,p=l+c;if(u>=p){this.#p(o),n.pop(),i--;continue}if(k.isProfileCall(a)){this.#h(a,o);continue}this.#c(a),n.push(a)}for(;n.length;){let i=n.pop();i&&this.#p(i)}return this.#e}#c(t){(t.name==="RunMicrotasks"||t.name==="RunTask")&&(this.#i=[],this.#f(0,t.ts),this.#o=!1),this.#o&&(this.#f(this.#i.pop()||0,t.ts),this.#o=!1),this.#d(t),this.#i.push(this.#t.length)}#h(t,r){if(r&&k.isJSInvocationEvent(r)||this.#o)this.#d(t);else if(k.isProfileCall( -t)&&this.#t.length===0){this.#o=!0;let n=this.#t.length;this.#d(t),this.#i.push(n)}}#p(t){let r=A.MicroSeconds(t.ts+(t.dur||0));this.#f(this.#i.pop()||0,r)}callsFromProfileSamples(){let t=this.#a.samples,r=this.#a.timestamps,n=this.#u.debugMode;if(!t)return[];let i=[],a;for(let o=0;o<t.length;o++){let u=this.#a.nodeByIndex(o),l=mn(A.MilliSeconds(r[o]));if(!u)continue;let c=Wm(u,this.#l,o,l,this.#n,this.#r);if(i.push(c),n&&this.jsSampleEvents.push(this.#y(c,l)),u.id===this.#a.gcNode?.id&&a){this.#s.set(c,a);continue}a=u}return i}#m(t){let r=this.#a.nodeById(t.nodeId),n=r?.id===this.#a.gcNode?.id;if(n&&(r=this.#s.get(t)||null),!r)return[];let i=new Array(r.depth+1+Number(n)),a=i.length-1;for(n&&(i[a--]=t);r;)i[a--]=Wm(r,t.profileId,t.sampleIndex,t.ts,this.#n,this.#r),r=r.parent;return i}#d(t){let r=k.isProfileCall(t)?this.#m(t):this.#t;e.filterStackFrames(r,this.#u);let n=t.ts+(t.dur||0),i=Math.min(r.length,this.#t.length),a;for(a=this.#i.at(-1)||0;a<i;++a){let o=r[a].callFrame,u=this.#t[a]. -callFrame;if(!e.framesAreEqual(o,u))break;this.#t[a].dur=A.MicroSeconds(Math.max(this.#t[a].dur||0,n-this.#t[a].ts))}for(this.#f(a,t.ts);a<r.length;++a){let o=r[a];o.nodeId===this.#a.programNode?.id||o.nodeId===this.#a.root?.id||o.nodeId===this.#a.idleNode?.id||o.nodeId===this.#a.gcNode?.id||(this.#t.push(o),this.#e.push(o))}}#f(t,r){if(this.#i.length){let n=this.#i.at(-1);n&&t<n&&(console.error(`Child stack is shallower (${t}) than the parent stack (${n}) at ${r}`),t=n)}this.#t.length<t&&(console.error(`Trying to truncate higher than the current stack size at ${r}`),t=this.#t.length);for(let n=0;n<this.#t.length;++n)this.#t[n].dur=A.MicroSeconds(Math.max(r-this.#t[n].ts,0));this.#t.length=t}#y(t,r){return{name:"JSSample",cat:"devtools.timeline",args:{data:{stackTrace:this.#m(t).map(i=>i.callFrame)}},ph:"I",ts:r,dur:A.MicroSeconds(0),pid:this.#n,tid:this.#r}}static framesAreEqual(t,r){return t.scriptId===r.scriptId&&t.functionName===r.functionName&&t.lineNumber===r.lineNumber}static showNativeName(t,r){ -return r&&!!e.nativeGroup(t)}static nativeGroup(t){return t.startsWith("Parse")?"Parse":t.startsWith("Compile")||t.startsWith("Recompile")?"Compile":null}static isNativeRuntimeFrame(t){return t.url==="native V8Runtime"}static filterStackFrames(t,r){if(r.showAllEvents)return;let i=null,a=0;for(let o=0;o<t.length;++o){let u=t[o].callFrame,l=e.isNativeRuntimeFrame(u);if(l&&!e.showNativeName(u.functionName,r.includeRuntimeCallStats))continue;let c=l?e.nativeGroup(u.functionName):null;i&&i===c||(i=c,t[a++]=t[o])}t.length=a}}});var vt=g(()=>{d();CM();FM();kM();gv();Hm();Ml();Cv()});var Rv={};x(Rv,{data:()=>Dee,finalize:()=>wee,handleEvent:()=>bee,reset:()=>vee});function vee(){kv.length=0,_v.length=0}function bee(e){if(k.isTraceEventAnimation(e)){kv.push(e);return}}async function wee(){let e=Pe.createMatchedSortedSyntheticEvents(kv);_v.push(...e),_M=3}function Dee(){if(_M!==3)throw new Error("Animation handler is not finalized");return{animations:_v}}var kv,_v,_M,RM=g(()=>{d();vt();Le();kv=[],_v=[],_M=1;s(vee,"reset");s(bee,"handleEvent");s(wee,"finalize");s(Dee,"data")});var Pv={};x(Pv,{data:()=>Ll,finalize:()=>See,handleEvent:()=>Tee,reset:()=>Eee});function Eee(){Iv.clear(),Av.clear(),Nv.clear(),Mv.clear(),Lv.clear()}function Tee(e){if(k.isTraceEventAuctionWorkletRunningInProcess(e)){Iv.set(e.args.data.pid,e);return}if(k.isTraceEventAuctionWorkletDoneWithProcess(e)){Av.set(e.args.data.pid,e);return}if(k.isThreadName(e)){if(e.args.name==="auction_worklet.CrUtilityMain"){Mv.set(e.pid,e);return}e.args.name==="AuctionV8HelperThread"&&Lv.set(e.pid,e)}}function xee(e){switch(e){case"seller":return"seller";case"bidder":return"bidder";default:return"unknown"}}function IM(e){return Br.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:e,name:"SyntheticAuctionWorkletEvent",s:"t",cat:e.cat,tid:e.tid,ts:e.ts,ph:"I",pid:e.args.data.pid,host:e.args.data.host,target:e.args.data.target,type:xee(e.args.data.type)})}async function See(){for(let[e,t]of Mv){let r=Lv.get(e);if(!r)continue;let n=Iv.get(e),i=Av.get(e),a=null;n?(a={...IM(n),args:{data:{runningInProcessEvent:n, -utilityThread:t,v8HelperThread:r}}},i&&(a.args.data.doneWithProcessEvent=i)):i&&(a={...IM(i),args:{data:{doneWithProcessEvent:i,utilityThread:t,v8HelperThread:r}}},n&&(a.args.data.runningInProcessEvent=n)),a!==null&&Nv.set(e,a)}}function Ll(){return{worklets:new Map(Nv)}}var Iv,Av,Nv,Mv,Lv,Ym=g(()=>{d();vt();Le();Iv=new Map,Av=new Map,Nv=new Map,Mv=new Map,Lv=new Map;s(Eee,"reset");s(Tee,"handleEvent");s(xee,"workletType");s(IM,"makeSyntheticEventBase");s(See,"finalize");s(Ll,"data")});var jv={};x(jv,{EnhancedTracesVersion:()=>Cee,data:()=>Iee,finalize:()=>Ree,handleEvent:()=>_ee,initialize:()=>Fee,reset:()=>kee});function Zm(e,t){return t+"@"+e}function Fee(){if(io!==1)throw new Error("Enhanced Traces Handler was not reset");io=2}function kee(){Ov.length=0,Bv.clear(),Km.clear(),Ts.clear(),Uv.clear(),Jm.length=0,xs.length=0,Pl.length=0,io=1}function _ee(e){if(io!==2)throw new Error("Enhanced Traces Handler is not initialized while handling event");if(k.isTraceEventTargetRundown(e)){let t=e.args?.data;Bv.set(Zm(t.isolate,t.scriptId),t.v8context),Jm.find(r=>r.targetId===t.frame)||Jm.push({targetId:t.frame,type:t.frameType,isolate:t.isolate,pid:e.pid,url:t.url}),xs.find(r=>r.v8Context===t.v8context)||xs.push({id:-1,origin:t.origin,v8Context:t.v8context,auxData:{frameId:t.frame,isDefault:t.isDefault,type:t.contextType},isolate:t.isolate})}else if(k.isTraceEventScriptRundown(e)){Ov.push(e);let t=e.args.data;Pl.find(r=>r.scriptId===t.scriptId&&r.isolate===t.isolate)||Pl.push( -{scriptId:t.scriptId,isolate:t.isolate,executionContextId:t.executionContextId,startLine:t.startLine,startColumn:t.startColumn,endLine:t.endLine,endColumn:t.endColumn,hash:t.hash,isModule:t.isModule,url:t.url,hasSourceUrl:t.hasSourceUrl,sourceMapUrl:t.sourceMapUrl})}else if(k.isTraceEventScriptRundownSource(e)){let t=e.args.data,r=Zm(t.isolate,t.scriptId);if("splitIndex"in t&&"splitCount"in t){Ts.has(r)||Ts.set(r,new Array(t.splitCount).fill(""));let n=Ts.get(r);n&&t.sourceText&&(n[t.splitIndex]=t.sourceText)}else t.sourceText&&Km.set(r,t.sourceText),t.length&&Uv.set(r,t.length)}}async function Ree(){if(io!==2)throw new Error("Enhanced Traces Handler is not initialized while being finalized");let e=new Map;Ov.forEach(t=>{let r=t.args.data,n=Bv.get(Zm(r.isolate,r.scriptId));n&&e.set(n,r.executionContextId)}),xs.forEach(t=>{if(t.v8Context){let r=e.get(t.v8Context);r&&(t.id=r)}}),Pl.forEach(t=>{let r=Zm(t.isolate,t.scriptId);if(Km.has(r))t.sourceText=Km.get(r),t.length=Uv.get(r);else if(Ts. -has(r)){let n=Ts.get(r);n&&(t.sourceText=n.join(""),t.length=t.sourceText.length)}t.auxData=xs.find(n=>n.id===t.executionContextId&&n.isolate===t.isolate)?.auxData}),io=3}function Iee(){if(io!==3)throw new Error("Enhanced Traces Handler is not finalized");return{targets:Jm,executionContexts:xs,scripts:Pl}}var Cee,io,Ov,Bv,Km,Ts,Uv,Jm,xs,Pl,AM=g(()=>{d();Le();Cee=1,io=1,Ov=[],Bv=new Map,Km=new Map,Ts=new Map,Uv=new Map,Jm=[],xs=[],Pl=[];s(Zm,"getScriptIsolateId");s(Fee,"initialize");s(kee,"reset");s(_ee,"handleEvent");s(Ree,"finalize");s(Iee,"data")});var Gv={};x(Gv,{data:()=>Qm,finalize:()=>Pee,handleEvent:()=>Lee,reset:()=>Aee});function Aee(){Xm.length=0,qv.length=0,zv.length=0,Hv.length=0,Wv.length=0,Ol=2}function Lee(e){if(Ol!==2)throw new Error("UserTimings handler is not initialized");if(![...Nee,...Mee].includes(e.name)){if(k.isTraceEventPerformanceMeasure(e)){qv.push(e);return}k.isTraceEventPerformanceMark(e)&&zv.push(e),k.isTraceEventConsoleTime(e)&&Hv.push(e),k.isTraceEventTimeStamp(e)&&Wv.push(e)}}async function Pee(){if(Ol!==2)throw new Error("UserTimings handler is not initialized");let e=[...qv,...Hv];Xm=Pe.createMatchedSortedSyntheticEvents(e),Ol=3}function Qm(){if(Ol!==3)throw new Error("UserTimings handler is not finalized");return{performanceMeasures:Xm.filter(e=>e.cat==="blink.user_timing"),consoleTimings:Xm.filter(e=>e.cat==="blink.console"),performanceMarks:[...zv],timestampEvents:[...Wv]}}var Xm,qv,zv,Hv,Wv,Ol,Nee,Mee,Vv=g(()=>{d();vt();Le();Xm=[],qv=[],zv=[],Hv=[],Wv=[],Ol=1;s(Aee,"reset");Nee=["workerStart", -"redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd"],Mee=["navigationStart","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","commitNavigationEnd","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"];s(Lee,"handleEvent");s(Pee,"finalize");s(Qm,"data")});var Zv={};x(Zv,{data:()=>qee,deps:()=>zee,extensionDataInTiming:()=>MM,extractExtensionEntries:()=>NM,finalize:()=>Uee,handleEvent:()=>Oee,reset:()=>Bee});function Oee(e){}function Bee(){ef=2,$v.length=0,Yv.length=0,Kv.length=0,Jv.clear()}async function Uee(){if(ef!==2)throw new Error("ExtensionTraceData handler is not initialized");jee(),ef=3}function jee(){let e=Qm().performanceMeasures,t=Qm().performanceMarks,r=Pe.mergeEventsInOrder(e,t);NM(r),Gm.buildTrackDataFromExtensionEntries($v,Yv,Jv)}function NM(e){for(let t of e){let r=MM(t);if(!r)continue;let n={name:t.name,ph:"X",pid:k.ProcessID(0),tid:k.ThreadID(0),ts:t.ts,dur:t.dur,cat:"devtools.extension",args:r};if(Ds.isExtensionPayloadMarker(r)){Kv.push(n);continue}if(Ds.isExtensionPayloadTrackEntry(r)){$v.push(n);continue}}}function MM(e){let t=k.isTraceEventPerformanceMark(e)?e.args.data?.detail:e.args.data.beginEvent.args.detail;if(!t)return null;try{let r=JSON.parse(t);return!("devtools"in r)||!Ds.isValidExtensionPayload(r.devtools)? -null:r.devtools}catch{return null}}function qee(){if(ef!==3)throw new Error("ExtensionTraceData handler is not finalized");return{entryToNode:Jv,extensionTrackData:[...Yv],extensionMarkers:[...Kv]}}function zee(){return["UserTimings"]}var $v,Yv,Kv,Jv,ef,LM=g(()=>{d();vt();Le();Vv();$v=[],Yv=[],Kv=[],Jv=new Map,ef=1;s(Oee,"handleEvent");s(Bee,"reset");s(Uee,"finalize");s(jee,"createExtensionFlameChartEntries");s(NM,"extractExtensionEntries");s(MM,"extensionDataInTiming");s(qee,"data");s(zee,"deps")});var a0={};x(a0,{data:()=>Ft,finalize:()=>Yee,handleEvent:()=>$ee,initialize:()=>Vee,reset:()=>Gee});function Gee(){Ss.clear(),ql.clear(),n0.clear(),sf.length=0,e0=k.ProcessID(-1),t0=k.ThreadID(-1),r0=k.ProcessID(-1),tf=k.ThreadID(-1),rf=null,nf.clear(),i0.clear(),jl.clear(),Qv.clear(),Dr.min=A.MicroSeconds(Number.POSITIVE_INFINITY),Dr.max=A.MicroSeconds(Number.NEGATIVE_INFINITY),Dr.range=A.MicroSeconds(Number.POSITIVE_INFINITY),af=A.MicroSeconds(-1),of=!0,ao=1}function Vee(){if(ao!==1)throw new Error("Meta Handler was not reset");ao=2}function Xv(e,t){Ae.getWithDefault(Qv,t.processId,()=>new Map).set(t.frame,t);let n=Ae.getWithDefault(jl,t.frame,()=>new Map),i=Ae.getWithDefault(n,t.processId,()=>[]),a=i.at(-1);a&&a.frame.url===t.url||i.push({frame:t,window:{min:e.ts,max:A.MicroSeconds(0),range:A.MicroSeconds(0)}})}function $ee(e){if(ao!==2)throw new Error("Meta Handler is not initialized");if(of&&Wee.has(e.name)&&(of=!1),k.isProcessName(e)&&n0.set(e.pid,e),e.ts!==0&&!e.name.endsWith(":\ -:UMA")&&Hee.has(e.ph)){Dr.min=A.MicroSeconds(Math.min(e.ts,Dr.min));let t=e.dur||A.MicroSeconds(0);Dr.max=A.MicroSeconds(Math.max(e.ts+t,Dr.max))}if(k.isProcessName(e)&&(e.args.name==="Browser"||e.args.name==="HeadlessBrowser")){e0=e.pid;return}if(k.isProcessName(e)&&(e.args.name==="Gpu"||e.args.name==="GPU Process")){r0=e.pid;return}if(k.isThreadName(e)&&e.args.name==="CrGpuMain"){tf=e.tid;return}if(k.isThreadName(e)&&e.args.name==="CrBrowserMain"&&(t0=e.tid),k.isTraceEventMainFrameViewport(e)&&rf===null){let t=e.args.data.viewport_rect,r=t[0],n=t[1],i=t[2],a=t[5];rf=new DOMRect(r,n,i,a)}if(k.isTraceEventTracingStartedInBrowser(e)){if(af=e.ts,!e.args.data)throw new Error("No frames found in trace data");for(let t of e.args.data.frames??[]){Xv(e,t),t.parent||nf.add(t.processId);let r="isInPrimaryMainFrame"in t,n="isOutermostMainFrame"in t;r&&n?t.isInPrimaryMainFrame&&t.isOutermostMainFrame&&(Bl=t.frame,Ul=t.url):n?t.isOutermostMainFrame&&(Bl=t.frame,Ul=t.url):!t.parent&&t.url&&(Bl=t.frame, -Ul=t.url)}return}if(k.isTraceEventFrameCommittedInBrowser(e)){let t=e.args.data;if(!t||(Xv(e,t),t.parent))return;nf.add(t.processId);return}if(k.isTraceEventCommitLoad(e)){let t=e.args.data;if(!t)return;let{frame:r,name:n,url:i}=t;Xv(e,{processId:e.pid,frame:r,name:n,url:i});return}if(k.isThreadName(e)){Ae.getWithDefault(i0,e.pid,()=>new Map).set(e.tid,e);return}if(k.isTraceEventNavigationStartWithURL(e)&&e.args.data){let t=e.args.data.navigationId;if(ql.has(t))return;ql.set(t,e);let r=e.args.frame,n=Ss.get(r)||[];n.push(e),Ss.set(r,n),r===Bl&&sf.push(e);return}}async function Yee(){if(ao!==2)throw new Error("Handler is not initialized");af>=0&&(Dr.min=af),Dr.range=A.MicroSeconds(Dr.max-Dr.min);for(let[,r]of jl){let n=[...r.values()].flat();for(let i=0;i<n.length;i++){let a=n[i],o=n[i+1];o?(a.window.max=A.MicroSeconds(o.window.min-1),a.window.range=A.MicroSeconds(a.window.max-a.window.min)):(a.window.max=A.MicroSeconds(Dr.max),a.window.range=A.MicroSeconds(Dr.max-a.window.min))}}for(let[ -r,n]of Ss)if(!jl.has(r)){Ss.delete(r);for(let i of n)i.args.data&&ql.delete(i.args.data.navigationId)}let e=sf.at(0),t=me.secondsToMicroseconds(A.Seconds(.5));if(e){let r=e.ts-Dr.min<t;e.args.data?.isOutermostMainFrame&&e.args.data?.documentLoaderURL&&r&&(Ul=e.args.data.documentLoaderURL)}ao=3}function Ft(){if(ao!==3)throw new Error("Meta Handler is not finalized");return{traceBounds:{...Dr},browserProcessId:e0,browserThreadId:t0,processNames:n0,gpuProcessId:r0,gpuThreadId:tf===k.ThreadID(-1)?void 0:tf,viewportRect:rf||void 0,mainFrameId:Bl,mainFrameURL:Ul,navigationsByFrameId:Ss,navigationsByNavigationId:ql,threadsInProcess:i0,rendererProcessesByFrame:jl,topLevelRendererIds:nf,frameByProcessId:Qv,mainFrameNavigations:sf,traceIsGeneric:of}}var jl,Bl,Ul,Qv,e0,t0,r0,tf,rf,n0,nf,Dr,Ss,ql,sf,i0,af,Hee,ao,of,Wee,Pn=g(()=>{d();cr();vt();Le();jl=new Map,Bl="",Ul="",Qv=new Map,e0=k.ProcessID(-1),t0=k.ThreadID(-1),r0=k.ProcessID(-1),tf=k.ThreadID(-1),rf=null,n0=new Map,nf=new Set,Dr={min:A.MicroSeconds( -Number.POSITIVE_INFINITY),max:A.MicroSeconds(Number.NEGATIVE_INFINITY),range:A.MicroSeconds(Number.POSITIVE_INFINITY)},Ss=new Map,ql=new Map,sf=[],i0=new Map,af=A.MicroSeconds(-1),Hee=new Set(["B","E","X","I"]),ao=1,of=!0,Wee=new Set(["TracingStartedInPage","TracingSessionIdForWorker","TracingStartedInBrowser"]);s(Gee,"reset");s(Vee,"initialize");s(Xv,"updateRendererProcessByFrame");s($ee,"handleEvent");s(Yee,"finalize");s(Ft,"data")});var p0={};x(p0,{data:()=>d0,deps:()=>Qee,finalize:()=>Xee,handleEvent:()=>Zee,initialize:()=>Jee,reset:()=>Kee});function Kee(){zl=1,u0.length=0,l0.length=0,c0.clear(),o0={},s0=null,uf.length=0,lf.length=0}function Jee(){if(zl!==1)throw new Error("LayerTree Handler was not reset before being initialized");zl=2}function Zee(e){(k.isTraceEventPaint(e)||k.isTraceEventDisplayListItemListSnapshot(e)||k.isTraceEventUpdateLayer(e)||k.isTraceEventSetLayerId(e))&&lf.push(e)}async function Xee(){if(zl!==2)throw new Error("LayerTree Handler is not initialized");let e=Ft();Pe.sortTraceEventsInPlace(lf);for(let t of lf)if(k.isTraceEventSetLayerId(t)){if(e.mainFrameId!==t.args.data.frame)continue;s0=t.args.data.layerTreeId}else if(k.isTraceEventUpdateLayer(t))uf.push(t);else if(k.isTraceEventPaint(t)){if(!t.args.data.layerId)continue;u0.push(t),o0[t.args.data.layerId]=t;continue}else if(k.isTraceEventDisplayListItemListSnapshot(t)){let r=null;for(let i=uf.length-1;i>-1;i--){let a=uf[i];if(a.pid===t. -pid&&a.tid===t.tid){r=a;break}}if(!r||r.args.layerTreeId!==s0)continue;let n=o0[r.args.layerId];if(!n)continue;l0.push(t),c0.set(n,t)}zl=3}function d0(){return{paints:u0,snapshots:l0,paintsToSnapshots:c0}}function Qee(){return["Meta"]}var zl,u0,l0,c0,o0,s0,uf,lf,m0=g(()=>{d();vt();Le();Pn();zl=1,u0=[],l0=[],c0=new Map,o0={},s0=null,uf=[],lf=[];s(Kee,"reset");s(Jee,"initialize");s(Zee,"handleEvent");s(Xee,"finalize");s(d0,"data");s(Qee,"deps")});var cf,df,f0=g(()=>{d();cf=class{static{s(this,"ProfileNode")}callFrame;callUID;self;total;id;parent;children;functionName;depth;deoptReason;constructor(t){this.callFrame=t,this.callUID=`${t.functionName}@${t.scriptId}:${t.lineNumber}:${t.columnNumber}`,this.self=0,this.total=0,this.id=0,this.functionName=t.functionName,this.parent=null,this.children=[]}get scriptId(){return String(this.callFrame.scriptId)}get url(){return this.callFrame.url}get lineNumber(){return this.callFrame.lineNumber}get columnNumber(){return this.callFrame.columnNumber}setFunctionName(t){t!==null&&(this.functionName=t)}},df=class{static{s(this,"ProfileTreeModel")}root;total;maxDepth;constructor(){}initialize(t){this.root=t,this.assignDepthsAndParents(),this.total=this.calculateTotals(this.root)}assignDepthsAndParents(){let t=this.root;t.depth=-1,t.parent=null,this.maxDepth=0;let r=[t];for(;r.length;){let n=r.pop(),i=n.depth+1;i>this.maxDepth&&(this.maxDepth=i);let a=n.children;for(let o of a)o.depth=i,o.parent= -n,r.push(o)}}calculateTotals(t){let r=[t],n=[];for(;r.length;){let i=r.pop();i.total=i.self,n.push(i),r.push(...i.children)}for(;n.length>1;){let i=n.pop();i.parent&&(i.parent.total+=i.total)}return t.total}}});var pf={};x(pf,{CPUProfileDataModel:()=>h0,CPUProfileNode:()=>Hl});var Hl,h0,PM=g(()=>{d();cr();f0();Hl=class extends cf{static{s(this,"CPUProfileNode")}id;self;positionTicks;deoptReason;constructor(t,r){let n=t.callFrame||{functionName:t.functionName,scriptId:t.scriptId,url:t.url,lineNumber:t.lineNumber-1,columnNumber:t.columnNumber-1};super(n),this.id=t.id,this.self=(t.hitCount||0)*r,this.positionTicks=t.positionTicks,this.deoptReason=t.deoptReason&&t.deoptReason!=="no reason"?t.deoptReason:null}},h0=class extends df{static{s(this,"CPUProfileDataModel")}profileStartTime;profileEndTime;timestamps;samples;lines;totalHitCount;profileHead;#e;gcNode;programNode;idleNode;#t;#n;constructor(t){super(),!!t.head?(this.profileStartTime=t.startTime*1e3,this.profileEndTime=t.endTime*1e3,this.timestamps=t.timestamps,this.compatibilityConversionHeadToNodes(t)):(this.profileStartTime=t.startTime/1e3,this.profileEndTime=t.endTime/1e3,this.timestamps=this.convertTimeDeltas(t)),this.samples=t.samples,this. -lines=t.lines,this.totalHitCount=0,this.profileHead=this.translateProfileTree(t.nodes),this.initialize(this.profileHead),this.extractMetaNodes(),this.samples?.length&&(this.sortSamples(),this.normalizeTimestamps(),this.fixMissingSamples())}compatibilityConversionHeadToNodes(t){if(!t.head||t.nodes)return;let r=[];n(t.head),t.nodes=r,delete t.head;function n(i){return r.push(i),i.children=i.children.map(n),i.id}s(n,"convertNodesTree")}convertTimeDeltas(t){if(!t.timeDeltas)return[];let r=t.startTime,n=new Array(t.timeDeltas.length);for(let i=0;i<t.timeDeltas.length;++i)r+=t.timeDeltas[i],n[i]=r;return n}translateProfileTree(t){function r(m){if(!m[0].children){m[0].children=[];for(let f=1;f<m.length;++f){let h=m[f],y=i.get(h.parent);y&&(y.children?y.children.push(h.id):y.children=[h.id])}}}s(r,"buildChildrenFromParents");function n(m,f){if(typeof m[0].hitCount!="number"){if(!f)throw new Error("Error: Neither hitCount nor samples are present in profile.");for(let h=0;h<m.length;++h)m[h].hitCount= -0;for(let h=0;h<f.length;++h){let y=i.get(f[h]);!y||y.hitCount===void 0||y.hitCount++}}}s(n,"buildHitCountFromSamples");let i=new Map;for(let m=0;m<t.length;++m){let f=t[m];i.set(f.id,f)}n(t,this.samples),r(t),this.totalHitCount=t.reduce((m,f)=>m+(f.hitCount||0),0);let a=(this.profileEndTime-this.profileStartTime)/this.totalHitCount,o=t[0],u=new Map([[o.id,o.id]]);this.#e=new Map;let l=new Hl(o,a);if(this.#e.set(o.id,l),!o.children)throw new Error("Missing children for root");let c=o.children.map(()=>l),p=o.children.map(m=>i.get(m));for(;p.length;){let m=c.pop(),f=p.pop();if(!f||!m)continue;f.children||(f.children=[]);let h=new Hl(f,a);m.children.push(h),m=h,u.set(f.id,m.id),c.push.apply(c,f.children.map(()=>m)),p.push.apply(p,f.children.map(y=>i.get(y))),this.#e.set(f.id,h)}return this.samples&&(this.samples=this.samples.map(m=>u.get(m))),l}sortSamples(){if(!this.timestamps||!this.samples)return;let t=this.timestamps,r=this.samples,n=t.map((i,a)=>a);n.sort((i,a)=>t[i]-t[a]),this.timestamps= -[],this.samples=[];for(let i=0;i<n.length;i++){let a=n[i];this.timestamps.push(t[a]),this.samples.push(r[a])}}normalizeTimestamps(){if(!this.samples)return;let t=this.timestamps;if(!t){let r=this.profileStartTime,n=(this.profileEndTime-r)/this.samples.length;t=new Array(this.samples.length+1);for(let i=0;i<t.length;++i)t[i]=r+i*n;this.timestamps=t;return}for(let r=0;r<t.length;++r)t[r]/=1e3;if(this.samples.length===t.length){let r=t.at(-1)||0,n=(r-t[0])/(t.length-1);this.timestamps.push(r+n)}this.profileStartTime=t.at(0)||this.profileStartTime,this.profileEndTime=t.at(-1)||this.profileEndTime}extractMetaNodes(){let t=this.profileHead.children;for(let r=0;r<t.length&&!(this.gcNode&&this.programNode&&this.idleNode);r++){let n=t[r];n.functionName==="(garbage collector)"?this.gcNode=n:n.functionName==="(program)"?this.programNode=n:n.functionName==="(idle)"&&(this.idleNode=n)}}fixMissingSamples(){let t=this.samples;if(!t)return;let r=t.length;if(!this.programNode||r<3)return;let n=this.#e, -i=this.programNode.id,a=this.gcNode?this.gcNode.id:-1,o=this.idleNode?this.idleNode.id:-1,u=t[0],l=t[1];for(let m=1;m<r-1;m++){let f=t[m+1],h=n.get(u),y=n.get(f);if(u===void 0||f===void 0||!h||!y){console.error(`Unexpectedly found undefined nodes: ${u} ${f}`);continue}l===i&&!p(u)&&!p(f)&&c(h)===c(y)&&(t[m]=u),u=l,l=f}function c(m){for(;m.parent&&m.parent.parent;)m=m.parent;return m}s(c,"bottomNode");function p(m){return m===i||m===a||m===o}s(p,"isSystemNode")}forEachFrame(t,r,n,i){if(!this.profileHead||!this.samples)return;n=n||0,i=i||1/0;let a=this.samples,o=this.timestamps,u=this.#e,l=this.gcNode,c=a.length,p=Pt.lowerBound(o,n,Pt.DEFAULT_COMPARATOR),m=0,f=[],h=this.profileHead.id,y,b=null,w=this.maxDepth+3;this.#t||(this.#t=new Array(w));let E=this.#t;this.#n||(this.#n=new Array(w));let T=this.#n,S,C;for(C=p;C<c&&(y=o[C],!(y>=i));C++){let _=a[C];if(_===h)continue;S=u.get(_);let L=u.get(h)||null;if(L){if(l&&S===l){b=L,t(b.depth+1,l,C,y),E[++m]=y,T[m]=0,h=_;continue}if(l&&L===l&&b){let M=E[m], -H=y-M;T[m-1]+=H,r(b.depth+1,l,C,M,H,H-T[m]),--m,L=b,h=L.id,b=null}for(;S&&S.depth>L.depth;)f.push(S),S=S.parent;for(;L&&L!==S;){let M=E[m],H=y-M;T[m-1]+=H,r(L.depth,L,C,M,H,H-T[m]),--m,S&&S.depth===L.depth&&(f.push(S),S=S.parent),L=L.parent}for(;f.length;){let M=f.pop();if(!M)break;S=M,t(M.depth,M,C,y),E[++m]=y,T[m]=0}h=_}}if(y=o[C]||this.profileEndTime,S&&b&&u.get(h)===l){let _=E[m],L=y-_;T[m-1]+=L,r(b.depth+1,S,C,_,L,L-T[m]),--m,h=b.id}for(let _=u.get(h);_&&_.parent;_=_.parent){let L=E[m],M=y-L;T[m-1]+=M,r(_.depth,_,C,L,M,M-T[m]),--m}}nodeByIndex(t){return this.samples&&this.#e.get(this.samples[t])||null}nodeById(t){return this.#e.get(t)||null}nodes(){return this.#e?[...this.#e.values()]:null}}});var OM=g(()=>{d();PM();f0()});var w0={};x(w0,{data:()=>b0,finalize:()=>ste,getProfileCallFunctionName:()=>ute,handleEvent:()=>ote,initialize:()=>ate,reset:()=>ite});function nte(){for(let[e,t]of v0)for(let[r,n]of t){let p=function(f,h,y,b){if(i===void 0)return;let w=me.millisecondsToMicroseconds(A.MilliSeconds(b)),E=h.id,T=Pe.makeProfileCall(h,r,y,w,e,i);l.profileCalls.push(T),a.push(l.profileCalls.length-1);let S=ea.makeEmptyTraceEntryNode(T,E);Wl.set(T,S),S.depth=f,a.length===1&&l.profileTree?.roots.add(S)},m=function(f,h,y,b,w,E){let T=a.pop(),S=T!==void 0&&l.profileCalls[T];if(!S)return;let{callFrame:C,ts:_,pid:L,tid:M}=S,H=Wl.get(S);if(C===void 0||_===void 0||L===void 0||r===void 0||M===void 0||H===void 0)return;let te=me.millisecondsToMicroseconds(A.MilliSeconds(w)),$=me.millisecondsToMicroseconds(A.MilliSeconds(E));S.dur=te,H.selfTime=$;let ae=a.at(-1),ye=ae!==void 0&&l.profileCalls.at(ae),se=ye&&Wl.get(ye);se&&(H.parent=se,se.children.push(H))};s(p,"openFrameCallback"),s(m,"closeFrameCallback");let i=n.threadId; -if(!n.rawProfile.nodes.length||i===void 0)continue;let a=[],o=new pf.CPUProfileDataModel(n.rawProfile),u=ea.makeEmptyTraceEntryTree();u.maxDepth=o.maxDepth;let l={rawProfile:n.rawProfile,parsedProfile:o,profileCalls:[],profileTree:u,profileId:r},c=Ae.getWithDefault(y0,e,()=>new Map);o.forEachFrame(p,m),c.set(i,l)}}function ite(){rte.clear(),v0.clear(),y0.clear(),Wl.clear(),oo=1}function ate(){if(oo!==1)throw new Error("Samples Handler was not reset");oo=2}function ote(e){if(oo!==2)throw new Error("Samples Handler is not initialized");if(k.isSyntheticCpuProfile(e)){let t=e.pid,r=e.tid,i=g0(t,"0x1");i.rawProfile=e.args.data.cpuProfile,i.threadId=r;return}if(k.isTraceEventProfile(e)){let t=g0(e.pid,e.id);t.rawProfile.startTime=e.ts,t.threadId=e.tid;return}if(k.isTraceEventProfileChunk(e)){let r=g0(e.pid,e.id).rawProfile,n=e.args?.data?.cpuProfile||{samples:[]},i=n?.samples||[],a=[];for(let l of n?.nodes||[]){let c=typeof l.callFrame.lineNumber>"u"?-1:l.callFrame.lineNumber,p=typeof l.callFrame. -columnNumber>"u"?-1:l.callFrame.columnNumber,m=String(l.callFrame.scriptId),f=l.callFrame.url||"",h={...l,callFrame:{...l.callFrame,url:f,lineNumber:c,columnNumber:p,scriptId:m}};a.push(h)}let o=e.args.data?.timeDeltas||[],u=e.args.data?.lines||Array(i.length).fill(0);if(r.nodes.push(...a),r.samples?.push(...i),r.timeDeltas?.push(...o),r.lines?.push(...u),r.samples&&r.timeDeltas&&r.samples.length!==r.timeDeltas.length){console.error("Failed to parse CPU profile.");return}if(!r.endTime&&r.timeDeltas){let l=r.timeDeltas;r.endTime=l.reduce((c,p)=>c+p,r.startTime)}return}}async function ste(){if(oo!==2)throw new Error("Samples Handler is not initialized");nte(),oo=3}function b0(){if(oo!==3)throw new Error("Samples Handler is not finalized");return{profilesInProcess:y0,entryToNode:Wl}}function g0(e,t){let r=Ae.getWithDefault(v0,e,()=>new Map);return Ae.getWithDefault(r,t,()=>({rawProfile:{startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[],lines:[]},profileId:t}))}function ute(e,t){let n=e. -profilesInProcess.get(t.pid)?.get(t.tid)?.parsedProfile.nodeById(t.nodeId);return n?.functionName?n.functionName:t.callFrame.functionName}var rte,y0,Wl,v0,oo,D0=g(()=>{d();cr();OM();vt();Le();rte=new Map,y0=new Map,Wl=new Map,v0=new Map,oo=1;s(nte,"buildProfileCalls");s(ite,"reset");s(ate,"initialize");s(ote,"handleEvent");s(ste,"finalize");s(b0,"data");s(g0,"getOrCreatePreProcessedData");s(ute,"getProfileCallFunctionName")});var F0={};x(F0,{assignIsMainFrame:()=>qM,assignMeta:()=>UM,assignOrigin:()=>jM,assignThreadName:()=>zM,buildHierarchy:()=>GM,data:()=>C0,deps:()=>yte,finalize:()=>hte,handleEvent:()=>fte,handleUserConfig:()=>dte,initialize:()=>mte,makeCompleteEvent:()=>VM,reset:()=>pte,sanitizeProcesses:()=>HM,sanitizeThreads:()=>WM});function dte(e){BM=e}function pte(){ta.clear(),S0.clear(),yi.length=0,E0.length=0,x0.length=0,so=1}function mte(){if(so!==1)throw new Error("Renderer Handler was not reset");so=2}function fte(e){if(so!==2)throw new Error("Renderer Handler is not initialized");if(k.isThreadName(e)&&e.args.name?.startsWith("CompositorTileWorker")&&x0.push({pid:e.pid,tid:e.tid}),k.isTraceEventBegin(e)||k.isTraceEventEnd(e)){let t=mf(ta,e.pid),r=T0(t,e.tid),n=VM(e);if(!n)return;r.entries.push(n),yi.push(n);return}if(k.isTraceEventInstant(e)||k.isTraceEventComplete(e)){let t=mf(ta,e.pid);T0(t,e.tid).entries.push(e),yi.push(e)}}async function hte(){if(so!==2)throw new Error("Renderer Handler is\ - not initialized");let{mainFrameId:e,rendererProcessesByFrame:t,threadsInProcess:r}=Ft();UM(ta,e,t,r),HM(ta),GM(ta),WM(ta),Pe.sortTraceEventsInPlace(yi),so=3}function C0(){if(so!==3)throw new Error("Renderer Handler is not finalized");return{processes:new Map(ta),compositorTileWorkers:new Map(gte()),entryToNode:new Map(S0),allTraceEntries:[...yi]}}function gte(){let e=new Map;for(let t of x0){let r=e.get(t.pid)||[];r.push(t.tid),e.set(t.pid,r)}return e}function UM(e,t,r,n){jM(e,r),qM(e,t,r),zM(e,r,n)}function jM(e,t){for(let r of t.values())for(let[n,i]of r)for(let a of i.flat()){let o=mf(e,n);if(o.url===null||o.url==="about:blank")try{new URL(a.frame.url),o.url=a.frame.url}catch{o.url=null}}}function qM(e,t,r){for(let[n,i]of r)for(let[a]of i){let o=mf(e,a);n===t&&(o.isOnMainFrame=!0)}}function zM(e,t,r){for(let[n,i]of e)for(let[a,o]of r.get(n)??[]){let u=T0(i,a);u.name=o?.args.name??`${a}`}}function HM(e){let t=Ll().worklets;if(!Ft().traceIsGeneric){for(let[n,i]of e)if(i.url===null){let a=t. -get(n);a?i.url=a.host:e.delete(n);continue}}}function WM(e){for(let[,t]of e)for(let[r,n]of t.threads)n.tree?.roots.size||t.threads.delete(r)}function GM(e,t){let r=b0();for(let[n,i]of e)for(let[a,o]of i.threads){if(!o.entries.length){o.tree=ea.makeEmptyTraceEntryTree();continue}Pe.sortTraceEventsInPlace(o.entries);let u=r.profilesInProcess.get(n)?.get(a);if(u){let c=u.parsedProfile,p=c&&new $m.SamplesIntegrator(c,u.profileId,n,a,BM),m=p?.buildProfileCalls(o.entries);if(p&&m){yi=[...yi,...m],o.entries=Pe.mergeEventsInOrder(o.entries,m),o.profileCalls=m;let f=p.jsSampleEvents;f&&(yi=[...yi,...f],o.entries=Pe.mergeEventsInOrder(o.entries,f))}}let l=ea.treify(o.entries,t);o.tree=l.tree;for(let[c,p]of l.entryToNode)S0.set(c,p)}}function VM(e){if(k.isTraceEventEnd(e)){let r=E0.pop();return r?r.name!==e.name||r.cat!==e.cat?(console.error("Begin/End events mismatch at "+r.ts+" ("+r.name+") vs. "+e.ts+" ("+e.name+")"),null):(r.dur=A.MicroSeconds(e.ts-r.ts),null):null}let t={...e,ph:"X",dur:A.MicroSeconds( -0)};return E0.push(t),t}function yte(){return["Meta","Samples","AuctionWorklets"]}var ta,x0,S0,yi,E0,so,BM,lte,cte,mf,T0,k0=g(()=>{d();cr();vt();Le();Ym();Pn();D0();ta=new Map,x0=Array(),S0=new Map,yi=[],E0=[],so=1,BM=Ln.defaults(),lte=s(()=>({url:null,isOnMainFrame:!1,threads:new Map}),"makeRendererProcess"),cte=s(()=>({name:null,entries:[],profileCalls:[]}),"makeRendererThread"),mf=s((e,t)=>Ae.getWithDefault(e,t,lte),"getOrCreateRendererProcess"),T0=s((e,t)=>Ae.getWithDefault(e.threads,t,cte),"getOrCreateRendererThread");s(dte,"handleUserConfig");s(pte,"reset");s(mte,"initialize");s(fte,"handleEvent");s(hte,"finalize");s(C0,"data");s(gte,"gatherCompositorThreads");s(UM,"assignMeta");s(jM,"assignOrigin");s(qM,"assignIsMainFrame");s(zM,"assignThreadName");s(HM,"sanitizeProcesses");s(WM,"sanitizeThreads");s(GM,"buildHierarchy");s(VM,"makeCompleteEvent");s(yte,"deps")});var hf={};x(hf,{threadsInRenderer:()=>ff,threadsInTrace:()=>bte});function vte(e,t,r){let n="OTHER";return t.name==="CrRendererMain"?n="MAIN_THREAD":t.name==="DedicatedWorker thread"?n="WORKER":t.name?.startsWith("CompositorTileWorker")?n="RASTERIZER":r.worklets.has(e)?n="AUCTION_WORKLET":t.name?.startsWith("ThreadPool")&&(n="THREAD_POOL"),n}function ff(e,t){let r=[];if(e.processes.size)for(let[n,i]of e.processes)for(let[a,o]of i.threads){if(!o.tree)continue;let u=vte(n,o,t);r.push({name:o.name,pid:n,tid:a,processIsOnMainFrame:i.isOnMainFrame,entries:o.entries,tree:o.tree,type:u,entryToNode:e.entryToNode})}return r}function bte(e){let t=ff(e.Renderer,e.AuctionWorklets);if(t.length)return t;let r=[];if(e.Samples.profilesInProcess.size)for(let[n,i]of e.Samples.profilesInProcess)for(let[a,o]of i)o.profileTree&&r.push({pid:n,tid:a,name:null,entries:o.profileCalls,processIsOnMainFrame:!1,tree:o.profileTree,type:"CPU_PROFILE",entryToNode:e.Samples.entryToNode});return r}var _0=g(()=>{d();s(vte, -"getThreadTypeForRendererThread");s(ff,"threadsInRenderer");s(bte,"threadsInTrace")});var I0={};x(I0,{LayerPaintEvent:()=>wf,PendingFrame:()=>Df,TimelineFrame:()=>bf,TimelineFrameBeginFrameQueue:()=>Ef,TimelineFrameModel:()=>vf,data:()=>xte,deps:()=>Ste,finalize:()=>Tte,framesWithinWindow:()=>_te,handleEvent:()=>Ete,initialize:()=>Dte,reset:()=>wte});function wte(){gf=1,yf.length=0}function Dte(){if(gf!==1)throw new Error("FramesHandler was not reset before being initialized");gf=2}function Ete(e){yf.push(e)}async function Tte(){if(gf!==2)throw new Error("FramesHandler is not initialized");Pe.sortTraceEventsInPlace(yf),Gl=new vf(yf,C0(),Ll(),Ft(),d0())}function xte(){return{frames:Gl?Array.from(Gl.frames()):[],framesById:Gl?{...Gl.framesById()}:{}}}function Ste(){return["Meta","Renderer","AuctionWorklets","LayerTree"]}function Cte(e){return k.isTraceEventSetLayerId(e)||k.isTraceEventBeginFrame(e)||k.isTraceEventDroppedFrame(e)||k.isTraceEventRequestMainThreadFrame(e)||k.isTraceEventBeginMainThreadFrame(e)||k.isTraceEventNeedsBeginFrameChanged(e)||k.isTraceEventCommit(e)|| -k.isTraceEventCompositeLayers(e)||k.isTraceEventActivateLayerTree(e)||k.isTraceEventDrawFrame(e)}function Fte(e){return e.name==="RunTask"&&e.cat.includes("disabled-by-default-devtools.timeline")}function _te(e,t,r){let n=Pt.lowerBound(e,t||0,(a,o)=>a-o.endTime),i=Pt.lowerBound(e,r||1/0,(a,o)=>a-o.startTime);return e.slice(n,i)}var gf,yf,Gl,vf,kte,bf,wf,Df,R0,Ef,$M=g(()=>{d();cr();vt();Le();Ym();m0();Pn();k0();_0();gf=1,yf=[],Gl=null;s(wte,"reset");s(Dte,"initialize");s(Ete,"handleEvent");s(Tte,"finalize");s(xte,"data");s(Ste,"deps");s(Cte,"isFrameEvent");s(Fte,"entryIsTopLevel");vf=class{static{s(this,"TimelineFrameModel")}#e=[];#t={};#n=new Ef;#r=null;#i=!1;#o=!1;#a=null;#s=null;#u=null;#l=null;#c=null;#h=null;#p=null;#m=null;#d=null;#f;constructor(t,r,n,i,a){let u=ff(r,n).filter(l=>l.type==="MAIN_THREAD"&&l.processIsOnMainFrame).map(l=>({tid:l.tid,pid:l.pid,startTime:l.entries[0].ts}));this.#f=a,this.#F(t,u,i.mainFrameId)}framesById(){return this.#t}frames(){return this.#e}#y(t,r){this.#r|| -this.#g(t,r),this.#l=t,this.#n.addFrameIfNotExists(r,t,!1,!1)}#b(t,r,n){this.#r||this.#g(t,r),this.#n.addFrameIfNotExists(r,t,!0,n),this.#n.setDropped(r,!0),this.#n.setPartial(r,n)}#w(t,r){if(!this.#r){this.#g(t,r);return}if(this.#i||!this.#o){this.#c&&((this.#s?this.#s.triggerTime:this.#l||this.#c)>this.#r.startTime&&(this.#r.idle=!0,this.#l=null),this.#c=null);let n=this.#n.processPendingBeginFramesOnDrawFrame(r);for(let i of n){let a=this.#r.idle;this.#g(i.startTime,r),a&&this.#s&&this.#v(),i.isDropped&&(this.#r.dropped=!0),i.isPartial&&(this.#r.isPartial=!0)}}this.#i=!1}#D(){this.#r&&this.#s&&!this.#c&&this.#v()}#E(){this.#r&&(this.#o=!0)}#T(){this.#u&&(this.#s=this.#u,this.#u=null,this.#o=!1,this.#i=!0)}#x(t){this.#a=t}#S(t,r){r&&(this.#c=t)}#g(t,r){this.#r&&this.#C(this.#r,t),this.#r=new bf(r,t,A.MicroSeconds(t-Ft().traceBounds.min))}#C(t,r){t.setLayerTree(this.#a),t.setEndTime(r),this.#a&&(this.#a.paints=t.paints);let n=this.#e[this.#e.length-1];this.#e.length&&n&&(t.startTime!== -n.endTime||t.startTime>t.endTime)&&console.assert(!1,`Inconsistent frame time for frame ${this.#e.length} (${t.startTime} - ${t.endTime})`),this.#e.push(t),typeof t.mainFrameId=="number"&&(this.#t[t.mainFrameId]=t)}#v(){!this.#s||!this.#r||(this.#r.paints=this.#s.paints,this.#r.mainFrameId=this.#s.mainFrameId,this.#s=null)}#F(t,r,n){let i=0;this.#d=r.length&&r[0].tid||null,this.#m=r.length&&r[0].pid||null;for(let a=0;a<t.length;++a){for(;i+1<r.length&&r[i+1].startTime<=t[a].ts;)this.#d=r[++i].tid,this.#m=r[i].pid;this.#k(t[a],n)}this.#d=null,this.#m=null}#k(t,r){k.isTraceEventSetLayerId(t)&&t.args.data.frame===r?this.#p=t.args.data.layerTreeId:k.isTraceEventLayerTreeHostImplSnapshot(t)&&Number(t.id)===this.#p?this.#x({entry:t,paints:[]}):(Cte(t)&&this.#_(t),t.tid===this.#d&&t.pid===this.#m&&this.#R(t))}#_(t){t.args.layerTreeId===this.#p&&(k.isTraceEventBeginFrame(t)?this.#y(t.ts,t.args.frameSeqId):k.isTraceEventDrawFrame(t)?this.#w(t.ts,t.args.frameSeqId):k.isTraceEventActivateLayerTree( -t)?this.#D():k.isTraceEventRequestMainThreadFrame(t)?this.#E():k.isTraceEventNeedsBeginFrameChanged(t)?this.#S(t.ts,t.args.data&&!!t.args.data.needsBeginFrame):k.isTraceEventDroppedFrame(t)&&this.#b(t.ts,t.args.frameSeqId,!!t.args.hasPartialUpdate))}#R(t){if(Fte(t)&&(this.#h=t.ts),!this.#u&&kte.has(t.name)&&(this.#u=new Df(this.#h||t.ts)),!!this.#u){if(k.isTraceEventBeginMainThreadFrame(t)&&t.args.data.frameId&&(this.#u.mainFrameId=t.args.data.frameId),k.isTraceEventPaint(t)){let r=this.#f.paintsToSnapshots.get(t);r&&this.#u.paints.push(new wf(t,r))}(k.isTraceEventCompositeLayers(t)||k.isTraceEventCommit(t))&&t.args.layerTreeId===this.#p&&this.#T()}}},kte=new Set(["ScheduleStyleRecalculation","InvalidateLayout","BeginMainThreadFrame","ScrollLayer"]),bf=class{static{s(this,"TimelineFrame")}startTime;startTimeOffset;endTime;duration;idle;dropped;isPartial;layerTree;paints;mainFrameId;seqId;constructor(t,r,n){this.seqId=t,this.startTime=r,this.startTimeOffset=n,this.endTime=this.startTime, -this.duration=A.MicroSeconds(0),this.idle=!1,this.dropped=!1,this.isPartial=!1,this.layerTree=null,this.paints=[],this.mainFrameId=void 0}setEndTime(t){this.endTime=t,this.duration=A.MicroSeconds(this.endTime-this.startTime)}setLayerTree(t){this.layerTree=t}},wf=class{static{s(this,"LayerPaintEvent")}#e;#t;constructor(t,r){this.#e=t,this.#t=r}layerId(){return this.#e.args.data.layerId}event(){return this.#e}picture(){let t=this.#t.args.snapshot.params?.layer_rect,r=this.#t.args.snapshot.skp64;return t&&r?{rect:t,serializedPicture:r}:null}},Df=class{static{s(this,"PendingFrame")}paints;mainFrameId;triggerTime;constructor(t){this.paints=[],this.mainFrameId=void 0,this.triggerTime=t}},R0=class{static{s(this,"BeginFrameInfo")}seqId;startTime;isDropped;isPartial;constructor(t,r,n,i){this.seqId=t,this.startTime=r,this.isDropped=n,this.isPartial=i}},Ef=class{static{s(this,"TimelineFrameBeginFrameQueue")}queueFrames=[];mapFrames={};addFrameIfNotExists(t,r,n,i){t in this.mapFrames||(this.mapFrames[t]= -new R0(t,r,n,i),this.queueFrames.push(t))}setDropped(t,r){t in this.mapFrames&&(this.mapFrames[t].isDropped=r)}setPartial(t,r){t in this.mapFrames&&(this.mapFrames[t].isPartial=r)}processPendingBeginFramesOnDrawFrame(t){let r=[];if(t in this.mapFrames){for(;this.queueFrames[0]!==t;){let n=this.queueFrames[0];this.mapFrames[n].isDropped&&r.push(this.mapFrames[n]),delete this.mapFrames[n],this.queueFrames.shift()}r.push(this.mapFrames[t]),delete this.mapFrames[t],this.queueFrames.shift()}return r}};s(_te,"framesWithinWindow")});var M0={};x(M0,{data:()=>Mte,deps:()=>Lte,finalize:()=>Nte,handleEvent:()=>Ate,initialize:()=>Ite,reset:()=>Rte});function Rte(){A0.clear(),N0=[],uo=1}function Ite(){if(uo!==1)throw new Error("GPU Handler was not reset before being initialized");uo=2}function Ate(e){if(uo!==2)throw new Error("GPU Handler is not initialized");k.isTraceEventGPUTask(e)&&Pe.addEventToProcessThread(e,A0)}async function Nte(){if(uo!==2)throw new Error("GPU Handler is not initialized");let{gpuProcessId:e,gpuThreadId:t}=Ft(),r=A0.get(e);r&&t&&(N0=r.get(t)||[]),uo=3}function Mte(){if(uo!==3)throw new Error("GPU Handler is not finalized");return{mainGPUThreadTasks:N0}}function Lte(){return["Meta"]}var uo,A0,N0,YM=g(()=>{d();Pn();Le();vt();uo=1,A0=new Map,N0=[];s(Rte,"reset");s(Ite,"initialize");s(Ate,"handleEvent");s(Nte,"finalize");s(Mte,"data");s(Lte,"deps")});var L0={};x(L0,{data:()=>Bte,handleEvent:()=>Ote,reset:()=>Pte});function Pte(){Vl.clear(),Tf.clear(),xf.clear(),Sf.clear()}function Ote(e){if(k.isTraceEventPaintImage(e)){let t=Vl.get(e.pid)||new Map,r=t.get(e.tid)||[];r.push(e),t.set(e.tid,r),Vl.set(e.pid,t);return}if(k.isTraceEventDecodeLazyPixelRef(e)&&typeof e.args?.LazyPixelRef<"u"){let t=Tf.get(e.pid)||new Map,r=t.get(e.tid)||[];r.push(e),t.set(e.tid,r),Tf.set(e.pid,t)}if(k.isTraceEventDrawLazyPixelRef(e)&&typeof e.args?.LazyPixelRef<"u"){let t=Vl.get(e.pid)?.get(e.tid)?.at(-1);if(!t)return;xf.set(e.args.LazyPixelRef,t);return}if(k.isTraceEventDecodeImage(e)){let t=Vl.get(e.pid)?.get(e.tid)?.at(-1);if(t){Sf.set(e,t);return}let r=Tf.get(e.pid)?.get(e.tid)?.at(-1);if(!r||typeof r.args?.LazyPixelRef>"u")return;let n=xf.get(r.args.LazyPixelRef);if(!n)return;Sf.set(e,n)}}function Bte(){return{paintImageByDrawLazyPixelRef:xf,paintImageForEvent:Sf}}var Vl,Tf,xf,Sf,KM=g(()=>{d();Le();Vl=new Map,Tf=new Map,xf=new Map,Sf=new Map;s(Pte,"re\ -set");s(Ote,"handleEvent");s(Bte,"data")});var W0={};x(W0,{data:()=>Wte,finalize:()=>Hte,handleEvent:()=>qte,initialize:()=>jte,reset:()=>Ute});function Ute(){P0.clear(),$l.clear(),O0.clear(),U0.clear(),Ff.clear(),Cf.clear(),B0.clear(),j0.clear(),q0.clear(),H0.clear(),z0.length=0,Yl=1}function jte(){if(Yl!==1)throw new Error("InitiatorsHandler was not reset before being initialized");Yl=2}function lo(e){Ff.set(e.event,e.initiator);let t=Cf.get(e.initiator)||[];t.push(e.event),Cf.set(e.initiator,t)}function qte(e){if(k.isTraceEventScheduleStyleRecalculation(e))P0.set(e.args.data.frame,e);else if(k.isTraceEventUpdateLayoutTree(e)){if(e.args.beginData){O0.set(e.args.beginData.frame,e);let t=P0.get(e.args.beginData.frame);t&&lo({event:e,initiator:t})}}else if(k.isTraceEventInvalidateLayout(e)){let t=e;if(!$l.has(e.args.data.frame)){let r=O0.get(e.args.data.frame);if(r){let{endTime:n}=me.eventTimingsMicroSeconds(r),i=Ff.get(r);i&&n&&n>e.ts&&(t=i)}}$l.set(e.args.data.frame,t)}else if(k.isTraceEventLayout(e)){let t=$l.get(e.args.beginData. -frame);t&&lo({event:e,initiator:t}),$l.delete(e.args.beginData.frame)}else if(k.isTraceEventRequestAnimationFrame(e))B0.set(e.args.data.id,e);else if(k.isTraceEventFireAnimationFrame(e)){let t=B0.get(e.args.data.id);t&&lo({event:e,initiator:t})}else if(k.isTraceEventTimerInstall(e))U0.set(e.args.data.timerId,e);else if(k.isTraceEventTimerFire(e)){let t=U0.get(e.args.data.timerId);t&&lo({event:e,initiator:t})}else if(k.isTraceEventRequestIdleCallback(e))j0.set(e.args.data.id,e);else if(k.isTraceEventFireIdleCallback(e)){let t=j0.get(e.args.data.id);t&&lo({event:e,initiator:t})}else if(k.isTraceEventWebSocketCreate(e))q0.set(e.args.data.identifier,e);else if(k.isTraceEventWebSocketInfo(e)||k.isTraceEventWebSocketTransfer(e)){let t=q0.get(e.args.data.identifier);t&&lo({event:e,initiator:t})}else if(k.isTraceEventHandlePostMessage(e))z0.push(e);else if(k.isTraceEventSchedulePostMessage(e)){let t=e.args.data?.traceId;t&&H0.set(t,e)}}function zte(){for(let e of z0){let t=e.args.data?.traceId, -r=H0.get(t);r&&lo({event:e,initiator:r})}}async function Hte(){if(Yl!==2)throw new Error("InitiatorsHandler is not initialized");zte(),Yl=3}function Wte(){return{eventToInitiator:Ff,initiatorToEvents:Cf}}var Yl,P0,$l,O0,z0,H0,Ff,Cf,B0,U0,j0,q0,JM=g(()=>{d();vt();Le();Yl=1,P0=new Map,$l=new Map,O0=new Map,z0=[],H0=new Map,Ff=new Map,Cf=new Map,B0=new Map,U0=new Map,j0=new Map,q0=new Map;s(Ute,"reset");s(jte,"initialize");s(lo,"storeInitiator");s(qte,"handleEvent");s(zte,"finalizeInitiatorRelationship");s(Hte,"finalize");s(Wte,"data")});var V0={};x(V0,{data:()=>Kte,finalize:()=>Yte,handleEvent:()=>$te,initialize:()=>Vte,reset:()=>Gte});function Gte(){Jl=1,_f.clear(),On=null,Kl.length=0,kf=!1}function Vte(){if(Jl!==1)throw new Error("InvalidationsHandler was not reset before being initialized");Jl=2}function G0(e,t){let r=_f.get(e)||[];r.push(t),_f.set(e,r)}function $te(e){if(k.isTraceEventUpdateLayoutTree(e)){On=e;for(let t of Kl){if(k.isTraceEventLayoutInvalidationTracking(t))continue;let r=On.args.beginData?.frame;r&&t.args.data.frame===r&&G0(e,t)}return}if(k.isTraceEventInvalidationTracking(e)){if(kf&&(Kl.length=0,On=null,kf=!1),On&&(k.isTraceEventScheduleStyleInvalidationTracking(e)||k.isTraceEventStyleRecalcInvalidationTracking(e)||k.isTraceEventStyleInvalidatorInvalidationTracking(e))){let t=On.ts+(On.dur||0);e.ts>=On.ts&&e.ts<=t&&On.args.beginData?.frame===e.args.data.frame&&G0(On,e)}Kl.push(e);return}if(k.isTraceEventPaint(e)){kf=!0;return}if(k.isTraceEventLayout(e)){let t=e.args.beginData.frame;for(let r of Kl) -k.isTraceEventLayoutInvalidationTracking(r)&&r.args.data.frame===t&&G0(e,r)}}async function Yte(){if(Jl!==2)throw new Error("InvalidationsHandler is not initialized");Jl=3}function Kte(){return{invalidationsForEvent:_f}}var Jl,_f,On,kf,Kl,ZM=g(()=>{d();Le();Jl=1,_f=new Map,On=null,kf=!1,Kl=[];s(Gte,"reset");s(Vte,"initialize");s(G0,"addInvalidationToEvent");s($te,"handleEvent");s(Yte,"finalize");s(Kte,"data")});var Y0={};x(Y0,{data:()=>Xte,handleEvent:()=>Zte,reset:()=>Jte});function Jte(){$0.clear()}function Zte(e){k.isTraceEventLargestImagePaintCandidate(e)&&e.args.data&&$0.set(e.args.data.DOMNodeId,e)}function Xte(){return $0}var $0,XM=g(()=>{d();Le();$0=new Map;s(Jte,"reset");s(Zte,"handleEvent");s(Xte,"data")});var J0={};x(J0,{data:()=>tre,handleEvent:()=>ere,reset:()=>Qte});function Qte(){K0.clear()}function ere(e){k.isTraceEventLargestTextPaintCandidate(e)&&e.args.data&&K0.set(e.args.data.DOMNodeId,e)}function tre(){return K0}var K0,QM=g(()=>{d();Le();K0=new Map;s(Qte,"reset");s(ere,"handleEvent");s(tre,"data")});var X0={};x(X0,{MAX_CLUSTER_DURATION:()=>If,MAX_SHIFT_TIME_DELTA:()=>Af,data:()=>lre,deps:()=>cre,finalize:()=>sre,handleEvent:()=>ire,initialize:()=>rre,reset:()=>nre,scoreClassificationForLayoutShift:()=>dre});function rre(){if(ks!==1)throw new Error("LayoutShifts Handler was not reset");ks=2}function nre(){ks=1,ra.length=0,Zl.length=0,Mf.length=0,eL.length=0,Pf.length=0,Lf.length=0,Cs.clear(),_r.length=0,Nf=0,Fs.length=0,Z0=-1}function ire(e){if(ks!==2)throw new Error("Handler is not initialized");if(k.isTraceEventLayoutShift(e)&&!e.args.data?.had_recent_input){ra.push(e);return}if(k.isTraceEventLayoutInvalidationTracking(e)){Zl.push(e);return}if(k.isTraceEventScheduleStyleInvalidationTracking(e)&&Mf.push(e),k.isTraceEventStyleRecalcInvalidationTracking(e)&&eL.push(e),k.isTraceEventPrePaint(e)){Pf.push(e);return}k.isTraceEventRenderFrameImplCreateChildFrame(e)&&Lf.push(e)}function Rf(e){return{min:e,max:e,range:A.MicroSeconds(0)}}function $r(e,t){e.max=t,e.range=A.MicroSeconds(e.max- -e.min)}function are(){let{traceBounds:e}=Ft();Fs.push({ts:e.min,score:0});for(let t of _r){let r=0;t.events[0].args.data&&Fs.push({ts:t.clusterWindow.min,score:t.events[0].args.data.weighted_score_delta});for(let n=0;n<t.events.length;n++){let i=t.events[n];i.args.data&&(r+=i.args.data.weighted_score_delta,Fs.push({ts:i.ts,score:r}))}Fs.push({ts:t.clusterWindow.max,score:0})}}function ore(){Cs.clear();for(let e of ra)if(e.args.data?.impacted_nodes)for(let t of e.args.data.impacted_nodes)Cs.add(t.node_id);for(let e of Zl)e.args.data?.nodeId&&Cs.add(e.args.data.nodeId);for(let e of Mf)e.args.data?.nodeId&&Cs.add(e.args.data.nodeId)}async function sre(){ra.sort((e,t)=>e.ts-t.ts),Pf.sort((e,t)=>e.ts-t.ts),Zl.sort((e,t)=>e.ts-t.ts),Lf.sort((e,t)=>e.ts-t.ts),await ure(),are(),ore(),ks=3}async function ure(){let{navigationsByFrameId:e,mainFrameId:t,traceBounds:r}=Ft(),n=e.get(t)||[];if(ra.length===0)return;let i=ra[0].ts,a=ra[0].ts,o=null;for(let u of ra){let l=u.ts-i>If,c=u.ts-a>Af,p=Pt.nearestIndexFromEnd( -n,b=>b.ts<u.ts),m=o!==p&&p!==null;if(l||c||m||!_r.length){let b=u.ts,w=l?i+If:1/0,E=c?a+Af:1/0,T=m?n[p].ts:1/0,S=Math.min(w,E,T);if(_r.length>0){let _=_r[_r.length-1];$r(_.clusterWindow,A.MicroSeconds(S))}let C=p===null?void 0:n[p].args.data?.navigationId;_r.push({events:[],clusterWindow:Rf(b),clusterCumulativeScore:0,scoreWindows:{good:Rf(b),needsImprovement:null,bad:null},navigationId:C}),i=b}let f=_r[_r.length-1],h=p!==null?A.MicroSeconds(u.ts-n[p].ts):void 0;if(f.clusterCumulativeScore+=u.args.data?u.args.data.weighted_score_delta:0,!u.args.data)continue;let y=Br.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:u,...u,args:{frame:u.args.frame,data:{...u.args.data,rawEvent:u}},parsedData:{timeFromNavigation:h,cumulativeWeightedScoreInWindow:f.clusterCumulativeScore,sessionWindowData:{cumulativeWindowScore:0,id:_r.length}}});f.events.push(y),$r(f.clusterWindow,u.ts),a=u.ts,o=p}for(let u of _r){let l=0,c=-1;if(u===_r[_r.length-1]){let p=If+u.clusterWindow.min,m=u.clusterWindow. -max+Af,f=Pt.nearestIndexFromBeginning(n,b=>b.ts>u.clusterWindow.max),h=f?n[f].ts:1/0,y=Math.min(p,m,r.max,h);$r(u.clusterWindow,A.MicroSeconds(y))}for(let p of u.events){l+=p.args.data?p.args.data.weighted_score_delta:0,c=p.parsedData.sessionWindowData.id;let m=p.ts;p.parsedData.sessionWindowData.cumulativeWindowScore=u.clusterCumulativeScore,l<.1?$r(u.scoreWindows.good,m):l>=.1&&l<.25?(u.scoreWindows.needsImprovement||($r(u.scoreWindows.good,A.MicroSeconds(m-1)),u.scoreWindows.needsImprovement=Rf(m)),$r(u.scoreWindows.needsImprovement,m)):l>=.25&&(u.scoreWindows.bad||(u.scoreWindows.needsImprovement?$r(u.scoreWindows.needsImprovement,A.MicroSeconds(m-1)):$r(u.scoreWindows.good,A.MicroSeconds(m-1)),u.scoreWindows.bad=Rf(p.ts)),$r(u.scoreWindows.bad,m)),u.scoreWindows.bad?$r(u.scoreWindows.bad,u.clusterWindow.max):u.scoreWindows.needsImprovement?$r(u.scoreWindows.needsImprovement,u.clusterWindow.max):$r(u.scoreWindows.good,u.clusterWindow.max)}l>Nf&&(Z0=c,Nf=l)}}function lre(){if(ks!==3) -throw new Error("Layout Shifts Handler is not finalized");return{clusters:_r,sessionMaxScore:Nf,clsWindowID:Z0,prePaintEvents:Pf,layoutInvalidationEvents:Zl,scheduleStyleInvalidationEvents:Mf,styleRecalcInvalidationEvents:[],renderFrameImplCreateChildFrameEvents:Lf,scoreRecords:Fs,backendNodeIds:[...Cs]}}function cre(){return["Screenshots","Meta"]}function dre(e){let t="good";return e>=.1&&(t="ok"),e>=.25&&(t="bad"),t}var If,Af,ra,Zl,Mf,eL,Lf,Cs,Pf,Nf,Z0,_r,Fs,ks,tL=g(()=>{d();cr();vt();Le();Pn();If=me.millisecondsToMicroseconds(A.MilliSeconds(5e3)),Af=me.millisecondsToMicroseconds(A.MilliSeconds(1e3)),ra=[],Zl=[],Mf=[],eL=[],Lf=[],Cs=new Set,Pf=[],Nf=0,Z0=-1,_r=[],Fs=[],ks=1;s(rre,"initialize");s(nre,"reset");s(ire,"handleEvent");s(Rf,"traceWindowFromTime");s($r,"updateTraceWindowMax");s(are,"buildScoreRecords");s(ore,"collectNodes");s(sre,"finalize");s(ure,"buildLayoutShiftsClusters");s(lre,"data");s(cre,"deps");s(dre,"scoreClassificationForLayoutShift")});var Q0={};x(Q0,{data:()=>fre,handleEvent:()=>mre,reset:()=>pre});function pre(){Of.clear()}function mre(e){if(k.isTraceEventUpdateCounters(e)){let t=Ae.getWithDefault(Of,e.pid,()=>[]);t.push(e),Of.set(e.pid,t)}}function fre(){return{updateCountersByProcess:Of}}var Of,rL=g(()=>{d();cr();Le();Of=new Map;s(pre,"reset");s(mre,"handleEvent");s(fre,"data")});var rb={};x(rb,{data:()=>wre,deps:()=>Dre,finalize:()=>bre,handleEvent:()=>vre,initialize:()=>yre,reset:()=>gre});function co(e,t,r){Xl.has(e)||Xl.set(e,{});let n=Xl.get(e);if(!n)throw new Error(`Unable to locate trace events for request ID ${e}`);if(Array.isArray(n[t])){let i=n[t],a=r;i.push(...a)}else n[t]=r}function hre(e){for(let t of e)if(t>0)return t;return 0}function gre(){eb.clear(),Xl.clear(),jf.length=0,Uf.clear(),tb.clear(),po.clear(),_s=1}function yre(){_s=2}function vre(e){if(_s!==2)throw new Error("Network Request handler is not initialized");if(k.isTraceEventResourceChangePriority(e)){co(e.args.data.requestId,"changePriority",e);return}if(k.isTraceEventResourceWillSendRequest(e)){co(e.args.data.requestId,"willSendRequests",[e]);return}if(k.isTraceEventResourceSendRequest(e)){co(e.args.data.requestId,"sendRequests",[e]);return}if(k.isTraceEventResourceReceiveResponse(e)){co(e.args.data.requestId,"receiveResponse",e);return}if(k.isTraceEventResourceReceivedData(e)){co(e.args. -data.requestId,"receivedData",[e]);return}if(k.isTraceEventResourceFinish(e)){co(e.args.data.requestId,"resourceFinish",e);return}if(k.isTraceEventResourceMarkAsCached(e)){co(e.args.data.requestId,"resourceMarkAsCached",e);return}if(k.isTraceEventWebSocketCreate(e)||k.isTraceEventWebSocketInfo(e)||k.isTraceEventWebSocketTransfer(e)){let t=e.args.data.identifier;po.has(t)||(e.args.data.frame?po.set(t,{frame:e.args.data.frame,webSocketIdentifier:t,events:[],syntheticConnectionEvent:null}):e.args.data.workerId&&po.set(t,{workerId:e.args.data.workerId,webSocketIdentifier:t,events:[],syntheticConnectionEvent:null})),po.get(t)?.events.push(e)}}async function bre(){if(_s!==2)throw new Error("Network Request handler is not initialized");let{rendererProcessesByFrame:e}=Ft();for(let[t,r]of Xl.entries()){if(!r.sendRequests||!r.receiveResponse)continue;let n=[];for(let _e=0;_e<r.sendRequests.length-1;_e++){let Ce=r.sendRequests[_e],We=r.sendRequests[_e+1],Fe=Ce.ts,ee=A.MicroSeconds(We.ts-Ce.ts);if(r. -willSendRequests&&r.willSendRequests[_e]&&r.willSendRequests[_e+1]){let Y=r.willSendRequests[_e],mt=r.willSendRequests[_e+1];Fe=Y.ts,ee=A.MicroSeconds(mt.ts-Y.ts)}n.push({url:Ce.args.data.url,priority:Ce.args.data.priority,requestMethod:Ce.args.data.requestMethod,ts:Fe,dur:ee})}let i=r.resourceFinish?.args.data.encodedDataLength!==0,a=r.receiveResponse.args.data.fromCache&&!r.receiveResponse.args.data.fromServiceWorker&&!i,o=r.resourceMarkAsCached!==void 0,u=o||a,l=r.receiveResponse.args.data.timing;if(!l&&!u)continue;let c=r.sendRequests[0],p=r.sendRequests[r.sendRequests.length-1],m=p.args.data.priority,f=m;r.changePriority&&(f=r.changePriority.args.data.priority);let h=r.willSendRequests&&r.willSendRequests.length?A.MicroSeconds(r.willSendRequests[0].ts):A.MicroSeconds(c.ts),y=r.willSendRequests&&r.willSendRequests.length?A.MicroSeconds(r.willSendRequests[r.willSendRequests.length-1].ts):A.MicroSeconds(p.ts),b=r.resourceFinish?r.resourceFinish.ts:y,w=r.resourceFinish?.args.data.finishTime? -A.MicroSeconds(r.resourceFinish.args.data.finishTime*Bf):A.MicroSeconds(b),E=u?A.MicroSeconds(0):A.MicroSeconds((w||y)-y),T=A.MicroSeconds(b-(w||b)),S=A.MicroSeconds(y-h),C=u?A.MicroSeconds(0):A.MicroSeconds(qm.clamp(l.requestTime*Bf-y,0,Number.MAX_VALUE)),_=u?A.MicroSeconds(r.receiveResponse.ts-h):A.MicroSeconds(hre([l.dnsStart*fn,l.connectStart*fn,l.sendStart*fn,r.receiveResponse.ts-y])),L=u?h:A.MicroSeconds(l.requestTime*Bf+l.sendStart*fn),M=u?A.MicroSeconds(0):A.MicroSeconds((l.receiveHeadersEnd-l.sendEnd)*fn),H=u?h:A.MicroSeconds(l.requestTime*Bf+l.receiveHeadersEnd*fn),te=u?A.MicroSeconds(b-r.receiveResponse.ts):A.MicroSeconds((w||H)-H),$=A.MicroSeconds(E+T),ae=u?A.MicroSeconds(0):A.MicroSeconds((l.dnsEnd-l.dnsStart)*fn),ye=u?A.MicroSeconds(0):A.MicroSeconds((l.sslEnd-l.sslStart)*fn),se=u?A.MicroSeconds(0):A.MicroSeconds((l.proxyEnd-l.proxyStart)*fn),gt=u?A.MicroSeconds(0):A.MicroSeconds((l.sendEnd-l.sendStart)*fn),ce=u?A.MicroSeconds(0):A.MicroSeconds((l.connectEnd-l.connectStart)* -fn),{frame:ve,url:ct,renderBlocking:rt}=p.args.data,{encodedDataLength:Be,decodedBodyLength:Nt}=r.resourceFinish?r.resourceFinish.args.data:{encodedDataLength:0,decodedBodyLength:0},Je=new URL(ct),He=Je.protocol==="https:",Se=Pe.activeURLForFrameAtTime(ve,p.ts,e)||"",O=Br.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:p,args:{data:{syntheticData:{dnsLookup:ae,download:te,downloadStart:H,finishTime:w,initialConnection:ce,isDiskCached:a,isHttps:He,isMemoryCached:o,isPushedResource:i,networkDuration:E,processingDuration:T,proxyNegotiation:se,queueing:C,redirectionDuration:S,requestSent:gt,sendStartTime:L,ssl:ye,stalled:_,totalTime:$,waiting:M},decodedBodyLength:Nt,encodedDataLength:Be,frame:ve,fromServiceWorker:r.receiveResponse.args.data.fromServiceWorker,isLinkPreload:p.args.data.isLinkPreload||!1,mimeType:r.receiveResponse.args.data.mimeType,priority:f,initialPriority:m,protocol:r.receiveResponse.args.data.protocol??"unknown",redirects:n,renderBlocking:rt??"non_bloc\ -king",requestId:t,requestingFrameUrl:Se,requestMethod:p.args.data.requestMethod,resourceType:p.args.data.resourceType,statusCode:r.receiveResponse.args.data.statusCode,responseHeaders:r.receiveResponse.args.data.headers||[],fetchPriorityHint:p.args.data.fetchPriorityHint,initiator:p.args.data.initiator,stackTrace:p.args.data.stackTrace,timing:l,url:ct,failed:r.resourceFinish?.args.data.didFail??!1,finished:!!r.resourceFinish,connectionId:r.receiveResponse.args.data.connectionId,connectionReused:r.receiveResponse.args.data.connectionReused}},cat:"loading",name:"SyntheticNetworkRequest",ph:"X",dur:A.MicroSeconds(b-h),tdur:A.MicroSeconds(b-h),ts:A.MicroSeconds(h),tts:A.MicroSeconds(h),pid:p.pid,tid:p.tid}),ue=Ae.getWithDefault(eb,Je.host,()=>({renderBlocking:[],nonRenderBlocking:[],all:[]}));Vm.isSyntheticNetworkRequestEventRenderBlocking(O)?ue.renderBlocking.push(O):ue.nonRenderBlocking.push(O),ue.all.push(O),jf.push(O);let nt=O.args.data.initiator?.url||Pe.getZeroIndexedStackTraceForEvent( -O)?.at(0)?.url;if(nt){let _e=Uf.get(nt)??[];_e.push(O),Uf.set(nt,_e)}}for(let t of jf){let r=Uf.get(t.args.data.url);if(r)for(let n of r)tb.set(n,t)}Ere(),_s=3}function wre(){if(_s!==3)throw new Error("Network Request handler is not finalized");return{byOrigin:eb,byTime:jf,eventToInitiator:tb,webSocket:[...po.values()]}}function Dre(){return["Meta"]}function Ere(){po.forEach(e=>{let t=null,r=null;for(let n of e.events)k.isTraceEventWebSocketCreate(n)&&(t=n),k.isTraceEventWebSocketDestroy(n)&&(r=n);e.syntheticConnectionEvent=Tre(t,r,e.events[0])})}function Tre(e,t,r){let{traceBounds:n}=Ft(),i=e?e.ts:n.min,o=(t?t.ts:n.max)-i,u=e||t||r;return{name:"SyntheticWebSocketConnectionEvent",cat:u.cat,ph:"X",ts:i,dur:o,pid:u.pid,tid:u.tid,s:u.s,rawSourceEvent:u,_tag:"SyntheticEntryTag",args:{data:{identifier:u.args.data.identifier,priority:"Low",url:u.args.data.url||""}}}}var fn,Bf,po,Xl,eb,jf,Uf,tb,_s,nL=g(()=>{d();cr();vt();Le();Pn();fn=1e3,Bf=1e6,po=new Map,Xl=new Map,eb=new Map,jf=[],Uf=new Map, -tb=new Map;s(co,"storeTraceEventWithRequestId");s(hre,"firstPositiveValueInList");_s=1;s(gre,"reset");s(yre,"initialize");s(vre,"handleEvent");s(bre,"finalize");s(wre,"data");s(Dre,"deps");s(Ere,"finalizeWebSocketData");s(Tre,"createSyntheticWebSocketConnectionEvent")});var nb={};x(nb,{data:()=>Cre,handleEvent:()=>Sre,reset:()=>xre});function xre(){Ql.clear()}function Sre(e){if(k.isTraceEventTracingStartedInBrowser(e)){for(let t of e.args.data?.frames??[])Ql.set(t.frame,t);return}if(k.isTraceEventCommitLoad(e)){let t=e.args.data;if(!t)return;let r=Ql.get(t.frame);if(!r)return;Ql.set(t.frame,{...r,url:t.url||r.url,name:t.name||t.name})}}function Cre(){return{frames:Ql}}var Ql,iL=g(()=>{d();Le();Ql=new Map;s(xre,"reset");s(Sre,"handleEvent");s(Cre,"data")});var ab={};x(ab,{data:()=>Nre,deps:()=>Mre,finalize:()=>Are,getFrameIdForPageLoadEvent:()=>zf,handleEvent:()=>kre,reset:()=>Fre,scoreClassificationForDOMContentLoaded:()=>uL,scoreClassificationForFirstContentfulPaint:()=>aL,scoreClassificationForLargestContentfulPaint:()=>sL,scoreClassificationForTimeToInteractive:()=>oL,scoreClassificationForTotalBlockingTime:()=>lL});function Fre(){tc.clear(),ec=[],ib=[],qf.clear()}function kre(e){k.eventIsPageLoadEvent(e)&&ec.push(e)}function _re(e,t){let r=e.args.data?.navigationId;if(!r)throw new Error("Navigation event unexpectedly had no navigation ID.");let n=zf(t),{rendererProcessesByFrame:i}=Ft(),a=i.get(n);if(!(!a||!a.get(t.pid))&&!k.isTraceEventNavigationStart(t)){if(k.isTraceEventFirstContentfulPaint(t)){let u=A.MicroSeconds(t.ts-e.ts),l=aL(u);na(n,r,{event:t,metricName:"FCP",classification:l,navigation:e,timing:u});return}if(k.isTraceEventFirstPaint(t)){let u=A.MicroSeconds(t.ts-e.ts);na(n,r,{event:t,metricName:"FP",classification:"unclass\ -ified",navigation:e,timing:u});return}if(k.isTraceEventMarkDOMContent(t)){let u=A.MicroSeconds(t.ts-e.ts),l={event:t,metricName:"DCL",classification:uL(u),navigation:e,timing:u};na(n,r,l);return}if(k.isTraceEventInteractiveTime(t)){let u=A.MicroSeconds(t.ts-e.ts),l={event:t,metricName:"TTI",classification:oL(u),navigation:e,timing:u};na(n,r,l);let c=me.millisecondsToMicroseconds(A.MilliSeconds(t.args.args.total_blocking_time_ms)),p={event:t,metricName:"TBT",classification:lL(c),navigation:e,timing:c};na(n,r,p);return}if(k.isTraceEventMarkLoad(t)){let u=A.MicroSeconds(t.ts-e.ts);na(n,r,{event:t,metricName:"L",classification:"unclassified",navigation:e,timing:u});return}if(k.isTraceEventLargestContentfulPaintCandidate(t)){let u=t.args.data?.candidateIndex;if(!u)throw new Error("Largest Contentful Paint unexpectedly had no candidateIndex.");let l=A.MicroSeconds(t.ts-e.ts),c={event:t,metricName:"LCP",classification:sL(l),navigation:e,timing:l},p=Ae.getWithDefault(tc,n,()=>new Map),f=Ae.getWithDefault( -p,r,()=>new Map).get("LCP");if(f===void 0){qf.add(c.event),na(n,r,c);return}let h=f.event;if(!k.isTraceEventLargestContentfulPaintCandidate(h))return;let y=h.args.data?.candidateIndex;if(!y)return;y<u&&(qf.delete(h),qf.add(c.event),na(n,r,c));return}if(!k.isTraceEventLayoutShift(t))return Al(t,`Unexpected event type: ${t}`)}}function na(e,t,r){let n=Ae.getWithDefault(tc,e,()=>new Map),i=Ae.getWithDefault(n,t,()=>new Map);i.delete(r.metricName),i.set(r.metricName,r)}function zf(e){if(k.isTraceEventFirstContentfulPaint(e)||k.isTraceEventInteractiveTime(e)||k.isTraceEventLargestContentfulPaintCandidate(e)||k.isTraceEventNavigationStart(e)||k.isTraceEventLayoutShift(e)||k.isTraceEventFirstPaint(e))return e.args.frame;if(k.isTraceEventMarkDOMContent(e)||k.isTraceEventMarkLoad(e)){let t=e.args.data?.frame;if(!t)throw new Error("MarkDOMContent unexpectedly had no frame ID.");return t}Al(e,`Unexpected event type: ${e}`)}function Rre(e){if(k.isTraceEventFirstContentfulPaint(e)||k.isTraceEventLargestContentfulPaintCandidate( -e)||k.isTraceEventFirstPaint(e)){let t=e.args.data?.navigationId;if(!t)throw new Error("Trace event unexpectedly had no navigation ID.");let{navigationsByNavigationId:r}=Ft(),n=r.get(t);return n||null}if(k.isTraceEventMarkDOMContent(e)||k.isTraceEventInteractiveTime(e)||k.isTraceEventLayoutShift(e)||k.isTraceEventMarkLoad(e)){let t=zf(e),{navigationsByFrameId:r}=Ft();return Pe.getNavigationForTraceEvent(e,t,r)}return k.isTraceEventNavigationStart(e)?null:Al(e,`Unexpected event type: ${e}`)}function aL(e){let t=me.secondsToMicroseconds(A.Seconds(1.8)),r=me.secondsToMicroseconds(A.Seconds(3)),n="bad";return e<=r&&(n="ok"),e<=t&&(n="good"),n}function oL(e){let t=me.secondsToMicroseconds(A.Seconds(3.8)),r=me.secondsToMicroseconds(A.Seconds(7.3)),n="bad";return e<=r&&(n="ok"),e<=t&&(n="good"),n}function sL(e){let t=me.secondsToMicroseconds(A.Seconds(2.5)),r=me.secondsToMicroseconds(A.Seconds(4)),n="bad";return e<=r&&(n="ok"),e<=t&&(n="good"),n}function uL(e){return"unclassified"}function lL(e){ -let t=me.millisecondsToMicroseconds(A.MilliSeconds(200)),r=me.millisecondsToMicroseconds(A.MilliSeconds(600)),n="bad";return e<=r&&(n="ok"),e<=t&&(n="good"),n}function Ire(){let e=[],r=[...tc.values()].flatMap(n=>[...n.values()]);for(let n=0;n<r.length;n++){let a=r[n].get("LCP");!a||!a.event||e.push(a.event)}return e}async function Are(){ec.sort((i,a)=>i.ts-a.ts);for(let i of ec){let a=Rre(i);a&&_re(a,i)}let e=Ire(),t=Ft().mainFrameId,r=ec.filter(i=>!k.isTraceEventLargestContentfulPaintCandidate(i));ib=[...e,...r].filter(k.isTraceEventMarkerEvent).filter(i=>zf(i)===t).sort((i,a)=>i.ts-a.ts)}function Nre(){return{metricScoresByFrameId:tc,allMarkerEvents:ib}}function Mre(){return["Meta"]}var tc,ib,ec,qf,cL=g(()=>{d();cr();vt();Le();Pn();tc=new Map,ib=[];s(Fre,"reset");ec=[],qf=new Set;s(kre,"handleEvent");s(_re,"storePageLoadMetricAgainstNavigationId");s(na,"storeMetricScore");s(zf,"getFrameIdForPageLoadEvent");s(Rre,"getNavigationForPageLoadEvent");s(aL,"scoreClassificationForFirstConte\ -ntfulPaint");s(oL,"scoreClassificationForTimeToInteractive");s(sL,"scoreClassificationForLargestContentfulPaint");s(uL,"scoreClassificationForDOMContentLoaded");s(lL,"scoreClassificationForTotalBlockingTime");s(Ire,"gatherFinalLCPEvents");s(Are,"finalize");s(Nre,"data");s(Mre,"deps")});var cb={};x(cb,{data:()=>Ure,deps:()=>jre,finalize:()=>Ore,handleEvent:()=>Pre,reset:()=>Lre});function Lre(){ob.length=0,sb.length=0,ub.length=0,lb={}}function Pre(e){k.isTraceEventScreenshot(e)?sb.push(e):k.isTraceEventPipelineReporter(e)&&ob.push(e)}async function Ore(){let e=Pe.createMatchedSortedSyntheticEvents(ob);lb=Object.fromEntries(e.map(t=>{let r=t.args.data.beginEvent.args.chrome_frame_reporter.frame_sequence,n=A.MicroSeconds(t.ts+t.dur);return[r,n]}));for(let t of sb){let{cat:r,name:n,ph:i,pid:a,tid:o}=t,u=Br.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:t,cat:r,name:n,ph:i,pid:a,tid:o,ts:Bre(t),args:{dataUri:`data:image/jpg;base64,${t.args.snapshot}`}});ub.push(u)}}function Bre(e){let t=parseInt(e.id,16);return t===1?e.ts:lb[t]??e.ts}function Ure(){return ub}function jre(){return["Meta"]}var ob,sb,ub,lb,dL=g(()=>{d();vt();Le();ob=[],sb=[],ub=[],lb={};s(Lre,"reset");s(Pre,"handleEvent");s(Ore,"finalize");s(Bre,"getPresentationTimestamp");s(Ure,"data"); -s(jre,"deps")});var pb={};x(pb,{data:()=>Hre,handleEvent:()=>zre,reset:()=>qre});function qre(){Hf=null,db.clear()}function zre(e){if(k.isTraceEventSelectorStats(e)&&Hf&&e.args.selector_stats){db.set(Hf,{timings:e.args.selector_stats.selector_timings});return}if(k.isTraceEventUpdateLayoutTree(e)){Hf=e;return}}function Hre(){return{dataForUpdateLayoutEvent:db}}var Hf,db,pL=g(()=>{d();Le();Hf=null,db=new Map;s(qre,"reset");s(zre,"handleEvent");s(Hre,"data")});var Db={};x(Db,{LONG_INTERACTION_THRESHOLD:()=>gb,categoryOfInteraction:()=>mL,data:()=>wb,deps:()=>Zre,finalize:()=>Jre,handleEvent:()=>$re,removeNestedInteractions:()=>fL,reset:()=>Vre,scoreClassificationForInteractionToNextPaint:()=>Xre});function Vre(){fb.length=0,hb.length=0,nc.length=0,vb.length=0,yb.clear(),Wf.length=0,rc=null,bb=2}function $re(e){if(bb!==2)throw new Error("Handler is not initialized");if(k.isTraceEventBeginCommitCompositorFrame(e)){hb.push(e);return}if(!k.isTraceEventEventTiming(e)||(k.isTraceEventEventTimingEnd(e)&&yb.set(e.id,e),fb.push(e),!e.args.data||!k.isTraceEventEventTimingStart(e)))return;let{duration:t,interactionId:r}=e.args.data;t<1||r===void 0||r===0||vb.push(e)}function mL(e){return Yre.has(e.type)?"POINTER":Kre.has(e.type)?"KEYBOARD":"OTHER"}function fL(e){let t={POINTER:new Map,KEYBOARD:new Map,OTHER:new Map};function r(i){let a=mL(i),o=t[a],u=A.MicroSeconds(i.ts+i.dur),l=o.get(u);if(!l){o.set(u,i);return}if(i.ts<l.ts)o.set(u,i);else if(i.ts===l. -ts&&i.interactionId===l.interactionId){let c=l.processingEnd-l.processingStart;i.processingEnd-i.processingStart>c&&o.set(u,i)}i.processingStart<l.processingStart&&(l.processingStart=i.processingStart,mb(l)),i.processingEnd>l.processingEnd&&(l.processingEnd=i.processingEnd,mb(l))}s(r,"storeEventIfEarliestForCategoryAndEndTime");for(let i of e)r(i);let n=Object.values(t).flatMap(i=>Array.from(i.values()));return n.sort((i,a)=>i.ts-a.ts),n}function mb(e){let t=e.args.data.beginEvent,r=e.args.data.endEvent;e.inputDelay=A.MicroSeconds(e.processingStart-t.ts),e.mainThreadHandling=A.MicroSeconds(e.processingEnd-e.processingStart),e.presentationDelay=A.MicroSeconds(r.ts-e.processingEnd)}async function Jre(){let{navigationsByFrameId:e}=Ft();for(let t of vb){let r=yb.get(t.id);if(!r||!t.args.data?.type||!t.args.data?.interactionId)continue;let n=A.MicroSeconds(me.millisecondsToMicroseconds(t.args.data.processingStart)-me.millisecondsToMicroseconds(t.args.data.timeStamp)+t.ts),i=A.MicroSeconds(me. -millisecondsToMicroseconds(t.args.data.processingEnd)-me.millisecondsToMicroseconds(t.args.data.timeStamp)+t.ts),a=t.args.frame??t.args.data.frame,u=Pe.getNavigationForTraceEvent(t,a,e)?.args.data?.navigationId,l=Br.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:t,cat:t.cat,name:t.name,pid:t.pid,tid:t.tid,ph:t.ph,processingStart:n,processingEnd:i,inputDelay:A.MicroSeconds(-1),mainThreadHandling:A.MicroSeconds(-1),presentationDelay:A.MicroSeconds(-1),args:{data:{beginEvent:t,endEvent:r,frame:a,navigationId:u}},ts:t.ts,dur:A.MicroSeconds(r.ts-t.ts),type:t.args.data.type,interactionId:t.args.data.interactionId});mb(l),nc.push(l)}bb=3,Wf.push(...fL(nc));for(let t of Wf)(!rc||rc.dur<t.dur)&&(rc=t)}function wb(){return{allEvents:fb,beginCommitCompositorFrameEvents:hb,interactionEvents:nc,interactionEventsWithNoNesting:Wf,longestInteractionEvent:rc,interactionsOverThreshold:new Set(nc.filter(e=>e.dur>gb))}}function Zre(){return["Meta"]}function Xre(e){return e<=Wre?"good": -e<=Gre?"ok":"bad"}var fb,hb,gb,Wre,Gre,rc,nc,Wf,yb,vb,bb,Yre,Kre,Eb=g(()=>{d();vt();Le();Pn();fb=[],hb=[],gb=me.millisecondsToMicroseconds(A.MilliSeconds(200)),Wre=gb,Gre=me.millisecondsToMicroseconds(A.MilliSeconds(500)),rc=null,nc=[],Wf=[],yb=new Map,vb=[],bb=1;s(Vre,"reset");s($re,"handleEvent");Yre=new Set(["pointerdown","touchstart","pointerup","touchend","mousedown","mouseup","click"]),Kre=new Set(["keydown","keypress","keyup"]);s(mL,"categoryOfInteraction");s(fL,"removeNestedInteractions");s(mb,"writeSyntheticTimespans");s(Jre,"finalize");s(wb,"data");s(Zre,"deps");s(Xre,"scoreClassificationForInteractionToNextPaint")});var Sb={};x(Sb,{FORCED_REFLOW_THRESHOLD:()=>gL,LONG_MAIN_THREAD_TASK_THRESHOLD:()=>yL,data:()=>ine,deps:()=>rne,finalize:()=>nne,handleEvent:()=>ene,reset:()=>Qre});function Qre(){Gf.clear(),Vf.clear(),Tb.length=0,xb.length=0,ic.length=0}function $f(e,t){let r=Ae.getWithDefault(Gf,e,()=>[]);r.push(t),Gf.set(e,r);let n=Ae.getWithDefault(Vf,t,()=>[]);n.push(e),Vf.set(t,n)}function ene(e){if(tne(e),e.name==="RunTask"){let{duration:t}=me.eventTimingsMicroSeconds(e);t>yL&&$f(e,"LONG_TASK");return}if(k.isTraceEventFireIdleCallback(e)){let{duration:t}=me.eventTimingsMilliSeconds(e);t>e.args.data.allottedMilliseconds&&$f(e,"IDLE_CALLBACK_OVER_TIME");return}}function tne(e){if(hL(e,Tb),hL(e,xb,k.isJSInvocationEvent(e)),xb.length&&(e.name==="Layout"||e.name==="UpdateLayoutTree")){ic.push(e);return}Tb.length===1&&(ic.reduce((r,n)=>r+(n.dur||0),0)>=gL&&ic.forEach(r=>$f(r,"FORCED_REFLOW")),ic.length=0)}function hL(e,t,r=!0){let n=t.at(-1);for(;n&&e.ts>n.ts+(n.dur||0);)t.pop(),n=t.at(-1);r&&t.push(e)} -function rne(){return["UserInteractions"]}async function nne(){let e=wb().interactionsOverThreshold;for(let t of e)$f(t,"LONG_INTERACTION")}function ine(){return{perEvent:Gf,perWarning:Vf}}var Gf,Vf,Tb,xb,ic,gL,yL,vL=g(()=>{d();cr();vt();Le();Eb();Gf=new Map,Vf=new Map,Tb=[],xb=[],ic=[],gL=me.millisecondsToMicroseconds(A.MilliSeconds(30)),yL=me.millisecondsToMicroseconds(A.MilliSeconds(50));s(Qre,"reset");s($f,"storeWarning");s(ene,"handleEvent");s(tne,"processForcedReflowWarning");s(hL,"accomodateEventInStack");s(rne,"deps");s(nne,"finalize");s(ine,"data")});var kb={};x(kb,{data:()=>lne,finalize:()=>une,handleEvent:()=>sne,initialize:()=>ane,reset:()=>one});function ane(){if(mo!==1)throw new Error("Workers Handler was not reset");mo=2}function one(){Yf.length=0,Cb.clear(),Fb.clear(),mo=1}function sne(e){if(mo!==2)throw new Error("Workers Handler is not initialized");k.isTraceEventTracingSessionIdForWorker(e)&&Yf.push(e)}async function une(){if(mo!==2)throw new Error("Handler is not initialized");for(let e of Yf)e.args.data&&(Cb.set(e.args.data.workerThreadId,e.args.data.workerId),Fb.set(e.args.data.workerId,e.args.data.url));mo=3}function lne(){if(mo!==3)throw new Error("Workers Handler is not finalized");return{workerSessionIdEvents:Yf,workerIdByThread:Cb,workerURLById:Fb}}var mo,Yf,Cb,Fb,bL=g(()=>{d();Le();mo=1,Yf=[],Cb=new Map,Fb=new Map;s(ane,"initialize");s(one,"reset");s(sne,"handleEvent");s(une,"finalize");s(lne,"data")});var ia={};x(ia,{Animations:()=>Rv,AuctionWorklets:()=>Pv,EnhancedTraces:()=>jv,ExtensionTraceData:()=>Zv,Frames:()=>I0,GPU:()=>M0,ImagePainting:()=>L0,Initiators:()=>W0,Invalidations:()=>V0,LargestImagePaint:()=>Y0,LargestTextPaint:()=>J0,LayerTree:()=>p0,LayoutShifts:()=>X0,Memory:()=>Q0,Meta:()=>a0,NetworkRequests:()=>rb,PageFrames:()=>nb,PageLoadMetrics:()=>ab,Renderer:()=>F0,Samples:()=>w0,Screenshots:()=>cb,SelectorStats:()=>pb,UserInteractions:()=>Db,UserTimings:()=>Gv,Warnings:()=>Sb,Workers:()=>kb});var wL=g(()=>{d();RM();Ym();AM();LM();$M();YM();KM();JM();ZM();XM();QM();m0();tL();rL();Pn();nL();iL();cL();k0();D0();dL();pL();Eb();Vv();vL();bL()});var DL={};var EL=g(()=>{d()});var Rs={};x(Rs,{ModelHandlers:()=>ia,Threads:()=>hf,Types:()=>DL});var fo=g(()=>{d();wL();_0();EL()});var _b={};x(_b,{deps:()=>cne,generateInsight:()=>vne});function cne(){return["Meta","Animations","LayoutShifts","NetworkRequests"]}function mne(e,t){let r=e.dur?e.ts+e.dur:e.ts;return r<t.ts&&r>=t.ts-pne}function fne(e){let t=[];for(let r of e){let n=r.args.data.beginEvent,i=r.args.data.instantEvents||[];for(let a of i){let o=a.args.data.compositeFailed,u=a.args.data.unsupportedProperties;if(!o||!u)continue;let l=dne.filter(p=>o&p.flag).map(p=>p.failure),c={name:n.args.data.displayName,failureReasons:l,unsupportedProperties:u};t.push(c)}}return t}function hne(e,t){let r=new Map;for(let n of t){let i=Pt.nearestIndexFromBeginning(e,a=>a.ts>=n.ts);if(i!==null)for(let a=i;a<e.length;a++){let o=e[a];if(o.ts>=n.ts&&o.ts<=n.ts+n.dur&&Ae.getWithDefault(r,n,()=>[]).push(o),o.ts>n.ts+n.dur)break}}return r}function TL(e,t){let r=Pt.nearestIndexFromBeginning(e,n=>n.ts>t.ts+(t.dur||0));if(r!==null)return e[r]}function gne(e,t,r,n){for(let i of e){let a=TL(t,i);if(!a)continue;let o=r.get(a);if(o)for(let u of o) -Ae.getWithDefault(n,u,()=>({iframes:[],fontRequests:[]})).iframes.push(i)}return n}function yne(e,t,r,n){let i=e.filter(a=>a.args.data.resourceType==="Font"&&a.args.data.mimeType.startsWith("font"));for(let a of i){let o=TL(t,a);if(!o||!mne(a,o))continue;let u=r.get(o);if(u)for(let l of u)Ae.getWithDefault(n,l,()=>({iframes:[],fontRequests:[]})).fontRequests.push(a)}return n}function vne(e,t){let r=s(m=>Pe.getNavigationForTraceEvent(m,t.frameId,e.Meta.navigationsByFrameId)?.args.data?.navigationId===t.navigationId,"isWithinSameNavigation"),n=e.Animations.animations.filter(r),i=fne(n),a=e.LayoutShifts.renderFrameImplCreateChildFrameEvents.filter(r),o=e.NetworkRequests.byTime.filter(r),u=e.LayoutShifts.clusters.flatMap(m=>r(m.events[0])?m.events:[]),l=e.LayoutShifts.prePaintEvents.filter(r),c=new Map,p=hne(u,l);for(let m of u)c.set(m,{iframes:[],fontRequests:[]});return gne(a,l,p,c),yne(o,l,p,c),{animationFailures:i,shifts:c}}var dne,pne,xL=g(()=>{d();cr();vt();Le();s(cne,"deps");dne=[{flag:8192, -failure:"UNSUPPORTED_CSS_PROPERTY"},{flag:2048,failure:"TRANSFROM_BOX_SIZE_DEPENDENT"},{flag:4096,failure:"FILTER_MAY_MOVE_PIXELS"},{flag:16,failure:"NON_REPLACE_COMPOSITE_MODE"},{flag:64,failure:"INCOMPATIBLE_ANIMATIONS"},{flag:8,failure:"UNSUPPORTED_TIMING_PARAMS"}],pne=me.secondsToMicroseconds(A.Seconds(.5));s(mne,"isInInvalidationWindow");s(fne,"getNonCompositedAnimations");s(hne,"getShiftsByPrePaintEvents");s(TL,"getNextPrePaintEvent");s(gne,"getIframeRootCauses");s(yne,"getFontRootCauses");s(vne,"generateInsight")});var Rb={};x(Rb,{deps:()=>Dne,generateInsight:()=>Tne});function Dne(){return["Meta","NetworkRequests"]}function Ene(e){let t=e.args.data.timing;return t?A.MilliSeconds(Math.round(t.receiveHeadersStart-t.sendEnd)):null}function Tne(e,t){let r=e.NetworkRequests.byTime.find(u=>u.args.data.requestId===t.navigationId);if(!r)throw new Error("missing document request");let n=Ene(r);if(n===null)throw new Error("missing document request timing");let i=0;n>bne&&(i=Math.max(n-wne,0));let a=Math.round(r.args.data.syntheticData.redirectionDuration/1e3);i+=a;let o={FCP:i,LCP:i};return{serverResponseTime:n,redirectDuration:A.MilliSeconds(a),metricSavings:o}}var bne,wne,SL=g(()=>{d();Le();bne=600,wne=100;s(Dne,"deps");s(Ene,"getServerTiming");s(Tne,"generateInsight")});var Ib={};x(Ib,{deps:()=>xne,generateInsight:()=>Sne});function xne(){return["UserInteractions"]}function Sne(e,t){let r=e.UserInteractions.interactionEvents.filter(o=>o.args.data.navigationId===t.navigationId);if(!r.length)return{};let n=new Map;for(let o of r){let u=o.interactionId,l=n.get(u);(!l||o.dur>l.dur)&&n.set(u,o)}let i=[...n.values()];i.sort((o,u)=>u.dur-o.dur);let a=Math.min(9,Math.floor(i.length/50));return{longestInteractionEvent:i[0],highPercentileInteractionEvent:i[a]}}var CL=g(()=>{d();s(xne,"deps");s(Sne,"generateInsight")});function Cne(e,t,r){return e.NetworkRequests.byTime.find(i=>i.args.data.url===r||i.args.data.redirects.some(u=>u.url===r)?Pe.getNavigationForTraceEvent(i,t.frameId,e.Meta.navigationsByFrameId)?.args.data?.navigationId===t.navigationId:!1)??null}function Kf(e,t,r){let n=r.args.data?.nodeId;if(!n)throw new Error("no lcp node id");let i=e.LargestImagePaint.get(n);if(!i)return null;let a=i.args.data?.imageUrl;if(!a)throw new Error("no lcp url");let o=Cne(e,t,a);if(!o)throw new Error("no lcp request found");return o}var Ab=g(()=>{d();vt();s(Cne,"findRequest");s(Kf,"findLCPRequest")});var vi,ac=g(()=>{d();(function(e){e.NO_FP="NO_FP",e.NO_LCP="NO_LCP",e.NO_DOCUMENT_REQUEST="NO_DOCUMENT_REQUEST",e.NO_LAYOUT="NO_LAYOUT"})(vi||(vi={}))});var Nb={};x(Nb,{deps:()=>kne,generateInsight:()=>_ne});function kne(){return["NetworkRequests","PageLoadMetrics","LargestImagePaint","Meta"]}function FL(e,t,r,n){let i=t.args.data.timing;if(!i)throw new Error("no timing for main resource");let a=me.secondsToMicroseconds(i.requestTime)+me.millisecondsToMicroseconds(i.receiveHeadersStart),o=A.MicroSeconds(a-e.ts),u=me.microSecondsToMilliseconds(o),l=A.MilliSeconds(r-u);if(!n)return{ttfb:u,renderDelay:l};let c=A.MicroSeconds(n.ts-e.ts),p=me.microSecondsToMilliseconds(c),m=A.MicroSeconds(n.args.data.syntheticData.finishTime-e.ts),f=me.microSecondsToMilliseconds(m),h=A.MilliSeconds(p-u),y=A.MilliSeconds(f-p);return l=A.MilliSeconds(r-f),{ttfb:u,loadDelay:h,loadTime:y,renderDelay:l}}function _ne(e,t){let r=e.NetworkRequests,n=e.Meta.navigationsByNavigationId.get(t.navigationId);if(!n)throw new Error("no trace navigation");let i=e.PageLoadMetrics.metricScoresByFrameId.get(t.frameId);if(!i)throw new Error("no frame metrics");let a=i.get(t.navigationId); -if(!a)throw new Error("no navigation metrics");let o=a.get("LCP"),u=o?.event;if(!u||!k.isTraceEventLargestContentfulPaintCandidate(u))return{warnings:[vi.NO_LCP]};let l=me.microSecondsToMilliseconds(o.timing),c=o.event?.ts?me.microSecondsToMilliseconds(o.event?.ts):void 0,p=Kf(e,t,u),m=r.byTime.find(w=>w.args.data.requestId===t.navigationId);if(!m)return{lcpMs:l,lcpTs:c,warnings:[vi.NO_DOCUMENT_REQUEST]};if(!p)return{lcpMs:l,lcpTs:c,phases:FL(n,m,l,p)};let f=u.args.data?.loadingAttr,h=p?.args.data.isLinkPreload||p?.args.data.initiator?.type==="preload",y=p?.args.data.fetchPriorityHint,b=m&&m.args.data.timing?me.secondsToMicroseconds(m.args.data.timing.requestTime)+me.millisecondsToMicroseconds(m.args.data.timing.receiveHeadersStart):void 0;return{lcpMs:l,lcpTs:c,phases:FL(n,m,l,p),shouldRemoveLazyLoading:f==="lazy",shouldIncreasePriorityHint:y!=="high",shouldPreloadImage:!h,lcpResource:p,earliestDiscoveryTimeTs:b?A.MicroSeconds(b):void 0}}var kL=g(()=>{d();fo();vt();Le();Ab();ac();s(kne, -"deps");s(FL,"breakdownPhases");s(_ne,"generateInsight")});var Mb={};x(Mb,{deps:()=>Ine,generateInsight:()=>Pne});function Ine(){return["NetworkRequests","PageLoadMetrics","LargestImagePaint"]}function Ane(e){let t=new Map;for(let[r,n]of e)r.type==="network"&&t.set(r.request.requestId,{node:r,nodeTiming:n});return t}function Nne(e,t){let r=t.simulator,n=t.metrics.firstContentfulPaint.optimisticGraph,{nodeTimings:i}=t.simulator.simulate(n),a=new Map(i),o=0,u=n.cloneWithRelationships(f=>!e.has(f.id));if(u.type!=="network")throw new Error("minimalFCPGraph not a NetworkNode");let l=Math.max(...Array.from(Array.from(a).map(f=>f[1].endTime))),c=u.request.transferSize,p=c||0;u.request.transferSize=p+o;let m=r.simulate(u).timeInMs;return u.request.transferSize=c,Math.round(Math.max(l-m,0))}function Mne(e,t){if(!e.Meta.navigationsByNavigationId.get(t.navigationId))throw new Error("no trace navigation");let n=e.PageLoadMetrics.metricScoresByFrameId.get(t.frameId);if(!n)throw new Error("no frame metrics");let i=n.get(t.navigationId);if(!i)throw new Error( -"no navigation metrics");let o=i.get("LCP")?.event;return!o||!k.isTraceEventLargestContentfulPaintCandidate(o)?!1:Kf(e,t,o)!==null}function Lne(e,t,r){if(!t.lantern)return;let n=Ane(t.lantern.metrics.firstContentfulPaint.optimisticEstimate.nodeTimings),i={FCP:0,LCP:0},a=new Map,o=new Set;for(let u of r){let l=n.get(u.args.data.requestId);if(!l)continue;let{node:c,nodeTiming:p}=l;c.traverse(f=>o.add(f.id));let m=Math.round(p.duration);m<Rne||a.set(c.id,m)}return a.size&&(i.FCP=Nne(o,t.lantern),Mne(e,t)||(i.LCP=i.FCP)),{metricSavings:i,requestIdToWastedMs:a}}function Pne(e,t){let r=e.PageLoadMetrics.metricScoresByFrameId.get(t.frameId)?.get(t.navigationId)?.get("FP")?.event?.ts;if(!r)return{renderBlockingRequests:[],warnings:[vi.NO_FP]};let n=[];for(let a of e.NetworkRequests.byTime){if(a.args.data.frame!==t.frameId||a.args.data.renderBlocking!=="blocking"&&a.args.data.renderBlocking!=="in_body_parser_blocking"||a.args.data.syntheticData.finishTime>r)continue;if(a.args.data.renderBlocking=== -"in_body_parser_blocking"){let u=a.args.data.priority,c=a.args.data.resourceType==="Script"&&u==="High";if(u!=="VeryHigh"&&!c)continue}Pe.getNavigationForTraceEvent(a,t.frameId,e.Meta.navigationsByFrameId)?.args.data?.navigationId===t.navigationId&&n.push(a)}let i=Lne(e,t,n);return{renderBlockingRequests:n,...i}}var Rne,_L=g(()=>{d();fo();vt();Le();Ab();ac();Rne=50;s(Ine,"deps");s(Ane,"getNodesAndTimingByRequestId");s(Nne,"estimateSavingsWithGraphs");s(Mne,"hasImageLCP");s(Lne,"computeSavings");s(Pne,"generateInsight")});var Lb={};x(Lb,{deps:()=>One,generateInsight:()=>Bne});function One(){return["Meta","UserInteractions"]}function Bne(e,t){let r=e.UserInteractions.beginCommitCompositorFrameEvents.filter(n=>!(n.args.frame!==t.frameId||Pe.getNavigationForTraceEvent(n,t.frameId,e.Meta.navigationsByFrameId)?.args.data?.navigationId!==t.navigationId));if(!r.length)return{mobileOptimized:null,warnings:[vi.NO_LAYOUT]};for(let n of r)if(!n.args.is_mobile_optimized)return{mobileOptimized:!1};return{mobileOptimized:!0}}var RL=g(()=>{d();vt();ac();s(One,"deps");s(Bne,"generateInsight")});var Jf={};x(Jf,{CumulativeLayoutShift:()=>_b,DocumentLatency:()=>Rb,InteractionToNextPaint:()=>Ib,LargestContentfulPaint:()=>Nb,RenderBlocking:()=>Mb,Viewport:()=>Lb});var IL=g(()=>{d();xL();SL();CL();kL();_L();RL()});var Pb=g(()=>{d();IL();ac()});var bi={};x(bi,{createGraph:()=>Ub,createNetworkRequests:()=>Bb,createProcessedNavigation:()=>Ob});function Ob(e){let t=e.Meta,r=t.mainFrameId,n=e.PageLoadMetrics.metricScoresByFrameId.get(r);if(!n)throw new st.LanternError("missing metric scores for main frame");let i=t.mainFrameNavigations.at(-1)?.args.data?.navigationId,a=i&&n.get(i);if(!a)throw new st.LanternError("missing metric scores for specified navigation");let o=s(l=>{let c=a.get(l);if(c?.event)return c.event.ts},"getTimestampOrUndefined");return{timestamps:{firstContentfulPaint:s(l=>{let c=a.get(l);if(!c?.event)throw new st.LanternError(`missing metric: ${l}`);return c.event.ts},"getTimestamp")("FCP"),largestContentfulPaint:o("LCP")}}}function NL(e){return typeof e=="string"&&(e=new URL(e)),{scheme:e.protocol.split(":")[0],host:e.hostname,securityOrigin:e.origin}}function Une(e){let t=new Map,r=["ServiceWorker thread","DedicatedWorker thread"];for(let n of e.traceEvents){if(n.name!=="thread_name"||!n.args.name||!r.includes( -n.args.name))continue;let i=t.get(n.pid);i?i.push(n.tid):t.set(n.pid,[n.tid])}return t}function jne(e,t,r){if(r.args.data.connectionId===void 0||r.args.data.connectionReused===void 0)throw new st.LanternError("Trace is too old");let n;try{n=new URL(r.args.data.url)}catch{return}let i=r.args.data.timing?{workerFetchStart:-1,workerRespondWithSettled:-1,...r.args.data.timing}:void 0,a=i?i.requestTime*1e3:r.args.data.syntheticData.downloadStart/1e3,o=!1;t.get(r.pid)?.includes(r.tid)&&(o=!0),e.Workers.workerIdByThread.has(r.tid)&&(o=!0);let l=r.args.data.initiator??{type:"other"};if(r.args.data.stackTrace){let m=r.args.data.stackTrace.map(f=>({scriptId:String(f.scriptId),url:f.url,lineNumber:f.lineNumber-1,columnNumber:f.columnNumber-1,functionName:f.functionName}));l.stack={callFrames:m}}let c=r.args.data.resourceType;r.args.data.initiator?.fetchType==="xmlhttprequest"?c="XHR":r.args.data.initiator?.fetchType==="fetch"&&(c="Fetch");let p=r.args.data.decodedBodyLength??0;if(n.protocol==="da\ -ta:"&&p===0){let m="base64,",f=n.pathname.indexOf(m);f!==-1&&(p=atob(n.pathname.substring(f+m.length)).length)}return{rawRequest:r,requestId:r.args.data.requestId,connectionId:r.args.data.connectionId,connectionReused:r.args.data.connectionReused,url:r.args.data.url,protocol:r.args.data.protocol,parsedURL:NL(n),documentURL:r.args.data.requestingFrameUrl,rendererStartTime:r.ts/1e3,networkRequestTime:a,responseHeadersEndTime:r.args.data.syntheticData.downloadStart/1e3,networkEndTime:r.args.data.syntheticData.finishTime/1e3,transferSize:r.args.data.encodedDataLength,resourceSize:p,fromDiskCache:r.args.data.syntheticData.isDiskCached,fromMemoryCache:r.args.data.syntheticData.isMemoryCached,isLinkPreload:r.args.data.isLinkPreload,finished:r.args.data.finished,failed:r.args.data.failed,statusCode:r.args.data.statusCode,initiator:l,timing:i,resourceType:c,mimeType:r.args.data.mimeType,priority:r.args.data.priority,frameId:r.args.data.frame,fromWorker:o,redirects:void 0,redirectSource:void 0,redirectDestination:void 0, -initiatorRequest:void 0}}function qne(e,t){if(e.redirectSource)return e.redirectSource;let r=qt.PageDependencyGraph.getNetworkInitiators(e)[0],n=t.get(r)||[];if(n=n.filter(i=>i.responseHeadersEndTime<=e.rendererStartTime&&i.finished&&!i.failed),n.length>1){let i=n.filter(a=>a.resourceType!==Rl.NetworkRequestTypes.Other);i.length&&(n=i)}if(n.length>1){let i=n.filter(a=>a.frameId===e.frameId);i.length&&(n=i)}if(n.length>1&&e.initiator.type==="parser"){let i=n.filter(a=>a.resourceType===Rl.NetworkRequestTypes.Document);i.length&&(n=i)}if(n.length>1){let i=n.filter(a=>a.isLinkPreload);if(i.length){let a=n.filter(u=>!u.isLinkPreload),o=a.every(u=>u.fromDiskCache||u.fromMemoryCache);a.length&&o&&(n=i)}}return n.length===1?n[0]:null}function zne(e){let t=new Map;for(let r of e){let n=t.get(r.url)||[];n.push(r),t.set(r.url,n)}for(let r of e){let n=qne(r,t);n&&(r.initiatorRequest=n)}}function Bb(e,t){let r=Une(e),n=[];for(let i of t.NetworkRequests.byTime){let a=jne(t,r,i);a&&n.push(a)}for(let i of[ -...n]){if(!i.rawRequest)continue;let a=i.rawRequest.args.data.redirects;if(!a.length)continue;let o=[];for(let u of a){let l=structuredClone(i);l.networkRequestTime=u.ts/1e3,l.rendererStartTime=l.networkRequestTime,l.networkEndTime=(u.ts+u.dur)/1e3,l.responseHeadersEndTime=l.networkEndTime,l.timing={requestTime:l.networkRequestTime/1e3,receiveHeadersStart:l.responseHeadersEndTime,receiveHeadersEnd:l.responseHeadersEndTime,proxyStart:-1,proxyEnd:-1,dnsStart:-1,dnsEnd:-1,connectStart:-1,connectEnd:-1,sslStart:-1,sslEnd:-1,sendStart:-1,sendEnd:-1,workerStart:-1,workerReady:-1,workerFetchStart:-1,workerRespondWithSettled:-1,pushStart:-1,pushEnd:-1},l.url=u.url,l.parsedURL=NL(u.url),l.statusCode=302,l.resourceType=void 0,l.transferSize=400,o.push(l),n.push(l)}o.push(i);for(let u=0;u<o.length;u++){let l=o[u];u>0&&(l.redirectSource=o[u-1],l.redirects=o.slice(0,u)),u!==o.length-1&&(l.redirectDestination=o[u+1])}for(let u=1;u<o.length;u++)o[u].requestId=`${o[u-1].requestId}:redirect`}return zne( -n),n.sort((i,a)=>i.rendererStartTime-a.rendererStartTime)}function Hne(e,t){let r=t.Meta,n=r.mainFrameNavigations.length?new Set(r.mainFrameNavigations.map(a=>a.pid)):r.topLevelRendererIds,i=new Map;for(let a of n){let o=r.threadsInProcess.get(a)??[],u=!1;for(let[l,c]of o)if(c.args.name==="CrRendererMain"){i.set(a,l),u=!0;break}if(!u){for(let[l,c]of o)if(c.args.name==="CrBrowserMain"){i.set(a,l),u=!0;break}}}return e.traceEvents.filter(a=>i.get(a.pid)===a.tid)}function Ub(e,t,r,n){let i=Hne(t,r);if(!n){n={requestedUrl:e[0].url,mainDocumentUrl:""};let a=e[0];for(;a.redirectDestination;)a=a.redirectDestination;n.mainDocumentUrl=a.url}return qt.PageDependencyGraph.createGraph(i,e,n)}var jb=g(()=>{d();fo();Il();s(Ob,"createProcessedNavigation");s(NL,"createParsedUrl");s(Une,"findWorkerThreads");s(jne,"createLanternRequest");s(qne,"chooseInitiatorRequest");s(zne,"linkInitiators");s(Bb,"createNetworkRequests");s(Hne,"collectMainThreadEvents");s(Ub,"createGraph")});var Xf={};x(Xf,{TraceParseProgressEvent:()=>oc,TraceProcessor:()=>Zf,sortHandlers:()=>ML});function ML(e){let t=new Map,r=new Set,n=s(i=>{if(t.has(i))return;if(r.has(i)){let u="";for(let l of r)(u||l===i)&&(u+=`${l}->`);throw u+=i,new Error(`Found dependency cycle in trace event handlers: ${u}`)}r.add(i);let a=e[i];if(!a)return;let o=a.deps?.();o&&o.forEach(n),t.set(i,a)},"visitHandler");for(let i of Object.keys(e))n(i);return t}var oc,Zf,qb=g(()=>{d();fo();Pb();Il();jb();Le();oc=class e extends Event{static{s(this,"TraceParseProgressEvent")}data;static eventName="traceparseprogress";constructor(t,r={bubbles:!0}){super(e.eventName,r),this.data=t}},Zf=class e extends EventTarget{static{s(this,"TraceProcessor")}#e;#t="IDLE";#n=Ln.defaults();#r=null;#i=null;static createWithAllHandlers(){return new e(ia,Ln.defaults())}static getEnabledInsightRunners(t){let r={};for(let[n,i]of Object.entries(Jf))i.deps().some(o=>!t[o])||Object.assign(r,{[n]:i});return r}constructor(t,r){super(),this.#a(t), -this.#e={Meta:ia.Meta,...t},r&&(this.#n=r),this.#o()}#o(){for(let t of Object.values(this.#e))"handleUserConfig"in t&&t.handleUserConfig&&t.handleUserConfig(this.#n)}#a(t){if(Object.keys(t).length===Object.keys(ia).length)return;let r=new Set;for(let[i,a]of Object.entries(t)){r.add(i);let o="deps"in a?a.deps():[];for(let u of o)r.add(u)}let n=new Set(Object.keys(t));r.delete("Meta");for(let i of r)if(!n.has(i))throw new Error(`Required handler ${i} not provided.`)}reset(){if(this.#t==="PARSING")throw new Error("Trace processor can't reset while parsing.");let t=Object.values(this.#e);for(let r of t)r.reset();this.#r=null,this.#i=null,this.#t="IDLE"}async parse(t,r=!1){if(this.#t!=="IDLE")throw new Error(`Trace processor can't start parsing when not idle. Current state: ${this.#t}`);try{this.#t="PARSING",await this.#s(t,r),this.#r&&this.#l(this.#r,t),this.#t="FINISHED_PARSING"}catch(n){throw this.#t="ERRORED_WHILE_PARSING",n}}async#s(t,r){let i=[...ML(this.#e).values()];for(let u of i)u. -reset();for(let u of i)u.initialize?.(r);for(let u=0;u<t.length;++u){u%5e4===0&&u&&(this.dispatchEvent(new oc({index:u,total:t.length})),await new Promise(c=>setTimeout(c,0)));let l=t[u];for(let c=0;c<i.length;++c)i[c].handleEvent(l)}for(let u of i)u.finalize&&(await new Promise(l=>setTimeout(l,0)),await u.finalize());let a=s((u,l=!0)=>{if(u instanceof Map)return new Map(u);if(u instanceof Set)return new Set(u);if(Array.isArray(u))return[...u];if(typeof u=="object"&&u&&l){let c={};for(let[p,m]of Object.entries(u))c[p]=a(m,!1);return c}return u},"shallowClone"),o={};for(let[u,l]of Object.entries(this.#e)){let c=a(l.data());Object.assign(o,{[u]:c})}this.#r=o}get traceParsedData(){return this.#t!=="FINISHED_PARSING"?null:this.#r}get insights(){return this.#t!=="FINISHED_PARSING"?null:this.#i}#u(t,r){if(!t.NetworkRequests||!t.Workers||!t.PageLoadMetrics)return;if(!t.NetworkRequests.byTime.length)throw new st.LanternError("No network requests found in trace");let n={traceEvents:r},i=Bb(n,t), -a=Ub(i,n,t),o=Ob(t),u=st.NetworkAnalyzer.analyze(i),l=gi.Simulator.createSimulator({networkAnalysis:u,throttlingMethod:"simulate"}),c={graph:a,simulator:l,processedNavigation:o},p=Rt.FirstContentfulPaint.compute(c),m=Rt.LargestContentfulPaint.compute(c,{fcpResult:p}),f=Rt.Interactive.compute(c,{lcpResult:m}),h=Rt.TotalBlockingTime.compute(c,{fcpResult:p,interactiveResult:f});return{graph:a,simulator:l,metrics:{firstContentfulPaint:p,interactive:f,largestContentfulPaint:m,totalBlockingTime:h}}}#l(t,r){this.#i=new Map;let n=e.getEnabledInsightRunners(t),i;try{i=this.#u(t,r)}catch(a){let o=["mainDocumentRequest not found","missing metric scores for main frame","missing metric: FCP","missing metric: LCP","No network requests found in trace","Trace is too old"];a instanceof st.LanternError?o.some(u=>a.message===u)||console.error(a.message):console.error(a)}for(let a of t.Meta.mainFrameNavigations){if(!a.args.frame||!a.args.data?.navigationId)continue;let o={frameId:a.args.frame,navigationId:a. -args.data.navigationId,lantern:i},u={};for(let[l,c]of Object.entries(n)){let p;try{p=c.generateInsight(t,o)}catch(m){p=m}Object.assign(u,{[l]:p})}this.#i.set(o.navigationId,u)}}};s(ML,"sortHandlers")});var LL=g(()=>{d();cr();fo();vt();qb();Le()});function Gne(e,t){Ae.getWithDefault(e,t,()=>({unsizedMedia:[],iframes:[],fontChanges:[],renderBlockingRequests:[],scriptStackTrace:[]}))}function $ne(e,t){return!Vne.has(e.args.data.renderBlocking)&&e.args.data.frame===t}function Yne(e){let t=[];for(let r=0;r<e.length;r++){let n=e[r].request.args.data.frame;$ne(e[r].request,n)&&t.push(e[r])}return t}function jL(e){if(e.nodeName==="IFRAME")return e;let t=e.children;if(!t)return null;for(let r of t){let n=jL(r);if(n)return n}return null}function zb(e){return!["auto","initial","unset","inherit"].includes(e)}function BL(e){return parseInt(e.value,10)>=0}function Kne(e){let t=/^url\("([^"]+)"\)$/,r=e.get("background-image");return r?t.test(r):!1}function Jne(e){let t=e.get("position");return t?t==="fixed"||t==="absolute":!1}function Zne(e){let t={};return t.height=e.get("height"),t.width=e.get("width"),t.aspectRatio=e.get("aspect-ratio"),t}async function Xne(e,t){let r=e.localName,n=Kne(t);return r!=="img"&&r!=="video"&&!n?!1:!Jne(t)}function Qne(e){ -let{height:t,width:r,aspectRatio:n}=e,i=!!(t&&zb(t)),a=!!(r&&zb(r)),o=!!(n&&zb(n));return i&&a||(i||a)&&o}function UL(e,t){let r=new Map;for(let n of t){let i=Pt.nearestIndexFromBeginning(e,a=>a.ts>=n.ts);if(i!==null)for(let a=i;a<e.length;a++){let o=e[a];if(o.ts>=n.ts&&o.ts<=n.ts+n.dur&&Ae.getWithDefault(r,n,()=>[]).push(o),o.ts>n.ts+n.dur)break}}return r}var PL,OL,Vne,Is,Hb=g(()=>{d();cr();vt();Le();PL=new Map,OL=new Map;s(Gne,"setDefaultValue");Vne=new Set(["non_blocking","potentially_blocking"]);s($ne,"networkRequestIsRenderBlockingInFrame");Is=class{static{s(this,"LayoutShiftRootCauses")}#e;#t=new Map;#n=new Map;#r;constructor(t,r){this.#e=t,this.#r=r?.enableIframeRootCauses??!1}async rootCausesForEvent(t,r){let n=this.#t.get(r);if(n)return n;let i=t.LayoutShifts.clusters.flatMap(o=>o.events);i.forEach(o=>Gne(this.#t,o)),await this.blameShifts(i,t);let a=this.#t.get(r);return a||null}async blameShifts(t,r){await this.linkShiftsToLayoutInvalidations(t,r),this.linkShiftsToLayoutEvents( -t,r)}async linkShiftsToLayoutInvalidations(t,r){let{prePaintEvents:n,layoutInvalidationEvents:i,scheduleStyleInvalidationEvents:a,backendNodeIds:o}=r.LayoutShifts,u=[...i,...a],l=await this.#e.pushNodesByBackendIdsToFrontend(o),c=new Map;for(let m=0;m<o.length;m++)c.set(o[m],l[m]);let p=UL(t,n);for(let m of u){let f=Pt.nearestIndexFromBeginning(n,C=>C.ts>m.ts);if(f===null)continue;let h=n[f],y=p.get(h);if(!y)continue;let b=this.getFontChangeRootCause(m,h,r),w=this.getRenderBlockRootCause(m,h,r),E=c.get(m.args.data.nodeId),T=null,S=null;if(E!==void 0&&k.isTraceEventLayoutInvalidationTracking(m)&&(T=await this.getUnsizedMediaRootCause(m,E),S=await this.getIframeRootCause(m,E)),!(!T&&!S&&!b&&!w))for(let C of y){let _=Ae.getWithDefault(this.#t,C,()=>({unsizedMedia:[],iframes:[],fontChanges:[],renderBlockingRequests:[],scriptStackTrace:[]}));T&&!_.unsizedMedia.some(L=>L.node.nodeId===T?.node.nodeId)&&C.args.frame===m.args.data.frame&&_.unsizedMedia.push(T),S&&!_.iframes.some(L=>L.iframe.nodeId=== -S?.iframe.nodeId)&&_.iframes.push(S),b&&(_.fontChanges=b),w&&(_.renderBlockingRequests=w)}}}linkShiftsToLayoutEvents(t,r){let{prePaintEvents:n}=r.LayoutShifts,i=UL(t,n),a=s(({name:u})=>u==="Layout","eventTriggersLayout"),o=r.Renderer.allTraceEntries.filter(a);for(let u of o){let l=Pt.nearestIndexFromBeginning(n,y=>y.ts>u.ts+(u.dur||0));if(l===null)continue;let c=n[l],p=i.get(c);if(!p)continue;let m=r.Renderer.entryToNode.get(u),h=(m?r.Initiators.eventToInitiator.get(m.entry):null)?.args?.data?.stackTrace;if(h)for(let y of p){let b=Ae.getWithDefault(this.#t,y,()=>({unsizedMedia:[],iframes:[],fontChanges:[],renderBlockingRequests:[],scriptStackTrace:[]}));b.scriptStackTrace.length===0&&(b.scriptStackTrace=h)}}}async getUnsizedMediaRootCause(t,r){if(t.args.data.reason!=="Size changed")return null;let n=await this.getNodeDetails(r);if(!n)return null;let i=await this.#e.getComputedStyleForNode(n.nodeId),a=new Map(i.map(l=>[l.name,l.value]));if(a&&!await Xne(n,a))return null;let o=await this. -getNodeAuthoredDimensions(n);if(Qne(o))return null;let u=a?Zne(a):{};return{node:n,authoredDimensions:o,computedDimensions:u}}async getIframeRootCause(t,r){if(!this.#r||!t.args.data.nodeName?.startsWith("IFRAME")&&t.args.data.reason!=="Style changed"&&t.args.data.reason!=="Added to layout")return null;let n=await this.getNodeDetails(r);if(!n)return null;let i=jL(n);return i?{iframe:i}:null}async getNodeDetails(t){let r=this.#n.get(t);return r!==void 0||(r=await this.#e.getNode(t),this.#n.set(t,r)),r}requestsInInvalidationWindow(t,r){let n=r.NetworkRequests.byTime.sort((u,l)=>{let c=u.ts+u.dur,p=l.ts+l.dur;return c-p}),i=Pt.nearestIndexFromEnd(n,u=>u.ts+u.dur<t.ts);if(i===null)return[];let a=me.secondsToMicroseconds(A.Seconds(.5)),o=[];for(let u=i;u>-1;u--){let l=n[u],c=l.ts+l.dur;if(t.ts-c<a){let p={request:l},m=this.#e.getInitiatorForRequest(l.args.data.url);p.initiator=m||void 0,o.push(p)}else break}return o}getFontChangeRootCause(t,r,n){if(t.args.data.reason!=="Fonts changed")return null; -let i=PL.get(r);if(i!==void 0)return i;let a=this.getFontRequestsInInvalidationWindow(this.requestsInInvalidationWindow(t,n));return PL.set(r,a),a}getFontRequestsInInvalidationWindow(t){let r=[];for(let n=0;n<t.length;n++){let i=t[n];if(!i.request.args.data.mimeType.startsWith("font"))continue;let a=this.#e.fontFaceForSource(i.request.args.data.url);!a||a.fontDisplay==="optional"||(i.fontFace=a,r.push(i))}return r}getRenderBlockRootCause(t,r,n){let i=OL.get(r);if(i!==void 0)return i;let a=Yne(this.requestsInInvalidationWindow(t,n));return OL.set(r,a),a}async nodeMatchedStylesPropertyGetter(t){let r=await this.#e.getMatchedStylesForNode(t.nodeId);function n(i){let a=r.inlineStyle?.cssProperties.find(o=>o.name===i);if(a)return a.value;for(let{rule:o}of r.matchedCSSRules||[]){let u=o.style.cssProperties.find(l=>l.name===i);if(u)return u.value}return a=r.attributesStyle?.cssProperties.find(o=>o.name===i),a?a.value:null}return s(n,"cssPropertyValueGetter"),n}async getNodeAuthoredDimensions(t){ -let r={},n=await this.nodeMatchedStylesPropertyGetter(t);if(!n)return r;let i=t.attributes||[],a=[];for(let m=0;m<i.length;m+=2)a.push({name:i[m],value:i[m+1]});let o=a.find(m=>m.name==="height"&&BL(m)),u=a.find(m=>m.name==="width"&&BL(m)),l=n("aspect-ratio")||void 0;if(o&&u&&l)return{height:o.value,width:u.value,aspectRatio:l};let c=n("height")||void 0,p=n("width")||void 0;return{height:c,width:p,aspectRatio:l}}};s(Yne,"getRenderBlockRequestsInInvalidationWindow");s(jL,"firstIframeInDOMTree");s(zb,"cssPropertyIsExplicitlySet");s(BL,"htmlAttributeIsExplicit");s(Kne,"computedStyleHasBackroundImage");s(Jne,"computedStyleHasFixedPosition");s(Zne,"getNodeComputedDimensions");s(Xne,"nodeIsUnfixedMedia");s(Qne,"dimensionsAreExplicit");s(UL,"getShiftsByPrePaintEvents")});var Gb={};x(Gb,{LayoutShiftRootCauses:()=>Is,RootCauses:()=>Wb});var Wb,qL=g(()=>{d();Hb();Hb();Wb=class{static{s(this,"RootCauses")}layoutShifts;constructor(t){this.layoutShifts=new Is(t)}}});var Qf={};x(Qf,{RootCauses:()=>Gb});var zL=g(()=>{d();qL()});var HL=g(()=>{d()});var Vb=g(()=>{d();x3();fo();vt();Pb();Il();jb();LL();qb();zL();HL();Le()});var It=g(()=>{"use strict";d();Il();Vb();});var WL=g(()=>{"use strict";d();});var GL=g(()=>{"use strict";d();Ne();ri();});var e1,VL=g(()=>{"use strict";d();nl();e1=class e{static{s(this,"ArbitraryEqualityMap")}constructor(){this._equalsFn=e.deepEquals,this._entries=[]}setEqualityFn(t){this._equalsFn=t}has(t){return this._findIndexOf(t)!==-1}get(t){return this._entries[this._findIndexOf(t)]?.value}set(t,r){let n=this._findIndexOf(t);n===-1&&(n=this._entries.length),this._entries[n]={key:t,value:r}}_findIndexOf(t){for(let r=0;r<this._entries.length;r++)if(this._equalsFn(t,this._entries[r].key))return r;return-1}static deepEquals(t,r){return kn(t,r)}}});function G(e,t){return Object.assign(e,{request:s((n,i)=>{let a=t?Object.fromEntries(t.map(f=>[f,n[f]])):n,o=i.computedCache,u=e.name,l=o.get(u)||new e1;o.set(u,l);let c=l.get(a);if(c)return c;let p={msg:`Computing artifact: ${u}`,id:`lh:computed:${u}`};N.time(p,"verbose");let m=e.compute_(a,i);return l.set(a,m),m.then(()=>N.timeEnd(p)).catch(()=>N.timeEnd(p)),m},"request")})}var De=g(()=>{"use strict";d();Ne();VL();s(G,"makeComputedArtifact")});function tie(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function rie(e,t){let r=e.length-t.length-2,n=e.lastIndexOf(".",r);return n===-1?e:e.slice(n+1)}function $b(e,t,r){if(r.validHosts!==null){let i=r.validHosts;for(let a of i)if(tie(t,a))return a}let n=0;if(t.startsWith("."))for(;n<t.length&&t[n]===".";)n+=1;return e.length===t.length-n?null:rie(t,e)}var $L=g(()=>{d();s(tie,"shareSameDomainSuffix");s(rie,"extractDomainWithSuffix");s($b,"getDomain")});function Yb(e,t){return e.slice(0,-t.length-1)}var YL=g(()=>{d();s(Yb,"getDomainWithoutSuffix")});function t1(e,t){let r=0,n=e.length,i=!1;if(!t){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;n>r+1&&e.charCodeAt(n-1)<=32;)n-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{let c=e.indexOf(":/",r);if(c!==-1){let p=c-r,m=e.charCodeAt(r),f=e.charCodeAt(r+1),h=e.charCodeAt(r+2),y=e.charCodeAt(r+3),b=e.charCodeAt(r+4);if(!(p===5&&m===104&&f===116&&h===116&&y===112&&b===115)){if(!(p===4&&m===104&&f===116&&h===116&&y===112)){if(!(p===3&&m===119&&f===115&&h===115)){if(!(p===2&&m===119&&f===115))for(let w=r;w<c;w+=1){let E=e.charCodeAt(w)|32;if(!(E>=97&&E<=122||E>=48&&E<=57||E===46||E===45||E===43))return null}}}}for(r=c+2;e.charCodeAt(r)===47;)r+=1}}let o=-1,u=-1,l=-1;for(let c=r;c<n;c+=1){let p=e.charCodeAt(c);if(p===35||p===47||p===63){n=c;break}else p===64?o=c:p===93?u=c:p===58?l=c:p>=65&&p<=90&&(i=!0)}if(o!==-1&&o>r&&o<n&&(r=o+1),e.charCodeAt(r)===91)return u!==-1?e.slice(r+1,u).toLowerCase():null;l!==-1&&l>r&&l<n&&(n=l)}for(;n>r+1&&e.charCodeAt( -n-1)===46;)n-=1;let a=r!==0||n!==e.length?e.slice(r,n):e;return i?a.toLowerCase():a}var KL=g(()=>{d();s(t1,"extractHostname")});function nie(e){if(e.length<7||e.length>15)return!1;let t=0;for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);if(n===46)t+=1;else if(n<48||n>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function iie(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,r=e.length;if(e[r-1]==="]"&&(r-=1),r-t>39)return!1;let n=!1;for(;t<r;t+=1){let i=e.charCodeAt(t);if(i===58)n=!0;else if(!(i>=48&&i<=57||i>=97&&i<=102||i>=65&&i<=90))return!1}return n}function Kb(e){return iie(e)||nie(e)}var JL=g(()=>{d();s(nie,"isProbablyIpv4");s(iie,"isProbablyIpv6");s(Kb,"isIp")});function ZL(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function r1(e){if(e.length>255||e.length===0||!ZL(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,r=-1,n=e.length;for(let i=0;i<n;i+=1){let a=e.charCodeAt(i);if(a===46){if(i-t>64||r===46||r===45||r===95)return!1;t=i}else if(!(ZL(a)||a===45||a===95))return!1;r=a}return n-t-1<=63&&r!==45}var XL=g(()=>{d();s(ZL,"isValidAscii");s(r1,"default")});function QL({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:r=!0,extractHostname:n=!0,mixedInputs:i=!0,validHosts:a=null,validateHostname:o=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:r,extractHostname:n,mixedInputs:i,validHosts:a,validateHostname:o}}function Jb(e){return e===void 0?aie:QL(e)}var aie,Zb=g(()=>{d();s(QL,"setDefaultsImpl");aie=QL({});s(Jb,"setDefaults")});function Xb(e,t){return t.length===e.length?"":e.slice(0,-t.length-1)}var eP=g(()=>{d();s(Xb,"getSubdomain")});function Qb(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null}}function ew(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.publicSuffix=null,e.subdomain=null}function tw(e,t,r,n,i){let a=Jb(n);return typeof e!="string"||(a.extractHostname?a.mixedInputs?i.hostname=t1(e,r1(e)):i.hostname=t1(e,!1):i.hostname=e,t===0||i.hostname===null)||a.detectIp&&(i.isIp=Kb(i.hostname),i.isIp)?i:a.validateHostname&&a.extractHostname&&!r1(i.hostname)?(i.hostname=null,i):(r(i.hostname,a,i),t===2||i.publicSuffix===null||(i.domain=$b(i.publicSuffix,i.hostname,a),t===3||i.domain===null)||(i.subdomain=Xb(i.hostname,i.domain),t===4)||(i.domainWithoutSuffix=Yb(i.domain,i.publicSuffix)),i)}var tP=g(()=>{d();$L();YL();KL();JL();XL();Zb();eP();s(Qb,"getEmptyResult");s(ew,"resetResult");s(tw,"parseImpl")});function n1(e,t,r){if(!t.allowPrivateDomains&&e.length>3){let n=e.length-1,i=e.charCodeAt(n),a=e.charCodeAt(n-1),o=e.charCodeAt(n-2),u=e.charCodeAt(n-3);if(i===109&&a===111&&o===99&&u===46)return r.isIcann=!0,r.isPrivate=!1,r.publicSuffix="com",!0;if(i===103&&a===114&&o===111&&u===46)return r.isIcann=!0,r.isPrivate=!1,r.publicSuffix="org",!0;if(i===117&&a===100&&o===101&&u===46)return r.isIcann=!0,r.isPrivate=!1,r.publicSuffix="edu",!0;if(i===118&&a===111&&o===103&&u===46)return r.isIcann=!0,r.isPrivate=!1,r.publicSuffix="gov",!0;if(i===116&&a===101&&o===110&&u===46)return r.isIcann=!0,r.isPrivate=!1,r.publicSuffix="net",!0;if(i===101&&a===100&&o===46)return r.isIcann=!0,r.isPrivate=!1,r.publicSuffix="de",!0}return!1}var rP=g(()=>{d();s(n1,"default")});var rw=g(()=>{d();tP();rP();Zb()});var nP,iP,aP=g(()=>{d();nP=function(){let e=[1,{}],t=[0,{city:e}];return[0,{ck:[0,{www:e}],jp:[0,{kawasaki:t,kitakyushu:t,kobe:t,nagoya:t,sapporo:t,sendai:t,yokohama:t}]}]}(),iP=function(){let e=[1,{}],t=[1,{com:e,edu:e,gov:e,net:e,mil:e,org:e}],r=[1,{gov:e,com:e,org:e,net:e,edu:e}],n=[1,{gov:e}],i=[1,{com:e}],a=[0,{"*":e}],o=[1,{com:e,edu:e,net:e,org:e}],u=[1,{co:e,net:e,org:e}],l=[1,{co:e,com:e,edu:e,gov:e,net:e,org:e}],c=[1,{com:e,org:e,net:e,edu:e,sch:e,gov:e,mil:e,name:e}],p=[1,{edu:e,biz:e,net:e,org:e,gov:e,info:e,com:e}],m=[1,{gs:e}],f=[0,{nes:e}],h=[1,{k12:e,cc:e,lib:e}],y=[1,{cc:e}],b=[1,{cc:e,lib:e}];return[0,{ac:t,ad:[1,{nom:e}],ae:[1,{co:e,net:e,org:e,sch:e,ac:e,gov:e,mil:e}],aero:[1,{"accident-investigation":e,"accident-prevention":e,aerobatic:e,aeroclub:e,aerodrome:e,agents:e,aircraft:e,airline:e,airport:e,"air-surveillance":e,airtraffic:e,"air-traffic-control":e,ambulance:e,amusement:e,association:e,author:e,ballooning:e,broker:e,caa:e,cargo:e,catering:e,certification:e, -championship:e,charter:e,civilaviation:e,club:e,conference:e,consultant:e,consulting:e,control:e,council:e,crew:e,design:e,dgca:e,educator:e,emergency:e,engine:e,engineer:e,entertainment:e,equipment:e,exchange:e,express:e,federation:e,flight:e,fuel:e,gliding:e,government:e,groundhandling:e,group:e,hanggliding:e,homebuilt:e,insurance:e,journal:e,journalist:e,leasing:e,logistics:e,magazine:e,maintenance:e,media:e,microlight:e,modelling:e,navigation:e,parachuting:e,paragliding:e,"passenger-association":e,pilot:e,press:e,production:e,recreation:e,repbody:e,res:e,research:e,rotorcraft:e,safety:e,scientist:e,services:e,show:e,skydiving:e,software:e,student:e,trader:e,trading:e,trainer:e,union:e,workinggroup:e,works:e}],af:r,ag:[1,{com:e,org:e,net:e,co:e,nom:e}],ai:[1,{off:e,com:e,net:e,org:e}],al:t,am:[1,{co:e,com:e,commune:e,net:e,org:e}],ao:[1,{ed:e,gv:e,og:e,co:e,pb:e,it:e}],aq:e,ar:[1,{bet:e,com:e,coop:e,edu:e,gob:e,gov:e,int:e,mil:e,musica:e,mutual:e,net:e,org:e,senasa:e,tur:e}],arpa:[1, -{e164:e,"in-addr":e,ip6:e,iris:e,uri:e,urn:e}],as:n,asia:e,at:[1,{ac:[1,{sth:e}],co:e,gv:e,or:e}],au:[1,{com:e,net:e,org:e,edu:[1,{act:e,catholic:e,nsw:[1,{schools:e}],nt:e,qld:e,sa:e,tas:e,vic:e,wa:e}],gov:[1,{qld:e,sa:e,tas:e,vic:e,wa:e}],asn:e,id:e,info:e,conf:e,oz:e,act:e,nsw:e,nt:e,qld:e,sa:e,tas:e,vic:e,wa:e}],aw:i,ax:e,az:[1,{com:e,net:e,int:e,gov:e,org:e,edu:e,info:e,pp:e,mil:e,name:e,pro:e,biz:e}],ba:t,bb:[1,{biz:e,co:e,com:e,edu:e,gov:e,info:e,net:e,org:e,store:e,tv:e}],bd:a,be:[1,{ac:e}],bf:n,bg:[1,{0:e,1:e,2:e,3:e,4:e,5:e,6:e,7:e,8:e,9:e,a:e,b:e,c:e,d:e,e,f:e,g:e,h:e,i:e,j:e,k:e,l:e,m:e,n:e,o:e,p:e,q:e,r:e,s:e,t:e,u:e,v:e,w:e,x:e,y:e,z:e}],bh:r,bi:[1,{co:e,com:e,edu:e,or:e,org:e}],biz:e,bj:[1,{africa:e,agro:e,architectes:e,assur:e,avocats:e,co:e,com:e,eco:e,econo:e,edu:e,info:e,loisirs:e,money:e,net:e,org:e,ote:e,resto:e,restaurant:e,tourism:e,univ:e}],bm:r,bn:r,bo:[1,{com:e,edu:e,gob:e,int:e,org:e,net:e,mil:e,tv:e,web:e,academia:e,agro:e,arte:e,blog:e,bolivia:e,ciencia:e,cooperativa:e, + `)+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function fJ(e){return Array.isArray(e)}function C3(e){return typeof e=="boolean"}function oy(e){return e===null}function hJ(e){return typeof e=="number"}function iy(e){return typeof e=="string"}function Za(e){return e===void 0}function ey(e){return mu(e)&&sy(e)==="[object RegExp]"}function mu(e){return typeof e=="object"&&e!==null}function T3(e){return mu(e)&&sy(e)==="[object Date]"}function ty(e){return mu(e)&&(sy(e)==="[object Error]"||e instanceof Error)}function ny(e){return typeof e=="function"}function sy(e){return Object.prototype.toString.call(e)}function gJ(e,t){if(!t||!mu(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}function k3(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function yJ(e){if(typeof e!="function")throw new TypeError('The "original" argument must be of type Function');if(si&&e[si]){var t=e[si];if(typeof t!="function")throw new TypeError('The "util.promisify.custom" argument m\ +ust be of type Function');return Object.defineProperty(t,si,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var n,r,a=new Promise(function(c,u){n=c,r=u}),o=[],i=0;i<arguments.length;i++)o.push(arguments[i]);o.push(function(c,u){c?r(c):n(u)});try{e.apply(this,o)}catch(c){r(c)}return a}return s(t,"fn"),Object.setPrototypeOf(t,Object.getPrototypeOf(e)),si&&Object.defineProperty(t,si,{value:t,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(t,oJ(e))}var oJ,iJ,xp,Zg,si,eo=g(()=>{d();Ha();E3();oJ=Object.getOwnPropertyDescriptors||s(function(t){for(var n=Object.keys(t),r={},a=0;a<n.length;a++)r[n[a]]=Object.getOwnPropertyDescriptor(t,n[a]);return r},"getOwnPropertyDescriptors"),iJ=/%[sdj%]/g;s(sJ,"format");s(ay,"deprecate");xp={};s(S3,"debuglog");s(Qa,"inspect");Qa.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]}; +Qa.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};s(cJ,"stylizeWithColor");s(uJ,"stylizeNoColor");s(lJ,"arrayToHash");s(Ep,"formatValue");s(dJ,"formatPrimitive");s(Qg,"formatError");s(mJ,"formatArray");s(ry,"formatProperty");s(pJ,"reduceToSingleString");s(fJ,"isArray");s(C3,"isBoolean");s(oy,"isNull");s(hJ,"isNumber");s(iy,"isString");s(Za,"isUndefined");s(ey,"isRegExp");s(mu,"isObject");s(T3,"isDate");s(ty,"isError");s(ny,"isFunction");s(sy,"objectToString");s(gJ,"_extend");s(k3,"hasOwnProperty");si=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;s(yJ,"promisify");yJ.custom=si});function ci(){this.head=null,this.tail=null,this.length=0}var F3,R3=g(()=>{d();Xi();F3=ci;s(ci,"BufferList");ci.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length};ci.prototype.unshift=function(e){var t={data:e,next:this.head};this.length===0&&(this.tail=t),this.head=t,++this.length};ci.prototype.shift=function(){if(this.length!==0){var e=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,e}};ci.prototype.clear=function(){this.head=this.tail=null,this.length=0};ci.prototype.join=function(e){if(this.length===0)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n};ci.prototype.concat=function(e){if(this.length===0)return z.alloc(0);if(this.length===1)return this.head.data;for(var t=z.allocUnsafe(e>>>0),n=this.head,r=0;n;)n.data.copy(t,r),r+=n.data.length,n=n.next;return t}});function bJ(e){if(e&&!vJ(e))throw new Error("Unknown encoding: "+e)}function ms(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),bJ(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=DJ;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=xJ;break;default:this.write=wJ;return}this.charBuffer=new z(6),this.charReceived=0,this.charLength=0}function wJ(e){return e.toString(this.encoding)}function DJ(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function xJ(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}var vJ,I3=g(()=>{d();Xi();vJ=z.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};s(bJ,"assertEncoding");s(ms,"StringDecoder");ms.prototype.write=function(e){for(var t="";this.charLength;){ +var n=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived<this.charLength)return"";e=e.slice(n,e.length),t=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var a=t.charCodeAt(t.length-1);if(a>=55296&&a<=56319){this.charLength+=this.surrogateSize,t="";continue}if(this.charReceived=this.charLength=0,e.length===0)return t;break}this.detectIncompleteChar(e);var r=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,r),r-=this.charReceived),t+=e.toString(this.encoding,0,r);var r=t.length-1,a=t.charCodeAt(r);if(a>=55296&&a<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,r)}return t};ms.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var n=e[e.length-t];if(t==1&&n>>5==6){this. +charLength=2;break}if(t<=2&&n>>4==14){this.charLength=3;break}if(t<=3&&n>>3==30){this.charLength=4;break}}this.charReceived=t};ms.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var n=this.charReceived,r=this.charBuffer,a=this.encoding;t+=r.slice(0,n).toString(a)}return t};s(wJ,"passThroughWrite");s(DJ,"utf16DetectIncompleteChar");s(xJ,"base64DetectIncompleteChar")});function EJ(e,t,n){if(typeof e.prependListener=="function")return e.prependListener(t,n);!e._events||!e._events[t]?e.on(t,n):Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]}function TJ(e,t){return e.listeners(t).length}function N3(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof yn&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,r=this.objectMode?16:16*1024;this.highWaterMark=n||n===0?n:r,this.highWaterMark=~~this.highWaterMark,this.buffer=new F3,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new ms(e.encoding),this.encoding=e.encoding)}function kt(e){if(!(this instanceof kt))return new kt( +e);this._readableState=new N3(e,this),this.readable=!0,e&&typeof e.read=="function"&&(this._read=e.read),Kn.call(this)}function O3(e,t,n,r,a){var o=kJ(t,n);if(o)e.emit("error",o);else if(n===null)t.reading=!1,FJ(e,t);else if(t.objectMode||n&&n.length>0)if(t.ended&&!a){var i=new Error("stream.push() after EOF");e.emit("error",i)}else if(t.endEmitted&&a){var c=new Error("stream.unshift() after end event");e.emit("error",c)}else{var u;t.decoder&&!a&&!r&&(n=t.decoder.write(n),u=!t.objectMode&&n.length===0),a||(t.reading=!1),u||(t.flowing&&t.length===0&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,a?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&Tp(e))),RJ(e,t)}else a||(t.reading=!1);return SJ(t)}function SJ(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}function CJ(e){return e>=A3?e=A3:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function _3(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t. +length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=CJ(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function kJ(e,t){var n=null;return!Buffer.isBuffer(t)&&typeof t!="string"&&t!==null&&t!==void 0&&!e.objectMode&&(n=new TypeError("Invalid non-string/buffer chunk")),n}function FJ(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,Tp(e)}}function Tp(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(ft("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?pn(M3,e):M3(e))}function M3(e){ft("emit readable"),e.emit("readable"),uy(e)}function RJ(e,t){t.readingMore||(t.readingMore=!0,pn(IJ,e,t))}function IJ(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(ft("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function AJ(e){return function(){var t=e._readableState;ft("pipeOnDrain",t.awaitDrain),t.awaitDrain&& +t.awaitDrain--,t.awaitDrain===0&&e.listeners("data").length&&(t.flowing=!0,uy(e))}}function _J(e){ft("readable nexttick read 0"),e.read(0)}function MJ(e,t){t.resumeScheduled||(t.resumeScheduled=!0,pn(NJ,e,t))}function NJ(e,t){t.reading||(ft("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),uy(e),t.flowing&&!t.reading&&e.read(0)}function uy(e){var t=e._readableState;for(ft("flow",t.flowing);t.flowing&&e.read()!==null;);}function L3(e,t){if(t.length===0)return null;var n;return t.objectMode?n=t.buffer.shift():!e||e>=t.length?(t.decoder?n=t.buffer.join(""):t.buffer.length===1?n=t.buffer.head.data:n=t.buffer.concat(t.length),t.buffer.clear()):n=OJ(e,t.buffer,t.decoder),n}function OJ(e,t,n){var r;return e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):e===t.head.data.length?r=t.shift():r=n?LJ(e,t):PJ(e,t),r}function LJ(e,t){var n=t.head,r=1,a=n.data;for(e-=a.length;n=n.next;){var o=n.data,i=e>o.length?o.length:e;if(i===o.length? +a+=o:a+=o.slice(0,e),e-=i,e===0){i===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(i));break}++r}return t.length-=r,a}function PJ(e,t){var n=Buffer.allocUnsafe(e),r=t.head,a=1;for(r.data.copy(n),e-=r.data.length;r=r.next;){var o=r.data,i=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,i),e-=i,e===0){i===o.length?(++a,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(i));break}++a}return t.length-=a,n}function cy(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,pn(BJ,t,e))}function BJ(e,t){!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function UJ(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function P3(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}var ft,A3,ly=g(()=>{"use strict";d();ua();eo();R3();I3();pu();Ha();kt.ReadableState=N3;ft=S3("stream");Lt(kt,Kn);s(EJ,"prependListener");s(TJ,"listenerCount");s(N3,"Re\ +adableState");s(kt,"Readable");kt.prototype.push=function(e,t){var n=this._readableState;return!n.objectMode&&typeof e=="string"&&(t=t||n.defaultEncoding,t!==n.encoding&&(e=Buffer.from(e,t),t="")),O3(this,n,e,t,!1)};kt.prototype.unshift=function(e){var t=this._readableState;return O3(this,t,e,"",!0)};kt.prototype.isPaused=function(){return this._readableState.flowing===!1};s(O3,"readableAddChunk");s(SJ,"needMoreData");kt.prototype.setEncoding=function(e){return this._readableState.decoder=new ms(e),this._readableState.encoding=e,this};A3=8388608;s(CJ,"computeNewHighWaterMark");s(_3,"howMuchToRead");kt.prototype.read=function(e){ft("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return ft("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?cy(this):Tp(this),null;if(e=_3(e,t),e===0&&t.ended)return t.length===0&&cy(this),null;var r=t.needReadable;ft("need readable",r),(t.length=== +0||t.length-e<t.highWaterMark)&&(r=!0,ft("length less than watermark",r)),t.ended||t.reading?(r=!1,ft("reading or ended",r)):r&&(ft("do read"),t.reading=!0,t.sync=!0,t.length===0&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=_3(n,t)));var a;return e>0?a=L3(e,t):a=null,a===null?(t.needReadable=!0,e=0):t.length-=e,t.length===0&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&cy(this)),a!==null&&this.emit("data",a),a};s(kJ,"chunkInvalid");s(FJ,"onEofChunk");s(Tp,"emitReadable");s(M3,"emitReadable_");s(RJ,"maybeReadMore");s(IJ,"maybeReadMore_");kt.prototype._read=function(e){this.emit("error",new Error("not implemented"))};kt.prototype.pipe=function(e,t){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e);break}r.pipesCount+=1,ft("pipe count=%d opts=%j",r.pipesCount,t);var a=!t||t.end!==!1,o=a?c:m;r.endEmitted?pn(o):n.once("end",o),e.on("unpipe",i);function i(x){ft("onunpipe"),x===n&& +m()}s(i,"onunpipe");function c(){ft("onend"),e.end()}s(c,"onend");var u=AJ(n);e.on("drain",u);var l=!1;function m(){ft("cleanup"),e.removeListener("close",y),e.removeListener("finish",v),e.removeListener("drain",u),e.removeListener("error",h),e.removeListener("unpipe",i),n.removeListener("end",c),n.removeListener("end",m),n.removeListener("data",f),l=!0,r.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&u()}s(m,"cleanup");var p=!1;n.on("data",f);function f(x){ft("ondata"),p=!1;var E=e.write(x);E===!1&&!p&&((r.pipesCount===1&&r.pipes===e||r.pipesCount>1&&P3(r.pipes,e)!==-1)&&!l&&(ft("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,p=!0),n.pause())}s(f,"ondata");function h(x){ft("onerror",x),w(),e.removeListener("error",h),TJ(e,"error")===0&&e.emit("error",x)}s(h,"onerror"),EJ(e,"error",h);function y(){e.removeListener("finish",v),w()}s(y,"onclose"),e.once("close",y);function v(){ft("onfinish"),e.removeListener("close",y),w()}s(v,"onfin\ +ish"),e.once("finish",v);function w(){ft("unpipe"),n.unpipe(e)}return s(w,"unpipe"),e.emit("pipe",n),r.flowing||(ft("pipe resume"),n.resume()),e};s(AJ,"pipeOnDrain");kt.prototype.unpipe=function(e){var t=this._readableState;if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var n=t.pipes,r=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a<r;a++)n[a].emit("unpipe",this);return this}var o=P3(t.pipes,e);return o===-1?this:(t.pipes.splice(o,1),t.pipesCount-=1,t.pipesCount===1&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)};kt.prototype.on=function(e,t){var n=Kn.prototype.on.call(this,e,t);if(e==="data")this._readableState.flowing!==!1&&this.resume();else if(e==="readable"){var r=this._readableState;!r.endEmitted&&!r.readableListening&&(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&Tp(this,r):pn(_J,this))}return n};kt. +prototype.addListener=kt.prototype.on;s(_J,"nReadingNextTick");kt.prototype.resume=function(){var e=this._readableState;return e.flowing||(ft("resume"),e.flowing=!0,MJ(this,e)),this};s(MJ,"resume");s(NJ,"resume_");kt.prototype.pause=function(){return ft("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(ft("pause"),this._readableState.flowing=!1,this.emit("pause")),this};s(uy,"flow");kt.prototype.wrap=function(e){var t=this._readableState,n=!1,r=this;e.on("end",function(){if(ft("wrapped end"),t.decoder&&!t.ended){var i=t.decoder.end();i&&i.length&&r.push(i)}r.push(null)}),e.on("data",function(i){if(ft("wrapped data"),t.decoder&&(i=t.decoder.write(i)),!(t.objectMode&&i==null)&&!(!t.objectMode&&(!i||!i.length))){var c=r.push(i);c||(n=!0,e.pause())}});for(var a in e)this[a]===void 0&&typeof e[a]=="function"&&(this[a]=function(i){return function(){return e[i].apply(e,arguments)}}(a));var o=["error","close","destroy","pause","resume"];return UJ(o,function(i){ +e.on(i,r.emit.bind(r,i))}),r._read=function(i){ft("wrapped _read",i),n&&(n=!1,e.resume())},r};kt._fromList=L3;s(L3,"fromList");s(OJ,"fromListPartial");s(LJ,"copyFromBufferString");s(PJ,"copyFromBuffer");s(cy,"endReadable");s(BJ,"endReadableNT");s(UJ,"forEach");s(P3,"indexOf")});function jJ(){}function zJ(e,t,n){this.chunk=e,this.encoding=t,this.callback=n,this.next=null}function my(e,t){Object.defineProperty(this,"buffer",{get:ay(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")}),e=e||{},this.objectMode=!!e.objectMode,t instanceof yn&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var n=e.highWaterMark,r=this.objectMode?16:16*1024;this.highWaterMark=n||n===0?n:r,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var a=e.decodeStrings===!1;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(o){YJ(t,o)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new H3(this)}function Zt(e){ +if(!(this instanceof Zt)&&!(this instanceof yn))return new Zt(e);this._writableState=new my(e,this),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev)),We.call(this)}function qJ(e,t){var n=new Error("write after end");e.emit("error",n),pn(t,n)}function HJ(e,t,n,r){var a=!0,o=!1;return n===null?o=new TypeError("May not write null values to stream"):!z.isBuffer(n)&&typeof n!="string"&&n!==void 0&&!t.objectMode&&(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),pn(r,o),a=!1),a}function WJ(e,t,n){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=z.from(t,n)),t}function GJ(e,t,n,r,a){n=WJ(t,n,r),z.isBuffer(n)&&(r="buffer");var o=t.objectMode?1:n.length;t.length+=o;var i=t.length<t.highWaterMark;if(i||(t.needDrain=!0),t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest=new zJ(n,r,a),c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+= +1}else dy(e,t,!1,o,n,r,a);return i}function dy(e,t,n,r,a,o,i){t.writelen=r,t.writecb=i,t.writing=!0,t.sync=!0,n?e._writev(a,t.onwrite):e._write(a,o,t.onwrite),t.sync=!1}function VJ(e,t,n,r,a){--t.pendingcb,n?pn(a,r):a(r),e._writableState.errorEmitted=!0,e.emit("error",r)}function $J(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function YJ(e,t){var n=e._writableState,r=n.sync,a=n.writecb;if($J(n),t)VJ(e,n,r,t,a);else{var o=z3(n);!o&&!n.corked&&!n.bufferProcessing&&n.bufferedRequest&&j3(e,n),r?pn(B3,e,n,o,a):B3(e,n,o,a)}}function B3(e,t,n,r){n||KJ(e,t),t.pendingcb--,r(),q3(e,t)}function KJ(e,t){t.length===0&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function j3(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,a=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var i=0;n;)a[i]=n,n=n.next,i+=1;dy(e,t,!0,t.length,a,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null): +t.corkedRequestsFree=new H3(t)}else{for(;n;){var c=n.chunk,u=n.encoding,l=n.callback,m=t.objectMode?1:c.length;if(dy(e,t,!1,m,c,u,l),n=n.next,t.writing)break}n===null&&(t.lastBufferedRequest=null)}t.bufferedRequestCount=0,t.bufferedRequest=n,t.bufferProcessing=!1}function z3(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function U3(e,t){t.prefinished||(t.prefinished=!0,e.emit("prefinish"))}function q3(e,t){var n=z3(t);return n&&(t.pendingcb===0?(U3(e,t),t.finished=!0,e.emit("finish")):U3(e,t)),n}function JJ(e,t,n){t.ending=!0,q3(e,t),n&&(t.finished?pn(n):e.once("finish",n)),t.ended=!0,e.writable=!1}function H3(e){var t=this;this.next=null,this.entry=null,this.finish=function(n){var r=t.entry;for(t.entry=null;r;){var a=r.callback;e.pendingcb--,a(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}}var py=g(()=>{d();eo();Xi();ua();pu();Ha();Zt.WritableState=my;Lt(Zt,We);s(jJ,"nop");s(zJ,"WriteReq");s(my,"WritableState"); +my.prototype.getBuffer=s(function(){for(var t=this.bufferedRequest,n=[];t;)n.push(t),t=t.next;return n},"writableStateGetBuffer");s(Zt,"Writable");Zt.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};s(qJ,"writeAfterEnd");s(HJ,"validChunk");Zt.prototype.write=function(e,t,n){var r=this._writableState,a=!1;return typeof t=="function"&&(n=t,t=null),z.isBuffer(e)?t="buffer":t||(t=r.defaultEncoding),typeof n!="function"&&(n=jJ),r.ended?qJ(this,n):HJ(this,r,e,n)&&(r.pendingcb++,a=GJ(this,r,e,t,n)),a};Zt.prototype.cork=function(){var e=this._writableState;e.corked++};Zt.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest&&j3(this,e))};Zt.prototype.setDefaultEncoding=s(function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError( +"Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},"setDefaultEncoding");s(WJ,"decodeChunk");s(GJ,"writeOrBuffer");s(dy,"doWrite");s(VJ,"onwriteError");s($J,"onwriteStateUpdate");s(YJ,"onwrite");s(B3,"afterWrite");s(KJ,"onwriteDrain");s(j3,"clearBuffer");Zt.prototype._write=function(e,t,n){n(new Error("not implemented"))};Zt.prototype._writev=null;Zt.prototype.end=function(e,t,n){var r=this._writableState;typeof e=="function"?(n=e,e=null,t=null):typeof t=="function"&&(n=t,t=null),e!=null&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),!r.ending&&!r.finished&&JJ(this,r,n)};s(z3,"needFinish");s(U3,"prefinish");s(q3,"finishMaybe");s(JJ,"endWritable");s(H3,"CorkedRequest")});function yn(e){if(!(this instanceof yn))return new yn(e);kt.call(this,e),Zt.call(this,e),e&&e.readable===!1&&(this.readable=!1),e&&e.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,e&&e.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",XJ)}function XJ(){this.allowHalfOpen||this._writableState.ended||pn(ZJ,this)}function ZJ(e){e.end()}var W3,Cp,Sp,pu=g(()=>{d();eo();Ha();ly();py();Lt(yn,kt);W3=Object.keys(Zt.prototype);for(Sp=0;Sp<W3.length;Sp++)Cp=W3[Sp],yn.prototype[Cp]||(yn.prototype[Cp]=Zt.prototype[Cp]);s(yn,"Duplex");s(XJ,"onend");s(ZJ,"onEndNT")});function QJ(e){this.afterTransform=function(t,n){return eX(e,t,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function eX(e,t,n){var r=e._transformState;r.transforming=!1;var a=r.writecb;if(!a)return e.emit("error",new Error("no writecb in Transform class"));r.writechunk=null,r.writecb=null,n!=null&&e.push(n),a(t);var o=e._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&e._read(o.highWaterMark)}function Sn(e){if(!(this instanceof Sn))return new Sn(e);yn.call(this,e),this._transformState=new QJ(this);var t=this;this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.once("prefinish",function(){typeof this._flush=="function"?this._flush(function(n){G3(t,n)}):G3(t)})}function G3(e,t){if(t)return e.emit("error",t);var n=e._writableState,r=e._transformState;if(n.length)throw new Error( +"Calling transform done when ws.length != 0");if(r.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}var fy=g(()=>{d();pu();eo();Lt(Sn,yn);s(QJ,"TransformState");s(eX,"afterTransform");s(Sn,"Transform");Sn.prototype.push=function(e,t){return this._transformState.needTransform=!1,yn.prototype.push.call(this,e,t)};Sn.prototype._transform=function(e,t,n){throw new Error("Not implemented")};Sn.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var a=this._readableState;(r.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};Sn.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};s(G3,"done")});function ps(e){if(!(this instanceof ps))return new ps(e);Sn.call(this,e)}var V3=g(()=>{d();fy();eo();Lt(ps,Sn);s(ps,"PassThrough");ps.prototype._transform=function(e,t,n){n(null,e)}});function Ur(){Kn.call(this)}var hy,gy=g(()=>{d();ua();eo();pu();ly();py();fy();V3();Lt(Ur,Kn);Ur.Readable=kt;Ur.Writable=Zt;Ur.Duplex=yn;Ur.Transform=Sn;Ur.PassThrough=ps;Ur.Stream=Ur;hy=Ur;s(Ur,"Stream");Ur.prototype.pipe=function(e,t){var n=this;function r(m){e.writable&&e.write(m)===!1&&n.pause&&n.pause()}s(r,"ondata"),n.on("data",r);function a(){n.readable&&n.resume&&n.resume()}s(a,"ondrain"),e.on("drain",a),!e._isStdio&&(!t||t.end!==!1)&&(n.on("end",i),n.on("close",c));var o=!1;function i(){o||(o=!0,e.end())}s(i,"onend");function c(){o||(o=!0,typeof e.destroy=="function"&&e.destroy())}s(c,"onclose");function u(m){if(l(),Kn.listenerCount(this,"error")===0)throw m}s(u,"onerror"),n.on("error",u),e.on("error",u);function l(){n.removeListener("data",r),e.removeListener("drain",a),n.removeListener("end",i),n.removeListener("close",c),n.removeListener("error",u),e.removeListener("error",u),n.removeListener("end",l),n.removeListener("close",l),e.removeListener("close",l)}return s(l,"clean\ +up"),n.on("end",l),n.on("close",l),e.on("close",l),e.emit("pipe",n),e}});var kp,yy=g(()=>{d();kp={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});function tX(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var $3,Y3=g(()=>{d();s(tX,"ZStream");$3=tX});function fs(e,t,n,r,a){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),a);return}for(var o=0;o<r;o++)e[a+o]=t[n+o]}var vy,ba,by=g(()=>{"use strict";d();s(fs,"arraySet");vy=Uint8Array,ba=Uint16Array});function gs(e){for(var t=e.length;--t>=0;)e[t]=0}function Dy(e,t,n,r,a){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=a,this.has_stree=e&&e.length}function xy(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function dM(e){return e<256?gu[e]:gu[256+(e>>>7)]}function vu(e,t){e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255}function Mn(e,t,n){e.bi_valid>wy-n?(e.bi_buf|=t<<e.bi_valid&65535,vu(e,e.bi_buf),e.bi_buf=t>>wy-e.bi_valid,e.bi_valid+=n-wy):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)}function jr(e,t,n){Mn(e,n[t*2],n[t*2+1])}function mM(e,t){var n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1}function dX(e){e.bi_valid===16?(vu(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function mX(e,t){var n=t.dyn_tree,r=t.max_code,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,i=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,u=t.stat_desc.max_length, +l,m,p,f,h,y,v=0;for(f=0;f<=ui;f++)e.bl_count[f]=0;for(n[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;l<rM;l++)m=e.heap[l],f=n[n[m*2+1]*2+1]+1,f>u&&(f=u,v++),n[m*2+1]=f,!(m>r)&&(e.bl_count[f]++,h=0,m>=c&&(h=i[m-c]),y=n[m*2],e.opt_len+=y*(f+h),o&&(e.static_len+=y*(a[m*2+1]+h)));if(v!==0){do{for(f=u-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[u]--,v-=2}while(v>0);for(f=u;f!==0;f--)for(m=e.bl_count[f];m!==0;)p=e.heap[--l],!(p>r)&&(n[p*2+1]!==f&&(e.opt_len+=(f-n[p*2+1])*n[p*2],n[p*2+1]=f),m--)}}function pM(e,t,n){var r=new Array(ui+1),a=0,o,i;for(o=1;o<=ui;o++)r[o]=a=a+n[o-1]<<1;for(i=0;i<=t;i++){var c=e[i*2+1];c!==0&&(e[i*2]=mM(r[c]++,c))}}function pX(){var e,t,n,r,a,o=new Array(ui+1);for(n=0,r=0;r<Cy-1;r++)for(Ry[r]=n,e=0;e<1<<Ty[r];e++)yu[n++]=r;for(yu[n-1]=r,a=0,r=0;r<16;r++)for(Rp[r]=a,e=0;e<1<<Fp[r];e++)gu[a++]=r;for(a>>=7;r<hs;r++)for(Rp[r]=a<<7,e=0;e<1<<Fp[r]-7;e++)gu[256+a++]=r;for(t=0;t<=ui;t++)o[t]=0;for(e=0;e<=143;)wa[e*2+1]=8,e++,o[8]++;for(;e<=255;)wa[e* +2+1]=9,e++,o[9]++;for(;e<=279;)wa[e*2+1]=7,e++,o[7]++;for(;e<=287;)wa[e*2+1]=8,e++,o[8]++;for(pM(wa,hu+1,o),e=0;e<hs;e++)fu[e*2+1]=5,fu[e*2]=mM(e,5);cM=new Dy(wa,Ty,bu+1,hu,ui),uM=new Dy(fu,Fp,0,hs,ui),lM=new Dy(new Array(0),uX,0,ky,cX)}function fM(e){var t;for(t=0;t<hu;t++)e.dyn_ltree[t*2]=0;for(t=0;t<hs;t++)e.dyn_dtree[t*2]=0;for(t=0;t<ky;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Fy*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function hM(e){e.bi_valid>8?vu(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function fX(e,t,n,r){hM(e),r&&(vu(e,n),vu(e,~n)),fs(e.pending_buf,e.window,t,n,e.pending),e.pending+=n}function X3(e,t,n,r){var a=t*2,o=n*2;return e[a]<e[o]||e[a]===e[o]&&r[t]<=r[n]}function Ey(e,t,n){for(var r=e.heap[n],a=n<<1;a<=e.heap_len&&(a<e.heap_len&&X3(t,e.heap[a+1],e.heap[a],e.depth)&&a++,!X3(t,r,e.heap[a],e.depth));)e.heap[n]=e.heap[a],n=a,a<<=1;e.heap[n]=r}function Z3(e,t,n){var r,a,o=0,i,c;if(e.last_lit!==0)do r=e.pending_buf[e.d_buf+ +o*2]<<8|e.pending_buf[e.d_buf+o*2+1],a=e.pending_buf[e.l_buf+o],o++,r===0?jr(e,a,t):(i=yu[a],jr(e,i+bu+1,t),c=Ty[i],c!==0&&(a-=Ry[i],Mn(e,a,c)),r--,i=dM(r),jr(e,i,n),c=Fp[i],c!==0&&(r-=Rp[i],Mn(e,r,c)));while(o<e.last_lit);jr(e,Fy,t)}function Sy(e,t){var n=t.dyn_tree,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.elems,i,c,u=-1,l;for(e.heap_len=0,e.heap_max=rM,i=0;i<o;i++)n[i*2]!==0?(e.heap[++e.heap_len]=u=i,e.depth[i]=0):n[i*2+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=u<2?++u:0,n[l*2]=1,e.depth[l]=0,e.opt_len--,a&&(e.static_len-=r[l*2+1]);for(t.max_code=u,i=e.heap_len>>1;i>=1;i--)Ey(e,n,i);l=o;do i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Ey(e,n,1),c=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=c,n[l*2]=n[i*2]+n[c*2],e.depth[l]=(e.depth[i]>=e.depth[c]?e.depth[i]:e.depth[c])+1,n[i*2+1]=n[c*2+1]=l,e.heap[1]=l++,Ey(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],mX(e,t),pM(n,u,e.bl_count)}function Q3(e,t,n){var r,a=-1,o,i=t[0*2+1],c=0,u=7,l=4;for(i=== +0&&(u=138,l=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=i,i=t[(r+1)*2+1],!(++c<u&&o===i)&&(c<l?e.bl_tree[o*2]+=c:o!==0?(o!==a&&e.bl_tree[o*2]++,e.bl_tree[aM*2]++):c<=10?e.bl_tree[oM*2]++:e.bl_tree[iM*2]++,c=0,a=o,i===0?(u=138,l=3):o===i?(u=6,l=3):(u=7,l=4))}function eM(e,t,n){var r,a=-1,o,i=t[0*2+1],c=0,u=7,l=4;for(i===0&&(u=138,l=3),r=0;r<=n;r++)if(o=i,i=t[(r+1)*2+1],!(++c<u&&o===i)){if(c<l)do jr(e,o,e.bl_tree);while(--c!==0);else o!==0?(o!==a&&(jr(e,o,e.bl_tree),c--),jr(e,aM,e.bl_tree),Mn(e,c-3,2)):c<=10?(jr(e,oM,e.bl_tree),Mn(e,c-3,3)):(jr(e,iM,e.bl_tree),Mn(e,c-11,7));c=0,a=o,i===0?(u=138,l=3):o===i?(u=6,l=3):(u=7,l=4)}}function hX(e){var t;for(Q3(e,e.dyn_ltree,e.l_desc.max_code),Q3(e,e.dyn_dtree,e.d_desc.max_code),Sy(e,e.bl_desc),t=ky-1;t>=3&&e.bl_tree[sM[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t}function gX(e,t,n,r){var a;for(Mn(e,t-257,5),Mn(e,n-1,5),Mn(e,r-4,4),a=0;a<r;a++)Mn(e,e.bl_tree[sM[a]*2+1],3);eM(e,e.dyn_ltree,t-1),eM(e,e.dyn_dtree,n-1)}function yX(e){var t=4093624447, +n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return K3;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return J3;for(n=32;n<bu;n++)if(e.dyn_ltree[n*2]!==0)return J3;return K3}function gM(e){tM||(pX(),tM=!0),e.l_desc=new xy(e.dyn_ltree,cM),e.d_desc=new xy(e.dyn_dtree,uM),e.bl_desc=new xy(e.bl_tree,lM),e.bi_buf=0,e.bi_valid=0,fM(e)}function Iy(e,t,n,r){Mn(e,(aX<<1)+(r?1:0),3),fX(e,t,n,!0)}function yM(e){Mn(e,nM<<1,3),jr(e,Fy,wa),dX(e)}function vM(e,t,n,r){var a,o,i=0;e.level>0?(e.strm.data_type===rX&&(e.strm.data_type=yX(e)),Sy(e,e.l_desc),Sy(e,e.d_desc),i=hX(e),a=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=a&&(a=o)):a=o=n+5,n+4<=a&&t!==-1?Iy(e,t,n,r):e.strategy===nX||o===a?(Mn(e,(nM<<1)+(r?1:0),3),Z3(e,wa,fu)):(Mn(e,(oX<<1)+(r?1:0),3),gX(e,e.l_desc.max_code+1,e.d_desc.max_code+1,i+1),Z3(e,e.dyn_ltree,e.dyn_dtree)),fM(e),r&&hM(e)}function Da(e,t,n){return e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255,e.pending_buf[e. +l_buf+e.last_lit]=n&255,e.last_lit++,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(yu[n]+bu+1)*2]++,e.dyn_dtree[dM(t)*2]++),e.last_lit===e.lit_bufsize-1}var nX,K3,J3,rX,aX,nM,oX,iX,sX,Cy,bu,hu,hs,ky,rM,ui,wy,cX,Fy,aM,oM,iM,Ty,Fp,uX,sM,lX,wa,fu,gu,yu,Ry,Rp,cM,uM,lM,tM,bM=g(()=>{"use strict";d();by();nX=4,K3=0,J3=1,rX=2;s(gs,"zero");aX=0,nM=1,oX=2,iX=3,sX=258,Cy=29,bu=256,hu=bu+1+Cy,hs=30,ky=19,rM=2*hu+1,ui=15,wy=16,cX=7,Fy=256,aM=16,oM=17,iM=18,Ty=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Fp=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],uX=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],sM=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],lX=512,wa=new Array((hu+2)*2);gs(wa);fu=new Array(hs*2);gs(fu);gu=new Array(lX);gs(gu);yu=new Array(sX-iX+1);gs(yu);Ry=new Array(Cy);gs(Ry);Rp=new Array(hs);gs(Rp);s(Dy,"StaticTreeDesc");s(xy,"TreeDesc");s(dM,"d_code");s(vu,"put_short");s(Mn,"send_bits");s(jr,"send_code");s(mM,"bi_reverse");s(dX,"bi_flush");s(mX, +"gen_bitlen");s(pM,"gen_codes");s(pX,"tr_static_init");s(fM,"init_block");s(hM,"bi_windup");s(fX,"copy_block");s(X3,"smaller");s(Ey,"pqdownheap");s(Z3,"compress_block");s(Sy,"build_tree");s(Q3,"scan_tree");s(eM,"send_tree");s(hX,"build_bl_tree");s(gX,"send_all_trees");s(yX,"detect_data_type");tM=!1;s(gM,"_tr_init");s(Iy,"_tr_stored_block");s(yM,"_tr_align");s(vM,"_tr_flush_block");s(Da,"_tr_tally")});function vX(e,t,n,r){for(var a=e&65535|0,o=e>>>16&65535|0,i=0;n!==0;){i=n>2e3?2e3:n,n-=i;do a=a+t[r++]|0,o=o+a|0;while(--i);a%=65521,o%=65521}return a|o<<16|0}var wM,DM=g(()=>{d();s(vX,"adler32");wM=vX});function bX(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function DX(e,t,n,r){var a=wX,o=r+n;e^=-1;for(var i=r;i<o;i++)e=e>>>8^a[(e^t[i])&255];return e^-1}var wX,xa,xM=g(()=>{d();s(bX,"makeTable");wX=bX();s(DX,"crc32");xa=DX});function ao(e,t){return e.msg=kp[t],t}function SM(e){return(e<<1)-(e>4?9:0)}function li(e){for(var t=e.length;--t>=0;)e[t]=0}function to(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(fs(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))}function ln(e,t){vM(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,to(e.strm)}function st(e,t){e.pending_buf[e.pending++]=t}function wu(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255}function UX(e,t,n,r){var a=e.avail_in;return a>r&&(a=r),a===0?0:(e.avail_in-=a,fs(t,e.input,e.next_in,a,n),e.state.wrap===1?e.adler=wM(e.adler,t,a,n):e.state.wrap===2&&(e.adler=xa(e.adler,t,a,n)),e.next_in+=a,e.total_in+=a,a)}function CM(e,t){var n=e.max_chain_length,r=e.strstart,a,o,i=e.prev_length,c=e.nice_match,u=e.strstart>e.w_size-br?e.strstart-(e.w_size-br):0,l=e.window,m=e. +w_mask,p=e.prev,f=e.strstart+ro,h=l[r+i-1],y=l[r+i];e.prev_length>=e.good_match&&(n>>=2),c>e.lookahead&&(c=e.lookahead);do if(a=t,!(l[a+i]!==y||l[a+i-1]!==h||l[a]!==l[r]||l[++a]!==l[r+1])){r+=2,a++;do;while(l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&l[++r]===l[++a]&&r<f);if(o=ro-(f-r),r=f-ro,o>i){if(e.match_start=t,i=o,o>=c)break;h=l[r+i-1],y=l[r+i]}}while((t=p[t&m])>u&&--n!==0);return i<=e.lookahead?i:e.lookahead}function Eu(e){var t=e.w_size,n,r,a,o,i;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-br)){fs(e.window,e.window,t,t,0),e.match_start-=t,e.strstart-=t,e.block_start-=t,r=e.hash_size,n=r;do a=e.head[--n],e.head[n]=a>=t?a-t:0;while(--r);r=t,n=r;do a=e.prev[--n],e.prev[n]=a>=t?a-t:0;while(--r);o+=t}if(e.strm.avail_in===0)break;if(r=UX(e.strm,e.window,e.strstart+e.lookahead,o),e.lookahead+=r,e.lookahead+e.insert>=pt)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=(e.ins_h<<e.hash_shift^ +e.window[i+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[i+pt-1])&e.hash_mask,e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<pt)););}while(e.lookahead<br&&e.strm.avail_in!==0)}function jX(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Eu(e),e.lookahead===0&&t===pi)return $t;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((e.strstart===0||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,ln(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-br&&(ln(e,!1),e.strm.avail_out===0))return $t}return e.insert=0,t===oo?(ln(e,!0),e.strm.avail_out===0?mi:bs):(e.strstart>e.block_start&&(ln(e,!1),e.strm.avail_out===0),$t)}function _y(e,t){for(var n,r;;){if(e.lookahead<br){if(Eu(e),e.lookahead<br&&t===pi)return $t;if(e.lookahead===0)break}if(n=0,e.lookahead>=pt&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+pt-1])&e.hash_mask, +n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-br&&(e.match_length=CM(e,n)),e.match_length>=pt)if(r=Da(e,e.strstart-e.match_start,e.match_length-pt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=pt){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+pt-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else r=Da(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(ln(e,!1),e.strm.avail_out===0))return $t}return e.insert=e.strstart<pt-1?e.strstart:pt-1,t===oo?(ln(e,!0),e.strm.avail_out===0?mi:bs):e.last_lit&&(ln(e,!1),e.strm.avail_out===0)?$t:xu}function ys(e,t){for(var n,r,a;;){if(e.lookahead<br){if(Eu(e),e.lookahead<br&&t===pi)return $t;if(e. +lookahead===0)break}if(n=0,e.lookahead>=pt&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+pt-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=pt-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-br&&(e.match_length=CM(e,n),e.match_length<=5&&(e.strategy===CX||e.match_length===pt&&e.strstart-e.match_start>4096)&&(e.match_length=pt-1)),e.prev_length>=pt&&e.match_length<=e.prev_length){a=e.strstart+e.lookahead-pt,r=Da(e,e.strstart-1-e.prev_match,e.prev_length-pt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=a&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+pt-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=pt-1,e.strstart++,r&&(ln(e,!1),e.strm.avail_out===0))return $t}else if(e.match_available){if(r=Da(e,0,e.window[e.strstart-1]),r&& +ln(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return $t}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=Da(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<pt-1?e.strstart:pt-1,t===oo?(ln(e,!0),e.strm.avail_out===0?mi:bs):e.last_lit&&(ln(e,!1),e.strm.avail_out===0)?$t:xu}function zX(e,t){for(var n,r,a,o,i=e.window;;){if(e.lookahead<=ro){if(Eu(e),e.lookahead<=ro&&t===pi)return $t;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=pt&&e.strstart>0&&(a=e.strstart-1,r=i[a],r===i[++a]&&r===i[++a]&&r===i[++a])){o=e.strstart+ro;do;while(r===i[++a]&&r===i[++a]&&r===i[++a]&&r===i[++a]&&r===i[++a]&&r===i[++a]&&r===i[++a]&&r===i[++a]&&a<o);e.match_length=ro-(o-a),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=pt?(n=Da(e,1,e.match_length-pt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Da(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(ln(e,!1),e.strm.avail_out=== +0))return $t}return e.insert=0,t===oo?(ln(e,!0),e.strm.avail_out===0?mi:bs):e.last_lit&&(ln(e,!1),e.strm.avail_out===0)?$t:xu}function qX(e,t){for(var n;;){if(e.lookahead===0&&(Eu(e),e.lookahead===0)){if(t===pi)return $t;break}if(e.match_length=0,n=Da(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(ln(e,!1),e.strm.avail_out===0))return $t}return e.insert=0,t===oo?(ln(e,!0),e.strm.avail_out===0?mi:bs):e.last_lit&&(ln(e,!1),e.strm.avail_out===0)?$t:xu}function zr(e,t,n,r,a){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=a}function HX(e){e.window_size=2*e.w_size,li(e.head),e.max_lazy_match=vs[e.level].max_lazy,e.good_match=vs[e.level].good_length,e.nice_match=vs[e.level].nice_length,e.max_chain_length=vs[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=pt-1,e.match_available=0,e.ins_h=0}function WX(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this. +pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Oy,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new ba(OX*2),this.dyn_dtree=new ba((2*MX+1)*2),this.bl_tree=new ba((2*NX+1)*2),li(this.dyn_ltree),li(this.dyn_dtree),li(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new ba(LX+1),this.heap=new ba(2*My+1),li(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new ba(2*My+1),li(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert= +0,this.bi_buf=0,this.bi_valid=0}function GX(e){var t;return!e||!e.state?ao(e,io):(e.total_in=e.total_out=0,e.data_type=RX,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?Ly:di,e.adler=t.wrap===2?0:1,t.last_flush=pi,gM(t),no)}function Py(e){var t=GX(e);return t===no&&HX(e.state),t}function kM(e,t,n,r,a,o){if(!e)return io;var i=1;if(t===SX&&(t=6),r<0?(i=0,r=-r):r>15&&(i=2,r-=16),a<1||a>IX||n!==Oy||r<8||r>15||t<0||t>9||o<0||o>FX)return ao(e,io);r===8&&(r=9);var c=new WX;return e.state=c,c.strm=e,c.wrap=i,c.gzhead=null,c.w_bits=r,c.w_size=1<<c.w_bits,c.w_mask=c.w_size-1,c.hash_bits=a+7,c.hash_size=1<<c.hash_bits,c.hash_mask=c.hash_size-1,c.hash_shift=~~((c.hash_bits+pt-1)/pt),c.window=new vy(c.w_size*2),c.head=new ba(c.hash_size),c.prev=new ba(c.w_size),c.lit_bufsize=1<<a+6,c.pending_buf_size=c.lit_bufsize*4,c.pending_buf=new vy(c.pending_buf_size),c.d_buf=1*c.lit_bufsize,c.l_buf=3*c.lit_bufsize,c.level=t,c.strategy=o,c.method=n,Py(e)}function FM(e,t){var n, +r,a,o;if(!e||!e.state||t>EM||t<0)return e?ao(e,io):io;if(r=e.state,!e.output||!e.input&&e.avail_in!==0||r.status===Du&&t!==oo)return ao(e,e.avail_out===0?Ay:io);if(r.strm=e,n=r.last_flush,r.last_flush=t,r.status===Ly)if(r.wrap===2)e.adler=0,st(r,31),st(r,139),st(r,8),r.gzhead?(st(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),st(r,r.gzhead.time&255),st(r,r.gzhead.time>>8&255),st(r,r.gzhead.time>>16&255),st(r,r.gzhead.time>>24&255),st(r,r.level===9?2:r.strategy>=Ip||r.level<2?4:0),st(r,r.gzhead.os&255),r.gzhead.extra&&r.gzhead.extra.length&&(st(r,r.gzhead.extra.length&255),st(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=xa(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=Ny):(st(r,0),st(r,0),st(r,0),st(r,0),st(r,0),st(r,r.level===9?2:r.strategy>=Ip||r.level<2?4:0),st(r,BX),r.status=di);else{var i=Oy+(r.w_bits-8<<4)<<8,c=-1;r.strategy>=Ip||r.level<2?c=0:r.level<6?c=1:r.level===6?c=2:c=3,i|=c<<6,r.strstart!== +0&&(i|=PX),i+=31-i%31,r.status=di,wu(r,i),r.strstart!==0&&(wu(r,e.adler>>>16),wu(r,e.adler&65535)),e.adler=1}if(r.status===Ny)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(r.gzhead.extra.length&65535)&&!(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=xa(e.adler,r.pending_buf,r.pending-a,a)),to(e),a=r.pending,r.pending===r.pending_buf_size));)st(r,r.gzhead.extra[r.gzindex]&255),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(e.adler=xa(e.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=Ap)}else r.status=Ap;if(r.status===Ap)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=xa(e.adler,r.pending_buf,r.pending-a,a)),to(e),a=r.pending,r.pending===r.pending_buf_size)){o=1;break}r.gzindex<r.gzhead.name.length?o=r.gzhead.name.charCodeAt(r.gzindex++)&255:o=0,st(r,o)}while(o!==0);r.gzhead.hcrc&&r.pending>a&&(e.adler=xa(e.adler,r.pending_buf,r.pending-a,a)),o===0&&(r.gzindex=0,r.status= +_p)}else r.status=_p;if(r.status===_p)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=xa(e.adler,r.pending_buf,r.pending-a,a)),to(e),a=r.pending,r.pending===r.pending_buf_size)){o=1;break}r.gzindex<r.gzhead.comment.length?o=r.gzhead.comment.charCodeAt(r.gzindex++)&255:o=0,st(r,o)}while(o!==0);r.gzhead.hcrc&&r.pending>a&&(e.adler=xa(e.adler,r.pending_buf,r.pending-a,a)),o===0&&(r.status=Mp)}else r.status=Mp;if(r.status===Mp&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&to(e),r.pending+2<=r.pending_buf_size&&(st(r,e.adler&255),st(r,e.adler>>8&255),e.adler=0,r.status=di)):r.status=di),r.pending!==0){if(to(e),e.avail_out===0)return r.last_flush=-1,no}else if(e.avail_in===0&&SM(t)<=SM(n)&&t!==oo)return ao(e,Ay);if(r.status===Du&&e.avail_in!==0)return ao(e,Ay);if(e.avail_in!==0||r.lookahead!==0||t!==pi&&r.status!==Du){var u=r.strategy===Ip?qX(r,t):r.strategy===kX?zX(r,t):vs[r.level].func(r,t);if((u===mi||u===bs)&&(r.status=Du),u=== +$t||u===mi)return e.avail_out===0&&(r.last_flush=-1),no;if(u===xu&&(t===xX?yM(r):t!==EM&&(Iy(r,0,0,!1),t===EX&&(li(r.head),r.lookahead===0&&(r.strstart=0,r.block_start=0,r.insert=0))),to(e),e.avail_out===0))return r.last_flush=-1,no}return t!==oo?no:r.wrap<=0?TM:(r.wrap===2?(st(r,e.adler&255),st(r,e.adler>>8&255),st(r,e.adler>>16&255),st(r,e.adler>>24&255),st(r,e.total_in&255),st(r,e.total_in>>8&255),st(r,e.total_in>>16&255),st(r,e.total_in>>24&255)):(wu(r,e.adler>>>16),wu(r,e.adler&65535)),to(e),r.wrap>0&&(r.wrap=-r.wrap),r.pending!==0?no:TM)}function RM(e){var t;return!e||!e.state?io:(t=e.state.status,t!==Ly&&t!==Ny&&t!==Ap&&t!==_p&&t!==Mp&&t!==di&&t!==Du?ao(e,io):(e.state=null,t===di?ao(e,TX):no))}var pi,xX,EX,oo,EM,no,TM,io,TX,Ay,SX,CX,Ip,kX,FX,RX,Oy,IX,AX,_X,My,MX,NX,OX,LX,pt,ro,br,PX,Ly,Ny,Ap,_p,Mp,di,Du,$t,xu,mi,bs,BX,vs,IM=g(()=>{d();by();bM();DM();xM();yy();pi=0,xX=1,EX=3,oo=4,EM=5,no=0,TM=1,io=-2,TX=-3,Ay=-5,SX=-1,CX=1,Ip=2,kX=3,FX=4,RX=2,Oy=8,IX=9,AX=29,_X=256,My=_X+1+AX,MX= +30,NX=19,OX=2*My+1,LX=15,pt=3,ro=258,br=ro+pt+1,PX=32,Ly=42,Ny=69,Ap=73,_p=91,Mp=103,di=113,Du=666,$t=1,xu=2,mi=3,bs=4,BX=3;s(ao,"err");s(SM,"rank");s(li,"zero");s(to,"flush_pending");s(ln,"flush_block_only");s(st,"put_byte");s(wu,"putShortMSB");s(UX,"read_buf");s(CM,"longest_match");s(Eu,"fill_window");s(jX,"deflate_stored");s(_y,"deflate_fast");s(ys,"deflate_slow");s(zX,"deflate_rle");s(qX,"deflate_huff");s(zr,"Config");vs=[new zr(0,0,0,0,jX),new zr(4,4,8,4,_y),new zr(4,5,16,8,_y),new zr(4,6,32,32,_y),new zr(4,4,16,16,ys),new zr(8,16,32,32,ys),new zr(8,16,128,128,ys),new zr(8,32,128,256,ys),new zr(32,128,258,1024,ys),new zr(32,258,258,4096,ys)];s(HX,"lm_init");s(WX,"DeflateState");s(GX,"deflateResetKeep");s(Py,"deflateReset");s(kM,"deflateInit2");s(FM,"deflate");s(RM,"deflateEnd")});var AM=g(()=>{d()});var Bp={};T(Bp,{DEFLATE:()=>Ds,DEFLATERAW:()=>ws,GUNZIP:()=>Op,GZIP:()=>Tu,INFLATE:()=>Lp,INFLATERAW:()=>Su,NONE:()=>By,UNZIP:()=>Cu,Z_BEST_COMPRESSION:()=>eZ,Z_BEST_SPEED:()=>QX,Z_BINARY:()=>sZ,Z_BLOCK:()=>PM,Z_BUF_ERROR:()=>XX,Z_DATA_ERROR:()=>JX,Z_DEFAULT_COMPRESSION:()=>tZ,Z_DEFAULT_STRATEGY:()=>iZ,Z_DEFLATED:()=>UM,Z_ERRNO:()=>YX,Z_FILTERED:()=>nZ,Z_FINISH:()=>LM,Z_FIXED:()=>oZ,Z_FULL_FLUSH:()=>OM,Z_HUFFMAN_ONLY:()=>rZ,Z_NEED_DICT:()=>$X,Z_NO_COMPRESSION:()=>ZX,Z_NO_FLUSH:()=>_M,Z_OK:()=>Pp,Z_PARTIAL_FLUSH:()=>MM,Z_RLE:()=>aZ,Z_STREAM_END:()=>BM,Z_STREAM_ERROR:()=>KX,Z_SYNC_FLUSH:()=>NM,Z_TEXT:()=>cZ,Z_TREES:()=>VX,Z_UNKNOWN:()=>uZ,Zlib:()=>qr});function qr(e){if(e<Ds||e>Cu)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function lZ(e,t){for(var n=0;n<e.length;n++)this[t+n]=e[n]}var By,Ds,Lp,Tu,Op,ws,Su,Cu,_M,MM,NM,OM,LM,PM,VX,Pp,BM, +$X,YX,KX,JX,XX,ZX,QX,eZ,tZ,nZ,rZ,aZ,oZ,iZ,sZ,cZ,uZ,UM,Np,jM=g(()=>{d();yy();Y3();IM();AM();By=0,Ds=1,Lp=2,Tu=3,Op=4,ws=5,Su=6,Cu=7,_M=0,MM=1,NM=2,OM=3,LM=4,PM=5,VX=6,Pp=0,BM=1,$X=2,YX=-1,KX=-2,JX=-3,XX=-5,ZX=0,QX=1,eZ=9,tZ=-1,nZ=1,rZ=2,aZ=3,oZ=4,iZ=0,sZ=0,cZ=1,uZ=2,UM=8;s(qr,"Zlib");qr.prototype.init=function(e,t,n,r,a){this.windowBits=e,this.level=t,this.memLevel=n,this.strategy=r,(this.mode===Tu||this.mode===Op)&&(this.windowBits+=16),this.mode===Cu&&(this.windowBits+=32),(this.mode===ws||this.mode===Su)&&(this.windowBits=-this.windowBits),this.strm=new $3;var o;switch(this.mode){case Ds:case Tu:case ws:o=kM(this.strm,this.level,UM,this.windowBits,this.memLevel,this.strategy);break;case Lp:case Op:case Su:case Cu:o=(this.strm,this.windowBits,void 0);break;default:throw new Error("Unknown mode "+this.mode)}if(o!==Pp){this._error(o);return}this.write_in_progress=!1,this.init_done=!0};qr.prototype.params=function(){throw new Error("deflateParams Not supported")};qr.prototype._writeCheck= +function(){if(!this.init_done)throw new Error("write before init");if(this.mode===By)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")};qr.prototype.write=function(e,t,n,r,a,o,i){this._writeCheck(),this.write_in_progress=!0;var c=this;return process.nextTick(function(){c.write_in_progress=!1;var u=c._write(e,t,n,r,a,o,i);c.callback(u[0],u[1]),c.pending_close&&c.close()}),this};s(lZ,"bufferSet");qr.prototype.writeSync=function(e,t,n,r,a,o,i){return this._writeCheck(),this._write(e,t,n,r,a,o,i)};qr.prototype._write=function(e,t,n,r,a,o,i){if(this.write_in_progress=!0,e!==_M&&e!==MM&&e!==NM&&e!==OM&&e!==LM&&e!==PM)throw new Error("Invalid flush value");t==null&&(t=new Buffer(0),r=0,n=0),a._set?a.set=a._set:a.set=lZ;var c=this.strm;c.avail_in=r,c.input=t,c.next_in=n,c.avail_out=i,c.output=a,c.next_out=o;var u;switch(this.mode){case Ds:case Tu:case ws:u=FM(c,e);break;case Cu:case Lp:case Op:case Su: +u=void 0;break;default:throw new Error("Unknown mode "+this.mode)}return u!==BM&&u!==Pp&&this._error(u),this.write_in_progress=!1,[c.avail_in,c.avail_out]};qr.prototype.close=function(){if(this.write_in_progress){this.pending_close=!0;return}this.pending_close=!1,this.mode===Ds||this.mode===Tu||this.mode===ws?RM(this.strm):(this.strm,void 0),this.mode=By};qr.prototype.reset=function(){switch(this.mode){case Ds:case ws:Np=Py(this.strm);break;case Lp:case Su:Np=(this.strm,void 0);break}Np!==Pp&&this._error(Np)};qr.prototype._error=function(e){this.onerror(kp[e]+": "+this.strm.msg,e),this.write_in_progress=!1,this.pending_close&&this.close()}});function dZ(e,t){if(!e)throw new Error(t)}function zM(e){return new ku(e)}function qM(e,t,n){return typeof t=="function"&&(n=t,t={}),mZ(new ku(t),e,n)}function HM(e,t){return pZ(new Up(t),e)}function mZ(e,t,n){var r=[],a=0;e.on("error",i),e.on("end",c),e.end(t),o();function o(){for(var u;(u=e.read())!==null;)r.push(u),a+=u.length;e.once("readable",o)}s(o,"flow");function i(u){e.removeListener("end",c),e.removeListener("readable",o),n(u)}s(i,"onError");function c(){var u=Buffer.concat(r,a);r=[],n(null,u),e.close()}s(c,"onEnd")}function pZ(e,t){if(typeof t=="string"&&(t=new Buffer(t)),!Buffer.isBuffer(t))throw new TypeError("Not a string or buffer");var n=ee.Z_FINISH;return e._processChunk(t,n)}function jy(e){if(!(this instanceof jy))return new jy(e);Pt.call(this,e,ee.DEFLATE)}function zy(e){if(!(this instanceof zy))return new zy(e);Pt.call(this,e,ee.INFLATE)}function ku(e){if(!(this instanceof ku))return new ku(e);Pt.call(this,e,ee.GZIP)}function Up(e){if(!(this instanceof Up))return new Up( +e);Pt.call(this,e,ee.GUNZIP)}function qy(e){if(!(this instanceof qy))return new qy(e);Pt.call(this,e,ee.DEFLATERAW)}function Hy(e){if(!(this instanceof Hy))return new Hy(e);Pt.call(this,e,ee.INFLATERAW)}function Wy(e){if(!(this instanceof Wy))return new Wy(e);Pt.call(this,e,ee.UNZIP)}function Pt(e,t){if(this._opts=e=e||{},this._chunkSize=e.chunkSize||ee.Z_DEFAULT_CHUNK,Sn.call(this,e),e.flush&&e.flush!==ee.Z_NO_FLUSH&&e.flush!==ee.Z_PARTIAL_FLUSH&&e.flush!==ee.Z_SYNC_FLUSH&&e.flush!==ee.Z_FULL_FLUSH&&e.flush!==ee.Z_FINISH&&e.flush!==ee.Z_BLOCK)throw new Error("Invalid flush flag: "+e.flush);if(this._flushFlag=e.flush||ee.Z_NO_FLUSH,e.chunkSize&&(e.chunkSize<ee.Z_MIN_CHUNK||e.chunkSize>ee.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBits<ee.Z_MIN_WINDOWBITS||e.windowBits>ee.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.level<ee.Z_MIN_LEVEL||e.level>ee.Z_MAX_LEVEL))throw new Error("Invalid compression l\ +evel: "+e.level);if(e.memLevel&&(e.memLevel<ee.Z_MIN_MEMLEVEL||e.memLevel>ee.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=ee.Z_FILTERED&&e.strategy!=ee.Z_HUFFMAN_ONLY&&e.strategy!=ee.Z_RLE&&e.strategy!=ee.Z_FIXED&&e.strategy!=ee.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!Buffer.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new ee.Zlib(t);var n=this;this._hadError=!1,this._binding.onerror=function(o,i){n._binding=null,n._hadError=!0;var c=new Error(o);c.errno=i,c.code=ee.codes[i],n.emit("error",c)};var r=ee.Z_DEFAULT_COMPRESSION;typeof e.level=="number"&&(r=e.level);var a=ee.Z_DEFAULT_STRATEGY;typeof e.strategy=="number"&&(a=e.strategy),this._binding.init(e.windowBits||ee.Z_DEFAULT_WINDOWBITS,r,e.memLevel||ee.Z_DEFAULT_MEMLEVEL,a,e.dictionary),this._buffer=new Buffer(this._chunkSize),this._offset=0,this._closed=!1,this._level=r,this._strategy= +a,this.once("end",this.close)}var ee,Uy,Gy=g(()=>{d();gy();jM();eo();s(dZ,"assert");ee={};Object.keys(Bp).forEach(function(e){ee[e]=Bp[e]});ee.Z_MIN_WINDOWBITS=8;ee.Z_MAX_WINDOWBITS=15;ee.Z_DEFAULT_WINDOWBITS=15;ee.Z_MIN_CHUNK=64;ee.Z_MAX_CHUNK=1/0;ee.Z_DEFAULT_CHUNK=16*1024;ee.Z_MIN_MEMLEVEL=1;ee.Z_MAX_MEMLEVEL=9;ee.Z_DEFAULT_MEMLEVEL=8;ee.Z_MIN_LEVEL=-1;ee.Z_MAX_LEVEL=9;ee.Z_DEFAULT_LEVEL=ee.Z_DEFAULT_COMPRESSION;Uy={Z_OK:ee.Z_OK,Z_STREAM_END:ee.Z_STREAM_END,Z_NEED_DICT:ee.Z_NEED_DICT,Z_ERRNO:ee.Z_ERRNO,Z_STREAM_ERROR:ee.Z_STREAM_ERROR,Z_DATA_ERROR:ee.Z_DATA_ERROR,Z_MEM_ERROR:ee.Z_MEM_ERROR,Z_BUF_ERROR:ee.Z_BUF_ERROR,Z_VERSION_ERROR:ee.Z_VERSION_ERROR};Object.keys(Uy).forEach(function(e){Uy[Uy[e]]=e});s(zM,"createGzip");s(qM,"gzip");s(HM,"gunzipSync");s(mZ,"zlibBuffer");s(pZ,"zlibBufferSync");s(jy,"Deflate");s(zy,"Inflate");s(ku,"Gzip");s(Up,"Gunzip");s(qy,"DeflateRaw");s(Hy,"InflateRaw");s(Wy,"Unzip");s(Pt,"Zlib");Lt(Pt,Sn);Pt.prototype.params=function(e,t,n){if(e<ee.Z_MIN_LEVEL||e> +ee.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=ee.Z_FILTERED&&t!=ee.Z_HUFFMAN_ONLY&&t!=ee.Z_RLE&&t!=ee.Z_FIXED&&t!=ee.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var r=this;this.flush(ee.Z_SYNC_FLUSH,function(){r._binding.params(e,t),r._hadError||(r._level=e,r._strategy=t,n&&n())})}else process.nextTick(n)};Pt.prototype.reset=function(){return this._binding.reset()};Pt.prototype._flush=function(e){this._transform(new Buffer(0),"",e)};Pt.prototype.flush=function(e,t){var n=this._writableState;if((typeof e=="function"||e===void 0&&!t)&&(t=e,e=ee.Z_FULL_FLUSH),n.ended)t&&process.nextTick(t);else if(n.ending)t&&this.once("end",t);else if(n.needDrain){var r=this;this.once("drain",function(){r.flush(t)})}else this._flushFlag=e,this.write(new Buffer(0),"",t)};Pt.prototype.close=function(e){if(e&&process.nextTick(e),!this._closed){this._closed=!0,this._binding.close();var t=this;process.nextTick(function(){t. +emit("close")})}};Pt.prototype._transform=function(e,t,n){var r,a=this._writableState,o=a.ending||a.ended,i=o&&(!e||a.length===e.length);if(!e===null&&!Buffer.isBuffer(e))return n(new Error("invalid input"));i?r=ee.Z_FINISH:(r=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||ee.Z_NO_FLUSH)),this._processChunk(e,r,n)};Pt.prototype._processChunk=function(e,t,n){var r=e&&e.length,a=this._chunkSize-this._offset,o=0,i=this,c=typeof n=="function";if(!c){var u=[],l=0,m;this.on("error",function(v){m=v});do var p=this._binding.writeSync(t,e,o,r,this._buffer,this._offset,a);while(!this._hadError&&y(p[0],p[1]));if(this._hadError)throw m;var f=Buffer.concat(u,l);return this.close(),f}var h=this._binding.write(t,e,o,r,this._buffer,this._offset,a);h.buffer=e,h.callback=y;function y(v,w){if(!i._hadError){var x=a-w;if(dZ(x>=0,"have should not go down"),x>0){var E=i._buffer.slice(i._offset,i._offset+x);i._offset+=x,c?i.push(E):(u.push(E),l+=E.length)}if((w===0||i._offset>=i._chunkSize)&& +(a=i._chunkSize,i._offset=0,i._buffer=new Buffer(i._chunkSize)),w===0){if(o+=r-v,r=v,!c)return!0;var S=i._binding.write(t,e,o,r,i._buffer,i._offset,i._chunkSize);S.callback=y,S.buffer=e;return}if(!c)return!1;n()}}s(y,"callback")};Lt(jy,Pt);Lt(zy,Pt);Lt(ku,Pt);Lt(Up,Pt);Lt(qy,Pt);Lt(Hy,Pt);Lt(Wy,Pt)});var Z,Vy=g(()=>{d();Z=class extends Error{static{s(this,"LanternError")}}});var jp,WM,fZ,hZ,Ea,GM=g(()=>{d();Vy();jp=class{static{s(this,"UrlUtils")}static rewriteChromeInternalUrl(t){return!t||!t.startsWith("chrome://")?t:(t.endsWith("/")&&(t=t.replace(/\/$/,"")),t.replace(/^chrome:\/\/chrome\//,"chrome://"))}static equalWithExcludedFragments(t,n){[t,n]=[t,n].map(this.rewriteChromeInternalUrl);try{let r=new URL(t);r.hash="";let a=new URL(n);return a.hash="",r.href===a.href}catch{return!1}}},WM=14*1024,fZ=.4,hZ={Document:.9,XHR:.9,Fetch:.9},Ea=class e{static{s(this,"NetworkAnalyzer")}static get summary(){return"__SUMMARY__"}static groupByOrigin(t){let n=new Map;return t.forEach(r=>{let a=r.parsedURL.securityOrigin,o=n.get(a)||[];o.push(r),n.set(a,o)}),n}static getSummary(t){t.sort((r,a)=>r-a);let n;if(t.length===0)n=t[0];else if(t.length%2===0){let r=t[Math.floor((t.length-1)/2)],a=t[Math.floor((t.length-1)/2)+1];n=(r+a)/2}else n=t[Math.floor((t.length-1)/2)];return{min:t[0],max:t[t.length-1],avg:t.reduce((r,a)=>r+a,0)/t.length,median:n}}static summarize(t){let n=new Map, +r=[];for(let[a,o]of t)n.set(a,e.getSummary(o)),r.push(...o);return n.set(e.summary,e.getSummary(r)),n}static estimateValueByOrigin(t,n){let r=e.estimateIfConnectionWasReused(t),a=e.groupByOrigin(t),o=new Map;for(let[i,c]of a.entries()){let u=[];for(let l of c){let m=l.timing;if(!m)continue;let p=n({request:l,timing:m,connectionReused:r.get(l.requestId)});typeof p<"u"&&(u=u.concat(p))}u.length&&o.set(i,u)}return o}static estimateRTTViaConnectionTiming(t){let{timing:n,connectionReused:r,request:a}=t;if(r)return;let{connectStart:o,sslStart:i,sslEnd:c,connectEnd:u}=n;if(u>=0&&o>=0&&a.protocol.startsWith("h3"))return u-o;if(i>=0&&c>=0&&i!==o)return[u-i,i-o];if(o>=0&&u>=0)return u-o}static estimateRTTViaDownloadTiming(t){let{timing:n,connectionReused:r,request:a}=t;if(r||a.transferSize<=WM||!Number.isFinite(n.receiveHeadersEnd)||n.receiveHeadersEnd<0)return;let i=a.networkEndTime-a.networkRequestTime-n.receiveHeadersEnd,c=Math.log2(a.transferSize/WM);if(!(c>5))return i/c}static estimateRTTViaSendStartTiming(t){ +let{timing:n,connectionReused:r,request:a}=t;if(r||!Number.isFinite(n.sendStart)||n.sendStart<0)return;let o=1;return a.protocol.startsWith("h3")||(o+=1),a.parsedURL.scheme==="https"&&(o+=1),n.sendStart/o}static estimateRTTViaHeadersEndTiming(t){let{timing:n,connectionReused:r,request:a}=t;if(!Number.isFinite(n.receiveHeadersEnd)||n.receiveHeadersEnd<0||!a.resourceType)return;let o=hZ[a.resourceType]||fZ,i=n.receiveHeadersEnd*o,c=1;return r||(c+=1,a.protocol.startsWith("h3")||(c+=1),a.parsedURL.scheme==="https"&&(c+=1)),Math.max((n.receiveHeadersEnd-i)/c,3)}static estimateResponseTimeByOrigin(t,n){return e.estimateValueByOrigin(t,({request:r,timing:a})=>{if(r.serverResponseTime!==void 0)return r.serverResponseTime;if(!Number.isFinite(a.receiveHeadersEnd)||a.receiveHeadersEnd<0||!Number.isFinite(a.sendEnd)||a.sendEnd<0)return;let o=a.receiveHeadersEnd-a.sendEnd,i=r.parsedURL.securityOrigin,c=n.get(i)||n.get(e.summary)||0;return Math.max(o-c,0)})}static canTrustConnectionInformation(t){let n=new Map; +for(let r of t){let a=n.get(r.connectionId)||!r.connectionReused;n.set(r.connectionId,a)}return n.size<=1?!1:Array.from(n.values()).every(r=>r)}static estimateIfConnectionWasReused(t,n){let{forceCoarseEstimates:r=!1}=n||{};if(!r&&e.canTrustConnectionInformation(t))return new Map(t.map(i=>[i.requestId,!!i.connectionReused]));let a=new Map,o=e.groupByOrigin(t);for(let i of o.values()){let c=i.map(l=>l.networkEndTime).reduce((l,m)=>Math.min(l,m),1/0);for(let l of i)a.set(l.requestId,l.networkRequestTime>=c||l.protocol==="h2");let u=i.reduce((l,m)=>l.networkRequestTime>m.networkRequestTime?m:l);a.set(u.requestId,!1)}return a}static estimateRTTByOrigin(t,n){let{forceCoarseEstimates:r=!1,coarseEstimateMultiplier:a=.3,useDownloadEstimates:o=!0,useSendStartEstimates:i=!0,useHeadersEndEstimates:c=!0}=n||{},u=e.estimateIfConnectionWasReused(t),l=e.groupByOrigin(t),m=new Map;for(let[p,f]of l.entries()){let y=function(v,w=1){for(let x of f){let E=x.timing;if(!E||!x.transferSize)continue;let S=v({request:x, +timing:E,connectionReused:u.get(x.requestId)});S!==void 0&&(Array.isArray(S)?h.push(...S.map(k=>k*w)):h.push(S*w))}};s(y,"collectEstimates");let h=[];r||y(this.estimateRTTViaConnectionTiming),h.length||(o&&y(this.estimateRTTViaDownloadTiming,a),i&&y(this.estimateRTTViaSendStartTiming,a),c&&y(this.estimateRTTViaHeadersEndTiming,a)),h.length&&m.set(p,h)}if(!m.size)throw new Z("No timing information available");return e.summarize(m)}static estimateServerResponseTimeByOrigin(t,n){let r=(n||{}).rttByOrigin;if(!r){r=new Map;let o=e.estimateRTTByOrigin(t,n);for(let[i,c]of o.entries())r.set(i,c.min)}let a=e.estimateResponseTimeByOrigin(t,r);return e.summarize(a)}static estimateThroughput(t){let n=0,r=t.reduce((c,u)=>(u.parsedURL?.scheme==="data"||u.failed||!u.finished||u.statusCode>300||!u.transferSize||(n+=u.transferSize,c.push({time:u.responseHeadersEndTime/1e3,isStart:!0}),c.push({time:u.networkEndTime/1e3,isStart:!1})),c),[]).sort((c,u)=>c.time-u.time);if(!r.length)return null;let a=0,o=0, +i=0;return r.forEach(c=>{c.isStart?(a===0&&(o=c.time),a++):(a--,a===0&&(i+=c.time-o))}),n*8/i}static computeRTTAndServerResponseTime(t){let n=new Map;for(let[c,u]of e.estimateRTTByOrigin(t).entries())n.set(c,u.min);let r=Math.min(...Array.from(n.values())),a=e.estimateServerResponseTimeByOrigin(t,{rttByOrigin:n}),o=new Map,i=new Map;for(let[c,u]of a.entries()){let l=n.get(c)||r;o.set(c,l-r),i.set(c,u.median)}return{rtt:r,additionalRttByOrigin:o,serverResponseTimeByOrigin:i}}static analyze(t){let n=e.estimateThroughput(t);return n===null?null:{throughput:n,...e.computeRTTAndServerResponseTime(t)}}static findResourceForUrl(t,n){return t.find(r=>n.startsWith(r.url)&&jp.equalWithExcludedFragments(r.url,n))}static findLastDocumentForUrl(t,n){let r=t.filter(a=>a.resourceType==="Document"&&n.startsWith(a.url)&&jp.equalWithExcludedFragments(a.url,n));return r[r.length-1]}static resolveRedirects(t){for(;t.redirectDestination;)t=t.redirectDestination;return t}}});var ct={};T(ct,{LanternError:()=>Z,NetworkAnalyzer:()=>Ea});var qn=g(()=>{d();Vy();GM()});var Xe,zp=g(()=>{d();qn();Xe=class e{static{s(this,"BaseNode")}static types={NETWORK:"network",CPU:"cpu"};_id;_isMainDocument;dependents;dependencies;constructor(t){this._id=t,this._isMainDocument=!1,this.dependents=[],this.dependencies=[]}get id(){return this._id}get type(){throw new Z("Unimplemented")}get startTime(){throw new Z("Unimplemented")}get endTime(){throw new Z("Unimplemented")}setIsMainDocument(t){this._isMainDocument=t}isMainDocument(){return this._isMainDocument}getDependents(){return this.dependents.slice()}getNumberOfDependents(){return this.dependents.length}getDependencies(){return this.dependencies.slice()}getNumberOfDependencies(){return this.dependencies.length}getRootNode(){let t=this;for(;t.dependencies.length;)t=t.dependencies[0];return t}addDependent(t){t.addDependency(this)}addDependency(t){if(t===this)throw new Z("Cannot add dependency on itself");this.dependencies.includes(t)||(t.dependents.push(this),this.dependencies.push(t))}removeDependent(t){t.removeDependency( +this)}removeDependency(t){if(!this.dependencies.includes(t))return;let n=t.dependents.indexOf(this);t.dependents.splice(n,1),this.dependencies.splice(this.dependencies.indexOf(t),1)}removeAllDependencies(){for(let t of this.dependencies.slice())this.removeDependency(t)}isDependentOn(t){let n=!1;return this.traverse(r=>{n||(n=r===t)},r=>n?[]:r.getDependencies()),n}cloneWithoutRelationships(){let t=new e(this.id);return t.setIsMainDocument(this._isMainDocument),t}cloneWithRelationships(t){let n=this.getRootNode(),r=new Map;n.traverse(o=>{if(!r.has(o.id)){if(t===void 0){r.set(o.id,o.cloneWithoutRelationships());return}t(o)&&o.traverse(i=>r.set(i.id,i.cloneWithoutRelationships()),i=>i.dependencies.filter(c=>!r.has(c.id)))}}),n.traverse(o=>{let i=r.get(o.id);if(i)for(let c of o.dependencies){let u=r.get(c.id);if(!u)throw new Z("Dependency somehow not cloned");i.addDependency(u)}});let a=r.get(this.id);if(!a)throw new Z("Cloned graph missing node");return a}traverse(t,n){for(let{node:r,traversalPath:a}of this. +traverseGenerator(n))t(r,a)}*traverseGenerator(t){t||(t=s(a=>a.getDependents(),"getNextNodes"));let n=[[this]],r=new Set([this.id]);for(;n.length;){let a=n.shift(),o=a[0];yield{node:o,traversalPath:a};for(let i of t(o))r.has(i.id)||(r.add(i.id),n.push([i,...a]))}}static hasCycle(t,n="both"){if(n==="both")return e.hasCycle(t,"dependents")||e.hasCycle(t,"dependencies");let r=new Set,a=[],o=[t],i=new Map([[t,0]]);for(;o.length;){let c=o.pop();if(a.includes(c))return!0;if(r.has(c))continue;for(;a.length>i.get(c);)a.pop();r.add(c),a.push(c);let u=n==="dependents"?c.dependents:c.dependencies;for(let l of u)o.includes(l)||(o.push(l),i.set(l,a.length))}return!1}canDependOn(t){return t.startTime<=this.startTime}}});var Fu,$y=g(()=>{d();zp();Fu=class e extends Xe{static{s(this,"CPUNode")}_event;_childEvents;correctedEndTs;constructor(t,n=[],r){let a=`${t.tid}.${t.ts}`;super(a),this._event=t,this._childEvents=n,this.correctedEndTs=r}get type(){return Xe.types.CPU}get startTime(){return this._event.ts}get endTime(){return this.correctedEndTs?this.correctedEndTs:this._event.ts+this._event.dur}get duration(){return this.endTime-this.startTime}get event(){return this._event}get childEvents(){return this._childEvents}didPerformLayout(){return this._childEvents.some(t=>t.name==="Layout")}getEvaluateScriptURLs(){let t=new Set;for(let n of this._childEvents)n.name==="EvaluateScript"&&(!n.args.data||!n.args.data.url||t.add(n.args.data.url));return t}cloneWithoutRelationships(){return new e(this._event,this._childEvents,this.correctedEndTs)}}});function VM(e){let t=e.includes(":")?e.slice(0,e.indexOf(":")):e;return gZ.includes(t)}var gZ,xs,Yy=g(()=>{d();zp();gZ=["blob","data","intent","file","filesystem","chrome-extension"];s(VM,"isNonNetworkProtocol");xs=class e extends Xe{static{s(this,"NetworkNode")}_request;constructor(t){super(t.requestId),this._request=t}get type(){return Xe.types.NETWORK}get startTime(){return this._request.rendererStartTime*1e3}get endTime(){return this._request.networkEndTime*1e3}get rawRequest(){return this._request.rawRequest}get request(){return this._request}get initiatorType(){return this._request.initiator&&this._request.initiator.type}get fromDiskCache(){return!!this._request.fromDiskCache}get isNonNetworkProtocol(){return VM(this.request.protocol)||VM(this.request.parsedURL.scheme)}get isConnectionless(){return this.fromDiskCache||this.isNonNetworkProtocol}hasRenderBlockingPriority(){let t=this._request.priority,n=this._request.resourceType==="Script",r=this._request.resourceType==="Document"; +return t==="VeryHigh"||t==="High"&&n||t==="High"&&r}cloneWithoutRelationships(){let t=new e(this._request);return t.setIsMainDocument(this._isMainDocument),t}}});var yZ,vZ,bZ,wZ,DZ,xZ,Ky,$M=g(()=>{d();qn();$y();Yy();yZ="RunTask",vZ="ThreadControllerImpl::RunTask",bZ="ThreadControllerImpl::DoWork",wZ="TaskQueueManager::ProcessTaskFromWorkQueue",DZ=10,xZ=/^video/,Ky=class e{static{s(this,"PageDependencyGraph")}static getNetworkInitiators(t){if(!t.initiator)return[];if(t.initiator.url)return[t.initiator.url];if(t.initiator.type==="script"){let n=new Set,r=t.initiator.stack;for(;r;){let a=r.callFrames||[];for(let o of a)o.url&&n.add(o.url);r=r.parent}return Array.from(n)}return[]}static getNetworkNodeOutput(t){let n=[],r=new Map,a=new Map,o=new Map;return t.forEach(i=>{if(xZ.test(i.mimeType)||i.fromWorker)return;for(;r.has(i.requestId);)i.requestId+=":duplicate";let c=new xs(i);n.push(c);let u=a.get(i.url)||[];if(u.push(c),r.set(i.requestId,c),a.set(i.url,u),i.frameId&&i.resourceType==="Document"&&i.documentURL===i.url){let l=o.has(i.frameId)?null:c;o.set(i.frameId,l)}}),{nodes:n,idToNodeMap:r,urlToNodeMap:a,frameIdToNodeMap:o}}static isScheduleableTask(t){ +return t.name===yZ||t.name===vZ||t.name===bZ||t.name===wZ}static assertHasToplevelEvents(t){if(!t.some(this.isScheduleableTask))throw new Z("Could not find any top level events")}static getCPUNodes(t){let n=[],r=0;for(e.assertHasToplevelEvents(t);r<t.length;){let a=t[r];if(r++,!e.isScheduleableTask(a)||!a.dur)continue;let o,i=[];for(let c=a.ts+a.dur;r<t.length&&t[r].ts<c;r++){let u=t[r];if(e.isScheduleableTask(u)&&u.dur){o=u.ts-1;break}i.push(u)}n.push(new Fu(a,i,o))}return n}static linkNetworkNodes(t,n){n.nodes.forEach(r=>{let a=r.request.initiatorRequest||t.request,o=n.idToNodeMap.get(a.requestId)||t,i=!o.isDependentOn(r)&&r.canDependOn(o),c=e.getNetworkInitiators(r.request);if(c.length?c.forEach(l=>{let m=n.urlToNodeMap.get(l)||[];m.length===1&&m[0].startTime<=r.startTime&&!m[0].isDependentOn(r)?r.addDependency(m[0]):i&&o.addDependent(r)}):i&&o.addDependent(r),r!==t&&r.getDependencies().length===0&&r.canDependOn(t)&&r.addDependency(t),!r.request.redirects)return;let u=[...r.request. +redirects,r.request];for(let l=1;l<u.length;l++){let m=n.idToNodeMap.get(u[l-1].requestId),p=n.idToNodeMap.get(u[l].requestId);p&&m&&p.addDependency(m)}})}static linkCPUNodes(t,n,r){let a=new Set(["XHR","Fetch","Script"]);function o(h,y){let v=n.idToNodeMap.get(y);if(!v||v.startTime<=h.startTime)return;let{request:w}=v,x=w.resourceType||w.redirectDestination?.resourceType;a.has(x)&&h.addDependent(v)}s(o,"addDependentNetworkRequest");function i(h,y){if(!y)return;let v=n.frameIdToNodeMap.get(y);v&&(v.startTime>=h.startTime||h.addDependency(v))}s(i,"addDependencyOnFrame");function c(h,y){if(!y)return;let v=-100*1e3,w=n.urlToNodeMap.get(y)||[],x=null,E=1/0;for(let S of w){if(h.startTime<=S.startTime)return;let k=h.startTime-S.endTime;k>=v&&k<E&&(x=S,E=k)}x&&h.addDependency(x)}s(c,"addDependencyOnUrl");let u=new Map;for(let h of r){for(let y of h.childEvents){if(!y.args.data)continue;let v=y.args.data.url,w=(y.args.data.stackTrace||[]).map(x=>x.url).filter(Boolean);switch(y.name){case"Timer\ +Install":u.set(y.args.data.timerId,h),w.forEach(x=>c(h,x));break;case"TimerFire":{let x=u.get(y.args.data.timerId);if(!x||x.endTime>h.startTime)break;x.addDependent(h);break}case"InvalidateLayout":case"ScheduleStyleRecalculation":i(h,y.args.data.frame),w.forEach(x=>c(h,x));break;case"EvaluateScript":i(h,y.args.data.frame),c(h,v),w.forEach(x=>c(h,x));break;case"XHRReadyStateChange":if(y.args.data.readyState!==4)break;c(h,v),w.forEach(x=>c(h,x));break;case"FunctionCall":case"v8.compile":i(h,y.args.data.frame),c(h,v);break;case"ParseAuthorStyleSheet":i(h,y.args.data.frame),c(h,y.args.data.styleSheetUrl);break;case"ResourceSendRequest":i(h,y.args.data.frame),o(h,y.args.data.requestId),w.forEach(x=>c(h,x));break}}h.getNumberOfDependencies()===0&&h.canDependOn(t)&&h.addDependency(t)}let l=DZ*1e3,m=!1,p=!1,f=!1;for(let h of r){let y=!1;!m&&h.childEvents.some(v=>v.name==="Layout")&&(y=m=!0),!p&&h.childEvents.some(v=>v.name==="Paint")&&(y=p=!0),!f&&h.childEvents.some(v=>v.name==="ParseHTML")&&(y= +f=!0),!(y||h.duration>=l)&&(h.getNumberOfDependencies()===1||h.getNumberOfDependents()<=1)&&e.pruneNode(h)}}static pruneNode(t){let n=t.getDependencies(),r=t.getDependents();for(let a of n){t.removeDependency(a);for(let o of r)a.addDependent(o)}for(let a of r)t.removeDependent(a)}static debugNormalizeRequests(t){for(let a of t)a.rendererStartTime=Math.round(a.rendererStartTime*1e3)/1e3,a.networkRequestTime=Math.round(a.networkRequestTime*1e3)/1e3,a.responseHeadersEndTime=Math.round(a.responseHeadersEndTime*1e3)/1e3,a.networkEndTime=Math.round(a.networkEndTime*1e3)/1e3;for(let a of t)delete a.rawRequest,a.initiatorRequest&&(a.initiatorRequest={id:a.initiatorRequest.requestId}),a.redirectDestination&&(a.redirectDestination={id:a.redirectDestination.requestId}),a.redirectSource&&(a.redirectSource={id:a.redirectSource.requestId}),a.redirects&&(a.redirects=a.redirects.map(o=>o.requestId));let r=t.map(a=>({requestId:a.requestId,connectionId:a.connectionId,connectionReused:a.connectionReused, +url:a.url,protocol:a.protocol,parsedURL:a.parsedURL,documentURL:a.documentURL,rendererStartTime:a.rendererStartTime,networkRequestTime:a.networkRequestTime,responseHeadersEndTime:a.responseHeadersEndTime,networkEndTime:a.networkEndTime,transferSize:a.transferSize,resourceSize:a.resourceSize,fromDiskCache:a.fromDiskCache,fromMemoryCache:a.fromMemoryCache,finished:a.finished,statusCode:a.statusCode,redirectSource:a.redirectSource,redirectDestination:a.redirectDestination,redirects:a.redirects,failed:a.failed,initiator:a.initiator,timing:a.timing?{requestTime:a.timing.requestTime,proxyStart:a.timing.proxyStart,proxyEnd:a.timing.proxyEnd,dnsStart:a.timing.dnsStart,dnsEnd:a.timing.dnsEnd,connectStart:a.timing.connectStart,connectEnd:a.timing.connectEnd,sslStart:a.timing.sslStart,sslEnd:a.timing.sslEnd,workerStart:a.timing.workerStart,workerReady:a.timing.workerReady,workerFetchStart:a.timing.workerFetchStart,workerRespondWithSettled:a.timing.workerRespondWithSettled,sendStart:a.timing.sendStart, +sendEnd:a.timing.sendEnd,pushStart:a.timing.pushStart,pushEnd:a.timing.pushEnd,receiveHeadersStart:a.timing.receiveHeadersStart,receiveHeadersEnd:a.timing.receiveHeadersEnd}:a.timing,resourceType:a.resourceType,mimeType:a.mimeType,priority:a.priority,initiatorRequest:a.initiatorRequest,frameId:a.frameId,fromWorker:a.fromWorker,isLinkPreload:a.isLinkPreload,serverResponseTime:a.serverResponseTime})).filter(a=>!a.fromWorker);console.log(r)}static createGraph(t,n,r){let a=e.getNetworkNodeOutput(n),o=e.getCPUNodes(t),{requestedUrl:i,mainDocumentUrl:c}=r;if(!i)throw new Z("requestedUrl is required to get the root request");if(!c)throw new Z("mainDocumentUrl is required to get the main resource");let u=Ea.findResourceForUrl(n,i);if(!u)throw new Z("rootRequest not found");let l=a.idToNodeMap.get(u.requestId);if(!l)throw new Z("rootNode not found");let m=Ea.findLastDocumentForUrl(n,c);if(!m)throw new Z("mainDocumentRequest not found");let p=a.idToNodeMap.get(m.requestId);if(!p)throw new Z("mai\ +nDocumentNode not found");if(e.linkNetworkNodes(l,a),e.linkCPUNodes(l,a,o),p.setIsMainDocument(!0),xs.hasCycle(l))throw new Z("Invalid dependency graph created, cycle detected");return l}static printGraph(t,n=100){function r(l,m,p=" "){return l+p.repeat(Math.max(m-l.length,0))}s(r,"padRight");let a=[];t.traverse(l=>a.push(l)),a.sort((l,m)=>l.startTime-m.startTime);let o=a[0].startTime,u=(a.reduce((l,m)=>Math.max(l,m.endTime),0)-o)/n;a.forEach(l=>{let m=Math.round((l.startTime-o)/u),p=Math.ceil((l.endTime-l.startTime)/u),f=r("",m)+r("",p,"="),h=l.request?l.request.url:l.type;console.log(r(f,n),`| ${h.slice(0,30)}`)})}}});var Ht={};T(Ht,{BaseNode:()=>Xe,CPUNode:()=>Fu,NetworkNode:()=>xs,PageDependencyGraph:()=>Ky});var Hr=g(()=>{d();zp();$y();Yy();$M()});var vn,so=g(()=>{d();qn();Hr();vn=class{static{s(this,"Metric")}static getScriptUrls(t,n){let r=new Set;return t.traverse(a=>{a.type===Xe.types.NETWORK&&a.request.resourceType==="Script"&&n?.(a)&&r.add(a.request.url)}),r}static get coefficients(){throw new Z("coefficients unimplemented!")}static getScaledCoefficients(t){return this.coefficients}static getOptimisticGraph(t,n){throw new Z("Optimistic graph unimplemented!")}static getPessimisticGraph(t,n){throw new Z("Pessmistic graph unimplemented!")}static getEstimateFromSimulation(t,n){return t}static compute(t,n){let{simulator:r,graph:a,processedNavigation:o}=t,i=this.name.replace("Lantern",""),c=this.getOptimisticGraph(a,o),u=this.getPessimisticGraph(a,o),l={label:`optimistic${i}`},m=r.simulate(c,l);l={label:`pessimistic${i}`};let p=r.simulate(u,l),f=this.getEstimateFromSimulation(m,{...n,optimistic:!0}),h=this.getEstimateFromSimulation(p,{...n,optimistic:!1}),y=this.getScaledCoefficients(r.rtt),v=y.intercept>0?Math.min(1,f.timeInMs/ +1e3):1;return{timing:y.intercept*v+y.optimistic*f.timeInMs+y.pessimistic*h.timeInMs,optimisticEstimate:f,pessimisticEstimate:h,optimisticGraph:c,pessimisticGraph:u}}}});var Es,Jy=g(()=>{d();Hr();so();Es=class extends vn{static{s(this,"FirstContentfulPaint")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getRenderBlockingNodeData(t,{cutoffTimestamp:n,treatNodeAsRenderBlocking:r,additionalCpuNodesToTreatAsRenderBlocking:a}){let o=new Map,i=[];t.traverse(h=>{if(h.type===Xe.types.CPU){h.startTime<=n&&i.push(h);let y=h.getEvaluateScriptURLs();for(let v of y){let w=o.get(v)||h;o.set(v,h.startTime<w.startTime?h:w)}}}),i.sort((h,y)=>h.startTime-y.startTime);let c=vn.getScriptUrls(t,h=>h.endTime<=n&&r(h)),u=new Set,l=new Set;for(let h of c){let y=o.get(h);if(y){if(i.includes(y)){l.add(y.id);continue}u.add(h)}}let m=i.find(h=>h.didPerformLayout());m&&l.add(m.id);let p=i.find(h=>h.childEvents.some(y=>y.name==="Paint"));p&&l.add(p.id);let f=i.find(h=>h.childEvents.some(y=>y.name==="ParseHTML"));return f&&l.add(f.id),a&&i.filter(a).forEach(h=>l.add(h.id)),{definitelyNotRenderBlockingScriptUrls:u,renderBlockingCpuNodeIds:l}}static getFirstPaintBasedGraph(t,{ +cutoffTimestamp:n,treatNodeAsRenderBlocking:r,additionalCpuNodesToTreatAsRenderBlocking:a}){let o=this.getRenderBlockingNodeData(t,{cutoffTimestamp:n,treatNodeAsRenderBlocking:r,additionalCpuNodesToTreatAsRenderBlocking:a}),{definitelyNotRenderBlockingScriptUrls:i,renderBlockingCpuNodeIds:c}=o;return t.cloneWithRelationships(u=>{if(u.type===Xe.types.NETWORK){if((u.endTime>n||u.startTime>n)&&!u.isMainDocument())return!1;let m=u.request.url;return i.has(m)?!1:r(u)}return c.has(u.id)})}static getOptimisticGraph(t,n){return this.getFirstPaintBasedGraph(t,{cutoffTimestamp:n.timestamps.firstContentfulPaint,treatNodeAsRenderBlocking:r=>r.hasRenderBlockingPriority()&&r.initiatorType!=="script"})}static getPessimisticGraph(t,n){return this.getFirstPaintBasedGraph(t,{cutoffTimestamp:n.timestamps.firstContentfulPaint,treatNodeAsRenderBlocking:r=>r.hasRenderBlockingPriority()})}}});var EZ,Xy,YM=g(()=>{d();qn();Hr();so();EZ=20,Xy=class e extends vn{static{s(this,"Interactive")}static get coefficients(){return{intercept:0,optimistic:.45,pessimistic:.55}}static getOptimisticGraph(t){let n=EZ*1e3;return t.cloneWithRelationships(r=>{if(r.type===Xe.types.CPU)return r.duration>n;let a=r.request.resourceType==="Image",o=r.request.resourceType==="Script";return!a&&(o||r.request.priority==="High"||r.request.priority==="VeryHigh")})}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,n){if(!n.lcpResult)throw new Z("missing lcpResult");let r=e.getLastLongTaskEndTime(t.nodeTimings),a=n.optimistic?n.lcpResult.optimisticEstimate.timeInMs:n.lcpResult.pessimisticEstimate.timeInMs;return{timeInMs:Math.max(a,r),nodeTimings:t.nodeTimings}}static compute(t,n){let r=n?.lcpResult;if(!r)throw new Z("LCP is required to calculate the Interactive metric");let a=super.compute(t,n);return a.timing=Math.max(a.timing,r.timing),a}static getLastLongTaskEndTime(t,n=50){return Array. +from(t.entries()).filter(([r,a])=>r.type!==Xe.types.CPU?!1:a.duration>n).map(([r,a])=>a.endTime).reduce((r,a)=>Math.max(r||0,a||0),0)}}});var Zy,KM=g(()=>{d();qn();Jy();so();Zy=class e extends vn{static{s(this,"LargestContentfulPaint")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static isNotLowPriorityImageNode(t){if(t.type!=="network")return!0;let n=t.request.resourceType==="Image",r=t.request.priority==="Low"||t.request.priority==="VeryLow";return!n||!r}static getOptimisticGraph(t,n){let r=n.timestamps.largestContentfulPaint;if(!r)throw new Z("NO_LCP");return Es.getFirstPaintBasedGraph(t,{cutoffTimestamp:r,treatNodeAsRenderBlocking:e.isNotLowPriorityImageNode})}static getPessimisticGraph(t,n){let r=n.timestamps.largestContentfulPaint;if(!r)throw new Z("NO_LCP");return Es.getFirstPaintBasedGraph(t,{cutoffTimestamp:r,treatNodeAsRenderBlocking:a=>!0,additionalCpuNodesToTreatAsRenderBlocking:a=>a.didPerformLayout()})}static getEstimateFromSimulation(t){let n=Array.from(t.nodeTimings.entries()).filter(r=>e.isNotLowPriorityImageNode(r[0])).map(r=>r[1].endTime);return{timeInMs:Math.max(...n),nodeTimings:t. +nodeTimings}}static compute(t,n){let r=n?.fcpResult;if(!r)throw new Z("FCP is required to calculate the LCP metric");let a=super.compute(t,n);return a.timing=Math.max(a.timing,r.timing),a}}});var Qy,JM=g(()=>{d();qn();Hr();so();Qy=class e extends vn{static{s(this,"MaxPotentialFID")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(t){return t}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,n){if(!n.fcpResult)throw new Z("missing fcpResult");let r=n.optimistic?n.fcpResult.pessimisticEstimate.timeInMs:n.fcpResult.optimisticEstimate.timeInMs,a=e.getTimingsAfterFCP(t.nodeTimings,r);return{timeInMs:Math.max(...a.map(o=>o.duration),16),nodeTimings:t.nodeTimings}}static compute(t,n){if(!n?.fcpResult)throw new Z("FCP is required to calculate the Max Potential FID metric");return super.compute(t,n)}static getTimingsAfterFCP(t,n){return Array.from(t.entries()).filter(([r,a])=>r.type===Xe.types.CPU&&a.endTime>n).map(([r,a])=>a)}}});var TZ,ev,XM=g(()=>{d();qn();Hr();so();TZ=150,ev=class e extends vn{static{s(this,"SpeedIndex")}static get coefficients(){return{intercept:0,optimistic:1.4,pessimistic:.4}}static getScaledCoefficients(t){let n=this.coefficients,r=TZ-30,a=Math.max((t-30)/r,0);return{intercept:n.intercept*a,optimistic:.5+(n.optimistic-.5)*a,pessimistic:.5+(n.pessimistic-.5)*a}}static getOptimisticGraph(t){return t}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,n){if(!n.fcpResult)throw new Z("missing fcpResult");if(n.observedSpeedIndex===void 0)throw new Z("missing observedSpeedIndex");let r=n.fcpResult.pessimisticEstimate.timeInMs;return{timeInMs:n.optimistic?n.observedSpeedIndex:e.computeLayoutBasedSpeedIndex(t.nodeTimings,r),nodeTimings:t.nodeTimings}}static compute(t,n){let r=n?.fcpResult;if(!r)throw new Z("FCP is required to calculate the SpeedIndex metric");let a=super.compute(t,n);return a.timing=Math.max(a.timing,r.timing),a}static computeLayoutBasedSpeedIndex(t,n){let r=[]; +for(let[i,c]of t.entries())if(i.type===Xe.types.CPU&&i.childEvents.some(u=>u.name==="Layout")){let u=Math.max(Math.log2(c.endTime-c.startTime),0);r.push({time:c.endTime,weight:u})}let a=r.map(i=>i.weight*Math.max(i.time,n)).reduce((i,c)=>i+c,0),o=r.map(i=>i.weight).reduce((i,c)=>i+c,0);return o?a/o:n}}});var rv={};T(rv,{BLOCKING_TIME_THRESHOLD:()=>tv,calculateSumOfBlockingTime:()=>nv,calculateTbtImpactForEvent:()=>ZM});function ZM(e,t,n,r){let a=50;if(r&&(a*=e.duration/r.duration),e.duration<a||e.end<t||e.start>n)return 0;let o=Math.max(e.start,t),c=Math.min(e.end,n)-o;return c<a?0:c-a}function nv(e,t,n){if(n<=t)return 0;let r=0;for(let a of e)r+=ZM(a,t,n);return r}var tv,av=g(()=>{d();tv=50;s(ZM,"calculateTbtImpactForEvent");s(nv,"calculateSumOfBlockingTime")});var ov,QM=g(()=>{d();qn();Hr();so();av();ov=class e extends vn{static{s(this,"TotalBlockingTime")}static get coefficients(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(t){return t}static getPessimisticGraph(t){return t}static getEstimateFromSimulation(t,n){if(!n.fcpResult)throw new Z("missing fcpResult");if(!n.interactiveResult)throw new Z("missing interactiveResult");let r=n.optimistic?n.fcpResult.pessimisticEstimate.timeInMs:n.fcpResult.optimisticEstimate.timeInMs,a=n.optimistic?n.interactiveResult.optimisticEstimate.timeInMs:n.interactiveResult.pessimisticEstimate.timeInMs,o=50,i=e.getTopLevelEvents(t.nodeTimings,o);return{timeInMs:nv(i,r,a),nodeTimings:t.nodeTimings}}static compute(t,n){if(!n?.fcpResult)throw new Z("FCP is required to calculate the TBT metric");if(!n?.fcpResult)throw new Z("Interactive is required to calculate the TBT metric");return super.compute(t,n)}static getTopLevelEvents(t,n){let r=[];for(let[a,o]of t.entries())a.type===Xe.types. +CPU&&(o.duration<n||r.push({start:o.startTime,end:o.endTime,duration:o.duration}));return r}}});var _t={};T(_t,{FirstContentfulPaint:()=>Es,Interactive:()=>Xy,LargestContentfulPaint:()=>Zy,MaxPotentialFID:()=>Qy,Metric:()=>vn,SpeedIndex:()=>ev,TBTUtils:()=>rv,TotalBlockingTime:()=>ov});var eN=g(()=>{d();Jy();YM();KM();JM();so();XM();QM();av()});var fi,qp=g(()=>{d();fi=class e{static{s(this,"TCPConnection")}warmed;ssl;h2;rtt;throughput;serverLatency;_congestionWindow;h2OverflowBytesDownloaded;constructor(t,n,r=0,a=!0,o=!1){this.warmed=!1,this.ssl=a,this.h2=o,this.rtt=t,this.throughput=n,this.serverLatency=r,this._congestionWindow=10,this.h2OverflowBytesDownloaded=0}static maximumSaturatedConnections(t,n){let i=1e3/t*1460*8;return Math.floor(n/i)}computeMaximumCongestionWindowInSegments(){let t=this.throughput/8,n=this.rtt/1e3,r=t*n;return Math.floor(r/1460)}setThroughput(t){this.throughput=t}setCongestionWindow(t){this._congestionWindow=t}setWarmed(t){this.warmed=t}isWarm(){return this.warmed}isH2(){return this.h2}get congestionWindow(){return this._congestionWindow}setH2OverflowBytesDownloaded(t){this.h2&&(this.h2OverflowBytesDownloaded=t)}clone(){return Object.assign(new e(this.rtt,this.throughput),this)}simulateDownloadUntil(t,n){let{timeAlreadyElapsed:r=0,maximumTimeToElapse:a=1/0,dnsResolutionTime:o=0}=n||{};this.warmed&& +this.h2&&(t-=this.h2OverflowBytesDownloaded);let i=this.rtt,c=i/2,u=this.computeMaximumCongestionWindowInSegments(),l=c;this.warmed||(l=o+c+c+c+(this.ssl?i:0));let m=Math.ceil(l/i),p=l+this.serverLatency+c;this.warmed&&this.h2&&(p=0);let f=Math.max(p-r,0),h=a-f,y=Math.min(this._congestionWindow,u),v=0;f>0?v=y*1460:m=0;let w=0,x=t-v;for(;x>0&&w<=h;){m++,w+=i,y=Math.max(Math.min(u,y*2),1);let O=y*1460;v+=O,x-=O}let E=f+w,S=this.h2?Math.max(v-t,0):0,k=Math.max(Math.min(v,t),0),R;return this.warmed?this.h2?R={timeToFirstByte:p}:R={connectionTime:l,timeToFirstByte:p}:R={dnsResolutionTime:o,connectionTime:l-o,sslTime:this.ssl?i:void 0,timeToFirstByte:p},{roundTrips:m,timeElapsed:E,bytesDownloaded:k,extraBytesDownloaded:S,congestionWindow:y,connectionTiming:R}}}});var SZ,CZ,kZ,Ru,iv=g(()=>{d();qn();qp();SZ=30,CZ=["https","wss"],kZ=6,Ru=class{static{s(this,"ConnectionPool")}options;records;connectionsByOrigin;connectionsByRequest;_connectionsInUse;connectionReusedByRequestId;constructor(t,n){this.options=n,this.records=t,this.connectionsByOrigin=new Map,this.connectionsByRequest=new Map,this._connectionsInUse=new Set,this.connectionReusedByRequestId=Ea.estimateIfConnectionWasReused(t,{forceCoarseEstimates:!0}),this.initializeConnections()}connectionsInUse(){return Array.from(this._connectionsInUse)}initializeConnections(){let t=this.connectionReusedByRequestId,n=this.options.additionalRttByOrigin,r=this.options.serverResponseTimeByOrigin,a=Ea.groupByOrigin(this.records);for(let[o,i]of a.entries()){let c=[],u=n.get(o)||0,l=r.get(o)||SZ;for(let p of i){if(t.get(p.requestId))continue;let f=CZ.includes(p.parsedURL.scheme),h=p.protocol==="h2",y=new fi(this.options.rtt+u,this.options.throughput,l,f,h);c.push(y)}if(!c.length)throw new Z(`Could not find \ +a connection for origin: ${o}`);let m=c[0].isH2()?1:kZ;for(;c.length<m;)c.push(c[0].clone());this.connectionsByOrigin.set(o,c)}}findAvailableConnectionWithLargestCongestionWindow(t){let n=null;for(let r=0;r<t.length;r++){let a=t[r];if(this._connectionsInUse.has(a))continue;let o=n?.congestionWindow||-1/0;a.congestionWindow>o&&(n=a)}return n}acquire(t){if(this.connectionsByRequest.has(t))throw new Z("Record already has a connection");let n=t.parsedURL.securityOrigin,r=this.connectionsByOrigin.get(n)||[],a=this.findAvailableConnectionWithLargestCongestionWindow(r);return a?(this._connectionsInUse.add(a),this.connectionsByRequest.set(t,a),a):null}acquireActiveConnectionFromRequest(t){let n=this.connectionsByRequest.get(t);if(!n)throw new Z("Could not find an active connection for request");return n}release(t){let n=this.connectionsByRequest.get(t);this.connectionsByRequest.delete(t),n&&this._connectionsInUse.delete(n)}}});var FZ,Iu,sv=g(()=>{d();FZ={DEVTOOLS_RTT_ADJUSTMENT_FACTOR:3.75,DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR:.9,mobileSlow4G:{rttMs:150,throughputKbps:1638.4,requestLatencyMs:562.5,downloadThroughputKbps:1474.5600000000002,uploadThroughputKbps:675,cpuSlowdownMultiplier:4},mobileRegular3G:{rttMs:300,throughputKbps:700,requestLatencyMs:1125,downloadThroughputKbps:630,uploadThroughputKbps:630,cpuSlowdownMultiplier:4},desktopDense4G:{rttMs:40,throughputKbps:10240,cpuSlowdownMultiplier:1,requestLatencyMs:0,downloadThroughputKbps:0,uploadThroughputKbps:0}},Iu={throttling:FZ}});var Ts,cv=g(()=>{d();Ts=class e{static{s(this,"DNSCache")}static rttMultiplier=2;rtt;resolvedDomainNames;constructor({rtt:t}){this.rtt=t,this.resolvedDomainNames=new Map}getTimeUntilResolution(t,n){let{requestedAt:r=0,shouldUpdateCache:a=!1}=n||{},o=t.parsedURL.host,i=this.resolvedDomainNames.get(o),c=this.rtt*e.rttMultiplier;if(i){let l=Math.max(i.resolvedAt-r,0);c=Math.min(l,c)}let u=r+c;return a&&this.updateCacheResolvedAtIfNeeded(t,u),c}updateCacheResolvedAtIfNeeded(t,n){let r=t.parsedURL.host,a=this.resolvedDomainNames.get(r)||{resolvedAt:n};a.resolvedAt=Math.min(a.resolvedAt,n),this.resolvedDomainNames.set(r,a)}setResolvedAt(t,n){this.resolvedDomainNames.set(t,{resolvedAt:n})}}});var Ss,uv=g(()=>{d();qn();Hr();Ss=class{static{s(this,"SimulatorTimingMap")}nodeTimings;constructor(){this.nodeTimings=new Map}getNodes(){return Array.from(this.nodeTimings.keys())}setReadyToStart(t,n){this.nodeTimings.set(t,n)}setInProgress(t,n){let r={...this.getQueued(t),startTime:n.startTime,timeElapsed:0};this.nodeTimings.set(t,t.type===Xe.types.NETWORK?{...r,timeElapsedOvershoot:0,bytesDownloaded:0}:r)}setCompleted(t,n){let r={...this.getInProgress(t),endTime:n.endTime,connectionTiming:n.connectionTiming};this.nodeTimings.set(t,r)}setCpu(t,n){let r={...this.getCpuStarted(t),timeElapsed:n.timeElapsed};this.nodeTimings.set(t,r)}setCpuEstimated(t,n){let r={...this.getCpuStarted(t),estimatedTimeElapsed:n.estimatedTimeElapsed};this.nodeTimings.set(t,r)}setNetwork(t,n){let r={...this.getNetworkStarted(t),timeElapsed:n.timeElapsed,timeElapsedOvershoot:n.timeElapsedOvershoot,bytesDownloaded:n.bytesDownloaded};this.nodeTimings.set(t,r)}setNetworkEstimated(t,n){let r={...this.getNetworkStarted( +t),estimatedTimeElapsed:n.estimatedTimeElapsed};this.nodeTimings.set(t,r)}getQueued(t){let n=this.nodeTimings.get(t);if(!n)throw new Z(`Node ${t.id} not yet queued`);return n}getCpuStarted(t){let n=this.nodeTimings.get(t);if(!n)throw new Z(`Node ${t.id} not yet queued`);if(!("startTime"in n))throw new Z(`Node ${t.id} not yet started`);if("bytesDownloaded"in n)throw new Z(`Node ${t.id} timing not valid`);return n}getNetworkStarted(t){let n=this.nodeTimings.get(t);if(!n)throw new Z(`Node ${t.id} not yet queued`);if(!("startTime"in n))throw new Z(`Node ${t.id} not yet started`);if(!("bytesDownloaded"in n))throw new Z(`Node ${t.id} timing not valid`);return n}getInProgress(t){let n=this.nodeTimings.get(t);if(!n)throw new Z(`Node ${t.id} not yet queued`);if(!("startTime"in n))throw new Z(`Node ${t.id} not yet started`);if(!("estimatedTimeElapsed"in n))throw new Z(`Node ${t.id} not yet in progress`);return n}getCompleted(t){let n=this.nodeTimings.get(t);if(!n)throw new Z(`Node ${t.id} not ye\ +t queued`);if(!("startTime"in n))throw new Z(`Node ${t.id} not yet started`);if(!("estimatedTimeElapsed"in n))throw new Z(`Node ${t.id} not yet in progress`);if(!("endTime"in n))throw new Z(`Node ${t.id} not yet completed`);return n}}});var lv,RZ,IZ,AZ,Zn,_Z,tN,dv,nN=g(()=>{d();qn();Hr();iv();sv();cv();uv();qp();lv=Iu.throttling.mobileSlow4G,RZ=10,IZ=.5,AZ=1e4,Zn={NotReadyToStart:0,ReadyToStart:1,InProgress:2,Complete:3},_Z={VeryHigh:0,High:.25,Medium:.5,Low:1,VeryLow:2},tN=new Map,dv=class e{static{s(this,"Simulator")}static createSimulator(t){let{throttlingMethod:n,throttling:r,precomputedLanternData:a,networkAnalysis:o}=t,i={additionalRttByOrigin:o.additionalRttByOrigin,serverResponseTimeByOrigin:o.serverResponseTimeByOrigin,observedThroughput:o.throughput};switch(a&&(i.additionalRttByOrigin=new Map(Object.entries(a.additionalRttByOrigin)),i.serverResponseTimeByOrigin=new Map(Object.entries(a.serverResponseTimeByOrigin))),n){case"provided":i.rtt=o.rtt,i.throughput=o.throughput,i.cpuSlowdownMultiplier=1,i.layoutTaskMultiplier=1;break;case"devtools":r&&(i.rtt=r.requestLatencyMs/Iu.throttling.DEVTOOLS_RTT_ADJUSTMENT_FACTOR,i.throughput=r.downloadThroughputKbps*1024/Iu.throttling.DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR), +i.cpuSlowdownMultiplier=1,i.layoutTaskMultiplier=1;break;case"simulate":r&&(i.rtt=r.rttMs,i.throughput=r.throughputKbps*1024,i.cpuSlowdownMultiplier=r.cpuSlowdownMultiplier);break;default:break}return new e(i)}options;_rtt;throughput;maximumConcurrentRequests;cpuSlowdownMultiplier;layoutTaskMultiplier;cachedNodeListByStartPosition;nodeTimings;numberInProgressByType;nodes;dns;connectionPool;constructor(t){if(this.options=Object.assign({rtt:lv.rttMs,throughput:lv.throughputKbps*1024,maximumConcurrentRequests:RZ,cpuSlowdownMultiplier:lv.cpuSlowdownMultiplier,layoutTaskMultiplier:IZ,additionalRttByOrigin:new Map,serverResponseTimeByOrigin:new Map},t),this._rtt=this.options.rtt,this.throughput=this.options.throughput,this.maximumConcurrentRequests=Math.max(Math.min(fi.maximumSaturatedConnections(this._rtt,this.throughput),this.options.maximumConcurrentRequests),1),this.cpuSlowdownMultiplier=this.options.cpuSlowdownMultiplier,this.layoutTaskMultiplier=this.cpuSlowdownMultiplier*this.options. +layoutTaskMultiplier,this.cachedNodeListByStartPosition=[],this.nodeTimings=new Ss,this.numberInProgressByType=new Map,this.nodes={},this.dns=new Ts({rtt:this._rtt}),this.connectionPool=null,!Number.isFinite(this._rtt))throw new Z(`Invalid rtt ${this._rtt}`);if(!Number.isFinite(this.throughput))throw new Z(`Invalid throughput ${this.throughput}`)}get rtt(){return this._rtt}initializeConnectionPool(t){let n=[];t.getRootNode().traverse(r=>{r.type===Xe.types.NETWORK&&n.push(r.request)}),this.connectionPool=new Ru(n,this.options)}initializeAuxiliaryData(){this.nodeTimings=new Ss,this.numberInProgressByType=new Map,this.nodes={},this.cachedNodeListByStartPosition=[];for(let t of Object.values(Zn))this.nodes[t]=new Set}numberInProgress(t){return this.numberInProgressByType.get(t)||0}markNodeAsReadyToStart(t,n){let r=e.computeNodeStartPosition(t),a=this.cachedNodeListByStartPosition.findIndex(i=>e.computeNodeStartPosition(i)>r),o=a===-1?this.cachedNodeListByStartPosition.length:a;this.cachedNodeListByStartPosition. +splice(o,0,t),this.nodes[Zn.ReadyToStart].add(t),this.nodes[Zn.NotReadyToStart].delete(t),this.nodeTimings.setReadyToStart(t,{queuedTime:n})}markNodeAsInProgress(t,n){let r=this.cachedNodeListByStartPosition.indexOf(t);this.cachedNodeListByStartPosition.splice(r,1),this.nodes[Zn.InProgress].add(t),this.nodes[Zn.ReadyToStart].delete(t),this.numberInProgressByType.set(t.type,this.numberInProgress(t.type)+1),this.nodeTimings.setInProgress(t,{startTime:n})}markNodeAsComplete(t,n,r){this.nodes[Zn.Complete].add(t),this.nodes[Zn.InProgress].delete(t),this.numberInProgressByType.set(t.type,this.numberInProgress(t.type)-1),this.nodeTimings.setCompleted(t,{endTime:n,connectionTiming:r});for(let a of t.getDependents())a.getDependencies().some(i=>!this.nodes[Zn.Complete].has(i))||this.markNodeAsReadyToStart(a,n)}acquireConnection(t){return this.connectionPool.acquire(t)}getNodesSortedByStartPosition(){return Array.from(this.cachedNodeListByStartPosition)}startNodeIfPossible(t,n){if(t.type===Xe.types. +CPU){this.numberInProgress(t.type)===0&&this.markNodeAsInProgress(t,n);return}if(t.type!==Xe.types.NETWORK)throw new Z("Unsupported");!t.isConnectionless&&(this.numberInProgress(t.type)>=this.maximumConcurrentRequests||!this.acquireConnection(t.request))||this.markNodeAsInProgress(t,n)}updateNetworkCapacity(){let t=this.numberInProgress(Xe.types.NETWORK);if(t!==0)for(let n of this.connectionPool.connectionsInUse())n.setThroughput(this.throughput/t)}estimateTimeRemaining(t){if(t.type===Xe.types.CPU)return this.estimateCPUTimeRemaining(t);if(t.type===Xe.types.NETWORK)return this.estimateNetworkTimeRemaining(t);throw new Z("Unsupported")}estimateCPUTimeRemaining(t){let n=this.nodeTimings.getCpuStarted(t),r=t.didPerformLayout()?this.layoutTaskMultiplier:this.cpuSlowdownMultiplier,o=Math.min(Math.round(t.duration/1e3*r),AZ)-n.timeElapsed;return this.nodeTimings.setCpuEstimated(t,{estimatedTimeElapsed:o}),o}estimateNetworkTimeRemaining(t){let n=t.request,r=this.nodeTimings.getNetworkStarted( +t),a=0;if(t.fromDiskCache)a=8+20*((n.resourceSize||0)/1024/1024)-r.timeElapsed;else if(t.isNonNetworkProtocol)a=2+10*((n.resourceSize||0)/1024/1024)-r.timeElapsed;else{let i=this.connectionPool.acquireActiveConnectionFromRequest(n),c=this.dns.getTimeUntilResolution(n,{requestedAt:r.startTime,shouldUpdateCache:!0}),u=r.timeElapsed;a=i.simulateDownloadUntil(n.transferSize-r.bytesDownloaded,{timeAlreadyElapsed:u,dnsResolutionTime:c,maximumTimeToElapse:1/0}).timeElapsed}let o=a+r.timeElapsedOvershoot;return this.nodeTimings.setNetworkEstimated(t,{estimatedTimeElapsed:o}),o}findNextNodeCompletionTime(){let t=1/0;for(let n of this.nodes[Zn.InProgress])t=Math.min(t,this.estimateTimeRemaining(n));return t}updateProgressMadeInTimePeriod(t,n,r){let a=this.nodeTimings.getInProgress(t),o=a.estimatedTimeElapsed===n;if(t.type===Xe.types.CPU||t.isConnectionless){o?this.markNodeAsComplete(t,r):a.timeElapsed+=n;return}if(t.type!==Xe.types.NETWORK)throw new Z("Unsupported");if(!("bytesDownloaded"in a))throw new Z( +"Invalid timing data");let i=t.request,c=this.connectionPool.acquireActiveConnectionFromRequest(i),u=this.dns.getTimeUntilResolution(i,{requestedAt:a.startTime,shouldUpdateCache:!0}),l=c.simulateDownloadUntil(i.transferSize-a.bytesDownloaded,{dnsResolutionTime:u,timeAlreadyElapsed:a.timeElapsed,maximumTimeToElapse:n-a.timeElapsedOvershoot});c.setCongestionWindow(l.congestionWindow),c.setH2OverflowBytesDownloaded(l.extraBytesDownloaded),o?(c.setWarmed(!0),this.connectionPool.release(i),this.markNodeAsComplete(t,r,l.connectionTiming)):(a.timeElapsed+=l.timeElapsed,a.timeElapsedOvershoot+=l.timeElapsed-n,a.bytesDownloaded+=l.bytesDownloaded)}computeFinalNodeTimings(){let t=this.nodeTimings.getNodes().map(r=>[r,this.nodeTimings.getCompleted(r)]);t.sort((r,a)=>r[1].startTime-a[1].startTime);let n=t.map(([r,a])=>[r,{startTime:a.startTime,endTime:a.endTime,duration:a.endTime-a.startTime}]);return{nodeTimings:new Map(n),completeNodeTimings:new Map(t)}}getOptions(){return this.options}simulate(t,n){ +if(Xe.hasCycle(t))throw new Z("Cannot simulate graph with cycle");n=Object.assign({label:void 0},n),this.dns=new Ts({rtt:this._rtt}),this.initializeConnectionPool(t),this.initializeAuxiliaryData();let r=this.nodes[Zn.NotReadyToStart],a=this.nodes[Zn.ReadyToStart],o=this.nodes[Zn.InProgress],i=t.getRootNode();i.traverse(p=>r.add(p));let c=0,u=0;for(this.markNodeAsReadyToStart(i,c);a.size||o.size;){for(let f of this.getNodesSortedByStartPosition())this.startNodeIfPossible(f,c);if(!o.size)throw new Z("Failed to start a node");this.updateNetworkCapacity();let p=this.findNextNodeCompletionTime();if(c+=p,!Number.isFinite(p)||u>1e5)throw new Z("Simulation failed, depth exceeded");u++;for(let f of o)this.updateProgressMadeInTimePeriod(f,p,c)}let{nodeTimings:l,completeNodeTimings:m}=this.computeFinalNodeTimings();return tN.set(n.label||"unlabeled",m),{timeInMs:c,nodeTimings:l}}computeWastedMsFromWastedBytes(t){let{throughput:n,observedThroughput:r}=this.options,a=n===0?r:n;if(a===0)return 0;let i=t* +8/a*1e3;return Math.round(i/10)*10}static get allNodeTimings(){return tN}static computeNodeStartPosition(t){return t.type==="cpu"?t.startTime:t.startTime+(_Z[t.request.priority]*1e3*1e3||0)}}});var Ta={};T(Ta,{ConnectionPool:()=>Ru,Constants:()=>Iu,DNSCache:()=>Ts,Simulator:()=>dv,SimulatorTimingMap:()=>Ss,TCPConnection:()=>fi});var rN=g(()=>{d();iv();sv();cv();uv();nN();qp()});var MZ,aN=g(()=>{d();MZ={XHR:"XHR",Fetch:"Fetch",EventSource:"EventSource",Script:"Script",Stylesheet:"Stylesheet",Image:"Image",Media:"Media",Font:"Font",Document:"Document",TextTrack:"TextTrack",WebSocket:"WebSocket",Other:"Other",Manifest:"Manifest",SignedExchange:"SignedExchange",Ping:"Ping",Preflight:"Preflight",CSPViolationReport:"CSPViolationReport",Prefetch:"Prefetch"}});var Au={};T(Au,{NetworkRequestTypes:()=>MZ});var oN=g(()=>{d();aN()});var _u=g(()=>{d();qn();Hr();eN();rN();oN()});var dN=de((iRe,lN)=>{d();var iN=/:\/\/(\S*?)(:\d+)?(\/|$)/,sN=/([a-z0-9.-]+\.[a-z0-9]+|localhost)/i,NZ=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,OZ=/[^.]+\.([^.]+|(gov|com|co|ne)\.\w{2})$/i;function cN(e){return typeof e!="string"||e.length>1e4||e.startsWith("data:")?null:iN.test(e)?e.match(iN)[1]:sN.test(e)?e.match(sN)[0]:null}s(cN,"getDomainFromOriginOrURL");function pv(e){let t=cN(e);if(!t)return null;if(NZ.test(t))return t;let n=t.match(OZ);return n&&n[0]||t}s(pv,"getRootDomain");function LZ(e,t){return e.length<=t.length?e:e.split(".").slice(1).join(".")}s(LZ,"sliceSubdomainFromDomain");function uN(e,t,n,r){let a=cN(r),o=pv(a);if(!(!a||!o)){if(e.has(a))return e.get(a);for(let i=a;i.length>o.length;i=LZ(i,o))if(t.has(i))return t.get(i);if(n.has(o))return n.get(o)}}s(uN,"getEntityInDataset");function PZ(e,t,n,r){let a=uN(e,t,n,r),o=a&&a.products;if(o&&typeof r=="string"){for(let i of o)for(let c of i.urlPatterns)if(c instanceof RegExp&&c.test(r)||typeof c=="string"&&r.includes(c))return i}} +s(PZ,"getProductInDataset");function BZ(e){return e.map(t=>{let n={company:t.name,categories:[t.category],...t},r=(t.products||[]).map(a=>({company:n.company,category:n.category,categories:[n.category],facades:[],...a,urlPatterns:(a.urlPatterns||[]).map(o=>o.startsWith("REGEXP:")?new RegExp(o.slice(7)):o)}));return n.products=r,n})}s(BZ,"cloneEntities");function UZ(e){let t=BZ(e),n=new Map,r=new Map,a=new Map;for(let c of t){c.totalExecutionTime=Number(c.totalExecutionTime)||0,c.totalOccurrences=Number(c.totalOccurrences)||0,c.averageExecutionTime=c.totalExecutionTime/c.totalOccurrences;for(let u of c.domains){if(n.has(u)){let m=n.get(u);throw new Error(`Duplicate domain ${u} (${c.name} and ${m.name})`)}n.set(u,c);let l=pv(u);if(u.startsWith("*.")){let m=u.slice(2);m===l?r.set(l,c):a.set(m,c)}}}for(let[c,u]of r.entries())u||r.delete(c);let o=uN.bind(null,n,a,r),i=PZ.bind(null,n,a,r);return{getEntity:o,getProduct:i,getRootDomain:pv,entities:t}}s(UZ,"createAPIFromDataset");lN.exports={createAPIFromDataset:UZ}});var mN=de((uRe,jZ)=>{jZ.exports=[{name:"Google/Doubleclick Ads",company:"Google",homepage:"https://marketingplatform.google.com/about/enterprise/",category:"ad",domains:["adservice.google.com","adservice.google.com.au","adservice.google.com.sg","adservice.google.com.br","adservice.google.com.ua","adservice.google.co.uk","adservice.google.co.jp","adservice.google.co.in","adservice.google.co.kr","adservice.google.co.id","adservice.google.co.nz","adservice.google.ie","adservice.google.se","adservice.google.de","adservice.google.ca","adservice.google.be","adservice.google.es","adservice.google.ch","adservice.google.fr","adservice.google.nl","*.googleadservices.com","*.googlesyndication.com","*.googletagservices.com","*.2mdn.net","*.doubleclick.net"],examples:["pagead2.googlesyndication.com","tpc.googlesyndication.com","ade.googlesyndication.com","googleads.g.doubleclick.net","googleads4.g.doubleclick.net","securepubads.g.doubleclick.net","pubads.g.doubleclick.net","static.doubleclick.net", +"cm.g.doubleclick.net","bid.g.doubleclick.net","s0.2mdn.net","stats.g.doubleclick.net","survey.g.doubleclick.net","fls.doubleclick.net","ad.doubleclick.net","www.googleadservices.com","https://www.googletagservices.com/tag/js/gpt.js"],totalExecutionTime:3224311743,totalOccurrences:1232210},{name:"Facebook",homepage:"https://www.facebook.com",category:"social",domains:["*.facebook.com","*.atlassbx.com","*.fbsbx.com","fbcdn-photos-e-a.akamaihd.net","*.facebook.net","*.fbcdn.net"],examples:["www.facebook.com","connect.facebook.net","staticxx.facebook.com","static.xx.fbcdn.net","m.facebook.com","an.facebook.com","platform-lookaside.fbsbx.com"],products:[{name:"Facebook Messenger Customer Chat",urlPatterns:["REGEXP:connect\\.facebook\\.net\\/.*\\/sdk\\/xfbml\\.customerchat\\.js"],facades:[{name:"React Live Chat Loader",repo:"https://github.com/calibreapp/react-live-chat-loader"}]}],totalExecutionTime:1097107210,totalOccurrences:3157799},{name:"Instagram",homepage:"https://www.instagram.com", +category:"social",domains:["*.cdninstagram.com","*.instagram.com"],examples:["scontent.cdninstagram.com"],totalExecutionTime:31988464,totalOccurrences:20376},{name:"Google CDN",company:"Google",homepage:"https://developers.google.com/speed/libraries/",category:"cdn",domains:["ajax.googleapis.com","commondatastorage.googleapis.com","www.gstatic.com","ssl.gstatic.com"],totalExecutionTime:4805631169,totalOccurrences:3192326},{name:"Google Maps",company:"Google",homepage:"https://www.google.com/maps",category:"utility",domains:["maps.google.com","maps-api-ssl.google.com","maps.googleapis.com","mts.googleapis.com","mt.googleapis.com","mt0.googleapis.com","mt1.googleapis.com","mt2.googleapis.com","mt3.googleapis.com","khm0.googleapis.com","khm1.googleapis.com","khms.googleapis.com","khms1.googleapis.com","khms2.googleapis.com","maps.gstatic.com"],totalExecutionTime:904392768,totalOccurrences:1195850},{name:"Other Google APIs/SDKs",company:"Google",homepage:"https://developers.google.com/apis\ +-explorer/#p/",category:"utility",domains:["accounts.google.com","apis.google.com","calendar.google.com","clients2.google.com","cse.google.com","news.google.com","pay.google.com","payments.google.com","play.google.com","smartlock.google.com","www.google.com","www.google.de","www.google.co.jp","www.google.com.au","www.google.co.uk","www.google.ie","www.google.com.sg","www.google.co.in","www.google.com.br","www.google.ca","www.google.co.kr","www.google.co.nz","www.google.co.id","www.google.fr","www.google.be","www.google.com.ua","www.google.nl","www.google.ru","www.google.se","www.googleapis.com","imasdk.googleapis.com","storage.googleapis.com","translate.googleapis.com","translate.google.com","translate-pa.googleapis.com","lh3.googleusercontent.com","jnn-pa.googleapis.com","csi.gstatic.com"],totalExecutionTime:1158368443,totalOccurrences:2638940},{name:"Firebase",homepage:"https://developers.google.com/apis-explorer/#p/",category:"utility",domains:["firebasestorage.googleapis.com","fire\ +store.googleapis.com","firebaseinstallations.googleapis.com","firebase.googleapis.com","firebaseremoteconfig.googleapis.com"],totalExecutionTime:201194,totalOccurrences:493},{name:"Google Analytics",company:"Google",homepage:"https://marketingplatform.google.com/about/analytics/",category:"analytics",domains:["*.google-analytics.com","*.urchin.com","analytics.google.com"],examples:["www.google-analytics.com","ssl.google-analytics.com","analytics.google.com/g/collect"],totalExecutionTime:495649535,totalOccurrences:4231882},{name:"Google Optimize",company:"Google",homepage:"https://marketingplatform.google.com/about/optimize/",category:"analytics",domains:["www.googleoptimize.com"],examples:["https://www.googleoptimize.com/optimize.js?id="],totalExecutionTime:9330261,totalOccurrences:38797},{name:"Google AMP",company:"Google",homepage:"https://github.com/google/amp-client-id-library",category:"analytics",domains:["ampcid.google.com"]},{name:"Google Tag Manager",company:"Google",homepage:"\ +https://marketingplatform.google.com/about/tag-manager/",category:"tag-manager",domains:["*.googletagmanager.com"],examples:["www.googletagmanager.com"],totalExecutionTime:6770912735,totalOccurrences:8124119},{name:"Google Fonts",company:"Google",homepage:"https://fonts.google.com/",category:"cdn",domains:["fonts.googleapis.com","fonts.gstatic.com"],totalExecutionTime:53081,totalOccurrences:220864},{name:"Adobe TypeKit",company:"Adobe",homepage:"https://fonts.adobe.com/",category:"cdn",domains:["*.typekit.com","*.typekit.net"],examples:["use.typekit.net","p.typekit.net"],totalExecutionTime:78981507,totalOccurrences:119621},{name:"YouTube",homepage:"https://youtube.com",category:"video",domains:["*.youtube.com","*.ggpht.com","*.youtube-nocookie.com","*.ytimg.com"],examples:["www.youtube.com","s.ytimg.com","yt3.ggpht.com","img.youtube.com","fcmatch.youtube.com"],products:[{name:"YouTube Embedded Player",urlPatterns:["youtube.com/embed/"],facades:[{name:"Lite YouTube",repo:"https://github\ +.com/paulirish/lite-youtube-embed"},{name:"Ngx Lite Video",repo:"https://github.com/karim-mamdouh/ngx-lite-video"}]}],totalExecutionTime:6277579675,totalOccurrences:977311},{name:"Twitter",homepage:"https://twitter.com",category:"social",domains:["*.vine.co","*.twimg.com","*.twitpic.com","platform.twitter.com","syndication.twitter.com"],examples:["cdn.syndication.twimg.com","abs.twimg.com","pbs.twimg.com"],totalExecutionTime:804233203,totalOccurrences:319957},{name:"AddThis",homepage:"https://www.addthis.com/",category:"social",domains:["*.addthis.com","*.addthiscdn.com","*.addthisedge.com"],examples:["s7.addthis.com","r.dlx.addthis.com","su.addthis.com","x.dlx.addthis.com"],totalExecutionTime:23,totalOccurrences:42},{name:"AddToAny",homepage:"https://www.addtoany.com/",category:"social",domains:["*.addtoany.com"],examples:["static.addtoany.com"],totalExecutionTime:10606113,totalOccurrences:66065},{name:"Akamai",homepage:"https://www.akamai.com/",category:"cdn",domains:["23.62.3.183","\ +*.akamaitechnologies.com","*.akamaitechnologies.fr","*.akamai.net","*.akamaiedge.net","*.akamaihd.net","*.akamaized.net","*.edgefcs.net","*.edgekey.net","edgesuite.net","*.srip.net"],totalExecutionTime:4795669,totalOccurrences:9820},{name:"Blogger",homepage:"https://www.blogger.com/",category:"hosting",domains:["*.blogblog.com","*.blogger.com","*.blogspot.com","images-blogger-opensocial.googleusercontent.com"],examples:["1.bp.blogspot.com","www.blogger.com"],totalExecutionTime:58390438,totalOccurrences:213326},{name:"Gravatar",homepage:"https://en.gravatar.com/",category:"social",domains:["*.gravatar.com"],examples:["secure.gravatar.com","www.gravatar.com"],totalExecutionTime:9235,totalOccurrences:43},{name:"Yandex Metrica",company:"Yandex",homepage:"https://metrica.yandex.com/about?",category:"analytics",domains:["mc.yandex.ru","mc.yandex.com","d31j93rd8oukbv.cloudfront.net"],totalExecutionTime:1438544698,totalOccurrences:602136},{name:"Hotjar",homepage:"https://www.hotjar.com/",category:"\ +analytics",domains:["*.hotjar.com","*.hotjar.io"],examples:["script.hotjar.com","static.hotjar.com","in.hotjar.com","vc.hotjar.io","vars.hotjar.com"],totalExecutionTime:241418055,totalOccurrences:333356},{name:"Baidu Analytics",homepage:"https://tongji.baidu.com/web/welcome/login",category:"analytics",domains:["hm.baidu.com","hmcdn.baidu.com"],examples:["hm.baidu.com","hmcdn.baidu.com"],totalExecutionTime:7739347,totalOccurrences:32612},{name:"Insider",homepage:"",category:"analytics",domains:["*.useinsider.com"],examples:["hit.api.useinsider.com"],totalExecutionTime:2214966,totalOccurrences:1861},{name:"Adobe Experience Cloud",company:"Adobe",homepage:"",category:"analytics",domains:["*.2o7.net","du8783wkf05yr.cloudfront.net","*.hitbox.com","*.imageg.net","*.nedstat.com","*.omtrdc.net"],examples:["audiag.112.2o7.net","du8783wkf05yr.cloudfront.net/NS_mbox.js"],totalExecutionTime:2369,totalOccurrences:38},{name:"Adobe Tag Manager",company:"Adobe",homepage:"https://www.adobe.com/experien\ +ce-platform/",category:"tag-manager",domains:["*.adobedtm.com","*.demdex.net","*.everesttech.net","sstats.adobe.com","hbrt.adobe.com"],examples:["assets.adobedtm.com","sync-tm.everesttech.net","cm.everesttech.net"],totalExecutionTime:34937564,totalOccurrences:200160},{name:"jQuery CDN",homepage:"https://code.jquery.com/",category:"cdn",domains:["*.jquery.com"],examples:["code.jquery.com"],totalExecutionTime:302334055,totalOccurrences:724477},{name:"Cloudflare CDN",homepage:"https://cdnjs.com/",category:"cdn",domains:["cdnjs.cloudflare.com","amp.cloudflare.com"],totalExecutionTime:337711119,totalOccurrences:666628},{name:"Cloudflare",homepage:"https://www.cloudflare.com/website-optimization/",category:"utility",domains:["ajax.cloudflare.com","*.nel.cloudflare.com","static.cloudflareinsights.com"],totalExecutionTime:58723052,totalOccurrences:467719},{name:"WordPress",company:"Automattic",homepage:"https://wp.com/",category:"hosting",domains:["*.wordpress.com","s0.wp.com","s2.wp.com","*.w\ +.org","c0.wp.com","s1.wp.com","i0.wp.com","i1.wp.com","i2.wp.com","widgets.wp.com"],examples:["s.w.org"],totalExecutionTime:220910650,totalOccurrences:308694},{name:"WordPress Site Stats",company:"Automattic",homepage:"https://wp.com/",category:"analytics",domains:["pixel.wp.com","stats.wp.com"],totalExecutionTime:8573549,totalOccurrences:128931},{name:"Hatena Blog",homepage:"https://hatenablog.com/",category:"hosting",domains:["*.st-hatena.com","*.hatena.ne.jp"],examples:["cdn.blog.st-hatena.com","cdn.pool.st-hatena.com","cdn7.www.st-hatena.com","s.hatena.ne.jp","b.st-hatena.com"],totalExecutionTime:106337940,totalOccurrences:43183},{name:"Shopify",homepage:"https://www.shopify.com/",category:"hosting",domains:["*.shopify.com","*.shopifyapps.com","*.shopifycdn.com","*.shopifysvc.com"],examples:["cdn.shopify.com","productreviews.shopifycdn.com","monorail-edge.shopifysvc.com"],totalExecutionTime:287428893,totalOccurrences:338668},{name:"Dealer",homepage:"https://www.dealer.com/",category:"\ +hosting",domains:["*.dealer.com"],examples:["static.dealer.com"],totalExecutionTime:871324,totalOccurrences:2620},{name:"PIXNET",homepage:"https://www.pixnet.net/",category:"social",domains:["*.pixfs.net","*.pixnet.net"],examples:["front.pixfs.net","falcon-asset.pixfs.net","pixgame-asset.pixfs.net"],totalExecutionTime:18541448,totalOccurrences:13718},{name:"Moat",homepage:"https://moat.com/",category:"ad",domains:["*.moatads.com","*.moatpixel.com"],examples:["z.moatads.com","px.moatads.com","geo.moatads.com","sejs.moatads.com","mb.moatads.com","v4.moatads.com"]},{name:"33 Across",homepage:"https://33across.com/",category:"ad",domains:["*.33across.com"],examples:["sic.33across.com","cdn-sic.33across.com"],totalExecutionTime:10002146,totalOccurrences:192648},{name:"OpenX",homepage:"https://www.openx.com/",category:"ad",domains:["*.deliverimp.com","*.openxadexchange.com","*.servedbyopenx.com","*.jump-time.net","*.openx.net","*.openxcdn.net"],examples:["uk-ads.openx.net","us-ads.openx.net", +"33across-d.openx.net","rtb.openx.net","us-u.openx.net","eu-u.openx.net","u.openx.net"],totalExecutionTime:6274934,totalOccurrences:76561},{name:"Amazon Ads",homepage:"https://ad.amazon.com/",category:"ad",domains:["*.amazon-adsystem.com"],examples:["s.amazon-adsystem.com","c.amazon-adsystem.com","aax.amazon-adsystem.com","z-na.amazon-adsystem.com","fls-na.amazon-adsystem.com","aax-us-east.amazon-adsystem.com","ir-na.amazon-adsystem.com"],totalExecutionTime:98703856,totalOccurrences:240331},{name:"Rubicon Project",homepage:"https://rubiconproject.com/",category:"ad",domains:["*.rubiconproject.com","*.chango.com","*.fimserve.com"],examples:["pixel.rubiconproject.com","fastlane.rubiconproject.com","secure-assets.rubiconproject.com","eus.rubiconproject.com","pixel-us-east.rubiconproject.com","token.rubiconproject.com","ads.rubiconproject.com"],totalExecutionTime:287111007,totalOccurrences:270271},{name:"The Trade Desk",homepage:"https://www.thetradedesk.com/",category:"ad",domains:["*.ads\ +rvr.org","d1eoo1tco6rr5e.cloudfront.net"],examples:["js.adsrvr.org","match.adsrvr.org","insight.adsrvr.org","usw-lax.adsrvr.org","data.adsrvr.org","snap.adsrvr.org"],totalExecutionTime:2197325,totalOccurrences:25346},{name:"Bidswitch",homepage:"https://www.bidswitch.com/",category:"ad",domains:["*.bidswitch.net"],examples:["x.bidswitch.net"],totalExecutionTime:25660,totalOccurrences:68217},{name:"LiveRamp IdentityLink",homepage:"https://liveramp.com/discover-identitylink/",category:"analytics",domains:["*.circulate.com","*.rlcdn.com"],examples:["idsync.rlcdn.com","id.rlcdn.com","api.rlcdn.com","cdn.rlcdn.com"],totalExecutionTime:141414,totalOccurrences:1461},{name:"Drawbridge",homepage:"https://www.drawbridge.com/",category:"ad",domains:["*.adsymptotic.com"]},{name:"AOL / Oath / Verizon Media",homepage:"https://www.oath.com/",category:"ad",domains:["*.advertising.com","*.aol.com","*.aolcdn.com","*.blogsmithmedia.com","*.oath.com","*.aol.net","*.tacoda.net","*.aol.co.uk"],examples:["pix\ +el.advertising.com","dtm.advertising.com","tag.sp.advertising.com","service.sp.advertising.com","adtech.advertising.com","adaptv.advertising.com","mighty.aol.net","consent.cmp.oath.com"],totalExecutionTime:165968,totalOccurrences:278},{name:"Xaxis",homepage:"https://www.xaxis.com/",category:"ad",domains:["*.247realmedia.com","*.mookie1.com","*.gmads.net"],examples:["t.mookie1.com","odr.mookie1.com"],totalExecutionTime:28343,totalOccurrences:209},{name:"Freshdesk",company:"Freshworks",homepage:"https://freshdesk.com/",category:"customer-success",domains:["d36mpcpuzc4ztk.cloudfront.net"],totalExecutionTime:64296,totalOccurrences:225},{name:"Help Scout",homepage:"https://www.helpscout.net/",category:"customer-success",domains:["djtflbt20bdde.cloudfront.net","*.helpscout.net"],examples:["beacon-v2.helpscout.net"],products:[{name:"Help Scout Beacon",urlPatterns:["beacon-v2.helpscout.net"],facades:[{name:"React Live Chat Loader",repo:"https://github.com/calibreapp/react-live-chat-loader"}]}], +totalExecutionTime:2186050,totalOccurrences:4906},{name:"Alexa",homepage:"https://www.alexa.com/",category:"analytics",domains:["*.alexametrics.com","d31qbv1cthcecs.cloudfront.net"],examples:["certify.alexametrics.com"]},{name:"OneSignal",homepage:"https://onesignal.com/",category:"utility",domains:["*.onesignal.com"],examples:["cdn.onesignal.com","https://onesignal.com/api/v1/sync/"],totalExecutionTime:17761218,totalOccurrences:68282},{name:"Lucky Orange",homepage:"https://www.luckyorange.com/",category:"analytics",domains:["*.luckyorange.com","d10lpsik1i8c69.cloudfront.net","*.luckyorange.net"],totalExecutionTime:12779009,totalOccurrences:16442},{name:"Crazy Egg",homepage:"https://www.crazyegg.com/",category:"analytics",domains:["*.cetrk.com","*.crazyegg.com","dnn506yrbagrg.cloudfront.net"],totalExecutionTime:27593244,totalOccurrences:43822},{name:"Hello Bar",homepage:"https://www.hellobar.com/",category:"marketing",domains:["*.hellobar.com"],totalExecutionTime:1533955,totalOccurrences:4502}, +{name:"Yandex Ads",company:"Yandex",homepage:"https://yandex.com/adv/",category:"ad",domains:["an.yandex.ru"],totalExecutionTime:5171537,totalOccurrences:8488},{name:"Salesforce",homepage:"https://www.salesforce.com/products/marketing-cloud/",category:"analytics",domains:["*.krxd.net"],examples:["cdn.krxd.net","beacon.krxd.net","consumer.krxd.net","usermatch.krxd.net"]},{name:"Salesforce Commerce Cloud",homepage:"https://www.salesforce.com/products/commerce-cloud/overview/",category:"hosting",domains:["*.cquotient.com","*.demandware.net","demandware.edgesuite.net"],totalExecutionTime:2045309,totalOccurrences:4127},{name:"Optimizely",homepage:"https://www.optimizely.com/",category:"analytics",domains:["*.optimizely.com"],examples:["cdn.optimizely.com","cdn-pci.optimizely.com","logx.optimizely.com","cdn3.optimizely.com"],totalExecutionTime:12599739,totalOccurrences:15998},{name:"LiveChat",homepage:"https://www.livechat.com/",category:"customer-success",domains:["*.livechatinc.com","*.liv\ +echat.com","*.livechat-static.com"],examples:["cdn.livechatinc.com","secure.livechatinc.com"],totalExecutionTime:49171416,totalOccurrences:39034},{name:"VK",homepage:"https://vk.com/",category:"social",domains:["*.vk.com"],totalExecutionTime:91334176,totalOccurrences:22377},{name:"Tumblr",homepage:"https://tumblr.com/",category:"social",domains:["*.tumblr.com"],examples:["assets.tumblr.com","static.tumblr.com"],totalExecutionTime:45570825,totalOccurrences:18114},{name:"Wistia",homepage:"https://wistia.com/",category:"video",domains:["*.wistia.com","embedwistia-a.akamaihd.net","*.wistia.net"],examples:["fast.wistia.com","fast.wistia.net","distillery.wistia.com","pipedream.wistia.com"],totalExecutionTime:115722112,totalOccurrences:27059},{name:"Brightcove",homepage:"https://www.brightcove.com/en/",category:"video",domains:["*.brightcove.com","*.brightcove.net","*.zencdn.net"],examples:["vjs.zencdn.net","players.brightcove.net"],totalExecutionTime:15099708,totalOccurrences:13745},{name:"J\ +SDelivr CDN",homepage:"https://www.jsdelivr.com/",category:"cdn",domains:["*.jsdelivr.net"],examples:["cdn.jsdelivr.net"],totalExecutionTime:260364458,totalOccurrences:399959},{name:"Sumo",homepage:"https://sumo.com/",category:"marketing",domains:["*.sumo.com","*.sumome.com","sumo.b-cdn.net"],examples:["sumo.b-cdn.net","load.sumo.com","load.sumome.com"],totalExecutionTime:16489977,totalOccurrences:10901},{name:"Vimeo",homepage:"https://vimeo.com/",category:"video",domains:["*.vimeo.com","*.vimeocdn.com"],examples:["f.vimeocdn.com","player.vimeo.com","i.vimeocdn.com"],products:[{name:"Vimeo Embedded Player",urlPatterns:["player.vimeo.com/video/"],facades:[{name:"Lite Vimeo",repo:"https://github.com/slightlyoff/lite-vimeo"},{name:"Lite Vimeo Embed",repo:"https://github.com/luwes/lite-vimeo-embed"},{name:"Ngx Lite Video",repo:"https://github.com/karim-mamdouh/ngx-lite-video"}]}],totalExecutionTime:263943622,totalOccurrences:120397},{name:"Disqus",homepage:"https://disqus.com/",category:"s\ +ocial",domains:["*.disqus.com","*.disquscdn.com"],examples:["c.disquscdn.com"],totalExecutionTime:3697272,totalOccurrences:1775},{name:"Yandex APIs",company:"Yandex",homepage:"https://yandex.ru/",category:"utility",domains:["api-maps.yandex.ru","money.yandex.ru"],totalExecutionTime:40765111,totalOccurrences:51601},{name:"Yandex CDN",company:"Yandex",homepage:"https://yandex.ru/",category:"cdn",domains:["*.yandex.st","*.yastatic.net"],examples:["https://yastatic.net/share2/share.js","https://yastatic.net/jquery/2.1.4/jquery.min.js"]},{name:"Integral Ad Science",homepage:"https://integralads.com/uk/",category:"ad",domains:["*.adsafeprotected.com","*.iasds01.com"],examples:["pixel.adsafeprotected.com","static.adsafeprotected.com","fw.adsafeprotected.com","cdn.adsafeprotected.com","dt.adsafeprotected.com"],totalExecutionTime:88554254,totalOccurrences:21660},{name:"Tealium",homepage:"https://tealium.com/",category:"tag-manager",domains:["*.aniview.com","*.delvenetworks.com","*.limelight.com", +"*.tiqcdn.com","*.llnwd.net","*.tealiumiq.com"],examples:["tags.tiqcdn.com","tealium.hs.llnwd.net","link.videoplatform.limelight.com","datacloud.tealiumiq.com"],totalExecutionTime:20176561,totalOccurrences:75434},{name:"Pubmatic",homepage:"https://pubmatic.com/",category:"ad",domains:["*.pubmatic.com"],examples:["image6.pubmatic.com","ads.pubmatic.com","image2.pubmatic.com","simage2.pubmatic.com","image4.pubmatic.com","simage4.pubmatic.com","image5.pubmatic.com","hbopenbid.pubmatic.com"],totalExecutionTime:417694368,totalOccurrences:279418},{name:"Olark",homepage:"https://www.olark.com/",category:"customer-success",domains:["*.olark.com"],examples:["static.olark.com"],totalExecutionTime:9840846,totalOccurrences:6534},{name:"Tawk.to",homepage:"https://www.tawk.to/",category:"customer-success",domains:["*.tawk.to"],examples:["embed.tawk.to"],totalExecutionTime:43074965,totalOccurrences:111088},{name:"OptinMonster",homepage:"https://optinmonster.com/",category:"marketing",domains:["*.opmn\ +str.com","*.optmnstr.com","*.optmstr.com"],examples:["a.optmstr.com","api.opmnstr.com","a.optmnstr.com"],totalExecutionTime:1035991,totalOccurrences:2346},{name:"ZenDesk",homepage:"https://zendesk.com/",category:"customer-success",domains:["*.zdassets.com","*.zendesk.com","*.zopim.com"],examples:["assets.zendesk.com","static.zdassets.com","v2.zopim.com"],totalExecutionTime:106701440,totalOccurrences:72537},{name:"Pusher",homepage:"https://pusher.com/",category:"utility",domains:["*.pusher.com","*.pusherapp.com"],examples:["stats.pusher.com"],totalExecutionTime:152727,totalOccurrences:1698},{name:"Drift",homepage:"https://www.drift.com/",category:"marketing",domains:["*.drift.com","*.driftt.com"],examples:["js.driftt.com","api.drift.com"],products:[{name:"Drift Live Chat",urlPatterns:["REGEXP:js\\.driftt\\.com\\/include\\/.*\\/.*\\.js"],facades:[{name:"React Live Chat Loader",repo:"https://github.com/calibreapp/react-live-chat-loader"}]}],totalExecutionTime:30179596,totalOccurrences:5515}, +{name:"Sentry",homepage:"https://sentry.io/",category:"utility",domains:["*.getsentry.com","*.ravenjs.com","*.sentry-cdn.com","*.sentry.io"],examples:["cdn.ravenjs.com","browser.sentry-cdn.com"],totalExecutionTime:47937360,totalOccurrences:85598},{name:"Amazon Web Services",homepage:"https://aws.amazon.com/s3/",category:"other",domains:["*.amazon.com","*.amazonaws.com","*.amazonwebapps.com","*.amazonwebservices.com","*.elasticbeanstalk.com","*.images-amazon.com","*.amazon.co.uk"],examples:["s3.amazonaws.com","us-east-1.amazonaws.com","api-cdn.amazon.com","ecx.images-amazon.com","ws.amazon.co.uk"],totalExecutionTime:51892201,totalOccurrences:119152},{name:"Amazon Pay",homepage:"https://pay.amazon.com",category:"utility",domains:["payments.amazon.com","*.payments-amazon.com"],totalExecutionTime:1234650,totalOccurrences:6833},{name:"Media.net",homepage:"https://www.media.net/",category:"ad",domains:["*.media.net","*.mnet-ad.net"],examples:["contextual.media.net","cdnwest-xch.media.net","h\ +bx.media.net","cs.media.net","hblg.media.net"],totalExecutionTime:24973689,totalOccurrences:97679},{name:"Yahoo!",homepage:"https://www.yahoo.com/",category:"ad",domains:["*.bluelithium.com","*.hostingprod.com","*.lexity.com","*.yahoo.com","*.yahooapis.com","*.yimg.com","*.zenfs.com","*.yahoo.net"],examples:["ads.yahoo.com","analytics.yahoo.com","geo.yahoo.com","udc.yahoo.com","ganon.yahoo.com","ads.yap.yahoo.com"],totalExecutionTime:2617276,totalOccurrences:24800},{name:"Adroll",homepage:"https://www.adroll.com/",category:"ad",domains:["*.adroll.com"],examples:["d.adroll.com","s.adroll.com"],totalExecutionTime:11884188,totalOccurrences:30782},{name:"Twitch",homepage:"https://twitch.tv/",category:"video",domains:["*.twitch.tv"],examples:["player.twitch.tv"],totalExecutionTime:18452667,totalOccurrences:1255},{name:"Taboola",homepage:"https://www.taboola.com/",category:"ad",domains:["*.taboola.com","*.taboolasyndication.com"],examples:["cdn.taboola.com","trc.taboola.com","vidstat.taboola\ +.com","images.taboola.com"],totalExecutionTime:32631891,totalOccurrences:49191},{name:"Sizmek",homepage:"https://www.sizmek.com/",category:"ad",domains:["*.serving-sys.com","*.peer39.net"],examples:["secure-ds.serving-sys.com","ds.serving-sys.com","bs.serving-sys.com"],totalExecutionTime:6679849,totalOccurrences:4307},{name:"Scorecard Research",homepage:"https://www.scorecardresearch.com/",category:"ad",domains:["*.scorecardresearch.com"],examples:["sb.scorecardresearch.com","sa.scorecardresearch.com","b.scorecardresearch.com"],totalExecutionTime:4399371,totalOccurrences:54577},{name:"Criteo",homepage:"https://www.criteo.com/",category:"ad",domains:["*.criteo.com","*.emailretargeting.com","*.criteo.net"],examples:["static.criteo.net","bidder.criteo.com","dis.criteo.com","gum.criteo.com","sslwidget.criteo.com","dis.us.criteo.com"],totalExecutionTime:25625451,totalOccurrences:213880},{name:"Segment",homepage:"https://segment.com/",category:"analytics",domains:["*.segment.com","*.segment.\ +io"],examples:["cdn.segment.com","api.segment.io"],totalExecutionTime:11055141,totalOccurrences:27036},{name:"ShareThis",homepage:"https://www.sharethis.com/",category:"social",domains:["*.sharethis.com"],examples:["w.sharethis.com","ws.sharethis.com","t.sharethis.com"],totalExecutionTime:30807804,totalOccurrences:88829},{name:"Distil Networks",homepage:"https://www.distilnetworks.com/",category:"utility",domains:["*.areyouahuman.com"],examples:["n-cdn.areyouahuman.com"]},{name:"Connexity",homepage:"https://connexity.com/",category:"analytics",domains:["*.connexity.net"]},{name:"Popads",homepage:"https://www.popads.net/",category:"ad",domains:["*.popads.net"],examples:["serve.popads.net","c1.popads.net"],totalExecutionTime:756593,totalOccurrences:427},{name:"CreateJS CDN",homepage:"https://code.createjs.com/",category:"cdn",domains:["*.createjs.com"],examples:["code.createjs.com"],totalExecutionTime:13654049,totalOccurrences:3880},{name:"Squarespace",homepage:"https://www.squarespace.c\ +om/",category:"hosting",domains:["*.squarespace.com"],examples:["static.squarespace.com","static1.squarespace.com"],totalExecutionTime:1106480464,totalOccurrences:243154},{name:"Media Math",homepage:"https://www.mediamath.com/",category:"ad",domains:["*.mathads.com","*.mathtag.com"],examples:["mathid.mathtag.com","sync.mathtag.com","pixel.mathtag.com"],totalExecutionTime:20783,totalOccurrences:305},{name:"Mixpanel",homepage:"https://mixpanel.com/",category:"analytics",domains:["*.mixpanel.com","*.mxpnl.com"],examples:["cdn.mxpnl.com"],totalExecutionTime:3250547,totalOccurrences:18817},{name:"FontAwesome CDN",homepage:"https://fontawesome.com/",category:"cdn",domains:["*.fontawesome.com"],examples:["use.fontawesome.com"],totalExecutionTime:73007333,totalOccurrences:291586},{name:"Hubspot",homepage:"https://hubspot.com/",category:"marketing",domains:["*.hs-scripts.com","*.hubspot.com","*.leadin.com","*.hs-analytics.net","*.hscollectedforms.net","*.hscta.net","*.hsforms.net","*.hsleadflow\ +s.net","*.hsstatic.net","*.hubspot.net","*.hsforms.com","*.hs-banner.com","*.hs-embed-reporting.com","*.hs-growth-metrics.com","*.hs-data.com","*.hsadspixel.net","*.hubapi.com"],examples:["forms.hubspot.com","js.hsforms.net","js.hs-analytics.net","js.leadin.com"],totalExecutionTime:92224372,totalOccurrences:154415},{name:"Mailchimp",homepage:"https://mailchimp.com/",category:"marketing",domains:["*.chimpstatic.com","*.list-manage.com","*.mailchimp.com"],examples:["downloads.mailchimp.com"],totalExecutionTime:21592375,totalOccurrences:45506},{name:"MGID",homepage:"https://www.mgid.com/",category:"ad",domains:["*.mgid.com","*.dt07.net"],examples:["servicer.mgid.com"],totalExecutionTime:22074076,totalOccurrences:10437},{name:"Stripe",homepage:"https://stripe.com",category:"utility",domains:["*.stripe.com","*.stripecdn.com","*.stripe.network"],examples:["m.stripe.network","js.stripe.com"],totalExecutionTime:166354648,totalOccurrences:136440},{name:"PayPal",homepage:"https://paypal.com",category:"\ +utility",domains:["*.paypal.com","*.paypalobjects.com"],examples:["www.paypalobjects.com"],totalExecutionTime:64408205,totalOccurrences:62800},{name:"Market GID",homepage:"https://www.marketgid.com/",category:"ad",domains:["*.marketgid.com"],examples:["jsc.marketgid.com"]},{name:"Pinterest",homepage:"https://pinterest.com/",category:"social",domains:["*.pinimg.com","*.pinterest.com"],examples:["assets.pinterest.com","ct.pinterest.com","log.pinterest.com"],totalExecutionTime:17602311,totalOccurrences:131448},{name:"New Relic",homepage:"https://newrelic.com/",category:"utility",domains:["*.newrelic.com","*.nr-data.net"],examples:["js-agent.newrelic.com","bam.nr-data.net"],totalExecutionTime:64592740,totalOccurrences:227672},{name:"AppDynamics",homepage:"https://www.appdynamics.com/",category:"utility",domains:["*.appdynamics.com","*.eum-appdynamics.com","d3tjaysgumg9lf.cloudfront.net"],examples:["cdn.appdynamics.com"],totalExecutionTime:2509158,totalOccurrences:2920},{name:"Parking Crew", +homepage:"https://parkingcrew.net/",category:"other",domains:["d1lxhc4jvstzrp.cloudfront.net","*.parkingcrew.net"],totalExecutionTime:9,totalOccurrences:1},{name:"WordAds",company:"Automattic",homepage:"https://wordads.co/",category:"ad",domains:["*.pubmine.com"],examples:["s.pubmine.com"],totalExecutionTime:74286347,totalOccurrences:100449},{name:"AppNexus",homepage:"https://www.appnexus.com/",category:"ad",domains:["*.adnxs.com","*.ctasnet.com","*.adrdgt.com"],examples:["acdn.adnxs.com","secure.adnxs.com","ib.adnxs.com","sharethrough.adnxs.com","cdn.adnxs.com","vcdn.adnxs.com"],totalExecutionTime:5948505,totalOccurrences:234133},{name:"Histats",homepage:"https://www.histats.com/",category:"analytics",domains:["*.histats.com"],examples:["s10.histats.com"],totalExecutionTime:5601,totalOccurrences:92},{name:"DoubleVerify",homepage:"https://www.doubleverify.com/",category:"ad",domains:["*.doubleverify.com","*.dvtps.com","*.iqfp1.com"],examples:["cdn.doubleverify.com","cdn3.doubleverify.c\ +om","tps.doubleverify.com","tps712.doubleverify.com","tps714.doubleverify.com","tps706.doubleverify.com","tps700.doubleverify.com","tps707.doubleverify.com","rtb2.doubleverify.com","rtb0.doubleverify.com","rtbcdn.doubleverify.com","tps11020.doubleverify.com","tm.iqfp1.com"],totalExecutionTime:46891028,totalOccurrences:19453},{name:"Mediavine",homepage:"https://www.mediavine.com/",category:"ad",domains:["*.mediavine.com"],examples:["scripts.mediavine.com","video.mediavine.com"],totalExecutionTime:59009373,totalOccurrences:12963},{name:"Wix",homepage:"https://www.wix.com/",category:"hosting",domains:["*.parastorage.com","*.wix.com","*.wixstatic.com","*.wixapps.net"],examples:["static.parastorage.com","static.wixstatic.com","www.wix.com","instagram.codev.wixapps.net"],totalExecutionTime:2112268981,totalOccurrences:458273},{name:"Webflow",homepage:"https://webflow.com/",category:"hosting",domains:["*.uploads-ssl.webflow.com","*.assets-global.website-files.com","*.assets.website-files.com"], +examples:["uploads-ssl.webflow.com","assets-global.website-files.com","assets.website-files.com"]},{name:"Weebly",homepage:"https://www.weebly.com/",category:"hosting",domains:["*.editmysite.com"],totalExecutionTime:413019e3,totalOccurrences:67864},{name:"LinkedIn",homepage:"https://www.linkedin.com/",category:"social",domains:["*.bizographics.com","platform.linkedin.com","*.slideshare.com","*.slidesharecdn.com","*.oribi.io"],totalExecutionTime:5776577,totalOccurrences:16507},{name:"LinkedIn Ads",category:"ad",domains:["*.licdn.com","*.ads.linkedin.com","ads.linkedin.com","www.linkedin.com"],examples:["snap.licdn.com"],totalExecutionTime:22805542,totalOccurrences:199088},{name:"Vox Media",homepage:"https://www.voxmedia.com/",category:"content",domains:["*.vox-cdn.com","*.voxmedia.com"],examples:["cdn.vox-cdn.com"],totalExecutionTime:910366,totalOccurrences:320},{name:"Hotmart",homepage:"https://www.hotmart.com/",category:"content",domains:["*.hotmart.com"],examples:["launchermodule.hot\ +mart.com"],totalExecutionTime:15363016,totalOccurrences:4554},{name:"SoundCloud",homepage:"https://www.soundcloud.com/",category:"content",domains:["*.sndcdn.com","*.soundcloud.com","*.stratus.sc"],examples:["widget.sndcdn.com"],totalExecutionTime:15888610,totalOccurrences:5859},{name:"Spotify",homepage:"https://www.spotify.com/",category:"content",domains:["*.scdn.co","*.spotify.com"],examples:["open.spotify.com","open.scdn.co","i.scdn.co"],totalExecutionTime:99924,totalOccurrences:10992},{name:"AMP",homepage:"https://amp.dev/",category:"content",domains:["*.ampproject.org"],examples:["cdn.ampproject.org"],totalExecutionTime:79590738,totalOccurrences:66265},{name:"Beeketing",homepage:"https://beeketing.com/",category:"marketing",domains:["*.beeketing.com"],examples:["sdk-cdn.beeketing.com","sdk.beeketing.com"],totalExecutionTime:2163106,totalOccurrences:1971},{name:"Albacross",homepage:"https://albacross.com/",category:"marketing",domains:["*.albacross.com"],examples:["serve.albacross\ +.com"],totalExecutionTime:100459,totalOccurrences:1503},{name:"TrafficJunky",homepage:"https://www.trafficjunky.com/",category:"ad",domains:["*.contentabc.com","*.trafficjunky.net"],examples:["ads2.contentabc.com","hw-cdn.contentabc.com","media.trafficjunky.net","ads.trafficjunky.net","hw-cdn.trafficjunky.net"],totalExecutionTime:2936,totalOccurrences:62},{name:"Bootstrap CDN",homepage:"https://www.bootstrapcdn.com/",category:"cdn",domains:["*.bootstrapcdn.com"],examples:["maxcdn.bootstrapcdn.com","stackpath.bootstrapcdn.com"],totalExecutionTime:2075388,totalOccurrences:38731},{name:"Shareaholic",homepage:"https://www.shareaholic.com/",category:"social",domains:["*.shareaholic.com","dsms0mj1bbhn4.cloudfront.net"],totalExecutionTime:122180,totalOccurrences:1429},{name:"Snowplow",homepage:"https://snowplowanalytics.com/",category:"analytics",domains:["d32hwlnfiv2gyn.cloudfront.net"],totalExecutionTime:7099041,totalOccurrences:58566},{name:"RD Station",homepage:"https://www.rdstation.com/\ +en/",category:"marketing",domains:["d335luupugsy2.cloudfront.net"],totalExecutionTime:7693701,totalOccurrences:21846},{name:"Jivochat",homepage:"https://www.jivochat.com/",category:"customer-success",domains:["*.jivosite.com"],examples:["cdn-ca.jivosite.com","code.jivosite.com"],totalExecutionTime:36663932,totalOccurrences:57540},{name:"Listrak",homepage:"https://www.listrak.com/",category:"marketing",domains:["*.listrak.com","*.listrakbi.com"],examples:["cdn.listrakbi.com","s1.listrakbi.com"],totalExecutionTime:458776,totalOccurrences:1045},{name:"Ontame",homepage:"https://www.ontame.io",category:"analytics",domains:["*.ontame.io"],examples:["cdn.ontame.io","collector.ontame.io"],totalExecutionTime:23620,totalOccurrences:101},{name:"Ipify",homepage:"https://www.ipify.org",category:"utility",domains:["*.ipify.org"],examples:["api.ipify.org","geo.ipify.org"],totalExecutionTime:365905,totalOccurrences:2753},{name:"Ensighten",homepage:"https://www.ensighten.com/",category:"tag-manager",domains:[ +"*.ensighten.com"],examples:["nexus.ensighten.com"],totalExecutionTime:1774287,totalOccurrences:3199},{name:"EpiServer",homepage:"https://www.episerver.com",category:"content",domains:["*.episerver.net"],examples:["dl.episerver.net"],totalExecutionTime:9010,totalOccurrences:80},{name:"mPulse",homepage:"https://developer.akamai.com/akamai-mpulse",category:"analytics",domains:["*.akstat.io","*.go-mpulse.net","*.mpulse.net","*.mpstat.us"],examples:["c.go-mpulse.net","0211c83c.akstat.io"],totalExecutionTime:3089821,totalOccurrences:30624},{name:"Pingdom RUM",homepage:"https://www.pingdom.com/product/performance-monitoring/",category:"analytics",domains:["*.pingdom.net"],examples:["rum-static.pingdom.net","rum-collector-2.pingdom.net"],totalExecutionTime:106679,totalOccurrences:1825},{name:"SpeedCurve RUM",company:"SpeedCurve",homepage:"https://www.speedcurve.com/features/performance-monitoring/",category:"analytics",domains:["*.speedcurve.com"],examples:["cdn.speedcurve.com","lux.speedcurv\ +e.com"],totalExecutionTime:323903,totalOccurrences:5358},{name:"Radar",company:"Cedexis",homepage:"https://www.cedexis.com/radar/",category:"analytics",domains:["*.cedexis-test.com","*.cedexis.com","*.cmdolb.com","cedexis.leasewebcdn.com","*.cedexis-radar.net","*.cedexis.net","cedexis-test01.insnw.net","cedexisakamaitest.azureedge.net","cedexispub.cdnetworks.net","cs600.wac.alphacdn.net","cs600.wpc.edgecastdns.net","global2.cmdolb.com","img-cedexis.mncdn.com","a-cedexis.msedge.net","zn3vgszfh.fastestcdn.net"],examples:["radar.cedexis.com","rpt.cedexis.com","2-01-49cd-0002.cdx.cedexis.net","bench.cedexis-test.com"],totalExecutionTime:290925,totalOccurrences:1133},{name:"Byside",homepage:"https://byside.com",category:"analytics",domains:["*.byside.com"],examples:["byce2.byside.com","wce2.byside.com"],totalExecutionTime:45270,totalOccurrences:87},{name:"VWO",homepage:"https://vwo.com",category:"analytics",domains:["*.vwo.com","*.visualwebsiteoptimizer.com","d5phz18u4wuww.cloudfront.net","\ +*.wingify.com"],examples:["dev.visualwebsiteoptimizer.com"],totalExecutionTime:6485310,totalOccurrences:7903},{name:"Bing Ads",homepage:"https://bingads.microsoft.com",category:"ad",domains:["*.bing.com","*.microsoft.com","*.msn.com","*.s-msft.com","*.s-msn.com","*.msads.net","*.msecnd.net"],examples:["bat.bing.com","c.bing.com","bat.r.msn.com","ajax.microsoft.com"],totalExecutionTime:14227177,totalOccurrences:117720},{name:"GoSquared",homepage:"https://www.gosquared.com",category:"analytics",domains:["*.gosquared.com","d1l6p2sc9645hc.cloudfront.net"],examples:["data.gosquared.com","data2.gosquared.com"],totalExecutionTime:56152,totalOccurrences:613},{name:"Usabilla",homepage:"https://usabilla.com",category:"analytics",domains:["*.usabilla.com","d6tizftlrpuof.cloudfront.net"],examples:["w.usabilla.com"],totalExecutionTime:240166,totalOccurrences:1354},{name:"Fastly Insights",homepage:"https://insights.fastlylabs.com",category:"analytics",domains:["*.fastly-insights.com"],examples:["www\ +.fastly-insights.com"],totalExecutionTime:541189,totalOccurrences:4449},{name:"Visual IQ",homepage:"https://www.visualiq.com",category:"analytics",domains:["*.myvisualiq.net"],examples:["t.myvisualiq.net"]},{name:"Snapchat",homepage:"https://www.snapchat.com",category:"analytics",domains:["*.snapchat.com","*.sc-static.net"],examples:["tr.snapchat.com"],totalExecutionTime:177890,totalOccurrences:1978},{name:"Atlas Solutions",homepage:"https://atlassolutions.com",category:"analytics",domains:["*.atdmt.com"],examples:["ad.atdmt.com","cx.atdmt.com"]},{name:"Quantcast",homepage:"https://www.quantcast.com",category:"analytics",domains:["*.brtstats.com","*.quantcount.com","*.quantserve.com","*.semantictec.com","*.ntv.io"],examples:["pixel.quantserve.com","secure.quantserve.com","cms.quantserve.com","rules.quantcount.com"],totalExecutionTime:12419392,totalOccurrences:77646},{name:"Spiceworks",homepage:"https://www.spiceworks.com",category:"analytics",domains:["*.spiceworks.com"],examples:["px.\ +spiceworks.com"]},{name:"Marketo",homepage:"https://www.marketo.com",category:"analytics",domains:["*.marketo.com","*.mktoresp.com","*.marketo.net"],examples:["munchkin.marketo.net"],totalExecutionTime:724464,totalOccurrences:1798},{name:"Intercom",homepage:"https://www.intercom.com",category:"customer-success",domains:["*.intercomcdn.com","*.intercom.io"],examples:["js.intercomcdn.com","api-iam.intercom.io","widget.intercom.io","nexus-websocket-a.intercom.io"],products:[{name:"Intercom Widget",urlPatterns:["widget.intercom.io","js.intercomcdn.com/shim.latest.js"],facades:[{name:"React Live Chat Loader",repo:"https://github.com/calibreapp/react-live-chat-loader"},{name:"Intercom Facade",repo:"https://github.com/danielbachhuber/intercom-facade/"}]}],totalExecutionTime:44601345,totalOccurrences:35197},{name:"Unpkg",homepage:"https://unpkg.com",category:"cdn",domains:["*.unpkg.com","*.npmcdn.com"],totalExecutionTime:74666,totalOccurrences:227},{name:"ReadSpeaker",homepage:"https://www.rea\ +dspeaker.com",category:"other",domains:["*.readspeaker.com"],examples:["sf1-eu.readspeaker.com"],totalExecutionTime:727525,totalOccurrences:6265},{name:"Browsealoud",homepage:"https://www.texthelp.com/en-gb/products/browsealoud/",category:"other",domains:["*.browsealoud.com","*.texthelp.com"],examples:["www.browsealoud.com"],totalExecutionTime:665425,totalOccurrences:1951},{name:"15gifts",category:"customer-success",domains:["*.15gifts.com","*.primefuse.com"],examples:["www.primefuse.com"]},{name:"1xRUN",category:"utility",domains:["*.1xrun.com"]},{name:"2AdPro Media Solutions",category:"ad",domains:["*.2adpro.com"]},{name:"301 Digital Media",category:"content",domains:["*.301ads.com","*.301network.com"]},{name:"360 picnic platform",company:"MediaV",category:"ad",domains:["*.mediav.com"],totalExecutionTime:4893,totalOccurrences:78},{name:"365 Media Group",category:"content",domains:["*.365dm.com"]},{name:"365 Tech Services",category:"hosting",domains:["*.365webservices.co.uk"]},{name:"\ +3D Issue",category:"utility",domains:["*.3dissue.com","*.pressjack.com"],totalExecutionTime:53823,totalOccurrences:30},{name:"47Line Technologies",category:"other",domains:["*.pejs.net"]},{name:"4finance",category:"utility",domains:["*.4finance.com"]},{name:"5miles",category:"content",domains:["*.5milesapp.com"]},{name:"77Tool",company:"77Agency",category:"analytics",domains:["*.77tracking.com"]},{name:"9xb",category:"ad",domains:["*.9xb.com"]},{name:"@UK",category:"hosting",domains:["*.uk-plc.net"]},{name:"A Perfect Pocket",category:"hosting",domains:["*.aperfectpocketdata.com"]},{name:"A-FIS PTE",category:"analytics",domains:["*.websta.me"]},{name:"AB Tasty",homepage:"https://www.abtasty.com/",category:"analytics",domains:["*.abtasty.com","d1447tq2m68ekg.cloudfront.net"],examples:["try.abtasty.com"],totalExecutionTime:1720461,totalOccurrences:3363},{name:"ABA RESEARCH",category:"analytics",domains:["*.abaresearch.uk","qmodal.azurewebsites.net"]},{name:"ADMIZED",category:"ad",domains:[ +"*.admized.com"]},{name:"ADNOLOGIES",category:"ad",domains:["*.heias.com"]},{name:"ADventori",category:"ad",domains:["*.adventori.com"],totalExecutionTime:5790,totalOccurrences:21},{name:"AI Media Group",category:"ad",domains:["*.aimediagroup.com"]},{name:"AIR.TV",category:"ad",domains:["*.air.tv"]},{name:"AKQA",category:"ad",domains:["*.srtk.net"]},{name:"AOL ad",company:"AOL",category:"ad",domains:["*.atwola.com"]},{name:"AOL On",company:"AOL",category:"content",domains:["*.5min.com"]},{name:"AOL Sponsored Listiings",company:"AOL",category:"ad",domains:["*.adsonar.com"]},{name:"APSIS Lead",company:"APSIS International AB",category:"ad",domains:["*.prospecteye.com"]},{name:"APSIS Profile Cloud",company:"APSIS",category:"analytics",domains:["*.innomdc.com"]},{name:"APSIS Forms",company:"APSIS",category:"other",domains:["*.apsisforms.com"],examples:["forms.apsisforms.com"]},{name:"ARENA",company:"Altitude",category:"ad",domains:["*.altitude-arena.com"],totalExecutionTime:1,totalOccurrences:1}, +{name:"ARM",category:"analytics",domains:["*.tag4arm.com"],totalExecutionTime:5847,totalOccurrences:83},{name:"ASAPP",category:"other",domains:["*.asapp.com"],totalExecutionTime:37052,totalOccurrences:31},{name:"ASP",category:"hosting",domains:["*.goshowoff.com"]},{name:"AT Internet",category:"analytics",domains:["*.ati-host.net"]},{name:"ATTRAQT",category:"utility",domains:["*.attraqt.com","*.locayta.com"]},{name:"AVANSER",category:"analytics",domains:["*.avanser.com.au"]},{name:"AVG",company:"AVG Technologies",category:"utility",domains:["*.avg.com"],examples:["omni.avg.com"]},{name:"AWeber",category:"ad",domains:["*.aweber.com"],totalExecutionTime:40945,totalOccurrences:280},{name:"AXS",category:"content",domains:["*.axs.com"],totalExecutionTime:49218,totalOccurrences:8},{name:"Accentuate",company:"Accentuate Digital",category:"utility",homepage:"https://www.accentuate.io/",domains:["*.accentuate.io"],examples:["cdn.accentuate.io","original.accentuate.io"],totalExecutionTime:1772,totalOccurrences:17}, +{name:"Accenture",category:"analytics",domains:["*.tmvtp.com"]},{name:"Accord Holdings",category:"ad",domains:["*.agcdn.com"]},{name:"Accordant Media",category:"ad",domains:["*.a3cloud.net"],examples:["segment.a3cloud.net"]},{name:"Account Kit",category:"other",domains:["*.accountkit.com"]},{name:"Accuen Media (Omnicom Media Group)",category:"content",domains:["*.p-td.com"]},{name:"Accuweather",category:"content",domains:["*.accuweather.com"],totalExecutionTime:291762,totalOccurrences:1477},{name:"Acquisio",category:"ad",domains:["*.acq.io"],totalExecutionTime:1692,totalOccurrences:32},{name:"Act-On Software",category:"marketing",domains:["*.actonsoftware.com"],totalExecutionTime:98,totalOccurrences:2},{name:"ActBlue",category:"other",domains:["*.actblue.com"],totalExecutionTime:62800,totalOccurrences:73},{name:"Active Agent",category:"ad",domains:["*.active-agent.com"]},{name:"ActiveCampaign",category:"ad",domains:["*.trackcmp.net","app-us1.com","*.app-us1.com"],examples:["trackcmp.ne\ +t","prism.app-us1.com","diffuser-cdn.app-us1.com"],totalExecutionTime:1605217,totalOccurrences:19100},{name:"AcuityAds",category:"ad",domains:["*.acuityplatform.com"],totalExecutionTime:2492,totalOccurrences:693},{name:"Acxiom",category:"ad",domains:["*.acxiom-online.com","*.acxiomapac.com","*.delivery.net"]},{name:"Ad4Screen",category:"ad",domains:["*.a4.tl"]},{name:"Ad6Media",category:"ad",domains:["*.ad6media.fr"],totalExecutionTime:821770,totalOccurrences:654},{name:"AdCurve",category:"ad",domains:["*.shop2market.com"]},{name:"AdEasy",category:"ad",domains:["*.adeasy.ru"]},{name:"AdExtent",category:"ad",domains:["*.adextent.com"]},{name:"AdForge Edge",company:"AdForge",category:"ad",domains:["*.adforgeinc.com"]},{name:"AdGear",company:"Samsung Electronics",category:"ad",domains:["*.adgear.com","*.adgrx.com"],totalExecutionTime:19948,totalOccurrences:42920},{name:"AdInMedia",category:"ad",domains:["*.fastapi.net"]},{name:"AdJug",category:"ad",domains:["*.adjug.com"],examples:["track\ +ing.adjug.com","uk.view.adjug.com"]},{name:"AdMatic",category:"ad",domains:["*.admatic.com.tr"],totalExecutionTime:1274496,totalOccurrences:467},{name:"AdMedia",category:"ad",domains:["*.admedia.com"],examples:["pixel.admedia.com"],totalExecutionTime:2027,totalOccurrences:7},{name:"AdRecover",category:"ad",domains:["*.adrecover.com"],totalExecutionTime:5117,totalOccurrences:46},{name:"AdRiver",category:"ad",domains:["*.adriver.ru"],totalExecutionTime:1374767,totalOccurrences:4740},{name:"AdSniper",category:"ad",domains:["*.adsniper.ru","*.sniperlog.ru"],totalExecutionTime:2366,totalOccurrences:22},{name:"AdSpeed",category:"ad",domains:["*.adspeed.net"],totalExecutionTime:4642,totalOccurrences:16},{name:"AdSpruce",category:"ad",domains:["*.adspruce.com"]},{name:"AdSupply",category:"ad",domains:["*.doublepimp.com"],totalExecutionTime:1436,totalOccurrences:13},{name:"AdTheorent",category:"ad",domains:["*.adentifi.com"],totalExecutionTime:108,totalOccurrences:1},{name:"AdThink AudienceInsi\ +ghts",company:"AdThink Media",category:"analytics",domains:["*.audienceinsights.net"]},{name:"AdTrue",company:"FPT AdTrue",category:"ad",domains:["*.adtrue.com"]},{name:"AdYapper",category:"ad",domains:["*.adyapper.com"]},{name:"Adacado",category:"ad",domains:["*.adacado.com"],totalExecutionTime:1777,totalOccurrences:18},{name:"Adap.tv",category:"ad",domains:["*.adap.tv"]},{name:"Adapt Services",category:"hosting",domains:["*.adcmps.com"]},{name:"Adaptive Web",category:"hosting",domains:["*.adaptive.co.uk"]},{name:"Adara Media",category:"ad",domains:["*.yieldoptimizer.com"],totalExecutionTime:1324,totalOccurrences:23},{name:"Adblade",category:"ad",domains:["*.adblade.com"],totalExecutionTime:704,totalOccurrences:7},{name:"Adbrain",category:"ad",domains:["*.adbrn.com"]},{name:"AddEvent",category:"utility",domains:["*.addevent.com"],examples:["www.addevent.com"],totalExecutionTime:73230,totalOccurrences:203},{name:"AddShoppers",category:"social",domains:["*.addshoppers.com","d3rr3d0n31t4\ +8m.cloudfront.net","*.shop.pe"],totalExecutionTime:31574,totalOccurrences:451},{name:"AddThisEvent",category:"hosting",domains:["*.addthisevent.com"]},{name:"Addoox MetaNetwork",company:"Addoox",category:"ad",domains:["*.metanetwork.net"]},{name:"Addvantage Media",category:"ad",domains:["*.addvantagemedia.com","*.simplytechnology.net"]},{name:"AD EBis",category:"analytics",homepage:"https://www.ebis.ne.jp/",domains:["*.ebis.ne.jp"],examples:["taj1.ebis.ne.jp"],totalExecutionTime:55086,totalOccurrences:608},{name:"Adecs",category:"customer-success",domains:["*.adecs.co.uk"],examples:["www.adecs.co.uk"]},{name:"Adelphic",category:"ad",domains:["*.ipredictive.com"],totalExecutionTime:8196,totalOccurrences:112},{name:"Adestra",category:"ad",domains:["*.adestra.com","*.msgfocus.com"]},{name:"Adform",category:"ad",domains:["*.adform.net","*.adformdsp.net"],totalExecutionTime:1798751,totalOccurrences:140125},{name:"Adkontekst",category:"ad",domains:["*.adkontekst.pl"]},{name:"Adlead",category:"\ +ad",domains:["*.webelapp.com"]},{name:"Adledge",category:"utility",domains:["*.adledge.com"]},{name:"Adloox",category:"ad",domains:["*.adlooxtracking.com"],totalExecutionTime:103507,totalOccurrences:112},{name:"Adlux",category:"ad",domains:["*.adlux.com"]},{name:"Admedo",category:"ad",domains:["*.a8723.com","*.adizio.com","*.admedo.com"],examples:["pool.a8723.com"],totalExecutionTime:9586,totalOccurrences:695},{name:"Admeta",company:"Wideorbit",category:"ad",domains:["*.atemda.com"]},{name:"Admetrics",company:"Next Tuesday",category:"analytics",domains:["*.nt.vc"],examples:["metrics.nt.vc"]},{name:"Admiral",category:"ad",domains:["*.unknowntray.com"]},{name:"Admitad",category:"ad",domains:["*.lenmit.com"],totalExecutionTime:2335,totalOccurrences:31},{name:"Admixer for Publishers",company:"Admixer",category:"ad",domains:["*.admixer.net"],totalExecutionTime:1542643,totalOccurrences:878},{name:"Adnium",category:"ad",domains:["*.adnium.com"]},{name:"Adnostic",company:"Dennis Publishing",category:"\ +ad",domains:["*.adnostic.co.uk"]},{name:"Adobe Marketing Cloud",company:"Adobe Systems",category:"ad",domains:["*.adobetag.com"]},{name:"Adobe Scene7",company:"Adobe Systems",category:"content",domains:["wwwimages.adobe.com","*.scene7.com","*.everestads.net","*.everestjs.net"],totalExecutionTime:808424,totalOccurrences:702},{name:"Adobe Systems",category:"content",domains:["adobe.com","www.adobe.com"],totalExecutionTime:38836,totalOccurrences:179},{name:"Adobe Business Catalyst",homepage:"https://www.businesscatalyst.com/",category:"hosting",domains:["*.businesscatalyst.com"]},{name:"Adocean",company:"Gemius",category:"ad",domains:["*.adocean.pl"],totalExecutionTime:1658274,totalOccurrences:2151},{name:"Adometry",company:"Google",category:"ad",domains:["*.dmtry.com"]},{name:"Adomik",category:"analytics",domains:["*.adomik.com"]},{name:"Adotmob",category:"ad",domains:["*.adotmob.com"]},{name:"Adrian Quevedo",category:"hosting",domains:["*.adrianquevedo.com"]},{name:"Adroit Digital Solut\ +ions",category:"ad",domains:["*.imiclk.com","*.abmr.net"]},{name:"AdsNative",category:"ad",domains:["*.adsnative.com"]},{name:"AdsWizz",category:"ad",domains:["*.adswizz.com"],totalExecutionTime:479514,totalOccurrences:1901},{name:"Adscale",category:"ad",domains:["*.adscale.de"],totalExecutionTime:106237,totalOccurrences:960},{name:"Adschoom",company:"JSWeb Production",category:"ad",domains:["*.adschoom.com"],totalExecutionTime:491,totalOccurrences:2},{name:"Adscience",category:"ad",domains:["*.adscience.nl"]},{name:"Adsiduous",category:"ad",domains:["*.adsiduous.com"]},{name:"Adsty",category:"ad",domains:["*.adx1.com"],totalExecutionTime:698,totalOccurrences:5},{name:"Adtech (AOL)",category:"ad",domains:["*.adtechus.com"],totalExecutionTime:176,totalOccurrences:2},{name:"Adtegrity",category:"ad",domains:["*.adtpix.com"],totalExecutionTime:1735,totalOccurrences:20},{name:"Adthink",company:"Adthink Media",category:"ad",domains:["*.adxcore.com","*.dcoengine.com"],examples:["d.adxcore.com"]}, +{name:"AdultWebmasterEmpire.Com",category:"ad",domains:["*.awempire.com"],totalExecutionTime:65091,totalOccurrences:38},{name:"Adunity",category:"ad",domains:["*.adunity.com"]},{name:"Advance Magazine Group",category:"content",domains:["*.condenastdigital.com","*.condenet.com","*.condenast.co.uk"],totalExecutionTime:2531,totalOccurrences:8},{name:"Adverline Board",company:"Adverline",category:"ad",domains:["*.adverline.com","*.adnext.fr"]},{name:"AdvertServe",category:"ad",domains:["*.advertserve.com"],totalExecutionTime:112685,totalOccurrences:437},{name:"Advolution",category:"utility",domains:["*.advolution.de"]},{name:"Adwise",category:"ad",domains:["*.adwise.bg"],totalExecutionTime:144,totalOccurrences:2},{name:"Adyen",category:"utility",domains:["*.adyen.com"],totalExecutionTime:6335144,totalOccurrences:2363},{name:"Adyoulike",category:"ad",domains:["*.adyoulike.com","*.omnitagjs.com","*.adyoulike.net"],totalExecutionTime:147862,totalOccurrences:53190},{name:"Adzerk",category:"ad", +domains:["*.adzerk.net"],totalExecutionTime:35184,totalOccurrences:117},{name:"Adzip",company:"Adbox Digital",category:"ad",domains:["*.adzip.co"]},{name:"AerServ",category:"ad",domains:["*.aerserv.com"]},{name:"Affectv",category:"ad",domains:["*.affectv.com","*.affec.tv"],totalExecutionTime:1187,totalOccurrences:12},{name:"Affiliate Window",company:"Digital Window",category:"ad",domains:["*.dwin1.com"],totalExecutionTime:561168,totalOccurrences:5414},{name:"Affiliatly",category:"ad",domains:["*.affiliatly.com"],examples:["www.affiliatly.com"],totalExecutionTime:32020,totalOccurrences:132},{name:"Affino",category:"ad",domains:["affino.com"]},{name:"Affirm",category:"utility",domains:["*.affirm.com"],totalExecutionTime:3997184,totalOccurrences:6665},{name:"Afterpay",company:"Block",category:"utility",homepage:"https://www.afterpay.com/",domains:["*.afterpay.com"],examples:["static-us.afterpay.com"],totalExecutionTime:1270109,totalOccurrences:8269},{name:"Agenda Media",category:"ad",domains:[ +"*.agendamedia.co.uk"]},{name:"Aggregate Knowledge",company:"Neustar",category:"ad",domains:["*.agkn.com"],totalExecutionTime:14828,totalOccurrences:344},{name:"AgilOne",category:"marketing",domains:["*.agilone.com"],totalExecutionTime:4190,totalOccurrences:53},{name:"Agility",category:"hosting",domains:["*.agilitycms.com"],totalExecutionTime:3079,totalOccurrences:4},{name:"Ahalogy",category:"social",domains:["*.ahalogy.com"]},{name:"Aheadworks",category:"utility",domains:["*.aheadworks.com"]},{name:"AirPR",category:"analytics",domains:["*.airpr.com"],totalExecutionTime:416,totalOccurrences:5},{name:"Aira",category:"ad",domains:["*.aira.net"],examples:["www.aira.net"]},{name:"Airport Parking and Hotels",category:"content",domains:["*.aph.com"],totalExecutionTime:277,totalOccurrences:3},{name:"Akanoo",category:"analytics",domains:["*.akanoo.com"]},{name:"Alchemy",company:"AndBeyond.Media",category:"ad",domains:["*.andbeyond.media"],totalExecutionTime:456340,totalOccurrences:164},{name:"\ +AlephD",company:"AOL",category:"ad",domains:["*.alephd.com"]},{name:"AliveChat",company:"AYU Technology Solutions",category:"customer-success",domains:["*.websitealive.com","*.websitealive7.com"]},{name:"All Access",category:"other",domains:["*.allaccess.com.ph"]},{name:"Alliance for Audited Media",category:"ad",domains:["*.aamsitecertifier.com"]},{name:"Allyde",category:"marketing",domains:["*.mautic.com"]},{name:"AlphaSSL",category:"utility",domains:["*.alphassl.com"],totalExecutionTime:1146,totalOccurrences:10},{name:"Altitude",category:"ad",domains:["*.altitudeplatform.com"]},{name:"Altocloud",category:"analytics",domains:["*.altocloud.com"]},{name:"Amadeus",category:"content",domains:["*.e-travel.com"]},{name:"Amazon CloudFront",company:"Amazon",category:"utility",domains:["cloudfront.net"]},{name:"Ambassador",category:"ad",domains:["*.getambassador.com"],totalExecutionTime:21042,totalOccurrences:89},{name:"Ambient",company:"Ericcson",category:"other",domains:["*.adnetwork.vn","*.\ +ambientplatform.vn"]},{name:"Amelia Communication",category:"hosting",domains:["*.sara.media"]},{name:"Amobee",category:"marketing",domains:["*.amgdgt.com","*.kontera.com"]},{name:"Amplience",category:"marketing",domains:["*.10cms.com","*.amplience.com","*.amplience.net","*.bigcontent.io","*.adis.ws"],totalExecutionTime:4093,totalOccurrences:17},{name:"Amplitude Mobile Analytics",company:"Amplitude",category:"analytics",domains:["*.amplitude.com","d24n15hnbwhuhn.cloudfront.net"],totalExecutionTime:8703641,totalOccurrences:46524},{name:"Anametrix",company:"Ensighten",category:"analytics",domains:["*.anametrix.com"]},{name:"Ancora Platform",company:"Ancora Media Solutions",category:"ad",domains:["*.ancoraplatform.com"]},{name:"Anedot",category:"other",domains:["*.anedot.com"],totalExecutionTime:84655,totalOccurrences:21},{name:"AnimateJS",category:"utility",domains:["*.animatedjs.com"]},{name:"AnswerDash",category:"customer-success",domains:["*.answerdash.com"],examples:["p1.answerdash.c\ +om"]},{name:"Answers",category:"analytics",domains:["*.answcdn.com","*.answers.com","*.dsply.com"]},{name:"Apester",category:"analytics",domains:["*.apester.com","*.qmerce.com"],totalExecutionTime:25294,totalOccurrences:166},{name:"Apligraf SmartWeb",company:"Apligraf",category:"utility",domains:["*.apligraf.com.br"]},{name:"Appier",category:"ad",domains:["*.appier.net"],totalExecutionTime:124524,totalOccurrences:826},{name:"Appsolute",category:"utility",homepage:"https://appsolute.us/",domains:["dropahint.love"],examples:["dropahint.love"],totalExecutionTime:16362,totalOccurrences:144},{name:"Apptus eSales",company:"Apptus",category:"analytics",domains:["*.apptus.com"]},{name:"Arbor",company:"LiveRamp",category:"other",domains:["*.pippio.com"]},{name:"Ardent Creative",category:"hosting",domains:["*.ardentcreative.co.uk"]},{name:"Arnold Clark Automobiles",category:"content",domains:["*.arnoldclark.com"]},{name:"Atom Content Marketing",category:"content",domains:["*.atomvault.net"],examples:[ +"danu.atomvault.net"]},{name:"Atom Data",category:"other",domains:["*.atomdata.io"]},{name:"Attribution",category:"ad",domains:["*.attributionapp.com"],totalExecutionTime:44124,totalOccurrences:124},{name:"Audience 360",company:"Datapoint Media",category:"ad",domains:["*.dpmsrv.com"],totalExecutionTime:578723,totalOccurrences:371},{name:"Audience Science",category:"ad",domains:["*.revsci.net"]},{name:"AudienceSearch",company:"Intimate Merger",category:"ad",domains:["*.im-apps.net"],totalExecutionTime:9114981,totalOccurrences:46726},{name:"Auditorius",category:"ad",domains:["*.audtd.com"]},{name:"Augur",category:"analytics",domains:["*.augur.io"]},{name:"Auto Link Maker",company:"Apple",category:"ad",domains:["*.apple.com"],examples:["autolinkmaker.itunes.apple.com"],totalExecutionTime:657122,totalOccurrences:2479},{name:"Autopilot",category:"ad",domains:["*.autopilothq.com"],totalExecutionTime:15490,totalOccurrences:74},{name:"Avail",company:"RichRelevance",category:"ad",domains:["*.av\ +ail.net"]},{name:"AvantLink",category:"ad",domains:["*.avmws.com"],totalExecutionTime:417,totalOccurrences:8},{name:"Avco Systems",category:"utility",domains:["*.avcosystems.com"]},{name:"Avid Media",category:"customer-success",domains:["*.adspdbl.com","*.metadsp.co.uk"],totalExecutionTime:58,totalOccurrences:1},{name:"Avocet Systems",category:"ad",domains:["*.avocet.io","ads.avct.cloud"]},{name:"Avora",category:"analytics",domains:["*.truedash.com"],examples:["truetag.truedash.com"]},{name:"Azure Traffic Manager",company:"Microsoft",category:"other",domains:["*.gateway.net","*.trafficmanager.net"],examples:["analytics.gateway.net"],totalExecutionTime:51660,totalOccurrences:148},{name:"Azure Web Services",company:"Microsoft",category:"cdn",domains:["*.azurewebsites.net","*.azureedge.net","*.msedge.net","*.windows.net"],totalExecutionTime:35665078,totalOccurrences:51378},{name:"BAM",category:"analytics",domains:["*.bam-x.com"]},{name:"Baifendian Technology",category:"marketing",domains:[ +"*.baifendian.com"]},{name:"Bankrate",category:"utility",domains:["*.bankrate.com"]},{name:"BannerFlow",company:"Nordic Factory Solutions",category:"ad",domains:["*.bannerflow.com"],totalExecutionTime:50455,totalOccurrences:42},{name:"Barclaycard SmartPay",company:"Barclaycard",category:"utility",domains:["*.barclaycardsmartpay.com"]},{name:"Barilliance",category:"analytics",domains:["*.barilliance.net","dn3y71tq7jf07.cloudfront.net"],totalExecutionTime:7250,totalOccurrences:26},{name:"Barnebys",category:"other",domains:["*.barnebys.com"],totalExecutionTime:59682,totalOccurrences:57},{name:"Basis",company:"Basis Technologies",category:"ad",homepage:"https://basis.net/",domains:["*.basis.net"],examples:["cdn01.basis.net"],totalExecutionTime:215661,totalOccurrences:2623},{name:"Batch Media",category:"ad",domains:["*.t4ft.de"]},{name:"Bauer Consumer Media",category:"content",domains:["*.bauercdn.com","*.greatmagazines.co.uk"],examples:["www.greatmagazines.co.uk"]},{name:"Baynote",category:"\ +analytics",domains:["*.baynote.net"]},{name:"Bazaarvoice",category:"analytics",domains:["*.bazaarvoice.com","*.feedmagnet.com"],totalExecutionTime:1664795,totalOccurrences:3375},{name:"Beachfront Media",category:"ad",domains:["*.bfmio.com"],totalExecutionTime:7782,totalOccurrences:771},{name:"BeamPulse",category:"analytics",domains:["*.beampulse.com"]},{name:"Beeswax",category:"ad",domains:["*.bidr.io"],totalExecutionTime:5298,totalOccurrences:12735},{name:"Beetailer",category:"social",domains:["*.beetailer.com"],examples:["www.beetailer.com"]},{name:"Best Of Media S.A.",category:"content",domains:["*.servebom.com"],totalExecutionTime:29,totalOccurrences:67},{name:"Bet365",category:"ad",domains:["*.bet365affiliates.com"]},{name:"Betfair",category:"other",domains:["*.cdnbf.net"]},{name:"Betgenius",company:"Genius Sports",category:"content",domains:["*.connextra.com"],totalExecutionTime:84739,totalOccurrences:287},{name:"Better Banners",category:"ad",domains:["*.betterbannerscloud.com"]}, +{name:"Better Business Bureau",category:"analytics",domains:["*.bbb.org"],totalExecutionTime:10819,totalOccurrences:78},{name:"Between Digital",category:"ad",domains:["*.betweendigital.com"],totalExecutionTime:88306,totalOccurrences:787},{name:"BidTheatre",category:"ad",domains:["*.bidtheatre.com"],totalExecutionTime:23106,totalOccurrences:252},{name:"Bidtellect",category:"ad",domains:["*.bttrack.com"],totalExecutionTime:2834,totalOccurrences:19},{name:"Bigcommerce",category:"marketing",domains:["*.bigcommerce.com"],totalExecutionTime:45747978,totalOccurrences:19595},{name:"BitGravity",company:"Tata Communications",category:"content",domains:["*.bitgravity.com"]},{name:"Bitly",category:"utility",domains:["*.bitly.com","*.lemde.fr","*.bit.ly"],totalExecutionTime:2977,totalOccurrences:8},{name:"Bizible",category:"ad",domains:["*.bizible.com","*.bizibly.com"],totalExecutionTime:435247,totalOccurrences:1186},{name:"Bizrate",category:"analytics",domains:["*.bizrate.com"],totalExecutionTime:11197, +totalOccurrences:57},{name:"BlastCasta",category:"social",domains:["*.poweringnews.com"],examples:["www.poweringnews.com"]},{name:"Blindado",category:"utility",domains:["*.siteblindado.com"],totalExecutionTime:41,totalOccurrences:1},{name:"Blis",category:"ad",domains:["*.blismedia.com"]},{name:"Blogg.se",category:"hosting",domains:["*.cdnme.se","*.publishme.se"]},{name:"BloomReach",category:"ad",domains:["*.brcdn.com","*.brsrvr.com","*.brsvr.com"],totalExecutionTime:2695,totalOccurrences:47},{name:"Bloomberg",category:"content",domains:["*.gotraffic.net"]},{name:"Shop Logic",company:"BloomReach",category:"marketing",domains:["*.goshoplogic.com"]},{name:"Blue State Digital",category:"ad",domains:["*.bsd.net"]},{name:"Blue Triangle Technologies",category:"analytics",domains:["*.btttag.com"],totalExecutionTime:102966,totalOccurrences:182},{name:"BlueCava",category:"ad",domains:["*.bluecava.com"],totalExecutionTime:466075,totalOccurrences:5165},{name:"BlueKai",company:"Oracle",category:"ad", +domains:["*.bkrtx.com","*.bluekai.com"],totalExecutionTime:4,totalOccurrences:6},{name:"Bluecore",category:"analytics",domains:["*.bluecore.com"],examples:["www.bluecore.com"],totalExecutionTime:83612,totalOccurrences:225},{name:"Bluegg",category:"hosting",domains:["d1va5oqn59yrvt.cloudfront.net"]},{name:"Bold Commerce",category:"utility",domains:["*.shappify-cdn.com","*.shappify.com","*.boldapps.net"],totalExecutionTime:5072681,totalOccurrences:9886},{name:"BoldChat",company:"LogMeIn",category:"customer-success",domains:["*.boldchat.com"]},{name:"Bombora",category:"ad",domains:["*.mlno6.com"]},{name:"Bonnier",category:"content",domains:["*.bonniercorp.com"]},{name:"Bookatable",category:"content",domains:["*.bookatable.com","*.livebookings.com"]},{name:"Booking.com",category:"content",domains:["*.bstatic.com"],totalExecutionTime:1652677,totalOccurrences:2448},{name:"Boomtrain",category:"ad",domains:["*.boomtrain.com","*.boomtrain.net"],totalExecutionTime:360072,totalOccurrences:2169},{ +name:"BoostSuite",category:"ad",domains:["*.poweredbyeden.com"]},{name:"Boostable",category:"ad",domains:["*.boostable.com"]},{name:"Bootstrap Chinese network",category:"cdn",domains:["*.bootcss.com"],totalExecutionTime:427117,totalOccurrences:881},{name:"Booxscale",category:"ad",domains:["*.booxscale.com"]},{name:"Borderfree",company:"pitney bowes",category:"utility",domains:["*.borderfree.com","*.fiftyone.com"]},{name:"BowNow",category:"analytics",homepage:"https://bow-now.jp/",domains:["*.bownow.jp"],examples:["contents.bownow.jp"],totalExecutionTime:1298132,totalOccurrences:2410},{name:"Box",category:"hosting",domains:["*.box.com"],totalExecutionTime:15191,totalOccurrences:223},{name:"Boxever",category:"analytics",domains:["*.boxever.com"]},{name:"Braintree Payments",company:"Paypal",category:"utility",domains:["*.braintreegateway.com"],totalExecutionTime:171291,totalOccurrences:1141},{name:"Branch Metrics",category:"ad",domains:["*.branch.io","*.app.link"],totalExecutionTime:441792, +totalOccurrences:8288},{name:"Brand Finance",category:"other",domains:["*.brandirectory.com"]},{name:"Brand View",category:"analytics",domains:["*.brandview.com"]},{name:"Brandscreen",category:"ad",domains:["*.rtbidder.net"],examples:["match.rtbidder.net"]},{name:"BridgeTrack",company:"Sapient",category:"ad",domains:["*.bridgetrack.com"]},{name:"BrightRoll",company:"Yahoo!",category:"ad",domains:["*.btrll.com"]},{name:"BrightTag / Signal",company:"Signal",homepage:"https://www.signal.co",category:"tag-manager",domains:["*.btstatic.com","*.thebrighttag.com"]},{name:"Brightcove ZenCoder",company:"Brightcove",category:"other",domains:["*.zencoder.net"]},{name:"Bronto Software",category:"marketing",domains:["*.bm23.com","*.bronto.com","*.brontops.com"]},{name:"Browser-Update.org",category:"other",domains:["*.browser-update.org"]},{name:"Buffer",category:"social",domains:["*.bufferapp.com"],totalExecutionTime:535,totalOccurrences:7},{name:"Bugsnag",category:"utility",domains:["*.bugsnag.com", +"d2wy8f7a9ursnm.cloudfront.net"],examples:["notify.bugsnag.com"],totalExecutionTime:6197502,totalOccurrences:15069},{name:"Burst Media",category:"ad",domains:["*.burstnet.com","*.1rx.io"],examples:["usermatch.burstnet.com"],totalExecutionTime:1618,totalOccurrences:52},{name:"Burt",category:"analytics",domains:["*.richmetrics.com","*.burt.io"]},{name:"Business Message",category:"ad",domains:["*.message-business.com"],totalExecutionTime:7310,totalOccurrences:21},{name:"Business Week",company:"Bloomberg",category:"social",domains:["*.bwbx.io"],totalExecutionTime:67737,totalOccurrences:9},{name:"Buto",company:"Big Button",category:"ad",domains:["*.buto.tv"]},{name:"Button",category:"ad",domains:["*.btncdn.com"]},{name:"BuySellAds",category:"ad",domains:["*.buysellads.com","*.buysellads.net"],totalExecutionTime:179225,totalOccurrences:170},{name:"BuySight (AOL)",category:"ad",domains:["*.pulsemgr.com"]},{name:"Buyapowa",category:"ad",domains:["*.co-buying.com"],totalExecutionTime:3038,totalOccurrences:37}, +{name:"BuzzFeed",category:"social",domains:["*.buzzfed.com","*.buzzfeed.com"],totalExecutionTime:14608,totalOccurrences:2},{name:"C1X",category:"ad",domains:["*.c1exchange.com"]},{name:"C3 Metrics",category:"analytics",domains:["*.c3tag.com"],totalExecutionTime:18122,totalOccurrences:153},{name:"CANDDi",company:"Campaign and Digital Intelligence",category:"ad",domains:["*.canddi.com"],totalExecutionTime:84756,totalOccurrences:150},{name:"CCM benchmark Group",category:"social",domains:["*.ccm2.net"]},{name:"CD Networks",category:"utility",domains:["*.gccdn.net"]},{name:"CDN Planet",category:"analytics",domains:["*.cdnplanet.com"]},{name:"InAuth",category:"utility",homepage:"https://www.inauth.com/",domains:["*.cdn-net.com"],examples:["uk.cdn-net.com"],totalExecutionTime:306346,totalOccurrences:298},{name:"CJ Affiliate",company:"Conversant",category:"ad",domains:["*.cj.com","*.dpbolvw.net"],totalExecutionTime:7725,totalOccurrences:17},{name:"CJ Affiliate by Conversant",company:"Conversan\ +t",category:"ad",domains:["*.ftjcfx.com"],totalExecutionTime:8,totalOccurrences:4},{name:"CNBC",category:"content",domains:["*.cnbc.com"],totalExecutionTime:11468,totalOccurrences:12},{name:"CNET Content Solutions",company:"CBS Interactive",category:"content",domains:["*.cnetcontent.com"],examples:["cdn.cnetcontent.com","ws.cnetcontent.com"]},{name:"CPEx",category:"content",domains:["*.cpex.cz"],totalExecutionTime:763356,totalOccurrences:1104},{name:"CPXi",category:"ad",domains:["*.cpxinteractive.com"]},{name:"CUBED Attribution",company:"CUBED",category:"ad",domains:["*.withcubed.com"],examples:["data.withcubed.com"]},{name:"Cachefly",category:"utility",domains:["*.cachefly.net"],totalExecutionTime:128046,totalOccurrences:258},{name:"Calendly",category:"other",domains:["*.calendly.com"],totalExecutionTime:8622733,totalOccurrences:4604},{name:"CallRail",category:"analytics",domains:["*.callrail.com"],totalExecutionTime:8080185,totalOccurrences:29537},{name:"CallTrackingMetrics",category:"\ +analytics",domains:["*.tctm.co"],totalExecutionTime:1981698,totalOccurrences:7503},{name:"Canned Banners",category:"ad",domains:["*.cannedbanners.com"]},{name:"Canopy Labs",category:"analytics",domains:["*.canopylabs.com"]},{name:"Capita",category:"utility",domains:["*.crcom.co.uk"],examples:["emmsrep.crcom.co.uk"]},{name:"Captify Media",category:"ad",domains:["*.cpx.to"],totalExecutionTime:1519,totalOccurrences:31},{name:"Captiify",category:"ad",domains:["*.captifymedia.com"]},{name:"Captivate Ai",category:"ad",domains:["*.captivate.ai"]},{name:"Captora",category:"marketing",domains:["*.captora.com"]},{name:"Carcloud",category:"other",domains:["*.carcloud.co.uk"]},{name:"Cardlytics",category:"ad",domains:["*.cardlytics.com"]},{name:"Cardosa Enterprises",category:"analytics",domains:["*.y-track.com"],totalExecutionTime:778,totalOccurrences:17},{name:"Caspian Media",category:"ad",domains:["*.caspianmedia.com"]},{name:"Cast",category:"utility",domains:["*.cast.rocks"]},{name:"Catch",category:"\ +other",domains:["*.getcatch.com"],examples:["app.getcatch.com","assets.getcatch.com","js.getcatch.com"],totalExecutionTime:18282,totalOccurrences:40},{name:"Cavisson",category:"analytics",domains:["*.cavisson.com"]},{name:"Cedato",category:"ad",domains:["*.algovid.com","*.vdoserv.com"]},{name:"Celebrus Technologies",category:"analytics",domains:["*.celebrus.com"]},{name:"Celtra",category:"ad",domains:["*.celtra.com"],totalExecutionTime:369517,totalOccurrences:427},{name:"Centro",category:"ad",domains:["*.brand-server.com"]},{name:"Ceros",category:"other",domains:["ceros.com","view.ceros.com"],totalExecutionTime:64139,totalOccurrences:149},{name:"Ceros Analytics",company:"Ceros",category:"analytics",domains:["api.ceros.com"]},{name:"Certona",category:"analytics",domains:["*.certona.net"],totalExecutionTime:376,totalOccurrences:4},{name:"Certum",category:"utility",domains:["*.ocsp-certum.com","*.certum.pl"],totalExecutionTime:8544,totalOccurrences:3},{name:"Cgrdirect",category:"other",domains:[ +"*.cgrdirect.co.uk"]},{name:"Channel 5 Media",category:"ad",domains:["*.five.tv"]},{name:"Channel.me",category:"customer-success",domains:["*.channel.me"]},{name:"ChannelAdvisor",category:"ad",domains:["*.channeladvisor.com","*.searchmarketing.com"],totalExecutionTime:3385,totalOccurrences:25},{name:"ChannelApe",company:"ChannelApe",category:"other",homepage:"https://www.channelape.com/",domains:["*.channelape.com"],examples:["callbacks.channelape.com"]},{name:"Chargeads Oscar",company:"Chargeads",category:"ad",domains:["*.chargeads.com"]},{name:"Charities Aid Foundation",category:"utility",domains:["*.cafonline.org"],totalExecutionTime:4368,totalOccurrences:7},{name:"Chartbeat",category:"analytics",domains:["*.chartbeat.com","*.chartbeat.net"],totalExecutionTime:1270560,totalOccurrences:6246},{name:"Cheapflights Media",company:"Momondo",category:"content",domains:["*.momondo.net"]},{name:"CheckM8",category:"ad",domains:["*.checkm8.com"]},{name:"CheckRate",company:"FreeStart",category:"\ +utility",domains:["*.checkrate.co.uk"]},{name:"Checkfront",category:"other",domains:["*.checkfront.com","dcg3jth5savst.cloudfront.net"],totalExecutionTime:279282,totalOccurrences:152},{name:"CheetahMail",company:"Experian",category:"ad",domains:["*.chtah.com"]},{name:"Chitika",category:"ad",domains:["*.chitika.net"]},{name:"ChoiceStream",category:"ad",domains:["*.choicestream.com"]},{name:"Cint",category:"social",domains:["*.cint.com"],totalExecutionTime:111659,totalOccurrences:33},{name:"Civic",category:"hosting",domains:["*.civiccomputing.com"],totalExecutionTime:2815742,totalOccurrences:7253},{name:"ClearRise",category:"customer-success",domains:["*.clearrise.com"]},{name:"Clearstream",category:"ad",domains:["*.clrstm.com"]},{name:"Clerk.io ApS",category:"analytics",domains:["*.clerk.io"],totalExecutionTime:1196778,totalOccurrences:1915},{name:"CleverDATA",category:"ad",domains:["*.1dmp.io"]},{name:"CleverTap",category:"analytics",domains:["d2r1yp2w7bby2u.cloudfront.net"],totalExecutionTime:163519, +totalOccurrences:1321},{name:"Click Density",category:"analytics",domains:["*.clickdensity.com"]},{name:"Click4Assistance",category:"customer-success",domains:["*.click4assistance.co.uk"],totalExecutionTime:22710,totalOccurrences:178},{name:"ClickDesk",category:"customer-success",domains:["*.clickdesk.com","d1gwclp1pmzk26.cloudfront.net"],totalExecutionTime:74975,totalOccurrences:595},{name:"ClickDimensions",category:"ad",domains:["*.clickdimensions.com"],totalExecutionTime:125295,totalOccurrences:262},{name:"Clickadu (Winner Solutions)",category:"ad",domains:["*.clickadu.com"],totalExecutionTime:10740,totalOccurrences:4},{name:"Clickagy Audience Lab",company:"Clickagy",category:"ad",domains:["*.clickagy.com"],examples:["aorta.clickagy.com"],totalExecutionTime:44558,totalOccurrences:667},{name:"Clickio",category:"ad",domains:[]},{name:"Clicktale",category:"analytics",domains:["*.cdngc.net","*.clicktale.net"],examples:["clicktalecdn.sslcs.cdngc.net"],totalExecutionTime:288716,totalOccurrences:256}, +{name:"Clicktripz",category:"content",domains:["*.clicktripz.com"],examples:["static.clicktripz.com","www.clicktripz.com"],totalExecutionTime:502041,totalOccurrences:354},{name:"Clik.com Websites",category:"content",domains:["*.clikpic.com"]},{name:"Cloud Technologies",category:"ad",domains:["*.behavioralengine.com","*.behavioralmailing.com"]},{name:"Cloud-A",category:"other",domains:["*.bulkstorage.ca"]},{name:"Cloud.typography",company:"Hoefler & Co",category:"cdn",domains:["*.typography.com"],totalExecutionTime:3308,totalOccurrences:364},{name:"CloudSponge",category:"ad",domains:["*.cloudsponge.com"]},{name:"CloudVPS",category:"other",domains:["*.adoftheyear.com","*.objectstore.eu"]},{name:"Cloudinary",category:"content",domains:["*.cloudinary.com"],totalExecutionTime:1188126,totalOccurrences:2129},{name:"Cloudqp",company:"Cloudwp",category:"other",domains:["*.cloudwp.io"]},{name:"Cludo",category:"utility",domains:["*.cludo.com"],totalExecutionTime:25376,totalOccurrences:249},{name:"\ +Cognesia",category:"marketing",domains:["*.intelli-direct.com"]},{name:"CogoCast",company:"Cogo Labs",category:"ad",domains:["*.cogocast.net"]},{name:"Colbenson",category:"utility",domains:["*.colbenson.com"]},{name:"Collective",category:"ad",domains:["*.collective-media.net"]},{name:"Com Laude",category:"other",domains:["*.gdimg.net"]},{name:"Comm100",category:"customer-success",domains:["*.comm100.com"],totalExecutionTime:469389,totalOccurrences:1045},{name:"CommerceHub",category:"marketing",domains:["*.mercent.com"]},{name:"Commission Factory",category:"ad",domains:["*.cfjump.com"],totalExecutionTime:961,totalOccurrences:12},{name:"Communicator",category:"ad",domains:["*.communicatorcorp.com","*.communicatoremail.com"]},{name:"Comodo",category:"utility",domains:["*.comodo.com","*.trust-provider.com","*.trustlogo.com","*.usertrust.com","*.comodo.net"],examples:["ocsp.trust-provider.com"],totalExecutionTime:41752,totalOccurrences:34},{name:"Comodo Certificate Authority",company:"Comod\ +o",category:"utility",domains:["crt.comodoca.com","*.comodoca4.com","ocsp.comodoca.com","ocsp.usertrust.com","crt.usertrust.com"],examples:["ocsp.comodoca4.com"]},{name:"Compete",company:"Millwood Brown Digital",category:"analytics",domains:["*.c-col.com","*.compete.com"]},{name:"Compuware",category:"analytics",domains:["*.axf8.net"]},{name:"Conductrics",category:"analytics",domains:["*.conductrics.com"],examples:["cdn-v3.conductrics.com"],totalExecutionTime:12705,totalOccurrences:61},{name:"Confirmit",category:"analytics",domains:["*.confirmit.com"],totalExecutionTime:32100,totalOccurrences:195},{name:"Connatix",category:"ad",domains:["*.connatix.com"],totalExecutionTime:6751327,totalOccurrences:1195},{name:"Connect Events",category:"hosting",domains:["*.connectevents.com.au"]},{name:"Constant Contact",category:"ad",domains:["*.ctctcdn.com"],totalExecutionTime:604932,totalOccurrences:17528},{name:"Constructor.io",category:"utility",domains:["*.cnstrc.com"]},{name:"Contabo",category:"h\ +osting",domains:["185.2.100.179"]},{name:"Content Media Corporation",category:"content",domains:["*.contentmedia.eu"]},{name:"ContentSquare",category:"analytics",domains:["d1m6l9dfulcyw7.cloudfront.net","*.content-square.net","*.contentsquare.net"],totalExecutionTime:3626830,totalOccurrences:2948},{name:"ContextWeb",category:"ad",domains:["*.contextweb.com"],totalExecutionTime:32437,totalOccurrences:1909},{name:"Continental Exchange Solutions",category:"utility",domains:["*.hifx.com"]},{name:"Converge-Digital",category:"ad",domains:["*.converge-digital.com"],examples:["ads.converge-digital.com"]},{name:"Conversant",category:"analytics",domains:["*.dotomi.com","*.dtmpub.com","*.emjcd.com","mediaplex.com","*.tqlkg.com","*.fastclick.net"],examples:["www.tqlkg.com"],totalExecutionTime:6531550,totalOccurrences:54802},{name:"Conversant Ad Server",company:"Conversant",category:"ad",domains:["adfarm.mediaplex.com","*.mediaplex.com"]},{name:"Conversant Tag Manager",company:"Conversant",category:"\ +tag-manager",domains:["*.mplxtms.com"],totalExecutionTime:14146,totalOccurrences:58},{name:"Conversio",category:"ad",domains:["*.conversio.com"]},{name:"Conversion Labs",category:"ad",domains:["*.net.pl"],examples:["conversionlabs.net.pl"],totalExecutionTime:3243395,totalOccurrences:1898},{name:"Conversion Logic",category:"ad",domains:["*.conversionlogic.net"]},{name:"Convert Insights",category:"analytics",domains:["*.convertexperiments.com"],totalExecutionTime:2575826,totalOccurrences:4385},{name:"ConvertMedia",category:"ad",domains:["*.admailtiser.com","*.basebanner.com","*.cmbestsrv.com","*.vidfuture.com","*.zorosrv.com"],examples:["www.cmbestsrv.com"]},{name:"Convertro",category:"ad",domains:["*.convertro.com"]},{name:"Conviva",category:"content",domains:["*.conviva.com"],totalExecutionTime:2955,totalOccurrences:2},{name:"Cookie Reports",category:"utility",domains:["*.cookiereports.com"],totalExecutionTime:280810,totalOccurrences:671},{name:"Cookie-Script.com",category:"utility",domains:[ +"*.cookie-script.com"],totalExecutionTime:15051619,totalOccurrences:58095},{name:"CookieQ",company:"Baycloud Systems",category:"utility",domains:["*.cookieq.com"]},{name:"CoolaData",category:"analytics",domains:["*.cooladata.com"],totalExecutionTime:1165,totalOccurrences:15},{name:"CopperEgg",category:"analytics",domains:["*.copperegg.com","d2vig74li2resi.cloudfront.net"]},{name:"Council ad Network",category:"ad",domains:["*.counciladvertising.net"],totalExecutionTime:18621,totalOccurrences:94},{name:"Covert Pics",category:"content",domains:["*.covet.pics"],totalExecutionTime:4496,totalOccurrences:55},{name:"Cox Digital Solutions",category:"ad",domains:["*.afy11.net"]},{name:"Creafi Online Media",category:"ad",domains:["*.creafi-online-media.com"]},{name:"Creators",category:"content",domains:["*.creators.co"]},{name:"Crimson Hexagon Analytics",company:"Crimson Hexagon",category:"analytics",domains:["*.hexagon-analytics.com"]},{name:"Crimtan",category:"ad",domains:["*.ctnsnet.com"],totalExecutionTime:59150, +totalOccurrences:74818},{name:"Cross Pixel Media",category:"ad",domains:["*.crsspxl.com"],totalExecutionTime:493,totalOccurrences:8},{name:"Crosswise",category:"ad",domains:["*.univide.com"],examples:["p.univide.com"]},{name:"Crowd Control",company:"Lotame",category:"ad",domains:["*.crwdcntrl.net"],totalExecutionTime:16298725,totalOccurrences:101196},{name:"Crowd Ignite",category:"ad",domains:["*.crowdignite.com"]},{name:"CrowdTwist",category:"ad",domains:["*.crowdtwist.com"]},{name:"Crowdskout",category:"ad",domains:["*.crowdskout.com"]},{name:"Crowdynews",category:"social",domains:["*.breakingburner.com"]},{name:"Curalate",category:"marketing",domains:["*.curalate.com","d116tqlcqfmz3v.cloudfront.net"],totalExecutionTime:628884,totalOccurrences:683},{name:"Customer Acquisition Cloud",company:"[24]7",category:"ad",domains:["*.campanja.com"]},{name:"Customer.io",category:"ad",domains:["*.customer.io"],totalExecutionTime:210609,totalOccurrences:1268},{name:"Custora",category:"analytics", +domains:["*.custora.com"]},{name:"Cxense",category:"ad",domains:["*.cxense.com","*.cxpublic.com","*.emediate.dk","*.emediate.eu"],totalExecutionTime:2218364,totalOccurrences:3708},{name:"CyberKnight",company:"Namogoo",category:"utility",domains:["*.namogoo.com"]},{name:"CyberSource (Visa)",category:"utility",domains:["*.authorize.net"],totalExecutionTime:339030,totalOccurrences:2682},{name:"Cybernet Quest",category:"analytics",domains:["*.cqcounter.com"]},{name:"D.A. Consortium",category:"ad",domains:["*.eff1.net"]},{name:"D4t4 Solutions",category:"analytics",domains:["*.u5e.com"]},{name:"DCSL Software",category:"hosting",domains:["*.dcslsoftware.com"]},{name:"DMG Media",category:"content",domains:["*.mol.im","*.and.co.uk","*.anm.co.uk","*.dailymail.co.uk"],totalExecutionTime:37855,totalOccurrences:15},{name:"DTSCOUT",category:"ad",domains:["*.dtscout.com"],totalExecutionTime:645362,totalOccurrences:8311},{name:"Dailykarma",category:"utility",homepage:"https://www.dailykarma.com/",domains:[ +"*.dailykarma.io"],examples:["assets.dailykarma.io"],totalExecutionTime:122378,totalOccurrences:477},{name:"Dailymotion",category:"content",domains:["*.dailymotion.com","*.dmxleo.com","*.dm.gg","*.pxlad.io","*.dmcdn.net","*.sublimevideo.net"],examples:["ad.pxlad.io","www.dailymotion.com"],totalExecutionTime:56076026,totalOccurrences:5142},{name:"Dash Hudson",company:"Dash Hudson",category:"content",domains:["*.dashhudson.com"],examples:["cdn.dashhudson.com"],totalExecutionTime:154963,totalOccurrences:91},{name:"Datacamp",category:"utility",domains:["*.cdn77.org"],totalExecutionTime:3303608,totalOccurrences:1181},{name:"Datalicious",category:"tag-manager",domains:["*.supert.ag","*.optimahub.com"]},{name:"Datalogix",category:"ad",domains:["*.nexac.com"]},{name:"Datawrapper",category:"utility",domains:["*.datawrapper.de","*.dwcdn.net"],examples:["www.datawrapper.de"],totalExecutionTime:951486,totalOccurrences:249},{name:"Dataxu",category:"marketing",domains:["*.w55c.net"],totalExecutionTime:10, +totalOccurrences:5},{name:"DatoCMS",homepage:"https://www.datocms.com/",category:"content",domains:["*.datocms-assets.com"],examples:["www.datocms-assets.com"]},{name:"Datonics",category:"ad",domains:["*.pro-market.net"],examples:["pbid.pro-market.net"],totalExecutionTime:16955,totalOccurrences:254},{name:"Dealtime",category:"content",domains:["*.dealtime.com"]},{name:"Debenhams Geo Location",company:"Debenhams",category:"utility",domains:["176.74.183.134"]},{name:"Decibel Insight",category:"analytics",domains:["*.decibelinsight.net"],totalExecutionTime:995190,totalOccurrences:691},{name:"Deep Forest Media",company:"Rakuten",category:"ad",domains:["*.dpclk.com"]},{name:"DeepIntent",category:"ad",domains:["*.deepintent.com"],totalExecutionTime:3875,totalOccurrences:206},{name:"Delicious Media",category:"social",domains:["*.delicious.com"]},{name:"Delineo",category:"ad",domains:["*.delineo.com"],examples:["www.delineo.com"]},{name:"Delta Projects AB",category:"ad",domains:["*.de17a.com"], +totalExecutionTime:90548,totalOccurrences:382},{name:"Demand Media",category:"content",domains:["*.dmtracker.com"]},{name:"DemandBase",category:"marketing",domains:["*.demandbase.com"],totalExecutionTime:393206,totalOccurrences:2552},{name:"DemandJump",category:"analytics",domains:["*.demandjump.com"]},{name:"Dennis Publishing",category:"content",domains:["*.alphr.com"]},{name:"Devatics",category:"analytics",domains:["*.devatics.com","*.devatics.io"]},{name:"Developer Media",category:"ad",domains:["*.developermedia.com"],totalExecutionTime:4416,totalOccurrences:17},{name:"DialogTech",category:"ad",domains:["*.dialogtech.com"]},{name:"DialogTech SourceTrak",company:"DialogTech",category:"ad",domains:["d31y97ze264gaa.cloudfront.net"]},{name:"DigiCert",category:"utility",domains:["*.digicert.com"],examples:["ocsp.digicert.com"],totalExecutionTime:26560,totalOccurrences:83},{name:"Digioh",category:"ad",domains:["*.lightboxcdn.com"],totalExecutionTime:1347082,totalOccurrences:1303},{name:"D\ +igital Look",category:"content",domains:["*.digitallook.com"]},{name:"Digital Media Exchange",company:"NDN",category:"content",domains:["*.newsinc.com"]},{name:"Digital Millennium Copyright Act Services",category:"utility",domains:["*.dmca.com"],totalExecutionTime:8820,totalOccurrences:70},{name:"Digital Ocean",category:"other",domains:["95.85.62.56"]},{name:"Digital Remedy",category:"ad",domains:["*.consumedmedia.com"]},{name:"Digital Window",category:"ad",domains:["*.awin1.com","*.zenaps.com"],totalExecutionTime:195,totalOccurrences:4},{name:"DigitalScirocco",category:"analytics",domains:["*.digitalscirocco.net"]},{name:"Digitial Point",category:"utility",domains:["*.dpstatic.com"]},{name:"Diligent (Adnetik)",category:"ad",domains:["*.wtp101.com"]},{name:"Directed Edge",category:"social",domains:["*.directededge.com"],examples:["shopify.directededge.com"],totalExecutionTime:8371,totalOccurrences:81},{name:"Distribute Travel",category:"ad",domains:["*.dtrck.net"]},{name:"District M",category:"\ +ad",domains:["*.districtm.io"]},{name:"DistroScale",category:"ad",domains:["*.jsrdn.com"],totalExecutionTime:186009,totalOccurrences:198},{name:"Divido",category:"utility",domains:["*.divido.com"]},{name:"Dow Jones",category:"content",domains:["*.dowjones.com","*.dowjoneson.com"]},{name:"Drifty Co",category:"utility",domains:["*.onicframework.com"]},{name:"Drip",company:"The Numa Group",category:"ad",domains:["*.getdrip.com"],totalExecutionTime:120918,totalOccurrences:1350},{name:"Dropbox",category:"utility",domains:["*.dropboxusercontent.com"],totalExecutionTime:142552,totalOccurrences:145},{name:"Dyn Real User Monitoring",company:"Dyn",category:"analytics",domains:["*.jisusaiche.biz","*.dynapis.com","*.jisusaiche.com","*.dynapis.info"],examples:["beacon.rum.dynapis.com"]},{name:"DynAdmic",category:"ad",domains:["*.dyntrk.com"]},{name:"Dynamic Converter",category:"utility",domains:["*.dynamicconverter.com"],totalExecutionTime:58723,totalOccurrences:96},{name:"Dynamic Dummy Image Gener\ +ator",company:"Open Source",category:"utility",domains:["*.dummyimage.com"]},{name:"Dynamic Logic",category:"ad",domains:["*.dl-rms.com","*.questionmarket.com"]},{name:"Dynamic Yield",category:"customer-success",domains:["*.dynamicyield.com"],totalExecutionTime:3580074,totalOccurrences:1843},{name:"Dynatrace",category:"analytics",domains:["*.ruxit.com","js-cdn.dynatrace.com"],totalExecutionTime:4106731,totalOccurrences:3221},{name:"ec-concier",homepage:"https://ec-concier.com/",category:"marketing",domains:["*.ec-concier.com"],examples:["s.ec-concier.com","gsync.ec-concier.com"]},{name:"ECT News Network",category:"content",domains:["*.ectnews.com"]},{name:"ELITechGroup",category:"analytics",domains:["*.elitechnology.com"]},{name:"EMAP",category:"content",domains:["*.emap.com"]},{name:"EMedia Solutions",category:"ad",domains:["*.e-shots.eu"],examples:["www.e-shots.eu"]},{name:"EQ works",category:"ad",domains:["*.eqads.com"]},{name:"ESV Digital",category:"analytics",domains:["*.esearchvi\ +sion.com"]},{name:"Ebiquity",category:"analytics",domains:["*.ebiquitymedia.com"]},{name:"Eco Rebates",category:"ad",domains:["*.ecorebates.com"]},{name:"Ecwid",category:"hosting",domains:["*.ecwid.com","*.shopsettings.com","d3fi9i0jj23cau.cloudfront.net","d3j0zfs7paavns.cloudfront.net"],totalExecutionTime:3757012,totalOccurrences:4362},{name:"Edge Web Fonts",company:"Adobe Systems",category:"cdn",domains:["*.edgefonts.net"],examples:["use.edgefonts.net"]},{name:"Edition Digital",category:"ad",domains:["*.editiondigital.com"]},{name:"Edot Web Technologies",category:"hosting",domains:["*.edot.co.za"]},{name:"Effective Measure",category:"ad",domains:["*.effectivemeasure.net"],totalExecutionTime:17,totalOccurrences:1},{name:"Effiliation sa",category:"ad",domains:["*.effiliation.com"],totalExecutionTime:108,totalOccurrences:3},{name:"Ekm Systems",category:"analytics",domains:["*.ekmsecure.com","*.ekmpinpoint.co.uk"],examples:["globalstats.ekmsecure.com"],totalExecutionTime:67875,totalOccurrences:789}, +{name:"Elastera",category:"hosting",domains:["*.elastera.net"]},{name:"Elastic Ad",category:"ad",domains:["*.elasticad.net"],totalExecutionTime:30225,totalOccurrences:137},{name:"Elastic Load Balancing",company:"Amazon Web Services",category:"hosting",domains:["*.105app.com"],examples:["rhpury.105app.com","rhxtd.105app.com"]},{name:"Elecard StreamEye",company:"Elecard",category:"other",domains:["*.streameye.net"]},{name:"Elevate",company:"Elevate Technology Solutions",category:"utility",domains:["*.elevaate.technology"]},{name:"Elicit",category:"utility",domains:["*.elicitapp.com"]},{name:"Elogia",category:"ad",domains:["*.elogia.net"]},{name:"Email Attitude",company:"1000mercis",category:"ad",domains:["*.email-attitude.com"]},{name:"EmailCenter",category:"ad",domains:["*.emailcenteruk.com"]},{name:"Embedly",category:"content",domains:["*.embedly.com","*.embed.ly"],totalExecutionTime:5014487,totalOccurrences:10836},{name:"EmpathyBroker Site Search",company:"EmpathyBroker",category:"uti\ +lity",domains:["*.empathybroker.com"]},{name:"Enfusen",category:"analytics",domains:["*.enfusen.com"]},{name:"Engadget",company:"Engadget (AOL)",category:"content",domains:["*.gdgt.com"],examples:["media.gdgt.com"]},{name:"Engagio",category:"marketing",domains:["*.engagio.com"]},{name:"Ensighten Manage",company:"Ensighten",category:"tag-manager",domains:["*.levexis.com"]},{name:"EntityLink",category:"other",domains:["*.entitytag.co.uk"]},{name:"Entrust Datacard",category:"utility",domains:["*.entrust.com","*.entrust.net"],examples:["ocsp.entrust.com","ocsp.entrust.net"],totalExecutionTime:14041,totalOccurrences:3},{name:"Equiniti",category:"utility",domains:["*.equiniti.com"]},{name:"Errorception",category:"utility",domains:["*.errorception.com"]},{name:"Esri ArcGIS",company:"Esri",category:"utility",domains:["*.arcgis.com","*.arcgisonline.com"],totalExecutionTime:21967746,totalOccurrences:3432},{name:"Ethnio",category:"analytics",domains:["*.ethn.io"]},{name:"Eulerian Technologies",category:"\ +ad",domains:["*.eolcdn.com"]},{name:"Euroland",category:"utility",domains:["*.euroland.com"],totalExecutionTime:1,totalOccurrences:3},{name:"European Interactive Digital ad Alli",category:"utility",domains:["*.edaa.eu"]},{name:"Eventbrite",category:"hosting",domains:["*.evbuc.com","*.eventbrite.co.uk"],totalExecutionTime:4667,totalOccurrences:33},{name:"Everflow",category:"analytics",domains:["*.tp88trk.com"],examples:["www.tp88trk.com"],totalExecutionTime:110842,totalOccurrences:185},{name:"Evergage",category:"analytics",domains:["*.evergage.com","*.evgnet.com"],examples:["cdn.evgnet.com"],totalExecutionTime:1095634,totalOccurrences:2491},{name:"Everquote",category:"content",domains:["*.evq1.com"]},{name:"Everyday Health",category:"ad",domains:["*.agoramedia.com"]},{name:"Evidon",category:"analytics",domains:["*.evidon.com"],totalExecutionTime:1260409,totalOccurrences:2482},{name:"Evolve Media",category:"content",domains:["*.evolvemediallc.com"]},{name:"Exactag",category:"ad",domains:[ +"*.exactag.com"],totalExecutionTime:662,totalOccurrences:6},{name:"ExoClick",category:"ad",domains:["*.exoclick.com"],totalExecutionTime:69348,totalOccurrences:568},{name:"Expedia",category:"content",domains:["*.travel-assets.com","*.trvl-media.com","*.trvl-px.com","*.uciservice.com"],examples:["www.trvl-px.com","www.uciservice.com"],totalExecutionTime:15443,totalOccurrences:15},{name:"Expedia Australia",company:"Expedia",category:"content",domains:["*.expedia.com.au"],examples:["www.expedia.com.au"]},{name:"Expedia Canada",company:"Expedia",category:"content",domains:["*.expedia.ca"],examples:["www.expedia.ca"]},{name:"Expedia France",company:"Expedia",category:"content",domains:["*.expedia.fr"],examples:["www.expedia.fr"]},{name:"Expedia Germany",company:"Expedia",category:"content",domains:["*.expedia.de"],examples:["www.expedia.de"]},{name:"Expedia Italy",company:"Expedia",category:"content",domains:["*.expedia.it"],examples:["www.expedia.it"]},{name:"Expedia Japan",company:"Expedi\ +a",category:"content",domains:["*.expedia.co.jp"],examples:["www.expedia.co.jp"]},{name:"Expedia USA",company:"Expedia",category:"content",domains:["*.expedia.com"],examples:["www.expedia.com"],totalExecutionTime:40062,totalOccurrences:19},{name:"Expedia United Kingdom",company:"Expedia",category:"content",domains:["*.expedia.co.uk"],examples:["www.expedia.co.uk"]},{name:"Experian",category:"utility",domains:["*.audienceiq.com","*.experian.com","*.experianmarketingservices.digital"]},{name:"Experian Cross-Channel Marketing Platform",company:"Experian",category:"marketing",domains:["*.eccmp.com","*.ccmp.eu"],totalExecutionTime:1268,totalOccurrences:24},{name:"Exponea",category:"analytics",domains:["*.exponea.com"],totalExecutionTime:154832,totalOccurrences:1303},{name:"Exponential Interactive",category:"ad",domains:["*.exponential.com"],totalExecutionTime:5179,totalOccurrences:120},{name:"Extensis WebInk",category:"cdn",domains:["*.webink.com"]},{name:"Extole",category:"ad",domains:["*.\ +extole.com","*.extole.io"],examples:["origin.extole.io"],totalExecutionTime:21067,totalOccurrences:44},{name:"Ey-Seren",category:"analytics",domains:["*.webabacus.com"]},{name:"EyeView",category:"ad",domains:["*.eyeviewads.com"]},{name:"Eyeota",category:"ad",domains:["*.eyeota.net"],totalExecutionTime:152570,totalOccurrences:1827},{name:"Ezakus Pretargeting",company:"Ezakus",category:"ad",domains:["*.ezakus.net"]},{name:"Ezoic",category:"analytics",domains:["*.ezoic.net"],totalExecutionTime:93024,totalOccurrences:173},{name:"FLXone",company:"Teradata",category:"ad",domains:["*.pangolin.blue","*.flx1.com","d2hlpp31teaww3.cloudfront.net","*.flxpxl.com"],totalExecutionTime:25037,totalOccurrences:67},{name:"Fairfax Media",category:"content",domains:["ads.fairfax.com.au","resources.fairfax.com.au"]},{name:"Fairfax Media Analtics",company:"Fairfax Media",category:"analytics",domains:["analytics.fairfax.com.au"]},{name:"Falk Technologies",category:"ad",domains:["*.angsrvr.com"]},{name:"Fanpla\ +yr",category:"analytics",domains:["*.fanplayr.com","d38nbbai6u794i.cloudfront.net"],totalExecutionTime:69669,totalOccurrences:154},{name:"Fast Thinking",company:"NE Marketing",category:"marketing",domains:["*.fast-thinking.co.uk"]},{name:"Fastest Forward",category:"analytics",domains:["*.gaug.es"],totalExecutionTime:13583,totalOccurrences:261},{name:"Fastly",category:"utility",domains:["*.fastly.net"],totalExecutionTime:21362072,totalOccurrences:9582},{name:"Feedbackify",company:"InsideMetrics",category:"analytics",domains:["*.feedbackify.com"],totalExecutionTime:42808,totalOccurrences:173},{name:"Feefo.com",company:"Feefo",category:"analytics",domains:["*.feefo.com"],totalExecutionTime:1362284,totalOccurrences:2025},{name:"Fidelity Media",category:"ad",domains:["*.fidelity-media.com"],examples:["x.fidelity-media.com"]},{name:"Filestack",category:"content",domains:["*.filepicker.io"],examples:["api.filepicker.io","dialog.filepicker.io","www.filepicker.io"],totalExecutionTime:27297,totalOccurrences:200}, +{name:"Finsbury Media",category:"ad",domains:["*.finsburymedia.com"],totalExecutionTime:3470,totalOccurrences:12},{name:"Firepush",category:"utility",domains:["*.firepush.io"]},{name:"FirstImpression",category:"ad",domains:["*.firstimpression.io"],totalExecutionTime:141056,totalOccurrences:107},{name:"Fit Analytics",category:"other",domains:["*.fitanalytics.com"],examples:["integrations.fitanalytics.com","widget.fitanalytics.com","metrics.fitanalytics.com"]},{name:"Fits Me",category:"analytics",domains:["*.fits.me"]},{name:"Fivetran",category:"analytics",domains:["*.fivetran.com"],totalExecutionTime:2922,totalOccurrences:3},{name:"FlexShopper",category:"utility",domains:["*.flexshopper.com"]},{name:"Flickr",category:"content",domains:["*.flickr.com","*.staticflickr.com"],totalExecutionTime:262262,totalOccurrences:524},{name:"Flipboard",category:"social",domains:["*.flipboard.com"],totalExecutionTime:50049,totalOccurrences:41},{name:"Flipdesk",category:"customer-success",homepage:"https\ +://flipdesk.jp/",domains:["*.flipdesk.jp"],examples:["api.flipdesk.jp"],totalExecutionTime:322297,totalOccurrences:411},{name:"Flipp",category:"analytics",domains:["*.wishabi.com","d2e0sxz09bo7k2.cloudfront.net","*.wishabi.net"]},{name:"Flite",category:"ad",domains:["*.flite.com"]},{name:"Flixmedia",category:"analytics",domains:["*.flix360.com","*.flixcar.com","*.flixfacts.com","*.flixsyndication.net","*.flixfacts.co.uk"],totalExecutionTime:32827,totalOccurrences:19},{name:"Flockler",category:"ad",domains:["*.flockler.com"],totalExecutionTime:504051,totalOccurrences:1297},{name:"Flowplayer",category:"content",domains:["*.flowplayer.org"],totalExecutionTime:218859,totalOccurrences:862},{name:"Flowzymes Ky",category:"cdn",domains:["*.jquerytools.org"]},{name:"Fomo",category:"ad",domains:["*.notifyapp.io"]},{name:"Fonecall",category:"analytics",domains:["*.web-call-analytics.com"]},{name:"Fontdeck",category:"cdn",domains:["*.fontdeck.com"]},{name:"Foodity Technologies",category:"ad",domains:[ +"*.foodity.com"]},{name:"Force24",category:"ad",domains:["*.force24.co.uk"],totalExecutionTime:10225,totalOccurrences:112},{name:"ForeSee",company:"Answers",category:"analytics",domains:["*.4seeresults.com","*.answerscloud.com","*.foresee.com","*.foreseeresults.com"],totalExecutionTime:179704,totalOccurrences:266},{name:"Forensiq",category:"utility",domains:["*.fqtag.com"],totalExecutionTime:21937,totalOccurrences:171},{name:"Fort Awesome",category:"cdn",domains:["*.fortawesome.com"],totalExecutionTime:652365,totalOccurrences:3635},{name:"Forter",category:"utility",domains:["*.forter.com"],totalExecutionTime:6578955,totalOccurrences:6930},{name:"Forward Internet Group",category:"hosting",domains:["*.f3d.io"]},{name:"Forward3D",category:"ad",domains:["*.forward3d.com"]},{name:"Fospha",category:"analytics",domains:["*.fospha.com"],examples:["router.fospha.com"]},{name:"Foursixty",category:"customer-success",domains:["*.foursixty.com"]},{name:"FoxyCart",category:"utility",domains:["*.foxy\ +cart.com"],totalExecutionTime:361777,totalOccurrences:669},{name:"Fraudlogix",category:"utility",domains:["*.yabidos.com"],totalExecutionTime:47637,totalOccurrences:357},{name:"FreakOut",category:"ad",domains:["*.fout.jp"],totalExecutionTime:114328,totalOccurrences:2036},{name:"Freespee",category:"customer-success",domains:["*.freespee.com"],examples:["analytics.freespee.com"],totalExecutionTime:67626,totalOccurrences:484},{name:"Freetobook",category:"content",domains:["*.freetobook.com"],examples:["www.freetobook.com"],totalExecutionTime:297146,totalOccurrences:649},{name:"Fresh 8 Gaming",category:"ad",domains:["*.fresh8.co"],totalExecutionTime:319849,totalOccurrences:76},{name:"Fresh Relevance",category:"analytics",domains:["*.freshrelevance.com","*.cloudfront.ne","d1y9qtn9cuc3xw.cloudfront.net","d81mfvml8p5ml.cloudfront.net","dkpklk99llpj0.cloudfront.net"],examples:["d1y9qtn9cuc3xw.cloudfront.ne"],totalExecutionTime:91181,totalOccurrences:300},{name:"Friendbuy",category:"ad",domains:[ +"*.friendbuy.com","djnf6e5yyirys.cloudfront.net"],totalExecutionTime:17783,totalOccurrences:150},{name:"Frienefit",category:"ad",domains:["*.frienefit.com"]},{name:"FuelX",category:"ad",domains:["*.fuelx.com"]},{name:"Full Circle Studies",category:"analytics",domains:["*.securestudies.com"]},{name:"FullStory",category:"analytics",domains:["*.fullstory.com"],examples:["rs.fullstory.com"],totalExecutionTime:11575233,totalOccurrences:14687},{name:"Fyber",category:"ad",domains:["*.fyber.com"]},{name:"G-Forces Web Management",category:"hosting",domains:["*.gforcesinternal.co.uk"]},{name:"G4 Native",company:"Gravity4",category:"ad",domains:["*.triggit.com"]},{name:"GET ME IN! (TicketMaster)",category:"content",domains:["*.getmein.com"]},{name:"GIPHY",category:"content",domains:["*.giphy.com"],totalExecutionTime:4831,totalOccurrences:6},{name:"GainCloud",company:"GainCloud Systems",category:"other",domains:["*.egaincloud.net"]},{name:"Gath Adams",category:"content",domains:["*.iwantthatfligh\ +t.com.au"]},{name:"Gecko Tribe",category:"social",domains:["*.geckotribe.com"]},{name:"Gemius",category:"ad",domains:["*.gemius.pl"],totalExecutionTime:2964756,totalOccurrences:15596},{name:"Genesis Media",category:"ad",domains:["*.bzgint.com","*.genesismedia.com","*.genesismediaus.com"]},{name:"Genie Ventures",category:"ad",domains:["*.genieventures.co.uk"]},{name:"Geniee",category:"ad",domains:["*.href.asia","*.genieessp.jp","*.genieesspv.jp","*.gssprt.jp"],examples:["cs.gssprt.jp"],totalExecutionTime:16956055,totalOccurrences:16354},{name:"Geniuslink",category:"analytics",domains:["*.geni.us"],totalExecutionTime:897,totalOccurrences:3},{name:"GeoRiot",category:"other",domains:["*.georiot.com"]},{name:"GeoTrust",category:"utility",domains:["*.geotrust.com"],totalExecutionTime:3300,totalOccurrences:2},{name:"Geoplugin",category:"utility",domains:["*.geoplugin.com","*.geoplugin.net"],totalExecutionTime:119,totalOccurrences:3},{name:"Georeferencer",company:"Klokan Technologies",category:"\ +utility",domains:["*.georeferencer.com"]},{name:"GetIntent RTBSuite",company:"GetIntent",category:"ad",domains:["*.adhigh.net"],totalExecutionTime:2768,totalOccurrences:356},{name:"GetResponse",category:"ad",domains:["*.getresponse.com"],totalExecutionTime:209076,totalOccurrences:1019},{name:"GetSiteControl",company:"GetWebCraft",category:"utility",domains:["*.getsitecontrol.com"],totalExecutionTime:1739288,totalOccurrences:3146},{name:"GetSocial",category:"social",domains:["*.getsocial.io"],totalExecutionTime:1204,totalOccurrences:11},{name:"Getty Images",category:"content",domains:["*.gettyimages.com","*.gettyimages.co.uk"],examples:["www.gettyimages.com"],totalExecutionTime:17939,totalOccurrences:65},{name:"Gfycat",company:"Gycat",category:"utility",domains:["*.gfycat.com"]},{name:"Ghostery Enterprise",company:"Ghostery",category:"marketing",domains:["*.betrad.com"],totalExecutionTime:1129,totalOccurrences:26},{name:"Giant Media",category:"ad",domains:["*.videostat.com"]},{name:"Gig\ +ya",category:"analytics",domains:["*.gigya.com"],totalExecutionTime:2692493,totalOccurrences:1995},{name:"GitHub",category:"utility",domains:["*.github.com","*.githubusercontent.com","*.github.io","*.rawgit.com"],examples:["raw.githubusercontent.com","cdn.rawgit.com"],totalExecutionTime:7126491,totalOccurrences:14675},{name:"Gladly",company:"Gladly",homepage:"https://www.gladly.com/",category:"customer-success",domains:["*.gladly.com"],examples:["cdn.gladly.com"],totalExecutionTime:240417,totalOccurrences:381},{name:"Glassdoor",category:"content",domains:["*.glassdoor.com"],totalExecutionTime:68877,totalOccurrences:19},{name:"Gleam",category:"marketing",domains:["*.gleam.io"],totalExecutionTime:43249,totalOccurrences:221},{name:"Global Digital Markets",category:"ad",domains:["*.gdmdigital.com"]},{name:"Global-e",category:"hosting",domains:["*.global-e.com"],totalExecutionTime:706185,totalOccurrences:1314},{name:"GlobalSign",category:"utility",domains:["*.globalsign.com","*.globalsign.n\ +et"],totalExecutionTime:11228,totalOccurrences:48},{name:"GlobalWebIndex",category:"analytics",domains:["*.globalwebindex.net"]},{name:"Globase International",category:"ad",domains:["*.globase.com"]},{name:"GoDataFeed",category:"other",domains:["*.godatafeed.com"]},{name:"Google APIs",company:"Google",category:"utility",domains:["googleapis.com"]},{name:"Google Ad Block Detection",company:"Google",category:"ad",domains:["*.0emn.com","*.0fmm.com"]},{name:"Google Analytics Experiments",company:"Google",category:"analytics",domains:["*.gexperiments1.com"]},{name:"Google DoubleClick Ad Exchange",company:"Google",category:"ad",domains:["*.admeld.com"]},{name:"Google IPV6 Metrics",company:"Google",category:"analytics",domains:["*.ipv6test.net"]},{name:"Google Plus",company:"Google",category:"social",domains:["plus.google.com"],totalExecutionTime:49945,totalOccurrences:442},{name:"Google Trusted Stores",company:"Google",category:"utility",domains:["*.googlecommerce.com"],totalExecutionTime:218, +totalOccurrences:5},{name:"Google Video",company:"Google",category:"content",domains:["*.googlevideo.com"],totalExecutionTime:4,totalOccurrences:3},{name:"Google reCAPTCHA",company:"Google",category:"utility",domains:["*.recaptcha.net"],examples:["api.recaptcha.net"],totalExecutionTime:8694396,totalOccurrences:25662},{name:"GovMetric",company:"ROL Solutions",category:"analytics",domains:["*.govmetric.com"],totalExecutionTime:233,totalOccurrences:6},{name:"Granify",category:"analytics",domains:["*.granify.com"],totalExecutionTime:19211,totalOccurrences:24},{name:"Grapeshot",category:"ad",domains:["*.gscontxt.net","*.grapeshot.co.uk"],totalExecutionTime:4945,totalOccurrences:4},{name:"Gravity (AOL)",category:"analytics",domains:["*.grvcdn.com"]},{name:"Groovy Gecko",category:"content",domains:["*.ggwebcast.com","*.groovygecko.net"]},{name:"GroupM",category:"ad",domains:["*.qservz.com"]},{name:"Guardian Media",category:"ad",domains:["*.theguardian.com","*.guardian.co.uk"],examples:["oas.t\ +heguardian.com"]},{name:"GumGum",category:"ad",domains:["*.gumgum.com"],totalExecutionTime:3440651,totalOccurrences:167535},{name:"Gumtree",category:"content",domains:["*.gumtree.com"]},{name:"H264 Codec",company:"Cisco",category:"other",domains:["*.openh264.org"]},{name:"HERE",category:"analytics",domains:["*.medio.com"]},{name:"HP Optimost",company:"Hewlett-Packard Development Company",category:"marketing",domains:["*.hp.com","d2uncb19xzxhzx.cloudfront.net"],examples:["by.marketinghub.hp.com","marketinghub.hp.com"],totalExecutionTime:420577,totalOccurrences:100},{name:"Has Offers",company:"TUNE",category:"ad",domains:["*.go2cloud.org"],totalExecutionTime:0,totalOccurrences:3},{name:"Hawk Search",category:"utility",domains:["*.hawksearch.com"],totalExecutionTime:15097,totalOccurrences:132},{name:"Haymarket Media Group",category:"content",domains:["*.brandrepublic.com","*.hbpl.co.uk"]},{name:"Heap",category:"analytics",domains:["*.heapanalytics.com"],totalExecutionTime:5187800,totalOccurrences:12078}, +{name:"Hearst Communications",category:"content",domains:["*.h-cdn.co","*.hearstdigital.com","*.hearstlabs.com","*.hearst.io","*.cdnds.net"]},{name:"Heatmap",category:"analytics",domains:["*.heatmap.it"],totalExecutionTime:7337,totalOccurrences:141},{name:"Heroku",category:"other",domains:["*.herokuapp.com"],totalExecutionTime:12602535,totalOccurrences:14119},{name:"Hexton",category:"utility",domains:["*.hextom.com"],totalExecutionTime:10806589,totalOccurrences:24738},{name:"Hibernia Networks",category:"utility",domains:["*.hiberniacdn.com"]},{name:"High Impact Media",category:"ad",domains:["*.reactx.com"]},{name:"Highcharts",category:"utility",domains:["*.highcharts.com"],totalExecutionTime:746540,totalOccurrences:3181},{name:"Highwinds",category:"utility",domains:["*.hwcdn.net"]},{name:"HitsLink",category:"analytics",domains:["*.hitslink.com"],totalExecutionTime:1452,totalOccurrences:29},{name:"Hola Networks",category:"other",domains:["*.h-cdn.com"],totalExecutionTime:83024,totalOccurrences:42}, +{name:"Hootsuite",category:"analytics",domains:["*.hootsuite.com"]},{name:"HotUKDeals",category:"analytics",domains:["*.hotukdeals.com"]},{name:"HotWords",company:"Media Response Group",category:"ad",domains:["*.hotwords.com.br"]},{name:"HotelsCombined",category:"content",domains:["*.datahc.com"],totalExecutionTime:81,totalOccurrences:2},{name:"Hoverr",category:"ad",domains:["*.hoverr.media"]},{name:"Hull.js",category:"utility",domains:["*.hull.io","*.hullapp.io"]},{name:"Hupso Website Analyzer",company:"Hupso",category:"analytics",domains:["*.hupso.com"],totalExecutionTime:20892,totalOccurrences:248},{name:"I-Behavior",company:"WPP",category:"ad",domains:["*.ib-ibi.com"],totalExecutionTime:23,totalOccurrences:35},{name:"i-mobile",company:"i-mobile",category:"ad",domains:["*.i-mobile.co.jp"],examples:["ssp-sync.i-mobile.co.jp"],totalExecutionTime:3701005,totalOccurrences:16595},{name:"IBM Digital Analytics",company:"IBM",category:"analytics",domains:["*.cmcore.com","coremetrics.com","d\ +ata.coremetrics.com","data.de.coremetrics.com","libs.de.coremetrics.com","tmscdn.de.coremetrics.com","iocdn.coremetrics.com","libs.coremetrics.com","tmscdn.coremetrics.com","*.s81c.com","*.unica.com","*.coremetrics.eu"],examples:["data.coremetrics.eu"],totalExecutionTime:126790,totalOccurrences:169},{name:"IBM Digital Data Exchange",company:"IBM",category:"tag-manager",domains:["tagmanager.coremetrics.com"]},{name:"IBM Tealeaf",company:"IBM",category:"analytics",domains:["*.ibmcloud.com"],examples:["uscollector.tealeaf.ibmcloud.com"]},{name:"IBM Acoustic Campaign",company:"IBM",category:"analytics",domains:["www.sc.pages01.net","www.sc.pages02.net","www.sc.pages03.net","www.sc.pages04.net","www.sc.pages05.net","www.sc.pages06.net","www.sc.pages07.net","www.sc.pages08.net","www.sc.pages09.net","www.sc.pagesA.net"],examples:["https://www.sc.pages01.net/lp/static/js/iMAWebCookie.js"],totalExecutionTime:51361,totalOccurrences:417},{name:"ICF Technology",category:"content",domains:["*.camad\ +s.net"]},{name:"IFDNRG",category:"hosting",domains:["*.ifdnrg.com"]},{name:"IMRG",category:"analytics",domains:["*.peermap.com","*.imrg.org"],examples:["benchmarking.imrg.org"]},{name:"IPONWEB",category:"ad",domains:["*.company-target.com","*.liadm.com","*.iponweb.net","*.p161.net"],examples:["pool.udsp.iponweb.net"],totalExecutionTime:8924906,totalOccurrences:39154},{name:"IQ Mobile",category:"utility",domains:["*.iqm.cc"]},{name:"IS Group",category:"hosting",domains:["*.creative-serving.com"],totalExecutionTime:2127,totalOccurrences:29},{name:"IT Dienstleistungen Tim Prinzkosky",category:"utility",domains:["*.flaticons.net"]},{name:"IXI Digital",company:"Equifax",category:"ad",domains:["*.ixiaa.com"]},{name:"IcoMoon",category:"cdn",domains:["d19ayerf5ehaab.cloudfront.net","d1azc1qln24ryf.cloudfront.net"],totalExecutionTime:54286,totalOccurrences:180},{name:"IdenTrust",category:"utility",domains:["*.identrust.com"],totalExecutionTime:2334,totalOccurrences:1},{name:"Ido",category:"cust\ +omer-success",domains:["*.idio.co"],totalExecutionTime:2222,totalOccurrences:12},{name:"Ignition One",category:"marketing",domains:["*.searchignite.com"]},{name:"ImageShack",category:"content",domains:["*.yfrog.com"]},{name:"Imagen Studio",category:"utility",domains:["*.telephonesky.com"]},{name:"Imagini Holdings",category:"ad",domains:["*.vdna-assets.com"]},{name:"Img Safe",category:"content",domains:["*.imgsafe.org"]},{name:"Imgur",category:"utility",domains:["*.imgur.com"],totalExecutionTime:3538,totalOccurrences:30},{name:"Impact Radius",category:"ad",domains:["*.impactradius-event.com","*.impactradius-go.com","*.7eer.net","d3cxv97fi8q177.cloudfront.net","*.evyy.net","*.ojrq.net","utt.impactcdn.com","*.sjv.io"],examples:["a.impactradius-go.com","microsoft-uk.evyy.net"],totalExecutionTime:612310,totalOccurrences:4274},{name:"Improve Digital",category:"ad",domains:["*.360yield.com"],totalExecutionTime:28784,totalOccurrences:732},{name:"Improvely",category:"analytics",domains:["*.iljm\ +p.com"],totalExecutionTime:129,totalOccurrences:3},{name:"InMobi",category:"ad",domains:["*.inmobi.com"],totalExecutionTime:24607375,totalOccurrences:126087},{name:"InSkin Media",category:"ad",domains:["*.inskinad.com","*.inskinmedia.com"]},{name:"Inbenta",category:"customer-success",domains:["*.inbenta.com"],totalExecutionTime:3923,totalOccurrences:7},{name:"Incisive Media",category:"content",domains:["*.incisivemedia.com"]},{name:"Indeed",category:"content",domains:["*.indeed.com"],totalExecutionTime:81347,totalOccurrences:55},{name:"Index Exchange",company:"WPP",category:"ad",domains:["*.casalemedia.com","*.indexww.com"],totalExecutionTime:892351,totalOccurrences:32324},{name:"Indoona",category:"other",domains:["*.indoona.com"]},{name:"Infectious Media",category:"ad",domains:["*.impdesk.com","*.impressiondesk.com","*.inmz.net"]},{name:"Inference Mobile",category:"ad",domains:["*.inferencemobile.com"]},{name:"Infinity Tracking",category:"analytics",domains:["*.infinity-tracking.net"], +totalExecutionTime:24308,totalOccurrences:250},{name:"Infoline",category:"analytics",domains:["*.ioam.de"],totalExecutionTime:8983,totalOccurrences:95},{name:"Infolinks",category:"ad",domains:["*.infolinks.com"],totalExecutionTime:7995389,totalOccurrences:5950},{name:"Infopark",category:"hosting",domains:["*.scrvt.com"]},{name:"Infusionsoft",category:"ad",domains:["*.infusionsoft.com"],totalExecutionTime:345182,totalOccurrences:723},{name:"Ink",category:"ad",domains:["*.inktad.com"]},{name:"Inktel Contact Center Solutions",company:"Inktel",category:"customer-success",domains:["*.inktel.com"]},{name:"Inneractive",category:"ad",domains:["*.inner-active.mobi"]},{name:"Innovid",category:"ad",homepage:"https://www.innovid.com/",domains:["*.innovid.com"],examples:["ag.innovid.com","rtr.innovid.com"],totalExecutionTime:115267,totalOccurrences:1363},{name:"Insight Express",category:"analytics",domains:["*.insightexpressai.com"],totalExecutionTime:1,totalOccurrences:2},{name:"Insipio",category:"\ +other",domains:["*.insipio.com"]},{name:"Inspectlet",category:"analytics",domains:["*.inspectlet.com"],totalExecutionTime:7622183,totalOccurrences:5346},{name:"Instansive",category:"utility",domains:["*.instansive.com"]},{name:"Instart",homepage:"https://www.instart.com/",category:"utility",domains:["*.insnw.net"]},{name:"Instembedder",category:"content",domains:["*.instaembedder.com"]},{name:"Instinctive",category:"ad",domains:["*.instinctiveads.com"]},{name:"Intelligent Reach",category:"ad",domains:["*.ist-track.com"]},{name:"Intent HQ",category:"analytics",domains:["*.intenthq.com"]},{name:"Intent IQ",category:"ad",domains:["*.intentiq.com"],totalExecutionTime:48447,totalOccurrences:1146},{name:"Intercept Interactive",category:"ad",domains:["*.undertone.com"],totalExecutionTime:2293921,totalOccurrences:21012},{name:"Interest Graph",company:"AOL",category:"ad",domains:["*.gravity.com"]},{name:"Internet Brands",category:"content",domains:["*.ibpxl.com"]},{name:"Interpublic Group",category:"\ +ad",domains:["*.mbww.com"]},{name:"Interstate",category:"analytics",domains:["*.interstateanalytics.com"]},{name:"Interview",category:"analytics",domains:["*.efm.me"]},{name:"Intilery",category:"customer-success",domains:["*.intilery-analytics.com"]},{name:"Investis",category:"utility",domains:["*.investis.com"],totalExecutionTime:244162,totalOccurrences:282},{name:"Investis Flife",category:"hosting",domains:["*.quartalflife.com"]},{name:"Invodo",category:"ad",domains:["*.invodo.com"],examples:["e.invodo.com"]},{name:"iSite",category:"analytics",domains:["*.isitetv.com"],examples:["static.isitetv.com","events.isitetv.com"]},{name:"Issue",category:"content",domains:["*.issue.by"]},{name:"J.D. Williams & Co",category:"content",domains:["*.drct2u.com"]},{name:"Janrain",category:"analytics",domains:["*.janrain.com","*.janrainbackplane.com","*.rpxnow.com","d3hmp0045zy3cs.cloudfront.net"],totalExecutionTime:4006,totalOccurrences:21},{name:"Jellyfish",category:"ad",domains:["*.jellyfish.net"]}, +{name:"JetStream",category:"content",domains:["*.xlcdn.com"]},{name:"JingDong",category:"content",domains:["*.3.com","*.jd.com"],totalExecutionTime:119043,totalOccurrences:84},{name:"Jivox",category:"ad",domains:["*.jivox.com"],totalExecutionTime:31166,totalOccurrences:65},{name:"Jobvite",category:"content",domains:["*.jobvite.com"],totalExecutionTime:6667,totalOccurrences:4},{name:"Johnston Press",category:"content",domains:["*.johnstonpress.co.uk","*.jpress.co.uk"]},{name:"Join the Dots (Research)",category:"social",domains:["*.jtdiscuss.com"]},{name:"JotForm",category:"utility",domains:["*.jotformpro.com"]},{name:"JuicyAds",category:"ad",domains:["*.juicyads.com"],totalExecutionTime:543292,totalOccurrences:2092},{name:"JustPremium",category:"ad",domains:["*.net.net"],examples:["d2nvliyzbo36lk.cloudfrontd2nvliyzbo36lk.cloudfront.net.net"]},{name:"JustPremium Ads",company:"JustPremium",category:"ad",domains:["*.justpremium.com"],totalExecutionTime:1061,totalOccurrences:35},{name:"Just\ +Uno",category:"ad",domains:["*.justuno.com","d2j3qa5nc37287.cloudfront.net"],totalExecutionTime:773949,totalOccurrences:1448},{name:"KINX (Korea Internet Neutral eXchange)",category:"other",domains:["*.kinxcdn.com"],totalExecutionTime:1433,totalOccurrences:4},{name:"KISSmetrics",category:"analytics",domains:["*.kissmetrics.com","doug1izaerwt3.cloudfront.net","dsyszv14g9ymi.cloudfront.net"],totalExecutionTime:3896,totalOccurrences:46},{name:"Kaizen Platform",category:"analytics",domains:["*.kaizenplatform.net"],examples:["cdn.kaizenplatform.net","log-v4.kaizenplatform.net"],totalExecutionTime:85284,totalOccurrences:183},{name:"Kakao",category:"social",domains:["*.daum.net","*.daumcdn.net"],totalExecutionTime:38351047,totalOccurrences:62730},{name:"Kaltura Video Platform",company:"Kaltura",category:"content",domains:["*.kaltura.com"],examples:["cdnsecakmi.kaltura.com"],totalExecutionTime:2164237,totalOccurrences:1017},{name:"Kameleoon",homepage:"https://www.kameleoon.com/",category:"anal\ +ytics",domains:["*.kameleoon.com","*.kameleoon.eu","*.kameleoon.io"],examples:["data.kameleoon.io","kdm3fpv6il.kameleoon.eu"],totalExecutionTime:2217218,totalOccurrences:2337},{name:"Kampyle",category:"analytics",domains:["*.kampyle.com"],totalExecutionTime:413304,totalOccurrences:702},{name:"Kantar",category:"analytics",domains:["*.sesamestats.com"]},{name:"Kargo",category:"marketing",domains:["*.kargo.com"],totalExecutionTime:48285,totalOccurrences:1135},{name:"KARTE",company:"Plaid",homepage:"https://karte.io/",category:"marketing",domains:["*.karte.io"],examples:["static.karte.io","t.karte.io"],totalExecutionTime:1712123,totalOccurrences:1729},{name:"Kauli",category:"ad",domains:["*.kau.li"]},{name:"Keen",company:"Keen",homepage:"https://keen.io/",category:"analytics",domains:["*.keen.io","d26b395fwzu5fz.cloudfront.net"],totalExecutionTime:24210,totalOccurrences:416},{name:"Kelkoo",category:"hosting",domains:["*.kelkoo.com"]},{name:"Kenshoo",category:"marketing",domains:["*.xg4ken.\ +com"],totalExecutionTime:710,totalOccurrences:18},{name:"Key CDN",category:"utility",domains:["*.kxcdn.com"],totalExecutionTime:4814875,totalOccurrences:10025},{name:"Keynote",company:"Dynatrace",category:"analytics",domains:["*.keynote.com"]},{name:"Keywee",category:"ad",domains:["*.keywee.co"],totalExecutionTime:44984,totalOccurrences:259},{name:"Kiosked",category:"ad",domains:["*.kiosked.com"],totalExecutionTime:343355,totalOccurrences:173},{name:"Klarna",category:"utility",domains:["*.klarna.com"],totalExecutionTime:1374032,totalOccurrences:10759},{name:"Klaviyo",category:"ad",domains:["*.klaviyo.com"],totalExecutionTime:113130218,totalOccurrences:161289},{name:"Klevu Search",company:"Klevu",category:"utility",domains:["*.klevu.com"],totalExecutionTime:1124647,totalOccurrences:1463},{name:"Klick2Contact",category:"customer-success",domains:["*.klick2contact.com"]},{name:"Knight Lab",company:"Northwestern University",category:"utility",domains:["*.knightlab.com"],totalExecutionTime:350550, +totalOccurrences:448},{name:"Kodajo",category:"other",domains:["*.kodajo.com"]},{name:"Komoona",category:"ad",domains:["*.komoona.com"]},{name:"Korrelate",company:"JD Power",category:"analytics",domains:["*.korrelate.net"]},{name:"LKQD",category:"ad",domains:["*.lkqd.net"]},{name:"Layer0",category:"cdn",domains:["*.layer0.co"],examples:["rum.layer0.co"]},{name:"Layershift",category:"hosting",domains:["109.109.138.174"]},{name:"Lead Forensics",category:"ad",domains:["*.200summit.com","*.baw5tracker.com","*.business-path-55.com","*.bux1le001.com","*.central-core-7.com","*.direct-azr-78.com","*.explore-123.com","*.forensics1000.com","*.gldsta-02-or.com","*.green-bloc9.com","*.lansrv040.com","*.lead-123.com","*.leadforensics.com","*.mavic852.com","*.mon-com-net.com","*.peak-ip-54.com","*.snta0034.com","*.svr-prc-01.com","*.syntace-094.com","*.tghbn12.com","*.trail-web.com","*.web-01-gbl.com","*.web-cntr-07.com","*.trackdiscovery.net"],examples:["www.baw5tracker.com","www.lansrv040.com","ww\ +w.mon-com-net.com","www.peak-ip-54.com","www.tghbn12.com","www.web-01-gbl.com"],totalExecutionTime:45938,totalOccurrences:307},{name:"Lead Intelligence",company:"Magnetise Solutions",category:"ad",domains:["*.leadintelligence.co.uk"]},{name:"LeadLander",category:"analytics",domains:["*.formalyzer.com","*.trackalyzer.com"]},{name:"Leaflet",category:"utility",domains:["*.leafletjs.com"],totalExecutionTime:3668,totalOccurrences:69},{name:"LeasdBoxer",company:"LeadBoxer",category:"ad",domains:["*.leadboxer.com"],totalExecutionTime:15328,totalOccurrences:118},{name:"LeaseWeb",homepage:"https://www.leaseweb.com/",category:"cdn",domains:["*.lswcdn.net","*.leasewebcdn.com"]},{name:"Leboncoin",category:"content",domains:["*.leboncoin.fr"]},{name:"Lengow",category:"hosting",domains:["*.lengow.com"]},{name:"Lessbuttons",category:"social",domains:["*.lessbuttons.com"]},{name:"Letter Press",category:"ad",domains:["*.getletterpress.com"]},{name:"Level 3 Communications",category:"utility",domains:["f\ +ootprint.net"]},{name:"Level3",category:"other",domains:["secure.footprint.net"]},{name:"Lifestreet Media",category:"social",domains:["*.lfstmedia.com"]},{name:"LiftSuggest",category:"analytics",domains:["d2blwevgjs7yom.cloudfront.net"]},{name:"Ligatus",category:"ad",domains:["*.ligadx.com"]},{name:"LightStep",category:"analytics",domains:["*.lightstep.com"]},{name:"LightWidget",category:"utility",domains:["*.lightwidget.com"],totalExecutionTime:1825559,totalOccurrences:9383},{name:"Likelihood",company:"LIkeihood",category:"hosting",domains:["*.likelihood.com"],examples:["client.likelihood.com"]},{name:"LikeShop",company:"Dash Hudson",category:"content",domains:["likeshop.me"],examples:["likeshop.me"]},{name:"LINE Corporation",category:"ad",domains:["*.line-scdn.net","*.line.me"],examples:["d.line-scdn.net","tr.line.me"],totalExecutionTime:3858282,totalOccurrences:26881},{name:"Linkcious",category:"analytics",domains:["*.linkcious.com"]},{name:"Linking Mobile",category:"ad",domains:["*\ +.linkingmobile.com"]},{name:"LittleData",category:"analytics",homepage:"https://www.littledata.io/",domains:["*.littledata.io"],examples:["transactions.littledata.io"],totalExecutionTime:832,totalOccurrences:1},{name:"LiveBurst",category:"ad",domains:["*.liveburst.com"]},{name:"LiveClicker",category:"ad",domains:["*.liveclicker.net"]},{name:"LiveHelpNow",category:"customer-success",domains:["*.livehelpnow.net"],totalExecutionTime:284671,totalOccurrences:819},{name:"LiveInternet",category:"analytics",domains:["*.yadro.ru"]},{name:"LiveJournal",category:"social",domains:["*.livejournal.com","*.livejournal.net"],totalExecutionTime:63532309,totalOccurrences:9109},{name:"LivePerson",category:"customer-success",homepage:"https://www.liveperson.com/",domains:["*.liveperson.com","*.look.io","*.liveperson.net","*.lpsnmedia.net"],totalExecutionTime:1930619,totalOccurrences:2544},{name:"LiveRail",company:"Facebook",category:"ad",domains:["*.liverail.com","*.lrcdn.net"],examples:["scontent.lrcdn.n\ +et"]},{name:"LiveTex",category:"customer-success",domains:["*.livetex.ru"],totalExecutionTime:476954,totalOccurrences:1911},{name:"Livefyre",category:"content",domains:["*.fyre.co","*.livefyre.com"]},{name:"Living Map Company",category:"utility",domains:["*.livingmap.com"]},{name:"Local World",category:"content",domains:["*.thelocalpeople.co.uk"]},{name:"LockerDome",category:"analytics",domains:["*.lockerdome.com"],totalExecutionTime:244,totalOccurrences:3},{name:"Logentries",company:"Rapid",category:"utility",domains:["*.logentries.com"],examples:["js.logentries.com"]},{name:"Logicalis",category:"analytics",domains:["*.trovus.co.uk"]},{name:"LoginRadius",company:"LoginRadius",homepage:"https://www.loginradius.com/",category:"ad",domains:["*.loginradius.com","*.lrcontent.com"],examples:["config.lrcontent.com"],totalExecutionTime:15746,totalOccurrences:131},{name:"LongTail Ad Solutions",category:"ad",domains:["*.jwpcdn.com","*.jwplatform.com","*.jwplayer.com","*.jwpltx.com","*.jwpsrv.co\ +m","*.longtailvideo.com"],totalExecutionTime:4531393,totalOccurrences:5572},{name:"Loop Commerce",category:"other",domains:["*.loopassets.net"]},{name:"Loop11",category:"analytics",domains:["*.loop11.com"],totalExecutionTime:22278,totalOccurrences:28},{name:"LoopMe",category:"ad",domains:["*.loopme.biz","*.loopme.com","*.vntsm.com","*.loopme.me"],totalExecutionTime:2112781,totalOccurrences:11752},{name:"Looper",category:"content",domains:["*.looper.com"]},{name:"Loyalty Point",category:"ad",domains:["*.loyaltypoint.pl"]},{name:"LoyaltyLion",category:"ad",domains:["*.loyaltylion.com","*.loyaltylion.net","dg1f2pfrgjxdq.cloudfront.net"],totalExecutionTime:2971522,totalOccurrences:4114},{name:"Luma Tag",category:"analytics",domains:["*.lumatag.co.uk"]},{name:"Lumesse",category:"content",domains:["*.recruitmentplatform.com"]},{name:"Luminate",category:"ad",domains:["*.luminate.com"]},{name:"Lynchpin Analytics",category:"analytics",domains:["*.lypn.net"]},{name:"Lyris",category:"ad",domains:[ +"*.clicktracks.com"]},{name:"Lytics",category:"ad",domains:["*.lytics.io"],totalExecutionTime:272463,totalOccurrences:857},{name:"MEC WebTrack",company:"MEC",category:"ad",domains:["*.e-webtrack.net"]},{name:"MECLABS Institute",category:"analytics",domains:["*.meclabs.com","*.meclabsdata.com"]},{name:"MLveda",category:"utility",domains:["*.mlveda.com"],examples:["www.mlveda.com"],totalExecutionTime:109345,totalOccurrences:229},{name:"Macromill",company:"Macromill",category:"analytics",homepage:"https://group.macromill.com/",domains:["*.macromill.com"],examples:["img.macromill.com/js/us000131vfg/4000000570-56/lognos.js"],totalExecutionTime:5731,totalOccurrences:9},{name:"Macropod BugHerd",company:"Macropod",category:"utility",domains:["*.bugherd.com"],examples:["www.bugherd.com"],totalExecutionTime:512091,totalOccurrences:3523},{name:"Madison Logic",category:"marketing",domains:["*.ml314.com"],totalExecutionTime:101,totalOccurrences:3},{name:"Madmetrics",company:"Keyade",category:"analy\ +tics",domains:["*.keyade.com"]},{name:"Magnetic",category:"ad",domains:["*.domdex.com","d3ezl4ajpp2zy8.cloudfront.net"]},{name:"Magnetic Platform",company:"Magnetic",category:"ad",domains:["*.magnetic.is"]},{name:"MailMunch",category:"ad",domains:["*.mailmunch.co"],totalExecutionTime:1414543,totalOccurrences:19969},{name:"MailPlus",category:"ad",domains:["*.mailplus.nl"],totalExecutionTime:83524,totalOccurrences:304},{name:"Mapbox",category:"utility",domains:["*.mapbox.com"],totalExecutionTime:13815633,totalOccurrences:19555},{name:"Maptive",category:"utility",domains:["*.maptive.com"]},{name:"Marcaria.com",category:"other",domains:["*.gooo.al"]},{name:"Marchex",category:"analytics",domains:["*.voicestar.com","*.marchex.io"],totalExecutionTime:1378181,totalOccurrences:7390},{name:"Mark and Mini",category:"ad",domains:["*.markandmini.com"],examples:["www.markandmini.com"]},{name:"Marker",category:"utility",domains:["*.marker.io"],examples:["edge.marker.io"],totalExecutionTime:2331726,totalOccurrences:1722}, +{name:"Marketing Dashboards",company:"GroupM",category:"analytics",domains:["*.m-decision.com"]},{name:"Marketizator",category:"analytics",domains:["*.marketizator.com"]},{name:"Marketplace Web Service",company:"Amazon",category:"other",domains:["*.ssl-images-amazon.com"],totalExecutionTime:234709,totalOccurrences:451},{name:"Mashable",category:"social",domains:["*.mshcdn.com"]},{name:"MatchWork",category:"utility",domains:["*.matchwork.com"]},{name:"MathJax",category:"utility",domains:["*.mathjax.org"],totalExecutionTime:84751,totalOccurrences:743},{name:"Mather Economics",category:"analytics",domains:["*.matheranalytics.com"],totalExecutionTime:262501,totalOccurrences:507},{name:"MaxCDN Enterprise",company:"MaxCDN",category:"utility",domains:["*.netdna-cdn.com","*.netdna-ssl.com"]},{name:"MaxMind",category:"utility",domains:["*.maxmind.com"],totalExecutionTime:855332,totalOccurrences:831},{name:"MaxPoint Interactive",category:"ad",domains:["*.mxptint.net"],totalExecutionTime:20140,totalOccurrences:23834}, +{name:"Maxsi",category:"analytics",domains:["*.evisitanalyst.com"]},{name:"Maxymiser",category:"analytics",domains:["*.maxymiser.net, maxymiser.hs.llnwd.net"]},{name:"McAffee",category:"utility",domains:["*.mcafeesecure.com","*.scanalert.com"]},{name:"Measured",category:"analytics",domains:["*.measured.com"],examples:["tag.measured.com"],homepage:"https://www.measured.com/"},{name:"Media IQ",category:"analytics",domains:["*.mediaiqdigital.com"]},{name:"Media Management Technologies",category:"ad",domains:["*.speedshiftmedia.com"],totalExecutionTime:27147,totalOccurrences:161},{name:"Media Temple",category:"hosting",domains:["*.goodlayers2.com"]},{name:"Mediabong",category:"ad",domains:["*.mediabong.net"]},{name:"Mediahawk",category:"analytics",domains:["*.mediahawk.co.uk"],totalExecutionTime:51393,totalOccurrences:239},{name:"Mediahub",category:"ad",domains:["*.hubverifyandoptimize.com","*.projectwatchtower.com"]},{name:"Mediasyndicator",category:"ad",domains:["*.creativesyndicator.com"]}, +{name:"Medium",category:"content",domains:["*.medium.com"],totalExecutionTime:216923262,totalOccurrences:17027},{name:"Meetrics",category:"ad",domains:["*.de.com","*.meetrics.net","*.mxcdn.net"],examples:["research.de.com"],totalExecutionTime:102809,totalOccurrences:63},{name:"Mega",company:"Mega Information Technology",category:"other",domains:["*.mgcdn.com"]},{name:"Melt",category:"ad",domains:["*.meltdsp.com","*.mesp.com"]},{name:"Meltwater Group",category:"customer-success",domains:["*.meltwaternews.com"]},{name:"Meme",category:"ad",domains:["*.viewwonder.com"]},{name:"MentAd",category:"ad",domains:["*.mentad.com"]},{name:"Mention Me",category:"ad",domains:["*.mention-me.com"],examples:["tag.mention-me.com"],totalExecutionTime:15233,totalOccurrences:44},{name:"Merchant Equipment Store",category:"utility",domains:["*.merchantequip.com"],totalExecutionTime:268,totalOccurrences:1},{name:"Merchenta",category:"customer-success",domains:["*.merchenta.com"]},{name:"Merkle Digital Data Exc\ +hange",company:"Merkle",category:"ad",domains:["*.brilig.com"]},{name:"Merkle Paid Search",company:"Merkle",category:"ad",domains:["*.rkdms.com"],totalExecutionTime:69291,totalOccurrences:407},{name:"Met Office",category:"content",domains:["*.metoffice.gov.uk"],totalExecutionTime:15029,totalOccurrences:19},{name:"Meta Broadcast",category:"social",domains:["*.metabroadcast.com"],examples:["voila.metabroadcast.com"]},{name:"Michael Associates",category:"ad",domains:["*.checktestsite.com"],examples:["www.checktestsite.com"]},{name:"Michelin",category:"content",domains:["*.viamichelin.com"],totalExecutionTime:8087,totalOccurrences:7},{name:"Microad",category:"ad",domains:["*.microad.jp"],totalExecutionTime:14626755,totalOccurrences:23909},{name:"Microsoft Certificate Services",company:"Microsoft",category:"utility",domains:["*.msocsp.com"]},{name:"Microsoft Hosted Libs",company:"Microsoft",category:"cdn",domains:["*.aspnetcdn.com"],examples:["ajax.aspnetcdn.com"],totalExecutionTime:4562478, +totalOccurrences:20042},{name:"Microsoft XBox Live",company:"Microsoft",category:"marketing",domains:["*.xboxlive.com"]},{name:"Mightypop",category:"ad",domains:["*.mightypop.ca"]},{name:"Mika Tuupola",category:"utility",domains:["*.appelsiini.net"]},{name:"Millennial Media",category:"ad",domains:["*.jumptap.com"]},{name:"Mirror Image Internet",category:"utility",domains:["*.miisolutions.net"]},{name:"Mobify",category:"utility",domains:["*.mobify.com","*.mobify.net"]},{name:"Mobile Nations",category:"social",domains:["*.mobilenations.com"]},{name:"Mobivate",category:"ad",domains:["*.mobivatebulksms.com"]},{name:"Momondo",category:"content",domains:["*.momondo.dk"]},{name:"Momondo Group",category:"content",domains:["*.momondogrouo.com","*.momondogroup.com"]},{name:"Monarch Ads",category:"ad",domains:["*.monarchads.com"]},{name:"Monetate",category:"analytics",domains:["*.monetate.net"],totalExecutionTime:260345,totalOccurrences:599},{name:"MonetizeMore",category:"ad",domains:["*.m2.ai"], +totalExecutionTime:8896,totalOccurrences:47},{name:"Monitor",company:"Econda",category:"analytics",domains:["*.econda-monitor.de"],examples:["www.econda-monitor.de"]},{name:"Monkey Frog Media",category:"content",domains:["*.monkeyfrogmedia.com"]},{name:"Monotype",category:"cdn",domains:["*.fonts.com","*.fonts.net"],totalExecutionTime:729465,totalOccurrences:3185},{name:"Moore-Wilson",category:"ad",domains:["*.mwdev.co.uk"]},{name:"Moovweb",category:"utility",domains:["*.moovweb.net"]},{name:"Mopinion",category:"analytics",domains:["*.mopinion.com"],totalExecutionTime:171681,totalOccurrences:177},{name:"MotionPoint",category:"other",domains:["*.convertlanguage.com"],totalExecutionTime:1843,totalOccurrences:35},{name:"Mouse3K",category:"analytics",domains:["*.mouse3k.com"]},{name:"MouseStats",category:"analytics",domains:["*.mousestats.com"]},{name:"Mouseflow",homepage:"https://mouseflow.com/",category:"analytics",domains:["*.mouseflow.com"],totalExecutionTime:331345,totalOccurrences:6786}, +{name:"Movable Ink",category:"analytics",domains:["*.micpn.com"],totalExecutionTime:439979,totalOccurrences:4949},{name:"MovingIMAGE24",category:"content",domains:["*.edge-cdn.net"]},{name:"Moxielinks",category:"ad",domains:["*.moxielinks.com"]},{name:"Moz Recommended Companies",company:"Moz",category:"analytics",domains:["d2eeipcrcdle6.cloudfront.net"]},{name:"Mozilla",category:"utility",domains:["*.mozilla.org"],examples:["aus5.mozilla.org"],totalExecutionTime:21085,totalOccurrences:32},{name:"Multiview",category:"content",domains:["*.multiview.com","*.track-mv.com"],totalExecutionTime:8831,totalOccurrences:58},{name:"Mux",category:"analytics",domains:["*.litix.io"],totalExecutionTime:91580,totalOccurrences:249},{name:"MyAds",company:"MyBuys",category:"analytics",domains:["*.veruta.com"]},{name:"MyBuys",category:"analytics",domains:["*.mybuys.com"]},{name:"MyFonts",category:"cdn",domains:["*.myfonts.net"],totalExecutionTime:78,totalOccurrences:4},{name:"MyRegistry",category:"other",domains:[ +"*.myregistry.com"],totalExecutionTime:164086,totalOccurrences:621},{name:"MySpace",company:"Specific Media",category:"social",domains:["*.myspace.com"]},{name:"Mynewsdesk",category:"utility",domains:["*.mynewsdesk.com"],totalExecutionTime:564,totalOccurrences:31},{name:"NAVIS",category:"content",domains:["*.navistechnologies.info"]},{name:"NCC Group Real User Monitoring",company:"NCC Group",category:"analytics",domains:["*.nccgroup-webperf.com"],examples:["beacon-rumlive.rum.nccgroup-webperf.com","config-rumlive.rum.nccgroup-webperf.com","script-rumlive.rum.nccgroup-webperf.com"]},{name:"NEORY Marketing Cloud",company:"NEORY",category:"marketing",domains:["*.ad-srv.net"],totalExecutionTime:10976,totalOccurrences:240},{name:"Nanigans",category:"ad",domains:["*.nanigans.com"]},{name:"Nano Interactive",category:"ad",domains:["*.audiencemanager.de"],totalExecutionTime:780,totalOccurrences:10},{name:"Nanorep",company:"Nanorep Technologies",category:"customer-success",domains:["*.nanorep.co\ +m"]},{name:"Narrative",category:"ad",domains:["*.narrative.io"],totalExecutionTime:1228,totalOccurrences:2},{name:"Native Ads",category:"ad",domains:["*.nativeads.com"]},{name:"Nativo",category:"ad",domains:["*.postrelease.com"],totalExecutionTime:28260,totalOccurrences:35852},{name:"Navegg",category:"ad",domains:["*.navdmp.com"],totalExecutionTime:51915,totalOccurrences:805},{name:"NaviStone",category:"ad",domains:["*.murdoog.com"]},{name:"Naytev",category:"analytics",domains:["*.naytev.com"]},{name:"Needle",category:"analytics",domains:["*.needle.com"]},{name:"Neiman Marcus",category:"content",domains:["*.ctscdn.com"]},{name:"Nend",category:"ad",domains:["*.nend.net"]},{name:"Neodata",category:"ad",domains:["*.neodatagroup.com"],totalExecutionTime:12827,totalOccurrences:86},{name:"Net Applications",category:"analytics",domains:["*.hitsprocessor.com"]},{name:"Net Reviews",category:"analytics",domains:["*.avis-verifies.com"],examples:["www.avis-verifies.com"],totalExecutionTime:1143140, +totalOccurrences:2442},{name:"NetAffiliation",company:"Kwanco",category:"ad",domains:["*.metaffiliation.com"],totalExecutionTime:18519,totalOccurrences:127},{name:"NetDirector",company:"G-Forces Web Management",category:"other",domains:["*.netdirector.co.uk"],totalExecutionTime:3931,totalOccurrences:1},{name:"NetFlix",category:"content",domains:["*.nflxext.com","*.nflximg.net"],totalExecutionTime:4364,totalOccurrences:5},{name:"Nielsen NetRatings SiteCensus",company:"The Nielsen Company",homepage:"http://www.nielsen-online.com/intlpage.html",category:"analytics",domains:["*.imrworldwide.com"],totalExecutionTime:6840006,totalOccurrences:19525},{name:"NetSeer",category:"ad",domains:["*.netseer.com","*.ns-cdn.com"]},{name:"NetShelter",company:"Ziff Davis Tech",category:"ad",domains:["*.netshelter.net"]},{name:"Netmining",company:"Ignition One",category:"ad",domains:["*.netmng.com"],totalExecutionTime:7746,totalOccurrences:92},{name:"Netop",category:"customer-success",domains:["*.netop.com"]}, +{name:"Network Solutions",category:"utility",domains:["*.netsolssl.com","*.networksolutions.com"],examples:["ocsp.netsolssl.com"],totalExecutionTime:2415,totalOccurrences:2},{name:"Neustar AdAdvisor",company:"Neustar",category:"ad",domains:["*.adadvisor.net"]},{name:"New Approach Media",category:"ad",domains:["*.newapproachmedia.co.uk"]},{name:"NewShareCounts",category:"social",domains:["*.newsharecounts.com"]},{name:"News",category:"social",domains:["*.news.com.au","*.newsanalytics.com.au","*.newsapi.com.au","*.newscdn.com.au","*.newsdata.com.au","*.newsdiscover.com.au","*.news-static.com"],totalExecutionTime:69261,totalOccurrences:46},{name:"Newsquest",category:"content",domains:["*.newsquestdigital.co.uk"]},{name:"Newzulu",category:"content",domains:["*.filemobile.com","*.projects.fm"]},{name:"Nexcess.Net",category:"hosting",domains:["*.nexcesscdn.net"]},{name:"Nexstar Media Group",category:"ad",domains:["*.yashi.com"]},{name:"NextPerf",company:"Rakuten Marketing",category:"ad",domains:[ +"*.nxtck.com"]},{name:"Nine.com.au",company:"Nine Digital",category:"content",domains:["*.9msn.com.au"]},{name:"NitroSell",category:"hosting",domains:["*.nitrosell.com"]},{name:"Nochex",category:"utility",domains:["*.nochex.com"]},{name:"Northern & Shell Media Group",category:"content",domains:["*.northernandshell.co.uk"]},{name:"Nosto",category:"analytics",domains:["*.nosto.com"],totalExecutionTime:703736,totalOccurrences:1189},{name:"Now Interact",category:"analytics",domains:["*.nowinteract.com"]},{name:"Numberly",company:"1000mercis",category:"ad",domains:["*.mmtro.com","*.nzaza.com"],totalExecutionTime:1827,totalOccurrences:19},{name:"NyaConcepts",category:"analytics",domains:["*.xclusive.ly"]},{name:"O2",category:"other",domains:["*.o2.co.uk"],examples:["servedby.o2.co.uk"]},{name:"GoDaddy",homepage:"https://www.godaddy.com/",category:"utility",domains:["*.godaddy.com","*.wsimg.com"],examples:["ocsp.godaddy.com","seal.godaddy.com"],totalExecutionTime:94698135,totalOccurrences:110342}, +{name:"ObjectPlanet",category:"analytics",domains:["*.easypolls.net"],totalExecutionTime:28470,totalOccurrences:70},{name:"OhMyAd",category:"ad",domains:["*.ohmyad.co"],examples:["pr.ohmyad.co"]},{name:"Okas Concepts",category:"utility",domains:["*.okasconcepts.com"],totalExecutionTime:1483515,totalOccurrences:661},{name:"Okta",category:"analytics",domains:["*.okta.com"],totalExecutionTime:1464920,totalOccurrences:3542},{name:"Olapic",category:"content",domains:["*.photorank.me"],totalExecutionTime:115,totalOccurrences:2},{name:"Ometria",category:"analytics",domains:["*.ometria.com"],totalExecutionTime:16630,totalOccurrences:204},{name:"Omniconvert",category:"analytics",domains:["*.omniconvert.com","d2tgfbvjf3q6hn.cloudfront.net","d3vbj265bmdenw.cloudfront.net"],totalExecutionTime:85855,totalOccurrences:381},{name:"Omniroot",company:"Verizon",category:"utility",domains:["*.omniroot.com"],examples:["ocsp.omniroot.com","vassg142.ocsp.omniroot.com"]},{name:"OnAudience",company:"Cloud Tech\ +nologies",category:"ad",domains:["*.onaudience.com"]},{name:"OnScroll",category:"ad",domains:["*.onscroll.com"]},{name:"OnState",category:"ad",domains:["*.onstate.co.uk"]},{name:"OnYourMap",category:"utility",domains:["*.onyourmap.com"]},{name:"One by AOL",company:"AOL",category:"ad",domains:["*.adtechjp.com","*.adtech.de"],totalExecutionTime:1140,totalOccurrences:17},{name:"One by AOL:Mobile",company:"AOL",category:"ad",domains:["*.nexage.com"],examples:["ads.nexage.com","hb.nexage.com"]},{name:"OneAll",category:"analytics",domains:["*.oneall.com"],totalExecutionTime:104501,totalOccurrences:623},{name:"OneSoon",category:"analytics",domains:["*.adalyser.com"],totalExecutionTime:33037,totalOccurrences:437},{name:"OneTag",category:"ad",domains:["*.onetag-sys.com"]},{name:"Onet",category:"ad",domains:["*.onet.pl"],totalExecutionTime:531334,totalOccurrences:760},{name:"Online Rewards",company:"Mastercard",category:"ad",domains:["*.loyaltygateway.com"]},{name:"Online republic",category:"con\ +tent",domains:["*.imallcdn.net"],totalExecutionTime:67122,totalOccurrences:58},{name:"Ooyala",category:"ad",domains:["*.ooyala.com"]},{name:"OpenTable",company:"Priceline Group",category:"content",domains:["*.opentable.com","*.opentable.co.uk","*.toptable.co.uk"],examples:["www.toptable.co.uk"],totalExecutionTime:412090,totalOccurrences:4314},{name:"OpenX Ad Exchange",company:"OpenX Technologies",category:"ad",domains:["*.liftdna.com"]},{name:"Opinion Stage",category:"analytics",domains:["*.opinionstage.com"],examples:["www.opinionstage.com"],totalExecutionTime:113206,totalOccurrences:145},{name:"OpinionBar",category:"analytics",domains:["*.opinionbar.com"]},{name:"Opta",company:"Perform Group",category:"content",domains:["*.opta.net"],totalExecutionTime:302785,totalOccurrences:272},{name:"OptiMonk",category:"ad",domains:["*.optimonk.com"],totalExecutionTime:10318415,totalOccurrences:10615},{name:"Optilead",category:"analytics",domains:["*.dyn-img.com","*.leadcall.co.uk","*.optilead.co\ +.uk"]},{name:"Optimatic",category:"ad",domains:["*.optimatic.com"],examples:["synch.optimatic.com"]},{name:"Optimise Media Group",category:"utility",domains:["*.omguk.com"],totalExecutionTime:6691,totalOccurrences:41},{name:"Optimost",company:"OpenText",category:"ad",domains:["*.optimost.com"]},{name:"Optimove",company:"Mobius Solutions",category:"analytics",domains:["*.optimove.net"],totalExecutionTime:22679,totalOccurrences:293},{name:"Optorb",category:"ad",domains:["*.optorb.com"]},{name:"Oracle",category:"marketing",domains:["*.custhelp.com","*.eloqua.com","*.en25.com","*.estara.com","*.instantservice.com"],totalExecutionTime:684920,totalOccurrences:569},{name:"Oracle Recommendations On Demand",company:"Oracle",category:"analytics",domains:["*.atgsvcs.com"],totalExecutionTime:8696,totalOccurrences:96},{name:"Oracle Responsys",company:"Oracle",category:"marketing",domains:["*.adrsp.net","*.responsys.net"]},{name:"Order Security-VOID",company:"Order Security",category:"analytics",domains:[ +"*.order-security.com"]},{name:"Oriel",category:"ad",domains:["*.oriel.io"]},{name:"Outbrain",homepage:"https://www.outbrain.com/",category:"ad",domains:["*.outbrain.com","*.outbrainimg.com","*.visualrevenue.com"],totalExecutionTime:3373858,totalOccurrences:13287},{name:"OverStream",company:"Coull",category:"ad",domains:["*.coull.com"],examples:["ex1.coull.com"]},{name:"Overdrive",category:"content",domains:["*.contentreserve.com"]},{name:"Overstock",category:"utility",domains:["*.ostkcdn.com"]},{name:"OwnerIQ",category:"ad",domains:["*.owneriq.net"],totalExecutionTime:305561,totalOccurrences:2173},{name:"OzCart",category:"utility",domains:["*.ozcart.com.au"]},{name:"Ozone Media",category:"ad",domains:["*.adadyn.com"]},{name:"Loqate",company:"Loqate",category:"other",domains:["*.pcapredict.com","*.postcodeanywhere.co.uk"],totalExecutionTime:136866,totalOccurrences:777},{name:"PEER 1 Hosting",category:"hosting",domains:["*.peer1.com"]},{name:"PERFORM",category:"content",domains:["*.perf\ +ormgroup.com"]},{name:"PICnet",category:"hosting",domains:["*.nonprofitsoapbox.com"]},{name:"Pacnet",company:"Telstra",category:"other",domains:["*.cdndelivery.net"],examples:["682968324.r.cdndelivery.net"]},{name:"Pagefair",category:"ad",domains:["*.pagefair.com","*.pagefair.net"]},{name:"Pagely",category:"other",domains:["*.optnmstr.com"],totalExecutionTime:99314,totalOccurrences:487},{name:"Pagesuite",category:"ad",domains:["*.pagesuite-professional.co.uk"],totalExecutionTime:12,totalOccurrences:1},{name:"Pardot",category:"marketing",domains:["*.pardot.com"],totalExecutionTime:73880,totalOccurrences:550},{name:"Parse.ly",category:"analytics",domains:["*.parsely.com","d1z2jf7jlzjs58.cloudfront.net"],totalExecutionTime:1122662,totalOccurrences:5204},{name:"Pay per Click",company:"Eysys",category:"ad",domains:["*.eysys.com"],examples:["pla27.eysys.com"]},{name:"PayPal Ads",category:"ad",domains:["*.where.com"]},{name:"Peaks & Pies",category:"analytics",domains:["*.bunchbox.co"]},{name:"\ +PebblePost",category:"ad",domains:["*.pbbl.co"],totalExecutionTime:147945,totalOccurrences:725},{name:"Peerius",category:"analytics",domains:["*.peerius.com"]},{name:"Peermap",company:"IMRG",category:"analytics",domains:["peermapcontent.affino.com"]},{name:"Penske Media",category:"content",domains:["*.pmc.com"]},{name:"Penton",category:"utility",domains:["*.pisces-penton.com"]},{name:"Pepper",category:"ad",domains:["*.peppercorp.com"]},{name:"Perfect Audience",company:"Marin Software",category:"ad",domains:["*.prfct.co","*.marinsm.com","*.perfectaudience.com"],totalExecutionTime:405,totalOccurrences:7},{name:"Perfect Market",category:"ad",domains:["*.perfectmarket.com"]},{name:"Perfect Privacy",category:"other",domains:["*.suitesmart.com"]},{name:"Perform Group",category:"content",domains:["*.performfeeds.com","*.premiumtv.co.uk"]},{name:"Performio",category:"ad",domains:["*.performax.cz"],examples:["ut.performax.cz"],totalExecutionTime:117591,totalOccurrences:337},{name:"PerimeterX Bo\ +t Defender",company:"PerimeterX",category:"utility",domains:["*.perimeterx.net","*.pxi.pub"],totalExecutionTime:172605,totalOccurrences:68},{name:"Periscope",category:"content",domains:["*.periscope.tv"]},{name:"Permutive",category:"ad",domains:["*.permutive.com","d3alqb8vzo7fun.cloudfront.net"],totalExecutionTime:1406714,totalOccurrences:1124},{name:"Petametrics",category:"analytics",domains:["*.petametrics.com"]},{name:"PhotoBucket",category:"content",domains:["*.photobucket.com"],totalExecutionTime:2383529,totalOccurrences:338},{name:"Picreel",category:"analytics",domains:["*.pcrl.co","*.picreel.com"],totalExecutionTime:45437,totalOccurrences:300},{name:"Pictela (AOL)",category:"analytics",domains:["*.pictela.net"]},{name:"PistonHeads",category:"social",domains:["*.pistonheads.com"]},{name:"Piwik",category:"analytics",domains:["*.drtvtracker.com","*.piwikpro.com","*.raac33.net"],totalExecutionTime:2813,totalOccurrences:32},{name:"Pixalate",category:"utility",domains:["*.adrta.com"], +totalExecutionTime:4187,totalOccurrences:13},{name:"Pixlee",category:"social",domains:["*.pixlee.com"],totalExecutionTime:137281,totalOccurrences:341},{name:"Placed",category:"analytics",domains:["*.placed.com"],totalExecutionTime:691,totalOccurrences:1},{name:"Planning-inc",category:"analytics",domains:["*.planning-inc.co.uk"]},{name:"PlayAd Media Group",category:"ad",domains:["*.youplay.se"]},{name:"Playbuzz",category:"hosting",domains:["*.playbuzz.com"],totalExecutionTime:58184,totalOccurrences:89},{name:"Pleenq",category:"ad",domains:["*.pleenq.com"]},{name:"Plentific",category:"content",domains:["*.plentific.com"]},{name:"PluginDetect",category:"other",domains:["dtlilztwypawv.cloudfront.net"]},{name:"Po.st",company:"RadiumOne",category:"utility",domains:["*.po.st"],totalExecutionTime:178,totalOccurrences:3},{name:"Pointpin",category:"utility",domains:["*.pointp.in"]},{name:"Pointroll (Garnett)",category:"ad",domains:["*.pointroll.com"]},{name:"Polar",homepage:"https://polar.me/",category:"\ +ad",domains:["*.polarmobile.ca","*.mediaeverywhere.com","*.mediavoice.com","*.plrsrvcs.com","*.polarcdn-engine.com","*.polarcdn-meraxes.com","*.polarcdn-pentos.com","*.polarcdn-static.com","*.polarcdn-terrax.com","*.polarcdn.com","*.polarmobile.com","*.poweredbypolar.com","*.mediaconductor.me","*.polaracademy.me"],totalExecutionTime:66280,totalOccurrences:223},{name:"PollDaddy (Automattic)",category:"ad",domains:["static.polldaddy.com","*.poll.fm"],totalExecutionTime:4752,totalOccurrences:37},{name:"Polldaddy",company:"Automattic",category:"analytics",domains:["polldaddy.com","*.polldaddy.com"],totalExecutionTime:294207,totalOccurrences:2715},{name:"Polyfill service",company:"Polyfill.io",category:"other",domains:["*.polyfill.io"]},{name:"MegaPopAds",category:"ad",domains:["*.megapopads.com"]},{name:"Populis",category:"ad",domains:["*.populisengage.com"]},{name:"Postimage.org",category:"content",domains:["*.postimg.org"]},{name:"PowerFront",category:"hosting",domains:["*.inside-graph.c\ +om"],totalExecutionTime:220331,totalOccurrences:370},{name:"PowerReviews",category:"analytics",domains:["*.powerreviews.com"],totalExecutionTime:1208993,totalOccurrences:1324},{name:"Powerlinks.com",category:"ad",domains:["*.powerlinks.com"]},{name:"Press+",category:"ad",domains:["*.pipol.com","*.ppjol.com","*.ppjol.net"]},{name:"PressArea",category:"utility",domains:["*.pressarea.com"],examples:["www.pressarea.com"]},{name:"Pretio Interactive",category:"ad",domains:["*.pretio.in"]},{name:"Prezi",category:"utility",domains:["*.prezi.com"],totalExecutionTime:72394,totalOccurrences:79},{name:"PriceGrabber",category:"content",domains:["*.pgcdn.com","*.pricegrabber.com"]},{name:"PriceRunner",category:"content",domains:["*.pricerunner.com"],totalExecutionTime:200,totalOccurrences:6},{name:"PrintFriendly",category:"utility",domains:["*.printfriendly.com"],totalExecutionTime:39464,totalOccurrences:381},{name:"Privy",category:"ad",domains:["*.privy.com","*.privymktg.com"],totalExecutionTime:14992809, +totalOccurrences:18961},{name:"Proclivity Media",category:"analytics",domains:["*.pswec.com"]},{name:"Profitshare",category:"ad",domains:["*.profitshare.ro"],totalExecutionTime:60087,totalOccurrences:194},{name:"Programattik",category:"ad",domains:["*.programattik.com"],totalExecutionTime:95,totalOccurrences:9},{name:"Proper Media",category:"content",domains:["*.proper.io"],totalExecutionTime:253672,totalOccurrences:109},{name:"Property Week",category:"content",domains:["*.propertyweek.com"],examples:["www.propertyweek.com"]},{name:"Provide Support",category:"customer-success",domains:["*.providesupport.com"],totalExecutionTime:79281,totalOccurrences:989},{name:"Proweb Uk",category:"hosting",domains:["*.proweb.net"]},{name:"Proximic (ComScore)",category:"ad",domains:["*.proximic.com"]},{name:"Psyma",category:"ad",domains:["*.psyma.com"],totalExecutionTime:2496,totalOccurrences:5},{name:"PubFactory",company:"Safari Books Online",category:"content",domains:["*.pubfactory.com"]},{name:"Pu\ +bNation",category:"ad",domains:["*.pubnation.com"],totalExecutionTime:625439,totalOccurrences:132},{name:"Publicidad.net",category:"ad",domains:["*.publicidad.tv"]},{name:"PublishThis",company:"Ultra Unlimited",category:"ad",domains:["*.publishthis.com"]},{name:"Pulse Insights",category:"analytics",domains:["*.pulseinsights.com"],totalExecutionTime:5757,totalOccurrences:53},{name:"Pulsepoint",category:"marketing",domains:["*.displaymarketplace.com"]},{name:"Purch",category:"ad",domains:["*.bestofmedia.com","*.purch.com"],examples:["ramp.purch.com"]},{name:"Pure Chat",category:"customer-success",domains:["*.purechat.com"],totalExecutionTime:1129392,totalOccurrences:3105},{name:"PushCrew",category:"ad",domains:["*.pushcrew.com"],totalExecutionTime:170011,totalOccurrences:823},{name:"Q1Media",category:"ad",domains:["*.q1media.com","*.q1mediahydraplatform.com"]},{name:"Qbase Software Development",category:"hosting",domains:["*.smartwebportal.co.uk"]},{name:"Qeryz",category:"analytics",domains:[ +"*.qeryz.com"]},{name:"Qode Interactive",category:"hosting",domains:["*.qodeinteractive.com"],totalExecutionTime:2503828,totalOccurrences:147},{name:"Qrius",category:"social",domains:["*.qrius.me"]},{name:"Qualaroo",category:"analytics",domains:["*.qualaroo.com"],totalExecutionTime:54960,totalOccurrences:347},{name:"Qualtrics",category:"analytics",domains:["*.qualtrics.com"],totalExecutionTime:4907219,totalOccurrences:7134},{name:"Qubit",company:"Qubit",category:"analytics",domains:["*.qubit.com","*.qutics.com","d3c3cq33003psk.cloudfront.net","*.goqubit.com","*.qubitproducts.com"],totalExecutionTime:50060,totalOccurrences:43},{name:"Qubit Deliver",company:"Qubit",category:"analytics",domains:["d1m54pdnjzjnhe.cloudfront.net","d22rutvoghj3db.cloudfront.net","dd6zx4ibq538k.cloudfront.net"]},{name:"QuestionPro",category:"analytics",domains:["*.questionpro.com"],totalExecutionTime:60868,totalOccurrences:152},{name:"Queue-it",category:"other",domains:["*.queue-it.net"],totalExecutionTime:60031, +totalOccurrences:143},{name:"QuinStreet",category:"ad",domains:["*.Quinstreet.com","*.b2btechleadform.com","*.qnsr.com","*.qsstats.com"],examples:["www.qsstats.com"]},{name:"QuoVadis",category:"utility",domains:["*.quovadisglobal.com"]},{name:"Qzzr",category:"analytics",domains:["*.movementventures.com","*.qzzr.com"],examples:["www.qzzr.com"]},{name:"RapidAPI",category:"utility",domains:["*.rapidapi.com"],examples:["telize-v1.p.rapidapi.com"],totalExecutionTime:4218,totalOccurrences:2},{name:"RCS Media Group",category:"ad",domains:["*.rcsadv.it"]},{name:"REVIVVE",category:"ad",domains:["*.revivve.com"]},{name:"RSSinclude",category:"social",domains:["*.rssinclude.com"]},{name:"RTB House AdPilot",company:"RTB House",category:"ad",domains:["*.erne.co","*.creativecdn.com"],totalExecutionTime:1677125,totalOccurrences:13287},{name:"RTB Media",category:"ad",domains:["*.rtb-media.me"]},{name:"RUN",category:"ad",domains:["*.runadtag.com","*.rundsp.com"]},{name:"Rackspace",category:"hosting",domains:[ +"*.rackcdn.com","*.rackspacecloud.com","*.raxcdn.com","*.websitetestlink.com"],totalExecutionTime:3573460,totalOccurrences:2624},{name:"RadiumOne",category:"ad",domains:["*.gwallet.com","*.r1-cdn.net"]},{name:"Rakuten DC Storm",company:"Rakuten",category:"analytics",domains:["*.dc-storm.com","*.h4k5.com","*.stormiq.com"]},{name:"Rakuten LinkShare",company:"Rakuten",category:"ad",domains:["*.linksynergy.com"],totalExecutionTime:23285,totalOccurrences:151},{name:"Rakuten Marketing",company:"Rakuten",category:"ad",domains:["*.rakuten-static.com","*.rmtag.com","tag.rmp.rakuten.com"],totalExecutionTime:462276,totalOccurrences:3399},{name:"Rakuten MediaForge",company:"Rakuten",category:"ad",domains:["*.mediaforge.com"],totalExecutionTime:1650,totalOccurrences:20},{name:"Rambler",company:"Rambler & Co",category:"utility",domains:["*.rambler.ru"],totalExecutionTime:54521084,totalOccurrences:15831},{name:"Ranker",category:"content",domains:["*.ranker.com","*.rnkr-static.com"]},{name:"Ravelin",category:"\ +utility",domains:["*.ravelin.com"]},{name:"Raygun",category:"utility",domains:["*.raygun.io","*.rapidzebra.io"],totalExecutionTime:245714,totalOccurrences:2539},{name:"ReCollect",category:"utility",domains:["*.recollect.net"],totalExecutionTime:229879,totalOccurrences:135},{name:"ReSRC",category:"utility",domains:["*.resrc.it"]},{name:"ReTargeter",category:"ad",domains:["*.retargeter.com"]},{name:"Reach Group",category:"ad",domains:["*.redintelligence.net"],totalExecutionTime:1449,totalOccurrences:199},{name:"ReachDynamics",category:"ad",domains:["*.rdcdn.com"]},{name:"ReachForce",category:"ad",domains:["*.reachforce.com"]},{name:"ReachLocal",category:"ad",domains:["*.rtrk.co.nz"],examples:["rtsys.rtrk.co.nz"]},{name:"ReachMee",category:"content",domains:["*.reachmee.com"],totalExecutionTime:133135,totalOccurrences:40},{name:"Reactful",category:"analytics",domains:["*.reactful.com"],totalExecutionTime:12497,totalOccurrences:42},{name:"Realtime",company:"internet business technologies", +category:"utility",domains:["*.realtime.co"]},{name:"Realtime Media (Brian Communications)",category:"ad",domains:["*.rtm.com"]},{name:"Realtime Targeting",category:"ad",domains:["*.idtargeting.com"]},{name:"Realytics",category:"analytics",domains:["dcniko1cv0rz.cloudfront.net","*.realytics.net"],totalExecutionTime:38343,totalOccurrences:276},{name:"RebelMouse",category:"ad",domains:["*.rebelmouse.com","*.rbl.ms"],examples:["www.rebelmouse.com"],totalExecutionTime:3876,totalOccurrences:22},{name:"Receiptful",category:"utility",domains:["*.receiptful.com"],totalExecutionTime:58254,totalOccurrences:361},{name:"Recite Me",category:"other",domains:["*.reciteme.com"],totalExecutionTime:22320,totalOccurrences:142},{name:"RecoBell",category:"analytics",domains:["*.recobell.io"]},{name:"Recommend",category:"analytics",domains:["*.recommend.pro"]},{name:"Red Eye International",category:"ad",domains:["*.pajmc.com"]},{name:"Redfish Group",category:"ad",domains:["*.wmps.com"]},{name:"Reevoo",category:"\ +analytics",domains:["*.reevoo.com"],totalExecutionTime:87323,totalOccurrences:133},{name:"Refersion",category:"ad",domains:["*.refersion.com"],totalExecutionTime:564360,totalOccurrences:2170},{name:"Refined Ads",category:"ad",domains:["*.refinedads.com"]},{name:"Reflektion",category:"analytics",domains:["*.reflektion.com","d26opx5dl8t69i.cloudfront.net"]},{name:"Reflow",company:"Scenestealer",category:"ad",domains:["*.reflow.tv"]},{name:"Reklama",category:"ad",domains:["*.o2.pl","*.wp.pl"],examples:["dot.wp.pl","px.o2.pl","px.wp.pl"],totalExecutionTime:846563,totalOccurrences:1054},{name:"Relevad ReleStar",company:"Relevad",category:"ad",domains:["*.relestar.com"]},{name:"Remarketing Pixel",company:"Adsterra Network",category:"ad",domains:["*.datadbs.com","*.remarketingpixel.com"]},{name:"Remintrex",company:"SmartUp Venture",category:"ad",domains:["*.remintrex.com"]},{name:"Republer",category:"ad",domains:["*.republer.com"],examples:["sync.republer.com"]},{name:"Research Now",category:"\ +analytics",domains:["*.researchgnow.com","*.researchnow.com"],examples:["tag.researchgnow.com"]},{name:"Research Online",company:"Skills Development Scotland",category:"content",domains:["*.researchonline.org.uk"],examples:["www.researchonline.org.uk"]},{name:"Resonance Insights",category:"analytics",domains:["*.res-x.com"],totalExecutionTime:2277,totalOccurrences:20},{name:"Resonate Networks",category:"analytics",domains:["*.reson8.com"],totalExecutionTime:1739,totalOccurrences:1},{name:"Response Team",category:"ad",domains:["*.i-transactads.com"]},{name:"ResponseTap",category:"analytics",domains:["*.adinsight.com","*.responsetap.com"],totalExecutionTime:84074,totalOccurrences:274},{name:"ResponsiveVoice",category:"other",domains:["*.responsivevoice.org"],totalExecutionTime:851397,totalOccurrences:6863},{name:"Retention Science",category:"ad",domains:["*.retentionscience.com","d1stxfv94hrhia.cloudfront.net"],totalExecutionTime:17276,totalOccurrences:209},{name:"Revcontent",category:"c\ +ontent",domains:["*.revcontent.com"],totalExecutionTime:1153469,totalOccurrences:1251},{name:"Revee",category:"ad",domains:["*.revee.com"]},{name:"Revenue Conduit",category:"utility",domains:["*.revenueconduit.com"]},{name:"RevenueMantra",category:"ad",domains:["*.revenuemantra.com"]},{name:"Reviews.co.uk",category:"analytics",domains:["*.reviews.co.uk"],totalExecutionTime:425151,totalOccurrences:1883},{name:"Reviews.io",category:"analytics",domains:["*.reviews.io"],totalExecutionTime:1713955,totalOccurrences:4516},{name:"Revolver Maps",category:"analytics",domains:["*.revolvermaps.com"],totalExecutionTime:2132297,totalOccurrences:2305},{name:"Revv",category:"utility",domains:["*.revv.co"],totalExecutionTime:26667,totalOccurrences:11},{name:"RichRelevance",category:"analytics",domains:["*.richrelevance.com"],totalExecutionTime:3496,totalOccurrences:19},{name:"RightNow Service Cloud",company:"Oracle",category:"customer-success",domains:["*.rightnowtech.com","*.rnengage.com"],totalExecutionTime:8970, +totalOccurrences:122},{name:"Rightster",category:"ad",domains:["*.ads-creativesyndicator.com"]},{name:"Riskified",category:"utility",domains:["*.riskified.com"],totalExecutionTime:373865,totalOccurrences:1643},{name:"Rockerbox",category:"analytics",homepage:"https://www.rockerbox.com/",domains:["getrockerbox.com"],examples:["getrockerbox.com"],totalExecutionTime:19742,totalOccurrences:162},{name:"Rocket Fuel",category:"ad",domains:["*.rfihub.com","*.ru4.com","*.rfihub.net","*.ad1x.com"],totalExecutionTime:356189,totalOccurrences:3247},{name:"Rollbar",category:"utility",domains:["*.rollbar.com","d37gvrvc0wt4s1.cloudfront.net"],examples:["api.rollbar.com"],totalExecutionTime:190180,totalOccurrences:2349},{name:"RomanCart",category:"utility",domains:["*.romancart.com"],totalExecutionTime:510,totalOccurrences:5},{name:"Rondavu",category:"ad",domains:["*.rondavu.com"]},{name:"Roomkey",category:"content",domains:["*.roomkey.com"],examples:["www.roomkey.com"]},{name:"Roost",category:"utility", +domains:["*.goroost.com"]},{name:"Roxot",category:"ad",domains:["*.rxthdr.com"]},{name:"Roxr Software",category:"analytics",domains:["*.getclicky.com"],totalExecutionTime:851573,totalOccurrences:12877},{name:"Rtoaster",company:"Brainpad",homepage:"https://www.brainpad.co.jp/rtoaster/",category:"marketing",domains:["*.rtoaster.jp"],examples:["rt.rtoaster.jp"],totalExecutionTime:15065,totalOccurrences:91},{name:"Rubikloud.com",category:"analytics",domains:["*.rubikloud.com"]},{name:"Ruler Analytics",company:"Ruler",category:"analytics",domains:["*.nyltx.com","*.ruleranalytics.com"],examples:["www.ruleranalytics.com"],totalExecutionTime:41074,totalOccurrences:436},{name:"Runner",company:"Rambler & Co",category:"content",domains:["*.begun.ru"],totalExecutionTime:26,totalOccurrences:1},{name:"S4M",category:"ad",domains:["*.sam4m.com"]},{name:"SAP Hybris Marketing Convert",company:"SAP",category:"ad",domains:["*.seewhy.com"]},{name:"SAS Institute",category:"ad",domains:["*.aimatch.com","*.sa\ +s.com"],totalExecutionTime:59419,totalOccurrences:29},{name:"SATORI",homepage:"https://satori.marketing/",category:"marketing",domains:["satori.segs.jp"],examples:["satori.segs.jp/s.js"],totalExecutionTime:62202,totalOccurrences:816},{name:"SC ShopMania Net SRL",category:"content",domains:["*.shopmania.com"]},{name:"SDL Media Manager",company:"SDL",category:"other",domains:["*.sdlmedia.com"]},{name:"SFR",category:"other",domains:["*.sfr.fr"],examples:["elr.sfr.fr"],totalExecutionTime:22751,totalOccurrences:22},{name:"SLI Systems",category:"utility",domains:["*.resultslist.com","*.resultspage.com","*.sli-spark.com"],totalExecutionTime:2909,totalOccurrences:33},{name:"SMARTASSISTANT",company:"Smart Information Systems",category:"customer-success",domains:["*.smartassistant.com"]},{name:"SMARTSTREAM.TV",category:"ad",domains:["*.smartstream.tv"]},{name:"SPX",company:"Smaato",category:"ad",domains:["*.smaato.net"],totalExecutionTime:519,totalOccurrences:13},{name:"Sabio",category:"customer\ +-success",domains:["*.sabio.co.uk"],examples:["www.sabio.co.uk"]},{name:"Sailthru",category:"analytics",domains:["*.sail-horizon.com","*.sail-personalize.com","*.sail-track.com"],totalExecutionTime:59245,totalOccurrences:678},{name:"Sailthru Sightlines",company:"Sailthru",category:"marketing",domains:["*.sailthru.com"],totalExecutionTime:6772,totalOccurrences:18},{name:"Sajari Pty",category:"utility",domains:["*.sajari.com"],totalExecutionTime:70019,totalOccurrences:197},{name:"SaleCycle",category:"ad",domains:["*.salecycle.com","d16fk4ms6rqz1v.cloudfront.net","d22j4fzzszoii2.cloudfront.net","d30ke5tqu2tkyx.cloudfront.net","dn1i8v75r669j.cloudfront.net"],totalExecutionTime:146399,totalOccurrences:641},{name:"Salesforce Live Agent",company:"Salesforce.com",category:"customer-success",domains:["*.salesforceliveagent.com"],totalExecutionTime:100033,totalOccurrences:675},{name:"Salesforce.com",category:"ad",domains:["*.force.com","*.salesforce.com"],examples:["secure.force.com"],totalExecutionTime:1614051, +totalOccurrences:4970},{name:"Samba TV",company:"Samba",category:"content",domains:["*.samba.tv"],totalExecutionTime:1690,totalOccurrences:7},{name:"Samplicio.us",category:"analytics",domains:["*.samplicio.us"],totalExecutionTime:1727,totalOccurrences:5},{name:"Say Media",category:"ad",domains:["*.saymedia.com"]},{name:"Scenario",category:"analytics",domains:["*.getscenario.com"]},{name:"Schuh (image shard)",company:"Schuh",category:"other",domains:["d2ob0iztsaxy5v.cloudfront.net"]},{name:"Science Rockstars",category:"analytics",domains:["*.persuasionapi.com"]},{name:"ScientiaMobile",category:"analytics",domains:["*.wurflcloud.com","*.wurfl.io"],totalExecutionTime:627,totalOccurrences:3},{name:"Scoota",category:"ad",domains:["*.rockabox.co","*.scoota.co","d31i2625d5nv27.cloudfront.net","dyjnzf8evxrp2.cloudfront.net"]},{name:"ScribbleLive",category:"ad",domains:["*.scribblelive.com"]},{name:"SearchForce",category:"ad",domains:["*.searchforce.net"],totalExecutionTime:118,totalOccurrences:3}, +{name:"SearchSpring",category:"utility",domains:["*.searchspring.net"],totalExecutionTime:1175588,totalOccurrences:309},{name:"Searchanise",category:"analytics",domains:["*.searchanise.com"],examples:["www.searchanise.com"],totalExecutionTime:63519,totalOccurrences:420},{name:"Sears Holdings",category:"content",domains:["*.shld.net"]},{name:"Secomapp",category:"utility",domains:["*.secomapp.com"],totalExecutionTime:2151952,totalOccurrences:2137},{name:"SecuredVisit",company:"4Cite Marketing",category:"ad",domains:["*.securedvisit.com"],totalExecutionTime:41054,totalOccurrences:369},{name:"SecurityMetrics",category:"utility",domains:["*.securitymetrics.com"],totalExecutionTime:8413,totalOccurrences:2},{name:"Segmento",category:"ad",domains:["*.rutarget.ru"],totalExecutionTime:17111,totalOccurrences:226},{name:"Segmint",category:"analytics",domains:["*.segmint.net"],totalExecutionTime:14122,totalOccurrences:109},{name:"Sekindo",category:"content",domains:["*.sekindo.com"],totalExecutionTime:376, +totalOccurrences:4},{name:"Seldon",category:"analytics",domains:["*.rummblelabs.com"]},{name:"SelectMedia International",category:"content",domains:["*.selectmedia.asia"],totalExecutionTime:186574,totalOccurrences:68},{name:"Selligent",category:"ad",domains:["*.emsecure.net","*.slgnt.eu","targetemsecure.blob.core.windows.net"],totalExecutionTime:163886,totalOccurrences:506},{name:"Sellpoints",category:"analytics",domains:["*.sellpoints.com"]},{name:"Semantics3",category:"analytics",domains:["*.hits.io"]},{name:"Semasio",category:"analytics",domains:["*.semasio.net"]},{name:"Semcasting Site Visitor Attribution",company:"Semcasting",category:"ad",domains:["*.smartzonessva.com"]},{name:"Sentifi",category:"social",domains:["*.sentifi.com"]},{name:"ServMetric",category:"analytics",domains:["*.servmetric.com"]},{name:"ServiceSource International",category:"marketing",domains:["*.scoutanalytics.net"],examples:["scout.scoutanalytics.net"]},{name:"ServiceTick",category:"analytics",domains:["*.s\ +ervicetick.com"]},{name:"Servo",company:"Xervo",category:"hosting",domains:["*.onmodulus.net"]},{name:"SessionCam",company:"ServiceTick",category:"analytics",domains:["*.sessioncam.com","d2oh4tlt9mrke9.cloudfront.net"]},{name:"Seznam",category:"utility",domains:["*.imedia.cz"],totalExecutionTime:1323711,totalOccurrences:6863},{name:"Sharethrough",category:"ad",domains:["*.sharethrough.com"],totalExecutionTime:46730,totalOccurrences:833},{name:"SharpSpring",category:"marketing",domains:["*.sharpspring.com","*.marketingautomation.services"],totalExecutionTime:632191,totalOccurrences:2080},{name:"ShopRunner",category:"content",domains:["*.shoprunner.com","*.s-9.us"],totalExecutionTime:35573,totalOccurrences:32},{name:"ShopStorm",category:"utility",domains:["*.shopstorm.com"]},{name:"Shopatron",category:"hosting",domains:["*.shopatron.com"]},{name:"Shopgate",category:"utility",domains:["*.shopgate.com"],totalExecutionTime:15293,totalOccurrences:25},{name:"ShopiMind",company:"ShopIMind",category:"\ +ad",domains:["*.shopimind.com"]},{name:"Shopkeeper Tools",category:"utility",domains:["*.shopkeepertools.com"],totalExecutionTime:500,totalOccurrences:6},{name:"Sidecar",category:"other",domains:["*.getsidecar.com","d3v27wwd40f0xu.cloudfront.net"]},{name:"Sidereel",category:"analytics",domains:["*.sidereel.com"]},{name:"Sift Science",category:"utility",domains:["*.siftscience.com"],totalExecutionTime:90167,totalOccurrences:355},{name:"Signal",category:"tag-manager",domains:["*.sitetagger.co.uk"]},{name:"Signyfyd",category:"utility",domains:["*.signifyd.com"],totalExecutionTime:4752892,totalOccurrences:2608},{name:"Silktide",category:"hosting",domains:["*.silktide.com"],totalExecutionTime:132707,totalOccurrences:390},{name:"Silverpop",company:"IBM",category:"ad",domains:["*.mkt912.com","*.mkt922.com","*.mkt932.com","*.mkt941.com","*.mkt51.net","*.mkt61.net","*.pages01.net","*.pages02.net","*.pages03.net","*.pages04.net","*.pages05.net"],totalExecutionTime:4144,totalOccurrences:58},{name:"\ +Simplaex",category:"marketing",domains:["*.simplaex.net"]},{name:"SimpleReach",category:"analytics",domains:["*.simplereach.com","d8rk54i4mohrb.cloudfront.net"]},{name:"Simplestream",category:"content",domains:["*.simplestream.com"],examples:["player.simplestream.com"]},{name:"Simpli.fi",category:"ad",domains:["*.simpli.fi"],totalExecutionTime:974218,totalOccurrences:16378},{name:"Simplicity Marketing",category:"ad",domains:["*.flashtalking.com"],totalExecutionTime:579126,totalOccurrences:2927},{name:"SinnerSchrader Deutschland",category:"ad",domains:["*.s2Betrieb.de"]},{name:"Sirv",category:"other",domains:["*.sirv.com"],totalExecutionTime:604262,totalOccurrences:1034},{name:"Site Meter",category:"analytics",domains:["*.sitemeter.com"]},{name:"Site24x7 Real User Monitoring",company:"Site24x7",category:"analytics",domains:["*.site24x7rum.com"],totalExecutionTime:124283,totalOccurrences:1007},{name:"SiteGainer",category:"analytics",domains:["*.sitegainer.com","d191y0yd6d0jy4.cloudfront.\ +net"]},{name:"SiteScout",company:"Centro",category:"ad",domains:["*.pixel.ad","*.sitescout.com"],totalExecutionTime:256082,totalOccurrences:3401},{name:"Siteimprove",category:"utility",domains:["*.siteimprove.com","*.siteimproveanalytics.com"],totalExecutionTime:28494,totalOccurrences:361},{name:"Six Degrees Group",category:"hosting",domains:["*.fstech.co.uk"]},{name:"Skimbit",category:"ad",domains:["*.redirectingat.com","*.skimresources.com","*.skimresources.net"],totalExecutionTime:32940093,totalOccurrences:86270},{name:"Skimlinks",category:"ad",domains:["*.skimlinks.com"]},{name:"SkyGlue Technology",category:"analytics",domains:["*.skyglue.com"],totalExecutionTime:2567,totalOccurrences:24},{name:"SkyScanner",category:"content",domains:["*.skyscanner.net"],examples:["api.skyscanner.net"],totalExecutionTime:98147,totalOccurrences:370},{name:"Skybet",company:"Bonne Terre t/a Sky Vegas (Sky)",category:"other",domains:["*.skybet.com"]},{name:"Skype",category:"other",domains:["*.skype.com"], +totalExecutionTime:121901,totalOccurrences:625},{name:"Slate Group",category:"content",domains:["*.cdnslate.com"]},{name:"SlimCut Media Outstream",company:"SlimCut Media",category:"ad",domains:["*.freeskreen.com"]},{name:"Smart Insight Tracking",company:"Emarsys",category:"analytics",domains:["*.scarabresearch.com"],totalExecutionTime:361811,totalOccurrences:1779},{name:"Smart AdServer",category:"ad",domains:["*.01net.com","*.sascdn.com","*.sasqos.com","*.smartadserver.com"],examples:["securite.01net.com"],totalExecutionTime:22356737,totalOccurrences:107812},{name:"SmartFocus",category:"analytics",domains:["*.emv2.com","*.emv3.com","*.predictiveintent.com","*.smartfocus.com","*.themessagecloud.com"]},{name:"Smarter Click",category:"ad",domains:["*.smct.co","*.smarterclick.co.uk"],totalExecutionTime:761,totalOccurrences:11},{name:"SmarterHQ",category:"analytics",domains:["*.smarterhq.io","d1n00d49gkbray.cloudfront.net","*.smarterremarketer.net"],totalExecutionTime:2636,totalOccurrences:28}, +{name:"Smarttools",category:"customer-success",domains:["*.smartertrack.com"]},{name:"Smartzer",category:"ad",domains:["*.smartzer.com"]},{name:"Snack Media",category:"content",domains:["*.snack-media.com"],totalExecutionTime:575613,totalOccurrences:423},{name:"Snacktools",category:"ad",domains:["*.bannersnack.com"],totalExecutionTime:162327,totalOccurrences:303},{name:"SnapEngage",category:"customer-success",domains:["*.snapengage.com"],totalExecutionTime:147012,totalOccurrences:1038},{name:"SnapWidget",category:"content",domains:["*.snapwidget.com"]},{name:"Soasta",category:"analytics",domains:["*.lognormal.net"]},{name:"SociableLabs",category:"ad",domains:["*.sociablelabs.net","*.sociablelabs.com"]},{name:"Social Annex",category:"customer-success",domains:["*.socialannex.com"]},{name:"SocialShopWave",category:"social",domains:["*.socialshopwave.com"],totalExecutionTime:4962079,totalOccurrences:3720},{name:"Socialphotos",category:"social",domains:["*.slpht.com"],totalExecutionTime:12590, +totalOccurrences:120},{name:"Sociomantic Labs",company:"DunnHumby",category:"ad",domains:["*.sociomantic.com"]},{name:"SodaHead",category:"analytics",domains:["*.sodahead.com"],examples:["pollware-cdn.sodahead.com"]},{name:"Softwebzone",category:"hosting",domains:["*.softwebzone.com"],examples:["www.softwebzone.com"]},{name:"Sojern",category:"marketing",domains:["*.sojern.com"],totalExecutionTime:2086952,totalOccurrences:4422},{name:"Sokrati",category:"marketing",domains:["*.sokrati.com"]},{name:"Sonobi",category:"ad",domains:["*.sonobi.com"],totalExecutionTime:4682222,totalOccurrences:81682},{name:"Sooqr Search",company:"Sooqr",category:"utility",domains:["*.sooqr.com"],totalExecutionTime:176199,totalOccurrences:396},{name:"Sophus3",category:"analytics",domains:["*.s3ae.com","*.sophus3.com"],totalExecutionTime:5605,totalOccurrences:11},{name:"Sorenson Media",category:"content",domains:["*.sorensonmedia.com"]},{name:"Sortable",category:"ad",domains:["*.deployads.com"]},{name:"Sotic",category:"\ +hosting",domains:["*.sotic.net","*.soticservers.net"]},{name:"Soundest",category:"ad",domains:["*.soundestlink.com","*.soundest.net"],totalExecutionTime:835,totalOccurrences:102},{name:"Sourcepoint",category:"ad",domains:["*.decenthat.com","*.fallingfalcon.com","*.summerhamster.com","d2lv4zbk7v5f93.cloudfront.net","d3qxwzhswv93jk.cloudfront.net"],examples:["www.decenthat.com","www.fallingfalcon.com","www.summerhamster.com"]},{name:"SourceKnowledge",homepage:"https://www.sourceknowledge.com",category:"ad",domains:["*.provenpixel.com"],totalExecutionTime:505,totalOccurrences:8},{name:"SpaceNet",category:"hosting",domains:["*.nmm.de"]},{name:"Sparkflow",company:"Intercept Interactive",category:"ad",domains:["*.sparkflow.net"]},{name:"Specific Media",category:"ad",domains:["*.specificmedia.com","*.adviva.net","*.specificclick.net"]},{name:"Spicy",company:"Data-Centric Alliance",category:"ad",domains:["*.sspicy.ru"]},{name:"Spoke",category:"customer-success",domains:["*.121d8.com"]},{name:"\ +Spongecell",category:"ad",domains:["*.spongecell.com"]},{name:"Spot.IM",category:"social",domains:["*.spot.im","*.spotim.market"],totalExecutionTime:192547,totalOccurrences:342},{name:"SpotXchange",category:"ad",domains:["*.spotxcdn.com","*.spotxchange.com","*.spotx.tv"]},{name:"SpringServer",category:"ad",domains:["*.springserve.com"],totalExecutionTime:1192823,totalOccurrences:1432},{name:"Spylight",category:"other",domains:["*.spylight.com"]},{name:"SreamAMG",company:"StreamAMG",category:"other",domains:["*.streamamg.com"],totalExecutionTime:85506,totalOccurrences:62},{name:"StackAdapt",category:"ad",domains:["*.stackadapt.com"],totalExecutionTime:1338506,totalOccurrences:14912},{name:"StackExchange",category:"social",domains:["*.sstatic.net"],totalExecutionTime:187262,totalOccurrences:217},{name:"Stackla PTY",category:"social",domains:["*.stackla.com"],totalExecutionTime:271026,totalOccurrences:175},{name:"Stailamedia",category:"ad",domains:["*.stailamedia.com"]},{name:"Stamped.io", +category:"analytics",domains:["*.stamped.io"],totalExecutionTime:1665115,totalOccurrences:12460},{name:"Starfield Services Root Certificate Authority",company:"Starfield Technologies",category:"utility",domains:["*.starfieldtech.com","ss2.us","*.ss2.us"],examples:["ocsp.starfieldtech.com"],totalExecutionTime:18156,totalOccurrences:39},{name:"Starfield Technologies",category:"utility",domains:["*.websiteprotection.com"],examples:["seals.websiteprotection.com"]},{name:"StatCounter",category:"analytics",domains:["*.statcounter.com"],totalExecutionTime:5427381,totalOccurrences:50769},{name:"Statful",category:"analytics",domains:["*.statful.com"]},{name:"Steelhouse",category:"ad",domains:["*.steelhousemedia.com"],totalExecutionTime:66172,totalOccurrences:452},{name:"Steepto",category:"ad",domains:["*.steepto.com"],totalExecutionTime:170,totalOccurrences:1},{name:"StellaService",category:"analytics",domains:["*.stellaservice.com"]},{name:"StickyADS.tv",category:"ad",domains:["*.stickyadstv.c\ +om"],totalExecutionTime:2198555,totalOccurrences:1462},{name:"STINGRAY",company:"FlexOne",category:"ad",domains:["*.impact-ad.jp"],examples:["y.one.impact-ad.jp"],totalExecutionTime:1261721,totalOccurrences:9742},{name:"Storify",company:"Adobe Systems",category:"social",domains:["*.storify.com"]},{name:"Storm Tag Manager",company:"Rakuten",category:"tag-manager",domains:["*.stormcontainertag.com"]},{name:"Storygize",category:"ad",domains:["*.storygize.net"],examples:["www.storygize.net"],totalExecutionTime:60468,totalOccurrences:154},{name:"Strands",category:"utility",domains:["*.strands.com"]},{name:"StreamRail",category:"ad",domains:["*.streamrail.com","*.streamrail.net"]},{name:"StrikeAd",category:"ad",domains:["*.strikead.com"]},{name:"Struq",company:"Quantcast",category:"ad",domains:["*.struq.com"]},{name:"Ströer Digital Media",category:"ad",domains:["*.stroeerdigitalmedia.de"]},{name:"StumbleUpon",category:"content",domains:["*.stumble-upon.com","*.stumbleupon.com"],totalExecutionTime:18653, +totalOccurrences:17},{name:"Sub2 Technologies",category:"analytics",domains:["*.sub2tech.com"],totalExecutionTime:6667,totalOccurrences:31},{name:"SublimeSkinz",category:"ad",domains:["*.ayads.co"],totalExecutionTime:339456,totalOccurrences:772},{name:"Sumo Logic",category:"utility",domains:["*.sumologic.com"],totalExecutionTime:19322,totalOccurrences:9},{name:"Sunday Times Driving",category:"content",domains:["*.driving.co.uk"]},{name:"SundaySky",category:"ad",domains:["*.sundaysky.com","dds6m601du5ji.cloudfront.net"],totalExecutionTime:7435,totalOccurrences:10},{name:"Sunrise Integration",category:"utility",domains:["*.sunriseintegration.com"]},{name:"Supertool Network Technology",category:"analytics",domains:["*.miaozhen.com"],totalExecutionTime:6166,totalOccurrences:49},{name:"Survata",category:"analytics",domains:["*.survata.com"]},{name:"SurveyGizmo",category:"analytics",domains:["*.surveygizmo.eu"],examples:["www.surveygizmo.eu"]},{name:"SurveyMonkey",category:"analytics",domains:[ +"*.surveymonkey.com"],totalExecutionTime:28632,totalOccurrences:250},{name:"Survicate",category:"analytics",domains:["*.survicate.com"],totalExecutionTime:933283,totalOccurrences:3008},{name:"Sweet Tooth",category:"ad",domains:["*.sweettooth.io"],totalExecutionTime:2673,totalOccurrences:41},{name:"Swiftype",category:"utility",domains:["*.swiftype.com","*.swiftypecdn.com"],totalExecutionTime:383638,totalOccurrences:982},{name:"Switch Concepts",category:"ad",domains:["*.switchadhub.com"]},{name:"SwitchAds",company:"Switch Concepts",category:"ad",domains:["*.switchads.com"]},{name:"Swogo",category:"analytics",domains:["*.xsellapp.com"]},{name:"Swoop",category:"ad",domains:["*.swoop.com"],totalExecutionTime:13511,totalOccurrences:75},{name:"Symantec",category:"utility",domains:["*.norton.com","*.symantec.com","*.symcb.com","*.symcd.com"],examples:["extended-validation-ssl.websecurity.symantec.com"],totalExecutionTime:184600,totalOccurrences:363},{name:"Syncapse",category:"social",domains:[ +"*.clickable.net"]},{name:"Synergetic",category:"ad",domains:["*.synergetic.ag"]},{name:"Synthetix",category:"customer-success",domains:["*.syn-finity.com","*.synthetix-ec1.com","*.synthetix.com"],examples:["www.synthetix-ec1.com"],totalExecutionTime:6284,totalOccurrences:27},{name:"Syte",category:"other",domains:["*.syteapi.com"],examples:["cdn.syteapi.com"],totalExecutionTime:109749,totalOccurrences:106},{name:"TINT",category:"content",domains:["*.71n7.com","d33w9bm0n1egwm.cloudfront.net","d36hc0p18k1aoc.cloudfront.net","d3l7tj34e9fc43.cloudfront.net"],examples:["www.71n7.com"]},{name:"TNS (Kantar Group)",category:"analytics",domains:["*.tns-counter.ru"]},{name:"TRUSTe",category:"utility",domains:["*.truste.com"],totalExecutionTime:123425,totalOccurrences:613},{name:"TV Genius",company:"Ericcson Media Services",category:"content",domains:["*.tvgenius.net"]},{name:"TVSquared",category:"ad",domains:["*.tvsquared.com"],totalExecutionTime:548667,totalOccurrences:4082},{name:"TVTY",category:"\ +ad",domains:["*.distribeo.com","*.ogigl.com"]},{name:"Tactics bvba",category:"hosting",domains:["*.influid.co"]},{name:"Tag Inspector",company:"InfoTrust",category:"analytics",domains:["d22xmn10vbouk4.cloudfront.net"],totalExecutionTime:51386,totalOccurrences:171},{name:"TagCommander",category:"tag-manager",domains:["*.commander1.com","*.tagcommander.com"],totalExecutionTime:448164,totalOccurrences:1509},{name:"Tagboard",category:"social",domains:["*.tagboard.com"],totalExecutionTime:106499,totalOccurrences:49},{name:"Taggstar",company:"Taggstar UK",category:"ad",domains:["*.taggstar.com"],totalExecutionTime:16168,totalOccurrences:68},{name:"Tail Target",company:"Tail",category:"ad",domains:["*.tailtarget.com"],totalExecutionTime:176612,totalOccurrences:873},{name:"Tailored",category:"other",domains:["d24qm7bu56swjs.cloudfront.net","dw3vahmen1rfy.cloudfront.net","*.tailored.to"]},{name:"Taleo Enterprise Cloud Service",company:"Oracle",category:"content",domains:["*.taleo.net"],totalExecutionTime:4178, +totalOccurrences:68},{name:"Talkable",category:"ad",domains:["*.talkable.com","d2jjzw81hqbuqv.cloudfront.net"],examples:["www.talkable.com"],totalExecutionTime:154019,totalOccurrences:601},{name:"TapSense",category:"ad",domains:["*.tapsense.com"]},{name:"Tapad",category:"ad",domains:["*.tapad.com"],totalExecutionTime:976,totalOccurrences:54},{name:"Teads",category:"ad",domains:["*.teads.tv"],totalExecutionTime:2295585,totalOccurrences:7565},{name:"Team Internet Tonic",company:"Team Internet",category:"ad",domains:["*.dntrax.com"]},{name:"TechTarget",category:"content",domains:["*.techtarget.com","*.ttgtmedia.com"],totalExecutionTime:11857,totalOccurrences:24},{name:"Technorati",company:"Synacor",category:"ad",domains:["*.technoratimedia.com"],totalExecutionTime:5382653,totalOccurrences:27186},{name:"Teedhaze",category:"content",domains:["*.fuel451.com"]},{name:"Tell Apart",category:"analytics",domains:["*.tellapart.com","*.tellaparts.com"]},{name:"Tencent",category:"content",domains:["\ +*.qq.com","*.ywxi.net"],totalExecutionTime:2265040,totalOccurrences:8726},{name:"Thanx Media",category:"utility",domains:["*.hawksearch.info"]},{name:"Thawte",category:"utility",domains:["*.thawte.com"],examples:["ocsp.thawte.com","seal.thawte.com"],totalExecutionTime:307,totalOccurrences:1},{name:"Thesis",category:"analytics",homepage:"https://www.thesistesting.com/",domains:["*.ttsep.com"],examples:["thix.ttsep.com"]},{name:"The AA",category:"ad",domains:["*.adstheaa.com"]},{name:"The ADEX",category:"ad",domains:["*.theadex.com"],totalExecutionTime:13554,totalOccurrences:129},{name:"The Best Day",category:"social",domains:["*.thebestday.com"]},{name:"The Filter",company:"Exabre",category:"analytics",domains:["*.thefilter.com"]},{name:"The Guardian",category:"analytics",domains:["*.ophan.co.uk"]},{name:"The Hut Group",category:"content",domains:["*.thcdn.com"],totalExecutionTime:497181,totalOccurrences:281},{name:"The Numa Group",category:"other",domains:["*.hittail.com"]},{name:"The \ +Publisher Desk",category:"ad",domains:["*.206ads.com","*.publisherdesk.com"]},{name:"The Sydney Morning Herald",company:"Fairfax Media",category:"content",domains:["*.smh.com.au"]},{name:"The Wall Street Jounal",category:"content",domains:["*.wsj.net"],totalExecutionTime:3036,totalOccurrences:5},{name:"The Wall Street Journal",category:"content",domains:["*.marketwatch.com"]},{name:"TheFind",category:"content",domains:["*.thefind.com"]},{name:"Thinglink",category:"utility",domains:["*.thinglink.com"],totalExecutionTime:2987,totalOccurrences:53},{name:"Thirdpresence",category:"ad",domains:["*.thirdpresence.com"]},{name:"ThreatMetrix",category:"utility",domains:["*.online-metrix.net"],totalExecutionTime:1901757,totalOccurrences:3530},{name:"Throtle",homepage:"https://throtle.io/",category:"analytics",domains:["*.thrtle.com","*.v12group.com"]},{name:"TicketMaster",category:"content",domains:["*.t-x.io","*.tmcs.net"]},{name:"TikTok",company:"ByteDance Ltd",homepage:"https://www.tiktok.com/\ +en/",category:"social",domains:["*.tiktok.com","*.ipstatp.com"],examples:["analytics.tiktok.com","https://s0.ipstatp.com/ad/business/track-log.js"],totalExecutionTime:111182189,totalOccurrences:256224},{name:"Tidio Live Chat",company:"Tidio",homepage:"https://www.tidiochat.com/en/",category:"customer-success",domains:["*.tidiochat.com"],totalExecutionTime:26584634,totalOccurrences:24598},{name:"Tiledesk Live Chat",company:"Tiledesk SRL",homepage:"https://www.tiledesk.com/",category:"customer-success",domains:["*.tiledesk.com"],examples:["widget.tiledesk.com"],totalExecutionTime:253744,totalOccurrences:103},{name:"Time",category:"content",domains:["*.timeinc.net"]},{name:"Time2Perf",category:"ad",domains:["*.time2perf.com"]},{name:"TinyURL",category:"utility",domains:["*.tinyurl.com"]},{name:"Tivo",category:"analytics",domains:["*.rovicorp.com"]},{name:"Tom&Co",category:"hosting",domains:["*.tomandco.uk"]},{name:"Toms Native Ads",company:"Purch",category:"ad",domains:["*.natoms.com"]},{ +name:"ToneMedia",category:"ad",domains:["*.clickfuse.com"]},{name:"Tonic",company:"Team Internet",category:"ad",domains:["*.dntx.com"]},{name:"Touch Commerce",category:"customer-success",domains:["*.inq.com","*.touchcommerce.com"],totalExecutionTime:12673,totalOccurrences:74},{name:"ToutApp",category:"ad",domains:["*.toutapp.com"]},{name:"TraceView",company:"Solarwinds",category:"analytics",domains:["*.tracelytics.com","d2gfdmu30u15x7.cloudfront.net"]},{name:"TrackJS",category:"analytics",domains:["*.trackjs.com","d2zah9y47r7bi2.cloudfront.net"],examples:["usage.trackjs.com"],totalExecutionTime:2112335,totalOccurrences:2268},{name:"Tradedoubler",category:"ad",domains:["*.pvnsolutions.com","*.tradedoubler.com"],totalExecutionTime:31870,totalOccurrences:165},{name:"Tradelab",category:"ad",domains:["*.tradelab.fr"],totalExecutionTime:5013,totalOccurrences:44},{name:"TrafficFactory",category:"ad",domains:["*.trafficfactory.biz"]},{name:"TrafficHunt",category:"ad",domains:["*.traffichunt.co\ +m"]},{name:"TrafficStars",category:"ad",domains:["*.trafficstars.com","*.tsyndicate.com"],totalExecutionTime:3435101,totalOccurrences:7430},{name:"Transifex",category:"utility",domains:["*.transifex.com"],totalExecutionTime:193259,totalOccurrences:546},{name:"Travelex",category:"utility",domains:["*.travelex.net","*.travelex.co.uk"],examples:["api.travelex.net","travelmoney.travelex.co.uk"]},{name:"Travelocity Canada",company:"Travelocity",category:"content",domains:["*.travelocity.ca"],examples:["www.travelocity.ca"]},{name:"Travelocity USA",company:"Travelocity",category:"content",domains:["*.travelocity.com"],examples:["www.travelocity.com"]},{name:"Travelzoo",category:"content",domains:["*.travelzoo.com"]},{name:"Treasure Data",category:"analytics",domains:["*.treasuredata.com"],totalExecutionTime:1404314,totalOccurrences:14403},{name:"Tremor Video",category:"ad",domains:["*.tremorhub.com","*.videohub.tv"]},{name:"Trialfire",category:"analytics",domains:["*.trialfire.com"],totalExecutionTime:44579, +totalOccurrences:198},{name:"Tribal Fusion",company:"Exponential Interactive",category:"ad",domains:["*.tribalfusion.com"],totalExecutionTime:96569,totalOccurrences:158016},{name:"Triblio",category:"marketing",domains:["*.tribl.io"]},{name:"Triggered Messaging",company:"Fresh Relevance",category:"ad",domains:["*.triggeredmessaging.com"]},{name:"Trinity Mirror",category:"content",domains:["*.mirror.co.uk"],totalExecutionTime:13841,totalOccurrences:41},{name:"Trinity Mirror Digital Media",category:"social",domains:["*.tm-aws.com","*.icnetwork.co.uk"]},{name:"TripAdvisor",category:"content",domains:["*.jscache.com","*.tacdn.com","*.tamgrt.com","*.tripadvisor.com","*.viator.com","*.tripadvisor.co.uk"],examples:["www.jscache.com","www.tamgrt.com"],totalExecutionTime:749303,totalOccurrences:2354},{name:"TripleLift",category:"ad",domains:["*.3lift.com"],totalExecutionTime:8396,totalOccurrences:4812},{name:"Tru Optik",category:"ad",domains:["*.truoptik.com"]},{name:"TruConversion",category:"an\ +alytics",domains:["*.truconversion.com"],totalExecutionTime:487670,totalOccurrences:1008},{name:"Trueffect",category:"marketing",domains:["*.adlegend.com"]},{name:"Truefit",category:"analytics",domains:["*.truefitcorp.com"],examples:["cdn.truefitcorp.com","fitrec.truefitcorp.com","sch-cdn.truefitcorp.com"],totalExecutionTime:4647,totalOccurrences:20},{name:"Trust Guard",category:"utility",domains:["*.trust-guard.com"],totalExecutionTime:3346,totalOccurrences:35},{name:"Trust Pilot",category:"analytics",domains:["*.trustpilot.com"],totalExecutionTime:14795265,totalOccurrences:54942},{name:"Amazon Trust Services",company:"Amazon",category:"utility",domains:["*.amazontrust.com","o.ss2.us"],examples:["ocsp.rootca1.amazontrust.com"],totalExecutionTime:107,totalOccurrences:1},{name:"Google Trust Services",company:"Google",category:"utility",domains:["*.pki.goog"],examples:["ocsp.pki.goog"],totalExecutionTime:18,totalOccurrences:1},{name:"Let's Encrypt",homepage:"https://letsencrypt.org/",category:"\ +utility",domains:["*.letsencrypt.org"],examples:["ocsp.int-x3.letsencrypt.org"],totalExecutionTime:76,totalOccurrences:3},{name:"TrustX",category:"ad",domains:["*.trustx.org"]},{name:"Trusted Shops",category:"utility",domains:["*.trustedshops.com"],totalExecutionTime:7373870,totalOccurrences:17267},{name:"Trustev",company:"TransUnion",category:"utility",domains:["*.trustev.com"],totalExecutionTime:3272,totalOccurrences:22},{name:"Trustwave",category:"utility",domains:["*.trustwave.com"],totalExecutionTime:4600,totalOccurrences:7},{name:"Tryzens TradeState",company:"Tryzens",category:"analytics",domains:["*.tryzens-analytics.com"],totalExecutionTime:969,totalOccurrences:9},{name:"TubeMogul",category:"ad",domains:["*.tubemogul.com"],totalExecutionTime:24151,totalOccurrences:51},{name:"Turn",category:"ad",domains:["*.turn.com"],totalExecutionTime:4802,totalOccurrences:72},{name:"Tutorialize",category:"customer-success",domains:["*.tutorialize.me"]},{name:"Twenga",category:"content",domains:[ +"*.twenga.fr","*.c4tw.net","*.twenga.co.uk"],examples:["tracker.twenga.co.uk"]},{name:"Twitframe",company:"Superblock",category:"utility",domains:["*.twitframe.com"]},{name:"Twitter Online Conversion Tracking",company:"Twitter",category:"ad",domains:["*.ads-twitter.com","analytics.twitter.com"],examples:["static.ads-twitter.com"],totalExecutionTime:6170585,totalOccurrences:73452},{name:"Twitter Short URL",company:"Twitter",category:"social",domains:["*.t.co"]},{name:"Twyn Group",category:"ad",domains:["*.twyn.com"]},{name:"Tynt",company:"33 Across",category:"ad",domains:["*.tynt.com"],totalExecutionTime:41643525,totalOccurrences:212415},{name:"Typepad",category:"hosting",domains:["*.typepad.com"],totalExecutionTime:834082,totalOccurrences:813},{name:"TyrbooBytes",category:"utility",domains:["*.turbobytes.net"]},{name:"UPS i-parcel",company:"UPS",category:"other",domains:["*.i-parcel.com"]},{name:"US Media Consulting",category:"ad",domains:["*.mediade.sk"]},{name:"Ubertags",category:"ta\ +g-manager",domains:["*.ubertags.com"]},{name:"Umbel",category:"analytics",domains:["*.umbel.com"]},{name:"Unanimis",company:"Switch",category:"ad",domains:["*.unanimis.co.uk"]},{name:"Unbounce",category:"ad",domains:["*.ubembed.com","*.unbounce.com","d2xxq4ijfwetlm.cloudfront.net","d9hhrg4mnvzow.cloudfront.net"],totalExecutionTime:2902422,totalOccurrences:8808},{name:"Underdog Media",category:"ad",domains:["*.underdog.media","*.udmserve.net"],totalExecutionTime:524141,totalOccurrences:289},{name:"Understand Digital",category:"ad",domains:["*.redirecting2.net"]},{name:"Undertone",company:"Perion",category:"ad",domains:["*.legolas-media.com"],examples:["rt.legolas-media.com"]},{name:"Unidays",category:"ad",domains:["*.myunidays.com","*.unidays.world"]},{name:"Uniqodo",category:"ad",domains:["*.uniqodo.com"]},{name:"Unite",category:"ad",domains:["*.uadx.com"]},{name:"United Card Services",category:"utility",domains:["*.ucs.su"]},{name:"United Internet",category:"hosting",domains:["*.uicdn\ +.com"],totalExecutionTime:14225,totalOccurrences:75},{name:"United Internet Media",category:"ad",domains:["*.ui-portal.de"],totalExecutionTime:20307,totalOccurrences:59},{name:"United Internet Media AG",category:"hosting",domains:["*.tifbs.net","*.uicdn.net","*.uimserv.net"],totalExecutionTime:1737,totalOccurrences:48},{name:"Unknown",category:"other",domains:[]},{name:"Unruly Media",category:"ad",domains:["*.unrulymedia.com"],totalExecutionTime:679,totalOccurrences:1789},{name:"UpBuild",category:"ad",domains:["*.upbuild.io"],examples:["www.upbuild.io"]},{name:"UpSellit",category:"analytics",domains:["*.upsellit.com"],examples:["www.upsellit.com"],totalExecutionTime:289920,totalOccurrences:1013},{name:"Upland Software",category:"hosting",domains:["*.clickability.com"]},{name:"Airship",category:"marketing",domains:["*.urbanairship.com","*.aswpsdkus.com"],totalExecutionTime:4666,totalOccurrences:37},{name:"UsabilityTools",category:"analytics",domains:["*.usabilitytools.com"]},{name:"Usab\ +lenet.net",category:"utility",domains:["*.usablenet.net"]},{name:"Use It Better",category:"analytics",domains:["*.useitbetter.com"]},{name:"User Replay",category:"analytics",domains:["*.userreplay.net"]},{name:"UserReport",category:"analytics",domains:["*.userreport.com"],totalExecutionTime:133479,totalOccurrences:476},{name:"Userneeds",category:"analytics",domains:["*.userneeds.dk"]},{name:"Userzoom",category:"analytics",domains:["*.userzoom.com"],totalExecutionTime:5093,totalOccurrences:4},{name:"V12 Retail Finance",category:"utility",domains:["*.v12finance.com"]},{name:"Vacaciones eDreams",category:"content",domains:["*.odistatic.net"]},{name:"Varick Media Management",category:"ad",domains:["*.vmmpxl.com"]},{name:"Vdopia Chocolate",company:"Vdopia",category:"ad",domains:["*.vdopia.com"]},{name:"Ve",company:"Ve",homepage:"https://www.ve.com/",category:"marketing",domains:["*.veinteractive.com","*.ve.com"]},{name:"Ve Interactive",company:"Ve",category:"ad",domains:["*.vepxl1.net","*.a\ +dgenie.co.uk"]},{name:"Vee24",category:"customer-success",domains:["*.vee24.com"],totalExecutionTime:20941,totalOccurrences:38},{name:"Veeseo",category:"content",domains:["*.veeseo.com"]},{name:"Venatus Media",category:"marketing",domains:["*.alcvid.com","*.venatusmedia.com"]},{name:"Veoxa",category:"ad",domains:["*.veoxa.com"]},{name:"Vergic AB",category:"customer-success",domains:["*.psplugin.com"],totalExecutionTime:48232,totalOccurrences:71},{name:"Vergic Engage Platform",company:"Vergic",category:"customer-success",domains:["*.vergic.com"],totalExecutionTime:41524,totalOccurrences:57},{name:"Verisign (Symantec)",category:"utility",domains:["*.verisign.com"]},{name:"Verizon",category:"utility",domains:["*.public-trust.com"],examples:["www.public-trust.com"]},{name:"Verizon Digital Media CDN",homepage:"https://www.verizondigitalmedia.com/",category:"cdn",domains:["*.edgecastcdn.net","*.edgecastdns.net"],totalExecutionTime:98698,totalOccurrences:108},{name:"Verizon Uplynk",company:"V\ +erizon",category:"content",domains:["*.uplynk.com"],totalExecutionTime:572,totalOccurrences:4},{name:"Vero",company:"Semblance",category:"ad",domains:["*.getvero.com","d3qxef4rp70elm.cloudfront.net"],totalExecutionTime:613,totalOccurrences:10},{name:"VertaMedia",category:"ad",domains:["*.vertamedia.com"]},{name:"Vertical Mass",category:"ad",domains:["*.vmweb.net"]},{name:"Vestorly",category:"ad",domains:["*.oodalab.com"]},{name:"Vextras",category:"other",domains:["*.vextras.com"],totalExecutionTime:4484,totalOccurrences:42},{name:"Viacom",category:"content",domains:["*.mtvnservices.com"],totalExecutionTime:15501,totalOccurrences:44},{name:"Vibrant Media",category:"ad",domains:["*.intellitxt.com","*.picadmedia.com"]},{name:"VidPulse",category:"analytics",domains:["*.vidpulse.com"]},{name:"Video Media Groep",category:"ad",domains:["*.vmg.host","*.inpagevideo.nl"]},{name:"VideoHub",company:"Tremor Video",category:"ad",domains:["*.scanscout.com"],examples:["dt.scanscout.com"]},{name:"Video\ +logy",category:"ad",domains:["*.tidaltv.com"]},{name:"Vidible",category:"ad",domains:["*.vidible.tv"]},{name:"VigLink",category:"ad",domains:["*.viglink.com"],totalExecutionTime:3670311,totalOccurrences:6219},{name:"Vindico",company:"Viant",category:"ad",domains:["*.vindicosuite.com"]},{name:"Viocorp International",category:"content",domains:["*.vioapi.com"]},{name:"ViralNinjas",category:"ad",domains:["*.viralninjas.com"]},{name:"Virool",category:"ad",domains:["*.virool.com"]},{name:"Virtual Earth",company:"Microsoft",category:"utility",domains:["*.virtualearth.net"],totalExecutionTime:54315,totalOccurrences:312},{name:"Visely",company:"Visely",category:"other",homepage:"https://visely.io/",domains:["*.visely.io"]},{name:"VisScore",category:"analytics",domains:["*.visscore.com","d2hkbi3gan6yg6.cloudfront.net"]},{name:"Visible Measures",category:"ad",domains:["*.visiblemeasures.com"],totalExecutionTime:11,totalOccurrences:13},{name:"Visual Studio",company:"Microsoft",category:"utility", +domains:["*.visualstudio.com"],totalExecutionTime:3464,totalOccurrences:3},{name:"VisualDNA",category:"ad",domains:["*.visualdna.com"]},{name:"VisualVisitor",category:"ad",domains:["*.id-visitors.com"],examples:["frontend.id-visitors.com"],totalExecutionTime:871,totalOccurrences:14},{name:"Vivocha S.p.A",category:"customer-success",domains:["*.vivocha.com"],totalExecutionTime:65471,totalOccurrences:38},{name:"Vizu (Nielsen)",category:"analytics",domains:["*.vizu.com"]},{name:"Vizury",category:"ad",domains:["*.vizury.com"],totalExecutionTime:1296,totalOccurrences:20},{name:"VoiceFive",category:"analytics",domains:["*.voicefive.com"]},{name:"Volvelle",company:"Optomaton",category:"ad",domains:["*.volvelle.tech"]},{name:"VouchedFor",category:"analytics",domains:["*.vouchedfor.co.uk"],totalExecutionTime:30557,totalOccurrences:18},{name:"WARPCACHE",category:"utility",domains:["*.warpcache.net"]},{name:"WISHLIST",company:"Shopapps",category:"social",domains:["*.shopapps.in"]},{name:"WP Engin\ +e",category:"hosting",domains:["*.wpengine.com"],totalExecutionTime:651034,totalOccurrences:341},{name:"WalkMe",category:"customer-success",domains:["*.walkme.com"],totalExecutionTime:636459,totalOccurrences:495},{name:"Watching That",category:"other",domains:["*.watchingthat.com"]},{name:"Wayfair",category:"analytics",domains:["*.wayfair.com"],examples:["t.wayfair.com"]},{name:"Web CEO",category:"other",domains:["*.websiteceo.com"],examples:["www.websiteceo.com"]},{name:"Web Dissector",company:"Beijing Gridsum Technologies",category:"analytics",domains:["*.gridsumdissector.com","*.webdissector.com"],examples:["www.webdissector.com"]},{name:"Web Forensics",category:"analytics",domains:["*.webforensics.co.uk"]},{name:"Web Security and Performance",company:"NCC Group",category:"utility",domains:["*.nccgroup.trust"]},{name:"WebEngage",category:"customer-success",domains:["*.webengage.co","*.webengage.com","d23nd6ymopvz52.cloudfront.net","d3701cc9l7v9a6.cloudfront.net"],totalExecutionTime:789975, +totalOccurrences:2283},{name:"WebInsight",company:"dotMailer",category:"analytics",domains:["*.trackedlink.net","*.trackedweb.net"],totalExecutionTime:21241,totalOccurrences:277},{name:"WebPageOne Solutions",category:"other",domains:["*.webpageone.com"]},{name:"WebSpectator",category:"ad",domains:["*.webspectator.com"]},{name:"WebTuna",company:"Application Performance",category:"analytics",domains:["*.webtuna.com"]},{name:"WebVideoCore",company:"StreamingVideoProvider",category:"content",domains:["*.webvideocore.net"],totalExecutionTime:74152,totalOccurrences:38},{name:"WebWombat",category:"utility",domains:["*.ic.com.au"]},{name:"Webcollage",category:"customer-success",domains:["*.webcollage.net"]},{name:"Webcore",category:"ad",domains:["*.onefeed.co.uk"]},{name:"Webkul",company:"Webkul Software",category:"utility",domains:["*.webkul.com"],totalExecutionTime:172788,totalOccurrences:490},{name:"Webmarked",category:"utility",domains:["*.webmarked.net"],totalExecutionTime:72467,totalOccurrences:1077}, +{name:"Weborama",category:"ad",domains:["*.weborama.com","*.weborama.fr"],totalExecutionTime:45883,totalOccurrences:372},{name:"WebpageFX",category:"ad",domains:["*.leadmanagerfx.com"],totalExecutionTime:241118,totalOccurrences:946},{name:"Webphone",company:"IP WEB SERVICES",category:"customer-success",domains:["*.webphone.net"],totalExecutionTime:4605,totalOccurrences:20},{name:"Webselect selectcommerce",company:"Webselect Internet",category:"hosting",domains:["*.webselect.net"]},{name:"Webthinking",category:"hosting",domains:["*.webthinking.co.uk"]},{name:"Webtrekk",category:"analytics",domains:["*.wbtrk.net","*.webtrekk-asia.net","*.webtrekk.net","*.wt-eu02.net","*.wt-safetag.com"],totalExecutionTime:85572,totalOccurrences:428},{name:"Webtrends",category:"analytics",domains:["*.webtrends.com","*.webtrendslive.com","d1q62gfb8siqnm.cloudfront.net"],totalExecutionTime:1437,totalOccurrences:6},{name:"Webtype",category:"cdn",domains:["*.webtype.com"],totalExecutionTime:0,totalOccurrences:1}, +{name:"White Ops",category:"utility",domains:["*.acexedge.com","*.tagsrvcs.com"]},{name:"Whitespace",category:"ad",domains:["*.whitespacers.com"]},{name:"WhosOn Live Chat Software",category:"customer-success",domains:["*.whoson.com"],totalExecutionTime:20753,totalOccurrences:112},{name:"Wibbitz",category:"other",domains:["*.wibbitz.com"]},{name:"Wide Area Communications",category:"hosting",domains:["*.widearea.co.uk"]},{name:"WideOrbit",category:"marketing",domains:["*.admaym.com"]},{name:"William Reed",category:"content",domains:["*.wrbm.com"],totalExecutionTime:50,totalOccurrences:1},{name:"WillyFogg.com",category:"content",domains:["*.willyfogg.com"]},{name:"Windows",company:"Microsoft",category:"utility",domains:["*.windowsupdate.com"],examples:["ctldl.windowsupdate.com"]},{name:"WisePops",category:"utility",domains:["*.wisepops.com"],totalExecutionTime:2631328,totalOccurrences:1950},{name:"Wishlist King",company:"Appmate",category:"other",homepage:"https://appmate.io/",domains:["*\ +.appmate.io"],examples:["api.appmate.io"],totalExecutionTime:130543,totalOccurrences:235},{name:"Wishpond Technologies",category:"marketing",domains:["*.wishpond.com","*.wishpond.net"],totalExecutionTime:771888,totalOccurrences:1691},{name:"WizRocket Technologies",category:"analytics",domains:["*.wzrkt.com"],totalExecutionTime:138,totalOccurrences:2},{name:"Woopra",category:"analytics",domains:["*.woopra.com"],totalExecutionTime:120767,totalOccurrences:1366},{name:"Woosmap",category:"utility",domains:["*.woosmap.com"],totalExecutionTime:58710,totalOccurrences:139},{name:"WorkCast",category:"hosting",domains:["*.workcast.net"]},{name:"World News Media",category:"content",domains:["*.wnmedia.co.uk"]},{name:"Worldpay",category:"utility",domains:["*.worldpay.com"],totalExecutionTime:25852,totalOccurrences:18},{name:"Wow Analytics",category:"analytics",domains:["*.wowanalytics.co.uk"],totalExecutionTime:11162,totalOccurrences:73},{name:"Wowcher",category:"ad",domains:["*.wowcher.co.uk"]},{name:"\ +Wufoo",category:"utility",domains:["*.wufoo.com"],totalExecutionTime:381206,totalOccurrences:1507},{name:"Wunderkind",category:"marketing",homepage:"https://www.wunderkind.co/",domains:["*.bounceexchange.com","*.bouncex.net","*.wknd.ai","*.cdnbasket.net","*.cdnwidget.com"],examples:["events.bouncex.net","tag.wknd.ai","data.cdnbasket.net","pix.cdnwidget.com"],totalExecutionTime:2016506,totalOccurrences:1278},{name:"Wyng",category:"ad",domains:["*.offerpop.com"]},{name:"XMLSHOP",category:"hosting",domains:["*.xmlshop.biz"]},{name:"XiTi",company:"AT Internet",category:"analytics",domains:["*.xiti.com","*.aticdn.net"],homepage:"https://www.atinternet.com/en/",examples:["tag.aticdn.net/123456789/smarttag.js"],totalExecutionTime:918257,totalOccurrences:8483},{name:"YUDU",category:"content",domains:["*.yudu.com"]},{name:"Yahoo! Ad Exchange",company:"Yahoo!",category:"ad",domains:["*.yieldmanager.com","*.browsiprod.com"],examples:["yield-manager.browsiprod.com"],totalExecutionTime:12720569,totalOccurrences:4994}, +{name:"Yahoo! JAPAN Ads",company:"Yahoo! JAPAN",category:"ad",homepage:"https://marketing.yahoo.co.jp/service/yahooads/",domains:["yads.c.yimg.jp","s.yimg.jp","b92.yahoo.co.jp"],examples:["yads.c.yimg.jp/js/yads-async.js","s.yimg.jp/images/listing/tool/yads/ydn/creative/video/ytop_video_timeline_sp.min.js","b92.yahoo.co.jp/js/s_retargeting.js"],totalExecutionTime:6236624,totalOccurrences:37464},{name:"Yahoo! Tag Manager",company:"Yahoo! JAPAN",category:"tag-manager",homepage:"https://marketing.yahoo.co.jp/service/tagmanager/",domains:["*.yjtag.jp"],examples:["s.yjtag.jp/tag.js"]},{name:"Yahoo! Small Business",company:"Yahoo!",category:"hosting",domains:["*.aabacosmallbusiness.com"]},{name:"Yellow Robot",category:"ad",domains:["*.backinstock.org"],totalExecutionTime:15268,totalOccurrences:508},{name:"YieldPartners",category:"ad",domains:["*.yieldpartners.com"]},{name:"Yieldbot",category:"ad",domains:["*.yldbt.com"]},{name:"Yieldify",category:"ad",domains:["*.yieldify.com","*.yieldifylab\ +s.com","d33wq5gej88ld6.cloudfront.net","dwmvwp56lzq5t.cloudfront.net"],examples:["geo.yieldifylabs.com"],totalExecutionTime:513761,totalOccurrences:168},{name:"Yieldlab",category:"ad",domains:["*.yieldlab.net"],totalExecutionTime:54,totalOccurrences:8},{name:"Yieldmo",category:"ad",domains:["*.yieldmo.com"],totalExecutionTime:51128,totalOccurrences:2375},{name:"Yieldr",category:"ad",domains:["*.254a.com"]},{name:"Yo",category:"utility",domains:["*.yopify.com"]},{name:"YoYo",category:"utility",domains:["*.goadservices.com"]},{name:"Yotpo",homepage:"https://www.yotpo.com/",category:"marketing",domains:["*.yotpo.com","*.swellrewards.com"],totalExecutionTime:16919447,totalOccurrences:26094},{name:"Yottaa",category:"hosting",domains:["*.yottaa.com","*.yottaa.net"],totalExecutionTime:798791,totalOccurrences:753},{name:"YourAmigo",category:"utility",domains:["*.youramigo.com"]},{name:"YuMe",category:"ad",domains:["*.yume.com","*.yumenetworks.com"],examples:["cks.yumenetworks.com"]},{name:"Yum\ +mley",category:"other",domains:["*.yummly.com"],totalExecutionTime:14163,totalOccurrences:6},{name:"ZEDO",category:"ad",domains:["*.zedo.com"]},{name:"Zafu",category:"analytics",domains:["*.zafu.com"]},{name:"Zaius",category:"ad",domains:["*.zaius.com"]},{name:"Zamplus ad",category:"ad",domains:["*.zampda.net"]},{name:"Zanox",category:"ad",domains:["*.zanox.com","*.zanox.ws"]},{name:"Zapper",category:"utility",domains:["*.zapper.com"]},{name:"Zarget",category:"analytics",domains:["*.zarget.com"]},{name:"Zemanta",category:"ad",domains:["*.zemanta.com"],totalExecutionTime:2735,totalOccurrences:28},{name:"Zen Internet",category:"other",domains:["*.zyen.com"]},{name:"Zenovia Digital Exchange",category:"ad",domains:["*.rhythmxchange.com","*.zenoviaexchange.com"]},{name:"ZergNet",category:"content",domains:["*.zergnet.com"],totalExecutionTime:186,totalOccurrences:4},{name:"Zerogrey",category:"hosting",domains:["*.zerogrey.com"]},{name:"Ziff Davis Tech",category:"ad",domains:["*.adziff.com","\ +*.zdbb.net"],totalExecutionTime:30706,totalOccurrences:93},{name:"Zmags",category:"marketing",domains:["*.zmags.com"],totalExecutionTime:262514,totalOccurrences:119},{name:"Zolando",category:"content",domains:["*.ztat.net"],totalExecutionTime:229623,totalOccurrences:48},{name:"Zoover",category:"analytics",domains:["*.zoover.nl","*.zoover.co.uk"],totalExecutionTime:9173,totalOccurrences:2},{name:"Zopim",category:"customer-success",domains:["*.zopim.io"]},{name:"[24]7",category:"customer-success",domains:["*.247-inc.net","*.247inc.net","d1af033869koo7.cloudfront.net"],totalExecutionTime:24965,totalOccurrences:20},{name:"adKernel",category:"ad",domains:["*.adkernel.com"],totalExecutionTime:19140,totalOccurrences:9621},{name:"adMarketplace",company:"AMPexchange",category:"ad",domains:["*.ampxchange.com","*.admarketplace.net"]},{name:"addtocalendar",category:"utility",domains:["*.addtocalendar.com"]},{name:"adnanny",category:"ad",domains:["*.adserver01.de"],totalExecutionTime:2,totalOccurrences:6}, +{name:"affilinet",category:"ad",domains:["*.reussissonsensemble.fr","*.successfultogether.co.uk"]},{name:"audioBoom",category:"social",domains:["*.audioboom.com","*.audioboo.fm"],totalExecutionTime:136729,totalOccurrences:57},{name:"bPay by Barclaycard",company:"Barclays Bank",category:"utility",domains:["*.bpay.co.uk"]},{name:"bRealTime",category:"ad",domains:["*.brealtime.com"],totalExecutionTime:4479,totalOccurrences:76},{name:"bd4travel",category:"analytics",domains:["*.bd4travel.com"]},{name:"bizinformation-VOID",company:"bizinformation",category:"analytics",domains:["*.bizinformation.org"]},{name:"carrot",category:"social",domains:["*.sharebutton.co"]},{name:"cloudIQ",category:"analytics",domains:["*.cloud-iq.com"]},{name:"comScore",category:"analytics",domains:["*.adxpose.com","*.comscore.com","*.sitestat.com","*.zqtk.net"],totalExecutionTime:4938,totalOccurrences:3},{name:"content.ad",category:"ad",domains:["*.content.ad"]},{name:"d3 Media",company:"d3 Technologies",category:"o\ +ther",domains:["*.d3sv.net"]},{name:"dexiMEDIA",category:"ad",domains:["*.deximedia.com"]},{name:"dianomi",category:"ad",domains:["*.dianomi.com","*.dianomioffers.co.uk"],totalExecutionTime:52461,totalOccurrences:86},{name:"donReach",category:"social",domains:["*.donreach.com"]},{name:"dotMailer",category:"ad",domains:["*.dmtrk.com","*.dotmailer.com","*.emlfiles.com"]},{name:"dotMailer Surveys",company:"dotMailer",category:"analytics",domains:["*.dotmailer-surveys.com"]},{name:"dstillery",category:"ad",domains:["*.dstillery.com","*.media6degrees.com"],totalExecutionTime:1160,totalOccurrences:12},{name:"eBay",category:"ad",domains:["*.ebay.com","*.ebayimg.com","*.fetchback.com"],totalExecutionTime:600826,totalOccurrences:1026},{name:"eBay Enterprise",category:"hosting",domains:["*.csdata1.com","*.gsipartners.com"]},{name:"eBuzzing",company:"Teads Managed Services",category:"ad",domains:["*.ebz.io"]},{name:"eDigital Research",category:"customer-success",domains:["*.edigitalresearch.com", +"*.edigitalsurvey.com","*.edrcdn.com","*.ecustomeropinions.com"]},{name:"eGain",category:"analytics",domains:["*.analytics-egain.com","*.egain.com"],totalExecutionTime:8418,totalOccurrences:74},{name:"eHost",category:"hosting",domains:["*.ehosts.net"]},{name:"eKomi",category:"analytics",domains:["*.ekomi.com","*.ekomi.de"],totalExecutionTime:51192,totalOccurrences:17},{name:"eWAY",company:"Web Active Pty",category:"utility",domains:["*.eway.com.au"],examples:["www.eway.com.au"],totalExecutionTime:11094,totalOccurrences:1},{name:"eXTReMe digital",category:"analytics",domains:["*.extreme-dm.com"],totalExecutionTime:3491,totalOccurrences:78},{name:"eXelate",category:"ad",domains:["*.exelator.com"],totalExecutionTime:17905,totalOccurrences:246},{name:"ecommercefeed.net",category:"marketing",domains:["*.ecommercefeed.net"]},{name:"engage:BDR",category:"ad",domains:["*.bnmla.com","*.ebdr3.com"]},{name:"epago",category:"ad",domains:["*.adaos-ads.net"]},{name:"epoq internet services",category:"\ +analytics",domains:["*.epoq.de"],totalExecutionTime:84260,totalOccurrences:122},{name:"etouches",category:"hosting",domains:["*.etouches.com"],examples:["www.etouches.com"]},{name:"etracker",category:"analytics",domains:["*.etracker.com","*.etracker.de"],examples:["www.etracker.com"],totalExecutionTime:2076262,totalOccurrences:5626},{name:"everestads.com",category:"content",domains:["*.verestads.net"]},{name:"exebid.DCA",company:"Data-Centric Alliance",category:"ad",domains:["*.exe.bid"]},{name:"eyeReturn Marketing",category:"marketing",domains:["*.eyereturn.com"]},{name:"feedoptimise",category:"hosting",domains:["*.feedoptimise.com","d1w78njrm56n7g.cloudfront.net"],totalExecutionTime:126,totalOccurrences:2},{name:"fifty-five",category:"ad",domains:["*.55labs.com"]},{name:"fluct",category:"ad",domains:["*.adingo.jp"],totalExecutionTime:5114249,totalOccurrences:12890},{name:"freegeoip.net",company:"(community-funded)",category:"utility",domains:["*.freegeoip.net"]},{name:"freewheel.tv", +category:"content",domains:["*.fwmrm.net"],totalExecutionTime:3847,totalOccurrences:42},{name:"gnatta",category:"customer-success",domains:["*.gnatta.com"]},{name:"home.pl",category:"hosting",domains:["*.nscontext.eu"]},{name:"hyfn",category:"ad",domains:["*.hyfn.com"]},{name:"iAdvize SAS",category:"customer-success",domains:["*.iadvize.com"],totalExecutionTime:286995,totalOccurrences:844},{name:"iBillboard",category:"ad",domains:["*.ibillboard.com"],totalExecutionTime:303,totalOccurrences:2},{name:"iCrossing",category:"ad",domains:["*.ic-live.com"]},{name:"iFactory",company:"RDW Group",category:"hosting",domains:["*.ifactory.com"]},{name:"iGoDigital",category:"analytics",domains:["*.igodigital.com"],totalExecutionTime:1800,totalOccurrences:21},{name:"iJento",company:"Fopsha",category:"ad",domains:["*.ijento.com"]},{name:"iPage",category:"hosting",domains:["*.ipage.com"],examples:["www.ipage.com"],totalExecutionTime:490,totalOccurrences:6},{name:"iPerceptions",category:"customer-succes\ +s",domains:["*.iperceptions.com"],totalExecutionTime:626044,totalOccurrences:4662},{name:"iTunes",company:"Apple",category:"content",domains:["*.mzstatic.com"]},{name:"imgix",company:"Zebrafish Labs",category:"utility",domains:["*.imgix.net"],totalExecutionTime:40073,totalOccurrences:98},{name:"infogr.am",category:"utility",domains:["*.infogr.am","*.jifo.co"],totalExecutionTime:2008949,totalOccurrences:233},{name:"iotec",category:"analytics",domains:["*.dsp.io"]},{name:"iovation",category:"utility",domains:["*.iesnare.com"],totalExecutionTime:270232,totalOccurrences:2159},{name:"ipinfo.io",category:"utility",domains:["*.ipinfo.io"]},{name:"issuu",category:"content",domains:["*.issuu.com","*.isu.pub"],totalExecutionTime:5607951,totalOccurrences:2714},{name:"iubenda",category:"utility",domains:["*.iubenda.com"],examples:["www.iubenda.com"],totalExecutionTime:69911073,totalOccurrences:97074},{name:"j2 Cloud Services",category:"ad",domains:["*.campaigner.com"],totalExecutionTime:12708,totalOccurrences:28}, +{name:"jsonip.com",category:"analytics",domains:["*.jsonip.com"]},{name:"linkpulse",category:"analytics",domains:["*.lp4.io"]},{name:"loGo_net",category:"analytics",domains:["*.logo-net.co.uk"]},{name:"mainADV",category:"ad",domains:["*.httptrack.com","*.solocpm.com"]},{name:"mbr targeting",category:"ad",domains:["*.m6r.eu"],totalExecutionTime:17,totalOccurrences:1},{name:"media.ventive",category:"ad",domains:["*.contentspread.net"]},{name:"metrigo",category:"ad",domains:["*.metrigo.com"]},{name:"minicabit.com",category:"content",domains:["*.minicabit.com"]},{name:"mobiManage",category:"hosting",domains:["*.mobimanage.com"]},{name:"moving-pictures",category:"other",domains:["*.moving-pictures.biz","*.v6-moving-pictures.com","*.vtstat.com","*.moving-pictures.de"]},{name:"my6sense",category:"ad",domains:["*.mynativeplatform.com"]},{name:"myThings",category:"ad",domains:["*.mythings.com","*.mythingsmedia.net"]},{name:"mymovies",category:"content",domains:["*.mymovies.net"]},{name:"nRelate\ +-VOID",company:"nRelate",category:"content",domains:["*.nrelate.com"]},{name:"nToklo",category:"analytics",domains:["*.ntoklo.com"]},{name:"neXeps",category:"ad",domains:["*.nexeps.com"]},{name:"ninemsn Pty.",category:"utility",domains:["*.ninemsn.com.au"]},{name:"nugg.ad",category:"ad",domains:["*.nuggad.net"]},{name:"numero interactive",company:"numero",category:"ad",domains:["*.numerointeractive.com"]},{name:"optMD",company:"Optimax Media Delivery",category:"ad",domains:["*.optmd.com"]},{name:"otracking.com",category:"analytics",domains:["*.otracking.com"]},{name:"paysafecard",company:"Paysafe Group",category:"utility",domains:["*.paysafecard.com"]},{name:"piano",category:"ad",domains:["*.npttech.com","*.tinypass.com"],examples:["www.npttech.com"],totalExecutionTime:1016108,totalOccurrences:1146},{name:"piclike",category:"ad",domains:["*.piclike.us"]},{name:"placehold.it",category:"utility",domains:["*.placehold.it"]},{name:"plista",category:"ad",domains:["*.plista.com"]},{name:"pre\ +bid.org",category:"utility",domains:["*.prebid.org"],totalExecutionTime:462,totalOccurrences:1},{name:"reEmbed",category:"other",domains:["*.reembed.com"]},{name:"reddit",category:"social",domains:["*.reddit.com","*.redditstatic.com"],examples:["www.redditstatic.com"],totalExecutionTime:4113522,totalOccurrences:18483},{name:"rewardStyle.com",category:"ad",domains:["*.rewardstyle.com"],totalExecutionTime:280999,totalOccurrences:1491},{name:"rss2json",category:"utility",domains:["*.rss2json.com"],totalExecutionTime:1380,totalOccurrences:18},{name:"sage Pay",company:"Sage Pay Europe",category:"utility",domains:["*.sagepay.com"],totalExecutionTime:4481,totalOccurrences:40},{name:"section.io",category:"utility",domains:["*.squixa.net"],examples:["beacon.squixa.net","s.squixa.net"]},{name:"smartclip",category:"ad",domains:["*.smartclip.net"],totalExecutionTime:41051,totalOccurrences:21},{name:"sovrn",category:"ad",domains:["*.lijit.com"],totalExecutionTime:2389059,totalOccurrences:27306},{name:"\ +stackpile.io",company:"StackPile",category:"tag-manager",domains:["*.stackpile.io"]},{name:"template-help.com",category:"hosting",domains:["*.template-help.com"],totalExecutionTime:16016,totalOccurrences:13},{name:"test",company:"test only",category:"other",domains:["*.testtesttest.com"]},{name:"trueAnthem",category:"social",domains:["*.tru.am"]},{name:"tweetmeme-VOID",company:"tweetmeme",category:"analytics",domains:["*.tweetmeme.com"]},{name:"uLogin",category:"other",domains:["*.ulogin.ru"]},{name:"uLogix",category:"ad",domains:["*.ulogix.ru"]},{name:"ucfunnel ucX",company:"ucfunnel",category:"ad",domains:["*.aralego.com"],totalExecutionTime:1469345,totalOccurrences:7945},{name:"up-value",category:"ad",domains:["*.up-value.de"]},{name:"wywy",category:"ad",domains:["*.wywy.com","*.wywyuserservice.com"]},{name:"CDK Dealer Management",company:"CDK Global",homepage:"https://www.cdkglobal.com/us",category:"hosting",domains:["*.assets-cdk.com"],examples:["media-cf.assets-cdk.com"],totalExecutionTime:1052, +totalOccurrences:4},{name:"fam",company:"Fing Co Ltd.",homepage:"http://admin.fam-ad.com/report/",category:"ad",domains:["*.fam-ad.com"],examples:["img.fam-ad.com"],totalExecutionTime:1816,totalOccurrences:10},{name:"zypmedia",category:"ad",domains:["*.extend.tv"]},{name:"codigo",homepage:"https://www.codigo.se",category:"analytics",domains:["*.codigo.se"],examples:["analytics.codigo.se"],totalExecutionTime:469,totalOccurrences:10},{name:"Playground",homepage:"https://playground.xyz",category:"ad",domains:["*.playground.xyz"],examples:["ads.playground.xyz"],totalExecutionTime:2767,totalOccurrences:26},{name:"RAM",homepage:"https://www2.rampanel.com/",category:"analytics",domains:["*.rampanel.com"],examples:["inviso.rampanel.com"],totalExecutionTime:15413,totalOccurrences:1},{name:"Adition",homepage:"https://www.adition.com",category:"ad",domains:["*.adition.com"],examples:["dsp.adfarm1.adition.com"],totalExecutionTime:74399,totalOccurrences:491},{name:"Widespace",homepage:"https://www.\ +widespace.com",category:"ad",domains:["*.widespace.com"],examples:["sync.widespace.com"]},{name:"Colpirio",homepage:"https://www.widespace.com",category:"analytics",domains:["*.colpirio.com"],examples:["proxy-tracker.colpirio.com"]},{name:"Brandmetrics",homepage:"https://www.brandmetrics.com",category:"analytics",domains:["*.brandmetrics.com"],examples:["collector.brandmetrics.com","cdn.brandmetrics.com"],totalExecutionTime:3689914,totalOccurrences:30850},{name:"EasyAd",homepage:"https://web.easy-ads.com/",category:"ad",domains:["*.easy-ads.com"],examples:["ads.easy-ads.com"]},{name:"Glimr",homepage:"https://glimr.io/",category:"analytics",domains:["*.glimr.io"],examples:["pixel.glimr.io"]},{name:"Webtreck",homepage:"https://www.webtrekk.com/en/home/",category:"analytics",domains:["*.wcfbc.net"],examples:["fbc.wcfbc.net"]},{name:"DigiTrust",homepage:"http://www.digitru.st/",category:"analytics",domains:["*.digitru.st"],examples:["cdn.digitru.st"]},{name:"Kantar Sifo",homepage:"https://\ +www.kantarsifo.se",category:"analytics",domains:["*.research-int.se"],examples:["trafficgateway.research-int.se"],totalExecutionTime:375,totalOccurrences:1},{name:"Concert",homepage:"https://concert.io/",category:"ad",domains:["*.concert.io"],examples:["cdn.concert.io"],totalExecutionTime:317481,totalOccurrences:336},{name:"Emerse",homepage:"https://www.emerse.com/",category:"ad",domains:["*.emerse.com"],examples:["tracking.emerse.com"],totalExecutionTime:2872,totalOccurrences:13},{name:"Iterate",homepage:"https://iteratehq.com/",category:"analytics",domains:["*.iteratehq.com"],totalExecutionTime:8751,totalOccurrences:72},{name:"Cookiebot",homepage:"https://www.cookiebot.com/",category:"utility",domains:["*.cookiebot.com"],examples:["consent.cookiebot.com"],totalExecutionTime:64865019,totalOccurrences:187732},{name:"Netlify",homepage:"https://www.netlify.com/",category:"utility",domains:["*.netlify.com","*.netlifyusercontent.com"],examples:["cloud.netlifyusercontent.com"],totalExecutionTime:299527, +totalOccurrences:1323},{name:"Scroll",homepage:"https://scroll.com/",category:"utility",domains:["*.scroll.com"],examples:["static.scroll.com","connect.scroll.com"]},{name:"Consumable",homepage:"https://consumable.com/",category:"ad",domains:["*.serverbid.com"],totalExecutionTime:15203,totalOccurrences:266},{name:"DMD Marketing",homepage:"https://www.dmdconnects.com/",category:"ad",domains:["*.medtargetsystem.com"],totalExecutionTime:257224,totalOccurrences:846},{name:"Catchpoint",homepage:"https://www.catchpoint.com/",category:"analytics",domains:["*.3gl.net","*.3genlabs.net"],totalExecutionTime:14822,totalOccurrences:160},{name:"Terminus",homepage:"https://terminus.com/",category:"ad",domains:["*.terminus.services"],totalExecutionTime:28077,totalOccurrences:207},{name:"Acceptable Ads",homepage:"https://acceptableads.com/",category:"ad",domains:["*.aaxads.com","*.aaxdetect.com"],totalExecutionTime:2200,totalOccurrences:34},{name:"ClearBrain",homepage:"https://www.clearbrain.com/",category:"\ +analytics",domains:["*.clearbrain.com"],examples:["api.clearbrain.com"]},{name:"Optanon",homepage:"https://www.cookielaw.org/",category:"consent-provider",domains:["*.onetrust.com","*.cookielaw.org"],examples:["cdn.cookielaw.org","geolocation.onetrust.com"],totalExecutionTime:55293468,totalOccurrences:113700},{name:"TrustArc",homepage:"https://www.trustarc.com/",category:"utility",domains:["*.trustarc.com"],examples:["choices.trustarc.com","consent.trustarc.com"],totalExecutionTime:2429376,totalOccurrences:5941},{name:"iSpot.tv",homepage:"https://www.ispot.tv/",category:"ad",domains:["*.ispot.tv"],examples:["pt.ispot.tv"],totalExecutionTime:2947,totalOccurrences:10},{name:"RevJet",homepage:"https://www.revjet.com/",category:"ad",domains:["*.revjet.com"],examples:["pix.revjet.com","ads.revjet.com"],totalExecutionTime:54608,totalOccurrences:36},{name:"atlasRTX",homepage:"https://www.atlasrtx.com/",category:"customer-success",domains:["*.atlasrtx.com"],examples:["app.atlasrtx.com","cdn.at\ +lasrtx.com","dev.atlasrtx.com"],totalExecutionTime:52386,totalOccurrences:46},{name:"ContactAtOnce",homepage:"https://www.contactatonce.com/",category:"customer-success",domains:["*.contactatonce.com"],examples:["tag.contactatonce.com","agentpresence.contactatonce.com"]},{name:"Algolia",homepage:"https://www.algolia.com/",category:"utility",domains:["*.algolianet.com","*.algolia.net","*.algolia.io"],totalExecutionTime:5603,totalOccurrences:20},{name:"EMX Digital",homepage:"https://emxdigital.com",category:"ad",domains:["*.emxdgt.com"],totalExecutionTime:9160,totalOccurrences:166},{name:"Moxie",homepage:"https://www.gomoxie.com/",category:"utility",domains:["*.gomoxie.solutions"],totalExecutionTime:24183,totalOccurrences:28},{name:"Scripps Network Digital",homepage:"https://www.scrippsnetworksdigital.com/",category:"ad",domains:["*.snidigital.com"]},{name:"TurnTo",homepage:"https://www.turntonetworks.com/",category:"utility",domains:["*.turnto.com"],totalExecutionTime:4666,totalOccurrences:32}, +{name:"Quantum Metric",homepage:"https://www.quantummetric.com/",category:"analytics",domains:["*.quantummetric.com"],totalExecutionTime:1699724,totalOccurrences:1140},{name:"Carbon Ads",homepage:"https://www.carbonads.net/",category:"ad",domains:["*.carbonads.net","*.carbonads.com"],totalExecutionTime:12059,totalOccurrences:224},{name:"Ably",homepage:"https://www.ably.io/",category:"utility",domains:["*.ably.io"],totalExecutionTime:17031,totalOccurrences:125},{name:"Sectigo",homepage:"https://sectigo.com/",category:"utility",domains:["*.sectigo.com"],totalExecutionTime:4576,totalOccurrences:3},{name:"Specless",homepage:"https://gospecless.com/",category:"ad",domains:["*.specless.tech"]},{name:"Loggly",homepage:"https://www.loggly.com/",category:"analytics",domains:["*.loggly.com","d9jmv9u00p0mv.cloudfront.net"],examples:["logs-01.loggly.com"],totalExecutionTime:943,totalOccurrences:5},{name:"Intent Media",homepage:"https://intent.com/",category:"ad",domains:["*.intentmedia.net"]},{name:"\ +Supership",homepage:"https://supership.jp/",category:"ad",domains:["*.socdm.com"],totalExecutionTime:10809246,totalOccurrences:17934},{name:"F@N Communications",homepage:"https://www.fancs.com/",category:"ad",domains:["*.ladsp.com"],examples:["px.ladsp.com"],totalExecutionTime:258835,totalOccurrences:1768},{name:"Vidyard",homepage:"https://www.vidyard.com/",category:"utility",domains:["*.vidyard.com"],totalExecutionTime:1165600,totalOccurrences:1097},{name:"RapidSSL",homepage:"https://www.rapidssl.com/",category:"utility",domains:["*.rapidssl.com"],totalExecutionTime:845,totalOccurrences:2},{name:"Coherent Path",homepage:"https://coherentpath.com/",category:"utility",domains:["*.coherentpath.com"]},{name:"Attentive",homepage:"https://attentivemobile.com/",category:"ad",domains:["*.attn.tv","*.attentivemobile.com"],totalExecutionTime:5554871,totalOccurrences:9099},{name:"emetriq",homepage:"https://www.emetriq.com/",category:"ad",domains:["*.emetriq.de","*.xplosion.de"],totalExecutionTime:1917, +totalOccurrences:24},{name:"Bonzai",homepage:"https://www.bonzai.co/",category:"ad",domains:["*.bonzai.co"]},{name:"Freshchat",homepage:"https://www.freshworks.com/live-chat-software/",category:"customer-success",domains:["*.freshchat.com","*.freshworksapi.com"],products:[{name:"Freshdesk Messaging",urlPatterns:["wchat.freshchat.com"],facades:[{name:"Freshdesk Messaging (formerly Freshchat) Facade",repo:"https://github.com/coliff/freshdesk-messaging-facade/"}]}],totalExecutionTime:23350324,totalOccurrences:7081},{name:"Contentful",homepage:"https://www.contentful.com/",category:"utility",domains:["*.contentful.com"],examples:["cdn.contentful.com"],totalExecutionTime:4826,totalOccurrences:2},{name:"PureCars",homepage:"https://www.purecars.com/",category:"marketing",domains:["*.purecars.com"],examples:["cdn.purecars.com"],totalExecutionTime:969442,totalOccurrences:1292},{name:"Tray Commerce",homepage:"https://www.tray.com.br/",category:"marketing",domains:["*.tcdn.com.br"],examples:["ima\ +ges.tcdn.com.br"],totalExecutionTime:68362173,totalOccurrences:14071},{name:"AdScore",homepage:"https://www.adscore.com/",category:"ad",domains:["*.adsco.re"],examples:["c.adsco.re"],totalExecutionTime:2812771,totalOccurrences:4394},{name:"WebsiteBuilder.com",homepage:"https://www.websitebuilder.com",category:"hosting",domains:["*.mywebsitebuilder.com"],totalExecutionTime:19568135,totalOccurrences:4688},{name:"mParticle",homepage:"https://www.mparticle.com/",category:"utility",domains:["*.mparticle.com"],examples:["jssdks.mparticle.com","identity.mparticle.com"],totalExecutionTime:403503,totalOccurrences:1029},{name:"Ada",homepage:"https://www.ada.support/",category:"customer-success",domains:["*.ada.support"],examples:["static.ada.support"],totalExecutionTime:695777,totalOccurrences:985},{name:"Quora Ads",homepage:"https://www.quora.com/business/",category:"ad",domains:["*.quora.com"],examples:["q.quora.com"],totalExecutionTime:1338719,totalOccurrences:10614},{name:"Auth0",homepage:"h\ +ttps://auth0.com/",category:"utility",domains:["*.auth0.com"],examples:["cdn.auth0.com"],totalExecutionTime:245638,totalOccurrences:816},{name:"Bridgewell DSP",homepage:"https://www.bridgewell.com/",category:"ad",domains:["*.scupio.com"],examples:["img.scupio.com"],totalExecutionTime:63728,totalOccurrences:354},{name:"Wicked Reports",homepage:"https://www.wickedreports.com/",category:"marketing",domains:["*.wickedreports.com"],examples:["widget.wickedreports.com"],totalExecutionTime:148754,totalOccurrences:483},{name:"Jaywing",homepage:"https://jaywing.com/",category:"marketing",domains:["*.jaywing.com"],examples:["amazon.almanac.jaywing.com"]},{name:"Holimetrix",homepage:"https://u360.d-bi.fr/",category:"marketing",domains:["*.d-bi.fr"],examples:["u360.d-bi.fr"]},{name:"iZooto",homepage:"https://www.izooto.com",category:"marketing",domains:["*.izooto.com"],examples:["cdn.izooto.com"],totalExecutionTime:1111125,totalOccurrences:2022},{name:"Ordergroove",homepage:"https://www.ordergroov\ +e.com/",category:"marketing",domains:["*.ordergroove.com"],examples:["static.ordergroove.com"],totalExecutionTime:99990,totalOccurrences:274},{name:"PageSense",homepage:"https://www.zoho.com/pagesense/",category:"analytics",domains:["*.pagesense.io"],examples:["cdn.pagesense.io"],totalExecutionTime:1996537,totalOccurrences:6219},{name:"Vizzit",homepage:"https://www.vizzit.se",category:"analytics",domains:["*.vizzit.se"],examples:["www.vizzit.se","tag.vizzit.se"],totalExecutionTime:739,totalOccurrences:7},{name:"Click Guardian",homepage:"https://www.clickguardian.co.uk/",category:"ad",domains:["*.clickguardian.app","*.clickguardian.co.uk"],examples:["v2.clickguardian.app","protection.clickguardian.co.uk"],totalExecutionTime:202620,totalOccurrences:1101},{name:"Smartsupp",company:"Smartsupp.com",homepage:"https://www.smartsupp.com",category:"customer-success",domains:["*.smartsuppchat.com","*.smartsupp.com","smartsupp-widget-161959.c.cdn77.org","*.smartsuppcdn.com"],examples:["widget-v1.\ +smartsuppcdn.com"],totalExecutionTime:9998165,totalOccurrences:21505},{name:"Smartlook",company:"Smartsupp.com",homepage:"https://www.smartlook.com/",category:"analytics",domains:["*.smartlook.com"],totalExecutionTime:1386251,totalOccurrences:16221},{name:"Luigis Box",company:"Luigis Box",homepage:"https://www.luigisbox.com/",category:"utility",domains:["*.luigisbox.com"],totalExecutionTime:2975273,totalOccurrences:2356},{name:"Targito",company:"VIVmail.cz",homepage:"https://www.targito.com",category:"marketing",domains:["*.targito.com"],totalExecutionTime:3145,totalOccurrences:29},{name:"Foxentry",company:"AVANTRO",homepage:"https://foxentry.cz/",category:"utility",domains:["*.foxentry.cz"],totalExecutionTime:758854,totalOccurrences:2313},{name:"Pendo",homepage:"https://www.pendo.io",category:"analytics",domains:["*.pendo.io"],examples:["app.pendo.io"],totalExecutionTime:4935190,totalOccurrences:12203},{name:"Braze",homepage:"https://www.braze.com",category:"analytics",domains:["*.app\ +boycdn.com"],examples:["js.appboycdn.com"],totalExecutionTime:399216,totalOccurrences:2014},{name:"Usersnap",homepage:"https://usersnap.com",category:"customer-success",domains:["*.usersnap.com"],examples:["api.usersnap.com","cdn.usersnap.com"],totalExecutionTime:334324,totalOccurrences:437},{name:"Rewardful",homepage:"https://www.getrewardful.com",category:"analytics",domains:["*.wdfl.co"],examples:["r.wdfl.co"],totalExecutionTime:9094,totalOccurrences:161},{name:"Launch Darkly",homepage:"https://launchdarkly.com",category:"utility",domains:["*.launchdarkly.com"],examples:["app.launchdarkly.com","events.launchdarkly.com"],totalExecutionTime:10547,totalOccurrences:6},{name:"Statuspage",company:"Atlassian",homepage:"https://www.statuspage.io",category:"utility",domains:["*.statuspage.io"],examples:["1k6wzpspjf99.statuspage.io"],totalExecutionTime:43124,totalOccurrences:1212},{name:"HyperInzerce",homepage:"https://hyperinzerce.cz",category:"ad",domains:["*.hyperinzerce.cz"],examples:["mo\ +torky.hyperinzerce.cz"],totalExecutionTime:1035,totalOccurrences:39},{name:"POWr",homepage:"https://www.powr.io",category:"utility",domains:["*.powr.io"],examples:["www.powr.io"],totalExecutionTime:191534674,totalOccurrences:39716},{name:"Coral",company:"Coral",homepage:"https://coralproject.net",category:"content",domains:["*.coral.coralproject.net"],examples:["company.coral.coralproject.net"],totalExecutionTime:61135,totalOccurrences:250},{name:"Bolt",homepage:"https://www.bolt.com/",category:"utility",domains:["*.bolt.com"],examples:["connect.bolt.com"],totalExecutionTime:513689,totalOccurrences:217},{name:"Judge.me",homepage:"https://judge.me/",category:"marketing",domains:["*.judge.me"],examples:["cdn.judge.me"],totalExecutionTime:31886982,totalOccurrences:27483},{name:"Tilda",homepage:"https://tilda.cc/",category:"hosting",domains:["*.tildacdn.com"],examples:["stat.tildacdn.com","static.tildacdn.com","upwidget.tildacdn.com"],totalExecutionTime:94734169,totalOccurrences:70321},{name:"\ +SalesLoft",homepage:"https://salesloft.com/",category:"marketing",domains:["*.salesloft.com"],examples:["scout-cdn.salesloft.com"],totalExecutionTime:42987,totalOccurrences:705},{name:"Accessibe Accessibility Overlay",company:"Accessibe",homepage:"https://accessibe.com/",category:"utility",domains:["*.accessibe.com","*.acsbapp.com","*.acsbap.com"],examples:["accessibe.com","acsbapp.com"],totalExecutionTime:285765,totalOccurrences:808},{name:"Builder",homepage:"https://www.builder.io/",category:"hosting",domains:["*.builder.io"],examples:["cdn.builder.io"],totalExecutionTime:412358,totalOccurrences:261},{name:"Pepperjam",homepage:"https://www.pepperjam.com/",category:"marketing",domains:["*.pepperjam.com","*.affiliatetechnology.com"],examples:["container.pepperjam.com"],totalExecutionTime:2308,totalOccurrences:35},{name:"Reach",homepage:"https://withreach.com/",category:"utility",domains:["*.gointerpay.net"],examples:["checkout.gointerpay.net"]},{name:"Chameleon",homepage:"https://www.t\ +rychameleon.com/",category:"marketing",domains:["*.trychameleon.com"],examples:["fast.trychameleon.com"],totalExecutionTime:24218,totalOccurrences:8},{name:"Matomo",company:"InnoCraft",homepage:"https://matomo.org/",category:"analytics",domains:["*.matomo.cloud"],totalExecutionTime:3115176,totalOccurrences:14345},{name:"Segmanta",homepage:"https://segmanta.com/",category:"marketing",domains:["*.segmanta.com"],examples:["clientName.segmanta.com"]},{name:"Podsights",homepage:"https://podsights.com/",category:"marketing",domains:["*.pdst.fm","us-central1-adaptive-growth.cloudfunctions.net"],examples:["cdn.pdst.fm","sink.pdst.fm"],totalExecutionTime:71990,totalOccurrences:1140},{name:"Chatwoot",homepage:"https://www.chatwoot.com/",category:"customer-success",domains:["*.chatwoot.com"],examples:["cdn.chatwoot.com","app.chatwoot.com"],totalExecutionTime:31973,totalOccurrences:444},{name:"Crisp",homepage:"https://crisp.chat/",category:"customer-success",domains:["*.crisp.chat"],examples:["cli\ +ent.crisp.chat","client.relay.crisp.chat"],totalExecutionTime:33757,totalOccurrences:1052},{name:"Admiral CMP",homepage:"https://www.getadmiral.com",category:"consent-provider",domains:["admiral.mgr.consensu.org","*.admiral.mgr.consensu.org"]},{name:"Adnuntius CMP",homepage:"https://adnuntius.com",category:"consent-provider",domains:["adnuntiusconsent.mgr.consensu.org","*.adnuntiusconsent.mgr.consensu.org"]},{name:"Clickio CMP",homepage:"https://clickio.com",category:"consent-provider",domains:["clickio.mgr.consensu.org","*.clickio.mgr.consensu.org"]},{name:"AppConsent CMP",homepage:"https://appconsent.io/en",category:"consent-provider",domains:["appconsent.mgr.consensu.org","*.appconsent.mgr.consensu.org"]},{name:"DMG Media CMP",homepage:"https://www.dmgmedia.co.uk",category:"consent-provider",domains:["dmgmedia.mgr.consensu.org","*.dmgmedia.mgr.consensu.org"]},{name:"Axel Springer CMP",homepage:"https://www.axelspringer.com",category:"consent-provider",domains:["axelspringer.mgr.cons\ +ensu.org","*.axelspringer.mgr.consensu.org"]},{name:"Bedrock CMP",homepage:"https://www.bedrockstreaming.com",category:"consent-provider",domains:["bedrock.mgr.consensu.org","*.bedrock.mgr.consensu.org"]},{name:"BMIND CMP",homepage:"https://www.bmind.es",category:"consent-provider",domains:["bmind.mgr.consensu.org","*.bmind.mgr.consensu.org"]},{name:"Borlabs CMP",homepage:"https://borlabs.io",category:"consent-provider",domains:["borlabs.mgr.consensu.org","*.borlabs.mgr.consensu.org"]},{name:"Civic CMP",homepage:"https://www.civicuk.com",category:"consent-provider",domains:["cookiecontrol.mgr.consensu.org","*.cookiecontrol.mgr.consensu.org"]},{name:"Commanders Act CMP",homepage:"https://www.commandersact.com",category:"consent-provider",domains:["commandersact.mgr.consensu.org","*.commandersact.mgr.consensu.org"]},{name:"Complianz CMP",homepage:"https://complianz.io/",category:"consent-provider",domains:["complianz.mgr.consensu.org","*.complianz.mgr.consensu.org"]},{name:"Consent Desk \ +CMP",homepage:"https://www.consentdesk.com/",category:"consent-provider",domains:["consentdesk.mgr.consensu.org","*.consentdesk.mgr.consensu.org"]},{name:"Consent Manager CMP",homepage:"https://consentmanager.net",category:"consent-provider",domains:["consentmanager.mgr.consensu.org","*.consentmanager.mgr.consensu.org"]},{name:"Conversant CMP",homepage:"https://www.conversantmedia.eu/",category:"consent-provider",domains:["conversant.mgr.consensu.org","*.conversant.mgr.consensu.org"]},{name:"Cookie Information CMP",homepage:"https://www.cookieinformation.com/",category:"consent-provider",domains:["cookieinformation.mgr.consensu.org","*.cookieinformation.mgr.consensu.org"]},{name:"Cookiebot CMP",homepage:"https://www.cookiebot.com",category:"consent-provider",domains:["cookiebot.mgr.consensu.org","*.cookiebot.mgr.consensu.org"]},{name:"Truendo CMP",homepage:"https://truendo.com/",category:"consent-provider",domains:["truendo.mgr.consensu.org","*.truendo.mgr.consensu.org"]},{name:"Dentsu\ + CMP",homepage:"https://www.dentsuaegisnetwork.de/",category:"consent-provider",domains:["dan.mgr.consensu.org","*.dan.mgr.consensu.org"]},{name:"Didomi CMP",homepage:"https://www.didomi.io/en/",category:"consent-provider",domains:["didomi.mgr.consensu.org","*.didomi.mgr.consensu.org"]},{name:"Ensighten CMP",homepage:"https://www.ensighten.com/",category:"consent-provider",domains:["ensighten.mgr.consensu.org","*.ensighten.mgr.consensu.org"]},{name:"Evidon CMP",homepage:"https://evidon.com",category:"consent-provider",domains:["evidon.mgr.consensu.org","*.evidon.mgr.consensu.org"]},{name:"Ezoic CMP",homepage:"https://www.ezoic.com/",category:"consent-provider",domains:["ezoic.mgr.consensu.org","*.ezoic.mgr.consensu.org"]},{name:"Gemius CMP",homepage:"https://www.gemius.com",category:"consent-provider",domains:["gemius.mgr.consensu.org","*.gemius.mgr.consensu.org"]},{name:"NitroPay CMP",homepage:"https://nitropay.com/",category:"consent-provider",domains:["nitropay.mgr.consensu.org","*.\ +nitropay.mgr.consensu.org"]},{name:"Google FundingChoices",homepage:"https://fundingchoices.google.com/start/",category:"consent-provider",domains:["fundingchoices.mgr.consensu.org","*.fundingchoices.mgr.consensu.org","fundingchoicesmessages.google.com","*.fundingchoicesmessages.google.com"],totalExecutionTime:257806056,totalOccurrences:400016},{name:"Gravito CMP",homepage:"https://www.gravito.net/",category:"consent-provider",domains:["gravito.mgr.consensu.org","*.gravito.mgr.consensu.org"]},{name:"ID Ward CMP",homepage:"https://id-ward.com/enterprise",category:"consent-provider",domains:["idward.mgr.consensu.org","*.idward.mgr.consensu.org"]},{name:"iubenda CMP",homepage:"https://www.iubenda.com",category:"consent-provider",domains:["iubenda.mgr.consensu.org","*.iubenda.mgr.consensu.org"]},{name:"Jump CMP",homepage:"https://jumpgroup.it/",category:"consent-provider",domains:["avacy.mgr.consensu.org","*.avacy.mgr.consensu.org"]},{name:"LiveRamp CMP",homepage:"https://liveramp.com/",category:"\ +consent-provider",domains:["faktor.mgr.consensu.org","*.faktor.mgr.consensu.org"]},{name:"Madvertise CMP",homepage:"https://madvertise.com/en/",category:"consent-provider",domains:["madvertise.mgr.consensu.org","*.madvertise.mgr.consensu.org"]},{name:"Mairdumont Netletic CMP",homepage:"https://www.mairdumont-netletix.com/",category:"consent-provider",domains:["mdnxmp.mgr.consensu.org","*.mdnxmp.mgr.consensu.org"]},{name:"Marfeel CMP",homepage:"https://www.marfeel.com/",category:"consent-provider",domains:["marfeel.mgr.consensu.org","*.marfeel.mgr.consensu.org"]},{name:"Mediavine CMP",homepage:"https://www.mediavine.com/",category:"consent-provider",domains:["mediavine.mgr.consensu.org","*.mediavine.mgr.consensu.org"]},{name:"ConsentServe CMP",homepage:"https://www.consentserve.com/",category:"consent-provider",domains:["consentserve.mgr.consensu.org","*.consentserve.mgr.consensu.org"]},{name:"Next14 CMP",homepage:"https://www.next14.com/",category:"consent-provider",domains:["next14.mg\ +r.consensu.org","*.next14.mgr.consensu.org"]},{name:"AdRoll CMP",homepage:"https://www.adroll.com/",category:"consent-provider",domains:["adroll.mgr.consensu.org","*.adroll.mgr.consensu.org"]},{name:"Ogury CMP",homepage:"https://www.ogury.com/",category:"consent-provider",domains:["ogury.mgr.consensu.org","*.ogury.mgr.consensu.org"]},{name:"OneTag CMP",homepage:"https://onetag.net",category:"consent-provider",domains:["onetag.mgr.consensu.org","*.onetag.mgr.consensu.org"]},{name:"OneTrust CMP",homepage:"https://onetrust.com",category:"consent-provider",domains:["onetrust.mgr.consensu.org","*.onetrust.mgr.consensu.org"]},{name:"optAd360 CMP",homepage:"https://www.optad360.com/",category:"consent-provider",domains:["optad360.mgr.consensu.org","*.optad360.mgr.consensu.org"]},{name:"Osano CMP",homepage:"https://www.osano.com",category:"consent-provider",domains:["osano.mgr.consensu.org","*.osano.mgr.consensu.org"]},{name:"Playwire CMP",homepage:"https://www.playwire.com",category:"consent-\ +provider",domains:["playwire.mgr.consensu.org","*.playwire.mgr.consensu.org"]},{name:"Pulselive CMP",homepage:"https://www.pulselive.com",category:"consent-provider",domains:["pulselive.mgr.consensu.org","*.pulselive.mgr.consensu.org"]},{name:"Quantcast Choice",homepage:"https://quantcast.com",category:"consent-provider",domains:["quantcast.mgr.consensu.org","*.quantcast.mgr.consensu.org"]},{name:"RCS Pubblicita CMP",homepage:"http://www.rcspubblicita.it/site/home.html",category:"consent-provider",domains:["rcsmediagroup.mgr.consensu.org","*.rcsmediagroup.mgr.consensu.org"]},{name:"Rich Audience CMP",homepage:"https://richaudience.com",category:"consent-provider",domains:["richaudience.mgr.consensu.org","*.richaudience.mgr.consensu.org"]},{name:"Ringier Axel Springer CMP",homepage:"https://www.ringieraxelspringer.pl/en/home/",category:"consent-provider",domains:["rasp.mgr.consensu.org","*.rasp.mgr.consensu.org"]},{name:"Secure Privacy CMP",homepage:"https://secureprivacy.ai/",category:"\ +consent-provider",domains:["secureprivacy.mgr.consensu.org","*.secureprivacy.mgr.consensu.org"]},{name:"Securiti CMP",homepage:"https://securiti.ai/",category:"consent-provider",domains:["securiti.mgr.consensu.org","*.securiti.mgr.consensu.org"]},{name:"Seznam.cz CMP",homepage:"https://www.seznam.cz/",category:"consent-provider",domains:["seznam.mgr.consensu.org","*.seznam.mgr.consensu.org"]},{name:"ShareThis CMP",homepage:"https://sharethis.com",category:"consent-provider",domains:["sharethis.mgr.consensu.org","*.sharethis.mgr.consensu.org"]},{name:"ShinyStat CMP",homepage:"https://www.shinystat.com",category:"consent-provider",domains:["shinystat.mgr.consensu.org","*.shinystat.mgr.consensu.org"]},{name:"Sibbo CMP",homepage:"https://sibboventures.com/en/",category:"consent-provider",domains:["sibboventures.mgr.consensu.org","*.sibboventures.mgr.consensu.org"]},{name:"Singlespot CMP",homepage:"https://www.singlespot.com/en",category:"consent-provider",domains:["singlespot.mgr.consensu.\ +org","*.singlespot.mgr.consensu.org"]},{name:"Sirdata CMP",homepage:"https://www.sirdata.com",category:"consent-provider",domains:["sddan.mgr.consensu.org","*.sddan.mgr.consensu.org"]},{name:"Snigel CMP",homepage:"https://snigel.com",category:"consent-provider",domains:["snigelweb.mgr.consensu.org","*.snigelweb.mgr.consensu.org"]},{name:"Sourcepoint CMP",homepage:"https://sourcepoint.com",category:"consent-provider",domains:["sourcepoint.mgr.consensu.org","*.sourcepoint.mgr.consensu.org"]},{name:"Pubtech CMP",homepage:"https://www.pubtech.ai/",category:"consent-provider",domains:["pubtech.mgr.consensu.org","*.pubtech.mgr.consensu.org"]},{name:"AdMetrics Pro CMP",homepage:"https://admetricspro.com",category:"consent-provider",domains:["cmp.mgr.consensu.org","*.cmp.mgr.consensu.org"]},{name:"Traffective CMP",homepage:"https://traffective.com",category:"consent-provider",domains:["traffective.mgr.consensu.org","*.traffective.mgr.consensu.org"]},{name:"UniConsent CMP",homepage:"https://www\ +.uniconsent.com",category:"consent-provider",domains:["uniconsent.mgr.consensu.org","*.uniconsent.mgr.consensu.org","cmp.uniconsent.com","*.uniconsent.com"],totalExecutionTime:829870,totalOccurrences:1336},{name:"TrustArc CMP",homepage:"https://trustarc.com/",category:"consent-provider",domains:["trustarc.mgr.consensu.org","*.trustarc.mgr.consensu.org"]},{name:"Usercentrics CMP",homepage:"https://usercentrics.com",category:"consent-provider",domains:["usercentrics.mgr.consensu.org","*.usercentrics.mgr.consensu.org","*.usercentrics.eu","*.services.usercentrics.eu"],totalExecutionTime:53008518,totalOccurrences:49602},{name:"WebAds CMP",homepage:"https://www.webads.nl/",category:"consent-provider",domains:["webads.mgr.consensu.org","*.webads.mgr.consensu.org"]},{name:"Trustcommander",company:"Commandersact",homepage:"https://www.commandersact.com",category:"consent-provider",domains:["*.trustcommander.net"],examples:["cdn.trustcommander.net","privacy.trustcommander.net"],totalExecutionTime:324770, +totalOccurrences:1713},{name:"Hubvisor",homepage:"https://www.hubvisor.io",category:"ad",domains:["*.hubvisor.io"],examples:["cdn.hubvisor.io","stream.hubvisor.io"],totalExecutionTime:404737,totalOccurrences:492},{name:"Castle",homepage:"https://castle.io",category:"utility",domains:["*.castle.io","d2t77mnxyo7adj.cloudfront.net"],examples:["t.castle.io"]},{name:"Wigzo",homepage:"https://www.wigzo.com/",category:"marketing",domains:["*.wigzo.com","*.wigzopush.com"],examples:["app.wigzo.com","tracker.wigzopush.com"],totalExecutionTime:215280,totalOccurrences:762},{name:"Convertful",homepage:"https://convertful.com/",category:"marketing",domains:["*.convertful.com"],examples:["app.convertful.com"],totalExecutionTime:215317,totalOccurrences:1534},{name:"OpenLink",company:"MediaWallah",homepage:"https://www.mediawallah.com/",category:"ad",domains:["*.mediawallahscript.com"],examples:["partner.mediawallahscript.com"]},{name:"TPMN",company:"TPMN",homepage:"http://tpmn.io/",category:"ad",domains:[ +"*.tpmn.co.kr"],examples:["ad.tpmn.co.kr"],totalExecutionTime:354,totalOccurrences:10},{name:"HERO",company:"Klarna",homepage:"https://www.usehero.com/",category:"customer-success",domains:["*.usehero.com"],examples:["api.usehero.com","cdn.usehero.com"],totalExecutionTime:32092,totalOccurrences:42},{name:"Zync",company:"Zeta Global",homepage:"https://zetaglobal.com/",category:"marketing",domains:["*.rezync.com"],examples:["live.rezync.com"],totalExecutionTime:25978,totalOccurrences:246},{name:"AdFuel Video",company:"AdFuel",homepage:"https://goadfuel.com/",category:"ad",domains:["*.videoplayerhub.com"],examples:["customer.videoplayerhub.com"],totalExecutionTime:82951,totalOccurrences:1407},{name:"Prefix Box AI Search",company:"Prefix Box",homepage:"https://www.prefixbox.com/",category:"utility",domains:["*.prefixbox.com"],examples:["cdn.prefixbox.com"],totalExecutionTime:51608,totalOccurrences:58},{name:"SpeedSize Service Worker",company:"SpeedSize",homepage:"https://speedsize.com/",category:"\ +utility",domains:["di6367dava8ow.cloudfront.net","d2d22nphq0yz8t.cloudfront.net"],examples:["di6367dava8ow.cloudfront.net"]},{name:"Vonage Video API",company:"Vonage",homepage:"https://www.vonage.com/communications-apis/video/",category:"video",domains:["*.opentok.com"],examples:["static.opentok.com"],totalExecutionTime:220760,totalOccurrences:304},{name:"Checkout.com",company:"Checkout.com",homepage:"https://www.checkout.com",category:"utility",domains:["*.checkout.com"],examples:["cdn.checkout.com"],totalExecutionTime:184372,totalOccurrences:1367},{name:"Noibu",company:"Noibu",homepage:"https://www.noibu.com",category:"utility",domains:["*.noibu.com"],examples:["input.noibu.com"],totalExecutionTime:1453903,totalOccurrences:613},{name:"Clarity",company:"Microsoft",homepage:"https://clarity.microsoft.com/",category:"utility",domains:["*.clarity.ms"],examples:["c.clarity.ms"],totalExecutionTime:208824616,totalOccurrences:456309},{name:"goinstore",company:"Emplifi",homepage:"https://goin\ +store.com/",category:"customer-success",domains:["*.goinstore.com"],examples:["gis.goinstore.com"]},{name:"SegmentStream",company:"SegmentStream",homepage:"https://segmentstream.com/",category:"marketing",domains:["*.segmentstream.com"],examples:["track.segmentstream.com"],totalExecutionTime:8628,totalOccurrences:13},{name:"Amazon Associates",company:"Amazon",homepage:"https://affiliate-program.amazon.co.uk/",category:"marketing",domains:["*.associates-amazon.com"],examples:["assoc-na.associates-amazon.com"],totalExecutionTime:50,totalOccurrences:1},{name:"DotMetrics",company:"Ipsos",homepage:"https://www.dotmetrics.net/",category:"analytics",domains:["*.dotmetrics.net"],examples:["uk-script.dotmetrics.net"],totalExecutionTime:159255,totalOccurrences:817},{name:"Truffle Bid",company:"Truffle",homepage:"https://truffle.bid/",category:"ad",domains:["*.truffle.bid"],examples:["matching.truffle.bid"],totalExecutionTime:24026,totalOccurrences:39},{name:"Hybrid",company:"Hybrid",homepage:"ht\ +tps://hybrid.ai/",category:"ad",domains:["*.hybrid.ai"],examples:["dm-eu.hybrid.ai"],totalExecutionTime:219740,totalOccurrences:2326},{name:"AdMan Media",company:"AdMan",homepage:"https://admanmedia.com/",category:"video",domains:["*.admanmedia.com"],examples:["cs.admanmedia.com"],totalExecutionTime:1924,totalOccurrences:202},{name:"ID5 Identity Cloud",company:"ID5",homepage:"https://id5.io/",category:"ad",domains:["id5-sync.com","*.id5-sync.com"],examples:["id5-sync.com"],totalExecutionTime:26134069,totalOccurrences:119336},{name:"Audience Rate",company:"Audience Rate Limited",homepage:"https://www.audiencerate.com/",category:"ad",domains:["*.audrte.com"],examples:["a.audrte.com"]},{name:"Seedtag",company:"Seedtag Advertising",homepage:"https://www.seedtag.com/",category:"ad",domains:["*.seedtag.com"],examples:["s.seedtag.com"],totalExecutionTime:3342567,totalOccurrences:1503},{name:"IVI",company:"IVI Technologies",homepage:"http://ivitechnologies.com/",category:"ad",domains:["*.ivitr\ +ack.com"],examples:["matching.ivitrack.com"],totalExecutionTime:3746,totalOccurrences:34},{name:"Sportradar",company:"Sportradar",homepage:"https://www.sportradar.com/",category:"ad",domains:["*.sportradarserving.com"],examples:["a.sportradarserving.com"],totalExecutionTime:520,totalOccurrences:11},{name:"ZEOTAP",company:"ZEOTAP",homepage:"https://zeotap.com/",category:"ad",domains:["*.zeotap.com"],examples:["spl.zeotap.com"],totalExecutionTime:14368,totalOccurrences:96},{name:"Web Content Assessor",company:"TMT Digital",homepage:"https://mediatrust.com/",category:"ad",domains:["*.webcontentassessor.com"],examples:["scripts.webcontentassessor.com"],totalExecutionTime:314249,totalOccurrences:633},{name:"Genie",company:"Media Force",homepage:"https://hellogenie.com/",category:"ad",domains:["*.mfadsrvr.com"],examples:["rtb.mfadsrvr.com"],totalExecutionTime:37,totalOccurrences:2},{name:"mediarithmics",company:"mediarithmics",homepage:"https://www.mediarithmics.com/",category:"ad",domains:[ +"*.mediarithmics.com"],examples:["cookie-matching.mediarithmics.com"],totalExecutionTime:25799,totalOccurrences:144},{name:"Ozone Project",company:"The Ozone Project",homepage:"https://www.ozoneproject.com/",category:"ad",domains:["*.the-ozone-project.com"],examples:["elb.the-ozone-project.com"],totalExecutionTime:152768,totalOccurrences:910},{name:"FiftyAurora",company:"Fifty",homepage:"https://fifty.io/",category:"ad",domains:["*.fiftyt.com"],examples:["visitor.fiftyt.com"]},{name:"smadex",company:"entravision",homepage:"https://smadex.com/",category:"ad",domains:["*.smadex.com"],examples:["cm.smadex.com"],totalExecutionTime:5,totalOccurrences:1},{name:"AWX",company:"Trinity Mirror",category:"ad",domains:["*.tm-awx.com"],examples:["felix.data.tm-awx.com"],totalExecutionTime:68744,totalOccurrences:54},{name:"XPO",company:"Knorex",category:"ad",homepage:"https://www.knorex.com/",domains:["*.brand-display.com"],examples:["dmp.brand-display.com"],totalExecutionTime:388629,totalOccurrences:477}, +{name:"Viafoura",company:"Viafoura",category:"ad",homepage:"https://viafoura.com/",domains:["*.viafoura.co","*.viafoura.net"],examples:["api.viafoura.co","cdn.viafoura.net"],totalExecutionTime:307404,totalOccurrences:446},{name:"Adnami",company:"Adnami",category:"ad",homepage:"https://www.adnami.io/",domains:["*.adnami.io"],examples:["macro.adnami.io"],totalExecutionTime:272668,totalOccurrences:1639},{name:"LiveRamp Privacy Manager",company:"LiveRamp",category:"ad",homepage:"https://liveramp.com/privacy-legal-compliance/",domains:["*.privacymanager.io"],examples:["geo.privacymanager.io"],totalExecutionTime:6546055,totalOccurrences:22295},{name:"Onfocus",company:"Onfocus SAS",category:"ad",domains:["*.4dex.io"],examples:["script.4dex.io"],totalExecutionTime:4240761,totalOccurrences:8836},{name:"viewTag",company:"Advanced Store",category:"ad",domains:["*.ad4m.at"],examples:["ad4m.at","as.ad4m.at"],totalExecutionTime:458,totalOccurrences:21},{name:"MRP Prelytics",company:"Market Resource \ +Partners",category:"ad",homepage:"https://www.mrpfd.com/",domains:["*.mrpdata.net"],examples:["j.mrpdata.net"]},{name:"iPROM",company:"iPROM",category:"ad",homepage:"https://iprom.eu/",domains:["*.iprom.net"],examples:["core.iprom.net"],totalExecutionTime:114801,totalOccurrences:72099},{name:"Plausible",company:"Plausible",homepage:"https://plausible.io/",category:"analytics",domains:["*.plausible.io"]},{name:"Micro Analytics",company:"Micro Analytics",homepage:"https://microanalytics.io/",category:"analytics",domains:["padmin.microanalytics.io","www.microanalytics.io","dev.microanalytics.io","status.microanalytics.io"]},{name:"Scale8",company:"Scale8",homepage:"https://scale8.com/",category:"analytics",domains:["www.scale8.com","api-dev.scale8.com","cdn.scale8.com","ui.scale8.com"]},{name:"Cabin",company:"Cabin",homepage:"https://withcabin.com/",category:"analytics",domains:["*.withcabin.com"],totalExecutionTime:3843,totalOccurrences:100},{name:"Appcues",company:"Appcues",homepage:"ht\ +tps://www.appcues.com/",category:"analytics",domains:["*.appcues.com"],totalExecutionTime:2154145,totalOccurrences:2831},{name:"Fathom Analytics",company:"Fathom",homepage:"https://usefathom.com/",category:"analytics",domains:["*.usefathom.com"],totalExecutionTime:145389,totalOccurrences:1141},{name:"Clearbit",company:"Clearbit",homepage:"https://clearbit.com/",category:"analytics",domains:["*.clearbitjs.com","*.clearbitscripts.com","*.clearbit.com"],totalExecutionTime:967253,totalOccurrences:4171},{name:"G2",company:"G2",homepage:"https://www.g2.com/",category:"utility",domains:["*.g2.com","*.g2crowd.com"],totalExecutionTime:195752,totalOccurrences:406},{name:"Navu",company:"Navu",homepage:"https://navu.co/",category:"ad",domains:["*.navu.co"]},{name:"InZynk",company:"InZynk",homepage:"https://inzynk.com/",category:"ad",domains:["*.inzynk.com","*.inzynk.io"],totalExecutionTime:541,totalOccurrences:8},{name:"Integrate",company:"Integrate",homepage:"https://www.integrate.com/",category:"\ +ad",domains:["*.integrate.com","*.listenloop.com"],totalExecutionTime:14260,totalOccurrences:39},{name:"Ad Lightning",company:"Boltive",homepage:"https://www.adlightning.com/",category:"ad",domains:["*.adlightning.com"],totalExecutionTime:6879067,totalOccurrences:3795},{name:"GeoEdge",company:"GeoEdge",homepage:"https://www.geoedge.com/",category:"ad",domains:["*.geoedge.com","*.geoedge.be"],totalExecutionTime:1039615,totalOccurrences:1796},{name:"Doofinder",company:"Doofinder",homepage:"https://www.doofinder.com/",category:"utility",domains:["cdn.doofinder.com"],totalExecutionTime:1750777,totalOccurrences:12550},{name:"Revlifter",company:"Revlifter",homepage:"https://www.revlifter.com/",category:"utility",domains:["assets.revlifter.com"]},{name:"Didomi",company:"Didomi",homepage:"https://www.didomi.io/",category:"consent-provider",domains:["sdk.privacy-center.org","api.privacy-center.org"],totalExecutionTime:85132161,totalOccurrences:84206},{name:"Pubperf Analytics",company:"Pubperf", +homepage:"https://www.pubperf.com/",category:"analytics",domains:["*.pubperf.com"],totalExecutionTime:51392,totalOccurrences:400}]});var fN=de((lRe,pN)=>{d();var{createAPIFromDataset:zZ}=dN(),qZ=mN();pN.exports=zZ(qZ)});var Cs,fv=g(()=>{d();Cs=mn(fN(),1)});var Ft={};T(Ft,{DEFAULT_COMPARATOR:()=>KZ,arrayDoesNotContainNullOrUndefined:()=>QZ,binaryIndexOf:()=>VZ,intersectOrdered:()=>$Z,lowerBound:()=>yN,mergeOrdered:()=>YZ,nearestIndexFromBeginning:()=>XZ,nearestIndexFromEnd:()=>ZZ,removeElement:()=>HZ,sortRange:()=>GZ,upperBound:()=>JZ});function hv(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function WZ(e,t,n,r,a){let o=e[a];hv(e,r,a);let i=n;for(let c=n;c<r;++c)t(e[c],o)<0&&(hv(e,i,c),++i);return hv(e,r,i),i}function gv(e,t,n,r,a,o){if(r<=n)return;let i=Math.floor(Math.random()*(r-n))+n,c=WZ(e,t,n,r,i);a<c&&gv(e,t,n,c-1,a,o),c<o&&gv(e,t,c+1,r,a,o)}function GZ(e,t,n,r,a,o){return n===0&&r===e.length-1&&a===0&&o>=r?e.sort(t):gv(e,t,n,r,a,o),e}function gN(e,t,n,r){let a=[],o=0,i=0;for(;o<e.length&&i<t.length;){let c=n(e[o],t[i]);(r||!c)&&a.push(c<=0?e[o]:t[i]),c<=0&&o++,c>=0&&i++}if(r){for(;o<e.length;)a.push(e[o++]);for(;i<t.length;)a.push(t[i++])}return a}function yN(e,t,n,r,a){let o=r||0,i=a!==void 0?a:e.length;for(;o<i;){let c=o+i>>1;n(t,e[c])>0? +o=c+1:i=c}return i}function JZ(e,t,n,r,a){let o=r||0,i=a!==void 0?a:e.length;for(;o<i;){let c=o+i>>1;n(t,e[c])>=0?o=c+1:i=c}return i}function vN(e,t,n){let r=n==="END";if(e.length===0)return null;let a=0,o=e.length-1,i=0,c=!1,u=!1,l=0;do l=a+(o-a)/2,i=r?Math.ceil(l):Math.floor(l),c=t(e[i]),u=c===r,u?a=Math.min(o,i+(a===i?1:0)):o=Math.max(a,i+(o===i?-1:0));while(o!==a);return t(e[a])?a:null}function XZ(e,t){return vN(e,t,"BEGINNING")}function ZZ(e,t){return vN(e,t,"END")}function QZ(e){return!e.includes(null)&&!e.includes(void 0)}var HZ,VZ,$Z,YZ,KZ,bN=g(()=>{d();HZ=s((e,t,n)=>{let r=e.indexOf(t);if(r===-1)return!1;if(n)return e.splice(r,1),!0;for(let a=r+1,o=e.length;a<o;++a)e[a]!==t&&(e[r++]=e[a]);return e.length=r,!0},"removeElement");s(hv,"swap");s(WZ,"partition");s(gv,"quickSortRange");s(GZ,"sortRange");VZ=s((e,t,n)=>{let r=yN(e,t,n);return r<e.length&&n(t,e[r])===0?r:-1},"binaryIndexOf");s(gN,"mergeOrIntersect");$Z=s((e,t,n)=>gN(e,t,n,!1),"intersectOrdered"),YZ=s((e,t,n)=>gN(e,t,n, +!0),"mergeOrdered"),KZ=s((e,t)=>e<t?-1:e>t?1:0,"DEFAULT_COMPARATOR");s(yN,"lowerBound");s(JZ,"upperBound");s(vN,"nearestIndex");s(XZ,"nearestIndexFromBeginning");s(ZZ,"nearestIndexFromEnd");s(QZ,"arrayDoesNotContainNullOrUndefined")});var wN=g(()=>{d()});var DN=g(()=>{d()});var xN=g(()=>{d()});var EN=g(()=>{d()});var TN=g(()=>{d()});var Ce={};T(Ce,{Multimap:()=>Hp,getWithDefault:()=>oQ,inverse:()=>aQ});function oQ(e,t,n){let r=e.get(t);return r||(r=n(t),e.set(t,r)),r}var aQ,Hp,SN=g(()=>{d();aQ=s(function(e){let t=new Hp;for(let[n,r]of e.entries())t.set(r,n);return t},"inverse"),Hp=class{static{s(this,"Multimap")}map=new Map;set(t,n){let r=this.map.get(t);r||(r=new Set,this.map.set(t,r)),r.add(n)}get(t){return this.map.get(t)||new Set}has(t){return this.map.has(t)}hasValue(t,n){let r=this.map.get(t);return r?r.has(n):!1}get size(){return this.map.size}delete(t,n){let r=this.get(t);if(!r)return!1;let a=r.delete(n);return r.size||this.map.delete(t),a}deleteAll(t){this.map.delete(t)}keysArray(){return[...this.map.keys()]}keys(){return this.map.keys()}valuesArray(){let t=[];for(let n of this.map.values())t.push(...n.values());return t}clear(){this.map.clear()}};s(oQ,"getWithDefault")});var CN=g(()=>{d()});var ks={};T(ks,{aspectRatio:()=>mQ,clamp:()=>sQ,floor:()=>lQ,greatestCommonDivisor:()=>kN,mod:()=>cQ,toFixedIfFloating:()=>uQ,withThousandsSeparator:()=>pQ});var sQ,cQ,uQ,lQ,kN,dQ,mQ,pQ,FN=g(()=>{d();sQ=s((e,t,n)=>{let r=e;return e<t?r=t:e>n&&(r=n),r},"clamp"),cQ=s((e,t)=>(e%t+t)%t,"mod"),uQ=s(e=>{if(!e||Number.isNaN(Number(e)))return e;let t=Number(e);return t%1?t.toFixed(3):String(t)},"toFixedIfFloating"),lQ=s((e,t=0)=>{if(t>0&&t<1)return t=1/t,Math.floor(e/t)*t;let n=Math.pow(10,t);return Math.floor(e*n)/n},"floor"),kN=s((e,t)=>{for(e=Math.round(e),t=Math.round(t);t!==0;){let n=t;t=e%t,e=n}return e},"greatestCommonDivisor"),dQ=new Map([["8∶5","16∶10"]]),mQ=s((e,t)=>{let n=kN(e,t);n!==0&&(e/=n,t/=n);let r=`${e}∶${t}`;return dQ.get(r)||r},"aspectRatio"),pQ=s(function(e){let t=String(e),n=/(\d+)(\d{3})/;for(;t.match(n);)t=t.replace(n,"$1 $2");return t},"withThousandsSeparator")});var RN,yv=g(()=>{d();RN=s((e,t)=>e>t?1:e<t?-1:0,"compare")});var Wp={};T(Wp,{ServerTiming:()=>vv});var IN,vv,AN=g(()=>{d();yv();IN={deprecratedSyntax(){return"Deprecated syntax found. Please use: <name>;dur=<duration>;desc=<description>"},duplicateParameter(e){return`Duplicate parameter "${e}" ignored.`},noValueFoundForParameter(e){return`No value found for parameter "${e}".`},unrecognizedParameter(e){return`Unrecognized parameter "${e}".`},extraneousTrailingCharacters(){return"Extraneous trailing characters."},unableToParseValue(e,t){return`Unable to parse "${e}" value "${t}".`}},vv=class e{static{s(this,"ServerTiming")}metric;value;description;start;constructor(t,n,r,a){this.metric=t,this.value=n,this.description=r,this.start=a}static parseHeaders(t,n=IN){let r=t.filter(o=>o.name.toLowerCase()==="server-timing");if(!r.length)return null;let a=r.reduce((o,i)=>{let c=this.createFromHeaderValue(i.value,n);return o.push(...c.map(function(u){return new e(u.name,u.hasOwnProperty("dur")?u.dur:null,u.hasOwnProperty("desc")?u.desc:"",u.hasOwnProperty("\ +start")?u.start:null)})),o},[]);return a.sort((o,i)=>RN(o.metric.toLowerCase(),i.metric.toLowerCase())),a}static createFromHeaderValue(t,n=IN){function r(){t=t.replace(/^\s*/,"")}s(r,"trimLeadingWhiteSpace");function a(p){return console.assert(p.length===1),r(),t.charAt(0)!==p?!1:(t=t.substring(1),!0)}s(a,"consumeDelimiter");function o(){let p=/^(?:\s*)([\w!#$%&'*+\-.^`|~]+)(?:\s*)(.*)/.exec(t);return p?(t=p[2],p[1]):null}s(o,"consumeToken");function i(){return r(),t.charAt(0)==='"'?c():o()}s(i,"consumeTokenOrQuotedString");function c(){console.assert(t.charAt(0)==='"'),t=t.substring(1);let p="";for(;t.length;){let f=/^([^"\\]*)(.*)/.exec(t);if(!f)return null;if(p+=f[1],f[2].charAt(0)==='"')return t=f[2].substring(1),p;console.assert(f[2].charAt(0)==="\\"),p+=f[2].charAt(1),t=f[2].substring(2)}return null}s(c,"consumeQuotedString");function u(){let p=/([,;].*)/.exec(t);p&&(t=p[1])}s(u,"consumeExtraneous");let l=[],m;for(;(m=o())!==null;){let p={name:m};for(t.charAt(0)==="="&&this.showWarning( +n.deprecratedSyntax());a(";");){let f;if((f=o())===null)continue;f=f.toLowerCase();let h=this.getParserForParameter(f,n),y=null;if(a("=")&&(y=i(),u()),h){if(p.hasOwnProperty(f)){this.showWarning(n.duplicateParameter(f));continue}y===null&&this.showWarning(n.noValueFoundForParameter(f)),h.call(this,p,y)}else this.showWarning(n.unrecognizedParameter(f))}if(l.push(p),!a(","))break}return t.length&&this.showWarning(n.extraneousTrailingCharacters()),l}static getParserForParameter(t,n){switch(t){case"dur":{let r=function(a,o){if(a.dur=0,o!==null){let i=parseFloat(o);if(isNaN(i)){e.showWarning(n.unableToParseValue(t,o));return}a.dur=i}};return s(r,"durParser"),r}case"start":{let r=function(a,o){if(a.start=null,o!==null){let i=parseFloat(o);if(isNaN(i)){e.showWarning(n.unableToParseValue(t,o));return}a.start=i}};return s(r,"startParser"),r}case"desc":{let r=function(a,o){a.desc=o||""};return s(r,"descParser"),r}default:return null}}static showWarning(t){console.warn(`ServerTiming: ${t}`)}}});var _N=g(()=>{d()});var MN=g(()=>{d()});function Mu(e,t){throw new Error(t)}var bv=g(()=>{d();s(Mu,"assertNever")});var NN=g(()=>{d()});var ON=g(()=>{d()});var Yt=g(()=>{d();bN();wN();DN();xN();EN();TN();SN();CN();FN();AN();yv();_N();MN();bv();NN();ON();bv()});var Wr={};T(Wr,{configToCacheKey:()=>DQ,defaults:()=>wQ});function DQ(e){return JSON.stringify(e)}var wQ,LN=g(()=>{d();wQ=s(()=>({includeRuntimeCallStats:!1,showAllEvents:!1,debugMode:!1,maxInvalidationEventsPerEvent:20}),"defaults");s(DQ,"configToCacheKey")});var Sa={};T(Sa,{colorIsValid:()=>xQ,extensionPalette:()=>PN,isExtensionPayloadMarker:()=>BN,isExtensionPayloadTrackEntry:()=>UN,isSyntheticExtensionEntry:()=>TQ,isValidExtensionPayload:()=>EQ});function xQ(e){return PN.includes(e)}function BN(e){return e.dataType==="marker"}function UN(e){let t="track"in e&&!!e.track;return(e.dataType==="track-entry"||e.dataType===void 0)&&t}function EQ(e){return BN(e)||UN(e)}function TQ(e){return e.cat==="devtools.extension"}var PN,jN=g(()=>{d();PN=["primary","primary-light","primary-dark","secondary","secondary-light","secondary-dark","tertiary","tertiary-light","tertiary-dark","error","warning"];s(xQ,"colorIsValid");s(BN,"isExtensionPayloadMarker");s(UN,"isExtensionPayloadTrackEntry");s(EQ,"isValidExtensionPayload");s(TQ,"isSyntheticExtensionEntry")});var zN=g(()=>{d()});var I={};T(I,{MicroSeconds:()=>CQ,MilliSeconds:()=>kQ,Seconds:()=>FQ});function CQ(e){return e}function kQ(e){return e}function FQ(e){return e}var qN=g(()=>{d();s(CQ,"MicroSeconds");s(kQ,"MilliSeconds");s(FQ,"Seconds")});var C={};T(C,{CallFrameID:()=>hee,Categories:()=>Pte,MarkerName:()=>OQ,NO_NAVIGATION:()=>jQ,ProcessID:()=>yee,ProfileID:()=>fee,SampleIndex:()=>gee,SelectorTimingsKey:()=>zt,ThreadID:()=>vee,WorkerId:()=>bee,eventIsPageLoadEvent:()=>BQ,isAbortPostTaskCallback:()=>Nte,isActivateLayerTree:()=>oee,isAnimation:()=>Mee,isAuctionWorkletDoneWithProcess:()=>MQ,isAuctionWorkletRunningInProcess:()=>_Q,isBegin:()=>wee,isBeginCommitCompositorFrame:()=>zQ,isBeginFrame:()=>XQ,isBeginMainThreadFrame:()=>eee,isBeginRemoteFontLoad:()=>nte,isCommit:()=>nee,isCommitLoad:()=>_ee,isComplete:()=>YN,isCompositeLayers:()=>aee,isConsoleTime:()=>ote,isDecodeImage:()=>uee,isDecodeLazyPixelRef:()=>cee,isDispatch:()=>xee,isDisplayListItemListSnapshot:()=>gte,isDomLoading:()=>tte,isDrawFrame:()=>KQ,isDrawLazyPixelRef:()=>see,isDroppedFrame:()=>ZQ,isEnd:()=>Dee,isEventTiming:()=>Dv,isEventTimingEnd:()=>Pee,isEventTimingStart:()=>Bee,isFireAnimationFrame:()=>vte,isFireIdleCallback:()=>Tee,isFirstContentfulPaint:()=>QN, +isFirstPaint:()=>nO,isFlowPhase:()=>RQ,isFlowPhaseEvent:()=>Lte,isFrameCommittedInBrowser:()=>Aee,isFunctionCall:()=>Ite,isGPUTask:()=>Uee,isHandlePostMessage:()=>Cee,isInstant:()=>KN,isInteractiveTime:()=>aO,isInvalidateLayout:()=>pee,isInvalidationTracking:()=>iee,isJSInvocationEvent:()=>Ote,isLargestContentfulPaintCandidate:()=>eO,isLargestImagePaintCandidate:()=>Oee,isLargestTextPaintCandidate:()=>Lee,isLayerTreeHostImplSnapshot:()=>yte,isLayout:()=>mee,isLayoutImageUnsized:()=>GQ,isLayoutInvalidationTracking:()=>ZN,isLayoutShift:()=>XN,isLegacyTimelineFrame:()=>Bte,isLegacyTraceEventDrawFrameBegin:()=>JQ,isMainFrameViewport:()=>Zee,isMarkDOMContent:()=>rO,isMarkLoad:()=>tO,isMarkerEvent:()=>LQ,isNavigationStart:()=>iO,isNavigationStartUnreliable:()=>JN,isNeedsBeginFrameChanged:()=>tee,isNestableAsyncPhase:()=>HN,isNetworkTrackEntry:()=>Jee,isPaint:()=>dte,isPaintImage:()=>mte,isParseHTML:()=>ste,isParseMetaViewport:()=>qQ,isPerformanceMark:()=>ate,isPerformanceMeasure:()=>rte,isPhaseAsync:()=>wv, +isPipelineReporter:()=>VQ,isPrePaint:()=>Xee,isProcessName:()=>Ree,isProfile:()=>jee,isProfileCall:()=>lte,isProfileChunk:()=>qee,isRasterTask:()=>ree,isRenderFrameImplCreateChildFrame:()=>WQ,isRendererEvent:()=>Eee,isRequestAnimationFrame:()=>bte,isRequestIdleCallback:()=>xte,isRequestMainThreadFrame:()=>QQ,isResourceChangePriority:()=>Hee,isResourceFinish:()=>$ee,isResourceMarkAsCached:()=>Vee,isResourceReceiveResponse:()=>Gee,isResourceReceivedData:()=>Kee,isResourceSendRequest:()=>Wee,isResourceWillSendRequest:()=>Yee,isRunPostTaskCallback:()=>Mte,isRunTask:()=>AQ,isSchedulePostMessage:()=>See,isSchedulePostTaskCallback:()=>_te,isScheduleStyleInvalidationTracking:()=>GN,isScheduleStyleRecalculation:()=>HQ,isScreenshot:()=>NQ,isScrollLayer:()=>pte,isSelectorStats:()=>lee,isSetLayerId:()=>fte,isStyleInvalidatorInvalidationTracking:()=>$N,isStyleRecalcInvalidationTracking:()=>VN,isSyntheticAnimation:()=>Nee,isSyntheticBased:()=>$Q,isSyntheticConsoleTiming:()=>ete,isSyntheticCpuProfile:()=>zee, +isSyntheticInteraction:()=>YQ,isSyntheticLayoutShift:()=>cte,isSyntheticLayoutShiftCluster:()=>ute,isSyntheticNetworkRequest:()=>oO,isSyntheticServerTiming:()=>Ate,isSyntheticUserTiming:()=>Qee,isSyntheticWebSocketConnection:()=>xv,isThreadName:()=>Fee,isTimeStamp:()=>ite,isTimerFire:()=>Dte,isTimerInstall:()=>wte,isTracingSessionIdForWorker:()=>UQ,isTracingStartedInBrowser:()=>Iee,isUpdateCounters:()=>kee,isUpdateLayer:()=>hte,isUpdateLayoutTree:()=>dee,isUserTiming:()=>Ev,isV8Compile:()=>Rte,isWebSocketCreate:()=>sO,isWebSocketDestroy:()=>kte,isWebSocketEvent:()=>Fte,isWebSocketInfo:()=>cO,isWebSocketReceive:()=>Tte,isWebSocketReceiveHandshakeResponse:()=>Cte,isWebSocketSend:()=>Ete,isWebSocketSendHandshakeRequest:()=>Ste,isWebSocketTraceEvent:()=>Tv,isWebSocketTransfer:()=>uO,objectIsCallFrame:()=>IQ});function HN(e){return e==="b"||e==="e"||e==="n"}function wv(e){return HN(e)||e==="S"||e==="T"||e==="F"||e==="p"}function RQ(e){return e==="s"||e==="t"||e==="f"}function IQ(e){return"f\ +unctionName"in e&&typeof e.functionName=="string"&&"scriptId"in e&&(typeof e.scriptId=="string"||typeof e.scriptId=="number")&&"columnNumber"in e&&typeof e.columnNumber=="number"&&"lineNumber"in e&&typeof e.lineNumber=="number"&&"url"in e&&typeof e.url=="string"}function AQ(e){return e.name==="RunTask"}function _Q(e){return e.name==="AuctionWorkletRunningInProcess"}function MQ(e){return e.name==="AuctionWorkletDoneWithProcess"}function NQ(e){return e.name==="Screenshot"}function LQ(e){return e.ph==="I"||e.ph==="R"?WN.some(t=>t(e)):!1}function BQ(e){return e.ph==="I"||e.ph==="R"?PQ.some(t=>t(e)):!1}function UQ(e){return e.name==="TracingSessionIdForWorker"}function GN(e){return e.name==="ScheduleStyleInvalidationTracking"}function VN(e){return e.name==="StyleRecalcInvalidationTracking"}function $N(e){return e.name==="StyleInvalidatorInvalidationTracking"}function zQ(e){return e.name==="BeginCommitCompositorFrame"}function qQ(e){return e.name==="ParseMetaViewport"}function HQ(e){return e. +name==="ScheduleStyleRecalculation"}function WQ(e){return e.name==="RenderFrameImpl::createChildFrame"}function GQ(e){return e.name==="LayoutImageUnsized"}function VQ(e){return e.name==="PipelineReporter"}function $Q(e){return"rawSourceEvent"in e}function YQ(e){return!!("interactionId"in e&&e.args?.data&&"beginEvent"in e.args.data&&"endEvent"in e.args.data)}function KQ(e){return e.name==="DrawFrame"&&e.ph==="I"}function JQ(e){return e.name==="DrawFrame"&&e.ph==="b"}function XQ(e){return!!(e.name==="BeginFrame"&&e.args&&"frameSeqId"in e.args)}function ZQ(e){return!!(e.name==="DroppedFrame"&&e.args&&"frameSeqId"in e.args)}function QQ(e){return e.name==="RequestMainThreadFrame"}function eee(e){return e.name==="BeginMainThreadFrame"}function tee(e){return e.name==="NeedsBeginFrameChanged"}function nee(e){return!!(e.name==="Commit"&&e.args&&"frameSeqId"in e.args)}function ree(e){return e.name==="RasterTask"}function aee(e){return e.name==="CompositeLayers"}function oee(e){return e.name==="A\ +ctivateLayerTree"}function iee(e){return GN(e)||VN(e)||$N(e)||ZN(e)}function see(e){return e.name==="Draw LazyPixelRef"}function cee(e){return e.name==="Decode LazyPixelRef"}function uee(e){return e.name==="Decode Image"}function lee(e){return e.name==="SelectorStats"}function dee(e){return e.name==="UpdateLayoutTree"}function mee(e){return e.name==="Layout"}function pee(e){return e.name==="InvalidateLayout"}function fee(e){return e}function hee(e){return e}function gee(e){return e}function yee(e){return e}function vee(e){return e}function bee(e){return e}function YN(e){return e.ph==="X"}function wee(e){return e.ph==="B"}function Dee(e){return e.ph==="E"}function xee(e){return e.name==="EventDispatch"}function KN(e){return e.ph==="I"}function Eee(e){return KN(e)||YN(e)}function Tee(e){return e.name==="FireIdleCallback"}function See(e){return e.name==="SchedulePostMessage"}function Cee(e){return e.name==="HandlePostMessage"}function kee(e){return e.name==="UpdateCounters"}function Fee(e){ +return e.name==="thread_name"}function Ree(e){return e.name==="process_name"}function Iee(e){return e.name==="TracingStartedInBrowser"}function Aee(e){return e.name==="FrameCommittedInBrowser"}function _ee(e){return e.name==="CommitLoad"}function JN(e){return e.name==="navigationStart"}function Mee(e){return e.name==="Animation"&&e.cat.includes("devtools.timeline")}function Nee(e){if(e.name!=="Animation"||!e.cat.includes("devtools.timeline"))return!1;let t=e.args?.data;return t?"beginEvent"in t&&"endEvent"in t:!1}function XN(e){return e.name==="LayoutShift"}function ZN(e){return e.name==="LayoutInvalidationTracking"}function QN(e){return e.name==="firstContentfulPaint"}function eO(e){return e.name==="largestContentfulPaint::Candidate"}function Oee(e){return e.name==="LargestImagePaint::Candidate"}function Lee(e){return e.name==="LargestTextPaint::Candidate"}function tO(e){return e.name==="MarkLoad"}function nO(e){return e.name==="firstPaint"}function rO(e){return e.name==="MarkDOMConte\ +nt"}function aO(e){return e.name==="InteractiveTime"}function Dv(e){return e.name==="EventTiming"}function Pee(e){return Dv(e)&&e.ph==="e"}function Bee(e){return Dv(e)&&e.ph==="b"}function Uee(e){return e.name==="GPUTask"}function jee(e){return e.name==="Profile"}function zee(e){return e.name==="CpuProfile"}function qee(e){return e.name==="ProfileChunk"}function Hee(e){return e.name==="ResourceChangePriority"}function Wee(e){return e.name==="ResourceSendRequest"}function Gee(e){return e.name==="ResourceReceiveResponse"}function Vee(e){return e.name==="ResourceMarkAsCached"}function $ee(e){return e.name==="ResourceFinish"}function Yee(e){return e.name==="ResourceWillSendRequest"}function Kee(e){return e.name==="ResourceReceivedData"}function oO(e){return e.name==="SyntheticNetworkRequest"}function xv(e){return e.name==="SyntheticWebSocketConnection"}function Jee(e){return oO(e)||xv(e)||Tv(e)}function Xee(e){return e.name==="PrePaint"}function iO(e){return!!(JN(e)&&e.args.data&&e.args.data. +documentLoaderURL!=="")}function Zee(e){return e.name==="PaintTimingVisualizer::Viewport"}function Qee(e){if(e.cat!=="blink.user_timing")return!1;let t=e.args?.data;return t?"beginEvent"in t&&"endEvent"in t:!1}function ete(e){if(e.cat!=="blink.console")return!1;let t=e.args?.data;return t?"beginEvent"in t&&"endEvent"in t:!1}function Ev(e){return e.cat==="blink.user_timing"}function tte(e){return e.name==="domLoading"}function nte(e){return e.name==="BeginRemoteFontLoad"}function rte(e){return Ev(e)&&wv(e.ph)}function ate(e){return Ev(e)&&(e.ph==="R"||e.ph==="I")}function ote(e){return e.cat==="blink.console"&&wv(e.ph)}function ite(e){return e.ph==="I"&&e.name==="TimeStamp"}function ste(e){return e.name==="ParseHTML"}function cte(e){return!XN(e)||!e.args.data?!1:"rawEvent"in e.args.data}function ute(e){return e.name==="SyntheticLayoutShiftCluster"}function lte(e){return"callFrame"in e}function dte(e){return e.name==="Paint"}function mte(e){return e.name==="PaintImage"}function pte(e){return e. +name==="ScrollLayer"}function fte(e){return e.name==="SetLayerTreeId"}function hte(e){return e.name==="UpdateLayer"}function gte(e){return e.name==="cc::DisplayItemList"}function yte(e){return e.name==="cc::LayerTreeHostImpl"}function vte(e){return e.name==="FireAnimationFrame"}function bte(e){return e.name==="RequestAnimationFrame"}function wte(e){return e.name==="TimerInstall"}function Dte(e){return e.name==="TimerFire"}function xte(e){return e.name==="RequestIdleCallback"}function sO(e){return e.name==="WebSocketCreate"}function cO(e){return e.name==="WebSocketSendHandshakeRequest"||e.name==="WebSocketReceiveHandshakeResponse"||e.name==="WebSocketDestroy"}function uO(e){return e.name==="WebSocketSend"||e.name==="WebSocketReceive"}function Ete(e){return e.name==="WebSocketSend"}function Tte(e){return e.name==="WebSocketReceive"}function Ste(e){return e.name==="WebSocketSendHandshakeRequest"}function Cte(e){return e.name==="WebSocketReceiveHandshakeResponse"}function kte(e){return e.name=== +"WebSocketDestroy"}function Tv(e){return sO(e)||cO(e)||uO(e)}function Fte(e){return Tv(e)||xv(e)}function Rte(e){return e.name==="v8.compile"}function Ite(e){return e.name==="FunctionCall"}function Ate(e){return e.cat==="devtools.server-timing"}function _te(e){return e.name==="SchedulePostTaskCallback"}function Mte(e){return e.name==="RunPostTaskCallback"}function Nte(e){return e.name==="AbortPostTaskCallback"}function Ote(e){switch(e.name){case"RunMicrotasks":case"FunctionCall":case"EvaluateScript":case"v8.evaluateModule":case"EventDispatch":case"V8.Execute":return!0}return!!(e.name.startsWith("v8")||e.name.startsWith("V8"))}function Lte(e){return e.ph==="s"||e.ph==="t"||e.ph==="f"}function Bte(e){return"idle"in e&&typeof e.idle=="boolean"}var WN,OQ,PQ,jQ,zt,Pte,Sv=g(()=>{d();s(HN,"isNestableAsyncPhase");s(wv,"isPhaseAsync");s(RQ,"isFlowPhase");s(IQ,"objectIsCallFrame");s(AQ,"isRunTask");s(_Q,"isAuctionWorkletRunningInProcess");s(MQ,"isAuctionWorkletDoneWithProcess");s(NQ,"isScreensho\ +t");WN=[rO,tO,nO,QN,eO,iO],OQ=["MarkDOMContent","MarkLoad","firstPaint","firstContentfulPaint","largestContentfulPaint::Candidate"];s(LQ,"isMarkerEvent");PQ=[...WN,aO];s(BQ,"eventIsPageLoadEvent");s(UQ,"isTracingSessionIdForWorker");jQ="NO_NAVIGATION";s(GN,"isScheduleStyleInvalidationTracking");s(VN,"isStyleRecalcInvalidationTracking");s($N,"isStyleInvalidatorInvalidationTracking");s(zQ,"isBeginCommitCompositorFrame");s(qQ,"isParseMetaViewport");s(HQ,"isScheduleStyleRecalculation");s(WQ,"isRenderFrameImplCreateChildFrame");s(GQ,"isLayoutImageUnsized");s(VQ,"isPipelineReporter");s($Q,"isSyntheticBased");s(YQ,"isSyntheticInteraction");s(KQ,"isDrawFrame");s(JQ,"isLegacyTraceEventDrawFrameBegin");s(XQ,"isBeginFrame");s(ZQ,"isDroppedFrame");s(QQ,"isRequestMainThreadFrame");s(eee,"isBeginMainThreadFrame");s(tee,"isNeedsBeginFrameChanged");s(nee,"isCommit");s(ree,"isRasterTask");s(aee,"isCompositeLayers");s(oee,"isActivateLayerTree");s(iee,"isInvalidationTracking");s(see,"isDrawLazyPixelRef"); +s(cee,"isDecodeLazyPixelRef");s(uee,"isDecodeImage");(function(e){e.Elapsed="elapsed (us)",e.RejectPercentage="reject_percentage",e.FastRejectCount="fast_reject_count",e.MatchAttempts="match_attempts",e.MatchCount="match_count",e.Selector="selector",e.StyleSheetId="style_sheet_id"})(zt||(zt={}));s(lee,"isSelectorStats");s(dee,"isUpdateLayoutTree");s(mee,"isLayout");s(pee,"isInvalidateLayout");s(fee,"ProfileID");s(hee,"CallFrameID");s(gee,"SampleIndex");s(yee,"ProcessID");s(vee,"ThreadID");s(bee,"WorkerId");s(YN,"isComplete");s(wee,"isBegin");s(Dee,"isEnd");s(xee,"isDispatch");s(KN,"isInstant");s(Eee,"isRendererEvent");s(Tee,"isFireIdleCallback");s(See,"isSchedulePostMessage");s(Cee,"isHandlePostMessage");s(kee,"isUpdateCounters");s(Fee,"isThreadName");s(Ree,"isProcessName");s(Iee,"isTracingStartedInBrowser");s(Aee,"isFrameCommittedInBrowser");s(_ee,"isCommitLoad");s(JN,"isNavigationStartUnreliable");s(Mee,"isAnimation");s(Nee,"isSyntheticAnimation");s(XN,"isLayoutShift");s(ZN,"isLayout\ +InvalidationTracking");s(QN,"isFirstContentfulPaint");s(eO,"isLargestContentfulPaintCandidate");s(Oee,"isLargestImagePaintCandidate");s(Lee,"isLargestTextPaintCandidate");s(tO,"isMarkLoad");s(nO,"isFirstPaint");s(rO,"isMarkDOMContent");s(aO,"isInteractiveTime");s(Dv,"isEventTiming");s(Pee,"isEventTimingEnd");s(Bee,"isEventTimingStart");s(Uee,"isGPUTask");s(jee,"isProfile");s(zee,"isSyntheticCpuProfile");s(qee,"isProfileChunk");s(Hee,"isResourceChangePriority");s(Wee,"isResourceSendRequest");s(Gee,"isResourceReceiveResponse");s(Vee,"isResourceMarkAsCached");s($ee,"isResourceFinish");s(Yee,"isResourceWillSendRequest");s(Kee,"isResourceReceivedData");s(oO,"isSyntheticNetworkRequest");s(xv,"isSyntheticWebSocketConnection");s(Jee,"isNetworkTrackEntry");s(Xee,"isPrePaint");s(iO,"isNavigationStart");s(Zee,"isMainFrameViewport");s(Qee,"isSyntheticUserTiming");s(ete,"isSyntheticConsoleTiming");s(Ev,"isUserTiming");s(tte,"isDomLoading");s(nte,"isBeginRemoteFontLoad");s(rte,"isPerformanceMeasure"); +s(ate,"isPerformanceMark");s(ote,"isConsoleTime");s(ite,"isTimeStamp");s(ste,"isParseHTML");s(cte,"isSyntheticLayoutShift");s(ute,"isSyntheticLayoutShiftCluster");s(lte,"isProfileCall");s(dte,"isPaint");s(mte,"isPaintImage");s(pte,"isScrollLayer");s(fte,"isSetLayerId");s(hte,"isUpdateLayer");s(gte,"isDisplayListItemListSnapshot");s(yte,"isLayerTreeHostImplSnapshot");s(vte,"isFireAnimationFrame");s(bte,"isRequestAnimationFrame");s(wte,"isTimerInstall");s(Dte,"isTimerFire");s(xte,"isRequestIdleCallback");s(sO,"isWebSocketCreate");s(cO,"isWebSocketInfo");s(uO,"isWebSocketTransfer");s(Ete,"isWebSocketSend");s(Tte,"isWebSocketReceive");s(Ste,"isWebSocketSendHandshakeRequest");s(Cte,"isWebSocketReceiveHandshakeResponse");s(kte,"isWebSocketDestroy");s(Tv,"isWebSocketTraceEvent");s(Fte,"isWebSocketEvent");s(Rte,"isV8Compile");s(Ite,"isFunctionCall");s(Ate,"isSyntheticServerTiming");s(_te,"isSchedulePostTaskCallback");s(Mte,"isRunPostTaskCallback");s(Nte,"isAbortPostTaskCallback");s(Ote,"isJSIn\ +vocationEvent");s(Lte,"isFlowPhaseEvent");Pte={Console:"blink.console",UserTiming:"blink.user_timing",Loading:"loading"};s(Bte,"isLegacyTimelineFrame")});var De=g(()=>{d();LN();jN();zN();qN();Sv()});var en={};T(en,{SyntheticEventsManager:()=>Nu});var Gp,Nu,Cv=g(()=>{d();Gp=null,Nu=class e{static{s(this,"SyntheticEventsManager")}#e=[];#t=[];static activate(t){Gp=t}static createAndActivate(t){let n=new e(t);return e.activate(n),n}static getActiveManager(){if(!Gp)throw new Error("Attempted to get a SyntheticEventsManager without initializing");return Gp}static reset(){Gp=null}static registerSyntheticEvent(t){try{return e.getActiveManager().registerSyntheticEvent(t)}catch{return t}}static registerServerTiming(t){return t}constructor(t){this.#t=t}registerSyntheticEvent(t){let n=this.#t.indexOf(t.rawSourceEvent);if(n<0)throw new Error("Attempted to register a synthetic event paired to an unknown raw event.");let r=t;return this.#e[n]=r,r}syntheticEventForRawEventIndex(t){let n=this.#e.at(t);if(!n)throw new Error(`Attempted to get a synthetic event from an unknown raw event index: ${t}`);return n}getSyntheticTraces(){return this.#e}getRawTraceEvents(){return this.#t}}});var J={};T(J,{boundsIncludeTimeRange:()=>Jte,eventIsInBounds:()=>kv,eventTimingsMicroSeconds:()=>hi,eventTimingsMilliSeconds:()=>qte,eventTimingsSeconds:()=>Hte,expandWindowByPercentOrToOneMillisecond:()=>zte,microSecondsToMilliseconds:()=>Hn,microSecondsToSeconds:()=>Vp,millisecondsToMicroseconds:()=>wr,secondsToMicroseconds:()=>Ute,secondsToMilliseconds:()=>lO,timeStampForEventAdjustedByClosestNavigation:()=>jte,timestampIsInBounds:()=>Xte,traceWindowFromEvent:()=>Kte,traceWindowFromMicroSeconds:()=>Yte,traceWindowFromMilliSeconds:()=>$te,traceWindowMicroSecondsToMilliSeconds:()=>Vte,traceWindowMilliSeconds:()=>Wte,traceWindowMillisecondsToMicroSeconds:()=>Gte,windowFitsInsideBounds:()=>Zte,windowsEqual:()=>Qte});function jte(e,t,n,r){let a=e.ts-t.min;if(e.args?.data?.navigationId){let o=n.get(e.args.data.navigationId);o&&(a=e.ts-o.ts)}else if(e.args?.data?.frame){let o=Fv(e,e.args.data.frame,r);o&&(a=e.ts-o.ts)}return I.MicroSeconds(a)}function zte(e,t,n){let r=e.min-e.range*(n/100)/ +2,a=e.max+e.range*(n/100)/2;if(a-r<1e3){let i=(e.min+e.max)/2;r=i-500,a=i+500}return r=Math.max(r,t.min),a=Math.min(a,t.max),{min:I.MicroSeconds(r),max:I.MicroSeconds(a),range:I.MicroSeconds(a-r)}}function hi(e){return{startTime:e.ts,endTime:I.MicroSeconds(e.ts+(e.dur??I.MicroSeconds(0))),duration:I.MicroSeconds(e.dur||0)}}function qte(e){let t=hi(e);return{startTime:Hn(t.startTime),endTime:Hn(t.endTime),duration:Hn(t.duration)}}function Hte(e){let t=hi(e);return{startTime:Vp(t.startTime),endTime:Vp(t.endTime),duration:Vp(t.duration)}}function Wte(e){return{min:Hn(e.min),max:Hn(e.max),range:Hn(e.range)}}function Gte(e){return{min:wr(e.min),max:wr(e.max),range:wr(e.range)}}function Vte(e){return{min:Hn(e.min),max:Hn(e.max),range:Hn(e.range)}}function $te(e,t){return{min:wr(e),max:wr(t),range:I.MicroSeconds(wr(t)-wr(e))}}function Yte(e,t){return{min:e,max:t,range:I.MicroSeconds(t-e)}}function Kte(e){return{min:e.ts,max:I.MicroSeconds(e.ts+(e.dur??0)),range:e.dur??I.MicroSeconds(0)}}function Jte(e){ +let{min:t,max:n}=e.bounds,{min:r,max:a}=e.timeRange;return t<=a&&n>=r}function kv(e,t){let n=e.ts;return n<=t.max&&t.min<=n+(e.dur??0)}function Xte(e,t){return t>=e.min&&t<=e.max}function Zte(e){return e.window.min>=e.bounds.min&&e.window.max<=e.bounds.max}function Qte(e,t){return e.min===t.min&&e.max===t.max}var wr,lO,Ute,Hn,Vp,Ou=g(()=>{d();De();Lu();wr=s(e=>I.MicroSeconds(e*1e3),"millisecondsToMicroseconds"),lO=s(e=>I.MilliSeconds(e*1e3),"secondsToMilliseconds"),Ute=s(e=>wr(lO(e)),"secondsToMicroseconds"),Hn=s(e=>I.MilliSeconds(e/1e3),"microSecondsToMilliseconds"),Vp=s(e=>I.Seconds(e/1e3/1e3),"microSecondsToSeconds");s(jte,"timeStampForEventAdjustedByClosestNavigation");s(zte,"expandWindowByPercentOrToOneMillisecond");s(hi,"eventTimingsMicroSeconds");s(qte,"eventTimingsMilliSeconds");s(Hte,"eventTimingsSeconds");s(Wte,"traceWindowMilliSeconds");s(Gte,"traceWindowMillisecondsToMicroSeconds");s(Vte,"traceWindowMicroSecondsToMilliSeconds");s($te,"traceWindowFromMilliSeconds");s(Yte,"tr\ +aceWindowFromMicroSeconds");s(Kte,"traceWindowFromEvent");s(Jte,"boundsIncludeTimeRange");s(kv,"eventIsInBounds");s(Xte,"timestampIsInBounds");s(Zte,"windowFitsInsideBounds");s(Qte,"windowsEqual")});var Ve={};T(Ve,{activeURLForFrameAtTime:()=>nne,addEventToProcessThread:()=>tne,createMatchedSortedSyntheticEvents:()=>rne,createSortedSyntheticEvents:()=>pO,eventHasCategory:()=>fne,eventTimeComparator:()=>Av,extractId:()=>dO,extractOriginFromTrace:()=>ene,findNextEventAfterTimestamp:()=>lne,findPreviousEventBeforeTimestamp:()=>dne,findUpdateLayoutTreeEvents:()=>une,forEachEvent:()=>mne,frameIDForEvent:()=>sne,getNavigationForTraceEvent:()=>Fv,getZeroIndexedLineAndColumnForEvent:()=>ane,getZeroIndexedStackTraceForEvent:()=>one,isTopLevelEvent:()=>fO,makeProfileCall:()=>Yp,makeZeroBasedCallFrame:()=>Iv,matchEvents:()=>mO,mergeEventsInOrder:()=>Mv,nodeIdForInvalidationEvent:()=>hne,sortTraceEventsInPlace:()=>_v,stackTraceForEvent:()=>$p});function $p(e){return e.args?.data?.stackTrace?e.args.data.stackTrace:e.args?.stackTrace?e.args.stackTrace:C.isUpdateLayoutTree(e)?e.args.beginData?.stackTrace||null:Sa.isSyntheticExtensionEntry(e)||C.isSyntheticUserTiming(e)?$p(e.rawSourceEvent):null} +function ene(e){let t=new URL(e);return t?t.host.startsWith("www.")?t.host.slice(4):t.host:null}function tne(e,t){let{tid:n,pid:r}=e,a=t.get(r);a||(a=new Map);let o=a.get(n);o||(o=[]),o.push(e),a.set(e.tid,o),t.set(e.pid,a)}function Av(e,t){let n=e.ts,r=t.ts;if(n<r)return-1;if(n>r)return 1;let a=e.dur??0,o=t.dur??0,i=n+a,c=r+o;return i>c?-1:i<c?1:0}function _v(e){e.sort(Av)}function Mv(e,t){let n=[],r=0,a=0;for(;r<e.length&&a<t.length;){let o=e[r],i=t[a],c=Av(o,i);c<=0&&(n.push(o),r++),c===1&&(n.push(i),a++)}for(;r<e.length;)n.push(e[r++]);for(;a<t.length;)n.push(t[a++]);return n}function Fv(e,t,n){let r=n.get(t);if(!r||t==="")return null;let a=Ft.nearestIndexFromEnd(r,o=>o.ts<=e.ts);return a===null?null:r[a]}function dO(e){return e.id??e.id2?.global??e.id2?.local}function nne(e,t,n){let r=n.get(e);if(!r)return null;for(let a of r.values())for(let o of a)if(!(o.window.min>t||o.window.max<t))return o.frame.url;return null}function Yp(e,t,n,r,a,o){return{cat:"",name:"ProfileCall",nodeId:e. +id,args:{},ph:"X",pid:a,tid:o,ts:r,dur:I.MicroSeconds(0),callFrame:e.callFrame,sampleIndex:n,profileId:t}}function mO(e){let t=new Map;for(let n of e){let r=Rv(n);if(r===void 0)continue;let a=Ce.getWithDefault(t,r,()=>({begin:null,end:null,instant:[]})),o=n.ph==="b",i=n.ph==="e",c=n.ph==="n";o?a.begin=n:i?a.end=n:c&&(a.instant||(a.instant=[]),a.instant.push(n))}return t}function Rv(e){let t=dO(e);return t&&`${e.cat}:${t}:${e.name}`}function pO(e,t){let n=[];for(let[r,a]of e.entries()){let l=function(f){let h=f.instantEvents?f.instantEvents.some(v=>r===Rv(v)):!1,y=f.endEvent?r===Rv(f.endEvent):!1;return!!r&&(h||y)};s(l,"eventsArePairable");let o=a.begin,i=a.end,c=a.instant;if(!o||!(i||c))continue;let u={beginEvent:o,endEvent:i,instantEvents:c};if(!l(u))continue;let m=i||o,p=Nu.registerSyntheticEvent({rawSourceEvent:o,cat:m.cat,ph:m.ph,pid:m.pid,tid:m.tid,id:r,name:o.name,dur:I.MicroSeconds(m.ts-o.ts),ts:o.ts,args:{data:u}});p.dur<0||(t?.(p),n.push(p))}return n.sort((r,a)=>r.ts-a.ts)}function rne(e,t){ +let n=mO(e);return pO(n,t)}function ane(e){let t=ine(e),{lineNumber:n,columnNumber:r}=t;switch(e.name){case"FunctionCall":case"EvaluateScript":case"v8.compile":case"v8.produceCache":return{lineNumber:typeof n=="number"?n-1:void 0,columnNumber:typeof r=="number"?r-1:void 0};default:return t}}function one(e){let t=$p(e);return t?t.map(n=>{switch(e.name){case"ScheduleStyleRecalculation":case"InvalidateLayout":case"UpdateLayoutTree":return Iv(n);default:if(C.isUserTiming(e)||Sa.isSyntheticExtensionEntry(e))return Iv(n)}return n}):null}function Iv(e){let t={...e};return t.lineNumber=e.lineNumber&&e.lineNumber-1,t.columnNumber=e.columnNumber&&e.columnNumber-1,t}function ine(e){if(!e.args?.data)return{lineNumber:void 0,columnNumber:void 0};let t,n;return"lineNumber"in e.args.data&&typeof e.args.data.lineNumber=="number"&&(t=e.args.data.lineNumber),"columnNumber"in e.args.data&&typeof e.args.data.columnNumber=="number"&&(n=e.args.data.columnNumber),{lineNumber:t,columnNumber:n}}function sne(e){ +return e.args&&"beginData"in e.args&&typeof e.args.beginData=="object"&&e.args.beginData!==null&&"frame"in e.args.beginData&&typeof e.args.beginData.frame=="string"?e.args.beginData.frame:e.args?.data?.frame?e.args.data.frame:null}function fO(e){return e.name==="JSRoot"&&e.cat==="toplevel"?!0:e.cat.includes(cne)&&e.name==="RunTask"}function hO(e,t){let n=Ft.upperBound(e,t,(r,a)=>r-a.ts)-1;for(;n>0&&!fO(e[n]);)n--;return Math.max(n,0)}function une(e,t,n){let r=[],a=hO(e,t);for(let o=a;o<e.length;o++){let i=e[o];C.isUpdateLayoutTree(i)&&(i.ts>=(n||1/0)||r.push(i))}return r}function lne(e,t){let n=Ft.nearestIndexFromBeginning(e,r=>t<r.ts);return n===null?null:e[n]}function dne(e,t){let n=Ft.nearestIndexFromEnd(e,r=>r.ts<t);return n===null?null:e[n]}function mne(e,t){let n=t.startTime??I.MicroSeconds(0),r=t.endTime||I.MicroSeconds(1/0),a=t.ignoreAsyncEvents!==!1,o=[],i=hO(e,n);for(let c=i;c<e.length;c++){let u=e[c],l=hi(u);if(l.endTime<n)continue;if(l.startTime>r)break;if(a&&C.isPhaseAsync( +u.ph)||C.isFlowPhase(u.ph))continue;let p=o.at(-1),f=p?hi(p).endTime:null;for(;p&&f&&f<=l.startTime;)o.pop(),t.onEndEvent(p),p=o.at(-1),f=p?hi(p).endTime:null;t.eventFilter&&!t.eventFilter(u)||(l.duration?(t.onStartEvent(u),o.push(u)):t.onInstantEvent&&t.onInstantEvent(u))}for(;o.length;){let c=o.pop();c&&t.onEndEvent(c)}}function fne(e,t){let n=pne.get(e.cat);return n||(n=new Set(e.cat.split(",")||[])),n.has(t)}function hne(e){return e.args.data.nodeId??null}var cne,pne,Lu=g(()=>{d();Yt();De();Cv();Ou();s($p,"stackTraceForEvent");s(ene,"extractOriginFromTrace");s(tne,"addEventToProcessThread");s(Av,"eventTimeComparator");s(_v,"sortTraceEventsInPlace");s(Mv,"mergeEventsInOrder");s(Fv,"getNavigationForTraceEvent");s(dO,"extractId");s(nne,"activeURLForFrameAtTime");s(Yp,"makeProfileCall");s(mO,"matchEvents");s(Rv,"getSyntheticId");s(pO,"createSortedSyntheticEvents");s(rne,"createMatchedSortedSyntheticEvents");s(ane,"getZeroIndexedLineAndColumnForEvent");s(one,"getZeroIndexedStackTraceFor\ +Event");s(Iv,"makeZeroBasedCallFrame");s(ine,"getRawLineAndColumnNumbersForEvent");s(sne,"frameIDForEvent");cne="disabled-by-default-devtools.timeline";s(fO,"isTopLevelEvent");s(hO,"topLevelEventIndexEndingAfter");s(une,"findUpdateLayoutTreeEvents");s(lne,"findNextEventAfterTimestamp");s(dne,"findPreviousEventBeforeTimestamp");s(mne,"forEachEvent");pne=new Map;s(fne,"eventHasCategory");s(hne,"nodeIdForInvalidationEvent")});var co={};T(co,{AINode:()=>Ov,canBuildTreesFromEvents:()=>Bv,makeEmptyTraceEntryNode:()=>vO,makeEmptyTraceEntryTree:()=>yO,makeTraceEntryNodeId:()=>gO,treify:()=>Lv,walkEntireTree:()=>yne,walkTreeFromEntry:()=>gne});function Lv(e,t){let n=new Map,r=[];Nv=-1;let a=yO();for(let o=0;o<e.length;o++){let i=e[o];if(t&&!t.filter.has(i.name))continue;let c=i.dur||0,u=gO(),l=vO(i,u);if(r.length===0){a.roots.add(l),l.selfTime=I.MicroSeconds(c),r.push(l),a.maxDepth=Math.max(a.maxDepth,r.length),n.set(i,l);continue}let m=r.at(-1);if(m===void 0)throw new Error("Impossible: no parent node found in the stack");let p=m.entry,f=i.ts,h=p.ts,y=p.dur||0,v=f+c,w=h+y;if(f<h)throw new Error("Impossible: current event starts before the parent event");if(f>=w){r.pop(),o--,Nv--;continue}v>w||(l.depth=r.length,l.parent=m,m.children.push(l),l.selfTime=I.MicroSeconds(c),m.selfTime!==void 0&&(m.selfTime=I.MicroSeconds(m.selfTime-(i.dur||0))),r.push(l),a.maxDepth=Math.max(a.maxDepth,r.length),n.set(i,l))}return{tree:a, +entryToNode:n}}function gne(e,t,n,r){let a=e.get(t);a&&Pv(e,a,n,r)}function yne(e,t,n,r,a,o){for(let i of t.roots)Pv(e,i,n,r,a,o)}function Pv(e,t,n,r,a,o){if(!(a&&!vne(t,a))&&!(typeof o<"u"&&I.MicroSeconds(t.entry.ts+I.MicroSeconds(t.entry.dur??0))<o)){n(t.entry);for(let i of t.children)Pv(e,i,n,r,a,o);r(t.entry)}}function vne(e,t){return kv(e.entry,t)}function Bv(e){let t=[];for(let n of e){let r=n.ts,a=n.ts+(n.dur??0),o=t.at(-1);if(o===void 0){t.push(n);continue}let i=o.ts+(o.dur??0);for(;t.length&&r>=i&&(t.pop(),o=t.at(-1),o!==void 0);)i=o.ts+(o.dur??0);if(t.length&&a>i)return!1;t.push(n)}return!0}var Nv,gO,yO,vO,Ov,Uv=g(()=>{d();De();Ou();Nv=0,gO=s(()=>++Nv,"makeTraceEntryNodeId"),yO=s(()=>({roots:new Set,maxDepth:0}),"makeEmptyTraceEntryTree"),vO=s((e,t)=>({entry:e,id:t,parent:null,children:[],depth:0}),"makeEmptyTraceEntryNode"),Ov=class e{static{s(this,"AINode")}event;name;duration;selfDuration;id;children;url;selected;constructor(t){this.event=t,this.name=t.name,this.duration=t. +dur===void 0?void 0:Hn(t.dur),C.isProfileCall(t)&&(this.name=t.callFrame.functionName||"(anonymous)",this.url=t.callFrame.url)}toJSON(){return{selected:this.selected,name:this.name,url:this.url,dur:this.duration===void 0?void 0:Math.round(this.duration*10)/10,self:this.selfDuration===void 0?void 0:Math.round(this.selfDuration*10)/10,children:this.children?.length?this.children:void 0}}static#e(t){return new e(t)}static fromEntryNode(t,n){function r(u){let l=e.#e(u.entry);l.id=u.id,u===t&&(l.selected=!0),l.selfDuration=u.selfTime===void 0?void 0:Hn(u.selfTime);for(let m of u.children)l.children??=[],l.children.push(r(m));return l}s(r,"fromEntryNodeAndTree");function a(u){let l=[u],m=u.parent;for(;m;)l.unshift(m),m=m.parent;return l.find(p=>n(p.entry))??u}s(a,"findTopMostVisibleAncestor");let o=a(t),i=r(o),[c]=e.#t([i],u=>u.event.name==="V8.CompileCode"||u.event.name==="UpdateCounters"?!1:n(u.event));return c}static getSelectedNodeWithinTree(t){if(t.selected)return t;if(!t.children)return null; +for(let n of t.children){let r=e.getSelectedNodeWithinTree(n);if(r)return r}return null}static#t(t,n){let r;do{r=!0;let a=[];for(let o of t)n(o)?a.push(o):o.children&&(a.push(...o.children),r=!1);t=a}while(!r);for(let a of t)a.children&&(a.children=e.#t(a.children,n));return t}static#r(t,n){let r=n?.minDuration??0,a=n?.minSelf??0,o=n?.minJsDuration??0,i=n?.minJsSelf??0,c=s(m=>!!m.url,"isJS"),u=s(m=>m.duration===void 0||m.duration>=(c(m)?o:r),"longEnough"),l=s(m=>m.selfDuration===void 0||m.selfDuration>=(c(m)?i:a),"selfLongEnough");return e.#t(t,m=>u(m)&&l(m))}sanitize(){this.children&&(this.children=e.#r(this.children,{minDuration:I.MilliSeconds(1),minJsDuration:I.MilliSeconds(1),minJsSelf:I.MilliSeconds(.1)}))}};s(Lv,"treify");s(gne,"walkTreeFromEntry");s(yne,"walkEntireTree");s(Pv,"walkTreeByNode");s(vne,"treeNodeIsInWindow");s(Bv,"canBuildTreesFromEvents")});var Kp={};T(Kp,{buildTrackDataFromExtensionEntries:()=>bne});function bne(e,t,n){let r=new Map;for(let a of e){let o=a.args.trackGroup||`track-name-${a.args.track}`,i=Ce.getWithDefault(r,o,()=>({name:a.args.trackGroup||a.args.track,isTrackGroup:!!a.args.trackGroup,entriesByTrack:{[a.args.track]:[]}}));i.entriesByTrack[a.args.track]||(i.entriesByTrack[a.args.track]=[]),i.entriesByTrack[a.args.track].push(a)}for(let a of r.values()){for(let o of Object.values(a.entriesByTrack))if(_v(o),Bv(o))for(let[i,c]of Lv(o).entryToNode)n.set(i,c);t.push(a)}return{extensionTrackData:t,entryToNode:n}}var bO=g(()=>{d();Yt();Lu();Uv();s(bne,"buildTrackDataFromExtensionEntries")});var uo={};T(uo,{isSyntheticNetworkRequestEventRenderBlocking:()=>Dne});function Dne(e){return!wne.has(e.args.data.renderBlocking)}var wne,wO=g(()=>{d();wne=new Set(["non_blocking","dynamically_injected_non_blocking","potentially_blocking"]);s(Dne,"isSyntheticNetworkRequestEventRenderBlocking")});var Jp={};T(Jp,{SamplesIntegrator:()=>jv});var jv,DO=g(()=>{d();De();Ou();Lu();jv=class e{static{s(this,"SamplesIntegrator")}#e=[];#t=[];#r;#n;#a=[];#i=!1;#o;#s=new Map;#c;#u;jsSampleEvents=[];constructor(t,n,r,a,o){this.#o=t,this.#n=a,this.#r=r,this.#c=o||Wr.defaults(),this.#u=n}buildProfileCalls(t){let n=Mv(t,this.callsFromProfileSamples()),r=[];for(let a=0;a<n.length;a++){let o=n[a];if(o.ph==="I")continue;if(r.length===0){if(C.isProfileCall(o)){this.#h(o);continue}r.push(o),this.#l(o);continue}let i=r.at(-1);if(i===void 0)continue;let c=o.ts,u=i.ts,l=i.dur||0,m=u+l;if(c>=m){this.#m(i),r.pop(),a--;continue}if(C.isProfileCall(o)){this.#h(o,i);continue}this.#l(o),r.push(o)}for(;r.length;){let a=r.pop();a&&this.#m(a)}return this.#e}#l(t){(t.name==="RunMicrotasks"||t.name==="RunTask")&&(this.#a=[],this.#f(0,t.ts),this.#i=!1),this.#i&&(this.#f(this.#a.pop()||0,t.ts),this.#i=!1),this.#d(t),this.#a.push(this.#t.length)}#h(t,n){if(n&&C.isJSInvocationEvent(n)||this.#i)this.#d(t);else if(C.isProfileCall( +t)&&this.#t.length===0){this.#i=!0;let r=this.#t.length;this.#d(t),this.#a.push(r)}}#m(t){let n=I.MicroSeconds(t.ts+(t.dur??0));this.#f(this.#a.pop()||0,n)}callsFromProfileSamples(){let t=this.#o.samples,n=this.#o.timestamps,r=this.#c.debugMode;if(!t)return[];let a=[],o;for(let i=0;i<t.length;i++){let c=this.#o.nodeByIndex(i),u=wr(I.MilliSeconds(n[i]));if(!c)continue;let l=Yp(c,this.#u,i,u,this.#r,this.#n);if(a.push(l),r&&this.jsSampleEvents.push(this.#y(l,u)),c.id===this.#o.gcNode?.id&&o){this.#s.set(l,o);continue}o=c}return a}#p(t){let n=this.#o.nodeById(t.nodeId),r=n?.id===this.#o.gcNode?.id;if(r&&(n=this.#s.get(t)||null),!n)return[];let a=new Array(n.depth+1+Number(r)),o=a.length-1;for(r&&(a[o--]=t);n;)a[o--]=Yp(n,t.profileId,t.sampleIndex,t.ts,this.#r,this.#n),n=n.parent;return a}#d(t){let n=C.isProfileCall(t)?this.#p(t):this.#t;e.filterStackFrames(n,this.#c);let r=t.ts+(t.dur||0),a=Math.min(n.length,this.#t.length),o;for(o=this.#a.at(-1)||0;o<a;++o){let i=n[o].callFrame,c=this.#t[o]. +callFrame;if(!e.framesAreEqual(i,c))break;this.#t[o].dur=I.MicroSeconds(Math.max(this.#t[o].dur||0,r-this.#t[o].ts))}for(this.#f(o,t.ts);o<n.length;++o){let i=n[o];i.nodeId===this.#o.programNode?.id||i.nodeId===this.#o.root?.id||i.nodeId===this.#o.idleNode?.id||i.nodeId===this.#o.gcNode?.id||(this.#t.push(i),this.#e.push(i))}}#f(t,n){if(this.#a.length){let r=this.#a.at(-1);r&&t<r&&(console.error(`Child stack is shallower (${t}) than the parent stack (${r}) at ${n}`),t=r)}this.#t.length<t&&(console.error(`Trying to truncate higher than the current stack size at ${n}`),t=this.#t.length);for(let r=0;r<this.#t.length;++r)this.#t[r].dur=I.MicroSeconds(Math.max(n-this.#t[r].ts,0));this.#t.length=t}#y(t,n){return{name:"JSSample",cat:"devtools.timeline",args:{data:{stackTrace:this.#p(t).map(a=>a.callFrame)}},ph:"I",ts:n,dur:I.MicroSeconds(0),pid:this.#r,tid:this.#n}}static framesAreEqual(t,n){return t.scriptId===n.scriptId&&t.functionName===n.functionName&&t.lineNumber===n.lineNumber}static showNativeName(t,n){ +return n&&!!e.nativeGroup(t)}static nativeGroup(t){return t.startsWith("Parse")?"Parse":t.startsWith("Compile")||t.startsWith("Recompile")?"Compile":null}static isNativeRuntimeFrame(t){return t.url==="native V8Runtime"}static filterStackFrames(t,n){if(n.showAllEvents)return;let a=null,o=0;for(let i=0;i<t.length;++i){let c=t[i].callFrame,u=e.isNativeRuntimeFrame(c);if(u&&!e.showNativeName(c.functionName,n.includeRuntimeCallStats))continue;let l=u?e.nativeGroup(c.functionName):null;a&&a===l||(a=l,t[o++]=t[i])}t.length=o}}});var Ze=g(()=>{d();bO();wO();DO();Cv();Ou();Lu();Uv()});function Xp(e,t){if(C.isProfileCall(t))return t.callFrame.url;if(t.args?.data?.stackTrace&&t.args.data.stackTrace.length>0)return t.args.data.stackTrace[0].url;if(C.isSyntheticNetworkRequest(t))return t.args.data.url;if(C.isDecodeImage(t)){let n=e.ImagePainting.paintImageForEvent.get(t);return n?Xp(e,n):null}if(C.isDrawLazyPixelRef(t)&&t.args?.LazyPixelRef){let n=e.ImagePainting.paintImageByDrawLazyPixelRef.get(t.args.LazyPixelRef);return n?Xp(e,n):null}return C.isParseHTML(t)?t.args.beginData.url:t.args?.data?.url?t.args.data.url:null}var zv=g(()=>{d();De();s(Xp,"getNonResolved")});var Pu={};T(Pu,{getEntitiesByRequest:()=>TO,getSummariesAndEntitiesForTraceBounds:()=>Cne,makeUpEntity:()=>EO});function xne(e){return e.protocol+"//"+e.host}function Ene(e,t,n){let r=new URL(t),a=xne(r),o=new URL(a).host,i=n||o,c=e.get(a);if(c)return c;let u={name:i,company:i,category:"Chrome Extension",homepage:"https://chromewebstore.google.com/detail/"+o,categories:[],domains:[],averageExecutionTime:0,totalExecutionTime:0,totalOccurrences:0};return e.set(a,u),u}function EO(e,t){if(t.startsWith("chrome-extension:"))return Ene(e,t);if(!t.startsWith("http"))return;let n=Cs.default.getRootDomain(t);if(!n)return;if(e.has(n))return e.get(n);let r={name:n,company:n,category:"",categories:[],domains:[n],averageExecutionTime:0,totalExecutionTime:0,totalOccurrences:0,isUnrecognized:!0};return e.set(n,r),r}function Tne(e,t){let n=new Map;for(let r of e.Renderer.processes.values())if(r.isOnMainFrame){for(let a of r.threads.values())if(a.name==="CrRendererMain"){if(!a.tree)break;for(let o of a. +entries){if(!J.eventIsInBounds(o,t))continue;let i=e.Renderer.entryToNode.get(o);if(!i||!i.selfTime)continue;let c=Xp(e,o);c&&n.set(c,i.selfTime+(n.get(c)??0))}}}return n}function TO(e){let t=new Map,n=new Map;for(let r of e){let a=r.args.data.url,o=Cs.default.getEntity(a)??EO(n,a);o&&t.set(r,o)}return{entityByRequest:t,madeUpEntityCache:n}}function Sne(e,t,n){let r=new Map,a=new Map,o={transferSize:0,mainThreadTime:I.MicroSeconds(0)};for(let c of e){let u=r.get(c)||{...o};u.transferSize+=c.args.data.encodedDataLength,u.mainThreadTime=I.MicroSeconds(u.mainThreadTime+(n.get(c.args.data.url)??0)),r.set(c,u)}let i=new Map;for(let[c,u]of r.entries()){let l=t.get(c);if(!l){r.delete(c);continue}let m=a.get(l)||{...o};m.transferSize+=u.transferSize,m.mainThreadTime=I.MicroSeconds(m.mainThreadTime+u.mainThreadTime),a.set(l,m);let p=i.get(l)||[];p.push(c),i.set(l,p)}return{byEntity:a,byRequest:r,requestsByEntity:i}}function Cne(e,t,n){let r=n.filter(u=>J.eventIsInBounds(u,t)),{entityByRequest:a, +madeUpEntityCache:o}=TO(r),i=Tne(e,t);return{summaries:Sne(r,a,i),entityByRequest:a,madeUpEntityCache:o}}var SO=g(()=>{d();fv();Ze();De();zv();s(xne,"getChromeExtensionOrigin");s(Ene,"makeUpChromeExtensionEntity");s(EO,"makeUpEntity");s(Tne,"getSelfTimeByUrl");s(TO,"getEntitiesByRequest");s(Sne,"getSummaryMap");s(Cne,"getSummariesAndEntitiesForTraceBounds")});var qv=g(()=>{d();SO();zv()});var Gv={};T(Gv,{data:()=>Ine,finalize:()=>Rne,handleEvent:()=>Fne,reset:()=>kne});function kne(){Hv.length=0,Wv.length=0}function Fne(e){if(C.isAnimation(e)){Hv.push(e);return}}async function Rne(){let e=Ve.createMatchedSortedSyntheticEvents(Hv);Wv.push(...e)}function Ine(){return{animations:Wv}}var Hv,Wv,kO=g(()=>{d();Ze();De();Hv=[],Wv=[];s(kne,"reset");s(Fne,"handleEvent");s(Rne,"finalize");s(Ine,"data")});var Xv={};T(Xv,{data:()=>Bu,finalize:()=>Nne,handleEvent:()=>_ne,reset:()=>Ane});function Ane(){Vv.clear(),$v.clear(),Yv.clear(),Kv.clear(),Jv.clear()}function _ne(e){if(C.isAuctionWorkletRunningInProcess(e)){Vv.set(e.args.data.pid,e);return}if(C.isAuctionWorkletDoneWithProcess(e)){$v.set(e.args.data.pid,e);return}if(C.isThreadName(e)){if(e.args.name==="auction_worklet.CrUtilityMain"){Kv.set(e.pid,e);return}e.args.name==="AuctionV8HelperThread"&&Jv.set(e.pid,e)}}function Mne(e){switch(e){case"seller":return"seller";case"bidder":return"bidder";default:return"unknown"}}function FO(e){return en.SyntheticEventsManager.registerSyntheticEvent({rawSourceEvent:e,name:"SyntheticAuctionWorklet",s:"t",cat:e.cat,tid:e.tid,ts:e.ts,ph:"I",pid:e.args.data.pid,host:e.args.data.host,target:e.args.data.target,type:Mne(e.args.data.type)})}async function Nne(){for(let[e,t]of Kv){let n=Jv.get(e);if(!n)continue;let r=Vv.get(e),a=$v.get(e),o=null;r?(o={...FO(r),args:{data:{runningInProcessEvent:r,utilityThread:t, +v8HelperThread:n}}},a&&(o.args.data.doneWithProcessEvent=a)):a&&(o={...FO(a),args:{data:{doneWithProcessEvent:a,utilityThread:t,v8HelperThread:n}}},r&&(o.args.data.runningInProcessEvent=r)),o!==null&&Yv.set(e,o)}}function Bu(){return{worklets:new Map(Yv)}}var Vv,$v,Yv,Kv,Jv,Zp=g(()=>{d();Ze();De();Vv=new Map,$v=new Map,Yv=new Map,Kv=new Map,Jv=new Map;s(Ane,"reset");s(_ne,"handleEvent");s(Mne,"workletType");s(FO,"makeSyntheticEventBase");s(Nne,"finalize");s(Bu,"data")});var n0={};T(n0,{data:()=>Qp,finalize:()=>zne,handleEvent:()=>jne,reset:()=>One});function One(){gi.length=0,Zv.length=0,Qv.length=0,e0.length=0,t0.length=0}function Une(e,t,n){let r=e.ts,a=t.ts;if(r<a)return-1;if(r>a)return 1;let o=e.dur??0,i=t.dur??0,c=r+o,u=a+i;return c>u?-1:c<u?1:n.indexOf(t)-n.indexOf(e)}function jne(e){if(!Bne.includes(e.name)){if(C.isPerformanceMeasure(e)){Zv.push(e);return}C.isPerformanceMark(e)&&Qv.push(e),C.isConsoleTime(e)&&e0.push(e),C.isTimeStamp(e)&&t0.push(e)}}async function zne(){let e=[...Zv,...e0];gi=Ve.createMatchedSortedSyntheticEvents(e),gi=gi.sort((t,n)=>Une(t,n,[...gi]))}function Qp(){return{performanceMeasures:gi.filter(e=>e.cat==="blink.user_timing"),consoleTimings:gi.filter(e=>e.cat==="blink.console"),performanceMarks:[...Qv],timestampEvents:[...t0]}}var gi,Zv,Qv,e0,t0,Lne,Pne,Bne,r0=g(()=>{d();Ze();De();gi=[],Zv=[],Qv=[],e0=[],t0=[];s(One,"reset");Lne=["workerStart","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEn\ +d","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd"],Pne=["navigationStart","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","commitNavigationEnd","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"],Bne=[...Lne,...Pne];s(Une,"userTimingComparator");s(jne,"handleEvent");s(zne,"finalize");s(Qp,"data")});var c0={};T(c0,{data:()=>Vne,deps:()=>$ne,extensionDataInTiming:()=>IO,extractExtensionEntries:()=>RO,finalize:()=>Wne,handleEvent:()=>qne,reset:()=>Hne});function qne(e){}function Hne(){a0.length=0,o0.length=0,i0.length=0,s0.clear()}async function Wne(){Gne()}function Gne(){let e=Qp().performanceMeasures,t=Qp().performanceMarks,n=Ve.mergeEventsInOrder(e,t);RO(n),Kp.buildTrackDataFromExtensionEntries(a0,o0,s0)}function RO(e){for(let t of e){let n=IO(t);if(!n)continue;let r={name:t.name,ph:"X",pid:C.ProcessID(0),tid:C.ThreadID(0),ts:t.ts,dur:t.dur,cat:"devtools.extension",args:n,rawSourceEvent:C.isSyntheticUserTiming(t)?t.rawSourceEvent:t};if(Sa.isExtensionPayloadMarker(n)){let a=en.SyntheticEventsManager.getActiveManager().registerSyntheticEvent(r);i0.push(a);continue}if(Sa.isExtensionPayloadTrackEntry(r.args)){let a=en.SyntheticEventsManager.getActiveManager().registerSyntheticEvent(r);a0.push(a);continue}}}function IO(e){let t=C.isPerformanceMark(e)?e.args.data?.detail:e.args.data.beginEvent. +args.detail;if(!t)return null;try{let n=JSON.parse(t);return!("devtools"in n)||!Sa.isValidExtensionPayload(n.devtools)?null:n.devtools}catch{return null}}function Vne(){return{entryToNode:s0,extensionTrackData:[...o0],extensionMarkers:[...i0]}}function $ne(){return["UserTimings"]}var a0,o0,i0,s0,AO=g(()=>{d();Ze();De();r0();a0=[],o0=[],i0=[],s0=new Map;s(qne,"handleEvent");s(Hne,"reset");s(Wne,"finalize");s(Gne,"createExtensionFlameChartEntries");s(RO,"extractExtensionEntries");s(IO,"extensionDataInTiming");s(Vne,"data");s($ne,"deps")});var p0={};T(p0,{data:()=>ere,finalize:()=>Qne,handleEvent:()=>Kne,reset:()=>Yne});function Yne(){m0=[],l0.length=0,d0.length=0,Uu.clear(),tf.clear(),nf.clear()}function Kne(e){if(C.isFlowPhaseEvent(e)){l0.push(e);return}d0.push(e)}function Jne(e){let t=ef(e),n=tf.get(t);if(n)for(let r of n){let a=nf.get(r);if(!a)continue;let o=a.times.indexOf(e.ts);o<0||(a.events[o]=e)}}function Xne(e){let t=Zne(e);switch(e.ph){case"s":{let n={flowId:e.id,times:[e.ts]};Uu.set(t,n),u0(ef(e),n.flowId);return}case"t":{let n=Uu.get(t);if(!n||n.times.length<0)return;u0(ef(e),n.flowId),n.times.push(e.ts);return}case"f":{let n=Uu.get(t);if(!n||n.times.length<0)return;u0(ef(e),n.flowId),n.times.push(e.ts),nf.set(n.flowId,{times:n.times,events:[]}),Uu.delete(t)}}}function u0(e,t){let n=tf.get(e);n||(n=new Set),n.add(t),tf.set(e,n)}function Zne(e){return`${e.cat}${ju}${e.name}${ju}${e.id}`}function ef(e){return`${e.cat}${ju}${e.tid}${ju}${e.pid}${ju}${e.ts}`}async function Qne(){l0.forEach(Xne),d0.forEach(Jne),m0= +[...nf.values()].map(e=>e.events).filter(e=>e.length>1)}function ere(){return{flows:m0}}var Uu,tf,nf,l0,d0,m0,ju,_O=g(()=>{d();De();Uu=new Map,tf=new Map,nf=new Map,l0=[],d0=[],m0=[],ju="-$-";s(Yne,"reset");s(Kne,"handleEvent");s(Jne,"processNonFlowEvent");s(Xne,"processFlowEvent");s(u0,"addFlowIdToFlowPhaseBinding");s(Zne,"flowGroupTokenForFlowPhaseEvent");s(ef,"flowPhaseBindingTokenForEvent");s(Qne,"finalize");s(ere,"data")});var D0={};T(D0,{data:()=>wt,finalize:()=>ore,handleEvent:()=>are,reset:()=>rre});function rre(){Fs.clear(),Wu.clear(),b0.clear(),uf.length=0,g0=C.ProcessID(-1),y0=C.ThreadID(-1),v0=C.ProcessID(-1),rf=C.ThreadID(-1),af=null,of.clear(),w0.clear(),Hu.clear(),h0.clear(),Cn.min=I.MicroSeconds(Number.POSITIVE_INFINITY),Cn.max=I.MicroSeconds(Number.NEGATIVE_INFINITY),Cn.range=I.MicroSeconds(Number.POSITIVE_INFINITY),sf=I.MicroSeconds(-1),cf=!0}function f0(e,t){Ce.getWithDefault(h0,t.processId,()=>new Map).set(t.frame,t);let r=Ce.getWithDefault(Hu,t.frame,()=>new Map),a=Ce.getWithDefault(r,t.processId,()=>[]),o=a.at(-1);o&&o.frame.url===t.url||a.push({frame:t,window:{min:e.ts,max:I.MicroSeconds(0),range:I.MicroSeconds(0)}})}function are(e){if(cf&&nre.has(e.name)&&(cf=!1),C.isProcessName(e)&&b0.set(e.pid,e),e.ts!==0&&!e.name.endsWith("::UMA")&&tre.has(e.ph)){Cn.min=I.MicroSeconds(Math.min(e.ts,Cn.min));let t=e.dur??I.MicroSeconds(0);Cn.max=I.MicroSeconds(Math.max(e.ts+t,Cn.max))}if(C.isProcessName( +e)&&(e.args.name==="Browser"||e.args.name==="HeadlessBrowser")){g0=e.pid;return}if(C.isProcessName(e)&&(e.args.name==="Gpu"||e.args.name==="GPU Process")){v0=e.pid;return}if(C.isThreadName(e)&&e.args.name==="CrGpuMain"){rf=e.tid;return}if(C.isThreadName(e)&&e.args.name==="CrBrowserMain"&&(y0=e.tid),C.isMainFrameViewport(e)&&af===null){let t=e.args.data.viewport_rect,n=t[0],r=t[1],a=t[2],o=t[5];af=new DOMRect(n,r,a,o),MO=e.args.data.dpr}if(C.isTracingStartedInBrowser(e)){if(sf=e.ts,!e.args.data)throw new Error("No frames found in trace data");for(let t of e.args.data.frames??[]){f0(e,t),t.parent||of.add(t.processId);let n="isInPrimaryMainFrame"in t,r="isOutermostMainFrame"in t;n&&r?t.isInPrimaryMainFrame&&t.isOutermostMainFrame&&(zu=t.frame,qu=t.url):r?t.isOutermostMainFrame&&(zu=t.frame,qu=t.url):!t.parent&&t.url&&(zu=t.frame,qu=t.url)}return}if(C.isFrameCommittedInBrowser(e)){let t=e.args.data;if(!t||(f0(e,t),t.parent))return;of.add(t.processId);return}if(C.isCommitLoad(e)){let t=e.args. +data;if(!t)return;let{frame:n,name:r,url:a}=t;f0(e,{processId:e.pid,frame:n,name:r,url:a});return}if(C.isThreadName(e)){Ce.getWithDefault(w0,e.pid,()=>new Map).set(e.tid,e);return}if(C.isNavigationStart(e)&&e.args.data){let t=e.args.data.navigationId;if(Wu.has(t))return;Wu.set(t,e);let n=e.args.frame,r=Fs.get(n)||[];r.push(e),Fs.set(n,r),n===zu&&uf.push(e);return}}async function ore(){sf>=0&&(Cn.min=sf),Cn.range=I.MicroSeconds(Cn.max-Cn.min);for(let[,n]of Hu){let r=[...n.values()].flat();for(let a=0;a<r.length;a++){let o=r[a],i=r[a+1];i?(o.window.max=I.MicroSeconds(i.window.min-1),o.window.range=I.MicroSeconds(o.window.max-o.window.min)):(o.window.max=I.MicroSeconds(Cn.max),o.window.range=I.MicroSeconds(Cn.max-o.window.min))}}for(let[n,r]of Fs)if(!Hu.has(n)){Fs.delete(n);for(let a of r)a.args.data&&Wu.delete(a.args.data.navigationId)}let e=uf.at(0),t=J.secondsToMicroseconds(I.Seconds(.5));if(e){let n=e.ts-Cn.min<t;e.args.data?.isOutermostMainFrame&&e.args.data?.documentLoaderURL&&n&&(qu= +e.args.data.documentLoaderURL)}}function wt(){return{traceBounds:{...Cn},browserProcessId:g0,browserThreadId:y0,processNames:b0,gpuProcessId:v0,gpuThreadId:rf===C.ThreadID(-1)?void 0:rf,viewportRect:af||void 0,devicePixelRatio:MO??void 0,mainFrameId:zu,mainFrameURL:qu,navigationsByFrameId:Fs,navigationsByNavigationId:Wu,threadsInProcess:w0,rendererProcessesByFrame:Hu,topLevelRendererIds:of,frameByProcessId:h0,mainFrameNavigations:uf,traceIsGeneric:cf}}var Hu,zu,qu,h0,g0,y0,v0,rf,af,MO,b0,of,Cn,Fs,Wu,uf,w0,sf,tre,cf,nre,Dr=g(()=>{d();Yt();Ze();De();Hu=new Map,zu="",qu="",h0=new Map,g0=C.ProcessID(-1),y0=C.ThreadID(-1),v0=C.ProcessID(-1),rf=C.ThreadID(-1),af=null,MO=null,b0=new Map,of=new Set,Cn={min:I.MicroSeconds(Number.POSITIVE_INFINITY),max:I.MicroSeconds(Number.NEGATIVE_INFINITY),range:I.MicroSeconds(Number.POSITIVE_INFINITY)},Fs=new Map,Wu=new Map,uf=[],w0=new Map,sf=I.MicroSeconds(-1),tre=new Set(["B","E","X","I"]),cf=!0,nre=new Set(["TracingStartedInPage","TracingSessionIdForWork\ +er","TracingStartedInBrowser"]);s(rre,"reset");s(f0,"updateRendererProcessByFrame");s(are,"handleEvent");s(ore,"finalize");s(wt,"data")});var F0={};T(F0,{data:()=>k0,deps:()=>ure,finalize:()=>cre,handleEvent:()=>sre,reset:()=>ire});function ire(){T0.length=0,S0.length=0,C0.clear(),x0={},E0=null,lf.length=0,df.length=0}function sre(e){(C.isPaint(e)||C.isDisplayListItemListSnapshot(e)||C.isUpdateLayer(e)||C.isSetLayerId(e))&&df.push(e)}async function cre(){let e=wt();Ve.sortTraceEventsInPlace(df);for(let t of df)if(C.isSetLayerId(t)){if(e.mainFrameId!==t.args.data.frame)continue;E0=t.args.data.layerTreeId}else if(C.isUpdateLayer(t))lf.push(t);else if(C.isPaint(t)){if(!t.args.data.layerId)continue;T0.push(t),x0[t.args.data.layerId]=t;continue}else if(C.isDisplayListItemListSnapshot(t)){let n=null;for(let a=lf.length-1;a>-1;a--){let o=lf[a];if(o.pid===t.pid&&o.tid===t.tid){n=o;break}}if(!n||n.args.layerTreeId!==E0)continue;let r=x0[n.args.layerId];if(!r)continue;S0.push(t),C0.set(r,t)}}function k0(){return{paints:T0,snapshots:S0,paintsToSnapshots:C0}}function ure(){return["Meta"]}var T0,S0,C0,x0,E0,lf,df,R0=g(()=>{d();Ze();De(); +Dr();T0=[],S0=[],C0=new Map,x0={},E0=null,lf=[],df=[];s(ire,"reset");s(sre,"handleEvent");s(cre,"finalize");s(k0,"data");s(ure,"deps")});var mf,pf,I0=g(()=>{d();mf=class{static{s(this,"ProfileNode")}callFrame;callUID;self;total;id;parent;children;functionName;depth;deoptReason;constructor(t){this.callFrame=t,this.callUID=`${t.functionName}@${t.scriptId}:${t.lineNumber}:${t.columnNumber}`,this.self=0,this.total=0,this.id=0,this.functionName=t.functionName,this.parent=null,this.children=[]}get scriptId(){return String(this.callFrame.scriptId)}get url(){return this.callFrame.url}get lineNumber(){return this.callFrame.lineNumber}get columnNumber(){return this.callFrame.columnNumber}setFunctionName(t){t!==null&&(this.functionName=t)}},pf=class{static{s(this,"ProfileTreeModel")}root;total;maxDepth;constructor(){}initialize(t){this.root=t,this.assignDepthsAndParents(),this.total=this.calculateTotals(this.root)}assignDepthsAndParents(){let t=this.root;t.depth=-1,t.parent=null,this.maxDepth=0;let n=[t];for(;n.length;){let r=n.pop(),a=r.depth+1;a>this.maxDepth&&(this.maxDepth=a);let o=r.children;for(let i of o)i.depth=a,i.parent= +r,n.push(i)}}calculateTotals(t){let n=[t],r=[];for(;n.length;){let a=n.pop();a.total=a.self,r.push(a),n.push(...a.children)}for(;r.length>1;){let a=r.pop();a.parent&&(a.parent.total+=a.total)}return t.total}}});var ff={};T(ff,{CPUProfileDataModel:()=>A0,CPUProfileNode:()=>Gu});var Gu,A0,NO=g(()=>{d();Yt();I0();Gu=class extends mf{static{s(this,"CPUProfileNode")}id;self;positionTicks;deoptReason;constructor(t,n){let r=t.callFrame||{functionName:t.functionName,scriptId:t.scriptId,url:t.url,lineNumber:t.lineNumber-1,columnNumber:t.columnNumber-1};super(r),this.id=t.id,this.self=(t.hitCount||0)*n,this.positionTicks=t.positionTicks,this.deoptReason=t.deoptReason&&t.deoptReason!=="no reason"?t.deoptReason:null}},A0=class extends pf{static{s(this,"CPUProfileDataModel")}profileStartTime;profileEndTime;timestamps;samples;lines;totalHitCount;profileHead;#e;gcNode;programNode;idleNode;#t;#r;constructor(t){super(),!!t.head?(this.profileStartTime=t.startTime*1e3,this.profileEndTime=t.endTime*1e3,this.timestamps=t.timestamps,this.compatibilityConversionHeadToNodes(t)):(this.profileStartTime=t.startTime/1e3,this.profileEndTime=t.endTime/1e3,this.timestamps=this.convertTimeDeltas(t)),this.samples=t.samples,this. +lines=t.lines,this.totalHitCount=0,this.profileHead=this.translateProfileTree(t.nodes),this.initialize(this.profileHead),this.extractMetaNodes(),this.samples?.length&&(this.sortSamples(),this.normalizeTimestamps(),this.fixMissingSamples())}compatibilityConversionHeadToNodes(t){if(!t.head||t.nodes)return;let n=[];r(t.head),t.nodes=n,delete t.head;function r(a){return n.push(a),a.children=a.children.map(r),a.id}s(r,"convertNodesTree")}convertTimeDeltas(t){if(!t.timeDeltas)return[];let n=t.startTime,r=new Array(t.timeDeltas.length);for(let a=0;a<t.timeDeltas.length;++a)n+=t.timeDeltas[a],r[a]=n;return r}translateProfileTree(t){function n(p){if(!p[0].children){p[0].children=[];for(let f=1;f<p.length;++f){let h=p[f],y=a.get(h.parent);y&&(y.children?y.children.push(h.id):y.children=[h.id])}}}s(n,"buildChildrenFromParents");function r(p,f){if(typeof p[0].hitCount!="number"){if(!f)throw new Error("Error: Neither hitCount nor samples are present in profile.");for(let h=0;h<p.length;++h)p[h].hitCount= +0;for(let h=0;h<f.length;++h){let y=a.get(f[h]);!y||y.hitCount===void 0||y.hitCount++}}}s(r,"buildHitCountFromSamples");let a=new Map;for(let p=0;p<t.length;++p){let f=t[p];a.set(f.id,f)}r(t,this.samples),n(t),this.totalHitCount=t.reduce((p,f)=>p+(f.hitCount||0),0);let o=(this.profileEndTime-this.profileStartTime)/this.totalHitCount,i=t[0],c=new Map([[i.id,i.id]]);this.#e=new Map;let u=new Gu(i,o);if(this.#e.set(i.id,u),!i.children)throw new Error("Missing children for root");let l=i.children.map(()=>u),m=i.children.map(p=>a.get(p));for(;m.length;){let p=l.pop(),f=m.pop();if(!f||!p)continue;f.children||(f.children=[]);let h=new Gu(f,o);p.children.push(h),p=h,c.set(f.id,p.id),l.push.apply(l,f.children.map(()=>p)),m.push.apply(m,f.children.map(y=>a.get(y))),this.#e.set(f.id,h)}return this.samples&&(this.samples=this.samples.map(p=>c.get(p))),u}sortSamples(){if(!this.timestamps||!this.samples)return;let t=this.timestamps,n=this.samples,r=t.map((a,o)=>o);r.sort((a,o)=>t[a]-t[o]),this.timestamps= +[],this.samples=[];for(let a=0;a<r.length;a++){let o=r[a];this.timestamps.push(t[o]),this.samples.push(n[o])}}normalizeTimestamps(){if(!this.samples)return;let t=this.timestamps;if(!t){let n=this.profileStartTime,r=(this.profileEndTime-n)/this.samples.length;t=new Array(this.samples.length+1);for(let a=0;a<t.length;++a)t[a]=n+a*r;this.timestamps=t;return}for(let n=0;n<t.length;++n)t[n]/=1e3;if(this.samples.length===t.length){let n=t.at(-1)||0,r=(n-t[0])/(t.length-1);this.timestamps.push(n+r)}this.profileStartTime=t.at(0)||this.profileStartTime,this.profileEndTime=t.at(-1)||this.profileEndTime}extractMetaNodes(){let t=this.profileHead.children;for(let n=0;n<t.length&&!(this.gcNode&&this.programNode&&this.idleNode);n++){let r=t[n];r.functionName==="(garbage collector)"?this.gcNode=r:r.functionName==="(program)"?this.programNode=r:r.functionName==="(idle)"&&(this.idleNode=r)}}fixMissingSamples(){let t=this.samples;if(!t)return;let n=t.length;if(!this.programNode||n<3)return;let r=this.#e, +a=this.programNode.id,o=this.gcNode?this.gcNode.id:-1,i=this.idleNode?this.idleNode.id:-1,c=t[0],u=t[1];for(let p=1;p<n-1;p++){let f=t[p+1],h=r.get(c),y=r.get(f);if(c===void 0||f===void 0||!h||!y){console.error(`Unexpectedly found undefined nodes: ${c} ${f}`);continue}u===a&&!m(c)&&!m(f)&&l(h)===l(y)&&(t[p]=c),c=u,u=f}function l(p){for(;p.parent&&p.parent.parent;)p=p.parent;return p}s(l,"bottomNode");function m(p){return p===a||p===o||p===i}s(m,"isSystemNode")}forEachFrame(t,n,r,a){if(!this.profileHead||!this.samples)return;r=r||0,a=a||1/0;let o=this.samples,i=this.timestamps,c=this.#e,u=this.gcNode,l=o.length,m=Ft.lowerBound(i,r,Ft.DEFAULT_COMPARATOR),p=0,f=[],h=this.profileHead.id,y,v=null,w=this.maxDepth+3;this.#t||(this.#t=new Array(w));let x=this.#t;this.#r||(this.#r=new Array(w));let E=this.#r,S,k;for(k=m;k<l&&(y=i[k],!(y>=a));k++){let R=o[k];if(R===h)continue;S=c.get(R);let O=c.get(h)||null;if(O){if(u&&S===u){v=O,t(v.depth+1,u,k,y),x[++p]=y,E[p]=0,h=R;continue}if(u&&O===u&&v){let N=x[p], +H=y-N;E[p-1]+=H,n(v.depth+1,u,k,N,H,H-E[p]),--p,O=v,h=O.id,v=null}for(;S&&S.depth>O.depth;)f.push(S),S=S.parent;for(;O&&O!==S;){let N=x[p],H=y-N;E[p-1]+=H,n(O.depth,O,k,N,H,H-E[p]),--p,S&&S.depth===O.depth&&(f.push(S),S=S.parent),O=O.parent}for(;f.length;){let N=f.pop();if(!N)break;S=N,t(N.depth,N,k,y),x[++p]=y,E[p]=0}h=R}}if(y=i[k]||this.profileEndTime,S&&v&&c.get(h)===u){let R=x[p],O=y-R;E[p-1]+=O,n(v.depth+1,S,k,R,O,O-E[p]),--p,h=v.id}for(let R=c.get(h);R&&R.parent;R=R.parent){let O=x[p],N=y-O;E[p-1]+=N,n(R.depth,R,k,O,N,N-E[p]),--p}}nodeByIndex(t){return this.samples&&this.#e.get(this.samples[t])||null}nodeById(t){return this.#e.get(t)||null}nodes(){return this.#e?[...this.#e.values()]:null}}});var OO=g(()=>{d();NO();I0()});var L0={};T(L0,{data:()=>O0,finalize:()=>gre,getProfileCallFunctionName:()=>yre,handleEvent:()=>hre,reset:()=>fre});function pre(){for(let[e,t]of N0)for(let[n,r]of t){let m=function(f,h,y,v){if(a===void 0)return;let w=J.millisecondsToMicroseconds(I.MilliSeconds(v)),x=h.id,E=Ve.makeProfileCall(h,n,y,w,e,a);u.profileCalls.push(E),o.push(u.profileCalls.length-1);let S=co.makeEmptyTraceEntryNode(E,x);Vu.set(E,S),S.depth=f,o.length===1&&u.profileTree?.roots.add(S)},p=function(f,h,y,v,w,x){let E=o.pop(),S=E!==void 0&&u.profileCalls[E];if(!S)return;let{callFrame:k,ts:R,pid:O,tid:N}=S,H=Vu.get(S);if(k===void 0||R===void 0||O===void 0||n===void 0||N===void 0||H===void 0)return;let ne=J.millisecondsToMicroseconds(I.MilliSeconds(w)),$=J.millisecondsToMicroseconds(I.MilliSeconds(x));S.dur=ne,H.selfTime=$;let ie=o.at(-1),ye=ie!==void 0&&u.profileCalls.at(ie),ce=ye&&Vu.get(ye);ce&&(H.parent=ce,ce.children.push(H))};s(m,"openFrameCallback"),s(p,"closeFrameCallback");let a=r.threadId;if(!r.rawProfile. +nodes.length||a===void 0)continue;let o=[],i=new ff.CPUProfileDataModel(r.rawProfile),c=co.makeEmptyTraceEntryTree();c.maxDepth=i.maxDepth;let u={rawProfile:r.rawProfile,parsedProfile:i,profileCalls:[],profileTree:c,profileId:n},l=Ce.getWithDefault(M0,e,()=>new Map);i.forEachFrame(m,p),l.set(a,u)}}function fre(){mre.clear(),N0.clear(),M0.clear(),Vu.clear()}function hre(e){if(C.isSyntheticCpuProfile(e)){let t=e.pid,n=e.tid,a=_0(t,"0x1");a.rawProfile=e.args.data.cpuProfile,a.threadId=n;return}if(C.isProfile(e)){let t=_0(e.pid,e.id);t.rawProfile.startTime=e.ts,t.threadId=e.tid;return}if(C.isProfileChunk(e)){let n=_0(e.pid,e.id).rawProfile,r=e.args?.data?.cpuProfile||{samples:[]},a=r?.samples||[],o=[];for(let u of r?.nodes||[]){let l=typeof u.callFrame.lineNumber>"u"?-1:u.callFrame.lineNumber,m=typeof u.callFrame.columnNumber>"u"?-1:u.callFrame.columnNumber,p=String(u.callFrame.scriptId),f=u.callFrame.url||"",h={...u,callFrame:{...u.callFrame,url:f,lineNumber:l,columnNumber:m,scriptId:p}}; +o.push(h)}let i=e.args.data?.timeDeltas||[],c=e.args.data?.lines||Array(a.length).fill(0);if(n.nodes.push(...o),n.samples?.push(...a),n.timeDeltas?.push(...i),n.lines?.push(...c),n.samples&&n.timeDeltas&&n.samples.length!==n.timeDeltas.length){console.error("Failed to parse CPU profile.");return}if(!n.endTime&&n.timeDeltas){let u=n.timeDeltas;n.endTime=u.reduce((l,m)=>l+m,n.startTime)}return}}async function gre(){pre()}function O0(){return{profilesInProcess:M0,entryToNode:Vu}}function _0(e,t){let n=Ce.getWithDefault(N0,e,()=>new Map);return Ce.getWithDefault(n,t,()=>({rawProfile:{startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[],lines:[]},profileId:t}))}function yre(e,t){let r=e.profilesInProcess.get(t.pid)?.get(t.tid)?.parsedProfile.nodeById(t.nodeId);return r?.functionName?r.functionName:t.callFrame.functionName}var mre,M0,Vu,N0,P0=g(()=>{d();Yt();OO();Ze();De();mre=new Map,M0=new Map,Vu=new Map,N0=new Map;s(pre,"buildProfileCalls");s(fre,"reset");s(hre,"handleEvent");s(gre,"fi\ +nalize");s(O0,"data");s(_0,"getOrCreatePreProcessedData");s(yre,"getProfileCallFunctionName")});var H0={};T(H0,{assignIsMainFrame:()=>UO,assignMeta:()=>PO,assignOrigin:()=>BO,assignThreadName:()=>jO,buildHierarchy:()=>HO,data:()=>q0,deps:()=>Sre,finalize:()=>Ere,handleEvent:()=>xre,handleUserConfig:()=>wre,makeCompleteEvent:()=>WO,reset:()=>Dre,sanitizeProcesses:()=>zO,sanitizeThreads:()=>qO});function wre(e){LO=e}function Dre(){lo.clear(),z0.clear(),Ca.length=0,B0.length=0,j0.length=0}function xre(e){if(C.isThreadName(e)&&e.args.name?.startsWith("CompositorTileWorker")&&j0.push({pid:e.pid,tid:e.tid}),C.isBegin(e)||C.isEnd(e)){let t=hf(lo,e.pid),n=U0(t,e.tid),r=WO(e);if(!r)return;n.entries.push(r),Ca.push(r);return}if(C.isInstant(e)||C.isComplete(e)){let t=hf(lo,e.pid);U0(t,e.tid).entries.push(e),Ca.push(e)}}async function Ere(){let{mainFrameId:e,rendererProcessesByFrame:t,threadsInProcess:n}=wt();PO(lo,e,t,n),zO(lo),HO(lo),qO(lo),Ve.sortTraceEventsInPlace(Ca)}function q0(){return{processes:new Map(lo),compositorTileWorkers:new Map(Tre()),entryToNode:new Map(z0),allTraceEntries:[ +...Ca]}}function Tre(){let e=new Map;for(let t of j0){let n=e.get(t.pid)||[];n.push(t.tid),e.set(t.pid,n)}return e}function PO(e,t,n,r){BO(e,n),UO(e,t,n),jO(e,n,r)}function BO(e,t){for(let n of t.values())for(let[r,a]of n)for(let o of a.flat()){let i=hf(e,r);if(i.url===null||i.url==="about:blank")try{new URL(o.frame.url),i.url=o.frame.url}catch{i.url=null}}}function UO(e,t,n){for(let[r,a]of n)for(let[o]of a){let i=hf(e,o);r===t&&(i.isOnMainFrame=!0)}}function jO(e,t,n){for(let[r,a]of e)for(let[o,i]of n.get(r)??[]){let c=U0(a,o);c.name=i?.args.name??`${o}`}}function zO(e){let t=Bu().worklets;if(!wt().traceIsGeneric){for(let[r,a]of e)if(a.url===null){let o=t.get(r);o?a.url=o.host:e.delete(r);continue}}}function qO(e){for(let[,t]of e)for(let[n,r]of t.threads)r.tree?.roots.size||t.threads.delete(n)}function HO(e,t){let n=O0();for(let[r,a]of e)for(let[o,i]of a.threads){if(!i.entries.length){i.tree=co.makeEmptyTraceEntryTree();continue}Ve.sortTraceEventsInPlace(i.entries);let c=n.profilesInProcess. +get(r)?.get(o);if(c){let l=c.parsedProfile,m=l&&new Jp.SamplesIntegrator(l,c.profileId,r,o,LO),p=m?.buildProfileCalls(i.entries);if(m&&p){Ca=[...Ca,...p],i.entries=Ve.mergeEventsInOrder(i.entries,p),i.profileCalls=p;let f=m.jsSampleEvents;f&&(Ca=[...Ca,...f],i.entries=Ve.mergeEventsInOrder(i.entries,f))}}let u=co.treify(i.entries,t);i.tree=u.tree;for(let[l,m]of u.entryToNode)z0.set(l,m)}}function WO(e){if(C.isEnd(e)){let n=B0.pop();return n?n.name!==e.name||n.cat!==e.cat?(console.error("Begin/End events mismatch at "+n.ts+" ("+n.name+") vs. "+e.ts+" ("+e.name+")"),null):(n.dur=I.MicroSeconds(e.ts-n.ts),null):null}let t={...e,ph:"X",dur:I.MicroSeconds(0)};return B0.push(t),t}function Sre(){return["Meta","Samples","AuctionWorklets"]}var lo,j0,z0,Ca,B0,LO,vre,bre,hf,U0,W0=g(()=>{d();Yt();Ze();De();Zp();Dr();P0();lo=new Map,j0=Array(),z0=new Map,Ca=[],B0=[],LO=Wr.defaults(),vre=s(()=>({url:null,isOnMainFrame:!1,threads:new Map}),"makeRendererProcess"),bre=s(()=>({name:null,entries:[],profileCalls:[]}), +"makeRendererThread"),hf=s((e,t)=>Ce.getWithDefault(e,t,vre),"getOrCreateRendererProcess"),U0=s((e,t)=>Ce.getWithDefault(e.threads,t,bre),"getOrCreateRendererThread");s(wre,"handleUserConfig");s(Dre,"reset");s(xre,"handleEvent");s(Ere,"finalize");s(q0,"data");s(Tre,"gatherCompositorThreads");s(PO,"assignMeta");s(BO,"assignOrigin");s(UO,"assignIsMainFrame");s(jO,"assignThreadName");s(zO,"sanitizeProcesses");s(qO,"sanitizeThreads");s(HO,"buildHierarchy");s(WO,"makeCompleteEvent");s(Sre,"deps")});var yf={};T(yf,{threadsInRenderer:()=>gf,threadsInTrace:()=>kre});function Cre(e,t,n){let r="OTHER";return t.name==="CrRendererMain"?r="MAIN_THREAD":t.name==="DedicatedWorker thread"?r="WORKER":t.name?.startsWith("CompositorTileWorker")?r="RASTERIZER":n.worklets.has(e)?r="AUCTION_WORKLET":t.name?.startsWith("ThreadPool")&&(r="THREAD_POOL"),r}function gf(e,t){let n=[];if(e.processes.size)for(let[r,a]of e.processes)for(let[o,i]of a.threads){if(!i.tree)continue;let c=Cre(r,i,t);n.push({name:i.name,pid:r,tid:o,processIsOnMainFrame:a.isOnMainFrame,entries:i.entries,tree:i.tree,type:c,entryToNode:e.entryToNode})}return n}function kre(e){let t=gf(e.Renderer,e.AuctionWorklets);if(t.length)return t;let n=[];if(e.Samples.profilesInProcess.size)for(let[r,a]of e.Samples.profilesInProcess)for(let[o,i]of a)i.profileTree&&n.push({pid:r,tid:o,name:null,entries:i.profileCalls,processIsOnMainFrame:!1,tree:i.profileTree,type:"CPU_PROFILE",entryToNode:e.Samples.entryToNode});return n}var G0=g(()=>{d();s(Cre, +"getThreadTypeForRendererThread");s(gf,"threadsInRenderer");s(kre,"threadsInTrace")});var Y0={};T(Y0,{LayerPaintEvent:()=>wf,PendingFrame:()=>Df,TimelineFrameBeginFrameQueue:()=>xf,TimelineFrameModel:()=>bf,data:()=>Are,deps:()=>_re,finalize:()=>Ire,framesWithinWindow:()=>Lre,handleEvent:()=>Rre,reset:()=>Fre});function Fre(){vf.length=0}function Rre(e){vf.push(e)}async function Ire(){Ve.sortTraceEventsInPlace(vf),$u=new bf(vf,q0(),Bu(),wt(),k0())}function Are(){return{frames:$u?Array.from($u.frames()):[],framesById:$u?{...$u.framesById()}:{}}}function _re(){return["Meta","Renderer","AuctionWorklets","LayerTree"]}function Mre(e){return C.isSetLayerId(e)||C.isBeginFrame(e)||C.isDroppedFrame(e)||C.isRequestMainThreadFrame(e)||C.isBeginMainThreadFrame(e)||C.isNeedsBeginFrameChanged(e)||C.isCommit(e)||C.isCompositeLayers(e)||C.isActivateLayerTree(e)||C.isDrawFrame(e)}function Nre(e){return e.name==="RunTask"&&e.cat.includes("disabled-by-default-devtools.timeline")}function Lre(e,t,n){let r=Ft.lowerBound(e,t||0,(o,i)=>o-i.endTime),a=Ft.lowerBound(e,n||1/0,(o,i)=>o-i.startTime); +return e.slice(r,a)}var vf,$u,bf,Ore,V0,wf,Df,$0,xf,GO=g(()=>{d();Yt();Ze();De();Zp();R0();Dr();W0();G0();vf=[],$u=null;s(Fre,"reset");s(Rre,"handleEvent");s(Ire,"finalize");s(Are,"data");s(_re,"deps");s(Mre,"isFrameEvent");s(Nre,"entryIsTopLevel");bf=class{static{s(this,"TimelineFrameModel")}#e=[];#t={};#r=new xf;#n=null;#a=!1;#i=!1;#o=null;#s=null;#c=null;#u=null;#l=null;#h=null;#m=null;#p=null;#d=null;#f;constructor(t,n,r,a,o){let c=gf(n,r).filter(u=>u.type==="MAIN_THREAD"&&u.processIsOnMainFrame).map(u=>({tid:u.tid,pid:u.pid,startTime:u.entries[0].ts}));this.#f=o,this.#k(t,c,a.mainFrameId)}framesById(){return this.#t}frames(){return this.#e}#y(t,n){this.#n||this.#g(t,n),this.#u=t,this.#r.addFrameIfNotExists(n,t,!1,!1)}#b(t,n,r){this.#n||this.#g(t,n),this.#r.addFrameIfNotExists(n,t,!0,r),this.#r.setDropped(n,!0),this.#r.setPartial(n,r)}#w(t,n){if(!this.#n){this.#g(t,n);return}if(this.#a||!this.#i){this.#l&&((this.#s?this.#s.triggerTime:this.#u||this.#l)>this.#n.startTime&&(this.#n.idle= +!0,this.#u=null),this.#l=null);let r=this.#r.processPendingBeginFramesOnDrawFrame(n);for(let a of r){let o=this.#n.idle;this.#g(a.startTime,n),o&&this.#s&&this.#v(),a.isDropped&&(this.#n.dropped=!0),a.isPartial&&(this.#n.isPartial=!0)}}this.#a=!1}#D(){this.#n&&this.#s&&!this.#l&&this.#v()}#x(){this.#n&&(this.#i=!0)}#E(){this.#c&&(this.#s=this.#c,this.#c=null,this.#i=!1,this.#a=!0)}#T(t){this.#o=t}#S(t,n){n&&(this.#l=t)}#g(t,n){this.#n&&this.#C(this.#n,t),this.#n=new V0(n,t,I.MicroSeconds(t-wt().traceBounds.min))}#C(t,n){t.setLayerTree(this.#o),t.setEndTime(n),this.#o&&(this.#o.paints=t.paints);let r=this.#e[this.#e.length-1];this.#e.length&&r&&(t.startTime!==r.endTime||t.startTime>t.endTime)&&console.assert(!1,`Inconsistent frame time for frame ${this.#e.length} (${t.startTime} - ${t.endTime})`);let a=this.#e.push(t);t.setIndex(a-1),typeof t.mainFrameId=="number"&&(this.#t[t.mainFrameId]=t)}#v(){!this.#s||!this.#n||(this.#n.paints=this.#s.paints,this.#n.mainFrameId=this.#s.mainFrameId, +this.#s=null)}#k(t,n,r){let a=0;this.#d=n.length&&n[0].tid||null,this.#p=n.length&&n[0].pid||null;for(let o=0;o<t.length;++o){for(;a+1<n.length&&n[a+1].startTime<=t[o].ts;)this.#d=n[++a].tid,this.#p=n[a].pid;this.#F(t[o],r)}this.#d=null,this.#p=null}#F(t,n){C.isSetLayerId(t)&&t.args.data.frame===n?this.#m=t.args.data.layerTreeId:C.isLayerTreeHostImplSnapshot(t)&&Number(t.id)===this.#m?this.#T({entry:t,paints:[]}):(Mre(t)&&this.#R(t),t.tid===this.#d&&t.pid===this.#p&&this.#I(t))}#R(t){t.args.layerTreeId===this.#m&&(C.isBeginFrame(t)?this.#y(t.ts,t.args.frameSeqId):C.isDrawFrame(t)?this.#w(t.ts,t.args.frameSeqId):C.isActivateLayerTree(t)?this.#D():C.isRequestMainThreadFrame(t)?this.#x():C.isNeedsBeginFrameChanged(t)?this.#S(t.ts,t.args.data&&!!t.args.data.needsBeginFrame):C.isDroppedFrame(t)&&this.#b(t.ts,t.args.frameSeqId,!!t.args.hasPartialUpdate))}#I(t){if(Nre(t)&&(this.#h=t.ts),!this.#c&&Ore.has(t.name)&&(this.#c=new Df(this.#h||t.ts)),!!this.#c){if(C.isBeginMainThreadFrame(t)&&t.args. +data.frameId&&(this.#c.mainFrameId=t.args.data.frameId),C.isPaint(t)){let n=this.#f.paintsToSnapshots.get(t);n&&this.#c.paints.push(new wf(t,n))}(C.isCompositeLayers(t)||C.isCommit(t))&&t.args.layerTreeId===this.#m&&this.#E()}}},Ore=new Set(["ScheduleStyleRecalculation","InvalidateLayout","BeginMainThreadFrame","ScrollLayer"]),V0=class{static{s(this,"TimelineFrame")}cat="devtools.legacy_frame";name="frame";ph="X";ts;pid=C.ProcessID(-1);tid=C.ThreadID(-1);index=-1;startTime;startTimeOffset;endTime;duration;idle;dropped;isPartial;layerTree;paints;mainFrameId;seqId;constructor(t,n,r){this.seqId=t,this.startTime=n,this.ts=n,this.startTimeOffset=r,this.endTime=this.startTime,this.duration=I.MicroSeconds(0),this.idle=!1,this.dropped=!1,this.isPartial=!1,this.layerTree=null,this.paints=[],this.mainFrameId=void 0}setIndex(t){this.index=t}setEndTime(t){this.endTime=t,this.duration=I.MicroSeconds(this.endTime-this.startTime)}setLayerTree(t){this.layerTree=t}get dur(){return this.duration}},wf=class{static{ +s(this,"LayerPaintEvent")}#e;#t;constructor(t,n){this.#e=t,this.#t=n}layerId(){return this.#e.args.data.layerId}event(){return this.#e}picture(){let t=this.#t.args.snapshot.params?.layer_rect,n=this.#t.args.snapshot.skp64;return t&&n?{rect:t,serializedPicture:n}:null}},Df=class{static{s(this,"PendingFrame")}paints;mainFrameId;triggerTime;constructor(t){this.paints=[],this.mainFrameId=void 0,this.triggerTime=t}},$0=class{static{s(this,"BeginFrameInfo")}seqId;startTime;isDropped;isPartial;constructor(t,n,r,a){this.seqId=t,this.startTime=n,this.isDropped=r,this.isPartial=a}},xf=class{static{s(this,"TimelineFrameBeginFrameQueue")}queueFrames=[];mapFrames={};addFrameIfNotExists(t,n,r,a){t in this.mapFrames||(this.mapFrames[t]=new $0(t,n,r,a),this.queueFrames.push(t))}setDropped(t,n){t in this.mapFrames&&(this.mapFrames[t].isDropped=n)}setPartial(t,n){t in this.mapFrames&&(this.mapFrames[t].isPartial=n)}processPendingBeginFramesOnDrawFrame(t){let n=[];if(t in this.mapFrames){for(;this.queueFrames[0]!== +t;){let r=this.queueFrames[0];this.mapFrames[r].isDropped&&n.push(this.mapFrames[r]),delete this.mapFrames[r],this.queueFrames.shift()}n.push(this.mapFrames[t]),delete this.mapFrames[t],this.queueFrames.shift()}return n}};s(Lre,"framesWithinWindow")});var X0={};T(X0,{data:()=>jre,deps:()=>zre,finalize:()=>Ure,handleEvent:()=>Bre,reset:()=>Pre});function Pre(){K0.clear(),J0=[]}function Bre(e){C.isGPUTask(e)&&Ve.addEventToProcessThread(e,K0)}async function Ure(){let{gpuProcessId:e,gpuThreadId:t}=wt(),n=K0.get(e);n&&t&&(J0=n.get(t)||[])}function jre(){return{mainGPUThreadTasks:J0}}function zre(){return["Meta"]}var K0,J0,VO=g(()=>{d();Ze();De();Dr();K0=new Map,J0=[];s(Pre,"reset");s(Bre,"handleEvent");s(Ure,"finalize");s(jre,"data");s(zre,"deps")});var Q0={};T(Q0,{data:()=>Gre,finalize:()=>Wre,handleEvent:()=>Hre,reset:()=>qre});function qre(){Yu.clear(),Ef.clear(),Tf.clear(),Sf.clear(),Z0.clear()}function Hre(e){if(C.isPaintImage(e)){let t=Yu.get(e.pid)||new Map,n=t.get(e.tid)||[];n.push(e),t.set(e.tid,n),Yu.set(e.pid,t),e.args.data.url&&Ce.getWithDefault(Z0,e.args.data.url,()=>[]).push(e);return}if(C.isDecodeLazyPixelRef(e)&&typeof e.args?.LazyPixelRef<"u"){let t=Ef.get(e.pid)||new Map,n=t.get(e.tid)||[];n.push(e),t.set(e.tid,n),Ef.set(e.pid,t)}if(C.isDrawLazyPixelRef(e)&&typeof e.args?.LazyPixelRef<"u"){let t=Yu.get(e.pid)?.get(e.tid)?.at(-1);if(!t)return;Tf.set(e.args.LazyPixelRef,t);return}if(C.isDecodeImage(e)){let t=Yu.get(e.pid)?.get(e.tid)?.at(-1);if(t){Sf.set(e,t);return}let n=Ef.get(e.pid)?.get(e.tid)?.at(-1);if(!n||typeof n.args?.LazyPixelRef>"u")return;let r=Tf.get(n.args.LazyPixelRef);if(!r)return;Sf.set(e,r)}}async function Wre(){}function Gre(){return{paintImageByDrawLazyPixelRef:Tf,paintImageForEvent:Sf,paintImageEventForUrl:Z0}} +var Yu,Ef,Tf,Sf,Z0,$O=g(()=>{d();Yt();De();Yu=new Map,Ef=new Map,Tf=new Map,Sf=new Map,Z0=new Map;s(qre,"reset");s(Hre,"handleEvent");s(Wre,"finalize");s(Gre,"data")});var ub={};T(ub,{data:()=>Jre,finalize:()=>Kre,handleEvent:()=>$re,reset:()=>Vre});function Vre(){eb.clear(),Ku.clear(),tb.clear(),rb.clear(),kf.clear(),Cf.clear(),nb.clear(),ab.clear(),ob.clear(),ib.clear(),cb.clear(),sb.length=0}function mo(e){kf.set(e.event,e.initiator);let t=Cf.get(e.initiator)||[];t.push(e.event),Cf.set(e.initiator,t)}function $re(e){if(C.isScheduleStyleRecalculation(e))eb.set(e.args.data.frame,e);else if(C.isUpdateLayoutTree(e)){if(e.args.beginData){tb.set(e.args.beginData.frame,e);let t=eb.get(e.args.beginData.frame);t&&mo({event:e,initiator:t})}}else if(C.isInvalidateLayout(e)){let t=e;if(!Ku.has(e.args.data.frame)){let n=tb.get(e.args.data.frame);if(n){let{endTime:r}=J.eventTimingsMicroSeconds(n),a=kf.get(n);a&&r&&r>e.ts&&(t=a)}}Ku.set(e.args.data.frame,t)}else if(C.isLayout(e)){let t=Ku.get(e.args.beginData.frame);t&&mo({event:e,initiator:t}),Ku.delete(e.args.beginData.frame)}else if(C.isRequestAnimationFrame(e))nb.set(e.args.data.id,e);else if(C.isFireAnimationFrame( +e)){let t=nb.get(e.args.data.id);t&&mo({event:e,initiator:t})}else if(C.isTimerInstall(e))rb.set(e.args.data.timerId,e);else if(C.isTimerFire(e)){let t=rb.get(e.args.data.timerId);t&&mo({event:e,initiator:t})}else if(C.isRequestIdleCallback(e))ab.set(e.args.data.id,e);else if(C.isFireIdleCallback(e)){let t=ab.get(e.args.data.id);t&&mo({event:e,initiator:t})}else if(C.isWebSocketCreate(e))ob.set(e.args.data.identifier,e);else if(C.isWebSocketInfo(e)||C.isWebSocketTransfer(e)){let t=ob.get(e.args.data.identifier);t&&mo({event:e,initiator:t})}else if(C.isSchedulePostTaskCallback(e))ib.set(e.args.data.taskId,e);else if(C.isRunPostTaskCallback(e)||C.isAbortPostTaskCallback(e)){let t=ib.get(e.args.data.taskId);t&&mo({event:e,initiator:t})}else if(C.isHandlePostMessage(e))sb.push(e);else if(C.isSchedulePostMessage(e)){let t=e.args.data?.traceId;t&&cb.set(t,e)}}function Yre(){for(let e of sb){let t=e.args.data?.traceId,n=cb.get(t);n&&mo({event:e,initiator:n})}}async function Kre(){Yre()}function Jre(){ +return{eventToInitiator:kf,initiatorToEvents:Cf}}var eb,Ku,tb,sb,cb,kf,Cf,nb,rb,ab,ob,ib,YO=g(()=>{d();Ze();De();eb=new Map,Ku=new Map,tb=new Map,sb=[],cb=new Map,kf=new Map,Cf=new Map,nb=new Map,rb=new Map,ab=new Map,ob=new Map,ib=new Map;s(Vre,"reset");s(mo,"storeInitiator");s($re,"handleEvent");s(Yre,"finalizeInitiatorRelationship");s(Kre,"finalize");s(Jre,"data")});var mb={};T(mb,{data:()=>tae,finalize:()=>eae,handleEvent:()=>Qre,handleUserConfig:()=>Zre,reset:()=>Xre});function Xre(){Rf.clear(),Gr=null,Ju.length=0,Ff=!1,Xu=null}function Zre(e){Xu=e.maxInvalidationEventsPerEvent}function lb(e,t){let n=Rf.get(e)||[];n.push(t),Xu!==null&&n.length>Xu&&n.shift(),Rf.set(e,n);let r=db.get(e)??0;db.set(e,r+1)}function Qre(e){if(Xu!==0){if(C.isUpdateLayoutTree(e)){Gr=e;for(let t of Ju){if(C.isLayoutInvalidationTracking(t))continue;let n=Gr.args.beginData?.frame;n&&t.args.data.frame===n&&lb(e,t)}return}if(C.isInvalidationTracking(e)){if(Ff&&(Ju.length=0,Gr=null,Ff=!1),Gr&&(C.isScheduleStyleInvalidationTracking(e)||C.isStyleRecalcInvalidationTracking(e)||C.isStyleInvalidatorInvalidationTracking(e))){let t=Gr.ts+(Gr.dur||0);e.ts>=Gr.ts&&e.ts<=t&&Gr.args.beginData?.frame===e.args.data.frame&&lb(Gr,e)}Ju.push(e);return}if(C.isPaint(e)){Ff=!0;return}if(C.isLayout(e)){let t=e.args.beginData.frame;for(let n of Ju)C.isLayoutInvalidationTracking(n)&&n.args.data.frame=== +t&&lb(e,n)}}}async function eae(){}function tae(){return{invalidationsForEvent:Rf,invalidationCountForEvent:db}}var Rf,db,Gr,Ff,Ju,Xu,KO=g(()=>{d();De();Rf=new Map,db=new Map,Gr=null,Ff=!1,Ju=[];s(Xre,"reset");Xu=null;s(Zre,"handleUserConfig");s(lb,"addInvalidationToEvent");s(Qre,"handleEvent");s(eae,"finalize");s(tae,"data")});var gb={};T(gb,{data:()=>Qu,deps:()=>iae,finalize:()=>oae,handleEvent:()=>aae,reset:()=>rae});function yi(e,t,n){Zu.has(e)||Zu.set(e,{});let r=Zu.get(e);if(!r)throw new Error(`Unable to locate trace events for request ID ${e}`);if(Array.isArray(r[t])){let a=r[t],o=n;a.push(...o)}else r[t]=n}function nae(e){for(let t of e)if(t>0)return t;return 0}function rae(){pb.clear(),fb.clear(),Zu.clear(),_f.length=0,Af.clear(),hb.clear(),vi.clear()}function aae(e){if(C.isResourceChangePriority(e)){yi(e.args.data.requestId,"changePriority",e);return}if(C.isResourceWillSendRequest(e)){yi(e.args.data.requestId,"willSendRequests",[e]);return}if(C.isResourceSendRequest(e)){yi(e.args.data.requestId,"sendRequests",[e]);return}if(C.isResourceReceiveResponse(e)){yi(e.args.data.requestId,"receiveResponse",e);return}if(C.isResourceReceivedData(e)){yi(e.args.data.requestId,"receivedData",[e]);return}if(C.isResourceFinish(e)){yi(e.args.data.requestId,"resourceFinish",e);return}if(C.isResourceMarkAsCached(e)){yi( +e.args.data.requestId,"resourceMarkAsCached",e);return}if(C.isWebSocketCreate(e)||C.isWebSocketInfo(e)||C.isWebSocketTransfer(e)){let t=e.args.data.identifier;vi.has(t)||(e.args.data.frame?vi.set(t,{frame:e.args.data.frame,webSocketIdentifier:t,events:[],syntheticConnection:null}):e.args.data.workerId&&vi.set(t,{workerId:e.args.data.workerId,webSocketIdentifier:t,events:[],syntheticConnection:null})),vi.get(t)?.events.push(e)}}async function oae(){let{rendererProcessesByFrame:e}=wt();for(let[t,n]of Zu.entries()){if(!n.sendRequests||!n.receiveResponse)continue;let r=[];for(let _e=0;_e<n.sendRequests.length-1;_e++){let Re=n.sendRequests[_e],He=n.sendRequests[_e+1],Ie=Re.ts,te=I.MicroSeconds(He.ts-Re.ts);if(n.willSendRequests&&n.willSendRequests[_e]&&n.willSendRequests[_e+1]){let Y=n.willSendRequests[_e],ht=n.willSendRequests[_e+1];Ie=Y.ts,te=I.MicroSeconds(ht.ts-Y.ts)}r.push({url:Re.args.data.url,priority:Re.args.data.priority,requestMethod:Re.args.data.requestMethod,ts:Ie,dur:te})}let a=n. +resourceFinish?.args.data.encodedDataLength!==0,o=n.receiveResponse.args.data.fromCache&&!n.receiveResponse.args.data.fromServiceWorker&&!a,i=n.resourceMarkAsCached!==void 0,c=i?void 0:n.receiveResponse.args.data.timing;if(!c&&!i)continue;let u=n.sendRequests[0],l=n.sendRequests[n.sendRequests.length-1],m=l.args.data.priority,p=m;n.changePriority&&(p=n.changePriority.args.data.priority);let f=n.willSendRequests&&n.willSendRequests.length?I.MicroSeconds(n.willSendRequests[0].ts):I.MicroSeconds(u.ts),h=n.willSendRequests&&n.willSendRequests.length?I.MicroSeconds(n.willSendRequests[n.willSendRequests.length-1].ts):I.MicroSeconds(l.ts),y=n.resourceFinish?n.resourceFinish.ts:h,v=n.resourceFinish?.args.data.finishTime?I.MicroSeconds(n.resourceFinish.args.data.finishTime*If):I.MicroSeconds(y),w=I.MicroSeconds(c?(v||h)-h:0),x=I.MicroSeconds(y-(v||y)),E=I.MicroSeconds(h-f),S=c?c.requestTime*If-h:0,k=I.MicroSeconds(ks.clamp(S,0,Number.MAX_VALUE)),R=c?I.MicroSeconds(nae([c.dnsStart*xr,c.connectStart* +xr,c.sendStart*xr,n.receiveResponse.ts-h])):I.MicroSeconds(n.receiveResponse.ts-f),O=c?I.MicroSeconds(c.requestTime*If+c.sendStart*xr):f,N=c?I.MicroSeconds((c.receiveHeadersEnd-c.sendEnd)*xr):I.MicroSeconds(0),H=c?I.MicroSeconds(c.requestTime*If+c.receiveHeadersEnd*xr):f,ne=c?I.MicroSeconds((v||H)-H):I.MicroSeconds(y-n.receiveResponse.ts),$=I.MicroSeconds(w+x),ie=c?I.MicroSeconds((c.dnsEnd-c.dnsStart)*xr):I.MicroSeconds(0),ye=c?I.MicroSeconds((c.sslEnd-c.sslStart)*xr):I.MicroSeconds(0),ce=c?I.MicroSeconds((c.proxyEnd-c.proxyStart)*xr):I.MicroSeconds(0),vt=c?I.MicroSeconds((c.sendEnd-c.sendStart)*xr):I.MicroSeconds(0),me=c?I.MicroSeconds((c.connectEnd-c.connectStart)*xr):I.MicroSeconds(0),{frame:ve,url:mt,renderBlocking:ot}=l.args.data,{encodedDataLength:Be,decodedBodyLength:Ot}=n.resourceFinish?n.resourceFinish.args.data:{encodedDataLength:0,decodedBodyLength:0},Je=new URL(mt),qe=Je.protocol==="https:",Fe=Ve.activeURLForFrameAtTime(ve,l.ts,e)||"",L=en.SyntheticEventsManager.registerSyntheticEvent( +{rawSourceEvent:l,args:{data:{syntheticData:{dnsLookup:ie,download:ne,downloadStart:H,finishTime:v,initialConnection:me,isDiskCached:o,isHttps:qe,isMemoryCached:i,isPushedResource:a,networkDuration:w,processingDuration:x,proxyNegotiation:ce,queueing:k,redirectionDuration:E,requestSent:vt,sendStartTime:O,ssl:ye,stalled:R,totalTime:$,waiting:N},decodedBodyLength:Ot,encodedDataLength:Be,frame:ve,fromServiceWorker:n.receiveResponse.args.data.fromServiceWorker,isLinkPreload:l.args.data.isLinkPreload||!1,mimeType:n.receiveResponse.args.data.mimeType,priority:p,initialPriority:m,protocol:n.receiveResponse.args.data.protocol??"unknown",redirects:r,renderBlocking:ot??"non_blocking",requestId:t,requestingFrameUrl:Fe,requestMethod:l.args.data.requestMethod,resourceType:l.args.data.resourceType??"Other",statusCode:n.receiveResponse.args.data.statusCode,responseHeaders:n.receiveResponse.args.data.headers||[],fetchPriorityHint:l.args.data.fetchPriorityHint??"auto",initiator:l.args.data.initiator,stackTrace:l. +args.data.stackTrace,timing:c,url:mt,failed:n.resourceFinish?.args.data.didFail??!1,finished:!!n.resourceFinish,connectionId:n.receiveResponse.args.data.connectionId,connectionReused:n.receiveResponse.args.data.connectionReused}},cat:"loading",name:"SyntheticNetworkRequest",ph:"X",dur:I.MicroSeconds(y-f),tdur:I.MicroSeconds(y-f),ts:I.MicroSeconds(f),tts:I.MicroSeconds(f),pid:l.pid,tid:l.tid}),ue=Ce.getWithDefault(fb,Je.host,()=>({renderBlocking:[],nonRenderBlocking:[],all:[]}));uo.isSyntheticNetworkRequestEventRenderBlocking(L)?ue.renderBlocking.push(L):ue.nonRenderBlocking.push(L),ue.all.push(L),_f.push(L),pb.set(L.args.data.requestId,L);let it=L.args.data.initiator?.url||Ve.getZeroIndexedStackTraceForEvent(L)?.at(0)?.url;if(it){let _e=Af.get(it)??[];_e.push(L),Af.set(it,_e)}}for(let t of _f){let n=Af.get(t.args.data.url);if(n)for(let r of n)hb.set(r,t)}sae()}function Qu(){return{byId:pb,byOrigin:fb,byTime:_f,eventToInitiator:hb,webSocket:[...vi.values()]}}function iae(){return["Meta"]} +function sae(){vi.forEach(e=>{let t=null,n=null;for(let r of e.events)C.isWebSocketCreate(r)&&(t=r),C.isWebSocketDestroy(r)&&(n=r);e.syntheticConnection=cae(t,n,e.events[0])})}function cae(e,t,n){let{traceBounds:r}=wt(),a=e?e.ts:r.min,i=(t?t.ts:r.max)-a,c=e||t||n;return{name:"SyntheticWebSocketConnection",cat:c.cat,ph:"X",ts:a,dur:i,pid:c.pid,tid:c.tid,s:c.s,rawSourceEvent:c,_tag:"SyntheticEntryTag",args:{data:{identifier:c.args.data.identifier,priority:"Low",url:c.args.data.url||""}}}}var xr,If,vi,Zu,pb,fb,_f,Af,hb,Mf=g(()=>{d();Yt();Ze();De();Dr();xr=1e3,If=1e6,vi=new Map,Zu=new Map,pb=new Map,fb=new Map,_f=[],Af=new Map,hb=new Map;s(yi,"storeTraceEventWithRequestId");s(nae,"firstPositiveValueInList");s(rae,"reset");s(aae,"handleEvent");s(oae,"finalize");s(Qu,"data");s(iae,"deps");s(sae,"finalizeWebSocketData");s(cae,"createSyntheticWebSocketConnection")});var Db={};T(Db,{data:()=>mae,deps:()=>pae,finalize:()=>dae,handleEvent:()=>lae,reset:()=>uae});function uae(){vb.clear(),bb.clear(),wb.clear(),yb=null}function lae(e){if(C.isNavigationStart(e)){yb=e;return}C.isLargestImagePaintCandidate(e)&&e.args.data&&(vb.set(e.args.data.DOMNodeId,e),wb.set(yb,e))}async function dae(){let e=Qu().byTime,t=wt().traceBounds;for(let[n,r]of wb){let a=r.args.data?.imageUrl;if(!a)continue;let o=n?.ts??t.min,i=r.ts,c;for(let u of e)if(!(u.ts<o)){if(u.ts>=i)break;if(u.args.data.url===a||u.args.data.redirects.some(l=>l.url===a)){c=u;break}}c&&bb.set(n,c)}}function mae(){return{imageByDOMNodeId:vb,lcpRequestByNavigation:bb}}function pae(){return["Meta","NetworkRequests"]}var vb,bb,wb,yb,JO=g(()=>{d();De();Dr();Mf();vb=new Map,bb=new Map,wb=new Map;s(uae,"reset");s(lae,"handleEvent");s(dae,"finalize");s(mae,"data");s(pae,"deps")});var Eb={};T(Eb,{data:()=>yae,finalize:()=>gae,handleEvent:()=>hae,reset:()=>fae});function fae(){xb.clear()}function hae(e){C.isLargestTextPaintCandidate(e)&&e.args.data&&xb.set(e.args.data.DOMNodeId,e)}async function gae(){}function yae(){return xb}var xb,XO=g(()=>{d();De();xb=new Map;s(fae,"reset");s(hae,"handleEvent");s(gae,"finalize");s(yae,"data")});var Fb={};T(Fb,{data:()=>kb,deps:()=>Dae,finalize:()=>wae,handleEvent:()=>bae,reset:()=>vae});function vae(){Tb.length=0,Sb.length=0,Cb.length=0,ZO={}}function bae(e){C.isScreenshot(e)?Sb.push(e):C.isPipelineReporter(e)&&Tb.push(e)}async function wae(){let e=Ve.createMatchedSortedSyntheticEvents(Tb);ZO=Object.fromEntries(e.map(t=>{let n=t.args.data.beginEvent.args.chrome_frame_reporter.frame_sequence,r=I.MicroSeconds(t.ts+t.dur);return[n,r]}));for(let t of Sb){let{cat:n,name:r,ph:a,pid:o,tid:i}=t,c=en.SyntheticEventsManager.registerSyntheticEvent({rawSourceEvent:t,cat:n,name:r,ph:a,pid:o,tid:i,ts:t.ts,args:{dataUri:`data:image/jpg;base64,${t.args.snapshot}`}});Cb.push(c)}}function kb(){return{all:Cb}}function Dae(){return["Meta"]}var Tb,Sb,Cb,ZO,Rb=g(()=>{d();Ze();De();Tb=[],Sb=[],Cb=[],ZO={};s(vae,"reset");s(bae,"handleEvent");s(wae,"finalize");s(kb,"data");s(Dae,"deps")});var _b={};T(_b,{MAX_CLUSTER_DURATION:()=>Of,MAX_SHIFT_TIME_DELTA:()=>el,data:()=>Rae,deps:()=>Iae,finalize:()=>kae,handleEvent:()=>Eae,reset:()=>xae,scoreClassificationForLayoutShift:()=>Aae});function xae(){po.length=0,tl.length=0,Pf.length=0,QO.length=0,qf.length=0,Hf.length=0,Bf.length=0,jf.length=0,Uf.length=0,zf.length=0,Rs.clear(),Nn.length=0,Lf=0,Is.length=0,Ib=-1,Ab.clear()}function Eae(e){if(C.isLayoutShift(e)&&!e.args.data?.had_recent_input){po.push(e);return}if(C.isLayoutInvalidationTracking(e)){tl.push(e);return}if(C.isScheduleStyleInvalidationTracking(e)&&Pf.push(e),C.isStyleRecalcInvalidationTracking(e)&&QO.push(e),C.isPrePaint(e)){qf.push(e);return}C.isRenderFrameImplCreateChildFrame(e)&&Bf.push(e),C.isDomLoading(e)&&Uf.push(e),C.isLayoutImageUnsized(e)&&jf.push(e),C.isBeginRemoteFontLoad(e)&&zf.push(e),C.isPaintImage(e)&&Hf.push(e)}function Nf(e){return{min:e,max:e,range:I.MicroSeconds(0)}}function Qn(e,t){e.max=t,e.range=I.MicroSeconds(e.max-e.min)}function Tae(e){let t=kb(). +all,n=Ve.findPreviousEventBeforeTimestamp(t,e),r=n?t[t.indexOf(n)+1]:null;return{before:n,after:r}}function Sae(){let{traceBounds:e}=wt();Is.push({ts:e.min,score:0});for(let t of Nn){let n=0;t.events[0].args.data&&Is.push({ts:t.clusterWindow.min,score:t.events[0].args.data.weighted_score_delta});for(let r=0;r<t.events.length;r++){let a=t.events[r];a.args.data&&(n+=a.args.data.weighted_score_delta,Is.push({ts:a.ts,score:n}))}Is.push({ts:t.clusterWindow.max,score:0})}}function Cae(){Rs.clear();for(let e of po)if(e.args.data?.impacted_nodes)for(let t of e.args.data.impacted_nodes)Rs.add(t.node_id);for(let e of tl)e.args.data?.nodeId&&Rs.add(e.args.data.nodeId);for(let e of Pf)e.args.data?.nodeId&&Rs.add(e.args.data.nodeId)}async function kae(){po.sort((e,t)=>e.ts-t.ts),qf.sort((e,t)=>e.ts-t.ts),tl.sort((e,t)=>e.ts-t.ts),Bf.sort((e,t)=>e.ts-t.ts),Uf.sort((e,t)=>e.ts-t.ts),jf.sort((e,t)=>e.ts-t.ts),zf.sort((e,t)=>e.ts-t.ts),Hf.sort((e,t)=>e.ts-t.ts),await Fae(),Sae(),Cae()}async function Fae(){ +let{navigationsByFrameId:e,mainFrameId:t,traceBounds:n}=wt(),r=e.get(t)||[];if(po.length===0)return;let a=po[0].ts,o=po[0].ts,i=null;for(let c of po){let u=c.ts-a>Of,l=c.ts-o>el,m=Ft.nearestIndexFromEnd(r,v=>v.ts<c.ts),p=i!==m&&m!==null;if(u||l||p||!Nn.length){let v=c.ts,w=u?a+Of:1/0,x=l?o+el:1/0,E=p?r[m].ts:1/0,S=Math.min(w,x,E);if(Nn.length>0){let R=Nn[Nn.length-1];Qn(R.clusterWindow,I.MicroSeconds(S))}let k=m===null?C.NO_NAVIGATION:r[m].args.data?.navigationId;Nn.push({name:"SyntheticLayoutShiftCluster",events:[],clusterWindow:Nf(v),clusterCumulativeScore:0,scoreWindows:{good:Nf(v)},navigationId:k,ts:c.ts,pid:c.pid,tid:c.tid,ph:"X",cat:"",dur:I.MicroSeconds(-1)}),a=v}let f=Nn[Nn.length-1],h=m!==null?I.MicroSeconds(c.ts-r[m].ts):void 0;if(f.clusterCumulativeScore+=c.args.data?c.args.data.weighted_score_delta:0,!c.args.data)continue;let y=en.SyntheticEventsManager.registerSyntheticEvent({rawSourceEvent:c,...c,args:{frame:c.args.frame,data:{...c.args.data,rawEvent:c,navigationId:f.navigationId?? +void 0}},parsedData:{timeFromNavigation:h,screenshots:Tae(c.ts),cumulativeWeightedScoreInWindow:f.clusterCumulativeScore,sessionWindowData:{cumulativeWindowScore:0,id:Nn.length}}});f.events.push(y),Qn(f.clusterWindow,c.ts),o=c.ts,i=m}for(let c of Nn){let u=0,l=-1;if(c===Nn[Nn.length-1]){let h=Of+c.clusterWindow.min,y=c.clusterWindow.max+el,v=Ft.nearestIndexFromBeginning(r,E=>E.ts>c.clusterWindow.max),w=v?r[v].ts:1/0,x=Math.min(h,y,n.max,w);Qn(c.clusterWindow,I.MicroSeconds(x))}let m=0,p=null;for(let h of c.events){u+=h.args.data?h.args.data.weighted_score_delta:0,l=h.parsedData.sessionWindowData.id;let y=h.ts;h.parsedData.sessionWindowData.cumulativeWindowScore=c.clusterCumulativeScore,u<.1?Qn(c.scoreWindows.good,y):u>=.1&&u<.25?(c.scoreWindows.needsImprovement||(Qn(c.scoreWindows.good,I.MicroSeconds(y-1)),c.scoreWindows.needsImprovement=Nf(y)),Qn(c.scoreWindows.needsImprovement,y)):u>=.25&&(c.scoreWindows.bad||(c.scoreWindows.needsImprovement?Qn(c.scoreWindows.needsImprovement,I.MicroSeconds( +y-1)):Qn(c.scoreWindows.good,I.MicroSeconds(y-1)),c.scoreWindows.bad=Nf(h.ts)),Qn(c.scoreWindows.bad,y)),c.scoreWindows.bad?Qn(c.scoreWindows.bad,c.clusterWindow.max):c.scoreWindows.needsImprovement?Qn(c.scoreWindows.needsImprovement,c.clusterWindow.max):Qn(c.scoreWindows.good,c.clusterWindow.max);let v=h.args.data?.weighted_score_delta;v!==void 0&&v>m&&(m=v,p=h)}p&&(c.worstShiftEvent=p),c.ts=c.events[0].ts;let f=J.eventTimingsMicroSeconds(c.events[c.events.length-1]);c.dur=I.MicroSeconds(f.endTime-c.events[0].ts+el),u>Lf&&(Ib=l,Lf=u),c.navigationId&&Ce.getWithDefault(Ab,c.navigationId,()=>[]).push(c)}}function Rae(){return{clusters:Nn,sessionMaxScore:Lf,clsWindowID:Ib,prePaintEvents:qf,layoutInvalidationEvents:tl,scheduleStyleInvalidationEvents:Pf,styleRecalcInvalidationEvents:[],renderFrameImplCreateChildFrameEvents:Bf,domLoadingEvents:Uf,layoutImageUnsizedEvents:jf,beginRemoteFontLoadEvents:zf,scoreRecords:Is,backendNodeIds:[...Rs],clustersByNavigationId:new Map(Ab),paintImageEvents:Hf}} +function Iae(){return["Screenshots","Meta"]}function Aae(e){let t="good";return e>=.1&&(t="ok"),e>=.25&&(t="bad"),t}var Of,el,po,tl,Pf,QO,Bf,Uf,jf,zf,Rs,qf,Hf,Lf,Ib,Nn,Ab,Is,e5=g(()=>{d();Yt();Ze();De();Dr();Rb();Of=J.millisecondsToMicroseconds(I.MilliSeconds(5e3)),el=J.millisecondsToMicroseconds(I.MilliSeconds(1e3)),po=[],tl=[],Pf=[],QO=[],Bf=[],Uf=[],jf=[],zf=[],Rs=new Set,qf=[],Hf=[],Lf=0,Ib=-1,Nn=[],Ab=new Map,Is=[];s(xae,"reset");s(Eae,"handleEvent");s(Nf,"traceWindowFromTime");s(Qn,"updateTraceWindowMax");s(Tae,"findScreenshots");s(Sae,"buildScoreRecords");s(Cae,"collectNodes");s(kae,"finalize");s(Fae,"buildLayoutShiftsClusters");s(Rae,"data");s(Iae,"deps");s(Aae,"scoreClassificationForLayoutShift")});var Mb={};T(Mb,{data:()=>Oae,finalize:()=>Nae,handleEvent:()=>Mae,reset:()=>_ae});function _ae(){Wf.clear()}function Mae(e){if(C.isUpdateCounters(e)){let t=Ce.getWithDefault(Wf,e.pid,()=>[]);t.push(e),Wf.set(e.pid,t)}}async function Nae(){}function Oae(){return{updateCountersByProcess:Wf}}var Wf,t5=g(()=>{d();Yt();De();Wf=new Map;s(_ae,"reset");s(Mae,"handleEvent");s(Nae,"finalize");s(Oae,"data")});var Nb={};T(Nb,{data:()=>Uae,finalize:()=>Bae,handleEvent:()=>Pae,reset:()=>Lae});function Lae(){nl.clear()}function Pae(e){if(C.isTracingStartedInBrowser(e)){for(let t of e.args.data?.frames??[])nl.set(t.frame,t);return}if(C.isCommitLoad(e)){let t=e.args.data;if(!t)return;let n=nl.get(t.frame);if(!n)return;nl.set(t.frame,{...n,url:t.url||n.url,name:t.name||t.name})}}async function Bae(){}function Uae(){return{frames:nl}}var nl,n5=g(()=>{d();De();nl=new Map;s(Lae,"reset");s(Pae,"handleEvent");s(Bae,"finalize");s(Uae,"data")});var Lb={};T(Lb,{data:()=>Vae,deps:()=>$ae,finalize:()=>Gae,getFrameIdForPageLoadEvent:()=>Vf,handleEvent:()=>zae,reset:()=>jae,scoreClassificationForDOMContentLoaded:()=>i5,scoreClassificationForFirstContentfulPaint:()=>r5,scoreClassificationForLargestContentfulPaint:()=>o5,scoreClassificationForTimeToInteractive:()=>a5,scoreClassificationForTotalBlockingTime:()=>s5});function jae(){al.clear(),rl=[],Ob=[],Gf.clear()}function zae(e){C.eventIsPageLoadEvent(e)&&rl.push(e)}function qae(e,t){let n=e.args.data?.navigationId;if(!n)throw new Error("Navigation event unexpectedly had no navigation ID.");let r=Vf(t),{rendererProcessesByFrame:a}=wt(),o=a.get(r);if(!(!o||!o.get(t.pid))&&!C.isNavigationStart(t)){if(C.isFirstContentfulPaint(t)){let c=I.MicroSeconds(t.ts-e.ts),u=r5(c);fo(r,n,{event:t,metricName:"FCP",classification:u,navigation:e,timing:c});return}if(C.isFirstPaint(t)){let c=I.MicroSeconds(t.ts-e.ts);fo(r,n,{event:t,metricName:"FP",classification:"unclassified",navigation:e,timing:c}); +return}if(C.isMarkDOMContent(t)){let c=I.MicroSeconds(t.ts-e.ts),u={event:t,metricName:"DCL",classification:i5(c),navigation:e,timing:c};fo(r,n,u);return}if(C.isInteractiveTime(t)){let c=I.MicroSeconds(t.ts-e.ts),u={event:t,metricName:"TTI",classification:a5(c),navigation:e,timing:c};fo(r,n,u);let l=J.millisecondsToMicroseconds(I.MilliSeconds(t.args.args.total_blocking_time_ms)),m={event:t,metricName:"TBT",classification:s5(l),navigation:e,timing:l};fo(r,n,m);return}if(C.isMarkLoad(t)){let c=I.MicroSeconds(t.ts-e.ts);fo(r,n,{event:t,metricName:"L",classification:"unclassified",navigation:e,timing:c});return}if(C.isLargestContentfulPaintCandidate(t)){let c=t.args.data?.candidateIndex;if(!c)throw new Error("Largest Contentful Paint unexpectedly had no candidateIndex.");let u=I.MicroSeconds(t.ts-e.ts),l={event:t,metricName:"LCP",classification:o5(u),navigation:e,timing:u},m=Ce.getWithDefault(al,r,()=>new Map),f=Ce.getWithDefault(m,n,()=>new Map).get("LCP");if(f===void 0){Gf.add(l.event),fo( +r,n,l);return}let h=f.event;if(!C.isLargestContentfulPaintCandidate(h))return;let y=h.args.data?.candidateIndex;if(!y)return;y<c&&(Gf.delete(h),Gf.add(l.event),fo(r,n,l));return}if(!C.isLayoutShift(t))return Mu(t,`Unexpected event type: ${t}`)}}function fo(e,t,n){let r=Ce.getWithDefault(al,e,()=>new Map),a=Ce.getWithDefault(r,t,()=>new Map);a.delete(n.metricName),a.set(n.metricName,n)}function Vf(e){if(C.isFirstContentfulPaint(e)||C.isInteractiveTime(e)||C.isLargestContentfulPaintCandidate(e)||C.isNavigationStart(e)||C.isLayoutShift(e)||C.isFirstPaint(e))return e.args.frame;if(C.isMarkDOMContent(e)||C.isMarkLoad(e)){let t=e.args.data?.frame;if(!t)throw new Error("MarkDOMContent unexpectedly had no frame ID.");return t}Mu(e,`Unexpected event type: ${e}`)}function Hae(e){if(C.isFirstContentfulPaint(e)||C.isLargestContentfulPaintCandidate(e)||C.isFirstPaint(e)){let t=e.args.data?.navigationId;if(!t)throw new Error("Trace event unexpectedly had no navigation ID.");let{navigationsByNavigationId:n}=wt(), +r=n.get(t);return r||null}if(C.isMarkDOMContent(e)||C.isInteractiveTime(e)||C.isLayoutShift(e)||C.isMarkLoad(e)){let t=Vf(e),{navigationsByFrameId:n}=wt();return Ve.getNavigationForTraceEvent(e,t,n)}return C.isNavigationStart(e)?null:Mu(e,`Unexpected event type: ${e}`)}function r5(e){let t=J.secondsToMicroseconds(I.Seconds(1.8)),n=J.secondsToMicroseconds(I.Seconds(3)),r="bad";return e<=n&&(r="ok"),e<=t&&(r="good"),r}function a5(e){let t=J.secondsToMicroseconds(I.Seconds(3.8)),n=J.secondsToMicroseconds(I.Seconds(7.3)),r="bad";return e<=n&&(r="ok"),e<=t&&(r="good"),r}function o5(e){let t=J.secondsToMicroseconds(I.Seconds(2.5)),n=J.secondsToMicroseconds(I.Seconds(4)),r="bad";return e<=n&&(r="ok"),e<=t&&(r="good"),r}function i5(e){return"unclassified"}function s5(e){let t=J.millisecondsToMicroseconds(I.MilliSeconds(200)),n=J.millisecondsToMicroseconds(I.MilliSeconds(600)),r="bad";return e<=n&&(r="ok"),e<=t&&(r="good"),r}function Wae(){let e=[],n=[...al.values()].flatMap(r=>[...r.values()]); +for(let r=0;r<n.length;r++){let o=n[r].get("LCP");!o||!o.event||e.push(o.event)}return e}async function Gae(){rl.sort((a,o)=>a.ts-o.ts);for(let a of rl){let o=Hae(a);o&&qae(o,a)}let e=Wae(),t=wt().mainFrameId,n=rl.filter(a=>!C.isLargestContentfulPaintCandidate(a));Ob=[...e,...n].filter(C.isMarkerEvent).filter(a=>Vf(a)===t).sort((a,o)=>a.ts-o.ts)}function Vae(){return{metricScoresByFrameId:al,allMarkerEvents:Ob}}function $ae(){return["Meta"]}var al,Ob,rl,Gf,c5=g(()=>{d();Yt();Ze();De();Dr();al=new Map,Ob=[];s(jae,"reset");rl=[],Gf=new Set;s(zae,"handleEvent");s(qae,"storePageLoadMetricAgainstNavigationId");s(fo,"storeMetricScore");s(Vf,"getFrameIdForPageLoadEvent");s(Hae,"getNavigationForPageLoadEvent");s(r5,"scoreClassificationForFirstContentfulPaint");s(a5,"scoreClassificationForTimeToInteractive");s(o5,"scoreClassificationForLargestContentfulPaint");s(i5,"scoreClassificationForDOMContentLoaded");s(s5,"scoreClassificationForTotalBlockingTime");s(Wae,"gatherFinalLCPEvents");s(Gae,"fina\ +lize");s(Vae,"data");s($ae,"deps")});var Bb={};T(Bb,{data:()=>Xae,finalize:()=>Jae,handleEvent:()=>Kae,reset:()=>Yae});function Yae(){$f=null,Pb.clear()}function Kae(e){if(C.isSelectorStats(e)&&$f&&e.args.selector_stats){Pb.set($f,{timings:e.args.selector_stats.selector_timings});return}if(C.isUpdateLayoutTree(e)){$f=e;return}}async function Jae(){}function Xae(){return{dataForUpdateLayoutEvent:Pb}}var $f,Pb,u5=g(()=>{d();De();$f=null,Pb=new Map;s(Yae,"reset");s(Kae,"handleEvent");s(Jae,"finalize");s(Xae,"data")});var Ub={};T(Ub,{data:()=>roe,deps:()=>aoe,finalize:()=>eoe,handleEvent:()=>Qae,reset:()=>Zae});function Zae(){Yf.length=0}function Qae(e){}async function eoe(){toe(),Ve.sortTraceEventsInPlace(Yf)}function toe(){for(let e of Qu().byTime){let t=null;for(let i of e.args.data.responseHeaders){let c=i.name.toLocaleLowerCase();if(c==="server-timing"||c==="server-timing-test"){i.name="server-timing",t=Wp.ServerTiming.parseHeaders([i]);continue}}let n=t?.find(i=>i.metric===l5)?.start,r=t?.find(i=>i.metric===d5)?.start;if(!n||!r||!t)continue;let a=n*1e3,o=r*1e3;Yf.push(...noe(e,a,o,t))}}function noe(e,t,n,r){let a=e.args.data.syntheticData.sendStartTime,o=e.args.data.syntheticData.sendStartTime+e.args.data.syntheticData.waiting,i=I.MicroSeconds((t-a+n-o)/2),c=[];for(let u of r){if(u.metric===l5||u.metric===d5||u.start===null)continue;let l=J.millisecondsToMicroseconds(I.MilliSeconds(u.start))-i,p=new URL(e.args.data.url).origin,f=en.SyntheticEventsManager.registerServerTiming({rawSourceEvent:e. +rawSourceEvent,name:u.metric,ph:"X",pid:C.ProcessID(0),tid:C.ThreadID(0),ts:I.MicroSeconds(l),dur:J.millisecondsToMicroseconds(I.MilliSeconds(u.value)),cat:"devtools.server-timing",args:{data:{desc:u.description||void 0,origin:p}}});e.args.data.syntheticServerTimings||(e.args.data.syntheticServerTimings=[]),e.args.data.syntheticServerTimings.push(f),c.push(f)}return c}function roe(){return{serverTimings:Yf}}function aoe(){return["NetworkRequests"]}var Yf,l5,d5,m5=g(()=>{d();Yt();Ze();De();Mf();Yf=[];s(Zae,"reset");s(Qae,"handleEvent");s(eoe,"finalize");l5="response-start",d5="response-end";s(toe,"extractServerTimings");s(noe,"createSyntheticServerTiming");s(roe,"data");s(aoe,"deps")});var Yb={};T(Yb,{LONG_INTERACTION_THRESHOLD:()=>Wb,categoryOfInteraction:()=>p5,data:()=>$b,deps:()=>moe,finalize:()=>doe,handleEvent:()=>coe,removeNestedInteractions:()=>f5,reset:()=>soe,scoreClassificationForInteractionToNextPaint:()=>poe});function soe(){zb.length=0,qb.length=0,Hb.length=0,il.length=0,Vb.length=0,Gb.clear(),Kf.length=0,ol=null}function coe(e){if(C.isBeginCommitCompositorFrame(e)){qb.push(e);return}if(C.isParseMetaViewport(e)){Hb.push(e);return}if(!C.isEventTiming(e)||(C.isEventTimingEnd(e)&&Gb.set(e.id,e),zb.push(e),!e.args.data||!C.isEventTimingStart(e)))return;let{duration:t,interactionId:n}=e.args.data;t<1||n===void 0||n===0||Vb.push(e)}function p5(e){return uoe.has(e.type)?"POINTER":loe.has(e.type)?"KEYBOARD":"OTHER"}function f5(e){let t={POINTER:new Map,KEYBOARD:new Map,OTHER:new Map};function n(a){let o=p5(a),i=t[o],c=I.MicroSeconds(a.ts+a.dur),u=i.get(c);if(!u){i.set(c,a);return}if(a.ts<u.ts)i.set(c,a);else if(a.ts===u.ts&&a.interactionId===u.interactionId){let l=u. +processingEnd-u.processingStart;a.processingEnd-a.processingStart>l&&i.set(c,a)}a.processingStart<u.processingStart&&(u.processingStart=a.processingStart,jb(u)),a.processingEnd>u.processingEnd&&(u.processingEnd=a.processingEnd,jb(u))}s(n,"storeEventIfEarliestForCategoryAndEndTime");for(let a of e)n(a);let r=Object.values(t).flatMap(a=>Array.from(a.values()));return r.sort((a,o)=>a.ts-o.ts),r}function jb(e){let t=e.args.data.beginEvent,n=e.args.data.endEvent;e.inputDelay=I.MicroSeconds(e.processingStart-t.ts),e.mainThreadHandling=I.MicroSeconds(e.processingEnd-e.processingStart),e.presentationDelay=I.MicroSeconds(n.ts-e.processingEnd)}async function doe(){let{navigationsByFrameId:e}=wt();for(let t of Vb){let n=Gb.get(t.id);if(!n)continue;let{type:r,interactionId:a,timeStamp:o,processingStart:i,processingEnd:c}=t.args.data;if(!r||!a||!o||!i||!c)continue;let u=I.MicroSeconds(J.millisecondsToMicroseconds(i)-J.millisecondsToMicroseconds(o)+t.ts),l=I.MicroSeconds(J.millisecondsToMicroseconds( +c)-J.millisecondsToMicroseconds(o)+t.ts),m=t.args.frame??t.args.data.frame??"",f=Ve.getNavigationForTraceEvent(t,m,e)?.args.data?.navigationId,h=en.SyntheticEventsManager.registerSyntheticEvent({rawSourceEvent:t,cat:t.cat,name:t.name,pid:t.pid,tid:t.tid,ph:t.ph,processingStart:u,processingEnd:l,inputDelay:I.MicroSeconds(-1),mainThreadHandling:I.MicroSeconds(-1),presentationDelay:I.MicroSeconds(-1),args:{data:{beginEvent:t,endEvent:n,frame:m,navigationId:f}},ts:t.ts,dur:I.MicroSeconds(n.ts-t.ts),type:t.args.data.type,interactionId:t.args.data.interactionId});jb(h),il.push(h)}Kf.push(...f5(il));for(let t of Kf)(!ol||ol.dur<t.dur)&&(ol=t)}function $b(){return{allEvents:zb,beginCommitCompositorFrameEvents:qb,parseMetaViewportEvents:Hb,interactionEvents:il,interactionEventsWithNoNesting:Kf,longestInteractionEvent:ol,interactionsOverThreshold:new Set(il.filter(e=>e.dur>Wb))}}function moe(){return["Meta"]}function poe(e){return e<=ooe?"good":e<=ioe?"ok":"bad"}var zb,qb,Hb,Wb,ooe,ioe,ol,il,Kf, +Gb,Vb,uoe,loe,Kb=g(()=>{d();Ze();De();Dr();zb=[],qb=[],Hb=[],Wb=J.millisecondsToMicroseconds(I.MilliSeconds(200)),ooe=Wb,ioe=J.millisecondsToMicroseconds(I.MilliSeconds(500)),ol=null,il=[],Kf=[],Gb=new Map,Vb=[];s(soe,"reset");s(coe,"handleEvent");uoe=new Set(["pointerdown","touchstart","pointerup","touchend","mousedown","mouseup","click"]),loe=new Set(["keydown","keypress","keyup"]);s(p5,"categoryOfInteraction");s(f5,"removeNestedInteractions");s(jb,"writeSyntheticTimespans");s(doe,"finalize");s($b,"data");s(moe,"deps");s(poe,"scoreClassificationForInteractionToNextPaint")});var Zb={};T(Zb,{FORCED_REFLOW_THRESHOLD:()=>g5,LONG_MAIN_THREAD_TASK_THRESHOLD:()=>y5,data:()=>boe,deps:()=>yoe,finalize:()=>voe,handleEvent:()=>hoe,reset:()=>foe});function foe(){Jf.clear(),Xf.clear(),Jb.length=0,Xb.length=0,sl.length=0}function Zf(e,t){let n=Ce.getWithDefault(Jf,e,()=>[]);n.push(t),Jf.set(e,n);let r=Ce.getWithDefault(Xf,t,()=>[]);r.push(e),Xf.set(t,r)}function hoe(e){if(goe(e),e.name==="RunTask"){let{duration:t}=J.eventTimingsMicroSeconds(e);t>y5&&Zf(e,"LONG_TASK");return}if(C.isFireIdleCallback(e)){let{duration:t}=J.eventTimingsMilliSeconds(e);t>e.args.data.allottedMilliseconds&&Zf(e,"IDLE_CALLBACK_OVER_TIME");return}}function goe(e){if(h5(e,Jb),h5(e,Xb,C.isJSInvocationEvent(e)),Xb.length&&(e.name==="Layout"||e.name==="UpdateLayoutTree")){sl.push(e);return}Jb.length===1&&(sl.reduce((n,r)=>n+(r.dur||0),0)>=g5&&sl.forEach(n=>Zf(n,"FORCED_REFLOW")),sl.length=0)}function h5(e,t,n=!0){let r=t.at(-1);for(;r&&e.ts>r.ts+(r.dur||0);)t.pop(),r=t.at(-1);n&&t.push(e)}function yoe(){ +return["UserInteractions"]}async function voe(){let e=$b().interactionsOverThreshold;for(let t of e)Zf(t,"LONG_INTERACTION")}function boe(){return{perEvent:Jf,perWarning:Xf}}var Jf,Xf,Jb,Xb,sl,g5,y5,v5=g(()=>{d();Yt();Ze();De();Kb();Jf=new Map,Xf=new Map,Jb=[],Xb=[],sl=[],g5=J.millisecondsToMicroseconds(I.MilliSeconds(30)),y5=J.millisecondsToMicroseconds(I.MilliSeconds(50));s(foe,"reset");s(Zf,"storeWarning");s(hoe,"handleEvent");s(goe,"processForcedReflowWarning");s(h5,"accomodateEventInStack");s(yoe,"deps");s(voe,"finalize");s(boe,"data")});var tw={};T(tw,{data:()=>Eoe,finalize:()=>xoe,handleEvent:()=>Doe,reset:()=>woe});function woe(){Qf.length=0,Qb.clear(),ew.clear()}function Doe(e){C.isTracingSessionIdForWorker(e)&&Qf.push(e)}async function xoe(){for(let e of Qf)e.args.data&&(Qb.set(e.args.data.workerThreadId,e.args.data.workerId),ew.set(e.args.data.workerId,e.args.data.url))}function Eoe(){return{workerSessionIdEvents:Qf,workerIdByThread:Qb,workerURLById:ew}}var Qf,Qb,ew,b5=g(()=>{d();De();Qf=[],Qb=new Map,ew=new Map;s(woe,"reset");s(Doe,"handleEvent");s(xoe,"finalize");s(Eoe,"data")});var ho={};T(ho,{Animations:()=>Gv,AuctionWorklets:()=>Xv,ExtensionTraceData:()=>c0,FlowsHandler:()=>p0,Frames:()=>Y0,GPU:()=>X0,ImagePainting:()=>Q0,Initiators:()=>ub,Invalidations:()=>mb,LargestImagePaint:()=>Db,LargestTextPaint:()=>Eb,LayerTree:()=>F0,LayoutShifts:()=>_b,Memory:()=>Mb,Meta:()=>D0,NetworkRequests:()=>gb,PageFrames:()=>Nb,PageLoadMetrics:()=>Lb,Renderer:()=>H0,Samples:()=>L0,Screenshots:()=>Fb,SelectorStats:()=>Bb,ServerTimings:()=>Ub,UserInteractions:()=>Yb,UserTimings:()=>n0,Warnings:()=>Zb,Workers:()=>tw});var w5=g(()=>{d();kO();Zp();AO();_O();GO();VO();$O();YO();KO();JO();XO();R0();e5();t5();Dr();Mf();n5();c5();W0();P0();Rb();u5();m5();Kb();r0();v5();b5()});var D5={};var x5=g(()=>{d()});var As={};T(As,{ModelHandlers:()=>ho,Threads:()=>yf,Types:()=>D5});var go=g(()=>{d();w5();G0();x5()});var E5=g(()=>{d()});var er,Rt,Wn=g(()=>{d();(function(e){e.NO_FP="NO_FP",e.NO_LCP="NO_LCP",e.NO_DOCUMENT_REQUEST="NO_DOCUMENT_REQUEST",e.NO_LAYOUT="NO_LAYOUT"})(er||(er={}));(function(e){e.ALL="All",e.INP="INP",e.LCP="LCP",e.CLS="CLS"})(Rt||(Rt={}))});var nw={};T(nw,{deps:()=>Coe,generateInsight:()=>Ooe,getNonCompositedFailure:()=>k5});function Coe(){return["Meta","Animations","LayoutShifts","NetworkRequests"]}function C5(e,t){let n=e.dur?e.ts+e.dur:e.ts;return n<t.ts&&n>=t.ts-Foe}function k5(e){let t=[],n=e.args.data.beginEvent,r=e.args.data.instantEvents||[];for(let a of r){let o=a.args.data.compositeFailed,i=a.args.data.unsupportedProperties;if(!o)continue;let c=koe.filter(l=>o&l.flag).map(l=>l.failure),u={name:n.args.data.displayName,failureReasons:c,unsupportedProperties:i,animation:e};t.push(u)}return t}function Roe(e,t,n,r){let a=[];for(let o of e){let i=k5(o);if(!i)continue;a.push(...i);let c=e1(t,o);if(!c||!C5(o,c))continue;let u=n.get(c);if(u)for(let l of u){let m=r.get(l);if(!m)throw new Error("Unaccounted shift");m.nonCompositedAnimations.push(...i)}}return a}function Ioe(e,t){let n=new Map;for(let r of t){let a=Ft.nearestIndexFromBeginning(e,o=>o.ts>=r.ts);if(a!==null)for(let o=a;o<e.length;o++){let i=e[o];if(i.ts>=r.ts&& +i.ts<=r.ts+r.dur&&Ce.getWithDefault(n,r,()=>[]).push(i),i.ts>r.ts+r.dur)break}}return n}function e1(e,t){let n=Ft.nearestIndexFromBeginning(e,r=>r.ts>t.ts+(t.dur||0));if(n!==null)return e[n]}function Aoe(e,t,n,r,a){for(let o of e){let i=e1(t,o);if(!i)continue;let c=n.get(i);if(c)for(let u of c){let l=r.get(u);if(!l)throw new Error("Unaccounted shift");let m=a.find(p=>{let f=I.MicroSeconds(o.ts+(o.dur??0));return p.ts>=o.ts&&p.ts<=f});m&&m.args.frame&&l.iframeIds.push(m.args.frame)}}return r}function _oe(e,t,n,r){return n.forEach((a,o)=>{let i=e1(t,o),c=e.find(u=>u.args.data.nodeId===i?.args.data.nodeId);if(c)for(let u of a){let l=r.get(u);if(!l)throw new Error("Unaccounted shift");l.unsizedImages.push(c.args.data.nodeId)}}),r}function Moe(e,t,n,r){let a=e.filter(o=>o.args.data.resourceType==="Font"&&o.args.data.mimeType.startsWith("font"));for(let o of a){let i=e1(t,o);if(!i||!C5(o,i))continue;let c=n.get(i);if(c)for(let u of c){let l=r.get(u);if(!l)throw new Error("Unaccounted shift"); +l.fontRequests.push(o)}}return r}function Noe(e){let t=0;for(let n of e.clusters)n.clusterCumulativeScore>t&&(t=n.clusterCumulativeScore);return{title:S5(T5.title),description:S5(T5.description),category:Rt.CLS,shouldShow:t>0,...e}}function Ooe(e,t){let n=s(S=>J.eventIsInBounds(S,t.bounds),"isWithinContext"),r=e.Animations.animations.filter(n),a=e.LayoutShifts.renderFrameImplCreateChildFrameEvents.filter(n),o=e.NetworkRequests.byTime.filter(n),i=e.LayoutShifts.domLoadingEvents.filter(n),c=e.LayoutShifts.layoutImageUnsizedEvents.filter(n),u=t.navigation?t.navigationId:C.NO_NAVIGATION,l=e.LayoutShifts.clustersByNavigationId.get(u)??[],p=[...l].sort((S,k)=>k.clusterCumulativeScore-S.clusterCumulativeScore).at(0),f=l.flatMap(S=>S.events),h=e.LayoutShifts.prePaintEvents.filter(n),y=e.LayoutShifts.paintImageEvents.filter(n),v=new Map,w=Ioe(f,h);for(let S of f)v.set(S,{iframeIds:[],fontRequests:[],nonCompositedAnimations:[],unsizedImages:[]});Aoe(a,h,w,v,i),Moe(o,h,w,v),_oe(c,y,w,v);let x=Roe( +r,h,w,v),E=[...f];return p&&E.push(p),Noe({relatedEvents:E,animationFailures:x,shifts:v,clusters:l,worstCluster:p})}var T5,S5,koe,Foe,F5=g(()=>{d();Yt();Ze();De();Wn();T5={title:"Layout shift culprits",description:"Layout shifts occur when elements move absent any user interaction. [Investigate the causes of layout shifts](https://web.dev/articles/optimize-cls), such as elements being added, removed, or their fonts changing as the page loads."},S5=s(e=>e,"i18nString");s(Coe,"deps");koe=[{flag:1,failure:"ACCELERATED_ANIMATIONS_DISABLED"},{flag:2,failure:"EFFECT_SUPPRESSED_BY_DEVTOOLS"},{flag:4,failure:"INVALID_ANIMATION_OR_EFFECT"},{flag:8,failure:"EFFECT_HAS_UNSUPPORTED_TIMING_PARAMS"},{flag:16,failure:"EFFECT_HAS_NON_REPLACE_COMPOSITE_MODE"},{flag:32,failure:"TARGET_HAS_INVALID_COMPOSITING_STATE"},{flag:64,failure:"TARGET_HAS_INCOMPATIBLE_ANIMATIONS"},{flag:128,failure:"TARGET_HAS_CSS_OFFSET"},{flag:512,failure:"ANIMATION_AFFECTS_NON_CSS_PROPERTIES"},{flag:1024,failure:"TRANSFORM_RELA\ +TED_PROPERTY_CANNOT_BE_ACCELERATED_ON_TARGET"},{flag:2048,failure:"TRANSFROM_BOX_SIZE_DEPENDENT"},{flag:4096,failure:"FILTER_RELATED_PROPERTY_MAY_MOVE_PIXELS"},{flag:8192,failure:"UNSUPPORTED_CSS_PROPERTY"},{flag:32768,failure:"MIXED_KEYFRAME_VALUE_TYPES"},{flag:65536,failure:"TIMELINE_SOURCE_HAS_INVALID_COMPOSITING_STATE"},{flag:1<<17,failure:"ANIMATION_HAS_NO_VISIBLE_CHANGE"},{flag:1<<18,failure:"AFFECTS_IMPORTANT_PROPERTY"},{flag:1<<19,failure:"SVG_TARGET_HAS_INDEPENDENT_TRANSFORM_PROPERTY"}],Foe=J.secondsToMicroseconds(I.Seconds(.5));s(C5,"isInRootCauseWindow");s(k5,"getNonCompositedFailure");s(Roe,"getNonCompositedFailureRootCauses");s(Ioe,"getShiftsByPrePaintEvents");s(e1,"getNextEvent");s(Aoe,"getIframeRootCauses");s(_oe,"getUnsizedImageRootCauses");s(Moe,"getFontRootCauses");s(Noe,"finalize");s(Ooe,"generateInsight")});var rw={};T(rw,{deps:()=>Boe,generateInsight:()=>zoe});function Boe(){return["Meta","NetworkRequests"]}function Uoe(e){if(!e.args.data.timing)return null;let n=J.microSecondsToMilliseconds(e.args.data.syntheticData.waiting);return Math.round(n)}function joe(e){let t=[/^content-encoding$/i,/^x-content-encoding-over-network$/i],n=["gzip","br","deflate","zstd"];if(e.args.data.responseHeaders.some(i=>t.some(c=>i.name.match(c))&&n.includes(i.value)))return 0;let a=e.args.data.decodedBodyLength,o=0;switch(e.args.data.mimeType){case"text/css":o=Math.round(a*.8);break;case"text/html":case"text/javascript":o=Math.round(a*.67);break;case"text/plain":case"text/xml":case"text/x-component":case"application/javascript":case"application/json":case"application/manifest+json":case"application/vnd.api+json":case"application/xml":case"application/xhtml+xml":case"application/rss+xml":case"application/atom+xml":case"application/vnd.ms-fontobject":case"application/x-font-ttf":case"application/x-font-opentyp\ +e":case"application/x-font-truetype":case"image/svg+xml":case"image/x-icon":case"image/vnd.microsoft.icon":case"font/ttf":case"font/eot":case"font/otf":case"font/opentype":o=Math.round(a*.5);break;default:}return o<Poe?0:o}function _5(e){let t=!1;return e.data&&(t=e.data.redirectDuration>0||e.data.serverResponseTooSlow||e.data.uncompressedResponseBytes>0),{title:I5(R5.title),description:I5(R5.description),category:Rt.ALL,shouldShow:t,...e}}function zoe(e,t){if(!t.navigation)return _5({});let n=e.NetworkRequests.byTime.find(u=>u.args.data.requestId===t.navigationId);if(!n)throw new Error("missing document request");let r=Uoe(n);if(r===null)throw new Error("missing document request timing");let a=r>A5,o=0;r>A5&&(o=Math.max(r-Loe,0));let i=Math.round(n.args.data.syntheticData.redirectionDuration/1e3);o+=i;let c={FCP:o,LCP:o};return _5({relatedEvents:[n],data:{serverResponseTime:r,serverResponseTooSlow:a,redirectDuration:I.MilliSeconds(i),uncompressedResponseBytes:joe(n),documentRequest:n}, +metricSavings:c})}var R5,I5,A5,Loe,Poe,M5=g(()=>{d();Ze();De();Wn();R5={title:"Document request latency",description:"Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response, and enabling text compression."},I5=s(e=>e,"i18nString"),A5=600,Loe=100,Poe=1400;s(Boe,"deps");s(Uoe,"getServerResponseTime");s(joe,"getCompressionSavings");s(_5,"finalize");s(zoe,"generateInsight")});var aw={};T(aw,{deps:()=>qoe,generateInsight:()=>Woe});function qoe(){return["Meta","NetworkRequests","LayoutShifts"]}function Hoe(e){return{title:O5(N5.title),description:O5(N5.description),category:Rt.INP,shouldShow:!!e.fonts.find(t=>t.wastedTime>0),...e}}function Woe(e,t){let n=[];for(let a of e.LayoutShifts.beginRemoteFontLoadEvents){if(!J.eventIsInBounds(a,t.bounds))continue;let o=`${a.pid}.${a.args.id}`,i=e.NetworkRequests.byId.get(o);if(!i)continue;let c=a.args.display,u=I.MilliSeconds(0);if(/^(block|fallback|auto)$/.test(c)){let l=I.MicroSeconds(i.args.data.syntheticData.finishTime-i.args.data.syntheticData.sendStartTime);u=ks.floor(J.microSecondsToMilliseconds(l),1/5),u=Math.min(u,3e3)}n.push({request:i,display:c,wastedTime:u})}n.sort((a,o)=>o.wastedTime-a.wastedTime);let r=Math.max(...n.map(a=>a.wastedTime));return Hoe({relatedEvents:n.map(a=>a.request),fonts:n,metricSavings:{FCP:r}})}var N5,O5,L5=g(()=>{d();Yt();Ze();De();Wn();N5={title:"Font display",description:"Consider s\ +etting [`font-display`](https://developer.chrome.com/blog/font-display) to `swap` or `optional` to ensure text is consistently visible. `swap` can be further optimized to mitigate layout shifts with [font metric overrides](https://developer.chrome.com/blog/font-fallbacks)."},O5=s(e=>e,"i18nString");s(qoe,"deps");s(Hoe,"finalize");s(Woe,"generateInsight")});var iw={};T(iw,{deps:()=>$oe,generateInsight:()=>Joe});function $oe(){return["NetworkRequests","Meta","ImagePainting"]}function Yoe(e){return{title:B5(P5.title),description:B5(P5.description),category:Rt.LCP,shouldShow:e.optimizableImages.length>0,...e,relatedEvents:e.optimizableImages.map(t=>t.request)}}function Koe(e){return Math.round(29.1*Math.log10(e.args.data.decodedBodyLength)-100.7)/100}function ow(e){return{filePixels:e.args.data.srcWidth*e.args.data.srcHeight,displayedPixels:e.args.data.width*e.args.data.height}}function Joe(e,t){let n=s(o=>J.eventIsInBounds(o,t.bounds),"isWithinContext"),r=e.NetworkRequests.byTime.filter(n),a=[];for(let o of r){if(o.args.data.resourceType!=="Image")continue;let i=e.ImagePainting.paintImageEventForUrl.get(o.args.data.url)?.filter(n);if(!i?.length)continue;let c=i.reduce((y,v)=>{let w=ow(y).displayedPixels,x=ow(v).displayedPixels;return w>x?y:v}),{filePixels:u,displayedPixels:l}=ow(c),m=Math.min(o.args.data.decodedBodyLength,o.args.data.encodedDataLength), +p=m/u,f=[];if(o.args.data.mimeType==="image/gif"){if(m>Goe){let y=Koe(o),v=Math.round(m*y);f.push({type:"video-format",byteSavings:v})}}else if(p>U5){let y=Math.round(U5*u),v=m-y;o.args.data.mimeType!=="image/webp"&&o.args.data.mimeType!=="image/avif"?f.push({type:"modern-format-or-compression",byteSavings:v}):f.push({type:"compression",byteSavings:v})}let h=1-l/u;if(h>0){let y=Math.round(h*m);f.push({type:"responsive-size",byteSavings:y})}f=f.filter(y=>y.byteSavings>Voe),f.length>0&&a.push({request:o,largestImagePaint:c,optimizations:f})}return Yoe({optimizableImages:a})}var P5,B5,U5,Goe,Voe,j5=g(()=>{d();Ze();Wn();P5={title:"Improve image delivery",description:"Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"},B5=s(e=>e,"i18nString"),U5=2*1/12,Goe=100*1024,Voe=4096;s($oe,"deps");s(Yoe,"finalize");s(Koe,"estimateGIFPerc\ +entSavings");s(ow,"getPixelCounts");s(Joe,"generateInsight")});var sw={};T(sw,{deps:()=>Xoe,generateInsight:()=>Zoe});function Xoe(){return["UserInteractions"]}function H5(e){return{title:q5(z5.title),description:q5(z5.description),category:Rt.INP,shouldShow:!!e.longestInteractionEvent,...e}}function Zoe(e,t){let n=e.UserInteractions.interactionEventsWithNoNesting.filter(i=>J.eventIsInBounds(i,t.bounds));if(!n.length)return H5({});let r=new Map;for(let i of n){let c=i.interactionId,u=r.get(c);(!u||i.dur>u.dur)&&r.set(c,i)}let a=[...r.values()];a.sort((i,c)=>c.dur-i.dur);let o=Math.min(9,Math.floor(a.length/50));return H5({relatedEvents:[a[0]],longestInteractionEvent:a[0],highPercentileInteractionEvent:a[o]})}var z5,q5,W5=g(()=>{d();Ze();Wn();z5={description:"Start investigating with the longest phase. [Delays can be minimized](https://web.dev/articles/optimize-inp#optimize_interactions). To reduce processing duration, [optimize the main-thread costs](https://web.dev/articles/optimize-long-tasks), often JS.",title:"INP by phase"},q5=s(e=>e,"i18nStr\ +ing");s(Xoe,"deps");s(H5,"finalize");s(Zoe,"generateInsight")});var cw={};T(cw,{deps:()=>Qoe,generateInsight:()=>eie});function Qoe(){return["NetworkRequests","PageLoadMetrics","LargestImagePaint","Meta"]}function cl(e){let t=e.lcpEvent&&e.lcpRequest?[e.lcpEvent,e.lcpRequest]:[];return{title:V5(G5.title),description:V5(G5.description),category:Rt.LCP,shouldShow:!!(e.lcpRequest&&(e.shouldIncreasePriorityHint||e.shouldPreloadImage||e.shouldRemoveLazyLoading)),...e,relatedEvents:t}}function eie(e,t){if(!t.navigation)return cl({});let n=e.NetworkRequests,r=e.PageLoadMetrics.metricScoresByFrameId.get(t.frameId);if(!r)throw new Error("no frame metrics");let a=r.get(t.navigationId);if(!a)throw new Error("no navigation metrics");let i=a.get("LCP")?.event;if(!i||!C.isLargestContentfulPaintCandidate(i))return cl({warnings:[er.NO_LCP]});let c=n.byTime.find(v=>v.args.data.requestId===t.navigationId);if(!c)return cl({lcpEvent:i,warnings:[er.NO_DOCUMENT_REQUEST]});let u=e.LargestImagePaint.lcpRequestByNavigation.get(t.navigation);if(!u)return cl({lcpEvent:i});let l=u. +args.data.initiator?.url,m=u?.args.data.initiator?.type==="parser"&&c.args.data.url===l,p=u?.args.data.isLinkPreload||m,f=i.args.data?.loadingAttr,h=u?.args.data.fetchPriorityHint,y=c&&c.args.data.timing?J.secondsToMicroseconds(c.args.data.timing.requestTime)+J.millisecondsToMicroseconds(c.args.data.timing.receiveHeadersStart):void 0;return cl({lcpEvent:i,shouldRemoveLazyLoading:f==="lazy",shouldIncreasePriorityHint:h!=="high",shouldPreloadImage:!p,lcpRequest:u,earliestDiscoveryTimeTs:y?I.MicroSeconds(y):void 0})}var G5,V5,$5=g(()=>{d();go();Ze();De();Wn();G5={title:"LCP request discovery",description:"Optimize LCP by making the LCP image [discoverable](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) from the HTML immediately, and [avoiding lazy-loading](https://web.dev/articles/lcp-lazy-loading)"},V5=s(e=>e,"i18nString");s(Qoe,"deps");s(cl,"finalize");s(eie,"generateInsight")});var uw={};T(uw,{deps:()=>tie,generateInsight:()=>nie});function tie(){return["NetworkRequests","PageLoadMetrics","LargestImagePaint","Meta"]}function J5(...e){return e.some(t=>Number.isNaN(t))}function X5(e,t,n,r){let a=t.args.data.timing;if(!a)throw new Error("no timing for document request");let o=J.secondsToMicroseconds(a.requestTime)+J.millisecondsToMicroseconds(a.receiveHeadersStart),i=I.MicroSeconds(o-e.ts),c=J.microSecondsToMilliseconds(i),u=I.MilliSeconds(n-c);if(!r)return J5(c,u)?null:{ttfb:c,renderDelay:u};let l=I.MicroSeconds(r.ts-e.ts),m=J.microSecondsToMilliseconds(l),p=I.MicroSeconds(r.args.data.syntheticData.finishTime-e.ts),f=J.microSecondsToMilliseconds(p),h=I.MilliSeconds(m-c),y=I.MilliSeconds(f-m);return u=I.MilliSeconds(n-f),J5(c,h,y,u)?null:{ttfb:c,loadDelay:h,loadTime:y,renderDelay:u}}function ul(e){let t=[];return e.lcpEvent&&t.push(e.lcpEvent),e.lcpRequest&&t.push(e.lcpRequest),{title:K5(Y5.title),description:K5(Y5.description),category:Rt.LCP,shouldShow:!!e.phases&& +(e.lcpMs??0)>0,...e,relatedEvents:t}}function nie(e,t){if(!t.navigation)return ul({});let n=e.NetworkRequests,r=e.PageLoadMetrics.metricScoresByFrameId.get(t.frameId);if(!r)throw new Error("no frame metrics");let a=r.get(t.navigationId);if(!a)throw new Error("no navigation metrics");let o=a.get("LCP"),i=o?.event;if(!i||!C.isLargestContentfulPaintCandidate(i))return ul({warnings:[er.NO_LCP]});let c=J.microSecondsToMilliseconds(o.timing),u=o.event?.ts?J.microSecondsToMilliseconds(o.event?.ts):void 0,l=e.LargestImagePaint.lcpRequestByNavigation.get(t.navigation),m=n.byTime.find(p=>p.args.data.requestId===t.navigationId);return ul(m?l?{lcpMs:c,lcpTs:u,lcpEvent:i,lcpRequest:l,phases:X5(t.navigation,m,c,l)??void 0}:{lcpMs:c,lcpTs:u,lcpEvent:i,lcpRequest:l,phases:X5(t.navigation,m,c,l)??void 0}:{lcpMs:c,lcpTs:u,lcpEvent:i,lcpRequest:l,warnings:[er.NO_DOCUMENT_REQUEST]})}var Y5,K5,Z5=g(()=>{d();go();Ze();De();Wn();Y5={title:"LCP by phase",description:"Each [phase has specific improvement strat\ +egies](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideally, most of the LCP time should be spent on loading the resources, not within delays."},K5=s(e=>e,"i18nString");s(tie,"deps");s(J5,"anyValuesNaN");s(X5,"breakdownPhases");s(ul,"finalize");s(nie,"generateInsight")});var dw={};T(dw,{deps:()=>aie,generateInsight:()=>uie});function aie(){return["NetworkRequests","PageLoadMetrics","LargestImagePaint"]}function oie(e){let t=new Map;for(let[n,r]of e)n.type==="network"&&t.set(n.request.requestId,{node:n,nodeTiming:r});return t}function iie(e,t){let n=t.simulator,r=t.metrics.firstContentfulPaint.optimisticGraph,{nodeTimings:a}=t.simulator.simulate(r),o=new Map(a),i=0,c=r.cloneWithRelationships(f=>!e.has(f.id));if(c.type!=="network")throw new Error("minimalFCPGraph not a NetworkNode");let u=Math.max(...Array.from(Array.from(o).map(f=>f[1].endTime))),l=c.request.transferSize,m=l||0;c.request.transferSize=m+i;let p=n.simulate(c).timeInMs;return c.request.transferSize=l,Math.round(Math.max(u-p,0))}function sie(e,t){return e.LargestImagePaint.lcpRequestByNavigation.get(t.navigation)!==void 0}function cie(e,t,n){if(!t.lantern)return;let r=oie(t.lantern.metrics.firstContentfulPaint.optimisticEstimate.nodeTimings),a={FCP:0,LCP:0},o=new Map,i=new Set;for(let c of n){ +let u=r.get(c.args.data.requestId);if(!u)continue;let{node:l,nodeTiming:m}=u;l.traverse(f=>i.add(f.id));let p=Math.round(m.duration);p<rie||o.set(l.id,p)}return o.size&&(a.FCP=iie(i,t.lantern),sie(e,t)||(a.LCP=a.FCP)),{metricSavings:a,requestIdToWastedMs:o}}function lw(e){return{title:e8(Q5.title),description:e8(Q5.description),category:Rt.LCP,shouldShow:e.renderBlockingRequests.length>0,...e}}function uie(e,t){if(!t.navigation)return lw({renderBlockingRequests:[]});let n=e.PageLoadMetrics.metricScoresByFrameId.get(t.frameId)?.get(t.navigationId)?.get("FP")?.event?.ts;if(!n)return lw({renderBlockingRequests:[],warnings:[er.NO_FP]});let r=[];for(let o of e.NetworkRequests.byTime){if(o.args.data.frame!==t.frameId||!uo.isSyntheticNetworkRequestEventRenderBlocking(o)||o.args.data.syntheticData.finishTime>n)continue;if(o.args.data.renderBlocking==="in_body_parser_blocking"){let c=o.args.data.priority,l=o.args.data.resourceType==="Script"&&c==="High";if(c!=="VeryHigh"&&!l)continue}Ve.getNavigationForTraceEvent( +o,t.frameId,e.Meta.navigationsByFrameId)===t.navigation&&r.push(o)}let a=cie(e,t,r);return r=r.sort((o,i)=>i.dur-o.dur),lw({relatedEvents:r,renderBlockingRequests:r,...a})}var Q5,e8,rie,t8=g(()=>{d();go();Ze();Wn();Q5={title:"Render blocking requests",description:"Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) can move these network requests out of the critical path."},e8=s(e=>e,"i18nString"),rie=50;s(aie,"deps");s(oie,"getNodesAndTimingByRequestId");s(iie,"estimateSavingsWithGraphs");s(sie,"hasImageLCP");s(cie,"computeSavings");s(lw,"finalize");s(uie,"generateInsight")});var mw={};T(mw,{deps:()=>lie,generateInsight:()=>pie});function lie(){return["SelectorStats"]}function die(e,t){let n=new Map;for(let[r,a]of e)if(r.args.beginData?.frame===t.frameId&&J.eventIsInBounds(r,t.bounds))for(let o of a.timings){let i=o[zt.Selector]+"_"+o[zt.StyleSheetId],c=n.get(i);c!==void 0?(c[zt.Elapsed]+=o[zt.Elapsed],c[zt.FastRejectCount]+=o[zt.FastRejectCount],c[zt.MatchAttempts]+=o[zt.MatchAttempts],c[zt.MatchCount]+=o[zt.MatchCount]):n.set(i,{...o})}return[...n.values()]}function mie(e){return{title:r8(n8.title),description:r8(n8.description),category:Rt.ALL,shouldShow:e.topElapsedMs.length!==0&&e.topMatchAttempts.length!==0,...e}}function pie(e,t){let n=e.SelectorStats;if(!n)throw new Error("no selector stats data");let r=die(n.dataForUpdateLayoutEvent,t),a=0,o=0,i=0;r.map(l=>{a+=l[zt.Elapsed],o+=l[zt.MatchAttempts],i+=l[zt.MatchCount]});let c=[...r].sort((l,m)=>m[zt.Elapsed]-l[zt.Elapsed]),u=[...r].sort((l,m)=>m[zt.MatchAttempts]-l[zt.MatchAttempts]);return mie({relatedEvents:[], +totalElapsedMs:I.MilliSeconds(a/1e3),totalMatchAttempts:o,totalMatchCount:i,topElapsedMs:c.slice(0,3),topMatchAttempts:u.slice(0,3)})}var n8,r8,a8=g(()=>{d();Ze();Sv();De();Wn();n8={title:"CSS Selector costs",description:"If Recalculate Style costs remain high, selector optimization can reduce them. [Optimize the selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats) with both high elapsed time and high slow-path %. Simpler selectors, fewer selectors, a smaller DOM, and a shallower DOM will all reduce matching costs."},r8=s(e=>e,"i18nString");s(lie,"deps");s(die,"aggregateSelectorStats");s(mie,"finalize");s(pie,"generateInsight")});var pw={};T(pw,{deps:()=>fie,generateInsight:()=>yie});function fie(){return["Meta","NetworkRequests","Renderer","ImagePainting"]}function hie(e,t){let n=[];for(let[r,a]of e.requestsByEntity.entries())r!==t&&n.push(...a);return n}function gie(e){return{title:i8(o8.title),description:i8(o8.description),category:Rt.ALL,shouldShow:!![...e.summaryByEntity.entries()].find(t=>t[0]!==e.firstPartyEntity),...e}}function yie(e,t){let n=e.NetworkRequests.byTime.filter(u=>!t.navigation||u.args.data.frame!==t.frameId?!1:J.eventIsInBounds(u,t.bounds)),{entityByRequest:r,madeUpEntityCache:a,summaries:o}=Pu.getSummariesAndEntitiesForTraceBounds(e,t.bounds,n),i=t.navigation?.args.data?.documentLoaderURL??e.Meta.mainFrameURL,c=Cs.default.getEntity(i)||Pu.makeUpEntity(a,i);return gie({relatedEvents:hie(o,c),entityByRequest:r,requestsByEntity:o.requestsByEntity,summaryByRequest:o.byRequest,summaryByEntity:o.byEntity,firstPartyEntity:c})}var o8,i8,s8=g(()=>{d();fv();qv();Ze();Wn();o8={title:"Third parties", +description:"Third party code can significantly impact load performance. [Reduce and defer loading of third party code](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) to prioritize your page's content."},i8=s(e=>e,"i18nString");s(fie,"deps");s(hie,"getRelatedEvents");s(gie,"finalize");s(yie,"generateInsight")});var hw={};T(hw,{deps:()=>vie,generateInsight:()=>bie});function vie(){return["Meta","UserInteractions"]}function fw(e){return{title:u8(c8.title),description:u8(c8.description),category:Rt.INP,shouldShow:e.mobileOptimized===!1,...e}}function bie(e,t){let n=e.UserInteractions.beginCommitCompositorFrameEvents.filter(a=>a.args.frame!==t.frameId?!1:J.eventIsInBounds(a,t.bounds));if(!n.length)return fw({mobileOptimized:null,warnings:[er.NO_LAYOUT]});let r=e.UserInteractions.parseMetaViewportEvents.find(a=>a.args.data.frame!==t.frameId?!1:J.eventIsInBounds(a,t.bounds));for(let a of n)if(!a.args.is_mobile_optimized)return fw({mobileOptimized:!1,viewportEvent:r,metricSavings:{INP:300}});return fw({mobileOptimized:!0,viewportEvent:r})}var c8,u8,l8=g(()=>{d();Ze();Wn();c8={title:"Viewport not optimized for mobile",description:"The page's viewport is not mobile-optimized, so tap interactions may be [delayed by up to 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)."},u8=s(e=>e, +"i18nString");s(vie,"deps");s(fw,"finalize");s(bie,"generateInsight")});var t1={};T(t1,{CLSCulprits:()=>nw,DocumentLatency:()=>rw,FontDisplay:()=>aw,ImageDelivery:()=>iw,InteractionToNextPaint:()=>sw,LCPDiscovery:()=>cw,LCPPhases:()=>uw,RenderBlocking:()=>dw,SlowCSSSelector:()=>mw,ThirdParties:()=>pw,Viewport:()=>hw});var d8=g(()=>{d();F5();M5();L5();j5();W5();$5();Z5();t8();a8();s8();l8()});var gw=g(()=>{d();E5();d8();Wn()});var ka={};T(ka,{createGraph:()=>bw,createNetworkRequests:()=>vw,createProcessedNavigation:()=>yw});function yw(e,t,n){let r=e.PageLoadMetrics.metricScoresByFrameId.get(t);if(!r)throw new ct.LanternError("missing metric scores for frame");let a=r.get(n);if(!a)throw new ct.LanternError("missing metric scores for specified navigation");let o=s(c=>{let u=a.get(c);if(u?.event)return u.event.ts},"getTimestampOrUndefined");return{timestamps:{firstContentfulPaint:s(c=>{let u=a.get(c);if(!u?.event)throw new ct.LanternError(`missing metric: ${c}`);return u.event.ts},"getTimestamp")("FCP"),largestContentfulPaint:o("LCP")}}}function p8(e){return typeof e=="string"&&(e=new URL(e)),{scheme:e.protocol.split(":")[0],host:e.hostname,securityOrigin:e.origin}}function wie(e){let t=new Map,n=["ServiceWorker thread","DedicatedWorker thread"];for(let r of e.traceEvents){if(r.name!=="thread_name"||!r.args.name||!n.includes(r.args.name))continue;let a=t.get(r.pid);a?a.push(r.tid):t.set(r.pid,[r.tid])}return t} +function Die(e,t,n){if(n.args.data.connectionId===void 0||n.args.data.connectionReused===void 0)throw new ct.LanternError("Trace is too old");let r;try{r=new URL(n.args.data.url)}catch{return}let a=n.args.data.timing?{workerFetchStart:-1,workerRespondWithSettled:-1,...n.args.data.timing}:void 0,o=a?a.requestTime*1e3:n.args.data.syntheticData.downloadStart/1e3,i=!1;t.get(n.pid)?.includes(n.tid)&&(i=!0),e.Workers.workerIdByThread.has(n.tid)&&(i=!0);let u=n.args.data.initiator??{type:"other"};if(n.args.data.stackTrace){let p=n.args.data.stackTrace.map(f=>({scriptId:String(f.scriptId),url:f.url,lineNumber:f.lineNumber-1,columnNumber:f.columnNumber-1,functionName:f.functionName}));u.stack={callFrames:p}}let l=n.args.data.resourceType;n.args.data.initiator?.fetchType==="xmlhttprequest"?l="XHR":n.args.data.initiator?.fetchType==="fetch"&&(l="Fetch");let m=n.args.data.decodedBodyLength??0;if(r.protocol==="data:"&&m===0){let p="base64,",f=r.pathname.indexOf(p);f!==-1&&(m=atob(r.pathname.substring( +f+p.length)).length)}return{rawRequest:n,requestId:n.args.data.requestId,connectionId:n.args.data.connectionId,connectionReused:n.args.data.connectionReused,url:n.args.data.url,protocol:n.args.data.protocol,parsedURL:p8(r),documentURL:n.args.data.requestingFrameUrl,rendererStartTime:n.ts/1e3,networkRequestTime:o,responseHeadersEndTime:n.args.data.syntheticData.downloadStart/1e3,networkEndTime:n.args.data.syntheticData.finishTime/1e3,transferSize:n.args.data.encodedDataLength,resourceSize:m,fromDiskCache:n.args.data.syntheticData.isDiskCached,fromMemoryCache:n.args.data.syntheticData.isMemoryCached,isLinkPreload:n.args.data.isLinkPreload,finished:n.args.data.finished,failed:n.args.data.failed,statusCode:n.args.data.statusCode,initiator:u,timing:a,resourceType:l,mimeType:n.args.data.mimeType,priority:n.args.data.priority,frameId:n.args.data.frame,fromWorker:i,redirects:void 0,redirectSource:void 0,redirectDestination:void 0,initiatorRequest:void 0}}function xie(e,t){if(e.redirectSource)return e. +redirectSource;let n=Ht.PageDependencyGraph.getNetworkInitiators(e)[0],r=t.get(n)||[];if(r=r.filter(a=>a.responseHeadersEndTime<=e.rendererStartTime&&a.finished&&!a.failed),r.length>1){let a=r.filter(o=>o.resourceType!==Au.NetworkRequestTypes.Other);a.length&&(r=a)}if(r.length>1){let a=r.filter(o=>o.frameId===e.frameId);a.length&&(r=a)}if(r.length>1&&e.initiator.type==="parser"){let a=r.filter(o=>o.resourceType===Au.NetworkRequestTypes.Document);a.length&&(r=a)}if(r.length>1){let a=r.filter(o=>o.isLinkPreload);if(a.length){let o=r.filter(c=>!c.isLinkPreload),i=o.every(c=>c.fromDiskCache||c.fromMemoryCache);o.length&&i&&(r=a)}}return r.length===1?r[0]:null}function Eie(e){let t=new Map;for(let n of e){let r=t.get(n.url)||[];r.push(n),t.set(n.url,r)}for(let n of e){let r=xie(n,t);r&&(n.initiatorRequest=r)}}function vw(e,t,n=0,r=Number.POSITIVE_INFINITY){let a=wie(e),o=[];for(let i of t.NetworkRequests.byTime)if(i.ts>=n&&i.ts<r){let c=Die(t,a,i);c&&o.push(c)}for(let i of[...o]){if(!i.rawRequest) +continue;let c=i.rawRequest.args.data.redirects;if(!c.length)continue;let u=[];for(let l of c){let m=structuredClone(i);m.networkRequestTime=l.ts/1e3,m.rendererStartTime=m.networkRequestTime,m.networkEndTime=(l.ts+l.dur)/1e3,m.responseHeadersEndTime=m.networkEndTime,m.timing={requestTime:m.networkRequestTime/1e3,receiveHeadersStart:m.responseHeadersEndTime,receiveHeadersEnd:m.responseHeadersEndTime,proxyStart:-1,proxyEnd:-1,dnsStart:-1,dnsEnd:-1,connectStart:-1,connectEnd:-1,sslStart:-1,sslEnd:-1,sendStart:-1,sendEnd:-1,workerStart:-1,workerReady:-1,workerFetchStart:-1,workerRespondWithSettled:-1,pushStart:-1,pushEnd:-1},m.url=l.url,m.parsedURL=p8(l.url),m.statusCode=302,m.resourceType=void 0,m.transferSize=400,u.push(m),o.push(m)}u.push(i);for(let l=0;l<u.length;l++){let m=u[l];l>0&&(m.redirectSource=u[l-1],m.redirects=u.slice(0,l)),l!==u.length-1&&(m.redirectDestination=u[l+1])}for(let l=1;l<u.length;l++)u[l].requestId=`${u[l-1].requestId}:redirect`}return Eie(o),o.sort((i,c)=>i.rendererStartTime- +c.rendererStartTime)}function Tie(e,t){let n=t.Meta,r=n.mainFrameNavigations.length?new Set(n.mainFrameNavigations.map(o=>o.pid)):n.topLevelRendererIds,a=new Map;for(let o of r){let i=n.threadsInProcess.get(o)??[],c=!1;for(let[u,l]of i)if(l.args.name==="CrRendererMain"){a.set(o,u),c=!0;break}if(!c){for(let[u,l]of i)if(l.args.name==="CrBrowserMain"){a.set(o,u),c=!0;break}}}return e.traceEvents.filter(o=>a.get(o.pid)===o.tid)}function bw(e,t,n,r){let a=Tie(t,n);if(!r){r={requestedUrl:e[0].url,mainDocumentUrl:""};let o=e[0];for(;o.redirectDestination;)o=o.redirectDestination;r.mainDocumentUrl=o.url}return Ht.PageDependencyGraph.createGraph(a,e,r)}var ww=g(()=>{d();go();_u();s(yw,"createProcessedNavigation");s(p8,"createParsedUrl");s(wie,"findWorkerThreads");s(Die,"createLanternRequest");s(xie,"chooseInitiatorRequest");s(Eie,"linkInitiators");s(vw,"createNetworkRequests");s(Tie,"collectMainThreadEvents");s(bw,"createGraph")});var r1={};T(r1,{TraceParseProgressEvent:()=>bi,TraceProcessor:()=>n1,sortHandlers:()=>h8});function f8(e,t){return t===.8?e*(.8-.2)+.2:e*t}function h8(e){let t=new Map,n=new Set,r=s(a=>{if(t.has(a))return;if(n.has(a)){let c="";for(let u of n)(c||u===a)&&(c+=`${u}->`);throw c+=a,new Error(`Found dependency cycle in trace event handlers: ${c}`)}n.add(a);let o=e[a];if(!o)return;let i=o.deps?.();i&&i.forEach(r),t.set(a,o)},"visitHandler");for(let a of Object.keys(e))r(a);return t}var bi,n1,Dw=g(()=>{d();go();Ze();gw();_u();ww();De();bi=class e extends Event{static{s(this,"TraceParseProgressEvent")}data;static eventName="traceparseprogress";constructor(t,n={bubbles:!0}){super(e.eventName,n),this.data=t}};s(f8,"calculateProgress");n1=class e extends EventTarget{static{s(this,"TraceProcessor")}#e;#t="IDLE";#r=Wr.defaults();#n=null;#a=null;static createWithAllHandlers(){return new e(ho,Wr.defaults())}static getEnabledInsightRunners(t){let n={};for(let[r,a]of Object.entries(t1))a.deps().some(i=>!t[i])|| +Object.assign(n,{[r]:a});return n}constructor(t,n){super(),this.#o(t),this.#e={Meta:ho.Meta,...t},n&&(this.#r=n),this.#i()}#i(){for(let t of Object.values(this.#e))"handleUserConfig"in t&&t.handleUserConfig&&t.handleUserConfig(this.#r)}#o(t){if(Object.keys(t).length===Object.keys(ho).length)return;let n=new Set;for(let[a,o]of Object.entries(t)){n.add(a);let i="deps"in o?o.deps():[];for(let c of i)n.add(c)}let r=new Set(Object.keys(t));n.delete("Meta");for(let a of n)if(!r.has(a))throw new Error(`Required handler ${a} not provided.`)}reset(){if(this.#t==="PARSING")throw new Error("Trace processor can't reset while parsing.");let t=Object.values(this.#e);for(let n of t)n.reset();this.#n=null,this.#a=null,this.#t="IDLE"}async parse(t,n){if(this.#t!=="IDLE")throw new Error(`Trace processor can't start parsing when not idle. Current state: ${this.#t}`);try{this.#t="PARSING",await this.#s(t),this.#n&&!n.isCPUProfile&&this.#l(this.#n,t),this.#t="FINISHED_PARSING"}catch(r){throw this.#t="ERROR\ +ED_WHILE_PARSING",r}}async#s(t){let r=[...h8(this.#e).values()];for(let i of r)i.reset();for(let i=0;i<t.length;++i){if(i%5e4===0&&i){let u=f8(i/t.length,.2);this.dispatchEvent(new bi({percent:u})),await new Promise(l=>setTimeout(l,0))}let c=t[i];for(let u=0;u<r.length;++u)r[u].handleEvent(c)}for(let[i,c]of r.entries()){c.finalize&&(await new Promise(l=>setTimeout(l,0)),await c.finalize());let u=f8(i/r.length,.8);this.dispatchEvent(new bi({percent:u}))}let a=s((i,c=!0)=>{if(i instanceof Map)return new Map(i);if(i instanceof Set)return new Set(i);if(Array.isArray(i))return[...i];if(typeof i=="object"&&i&&c){let u={};for(let[l,m]of Object.entries(i))u[l]=a(m,!1);return u}return i},"shallowClone"),o={};for(let[i,c]of Object.entries(this.#e)){let u=a(c.data());Object.assign(o,{[i]:u})}this.dispatchEvent(new bi({percent:1})),this.#n=o}get parsedTrace(){return this.#t!=="FINISHED_PARSING"?null:this.#n}get insights(){return this.#t!=="FINISHED_PARSING"?null:this.#a}#c(t,n,r,a){if(!t.NetworkRequests|| +!t.Workers||!t.PageLoadMetrics)return;if(!t.NetworkRequests.byTime.length)throw new ct.LanternError("No network requests found in trace");let o=t.Meta.navigationsByFrameId.get(r),i=o?.findIndex(O=>O.args.data?.navigationId===a);if(!o||i===void 0||i===-1)throw new ct.LanternError("Could not find navigation start");let c=o[i].ts,u=i+1<o.length?o[i+1].ts:Number.POSITIVE_INFINITY,m={traceEvents:n.filter(O=>O.ts>=c&&O.ts<u)},p=vw(m,t,c,u),f=bw(p,m,t),h=yw(t,r,a),y=ct.NetworkAnalyzer.analyze(p);if(!y)return;let v=Ta.Simulator.createSimulator({networkAnalysis:y,throttlingMethod:"provided"}),w={graph:f,simulator:v,processedNavigation:h},x=_t.FirstContentfulPaint.compute(w),E=_t.LargestContentfulPaint.compute(w,{fcpResult:x}),S=_t.Interactive.compute(w,{lcpResult:E}),k=_t.TotalBlockingTime.compute(w,{fcpResult:x,interactiveResult:S});return{graph:f,simulator:v,metrics:{firstContentfulPaint:x,interactive:S,largestContentfulPaint:E,totalBlockingTime:k}}}#u(t,n,r,a){let o={};for(let[p,f]of Object. +entries(r)){let h;try{h=f.generateInsight(n,a)}catch(y){h=y}Object.assign(o,{[p]:h})}let i,c,u;a.navigation?(i=a.navigationId,c=a.navigation.args.data?.documentLoaderURL??n.Meta.mainFrameURL,u=a.navigation):(i=C.NO_NAVIGATION,c=n.Meta.mainFrameURL);let l;try{l=new URL(c)}catch{return}let m={id:i,url:l,navigation:u,frameId:a.frameId,bounds:a.bounds,model:o};t.set(m.id,m)}#l(t,n){this.#a=new Map;let r=e.getEnabledInsightRunners(t),a=t.Meta.mainFrameNavigations.filter(o=>o.args.frame&&o.args.data?.navigationId);if(a.length){let o=J.traceWindowFromMicroSeconds(t.Meta.traceBounds.min,a[0].ts),i=J.millisecondsToMicroseconds(50);if(o.range>i){let c={bounds:o,frameId:t.Meta.mainFrameId};this.#u(this.#a,t,r,c)}}else{let o={bounds:t.Meta.traceBounds,frameId:t.Meta.mainFrameId};this.#u(this.#a,t,r,o)}for(let[o,i]of a.entries()){let c=i.args.frame,u=i.args.data?.navigationId,l;try{l=this.#c(t,n,c,u)}catch(y){let v=["mainDocumentRequest not found","missing metric scores for main frame","missing met\ +ric: FCP","missing metric: LCP","No network requests found in trace","Trace is too old"];y instanceof ct.LanternError&&v.some(w=>y.message===w)||console.error(y)}let m=i.ts,p=o+1<a.length?a[o+1].ts:t.Meta.traceBounds.max,h={bounds:J.traceWindowFromMicroSeconds(m,p),frameId:c,navigation:i,navigationId:u,lantern:l};this.#u(this.#a,t,r,h)}}};s(h8,"sortHandlers")});var g8=g(()=>{d();Yt();go();Ze();Dw();De()});function Cie(e,t){Ce.getWithDefault(e,t,()=>({unsizedMedia:[],iframes:[],fontChanges:[],renderBlockingRequests:[],scriptStackTrace:[]}))}function kie(e,t){return e.args.data.frame===t&&uo.isSyntheticNetworkRequestEventRenderBlocking(e)}function Fie(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n].request.args.data.frame;kie(e[n].request,r)&&t.push(e[n])}return t}function D8(e){if(e.nodeName==="IFRAME")return e;let t=e.children;if(!t)return null;for(let n of t){let r=D8(n);if(r)return r}return null}function xw(e){return!["auto","initial","unset","inherit"].includes(e)}function b8(e){return parseInt(e.value,10)>=0}function Rie(e){let t=/^url\("([^"]+)"\)$/,n=e.get("background-image");return n?t.test(n):!1}function Iie(e){let t=e.get("position");return t?t==="fixed"||t==="absolute":!1}function Aie(e){let t={};return t.height=e.get("height"),t.width=e.get("width"),t.aspectRatio=e.get("aspect-ratio"),t}async function _ie(e,t){let n=e.localName,r=Rie(t);return n!=="img"&&n!=="video"&&!r?!1: +!Iie(t)}function Mie(e){let{height:t,width:n,aspectRatio:r}=e,a=!!(t&&xw(t)),o=!!(n&&xw(n)),i=!!(r&&xw(r));return a&&o||(a||o)&&i}function w8(e,t){let n=new Map;for(let r of t){let a=Ft.nearestIndexFromBeginning(e,o=>o.ts>=r.ts);if(a!==null)for(let o=a;o<e.length;o++){let i=e[o];if(i.ts>=r.ts&&i.ts<=r.ts+r.dur&&Ce.getWithDefault(n,r,()=>[]).push(i),i.ts>r.ts+r.dur)break}}return n}var y8,v8,_s,Ew=g(()=>{d();Yt();Ze();De();y8=new Map,v8=new Map;s(Cie,"setDefaultValue");s(kie,"networkRequestIsRenderBlockingInFrame");_s=class{static{s(this,"LayoutShiftRootCauses")}#e;#t=new Map;#r=new Map;#n;constructor(t,n){this.#e=t,this.#n=n?.enableIframeRootCauses??!1}async rootCausesForEvent(t,n){let r=this.#t.get(n);if(r)return r;let a=t.LayoutShifts.clusters.flatMap(i=>i.events);a.forEach(i=>Cie(this.#t,i)),await this.blameShifts(a,t);let o=this.#t.get(n);return o||null}async blameShifts(t,n){await this.linkShiftsToLayoutInvalidations(t,n),this.linkShiftsToLayoutEvents(t,n)}async linkShiftsToLayoutInvalidations(t,n){ +let{prePaintEvents:r,layoutInvalidationEvents:a,scheduleStyleInvalidationEvents:o,backendNodeIds:i}=n.LayoutShifts,c=[...a,...o],u=await this.#e.pushNodesByBackendIdsToFrontend(i),l=new Map;for(let p=0;p<i.length;p++)l.set(i[p],u[p]);let m=w8(t,r);for(let p of c){let f=Ft.nearestIndexFromBeginning(r,k=>k.ts>p.ts);if(f===null)continue;let h=r[f],y=m.get(h);if(!y)continue;let v=this.getFontChangeRootCause(p,h,n),w=this.getRenderBlockRootCause(p,h,n),x=l.get(p.args.data.nodeId),E=null,S=null;if(x!==void 0&&C.isLayoutInvalidationTracking(p)&&(E=await this.getUnsizedMediaRootCause(p,x),S=await this.getIframeRootCause(p,x)),!(!E&&!S&&!v&&!w))for(let k of y){let R=Ce.getWithDefault(this.#t,k,()=>({unsizedMedia:[],iframes:[],fontChanges:[],renderBlockingRequests:[],scriptStackTrace:[]}));E&&!R.unsizedMedia.some(O=>O.node.nodeId===E?.node.nodeId)&&k.args.frame===p.args.data.frame&&R.unsizedMedia.push(E),S&&!R.iframes.some(O=>O.iframe.nodeId===S?.iframe.nodeId)&&R.iframes.push(S),v&&(R.fontChanges= +v),w&&(R.renderBlockingRequests=w)}}}linkShiftsToLayoutEvents(t,n){let{prePaintEvents:r}=n.LayoutShifts,a=w8(t,r),o=s(({name:c})=>c==="Layout","eventTriggersLayout"),i=n.Renderer.allTraceEntries.filter(o);for(let c of i){let u=Ft.nearestIndexFromBeginning(r,y=>y.ts>c.ts+(c.dur||0));if(u===null)continue;let l=r[u],m=a.get(l);if(!m)continue;let p=n.Renderer.entryToNode.get(c),h=(p?n.Initiators.eventToInitiator.get(p.entry):null)?.args?.data?.stackTrace;if(h)for(let y of m){let v=Ce.getWithDefault(this.#t,y,()=>({unsizedMedia:[],iframes:[],fontChanges:[],renderBlockingRequests:[],scriptStackTrace:[]}));v.scriptStackTrace.length===0&&(v.scriptStackTrace=h)}}}async getUnsizedMediaRootCause(t,n){if(t.args.data.reason!=="Size changed")return null;let r=await this.getNodeDetails(n);if(!r)return null;let a=await this.#e.getComputedStyleForNode(r.nodeId),o=new Map(a.map(u=>[u.name,u.value]));if(o&&!await _ie(r,o))return null;let i=await this.getNodeAuthoredDimensions(r);if(Mie(i))return null;let c=o? +Aie(o):{};return{node:r,authoredDimensions:i,computedDimensions:c}}async getIframeRootCause(t,n){if(!this.#n||!t.args.data.nodeName?.startsWith("IFRAME")&&t.args.data.reason!=="Style changed"&&t.args.data.reason!=="Added to layout")return null;let r=await this.getNodeDetails(n);if(!r)return null;let a=D8(r);return a?{iframe:a}:null}async getNodeDetails(t){let n=this.#r.get(t);return n!==void 0||(n=await this.#e.getNode(t),this.#r.set(t,n)),n}requestsInInvalidationWindow(t,n){let r=n.NetworkRequests.byTime.sort((c,u)=>{let l=c.ts+c.dur,m=u.ts+u.dur;return l-m}),a=Ft.nearestIndexFromEnd(r,c=>c.ts+c.dur<t.ts);if(a===null)return[];let o=J.secondsToMicroseconds(I.Seconds(.5)),i=[];for(let c=a;c>-1;c--){let u=r[c],l=u.ts+u.dur;if(t.ts-l<o){let m={request:u},p=this.#e.getInitiatorForRequest(u.args.data.url);m.initiator=p||void 0,i.push(m)}else break}return i}getFontChangeRootCause(t,n,r){if(t.args.data.reason!=="Fonts changed")return null;let a=y8.get(n);if(a!==void 0)return a;let o=this.getFontRequestsInInvalidationWindow( +this.requestsInInvalidationWindow(t,r));return y8.set(n,o),o}getFontRequestsInInvalidationWindow(t){let n=[];for(let r=0;r<t.length;r++){let a=t[r];if(!a.request.args.data.mimeType.startsWith("font"))continue;let o=this.#e.fontFaceForSource(a.request.args.data.url);!o||o.fontDisplay==="optional"||(a.fontFace=o,n.push(a))}return n}getRenderBlockRootCause(t,n,r){let a=v8.get(n);if(a!==void 0)return a;let o=Fie(this.requestsInInvalidationWindow(t,r));return v8.set(n,o),o}async nodeMatchedStylesPropertyGetter(t){let n=await this.#e.getMatchedStylesForNode(t.nodeId);function r(a){let o=n.inlineStyle?.cssProperties.find(i=>i.name===a);if(o)return o.value;for(let{rule:i}of n.matchedCSSRules||[]){let c=i.style.cssProperties.find(u=>u.name===a);if(c)return c.value}return o=n.attributesStyle?.cssProperties.find(i=>i.name===a),o?o.value:null}return s(r,"cssPropertyValueGetter"),r}async getNodeAuthoredDimensions(t){let n={},r=await this.nodeMatchedStylesPropertyGetter(t);if(!r)return n;let a=t.attributes|| +[],o=[];for(let p=0;p<a.length;p+=2)o.push({name:a[p],value:a[p+1]});let i=o.find(p=>p.name==="height"&&b8(p)),c=o.find(p=>p.name==="width"&&b8(p)),u=r("aspect-ratio")||void 0;if(i&&c&&u)return{height:i.value,width:c.value,aspectRatio:u};let l=r("height")||void 0,m=r("width")||void 0;return{height:l,width:m,aspectRatio:u}}};s(Fie,"getRenderBlockRequestsInInvalidationWindow");s(D8,"firstIframeInDOMTree");s(xw,"cssPropertyIsExplicitlySet");s(b8,"htmlAttributeIsExplicit");s(Rie,"computedStyleHasBackroundImage");s(Iie,"computedStyleHasFixedPosition");s(Aie,"getNodeComputedDimensions");s(_ie,"nodeIsUnfixedMedia");s(Mie,"dimensionsAreExplicit");s(w8,"getShiftsByPrePaintEvents")});var Sw={};T(Sw,{LayoutShiftRootCauses:()=>_s,RootCauses:()=>Tw});var Tw,x8=g(()=>{d();Ew();Ew();Tw=class{static{s(this,"RootCauses")}layoutShifts;constructor(t){this.layoutShifts=new _s(t)}}});var a1={};T(a1,{RootCauses:()=>Sw});var E8=g(()=>{d();x8()});var T8=g(()=>{d()});var Cw=g(()=>{d();qv();go();Ze();gw();_u();ww();g8();Dw();E8();T8();De()});var Mt=g(()=>{"use strict";d();_u();Cw();});var S8=g(()=>{"use strict";d();});var C8=g(()=>{"use strict";d();Oe();la();});var o1,k8=g(()=>{"use strict";d();au();o1=class e{static{s(this,"ArbitraryEqualityMap")}constructor(){this._equalsFn=e.deepEquals,this._entries=[]}setEqualityFn(t){this._equalsFn=t}has(t){return this._findIndexOf(t)!==-1}get(t){return this._entries[this._findIndexOf(t)]?.value}set(t,n){let r=this._findIndexOf(t);r===-1&&(r=this._entries.length),this._entries[r]={key:t,value:n}}_findIndexOf(t){for(let n=0;n<this._entries.length;n++)if(this._equalsFn(t,this._entries[n].key))return n;return-1}static deepEquals(t,n){return Pr(t,n)}}});function G(e,t){return Object.assign(e,{request:s((r,a)=>{let o=t?Object.fromEntries(t.map(f=>[f,r[f]])):r,i=a.computedCache,c=e.name,u=i.get(c)||new o1;i.set(c,u);let l=u.get(o);if(l)return l;let m={msg:`Computing artifact: ${c}`,id:`lh:computed:${c}`};M.time(m,"verbose");let p=e.compute_(o,a);return u.set(o,p),p.then(()=>M.timeEnd(m)).catch(()=>M.timeEnd(m)),p},"request")})}var xe=g(()=>{"use strict";d();Oe();k8();s(G,"makeComputedArtifact")});function Oie(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function Lie(e,t){let n=e.length-t.length-2,r=e.lastIndexOf(".",n);return r===-1?e:e.slice(r+1)}function kw(e,t,n){if(n.validHosts!==null){let a=n.validHosts;for(let o of a)if(Oie(t,o))return o}let r=0;if(t.startsWith("."))for(;r<t.length&&t[r]===".";)r+=1;return e.length===t.length-r?null:Lie(t,e)}var F8=g(()=>{d();s(Oie,"shareSameDomainSuffix");s(Lie,"extractDomainWithSuffix");s(kw,"getDomain")});function Fw(e,t){return e.slice(0,-t.length-1)}var R8=g(()=>{d();s(Fw,"getDomainWithoutSuffix")});function i1(e,t){let n=0,r=e.length,a=!1;if(!t){if(e.startsWith("data:"))return null;for(;n<e.length&&e.charCodeAt(n)<=32;)n+=1;for(;r>n+1&&e.charCodeAt(r-1)<=32;)r-=1;if(e.charCodeAt(n)===47&&e.charCodeAt(n+1)===47)n+=2;else{let l=e.indexOf(":/",n);if(l!==-1){let m=l-n,p=e.charCodeAt(n),f=e.charCodeAt(n+1),h=e.charCodeAt(n+2),y=e.charCodeAt(n+3),v=e.charCodeAt(n+4);if(!(m===5&&p===104&&f===116&&h===116&&y===112&&v===115)){if(!(m===4&&p===104&&f===116&&h===116&&y===112)){if(!(m===3&&p===119&&f===115&&h===115)){if(!(m===2&&p===119&&f===115))for(let w=n;w<l;w+=1){let x=e.charCodeAt(w)|32;if(!(x>=97&&x<=122||x>=48&&x<=57||x===46||x===45||x===43))return null}}}}for(n=l+2;e.charCodeAt(n)===47;)n+=1}}let i=-1,c=-1,u=-1;for(let l=n;l<r;l+=1){let m=e.charCodeAt(l);if(m===35||m===47||m===63){r=l;break}else m===64?i=l:m===93?c=l:m===58?u=l:m>=65&&m<=90&&(a=!0)}if(i!==-1&&i>n&&i<r&&(n=i+1),e.charCodeAt(n)===91)return c!==-1?e.slice(n+1,c).toLowerCase():null;u!==-1&&u>n&&u<r&&(r=u)}for(;r>n+1&&e.charCodeAt( +r-1)===46;)r-=1;let o=n!==0||r!==e.length?e.slice(n,r):e;return a?o.toLowerCase():o}var I8=g(()=>{d();s(i1,"extractHostname")});function Pie(e){if(e.length<7||e.length>15)return!1;let t=0;for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r===46)t+=1;else if(r<48||r>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function Bie(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,n=e.length;if(e[n-1]==="]"&&(n-=1),n-t>39)return!1;let r=!1;for(;t<n;t+=1){let a=e.charCodeAt(t);if(a===58)r=!0;else if(!(a>=48&&a<=57||a>=97&&a<=102||a>=65&&a<=90))return!1}return r}function Rw(e){return Bie(e)||Pie(e)}var A8=g(()=>{d();s(Pie,"isProbablyIpv4");s(Bie,"isProbablyIpv6");s(Rw,"isIp")});function _8(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function s1(e){if(e.length>255||e.length===0||!_8(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,n=-1,r=e.length;for(let a=0;a<r;a+=1){let o=e.charCodeAt(a);if(o===46){if(a-t>64||n===46||n===45||n===95)return!1;t=a}else if(!(_8(o)||o===45||o===95))return!1;n=o}return r-t-1<=63&&n!==45}var M8=g(()=>{d();s(_8,"isValidAscii");s(s1,"default")});function N8({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:n=!0,extractHostname:r=!0,mixedInputs:a=!0,validHosts:o=null,validateHostname:i=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:n,extractHostname:r,mixedInputs:a,validHosts:o,validateHostname:i}}function Iw(e){return e===void 0?Uie:N8(e)}var Uie,Aw=g(()=>{d();s(N8,"setDefaultsImpl");Uie=N8({});s(Iw,"setDefaults")});function _w(e,t){return t.length===e.length?"":e.slice(0,-t.length-1)}var O8=g(()=>{d();s(_w,"getSubdomain")});function Mw(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null}}function Nw(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.publicSuffix=null,e.subdomain=null}function Ow(e,t,n,r,a){let o=Iw(r);return typeof e!="string"||(o.extractHostname?o.mixedInputs?a.hostname=i1(e,s1(e)):a.hostname=i1(e,!1):a.hostname=e,t===0||a.hostname===null)||o.detectIp&&(a.isIp=Rw(a.hostname),a.isIp)?a:o.validateHostname&&o.extractHostname&&!s1(a.hostname)?(a.hostname=null,a):(n(a.hostname,o,a),t===2||a.publicSuffix===null||(a.domain=kw(a.publicSuffix,a.hostname,o),t===3||a.domain===null)||(a.subdomain=_w(a.hostname,a.domain),t===4)||(a.domainWithoutSuffix=Fw(a.domain,a.publicSuffix)),a)}var L8=g(()=>{d();F8();R8();I8();A8();M8();Aw();O8();s(Mw,"getEmptyResult");s(Nw,"resetResult");s(Ow,"parseImpl")});function c1(e,t,n){if(!t.allowPrivateDomains&&e.length>3){let r=e.length-1,a=e.charCodeAt(r),o=e.charCodeAt(r-1),i=e.charCodeAt(r-2),c=e.charCodeAt(r-3);if(a===109&&o===111&&i===99&&c===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="com",!0;if(a===103&&o===114&&i===111&&c===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="org",!0;if(a===117&&o===100&&i===101&&c===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="edu",!0;if(a===118&&o===111&&i===103&&c===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="gov",!0;if(a===116&&o===101&&i===110&&c===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="net",!0;if(a===101&&o===100&&i===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="de",!0}return!1}var P8=g(()=>{d();s(c1,"default")});var Lw=g(()=>{d();L8();P8();Aw()});var B8,U8,j8=g(()=>{d();B8=function(){let e=[1,{}],t=[0,{city:e}];return[0,{ck:[0,{www:e}],jp:[0,{kawasaki:t,kitakyushu:t,kobe:t,nagoya:t,sapporo:t,sendai:t,yokohama:t}]}]}(),U8=function(){let e=[1,{}],t=[1,{com:e,edu:e,gov:e,net:e,mil:e,org:e}],n=[1,{gov:e,com:e,org:e,net:e,edu:e}],r=[1,{gov:e}],a=[1,{com:e}],o=[0,{"*":e}],i=[1,{com:e,edu:e,net:e,org:e}],c=[1,{co:e,net:e,org:e}],u=[1,{co:e,com:e,edu:e,gov:e,net:e,org:e}],l=[1,{com:e,org:e,net:e,edu:e,sch:e,gov:e,mil:e,name:e}],m=[1,{edu:e,biz:e,net:e,org:e,gov:e,info:e,com:e}],p=[1,{gs:e}],f=[0,{nes:e}],h=[1,{k12:e,cc:e,lib:e}],y=[1,{cc:e}],v=[1,{cc:e,lib:e}];return[0,{ac:t,ad:[1,{nom:e}],ae:[1,{co:e,net:e,org:e,sch:e,ac:e,gov:e,mil:e}],aero:[1,{"accident-investigation":e,"accident-prevention":e,aerobatic:e,aeroclub:e,aerodrome:e,agents:e,aircraft:e,airline:e,airport:e,"air-surveillance":e,airtraffic:e,"air-traffic-control":e,ambulance:e,amusement:e,association:e,author:e,ballooning:e,broker:e,caa:e,cargo:e,catering:e,certification:e, +championship:e,charter:e,civilaviation:e,club:e,conference:e,consultant:e,consulting:e,control:e,council:e,crew:e,design:e,dgca:e,educator:e,emergency:e,engine:e,engineer:e,entertainment:e,equipment:e,exchange:e,express:e,federation:e,flight:e,fuel:e,gliding:e,government:e,groundhandling:e,group:e,hanggliding:e,homebuilt:e,insurance:e,journal:e,journalist:e,leasing:e,logistics:e,magazine:e,maintenance:e,media:e,microlight:e,modelling:e,navigation:e,parachuting:e,paragliding:e,"passenger-association":e,pilot:e,press:e,production:e,recreation:e,repbody:e,res:e,research:e,rotorcraft:e,safety:e,scientist:e,services:e,show:e,skydiving:e,software:e,student:e,trader:e,trading:e,trainer:e,union:e,workinggroup:e,works:e}],af:n,ag:[1,{com:e,org:e,net:e,co:e,nom:e}],ai:[1,{off:e,com:e,net:e,org:e}],al:t,am:[1,{co:e,com:e,commune:e,net:e,org:e}],ao:[1,{ed:e,gv:e,og:e,co:e,pb:e,it:e}],aq:e,ar:[1,{bet:e,com:e,coop:e,edu:e,gob:e,gov:e,int:e,mil:e,musica:e,mutual:e,net:e,org:e,senasa:e,tur:e}],arpa:[1, +{e164:e,"in-addr":e,ip6:e,iris:e,uri:e,urn:e}],as:r,asia:e,at:[1,{ac:[1,{sth:e}],co:e,gv:e,or:e}],au:[1,{com:e,net:e,org:e,edu:[1,{act:e,catholic:e,nsw:[1,{schools:e}],nt:e,qld:e,sa:e,tas:e,vic:e,wa:e}],gov:[1,{qld:e,sa:e,tas:e,vic:e,wa:e}],asn:e,id:e,info:e,conf:e,oz:e,act:e,nsw:e,nt:e,qld:e,sa:e,tas:e,vic:e,wa:e}],aw:a,ax:e,az:[1,{com:e,net:e,int:e,gov:e,org:e,edu:e,info:e,pp:e,mil:e,name:e,pro:e,biz:e}],ba:t,bb:[1,{biz:e,co:e,com:e,edu:e,gov:e,info:e,net:e,org:e,store:e,tv:e}],bd:o,be:[1,{ac:e}],bf:r,bg:[1,{0:e,1:e,2:e,3:e,4:e,5:e,6:e,7:e,8:e,9:e,a:e,b:e,c:e,d:e,e,f:e,g:e,h:e,i:e,j:e,k:e,l:e,m:e,n:e,o:e,p:e,q:e,r:e,s:e,t:e,u:e,v:e,w:e,x:e,y:e,z:e}],bh:n,bi:[1,{co:e,com:e,edu:e,or:e,org:e}],biz:e,bj:[1,{africa:e,agro:e,architectes:e,assur:e,avocats:e,co:e,com:e,eco:e,econo:e,edu:e,info:e,loisirs:e,money:e,net:e,org:e,ote:e,resto:e,restaurant:e,tourism:e,univ:e}],bm:n,bn:n,bo:[1,{com:e,edu:e,gob:e,int:e,org:e,net:e,mil:e,tv:e,web:e,academia:e,agro:e,arte:e,blog:e,bolivia:e,ciencia:e,cooperativa:e, democracia:e,deporte:e,ecologia:e,economia:e,empresa:e,indigena:e,industria:e,info:e,medicina:e,movimiento:e,musica:e,natural:e,nombre:e,noticias:e,patria:e,politica:e,profesional:e,plurinacional:e,pueblo:e,revista:e,salud:e,tecnologia:e,tksat:e,transporte:e,wiki:e}],br:[1,{"9guacu":e,abc:e,adm:e,adv:e,agr:e,aju:e,am:e,anani:e,aparecida:e,app:e,arq:e,art:e,ato:e,b:e,barueri:e,belem:e,bhz:e,bib:e,bio:e,blog:e,bmd:e,boavista:e,bsb:e,campinagrande:e,campinas:e,caxias:e,cim:e,cng:e,cnt:e,com:e,contagem:e,coop:e,coz:e,cri:e,cuiaba:e,curitiba:e,def:e,des:e,det:e,dev:e,ecn:e,eco:e,edu:e,emp:e,enf:e,eng:e,esp:e,etc:e,eti:e,far:e,feira:e,flog:e,floripa:e,fm:e,fnd:e,fortal:e,fot:e,foz:e,fst:e,g12:e,geo:e,ggf:e,goiania:e,gov:[1,{ac:e,al:e,am:e,ap:e,ba:e,ce:e,df:e,es:e,go:e,ma:e,mg:e,ms:e,mt:e,pa:e,pb:e,pe:e,pi:e,pr:e,rj:e,rn:e,ro:e,rr:e,rs:e,sc:e,se:e,sp:e,to:e}],gru:e,imb:e,ind:e,inf:e,jab:e,jampa:e,jdf:e,joinville:e,jor:e,jus:e,leg:e,lel:e,log:e,londrina:e,macapa:e,maceio:e,manaus:e,maringa:e,mat:e, -med:e,mil:e,morena:e,mp:e,mus:e,natal:e,net:e,niteroi:e,nom:a,not:e,ntr:e,odo:e,ong:e,org:e,osasco:e,palmas:e,poa:e,ppg:e,pro:e,psc:e,psi:e,pvh:e,qsl:e,radio:e,rec:e,recife:e,rep:e,ribeirao:e,rio:e,riobranco:e,riopreto:e,salvador:e,sampa:e,santamaria:e,santoandre:e,saobernardo:e,saogonca:e,seg:e,sjc:e,slg:e,slz:e,sorocaba:e,srv:e,taxi:e,tc:e,tec:e,teo:e,the:e,tmp:e,trd:e,tur:e,tv:e,udi:e,vet:e,vix:e,vlog:e,wiki:e,zlg:e}],bs:r,bt:r,bv:e,bw:[1,{co:e,org:e}],by:[1,{gov:e,mil:e,com:e,of:e}],bz:r,ca:[1,{ab:e,bc:e,mb:e,nb:e,nf:e,nl:e,ns:e,nt:e,nu:e,on:e,pe:e,qc:e,sk:e,yk:e,gc:e}],cat:e,cc:e,cd:n,cf:e,cg:e,ch:e,ci:[1,{org:e,or:e,com:e,co:e,edu:e,ed:e,ac:e,net:e,go:e,asso:e,"xn--aroport-bya":e,aéroport:e,int:e,presse:e,md:e,gouv:e}],ck:a,cl:[1,{co:e,gob:e,gov:e,mil:e}],cm:[1,{co:e,com:e,gov:e,net:e}],cn:[1,{ac:e,com:e,edu:e,gov:e,net:e,org:e,mil:e,"xn--55qx5d":e,公司:e,"xn--io0a7i":e,网络:e,"xn--od0alg":e,網絡:e,ah:e,bj:e,cq:e,fj:e,gd:e,gs:e,gz:e,gx:e,ha:e,hb:e,he:e,hi:e,hl:e,hn:e,jl:e, -js:e,jx:e,ln:e,nm:e,nx:e,qh:e,sc:e,sd:e,sh:e,sn:e,sx:e,tj:e,xj:e,xz:e,yn:e,zj:e,hk:e,mo:e,tw:e}],co:[1,{arts:e,com:e,edu:e,firm:e,gov:e,info:e,int:e,mil:e,net:e,nom:e,org:e,rec:e,web:e}],com:e,coop:e,cr:[1,{ac:e,co:e,ed:e,fi:e,go:e,or:e,sa:e}],cu:[1,{com:e,edu:e,org:e,net:e,gov:e,inf:e}],cv:[1,{com:e,edu:e,int:e,nome:e,org:e}],cw:o,cx:n,cy:[1,{ac:e,biz:e,com:e,ekloges:e,gov:e,ltd:e,mil:e,net:e,org:e,press:e,pro:e,tm:e}],cz:e,de:e,dj:e,dk:e,dm:r,do:[1,{art:e,com:e,edu:e,gob:e,gov:e,mil:e,net:e,org:e,sld:e,web:e}],dz:[1,{art:e,asso:e,com:e,edu:e,gov:e,org:e,net:e,pol:e,soc:e,tm:e}],ec:[1,{com:e,info:e,net:e,fin:e,k12:e,med:e,pro:e,org:e,edu:e,gov:e,gob:e,mil:e}],edu:e,ee:[1,{edu:e,gov:e,riik:e,lib:e,med:e,com:e,pri:e,aip:e,org:e,fie:e}],eg:[1,{com:e,edu:e,eun:e,gov:e,mil:e,name:e,net:e,org:e,sci:e}],er:a,es:[1,{com:e,nom:e,org:e,gob:e,edu:e}],et:[1,{com:e,gov:e,org:e,edu:e,biz:e,name:e,info:e,net:e}],eu:e,fi:[1,{aland:e}],fj:[1,{ac:e,biz:e,com:e,gov:e,info:e,mil:e,name:e,net:e,org:e,pro:e}], -fk:a,fm:o,fo:e,fr:[1,{asso:e,com:e,gouv:e,nom:e,prd:e,tm:e,avoues:e,cci:e,greta:e,"huissier-justice":e}],ga:e,gb:e,gd:[1,{edu:e,gov:e}],ge:[1,{com:e,edu:e,gov:e,org:e,mil:e,net:e,pvt:e}],gf:e,gg:u,gh:[1,{com:e,edu:e,gov:e,org:e,mil:e}],gi:[1,{com:e,ltd:e,gov:e,mod:e,edu:e,org:e}],gl:[1,{co:e,com:e,edu:e,net:e,org:e}],gm:e,gn:[1,{ac:e,com:e,edu:e,gov:e,org:e,net:e}],gov:e,gp:[1,{com:e,net:e,mobi:e,edu:e,org:e,asso:e}],gq:e,gr:r,gs:e,gt:[1,{com:e,edu:e,gob:e,ind:e,mil:e,net:e,org:e}],gu:[1,{com:e,edu:e,gov:e,guam:e,info:e,net:e,org:e,web:e}],gw:e,gy:l,hk:[1,{com:e,edu:e,gov:e,idv:e,net:e,org:e,"xn--55qx5d":e,公司:e,"xn--wcvs22d":e,教育:e,"xn--lcvr32d":e,敎育:e,"xn--mxtq1m":e,政府:e,"xn--gmqw5a":e,個人:e,"xn--ciqpn":e,个人:e,"xn--gmq050i":e,箇人:e,"xn--zf0avx":e,網络:e,"xn--io0a7i":e,网络:e,"xn--mk0axi":e,组織:e,"xn--od0alg":e,網絡:e,"xn--od0aq3b":e,网絡:e,"xn--tn0ag":e,组织:e,"xn--uc0atv":e,組織:e,"xn--uc0ay4a":e,組织:e}],hm:e,hn:[1,{com:e,edu:e,org:e,net:e, -mil:e,gob:e}],hr:[1,{iz:e,from:e,name:e,com:e}],ht:[1,{com:e,shop:e,firm:e,info:e,adult:e,net:e,pro:e,org:e,med:e,art:e,coop:e,pol:e,asso:e,edu:e,rel:e,gouv:e,perso:e}],hu:[1,{2e3:e,co:e,info:e,org:e,priv:e,sport:e,tm:e,agrar:e,bolt:e,casino:e,city:e,erotica:e,erotika:e,film:e,forum:e,games:e,hotel:e,ingatlan:e,jogasz:e,konyvelo:e,lakas:e,media:e,news:e,reklam:e,sex:e,shop:e,suli:e,szex:e,tozsde:e,utazas:e,video:e}],id:[1,{ac:e,biz:e,co:e,desa:e,go:e,mil:e,my:e,net:e,or:e,ponpes:e,sch:e,web:e}],ie:n,il:[1,{ac:e,co:e,gov:e,idf:e,k12:e,muni:e,net:e,org:e}],"xn--4dbrk0ce":[1,{"xn--4dbgdty6c":e,"xn--5dbhl8d":e,"xn--8dbq2a":e,"xn--hebda8b":e}],ישראל:[1,{אקדמיה:e,ישוב:e,צהל:e,ממשל:e}],im:[1,{ac:e,co:[1,{ltd:e,plc:e}],com:e,net:e,org:e,tt:e,tv:e}],in:[1,{"5g":e,"6g":e,ac:e,ai:e,am:e,bihar:e,biz:e,business:e,ca:e,cn:e,co:e,com:e,coop:e,cs:e,delhi:e,dr:e,edu:e,er:e,firm:e,gen:e,gov:e,gujarat:e,ind:e,info:e,int:e,internet:e,io:e,me:e,mil:e,net:e,nic:e,org:e,pg:e,post:e,pro:e, -res:e,travel:e,tv:e,uk:e,up:e,us:e}],info:e,int:[1,{eu:e}],io:i,iq:t,ir:[1,{ac:e,co:e,gov:e,id:e,net:e,org:e,sch:e,"xn--mgba3a4f16a":e,ایران:e,"xn--mgba3a4fra":e,ايران:e}],is:[1,{net:e,com:e,edu:e,gov:e,org:e,int:e}],it:[1,{gov:e,edu:e,abr:e,abruzzo:e,"aosta-valley":e,aostavalley:e,bas:e,basilicata:e,cal:e,calabria:e,cam:e,campania:e,"emilia-romagna":e,emiliaromagna:e,emr:e,"friuli-v-giulia":e,"friuli-ve-giulia":e,"friuli-vegiulia":e,"friuli-venezia-giulia":e,"friuli-veneziagiulia":e,"friuli-vgiulia":e,"friuliv-giulia":e,"friulive-giulia":e,friulivegiulia:e,"friulivenezia-giulia":e,friuliveneziagiulia:e,friulivgiulia:e,fvg:e,laz:e,lazio:e,lig:e,liguria:e,lom:e,lombardia:e,lombardy:e,lucania:e,mar:e,marche:e,mol:e,molise:e,piedmont:e,piemonte:e,pmn:e,pug:e,puglia:e,sar:e,sardegna:e,sardinia:e,sic:e,sicilia:e,sicily:e,taa:e,tos:e,toscana:e,"trentin-sud-tirol":e,"xn--trentin-sd-tirol-rzb":e,"trentin-süd-tirol":e,"trentin-sudtirol":e,"xn--trentin-sdtirol-7vb":e,"trentin-südtirol":e, +med:e,mil:e,morena:e,mp:e,mus:e,natal:e,net:e,niteroi:e,nom:o,not:e,ntr:e,odo:e,ong:e,org:e,osasco:e,palmas:e,poa:e,ppg:e,pro:e,psc:e,psi:e,pvh:e,qsl:e,radio:e,rec:e,recife:e,rep:e,ribeirao:e,rio:e,riobranco:e,riopreto:e,salvador:e,sampa:e,santamaria:e,santoandre:e,saobernardo:e,saogonca:e,seg:e,sjc:e,slg:e,slz:e,sorocaba:e,srv:e,taxi:e,tc:e,tec:e,teo:e,the:e,tmp:e,trd:e,tur:e,tv:e,udi:e,vet:e,vix:e,vlog:e,wiki:e,zlg:e}],bs:n,bt:n,bv:e,bw:[1,{co:e,org:e}],by:[1,{gov:e,mil:e,com:e,of:e}],bz:n,ca:[1,{ab:e,bc:e,mb:e,nb:e,nf:e,nl:e,ns:e,nt:e,nu:e,on:e,pe:e,qc:e,sk:e,yk:e,gc:e}],cat:e,cc:e,cd:r,cf:e,cg:e,ch:e,ci:[1,{org:e,or:e,com:e,co:e,edu:e,ed:e,ac:e,net:e,go:e,asso:e,"xn--aroport-bya":e,aéroport:e,int:e,presse:e,md:e,gouv:e}],ck:o,cl:[1,{co:e,gob:e,gov:e,mil:e}],cm:[1,{co:e,com:e,gov:e,net:e}],cn:[1,{ac:e,com:e,edu:e,gov:e,net:e,org:e,mil:e,"xn--55qx5d":e,公司:e,"xn--io0a7i":e,网络:e,"xn--od0alg":e,網絡:e,ah:e,bj:e,cq:e,fj:e,gd:e,gs:e,gz:e,gx:e,ha:e,hb:e,he:e,hi:e,hl:e,hn:e,jl:e, +js:e,jx:e,ln:e,nm:e,nx:e,qh:e,sc:e,sd:e,sh:e,sn:e,sx:e,tj:e,xj:e,xz:e,yn:e,zj:e,hk:e,mo:e,tw:e}],co:[1,{arts:e,com:e,edu:e,firm:e,gov:e,info:e,int:e,mil:e,net:e,nom:e,org:e,rec:e,web:e}],com:e,coop:e,cr:[1,{ac:e,co:e,ed:e,fi:e,go:e,or:e,sa:e}],cu:[1,{com:e,edu:e,org:e,net:e,gov:e,inf:e}],cv:[1,{com:e,edu:e,int:e,nome:e,org:e}],cw:i,cx:r,cy:[1,{ac:e,biz:e,com:e,ekloges:e,gov:e,ltd:e,mil:e,net:e,org:e,press:e,pro:e,tm:e}],cz:e,de:e,dj:e,dk:e,dm:n,do:[1,{art:e,com:e,edu:e,gob:e,gov:e,mil:e,net:e,org:e,sld:e,web:e}],dz:[1,{art:e,asso:e,com:e,edu:e,gov:e,org:e,net:e,pol:e,soc:e,tm:e}],ec:[1,{com:e,info:e,net:e,fin:e,k12:e,med:e,pro:e,org:e,edu:e,gov:e,gob:e,mil:e}],edu:e,ee:[1,{edu:e,gov:e,riik:e,lib:e,med:e,com:e,pri:e,aip:e,org:e,fie:e}],eg:[1,{com:e,edu:e,eun:e,gov:e,mil:e,name:e,net:e,org:e,sci:e}],er:o,es:[1,{com:e,nom:e,org:e,gob:e,edu:e}],et:[1,{com:e,gov:e,org:e,edu:e,biz:e,name:e,info:e,net:e}],eu:e,fi:[1,{aland:e}],fj:[1,{ac:e,biz:e,com:e,gov:e,info:e,mil:e,name:e,net:e,org:e,pro:e}], +fk:o,fm:i,fo:e,fr:[1,{asso:e,com:e,gouv:e,nom:e,prd:e,tm:e,avoues:e,cci:e,greta:e,"huissier-justice":e}],ga:e,gb:e,gd:[1,{edu:e,gov:e}],ge:[1,{com:e,edu:e,gov:e,org:e,mil:e,net:e,pvt:e}],gf:e,gg:c,gh:[1,{com:e,edu:e,gov:e,org:e,mil:e}],gi:[1,{com:e,ltd:e,gov:e,mod:e,edu:e,org:e}],gl:[1,{co:e,com:e,edu:e,net:e,org:e}],gm:e,gn:[1,{ac:e,com:e,edu:e,gov:e,org:e,net:e}],gov:e,gp:[1,{com:e,net:e,mobi:e,edu:e,org:e,asso:e}],gq:e,gr:n,gs:e,gt:[1,{com:e,edu:e,gob:e,ind:e,mil:e,net:e,org:e}],gu:[1,{com:e,edu:e,gov:e,guam:e,info:e,net:e,org:e,web:e}],gw:e,gy:u,hk:[1,{com:e,edu:e,gov:e,idv:e,net:e,org:e,"xn--55qx5d":e,公司:e,"xn--wcvs22d":e,教育:e,"xn--lcvr32d":e,敎育:e,"xn--mxtq1m":e,政府:e,"xn--gmqw5a":e,個人:e,"xn--ciqpn":e,个人:e,"xn--gmq050i":e,箇人:e,"xn--zf0avx":e,網络:e,"xn--io0a7i":e,网络:e,"xn--mk0axi":e,组織:e,"xn--od0alg":e,網絡:e,"xn--od0aq3b":e,网絡:e,"xn--tn0ag":e,组织:e,"xn--uc0atv":e,組織:e,"xn--uc0ay4a":e,組织:e}],hm:e,hn:[1,{com:e,edu:e,org:e,net:e, +mil:e,gob:e}],hr:[1,{iz:e,from:e,name:e,com:e}],ht:[1,{com:e,shop:e,firm:e,info:e,adult:e,net:e,pro:e,org:e,med:e,art:e,coop:e,pol:e,asso:e,edu:e,rel:e,gouv:e,perso:e}],hu:[1,{2e3:e,co:e,info:e,org:e,priv:e,sport:e,tm:e,agrar:e,bolt:e,casino:e,city:e,erotica:e,erotika:e,film:e,forum:e,games:e,hotel:e,ingatlan:e,jogasz:e,konyvelo:e,lakas:e,media:e,news:e,reklam:e,sex:e,shop:e,suli:e,szex:e,tozsde:e,utazas:e,video:e}],id:[1,{ac:e,biz:e,co:e,desa:e,go:e,mil:e,my:e,net:e,or:e,ponpes:e,sch:e,web:e}],ie:r,il:[1,{ac:e,co:e,gov:e,idf:e,k12:e,muni:e,net:e,org:e}],"xn--4dbrk0ce":[1,{"xn--4dbgdty6c":e,"xn--5dbhl8d":e,"xn--8dbq2a":e,"xn--hebda8b":e}],ישראל:[1,{אקדמיה:e,ישוב:e,צהל:e,ממשל:e}],im:[1,{ac:e,co:[1,{ltd:e,plc:e}],com:e,net:e,org:e,tt:e,tv:e}],in:[1,{"5g":e,"6g":e,ac:e,ai:e,am:e,bihar:e,biz:e,business:e,ca:e,cn:e,co:e,com:e,coop:e,cs:e,delhi:e,dr:e,edu:e,er:e,firm:e,gen:e,gov:e,gujarat:e,ind:e,info:e,int:e,internet:e,io:e,me:e,mil:e,net:e,nic:e,org:e,pg:e,post:e,pro:e, +res:e,travel:e,tv:e,uk:e,up:e,us:e}],info:e,int:[1,{eu:e}],io:a,iq:t,ir:[1,{ac:e,co:e,gov:e,id:e,net:e,org:e,sch:e,"xn--mgba3a4f16a":e,ایران:e,"xn--mgba3a4fra":e,ايران:e}],is:[1,{net:e,com:e,edu:e,gov:e,org:e,int:e}],it:[1,{gov:e,edu:e,abr:e,abruzzo:e,"aosta-valley":e,aostavalley:e,bas:e,basilicata:e,cal:e,calabria:e,cam:e,campania:e,"emilia-romagna":e,emiliaromagna:e,emr:e,"friuli-v-giulia":e,"friuli-ve-giulia":e,"friuli-vegiulia":e,"friuli-venezia-giulia":e,"friuli-veneziagiulia":e,"friuli-vgiulia":e,"friuliv-giulia":e,"friulive-giulia":e,friulivegiulia:e,"friulivenezia-giulia":e,friuliveneziagiulia:e,friulivgiulia:e,fvg:e,laz:e,lazio:e,lig:e,liguria:e,lom:e,lombardia:e,lombardy:e,lucania:e,mar:e,marche:e,mol:e,molise:e,piedmont:e,piemonte:e,pmn:e,pug:e,puglia:e,sar:e,sardegna:e,sardinia:e,sic:e,sicilia:e,sicily:e,taa:e,tos:e,toscana:e,"trentin-sud-tirol":e,"xn--trentin-sd-tirol-rzb":e,"trentin-süd-tirol":e,"trentin-sudtirol":e,"xn--trentin-sdtirol-7vb":e,"trentin-südtirol":e, "trentin-sued-tirol":e,"trentin-suedtirol":e,"trentino-a-adige":e,"trentino-aadige":e,"trentino-alto-adige":e,"trentino-altoadige":e,"trentino-s-tirol":e,"trentino-stirol":e,"trentino-sud-tirol":e,"xn--trentino-sd-tirol-c3b":e,"trentino-süd-tirol":e,"trentino-sudtirol":e,"xn--trentino-sdtirol-szb":e,"trentino-südtirol":e,"trentino-sued-tirol":e,"trentino-suedtirol":e,trentino:e,"trentinoa-adige":e,trentinoaadige:e,"trentinoalto-adige":e,trentinoaltoadige:e,"trentinos-tirol":e,trentinostirol:e,"trentinosud-tirol":e,"xn--trentinosd-tirol-rzb":e,"trentinosüd-tirol":e,trentinosudtirol:e,"xn--trentinosdtirol-7vb":e,trentinosüdtirol:e,"trentinosued-tirol":e,trentinosuedtirol:e,"trentinsud-tirol":e,"xn--trentinsd-tirol-6vb":e,"trentinsüd-tirol":e,trentinsudtirol:e,"xn--trentinsdtirol-nsb":e,trentinsüdtirol:e,"trentinsued-tirol":e,trentinsuedtirol:e,tuscany:e,umb:e,umbria:e,"val-d-aosta":e,"val-daosta":e,"vald-aosta":e,valdaosta:e,"valle-aosta":e,"valle-d-aosta":e,"valle-daosta":e,valleaosta:e, "valled-aosta":e,valledaosta:e,"vallee-aoste":e,"xn--valle-aoste-ebb":e,"vallée-aoste":e,"vallee-d-aoste":e,"xn--valle-d-aoste-ehb":e,"vallée-d-aoste":e,valleeaoste:e,"xn--valleaoste-e7a":e,valléeaoste:e,valleedaoste:e,"xn--valledaoste-ebb":e,valléedaoste:e,vao:e,vda:e,ven:e,veneto:e,ag:e,agrigento:e,al:e,alessandria:e,"alto-adige":e,altoadige:e,an:e,ancona:e,"andria-barletta-trani":e,"andria-trani-barletta":e,andriabarlettatrani:e,andriatranibarletta:e,ao:e,aosta:e,aoste:e,ap:e,aq:e,aquila:e,ar:e,arezzo:e,"ascoli-piceno":e,ascolipiceno:e,asti:e,at:e,av:e,avellino:e,ba:e,"balsan-sudtirol":e,"xn--balsan-sdtirol-nsb":e,"balsan-südtirol":e,"balsan-suedtirol":e,balsan:e,bari:e,"barletta-trani-andria":e,barlettatraniandria:e,belluno:e,benevento:e,bergamo:e,bg:e,bi:e,biella:e,bl:e,bn:e,bo:e,bologna:e,"bolzano-altoadige":e,bolzano:e,"bozen-sudtirol":e,"xn--bozen-sdtirol-2ob":e,"bozen-südtirol":e,"bozen-suedtirol":e,bozen:e,br:e,brescia:e,brindisi:e,bs:e,bt:e,"bulsan-sudtirol":e,"xn--bul\ san-sdtirol-nsb":e,"bulsan-südtirol":e,"bulsan-suedtirol":e,bulsan:e,bz:e,ca:e,cagliari:e,caltanissetta:e,"campidano-medio":e,campidanomedio:e,campobasso:e,"carbonia-iglesias":e,carboniaiglesias:e,"carrara-massa":e,carraramassa:e,caserta:e,catania:e,catanzaro:e,cb:e,ce:e,"cesena-forli":e,"xn--cesena-forl-mcb":e,"cesena-forlì":e,cesenaforli:e,"xn--cesenaforl-i8a":e,cesenaforlì:e,ch:e,chieti:e,ci:e,cl:e,cn:e,co:e,como:e,cosenza:e,cr:e,cremona:e,crotone:e,cs:e,ct:e,cuneo:e,cz:e,"dell-ogliastra":e,dellogliastra:e,en:e,enna:e,fc:e,fe:e,fermo:e,ferrara:e,fg:e,fi:e,firenze:e,florence:e,fm:e,foggia:e,"forli-cesena":e,"xn--forl-cesena-fcb":e,"forlì-cesena":e,forlicesena:e,"xn--forlcesena-c8a":e,forlìcesena:e,fr:e,frosinone:e,ge:e,genoa:e,genova:e,go:e,gorizia:e,gr:e,grosseto:e,"iglesias-carbonia":e,iglesiascarbonia:e,im:e,imperia:e,is:e,isernia:e,kr:e,"la-spezia":e,laquila:e,laspezia:e,latina:e,lc:e,le:e,lecce:e,lecco:e,li:e,livorno:e,lo:e,lodi:e,lt:e,lu:e,lucca:e,macerata:e,mantova:e,"mas\ sa-carrara":e,massacarrara:e,matera:e,mb:e,mc:e,me:e,"medio-campidano":e,mediocampidano:e,messina:e,mi:e,milan:e,milano:e,mn:e,mo:e,modena:e,"monza-brianza":e,"monza-e-della-brianza":e,monza:e,monzabrianza:e,monzaebrianza:e,monzaedellabrianza:e,ms:e,mt:e,na:e,naples:e,napoli:e,no:e,novara:e,nu:e,nuoro:e,og:e,ogliastra:e,"olbia-tempio":e,olbiatempio:e,or:e,oristano:e,ot:e,pa:e,padova:e,padua:e,palermo:e,parma:e,pavia:e,pc:e,pd:e,pe:e,perugia:e,"pesaro-urbino":e,pesarourbino:e,pescara:e,pg:e,pi:e,piacenza:e,pisa:e,pistoia:e,pn:e,po:e,pordenone:e,potenza:e,pr:e,prato:e,pt:e,pu:e,pv:e,pz:e,ra:e,ragusa:e,ravenna:e,rc:e,re:e,"reggio-calabria":e,"reggio-emilia":e,reggiocalabria:e,reggioemilia:e,rg:e,ri:e,rieti:e,rimini:e,rm:e,rn:e,ro:e,roma:e,rome:e,rovigo:e,sa:e,salerno:e,sassari:e,savona:e,si:e,siena:e,siracusa:e,so:e,sondrio:e,sp:e,sr:e,ss:e,suedtirol:e,"xn--sdtirol-n2a":e,südtirol:e,sv:e,ta:e,taranto:e,te:e,"tempio-olbia":e,tempioolbia:e,teramo:e,terni:e,tn:e,to:e,torino:e,tp:e,tr:e,"tra\ -ni-andria-barletta":e,"trani-barletta-andria":e,traniandriabarletta:e,tranibarlettaandria:e,trapani:e,trento:e,treviso:e,trieste:e,ts:e,turin:e,tv:e,ud:e,udine:e,"urbino-pesaro":e,urbinopesaro:e,va:e,varese:e,vb:e,vc:e,ve:e,venezia:e,venice:e,verbania:e,vercelli:e,verona:e,vi:e,"vibo-valentia":e,vibovalentia:e,vicenza:e,viterbo:e,vr:e,vs:e,vt:e,vv:e}],je:u,jm:a,jo:c,jobs:e,jp:[1,{ac:e,ad:e,co:e,ed:e,go:e,gr:e,lg:e,ne:e,or:e,aichi:[1,{aisai:e,ama:e,anjo:e,asuke:e,chiryu:e,chita:e,fuso:e,gamagori:e,handa:e,hazu:e,hekinan:e,higashiura:e,ichinomiya:e,inazawa:e,inuyama:e,isshiki:e,iwakura:e,kanie:e,kariya:e,kasugai:e,kira:e,kiyosu:e,komaki:e,konan:e,kota:e,mihama:e,miyoshi:e,nishio:e,nisshin:e,obu:e,oguchi:e,oharu:e,okazaki:e,owariasahi:e,seto:e,shikatsu:e,shinshiro:e,shitara:e,tahara:e,takahama:e,tobishima:e,toei:e,togo:e,tokai:e,tokoname:e,toyoake:e,toyohashi:e,toyokawa:e,toyone:e,toyota:e,tsushima:e,yatomi:e}],akita:[1,{akita:e,daisen:e,fujisato:e,gojome:e,hachirogata:e,happou:e,higashinaruse:e, +ni-andria-barletta":e,"trani-barletta-andria":e,traniandriabarletta:e,tranibarlettaandria:e,trapani:e,trento:e,treviso:e,trieste:e,ts:e,turin:e,tv:e,ud:e,udine:e,"urbino-pesaro":e,urbinopesaro:e,va:e,varese:e,vb:e,vc:e,ve:e,venezia:e,venice:e,verbania:e,vercelli:e,verona:e,vi:e,"vibo-valentia":e,vibovalentia:e,vicenza:e,viterbo:e,vr:e,vs:e,vt:e,vv:e}],je:c,jm:o,jo:l,jobs:e,jp:[1,{ac:e,ad:e,co:e,ed:e,go:e,gr:e,lg:e,ne:e,or:e,aichi:[1,{aisai:e,ama:e,anjo:e,asuke:e,chiryu:e,chita:e,fuso:e,gamagori:e,handa:e,hazu:e,hekinan:e,higashiura:e,ichinomiya:e,inazawa:e,inuyama:e,isshiki:e,iwakura:e,kanie:e,kariya:e,kasugai:e,kira:e,kiyosu:e,komaki:e,konan:e,kota:e,mihama:e,miyoshi:e,nishio:e,nisshin:e,obu:e,oguchi:e,oharu:e,okazaki:e,owariasahi:e,seto:e,shikatsu:e,shinshiro:e,shitara:e,tahara:e,takahama:e,tobishima:e,toei:e,togo:e,tokai:e,tokoname:e,toyoake:e,toyohashi:e,toyokawa:e,toyone:e,toyota:e,tsushima:e,yatomi:e}],akita:[1,{akita:e,daisen:e,fujisato:e,gojome:e,hachirogata:e,happou:e,higashinaruse:e, honjo:e,honjyo:e,ikawa:e,kamikoani:e,kamioka:e,katagami:e,kazuno:e,kitaakita:e,kosaka:e,kyowa:e,misato:e,mitane:e,moriyoshi:e,nikaho:e,noshiro:e,odate:e,oga:e,ogata:e,semboku:e,yokote:e,yurihonjo:e}],aomori:[1,{aomori:e,gonohe:e,hachinohe:e,hashikami:e,hiranai:e,hirosaki:e,itayanagi:e,kuroishi:e,misawa:e,mutsu:e,nakadomari:e,noheji:e,oirase:e,owani:e,rokunohe:e,sannohe:e,shichinohe:e,shingo:e,takko:e,towada:e,tsugaru:e,tsuruta:e}],chiba:[1,{abiko:e,asahi:e,chonan:e,chosei:e,choshi:e,chuo:e,funabashi:e,futtsu:e,hanamigawa:e,ichihara:e,ichikawa:e,ichinomiya:e,inzai:e,isumi:e,kamagaya:e,kamogawa:e,kashiwa:e,katori:e,katsuura:e,kimitsu:e,kisarazu:e,kozaki:e,kujukuri:e,kyonan:e,matsudo:e,midori:e,mihama:e,minamiboso:e,mobara:e,mutsuzawa:e,nagara:e,nagareyama:e,narashino:e,narita:e,noda:e,oamishirasato:e,omigawa:e,onjuku:e,otaki:e,sakae:e,sakura:e,shimofusa:e,shirako:e,shiroi:e,shisui:e,sodegaura:e,sosa:e,tako:e,tateyama:e,togane:e,tohnosho:e,tomisato:e,urayasu:e,yachimata:e,yachiyo:e,yokaichiba:e, yokoshibahikari:e,yotsukaido:e}],ehime:[1,{ainan:e,honai:e,ikata:e,imabari:e,iyo:e,kamijima:e,kihoku:e,kumakogen:e,masaki:e,matsuno:e,matsuyama:e,namikata:e,niihama:e,ozu:e,saijo:e,seiyo:e,shikokuchuo:e,tobe:e,toon:e,uchiko:e,uwajima:e,yawatahama:e}],fukui:[1,{echizen:e,eiheiji:e,fukui:e,ikeda:e,katsuyama:e,mihama:e,minamiechizen:e,obama:e,ohi:e,ono:e,sabae:e,sakai:e,takahama:e,tsuruga:e,wakasa:e}],fukuoka:[1,{ashiya:e,buzen:e,chikugo:e,chikuho:e,chikujo:e,chikushino:e,chikuzen:e,chuo:e,dazaifu:e,fukuchi:e,hakata:e,higashi:e,hirokawa:e,hisayama:e,iizuka:e,inatsuki:e,kaho:e,kasuga:e,kasuya:e,kawara:e,keisen:e,koga:e,kurate:e,kurogi:e,kurume:e,minami:e,miyako:e,miyama:e,miyawaka:e,mizumaki:e,munakata:e,nakagawa:e,nakama:e,nishi:e,nogata:e,ogori:e,okagaki:e,okawa:e,oki:e,omuta:e,onga:e,onojo:e,oto:e,saigawa:e,sasaguri:e,shingu:e,shinyoshitomi:e,shonai:e,soeda:e,sue:e,tachiarai:e,tagawa:e,takata:e,toho:e,toyotsu:e,tsuiki:e,ukiha:e,umi:e,usui:e,yamada:e,yame:e,yanagawa:e,yukuhashi:e}],fukushima:[ 1,{aizubange:e,aizumisato:e,aizuwakamatsu:e,asakawa:e,bandai:e,date:e,fukushima:e,furudono:e,futaba:e,hanawa:e,higashi:e,hirata:e,hirono:e,iitate:e,inawashiro:e,ishikawa:e,iwaki:e,izumizaki:e,kagamiishi:e,kaneyama:e,kawamata:e,kitakata:e,kitashiobara:e,koori:e,koriyama:e,kunimi:e,miharu:e,mishima:e,namie:e,nango:e,nishiaizu:e,nishigo:e,okuma:e,omotego:e,ono:e,otama:e,samegawa:e,shimogo:e,shirakawa:e,showa:e,soma:e,sukagawa:e,taishin:e,tamakawa:e,tanagura:e,tenei:e,yabuki:e,yamato:e,yamatsuri:e,yanaizu:e,yugawa:e}],gifu:[1,{anpachi:e,ena:e,gifu:e,ginan:e,godo:e,gujo:e,hashima:e,hichiso:e,hida:e,higashishirakawa:e,ibigawa:e,ikeda:e,kakamigahara:e,kani:e,kasahara:e,kasamatsu:e,kawaue:e,kitagata:e,mino:e,minokamo:e,mitake:e,mizunami:e,motosu:e,nakatsugawa:e,ogaki:e,sakahogi:e,seki:e,sekigahara:e,shirakawa:e,tajimi:e,takayama:e,tarui:e,toki:e,tomika:e,wanouchi:e,yamagata:e,yaotsu:e,yoro:e}],gunma:[1,{annaka:e,chiyoda:e,fujioka:e,higashiagatsuma:e,isesaki:e,itakura:e,kanna:e,kanra:e,katashina:e, @@ -632,9 +910,9 @@ ohira:e,ohtawara:e,oyama:e,sakura:e,sano:e,shimotsuke:e,shioya:e,takanezawa:e,tochigi:e,tsuga:e,ujiie:e,utsunomiya:e,yaita:e}],tokushima:[1,{aizumi:e,anan:e,ichiba:e,itano:e,kainan:e,komatsushima:e,matsushige:e,mima:e,minami:e,miyoshi:e,mugi:e,nakagawa:e,naruto:e,sanagochi:e,shishikui:e,tokushima:e,wajiki:e}],tokyo:[1,{adachi:e,akiruno:e,akishima:e,aogashima:e,arakawa:e,bunkyo:e,chiyoda:e,chofu:e,chuo:e,edogawa:e,fuchu:e,fussa:e,hachijo:e,hachioji:e,hamura:e,higashikurume:e,higashimurayama:e,higashiyamato:e,hino:e,hinode:e,hinohara:e,inagi:e,itabashi:e,katsushika:e,kita:e,kiyose:e,kodaira:e,koganei:e,kokubunji:e,komae:e,koto:e,kouzushima:e,kunitachi:e,machida:e,meguro:e,minato:e,mitaka:e,mizuho:e,musashimurayama:e,musashino:e,nakano:e,nerima:e,ogasawara:e,okutama:e,ome:e,oshima:e,ota:e,setagaya:e,shibuya:e,shinagawa:e,shinjuku:e,suginami:e,sumida:e,tachikawa:e,taito:e,tama:e,toshima:e}],tottori:[1,{chizu:e,hino:e,kawahara:e,koge:e,kotoura:e,misasa:e,nanbu:e,nichinan:e,sakaiminato:e,tottori:e, wakasa:e,yazu:e,yonago:e}],toyama:[1,{asahi:e,fuchu:e,fukumitsu:e,funahashi:e,himi:e,imizu:e,inami:e,johana:e,kamiichi:e,kurobe:e,nakaniikawa:e,namerikawa:e,nanto:e,nyuzen:e,oyabe:e,taira:e,takaoka:e,tateyama:e,toga:e,tonami:e,toyama:e,unazuki:e,uozu:e,yamada:e}],wakayama:[1,{arida:e,aridagawa:e,gobo:e,hashimoto:e,hidaka:e,hirogawa:e,inami:e,iwade:e,kainan:e,kamitonda:e,katsuragi:e,kimino:e,kinokawa:e,kitayama:e,koya:e,koza:e,kozagawa:e,kudoyama:e,kushimoto:e,mihama:e,misato:e,nachikatsuura:e,shingu:e,shirahama:e,taiji:e,tanabe:e,wakayama:e,yuasa:e,yura:e}],yamagata:[1,{asahi:e,funagata:e,higashine:e,iide:e,kahoku:e,kaminoyama:e,kaneyama:e,kawanishi:e,mamurogawa:e,mikawa:e,murayama:e,nagai:e,nakayama:e,nanyo:e,nishikawa:e,obanazawa:e,oe:e,oguni:e,ohkura:e,oishida:e,sagae:e,sakata:e,sakegawa:e,shinjo:e,shirataka:e,shonai:e,takahata:e,tendo:e,tozawa:e,tsuruoka:e,yamagata:e,yamanobe:e,yonezawa:e,yuza:e}],yamaguchi:[1,{abu:e,hagi:e,hikari:e,hofu:e,iwakuni:e,kudamatsu:e,mitou:e,nagato:e,oshima:e, shimonoseki:e,shunan:e,tabuse:e,tokuyama:e,toyota:e,ube:e,yuu:e}],yamanashi:[1,{chuo:e,doshi:e,fuefuki:e,fujikawa:e,fujikawaguchiko:e,fujiyoshida:e,hayakawa:e,hokuto:e,ichikawamisato:e,kai:e,kofu:e,koshu:e,kosuge:e,"minami-alps":e,minobu:e,nakamichi:e,nanbu:e,narusawa:e,nirasaki:e,nishikatsura:e,oshino:e,otsuki:e,showa:e,tabayama:e,tsuru:e,uenohara:e,yamanakako:e,yamanashi:e}],"xn--4pvxs":e,栃木:e,"xn--vgu402c":e,愛知:e,"xn--c3s14m":e,愛媛:e,"xn--f6qx53a":e,兵庫:e,"xn--8pvr4u":e,熊本:e,"xn--uist22h":e,茨城:e,"xn--djrs72d6uy":e,北海道:e,"xn--mkru45i":e,千葉:e,"xn--0trq7p7nn":e,和歌山:e,"xn--8ltr62k":e,長崎:e,"xn--2m4a15e":e,長野:e,"xn--efvn9s":e,新潟:e,"xn--32vp30h":e,青森:e,"xn--4it797k":e,静岡:e,"xn--1lqs71d":e,東京:e,"xn--5rtp49c":e,石川:e,"xn--5js045d":e,埼玉:e,"xn--ehqz56n":e,三重:e,"xn--1lqs03n":e,京都:e,"xn--qqqt11m":e,佐賀:e,"xn--kbrq7o":e,大分:e,"xn--pssu33l":e,大阪:e,"xn--ntsq17g":e,奈良:e,"xn--uisz3g":e,宮城:e,"xn--6btw5a":e,宮崎:e, -"xn--1ctwo":e,富山:e,"xn--6orx2r":e,山口:e,"xn--rht61e":e,山形:e,"xn--rht27z":e,山梨:e,"xn--djty4k":e,岩手:e,"xn--nit225k":e,岐阜:e,"xn--rht3d":e,岡山:e,"xn--klty5x":e,島根:e,"xn--kltx9a":e,広島:e,"xn--kltp7d":e,徳島:e,"xn--uuwu58a":e,沖縄:e,"xn--zbx025d":e,滋賀:e,"xn--ntso0iqx3a":e,神奈川:e,"xn--elqq16h":e,福井:e,"xn--4it168d":e,福岡:e,"xn--klt787d":e,福島:e,"xn--rny31h":e,秋田:e,"xn--7t0a264c":e,群馬:e,"xn--5rtq34k":e,香川:e,"xn--k7yn95e":e,高知:e,"xn--tor131o":e,鳥取:e,"xn--d5qv7z876c":e,鹿児島:e,kawasaki:a,kitakyushu:a,kobe:a,nagoya:a,sapporo:a,sendai:a,yokohama:a}],ke:[1,{ac:e,co:e,go:e,info:e,me:e,mobi:e,ne:e,or:e,sc:e}],kg:t,kh:a,ki:p,km:[1,{org:e,nom:e,gov:e,prd:e,tm:e,edu:e,mil:e,ass:e,com:e,coop:e,asso:e,presse:e,medecin:e,notaires:e,pharmaciens:e,veterinaire:e,gouv:e}],kn:[1,{net:e,org:e,edu:e,gov:e}],kp:[1,{com:e,edu:e,gov:e,org:e,rep:e,tra:e}],kr:[1,{ac:e,co:e,es:e,go:e,hs:e,kg:e,mil:e,ms:e,ne:e,or:e,pe:e,re:e,sc:e,busan:e,chungbuk:e, -chungnam:e,daegu:e,daejeon:e,gangwon:e,gwangju:e,gyeongbuk:e,gyeonggi:e,gyeongnam:e,incheon:e,jeju:e,jeonbuk:e,jeonnam:e,seoul:e,ulsan:e}],kw:[1,{com:e,edu:e,emb:e,gov:e,ind:e,net:e,org:e}],ky:o,kz:t,la:[1,{int:e,net:e,info:e,edu:e,gov:e,per:e,com:e,org:e}],lb:r,lc:l,li:e,lk:[1,{gov:e,sch:e,net:e,int:e,com:e,org:e,edu:e,ngo:e,soc:e,web:e,ltd:e,assn:e,grp:e,hotel:e,ac:e}],lr:r,ls:[1,{ac:e,biz:e,co:e,edu:e,gov:e,info:e,net:e,org:e,sc:e}],lt:n,lu:e,lv:[1,{com:e,edu:e,gov:e,org:e,mil:e,id:e,net:e,asn:e,conf:e}],ly:[1,{com:e,net:e,gov:e,plc:e,edu:e,sch:e,med:e,org:e,id:e}],ma:[1,{co:e,net:e,gov:e,org:e,ac:e,press:e}],mc:[1,{tm:e,asso:e}],md:e,me:[1,{co:e,net:e,org:e,edu:e,ac:e,gov:e,its:e,priv:e}],mg:[1,{org:e,nom:e,gov:e,prd:e,tm:e,edu:e,mil:e,com:e,co:e}],mh:e,mil:e,mk:[1,{com:e,org:e,net:e,edu:e,gov:e,inf:e,name:e}],ml:[1,{com:e,edu:e,gouv:e,gov:e,net:e,org:e,presse:e}],mm:a,mn:[1,{gov:e,edu:e,org:e}],mo:r,mobi:e,mp:e,mq:e,mr:n,ms:r,mt:o,mu:[1,{com:e,net:e,org:e,gov:e,ac:e,co:e,or:e}],museum:e, -mv:[1,{aero:e,biz:e,com:e,coop:e,edu:e,gov:e,info:e,int:e,mil:e,museum:e,name:e,net:e,org:e,pro:e}],mw:[1,{ac:e,biz:e,co:e,com:e,coop:e,edu:e,gov:e,int:e,museum:e,net:e,org:e}],mx:[1,{com:e,org:e,gob:e,edu:e,net:e}],my:[1,{biz:e,com:e,edu:e,gov:e,mil:e,name:e,net:e,org:e}],mz:[1,{ac:e,adv:e,co:e,edu:e,gov:e,mil:e,net:e,org:e}],na:[1,{info:e,pro:e,name:e,school:e,or:e,dr:e,us:e,mx:e,ca:e,in:e,cc:e,tv:e,ws:e,mobi:e,co:e,com:e,org:e}],name:e,nc:[1,{asso:e,nom:e}],ne:e,net:e,nf:[1,{com:e,net:e,per:e,rec:e,web:e,arts:e,firm:e,info:e,other:e,store:e}],ng:[1,{com:e,edu:e,gov:e,i:e,mil:e,mobi:e,name:e,net:e,org:e,sch:e}],ni:[1,{ac:e,biz:e,co:e,com:e,edu:e,gob:e,in:e,info:e,int:e,mil:e,net:e,nom:e,org:e,web:e}],nl:e,no:[1,{fhs:e,vgs:e,fylkesbibl:e,folkebibl:e,museum:e,idrett:e,priv:e,mil:e,stat:e,dep:e,kommune:e,herad:e,aa:m,ah:m,bu:m,fm:m,hl:m,hm:m,"jan-mayen":m,mr:m,nl:m,nt:m,of:m,ol:m,oslo:m,rl:m,sf:m,st:m,svalbard:m,tm:m,tr:m,va:m,vf:m,akrehamn:e,"xn--krehamn-dxa":e,åkrehamn:e,algard:e,"xn\ +"xn--1ctwo":e,富山:e,"xn--6orx2r":e,山口:e,"xn--rht61e":e,山形:e,"xn--rht27z":e,山梨:e,"xn--djty4k":e,岩手:e,"xn--nit225k":e,岐阜:e,"xn--rht3d":e,岡山:e,"xn--klty5x":e,島根:e,"xn--kltx9a":e,広島:e,"xn--kltp7d":e,徳島:e,"xn--uuwu58a":e,沖縄:e,"xn--zbx025d":e,滋賀:e,"xn--ntso0iqx3a":e,神奈川:e,"xn--elqq16h":e,福井:e,"xn--4it168d":e,福岡:e,"xn--klt787d":e,福島:e,"xn--rny31h":e,秋田:e,"xn--7t0a264c":e,群馬:e,"xn--5rtq34k":e,香川:e,"xn--k7yn95e":e,高知:e,"xn--tor131o":e,鳥取:e,"xn--d5qv7z876c":e,鹿児島:e,kawasaki:o,kitakyushu:o,kobe:o,nagoya:o,sapporo:o,sendai:o,yokohama:o}],ke:[1,{ac:e,co:e,go:e,info:e,me:e,mobi:e,ne:e,or:e,sc:e}],kg:t,kh:o,ki:m,km:[1,{org:e,nom:e,gov:e,prd:e,tm:e,edu:e,mil:e,ass:e,com:e,coop:e,asso:e,presse:e,medecin:e,notaires:e,pharmaciens:e,veterinaire:e,gouv:e}],kn:[1,{net:e,org:e,edu:e,gov:e}],kp:[1,{com:e,edu:e,gov:e,org:e,rep:e,tra:e}],kr:[1,{ac:e,co:e,es:e,go:e,hs:e,kg:e,mil:e,ms:e,ne:e,or:e,pe:e,re:e,sc:e,busan:e,chungbuk:e, +chungnam:e,daegu:e,daejeon:e,gangwon:e,gwangju:e,gyeongbuk:e,gyeonggi:e,gyeongnam:e,incheon:e,jeju:e,jeonbuk:e,jeonnam:e,seoul:e,ulsan:e}],kw:[1,{com:e,edu:e,emb:e,gov:e,ind:e,net:e,org:e}],ky:i,kz:t,la:[1,{int:e,net:e,info:e,edu:e,gov:e,per:e,com:e,org:e}],lb:n,lc:u,li:e,lk:[1,{gov:e,sch:e,net:e,int:e,com:e,org:e,edu:e,ngo:e,soc:e,web:e,ltd:e,assn:e,grp:e,hotel:e,ac:e}],lr:n,ls:[1,{ac:e,biz:e,co:e,edu:e,gov:e,info:e,net:e,org:e,sc:e}],lt:r,lu:e,lv:[1,{com:e,edu:e,gov:e,org:e,mil:e,id:e,net:e,asn:e,conf:e}],ly:[1,{com:e,net:e,gov:e,plc:e,edu:e,sch:e,med:e,org:e,id:e}],ma:[1,{co:e,net:e,gov:e,org:e,ac:e,press:e}],mc:[1,{tm:e,asso:e}],md:e,me:[1,{co:e,net:e,org:e,edu:e,ac:e,gov:e,its:e,priv:e}],mg:[1,{org:e,nom:e,gov:e,prd:e,tm:e,edu:e,mil:e,com:e,co:e}],mh:e,mil:e,mk:[1,{com:e,org:e,net:e,edu:e,gov:e,inf:e,name:e}],ml:[1,{com:e,edu:e,gouv:e,gov:e,net:e,org:e,presse:e}],mm:o,mn:[1,{gov:e,edu:e,org:e}],mo:n,mobi:e,mp:e,mq:e,mr:r,ms:n,mt:i,mu:[1,{com:e,net:e,org:e,gov:e,ac:e,co:e,or:e}],museum:e, +mv:[1,{aero:e,biz:e,com:e,coop:e,edu:e,gov:e,info:e,int:e,mil:e,museum:e,name:e,net:e,org:e,pro:e}],mw:[1,{ac:e,biz:e,co:e,com:e,coop:e,edu:e,gov:e,int:e,museum:e,net:e,org:e}],mx:[1,{com:e,org:e,gob:e,edu:e,net:e}],my:[1,{biz:e,com:e,edu:e,gov:e,mil:e,name:e,net:e,org:e}],mz:[1,{ac:e,adv:e,co:e,edu:e,gov:e,mil:e,net:e,org:e}],na:[1,{info:e,pro:e,name:e,school:e,or:e,dr:e,us:e,mx:e,ca:e,in:e,cc:e,tv:e,ws:e,mobi:e,co:e,com:e,org:e}],name:e,nc:[1,{asso:e,nom:e}],ne:e,net:e,nf:[1,{com:e,net:e,per:e,rec:e,web:e,arts:e,firm:e,info:e,other:e,store:e}],ng:[1,{com:e,edu:e,gov:e,i:e,mil:e,mobi:e,name:e,net:e,org:e,sch:e}],ni:[1,{ac:e,biz:e,co:e,com:e,edu:e,gob:e,in:e,info:e,int:e,mil:e,net:e,nom:e,org:e,web:e}],nl:e,no:[1,{fhs:e,vgs:e,fylkesbibl:e,folkebibl:e,museum:e,idrett:e,priv:e,mil:e,stat:e,dep:e,kommune:e,herad:e,aa:p,ah:p,bu:p,fm:p,hl:p,hm:p,"jan-mayen":p,mr:p,nl:p,nt:p,of:p,ol:p,oslo:p,rl:p,sf:p,st:p,svalbard:p,tm:p,tr:p,va:p,vf:p,akrehamn:e,"xn--krehamn-dxa":e,åkrehamn:e,algard:e,"xn\ --lgrd-poac":e,ålgård:e,arna:e,brumunddal:e,bryne:e,bronnoysund:e,"xn--brnnysund-m8ac":e,brønnøysund:e,drobak:e,"xn--drbak-wua":e,drøbak:e,egersund:e,fetsund:e,floro:e,"xn--flor-jra":e,florø:e,fredrikstad:e,hokksund:e,honefoss:e,"xn--hnefoss-q1a":e,hønefoss:e,jessheim:e,jorpeland:e,"xn--jrpeland-54a":e,jørpeland:e,kirkenes:e,kopervik:e,krokstadelva:e,langevag:e,"xn--langevg-jxa":e,langevåg:e,leirvik:e,mjondalen:e,"xn--mjndalen-64a":e,mjøndalen:e,"mo-i-rana":e,mosjoen:e,"xn--mosjen-eya":e,mosjøen:e,nesoddtangen:e,orkanger:e,osoyro:e,"xn--osyro-wua":e,osøyro:e,raholt:e,"xn--rholt-mra":e,råholt:e,sandnessjoen:e,"xn--sandnessjen-ogb":e,sandnessjøen:e,skedsmokorset:e,slattum:e,spjelkavik:e,stathelle:e,stavern:e,stjordalshalsen:e,"xn--stjrdalshalsen-sqb":e,stjørdalshalsen:e,tananger:e,tranby:e,vossevangen:e,afjord:e,"xn--fjord-lra":e,åfjord:e,agdenes:e,al:e,"xn--l-1fa":e,ål:e,alesund:e,"xn--lesund-hua":e,ålesund:e,alstahaug:e,alta:e,"xn--lt-liac":e,áltá:e,alaheadju:e,"xn-\ -laheadju-7ya":e,álaheadju:e,alvdal:e,amli:e,"xn--mli-tla":e,åmli:e,amot:e,"xn--mot-tla":e,åmot:e,andebu:e,andoy:e,"xn--andy-ira":e,andøy:e,andasuolo:e,ardal:e,"xn--rdal-poa":e,årdal:e,aremark:e,arendal:e,"xn--s-1fa":e,ås:e,aseral:e,"xn--seral-lra":e,åseral:e,asker:e,askim:e,askvoll:e,askoy:e,"xn--asky-ira":e,askøy:e,asnes:e,"xn--snes-poa":e,åsnes:e,audnedaln:e,aukra:e,aure:e,aurland:e,"aurskog-holand":e,"xn--aurskog-hland-jnb":e,"aurskog-høland":e,austevoll:e,austrheim:e,averoy:e,"xn--avery-yua":e,averøy:e,balestrand:e,ballangen:e,balat:e,"xn--blt-elab":e,bálát:e,balsfjord:e,bahccavuotna:e,"xn--bhccavuotna-k7a":e,báhccavuotna:e,bamble:e,bardu:e,beardu:e,beiarn:e,bajddar:e,"xn--bjddar-pta":e,bájddar:e,baidar:e,"xn--bidr-5nac":e,báidár:e,berg:e,bergen:e,berlevag:e,"xn--berlevg-jxa":e,berlevåg:e,bearalvahki:e,"xn--bearalvhki-y4a":e,bearalváhki:e,bindal:e,birkenes:e,bjarkoy:e,"xn--bjarky-fya":e,bjarkøy:e,bjerkreim:e,bjugn:e,bodo:e,"xn--bod-2na":e,bodø:e,badaddja:e,"xn\ --bdddj-mrabd":e,bådåddjå:e,budejju:e,bokn:e,bremanger:e,bronnoy:e,"xn--brnny-wuac":e,brønnøy:e,bygland:e,bykle:e,barum:e,"xn--brum-voa":e,bærum:e,telemark:[0,{bo:e,"xn--b-5ga":e,bø:e}],nordland:[0,{bo:e,"xn--b-5ga":e,bø:e,heroy:e,"xn--hery-ira":e,herøy:e}],bievat:e,"xn--bievt-0qa":e,bievát:e,bomlo:e,"xn--bmlo-gra":e,bømlo:e,batsfjord:e,"xn--btsfjord-9za":e,båtsfjord:e,bahcavuotna:e,"xn--bhcavuotna-s4a":e,báhcavuotna:e,dovre:e,drammen:e,drangedal:e,dyroy:e,"xn--dyry-ira":e,dyrøy:e,donna:e,"xn--dnna-gra":e,dønna:e,eid:e,eidfjord:e,eidsberg:e,eidskog:e,eidsvoll:e,eigersund:e,elverum:e,enebakk:e,engerdal:e,etne:e,etnedal:e,evenes:e,evenassi:e,"xn--eveni-0qa01ga":e,evenášši:e,"evje-og-hornnes":e,farsund:e,fauske:e,fuossko:e,fuoisku:e,fedje:e,fet:e,finnoy:e,"xn--finny-yua":e,finnøy:e,fitjar:e,fjaler:e,fjell:e,flakstad:e,flatanger:e,flekkefjord:e,flesberg:e,flora:e,fla:e,"xn--fl-zia":e,flå:e,folldal:e,forsand:e,fosnes:e,frei:e,frogn:e,froland:e,frosta:e,frana:e,"xn--frna-\ @@ -645,14 +923,14 @@ hedmark:[0,{os:e,valer:e,"xn--vler-qoa":e,våler:e}],hordaland:[0,{os:e}],osen:e,osteroy:e,"xn--ostery-fya":e,osterøy:e,"ostre-toten":e,"xn--stre-toten-zcb":e,"østre-toten":e,overhalla:e,"ovre-eiker":e,"xn--vre-eiker-k8a":e,"øvre-eiker":e,oyer:e,"xn--yer-zna":e,øyer:e,oygarden:e,"xn--ygarden-p1a":e,øygarden:e,"oystre-slidre":e,"xn--ystre-slidre-ujb":e,"øystre-slidre":e,porsanger:e,porsangu:e,"xn--porsgu-sta26f":e,porsáŋgu:e,porsgrunn:e,radoy:e,"xn--rady-ira":e,radøy:e,rakkestad:e,rana:e,ruovat:e,randaberg:e,rauma:e,rendalen:e,rennebu:e,rennesoy:e,"xn--rennesy-v1a":e,rennesøy:e,rindal:e,ringebu:e,ringerike:e,ringsaker:e,rissa:e,risor:e,"xn--risr-ira":e,risør:e,roan:e,rollag:e,rygge:e,ralingen:e,"xn--rlingen-mxa":e,rælingen:e,rodoy:e,"xn--rdy-0nab":e,rødøy:e,romskog:e,"xn--rmskog-bya":e,rømskog:e,roros:e,"xn--rros-gra":e,røros:e,rost:e,"xn--rst-0na":e,røst:e,royken:e,"xn--ryken-vua":e,røyken:e,royrvik:e,"xn--ryrvik-bya":e,røyrvik:e,rade:e,"xn--rde-ula":e,råde:e,salangen:e, siellak:e,saltdal:e,salat:e,"xn--slt-elab":e,sálát:e,"xn--slat-5na":e,sálat:e,samnanger:e,vestfold:[0,{sande:e}],sandefjord:e,sandnes:e,sandoy:e,"xn--sandy-yua":e,sandøy:e,sarpsborg:e,sauda:e,sauherad:e,sel:e,selbu:e,selje:e,seljord:e,sigdal:e,siljan:e,sirdal:e,skaun:e,skedsmo:e,ski:e,skien:e,skiptvet:e,skjervoy:e,"xn--skjervy-v1a":e,skjervøy:e,skierva:e,"xn--skierv-uta":e,skiervá:e,skjak:e,"xn--skjk-soa":e,skjåk:e,skodje:e,skanland:e,"xn--sknland-fxa":e,skånland:e,skanit:e,"xn--sknit-yqa":e,skánit:e,smola:e,"xn--smla-hra":e,smøla:e,snillfjord:e,snasa:e,"xn--snsa-roa":e,snåsa:e,snoasa:e,snaase:e,"xn--snase-nra":e,snåase:e,sogndal:e,sokndal:e,sola:e,solund:e,songdalen:e,sortland:e,spydeberg:e,stange:e,stavanger:e,steigen:e,steinkjer:e,stjordal:e,"xn--stjrdal-s1a":e,stjørdal:e,stokke:e,"stor-elvdal":e,stord:e,stordal:e,storfjord:e,omasvuotna:e,strand:e,stranda:e,stryn:e,sula:e,suldal:e,sund:e,sunndal:e,surnadal:e,sveio:e,svelvik:e,sykkylven:e,sogne:e,"xn--sgne-gra":e,søgne:e, somna:e,"xn--smna-gra":e,sømna:e,"sondre-land":e,"xn--sndre-land-0cb":e,"søndre-land":e,"sor-aurdal":e,"xn--sr-aurdal-l8a":e,"sør-aurdal":e,"sor-fron":e,"xn--sr-fron-q1a":e,"sør-fron":e,"sor-odal":e,"xn--sr-odal-q1a":e,"sør-odal":e,"sor-varanger":e,"xn--sr-varanger-ggb":e,"sør-varanger":e,"matta-varjjat":e,"xn--mtta-vrjjat-k7af":e,"mátta-várjjat":e,sorfold:e,"xn--srfold-bya":e,sørfold:e,sorreisa:e,"xn--srreisa-q1a":e,sørreisa:e,sorum:e,"xn--srum-gra":e,sørum:e,tana:e,deatnu:e,time:e,tingvoll:e,tinn:e,tjeldsund:e,dielddanuorri:e,tjome:e,"xn--tjme-hra":e,tjøme:e,tokke:e,tolga:e,torsken:e,tranoy:e,"xn--trany-yua":e,tranøy:e,tromso:e,"xn--troms-zua":e,tromsø:e,tromsa:e,romsa:e,trondheim:e,troandin:e,trysil:e,trana:e,"xn--trna-woa":e,træna:e,trogstad:e,"xn--trgstad-r1a":e,trøgstad:e,tvedestrand:e,tydal:e,tynset:e,tysfjord:e,divtasvuodna:e,divttasvuotna:e,tysnes:e,tysvar:e,"xn--tysvr-vra":e,tysvær:e,tonsberg:e,"xn--tnsberg-q1a":e,tønsberg:e,ullensaker:e,ullensvang:e,ulvik:e, -utsira:e,vadso:e,"xn--vads-jra":e,vadsø:e,cahcesuolo:e,"xn--hcesuolo-7ya35b":e,čáhcesuolo:e,vaksdal:e,valle:e,vang:e,vanylven:e,vardo:e,"xn--vard-jra":e,vardø:e,varggat:e,"xn--vrggt-xqad":e,várggát:e,vefsn:e,vaapste:e,vega:e,vegarshei:e,"xn--vegrshei-c0a":e,vegårshei:e,vennesla:e,verdal:e,verran:e,vestby:e,vestnes:e,"vestre-slidre":e,"vestre-toten":e,vestvagoy:e,"xn--vestvgy-ixa6o":e,vestvågøy:e,vevelstad:e,vik:e,vikna:e,vindafjord:e,volda:e,voss:e,varoy:e,"xn--vry-yla5g":e,værøy:e,vagan:e,"xn--vgan-qoa":e,vågan:e,voagat:e,vagsoy:e,"xn--vgsy-qoa0j":e,vågsøy:e,vaga:e,"xn--vg-yiab":e,vågå:e,ostfold:[0,{valer:e}],"xn--stfold-9xa":[0,{"xn--vler-qoa":e}],østfold:[0,{våler:e}]}],np:a,nr:p,nu:e,nz:[1,{ac:e,co:e,cri:e,geek:e,gen:e,govt:e,health:e,iwi:e,kiwi:e,maori:e,mil:e,"xn--mori-qsa":e,māori:e,net:e,org:e,parliament:e,school:e}],om:[1,{co:e,com:e,edu:e,gov:e,med:e,museum:e,net:e,org:e,pro:e}],onion:e,org:e,pa:[1,{ac:e,gob:e,com:e,org:e,sld:e,edu:e,net:e,ing:e,abo:e,med:e, -nom:e}],pe:[1,{edu:e,gob:e,nom:e,mil:e,org:e,com:e,net:e}],pf:[1,{com:e,org:e,edu:e}],pg:a,ph:[1,{com:e,net:e,org:e,gov:e,edu:e,ngo:e,mil:e,i:e}],pk:[1,{com:e,net:e,edu:e,org:e,fam:e,biz:e,web:e,gov:e,gob:e,gok:e,gon:e,gop:e,gos:e,info:e}],pl:[1,{com:e,net:e,org:e,aid:e,agro:e,atm:e,auto:e,biz:e,edu:e,gmina:e,gsm:e,info:e,mail:e,miasta:e,media:e,mil:e,nieruchomosci:e,nom:e,pc:e,powiat:e,priv:e,realestate:e,rel:e,sex:e,shop:e,sklep:e,sos:e,szkola:e,targi:e,tm:e,tourism:e,travel:e,turystyka:e,gov:[1,{ap:e,griw:e,ic:e,is:e,kmpsp:e,konsulat:e,kppsp:e,kwp:e,kwpsp:e,mup:e,mw:e,oia:e,oirm:e,oke:e,oow:e,oschr:e,oum:e,pa:e,pinb:e,piw:e,po:e,pr:e,psp:e,psse:e,pup:e,rzgw:e,sa:e,sdn:e,sko:e,so:e,sr:e,starostwo:e,ug:e,ugim:e,um:e,umig:e,upow:e,uppo:e,us:e,uw:e,uzs:e,wif:e,wiih:e,winb:e,wios:e,witd:e,wiw:e,wkz:e,wsa:e,wskr:e,wsse:e,wuoz:e,wzmiuw:e,zp:e,zpisdn:e}],augustow:e,"babia-gora":e,bedzin:e,beskidy:e,bialowieza:e,bialystok:e,bielawa:e,bieszczady:e,boleslawiec:e,bydgoszcz:e,bytom:e,cieszyn:e,czeladz:e, +utsira:e,vadso:e,"xn--vads-jra":e,vadsø:e,cahcesuolo:e,"xn--hcesuolo-7ya35b":e,čáhcesuolo:e,vaksdal:e,valle:e,vang:e,vanylven:e,vardo:e,"xn--vard-jra":e,vardø:e,varggat:e,"xn--vrggt-xqad":e,várggát:e,vefsn:e,vaapste:e,vega:e,vegarshei:e,"xn--vegrshei-c0a":e,vegårshei:e,vennesla:e,verdal:e,verran:e,vestby:e,vestnes:e,"vestre-slidre":e,"vestre-toten":e,vestvagoy:e,"xn--vestvgy-ixa6o":e,vestvågøy:e,vevelstad:e,vik:e,vikna:e,vindafjord:e,volda:e,voss:e,varoy:e,"xn--vry-yla5g":e,værøy:e,vagan:e,"xn--vgan-qoa":e,vågan:e,voagat:e,vagsoy:e,"xn--vgsy-qoa0j":e,vågsøy:e,vaga:e,"xn--vg-yiab":e,vågå:e,ostfold:[0,{valer:e}],"xn--stfold-9xa":[0,{"xn--vler-qoa":e}],østfold:[0,{våler:e}]}],np:o,nr:m,nu:e,nz:[1,{ac:e,co:e,cri:e,geek:e,gen:e,govt:e,health:e,iwi:e,kiwi:e,maori:e,mil:e,"xn--mori-qsa":e,māori:e,net:e,org:e,parliament:e,school:e}],om:[1,{co:e,com:e,edu:e,gov:e,med:e,museum:e,net:e,org:e,pro:e}],onion:e,org:e,pa:[1,{ac:e,gob:e,com:e,org:e,sld:e,edu:e,net:e,ing:e,abo:e,med:e, +nom:e}],pe:[1,{edu:e,gob:e,nom:e,mil:e,org:e,com:e,net:e}],pf:[1,{com:e,org:e,edu:e}],pg:o,ph:[1,{com:e,net:e,org:e,gov:e,edu:e,ngo:e,mil:e,i:e}],pk:[1,{com:e,net:e,edu:e,org:e,fam:e,biz:e,web:e,gov:e,gob:e,gok:e,gon:e,gop:e,gos:e,info:e}],pl:[1,{com:e,net:e,org:e,aid:e,agro:e,atm:e,auto:e,biz:e,edu:e,gmina:e,gsm:e,info:e,mail:e,miasta:e,media:e,mil:e,nieruchomosci:e,nom:e,pc:e,powiat:e,priv:e,realestate:e,rel:e,sex:e,shop:e,sklep:e,sos:e,szkola:e,targi:e,tm:e,tourism:e,travel:e,turystyka:e,gov:[1,{ap:e,griw:e,ic:e,is:e,kmpsp:e,konsulat:e,kppsp:e,kwp:e,kwpsp:e,mup:e,mw:e,oia:e,oirm:e,oke:e,oow:e,oschr:e,oum:e,pa:e,pinb:e,piw:e,po:e,pr:e,psp:e,psse:e,pup:e,rzgw:e,sa:e,sdn:e,sko:e,so:e,sr:e,starostwo:e,ug:e,ugim:e,um:e,umig:e,upow:e,uppo:e,us:e,uw:e,uzs:e,wif:e,wiih:e,winb:e,wios:e,witd:e,wiw:e,wkz:e,wsa:e,wskr:e,wsse:e,wuoz:e,wzmiuw:e,zp:e,zpisdn:e}],augustow:e,"babia-gora":e,bedzin:e,beskidy:e,bialowieza:e,bialystok:e,bielawa:e,bieszczady:e,boleslawiec:e,bydgoszcz:e,bytom:e,cieszyn:e,czeladz:e, czest:e,dlugoleka:e,elblag:e,elk:e,glogow:e,gniezno:e,gorlice:e,grajewo:e,ilawa:e,jaworzno:e,"jelenia-gora":e,jgora:e,kalisz:e,"kazimierz-dolny":e,karpacz:e,kartuzy:e,kaszuby:e,katowice:e,kepno:e,ketrzyn:e,klodzko:e,kobierzyce:e,kolobrzeg:e,konin:e,konskowola:e,kutno:e,lapy:e,lebork:e,legnica:e,lezajsk:e,limanowa:e,lomza:e,lowicz:e,lubin:e,lukow:e,malbork:e,malopolska:e,mazowsze:e,mazury:e,mielec:e,mielno:e,mragowo:e,naklo:e,nowaruda:e,nysa:e,olawa:e,olecko:e,olkusz:e,olsztyn:e,opoczno:e,opole:e,ostroda:e,ostroleka:e,ostrowiec:e,ostrowwlkp:e,pila:e,pisz:e,podhale:e,podlasie:e,polkowice:e,pomorze:e,pomorskie:e,prochowice:e,pruszkow:e,przeworsk:e,pulawy:e,radom:e,"rawa-maz":e,rybnik:e,rzeszow:e,sanok:e,sejny:e,slask:e,slupsk:e,sosnowiec:e,"stalowa-wola":e,skoczow:e,starachowice:e,stargard:e,suwalki:e,swidnica:e,swiebodzin:e,swinoujscie:e,szczecin:e,szczytno:e,tarnobrzeg:e,tgory:e,turek:e,tychy:e,ustka:e,walbrzych:e,warmia:e,warszawa:e,waw:e,wegrow:e,wielun:e,wlocl:e,wloclawek:e,wodzislaw:e, -wolomin:e,wroclaw:e,zachpomor:e,zagan:e,zarow:e,zgora:e,zgorzelec:e}],pm:e,pn:[1,{gov:e,co:e,org:e,edu:e,net:e}],post:e,pr:[1,{com:e,net:e,org:e,gov:e,edu:e,isla:e,pro:e,biz:e,info:e,name:e,est:e,prof:e,ac:e}],pro:[1,{aaa:e,aca:e,acct:e,avocat:e,bar:e,cpa:e,eng:e,jur:e,law:e,med:e,recht:e}],ps:[1,{edu:e,gov:e,sec:e,plo:e,com:e,org:e,net:e}],pt:[1,{net:e,gov:e,org:e,edu:e,int:e,publ:e,com:e,nome:e}],pw:[1,{co:e,ne:e,or:e,ed:e,go:e,belau:e}],py:[1,{com:e,coop:e,edu:e,gov:e,mil:e,net:e,org:e}],qa:c,re:[1,{asso:e,com:e,nom:e}],ro:[1,{arts:e,com:e,firm:e,info:e,nom:e,nt:e,org:e,rec:e,store:e,tm:e,www:e}],rs:[1,{ac:e,co:e,edu:e,gov:e,in:e,org:e}],ru:e,rw:[1,{ac:e,co:e,coop:e,gov:e,mil:e,net:e,org:e}],sa:[1,{com:e,net:e,org:e,gov:e,med:e,pub:e,edu:e,sch:e}],sb:r,sc:r,sd:[1,{com:e,net:e,org:e,edu:e,med:e,tv:e,gov:e,info:e}],se:[1,{a:e,ac:e,b:e,bd:e,brand:e,c:e,d:e,e,f:e,fh:e,fhsk:e,fhv:e,g:e,h:e,i:e,k:e,komforb:e,kommunalforbund:e,komvux:e,l:e,lanbib:e,m:e,n:e,naturbruksgymn:e,o:e,org:e,p:e,parti:e, -pp:e,press:e,r:e,s:e,t:e,tm:e,u:e,w:e,x:e,y:e,z:e}],sg:[1,{com:e,net:e,org:e,gov:e,edu:e,per:e}],sh:[1,{com:e,net:e,gov:e,org:e,mil:e}],si:e,sj:e,sk:e,sl:r,sm:e,sn:[1,{art:e,com:e,edu:e,gouv:e,org:e,perso:e,univ:e}],so:[1,{com:e,edu:e,gov:e,me:e,net:e,org:e}],sr:e,ss:[1,{biz:e,com:e,edu:e,gov:e,me:e,net:e,org:e,sch:e}],st:[1,{co:e,com:e,consulado:e,edu:e,embaixada:e,mil:e,net:e,org:e,principe:e,saotome:e,store:e}],su:e,sv:[1,{com:e,edu:e,gob:e,org:e,red:e}],sx:n,sy:t,sz:[1,{co:e,ac:e,org:e}],tc:e,td:e,tel:e,tf:e,tg:e,th:[1,{ac:e,co:e,go:e,in:e,mi:e,net:e,or:e}],tj:[1,{ac:e,biz:e,co:e,com:e,edu:e,go:e,gov:e,int:e,mil:e,name:e,net:e,nic:e,org:e,test:e,web:e}],tk:e,tl:n,tm:[1,{com:e,co:e,org:e,net:e,nom:e,gov:e,mil:e,edu:e}],tn:[1,{com:e,ens:e,fin:e,gov:e,ind:e,info:e,intl:e,mincom:e,nat:e,net:e,org:e,perso:e,tourism:e}],to:t,tr:[1,{av:e,bbs:e,bel:e,biz:e,com:e,dr:e,edu:e,gen:e,gov:e,info:e,mil:e,k12:e,kep:e,name:e,net:e,org:e,pol:e,tel:e,tsk:e,tv:e,web:e,nc:n}],tt:[1,{co:e,com:e,org:e,net:e, +wolomin:e,wroclaw:e,zachpomor:e,zagan:e,zarow:e,zgora:e,zgorzelec:e}],pm:e,pn:[1,{gov:e,co:e,org:e,edu:e,net:e}],post:e,pr:[1,{com:e,net:e,org:e,gov:e,edu:e,isla:e,pro:e,biz:e,info:e,name:e,est:e,prof:e,ac:e}],pro:[1,{aaa:e,aca:e,acct:e,avocat:e,bar:e,cpa:e,eng:e,jur:e,law:e,med:e,recht:e}],ps:[1,{edu:e,gov:e,sec:e,plo:e,com:e,org:e,net:e}],pt:[1,{net:e,gov:e,org:e,edu:e,int:e,publ:e,com:e,nome:e}],pw:[1,{co:e,ne:e,or:e,ed:e,go:e,belau:e}],py:[1,{com:e,coop:e,edu:e,gov:e,mil:e,net:e,org:e}],qa:l,re:[1,{asso:e,com:e,nom:e}],ro:[1,{arts:e,com:e,firm:e,info:e,nom:e,nt:e,org:e,rec:e,store:e,tm:e,www:e}],rs:[1,{ac:e,co:e,edu:e,gov:e,in:e,org:e}],ru:e,rw:[1,{ac:e,co:e,coop:e,gov:e,mil:e,net:e,org:e}],sa:[1,{com:e,net:e,org:e,gov:e,med:e,pub:e,edu:e,sch:e}],sb:n,sc:n,sd:[1,{com:e,net:e,org:e,edu:e,med:e,tv:e,gov:e,info:e}],se:[1,{a:e,ac:e,b:e,bd:e,brand:e,c:e,d:e,e,f:e,fh:e,fhsk:e,fhv:e,g:e,h:e,i:e,k:e,komforb:e,kommunalforbund:e,komvux:e,l:e,lanbib:e,m:e,n:e,naturbruksgymn:e,o:e,org:e,p:e,parti:e, +pp:e,press:e,r:e,s:e,t:e,tm:e,u:e,w:e,x:e,y:e,z:e}],sg:[1,{com:e,net:e,org:e,gov:e,edu:e,per:e}],sh:[1,{com:e,net:e,gov:e,org:e,mil:e}],si:e,sj:e,sk:e,sl:n,sm:e,sn:[1,{art:e,com:e,edu:e,gouv:e,org:e,perso:e,univ:e}],so:[1,{com:e,edu:e,gov:e,me:e,net:e,org:e}],sr:e,ss:[1,{biz:e,com:e,edu:e,gov:e,me:e,net:e,org:e,sch:e}],st:[1,{co:e,com:e,consulado:e,edu:e,embaixada:e,mil:e,net:e,org:e,principe:e,saotome:e,store:e}],su:e,sv:[1,{com:e,edu:e,gob:e,org:e,red:e}],sx:r,sy:t,sz:[1,{co:e,ac:e,org:e}],tc:e,td:e,tel:e,tf:e,tg:e,th:[1,{ac:e,co:e,go:e,in:e,mi:e,net:e,or:e}],tj:[1,{ac:e,biz:e,co:e,com:e,edu:e,go:e,gov:e,int:e,mil:e,name:e,net:e,nic:e,org:e,test:e,web:e}],tk:e,tl:r,tm:[1,{com:e,co:e,org:e,net:e,nom:e,gov:e,mil:e,edu:e}],tn:[1,{com:e,ens:e,fin:e,gov:e,ind:e,info:e,intl:e,mincom:e,nat:e,net:e,org:e,perso:e,tourism:e}],to:t,tr:[1,{av:e,bbs:e,bel:e,biz:e,com:e,dr:e,edu:e,gen:e,gov:e,info:e,mil:e,k12:e,kep:e,name:e,net:e,org:e,pol:e,tel:e,tsk:e,tv:e,web:e,nc:r}],tt:[1,{co:e,com:e,org:e,net:e, biz:e,info:e,pro:e,int:e,coop:e,jobs:e,mobi:e,travel:e,museum:e,aero:e,name:e,gov:e,edu:e}],tv:e,tw:[1,{edu:e,gov:e,mil:e,com:e,net:e,org:e,idv:e,game:e,ebiz:e,club:e,"xn--zf0ao64a":e,網路:e,"xn--uc0atv":e,組織:e,"xn--czrw28b":e,商業:e}],tz:[1,{ac:e,co:e,go:e,hotel:e,info:e,me:e,mil:e,mobi:e,ne:e,or:e,sc:e,tv:e}],ua:[1,{com:e,edu:e,gov:e,in:e,net:e,org:e,cherkassy:e,cherkasy:e,chernigov:e,chernihiv:e,chernivtsi:e,chernovtsy:e,ck:e,cn:e,cr:e,crimea:e,cv:e,dn:e,dnepropetrovsk:e,dnipropetrovsk:e,donetsk:e,dp:e,if:e,"ivano-frankivsk":e,kh:e,kharkiv:e,kharkov:e,kherson:e,khmelnitskiy:e,khmelnytskyi:e,kiev:e,kirovograd:e,km:e,kr:e,kropyvnytskyi:e,krym:e,ks:e,kv:e,kyiv:e,lg:e,lt:e,lugansk:e,luhansk:e,lutsk:e,lv:e,lviv:e,mk:e,mykolaiv:e,nikolaev:e,od:e,odesa:e,odessa:e,pl:e,poltava:e,rivne:e,rovno:e,rv:e,sb:e,sebastopol:e,sevastopol:e,sm:e,sumy:e,te:e,ternopil:e,uz:e,uzhgorod:e,uzhhorod:e,vinnica:e,vinnytsia:e,vn:e,volyn:e,yalta:e,zakarpattia:e,zaporizhzhe:e,zaporizhzhia:e,zhitomir:e,zhytomyr:e, -zp:e,zt:e}],ug:[1,{co:e,or:e,ac:e,sc:e,go:e,ne:e,com:e,org:e}],uk:[1,{ac:e,co:e,gov:e,ltd:e,me:e,net:e,nhs:e,org:e,plc:e,police:e,sch:a}],us:[1,{dni:e,fed:e,isa:e,kids:e,nsn:e,ak:h,al:h,ar:h,as:h,az:h,ca:h,co:h,ct:h,dc:h,de:y,fl:h,ga:h,gu:h,hi:b,ia:h,id:h,il:h,in:h,ks:h,ky:h,la:h,ma:[1,{k12:[1,{pvt:e,chtr:e,paroch:e}],cc:e,lib:e}],md:h,me:h,mi:[1,{k12:e,cc:e,lib:e,"ann-arbor":e,cog:e,dst:e,eaton:e,gen:e,mus:e,tec:e,washtenaw:e}],mn:h,mo:h,ms:h,mt:h,nc:h,nd:b,ne:h,nh:h,nj:h,nm:h,nv:h,ny:h,oh:h,ok:h,or:h,pa:h,pr:h,ri:b,sc:h,sd:b,tn:h,tx:h,ut:h,vi:h,vt:h,va:h,wa:h,wi:h,wv:y,wy:h}],uy:[1,{com:e,edu:e,gub:e,mil:e,net:e,org:e}],uz:[1,{co:e,com:e,net:e,org:e}],va:e,vc:t,ve:[1,{arts:e,bib:e,co:e,com:e,e12:e,edu:e,firm:e,gob:e,gov:e,info:e,int:e,mil:e,net:e,nom:e,org:e,rar:e,rec:e,store:e,tec:e,web:e}],vg:e,vi:[1,{co:e,com:e,k12:e,net:e,org:e}],vn:[1,{ac:e,ai:e,biz:e,com:e,edu:e,gov:e,health:e,id:e,info:e,int:e,io:e,name:e,net:e,org:e,pro:e,angiang:e,bacgiang:e,backan:e,baclieu:e,bacninh:e,"bar\ -ia-vungtau":e,bentre:e,binhdinh:e,binhduong:e,binhphuoc:e,binhthuan:e,camau:e,cantho:e,caobang:e,daklak:e,daknong:e,danang:e,dienbien:e,dongnai:e,dongthap:e,gialai:e,hagiang:e,haiduong:e,haiphong:e,hanam:e,hanoi:e,hatinh:e,haugiang:e,hoabinh:e,hungyen:e,khanhhoa:e,kiengiang:e,kontum:e,laichau:e,lamdong:e,langson:e,laocai:e,longan:e,namdinh:e,nghean:e,ninhbinh:e,ninhthuan:e,phutho:e,phuyen:e,quangbinh:e,quangnam:e,quangngai:e,quangninh:e,quangtri:e,soctrang:e,sonla:e,tayninh:e,thaibinh:e,thainguyen:e,thanhhoa:e,thanhphohochiminh:e,thuathienhue:e,tiengiang:e,travinh:e,tuyenquang:e,vinhlong:e,vinhphuc:e,yenbai:e}],vu:o,wf:e,ws:r,yt:e,"xn--mgbaam7a8h":e,امارات:e,"xn--y9a3aq":e,հայ:e,"xn--54b7fta0cc":e,বাংলা:e,"xn--90ae":e,бг:e,"xn--mgbcpq6gpa1a":e,البحرين:e,"xn--90ais":e,бел:e,"xn--fiqs8s":e,中国:e,"xn--fiqz9s":e,中國:e,"xn--lgbbat1ad8j":e,الجزائر:e,"xn--wgbh1c":e,مصر:e,"xn--e1a4c":e,ею:e,"xn--qxa6a":e,ευ:e,"xn--mgbah1a3hjkrd":e,موريتانيا:e, +zp:e,zt:e}],ug:[1,{co:e,or:e,ac:e,sc:e,go:e,ne:e,com:e,org:e}],uk:[1,{ac:e,co:e,gov:e,ltd:e,me:e,net:e,nhs:e,org:e,plc:e,police:e,sch:o}],us:[1,{dni:e,fed:e,isa:e,kids:e,nsn:e,ak:h,al:h,ar:h,as:h,az:h,ca:h,co:h,ct:h,dc:h,de:y,fl:h,ga:h,gu:h,hi:v,ia:h,id:h,il:h,in:h,ks:h,ky:h,la:h,ma:[1,{k12:[1,{pvt:e,chtr:e,paroch:e}],cc:e,lib:e}],md:h,me:h,mi:[1,{k12:e,cc:e,lib:e,"ann-arbor":e,cog:e,dst:e,eaton:e,gen:e,mus:e,tec:e,washtenaw:e}],mn:h,mo:h,ms:h,mt:h,nc:h,nd:v,ne:h,nh:h,nj:h,nm:h,nv:h,ny:h,oh:h,ok:h,or:h,pa:h,pr:h,ri:v,sc:h,sd:v,tn:h,tx:h,ut:h,vi:h,vt:h,va:h,wa:h,wi:h,wv:y,wy:h}],uy:[1,{com:e,edu:e,gub:e,mil:e,net:e,org:e}],uz:[1,{co:e,com:e,net:e,org:e}],va:e,vc:t,ve:[1,{arts:e,bib:e,co:e,com:e,e12:e,edu:e,firm:e,gob:e,gov:e,info:e,int:e,mil:e,net:e,nom:e,org:e,rar:e,rec:e,store:e,tec:e,web:e}],vg:e,vi:[1,{co:e,com:e,k12:e,net:e,org:e}],vn:[1,{ac:e,ai:e,biz:e,com:e,edu:e,gov:e,health:e,id:e,info:e,int:e,io:e,name:e,net:e,org:e,pro:e,angiang:e,bacgiang:e,backan:e,baclieu:e,bacninh:e,"bar\ +ia-vungtau":e,bentre:e,binhdinh:e,binhduong:e,binhphuoc:e,binhthuan:e,camau:e,cantho:e,caobang:e,daklak:e,daknong:e,danang:e,dienbien:e,dongnai:e,dongthap:e,gialai:e,hagiang:e,haiduong:e,haiphong:e,hanam:e,hanoi:e,hatinh:e,haugiang:e,hoabinh:e,hungyen:e,khanhhoa:e,kiengiang:e,kontum:e,laichau:e,lamdong:e,langson:e,laocai:e,longan:e,namdinh:e,nghean:e,ninhbinh:e,ninhthuan:e,phutho:e,phuyen:e,quangbinh:e,quangnam:e,quangngai:e,quangninh:e,quangtri:e,soctrang:e,sonla:e,tayninh:e,thaibinh:e,thainguyen:e,thanhhoa:e,thanhphohochiminh:e,thuathienhue:e,tiengiang:e,travinh:e,tuyenquang:e,vinhlong:e,vinhphuc:e,yenbai:e}],vu:i,wf:e,ws:n,yt:e,"xn--mgbaam7a8h":e,امارات:e,"xn--y9a3aq":e,հայ:e,"xn--54b7fta0cc":e,বাংলা:e,"xn--90ae":e,бг:e,"xn--mgbcpq6gpa1a":e,البحرين:e,"xn--90ais":e,бел:e,"xn--fiqs8s":e,中国:e,"xn--fiqz9s":e,中國:e,"xn--lgbbat1ad8j":e,الجزائر:e,"xn--wgbh1c":e,مصر:e,"xn--e1a4c":e,ею:e,"xn--qxa6a":e,ευ:e,"xn--mgbah1a3hjkrd":e,موريتانيا:e, "xn--node":e,გე:e,"xn--qxam":e,ελ:e,"xn--j6w193g":[1,{"xn--55qx5d":e,"xn--wcvs22d":e,"xn--mxtq1m":e,"xn--gmqw5a":e,"xn--od0alg":e,"xn--uc0atv":e}],香港:[1,{公司:e,教育:e,政府:e,個人:e,網絡:e,組織:e}],"xn--2scrj9c":e,ಭಾರತ:e,"xn--3hcrj9c":e,ଭାରତ:e,"xn--45br5cyl":e,ভাৰত:e,"xn--h2breg3eve":e,भारतम्:e,"xn--h2brj9c8c":e,भारोत:e,"xn--mgbgu82a":e,ڀارت:e,"xn--rvc1e0am3e":e,ഭാരതം:e,"xn--h2brj9c":e,भारत:e,"xn--mgbbh1a":e,بارت:e,"xn--mgbbh1a71e":e,بھارت:e,"xn--fpcrj9c3d":e,భారత్:e,"xn--gecrj9c":e,ભારત:e,"xn--s9brj9c":e,ਭਾਰਤ:e,"xn--45brj9c":e,ভারত:e,"xn--xkc2dl3a5ee0h":e,இந்தியா:e,"xn--mgba3a4f16a":e,ایران:e,"xn--mgba3a4fra":e,ايران:e,"xn--mgbtx2b":e,عراق:e,"xn--mgbayh7gpa":e,الاردن:e,"xn--3e0b707e":e,한국:e,"xn--80ao21a":e,қаз:e,"xn--q7ce6a":e,ລາວ:e,"xn--fzc2c9e2c":e,ලංකා:e,"xn--xkc2al3hye2a":e,இலங்கை:e,"\ xn--mgbc0a9azcg":e,المغرب:e,"xn--d1alf":e,мкд:e,"xn--l1acc":e,мон:e,"xn--mix891f":e,澳門:e,"xn--mix082f":e,澳门:e,"xn--mgbx4cd0ab":e,مليسيا:e,"xn--mgb9awbf":e,عمان:e,"xn--mgbai9azgqp6j":e,پاکستان:e,"xn--mgbai9a5eva00b":e,پاكستان:e,"xn--ygbi2ammx":e,فلسطين:e,"xn--90a3ac":[1,{"xn--o1ac":e,"xn--c1avg":e,"xn--90azh":e,"xn--d1at":e,"xn--o1ach":e,"xn--80au":e}],срб:[1,{пр:e,орг:e,обр:e,од:e,упр:e,ак:e}],"xn--p1ai":e,рф:e,"xn--wgbl6a":e,قطر:e,"xn--mgberp4a5d4ar":e,السعودية:e,"xn--mgberp4a5d4a87g":e,السعودیة:e,"xn--mgbqly7c0a67fbc":e,السعودیۃ:e,"xn--mgbqly7cvafr":e,السعوديه:e,"xn--mgbpl2fh":e,سودان:e,"xn--yfro4i67o":e,新加坡:e,"xn--clchc0ea0b2g2a9gcd":e,சிங்கப்பூர்:e,"xn--ogbpf8fl":e,سورية:e,"xn--mgbtf8fl":e,سوريا:e,"xn--o3cw4h":[1,{"xn--12c1fe0br":e,"xn--12co0c3b4eva":e,"xn--h3cuzk1di":e,"xn--o3cyx2a":e,"xn--m3ch0j3a":e,"xn--12cfi8ixb8l":e}],ไทย:[1, {ศึกษา:e,ธุรกิจ:e,รัฐบาล:e,ทหาร:e,เน็ต:e,องค์กร:e}],"xn--pgbs0dh":e,تونس:e,"xn--kpry57d":e,台灣:e,"xn--kprw13d":e,台湾:e,"xn--nnx388a":e,臺灣:e,"xn--j1amh":e,укр:e,"xn--mgb2ddes":e,اليمن:e,xxx:e,ye:t,za:[0,{ac:e,agric:e,alt:e,co:e,edu:e,gov:e,grondar:e,law:e,mil:e,net:e,ngo:e,nic:e,nis:e,nom:e,org:e,school:e,tm:e,web:e}],zm:[1,{ac:e,biz:e,co:e,com:e,edu:e,gov:e,info:e,mil:e,net:e,org:e,sch:e}],zw:[1,{ac:e,co:e,gov:e,mil:e,org:e}],aaa:e,aarp:e,abb:e,abbott:e,abbvie:e,abc:e,able:e,abogado:e,abudhabi:e,academy:e,accenture:e,accountant:e,accountants:e,aco:e,actor:e,ads:e,adult:e,aeg:e,aetna:e,afl:e,africa:e,agakhan:e,agency:e,aig:e,airbus:e,airforce:e,airtel:e,akdn:e,alibaba:e,alipay:e,allfinanz:e,allstate:e,ally:e,alsace:e,alstom:e,amazon:e,americanexpress:e,americanfamily:e,amex:e,amfam:e,amica:e,amsterdam:e,analytics:e,android:e,anquan:e,anz:e,aol:e,apartments:e,app:e,apple:e,aquarelle:e,arab:e,aramco:e,archi:e, @@ -666,69 +944,69 @@ sucks:e,supplies:e,supply:e,support:e,surf:e,surgery:e,suzuki:e,swatch:e,swiss:e,sydney:e,systems:e,tab:e,taipei:e,talk:e,taobao:e,target:e,tatamotors:e,tatar:e,tattoo:e,tax:e,taxi:e,tci:e,tdk:e,team:e,tech:e,technology:e,temasek:e,tennis:e,teva:e,thd:e,theater:e,theatre:e,tiaa:e,tickets:e,tienda:e,tips:e,tires:e,tirol:e,tjmaxx:e,tjx:e,tkmaxx:e,tmall:e,today:e,tokyo:e,tools:e,top:e,toray:e,toshiba:e,total:e,tours:e,town:e,toyota:e,toys:e,trade:e,trading:e,training:e,travel:e,travelers:e,travelersinsurance:e,trust:e,trv:e,tube:e,tui:e,tunes:e,tushu:e,tvs:e,ubank:e,ubs:e,unicom:e,university:e,uno:e,uol:e,ups:e,vacations:e,vana:e,vanguard:e,vegas:e,ventures:e,verisign:e,versicherung:e,vet:e,viajes:e,video:e,vig:e,viking:e,villas:e,vin:e,vip:e,virgin:e,visa:e,vision:e,viva:e,vivo:e,vlaanderen:e,vodka:e,volvo:e,vote:e,voting:e,voto:e,voyage:e,wales:e,walmart:e,walter:e,wang:e,wanggou:e,watch:e,watches:e,weather:e,weatherchannel:e,webcam:e,weber:e,website:e,wed:e,wedding:e,weibo:e,weir:e,whoswho:e, wien:e,wiki:e,williamhill:e,win:e,windows:e,wine:e,winners:e,wme:e,wolterskluwer:e,woodside:e,work:e,works:e,world:e,wow:e,wtc:e,wtf:e,xbox:e,xerox:e,xihuan:e,xin:e,"xn--11b4c3d":e,कॉम:e,"xn--1ck2e1b":e,セール:e,"xn--1qqw23a":e,佛山:e,"xn--30rr7y":e,慈善:e,"xn--3bst00m":e,集团:e,"xn--3ds443g":e,在线:e,"xn--3pxu8k":e,点看:e,"xn--42c2d9a":e,คอม:e,"xn--45q11c":e,八卦:e,"xn--4gbrim":e,موقع:e,"xn--55qw42g":e,公益:e,"xn--55qx5d":e,公司:e,"xn--5su34j936bgsg":e,香格里拉:e,"xn--5tzm5g":e,网站:e,"xn--6frz82g":e,移动:e,"xn--6qq986b3xl":e,我爱你:e,"xn--80adxhks":e,москва:e,"xn--80aqecdr1a":e,католик:e,"xn--80asehdb":e,онлайн:e,"xn--80aswg":e,сайт:e,"xn--8y0a063a":e,联通:e,"xn--9dbq2a":e,קום:e,"xn--9et52u":e,时尚:e,"xn--9krt00a":e,微博:e,"xn--b4w605ferd":e,淡马锡:e,"xn--bck1b9a5dre4c":e,ファッション:e,"xn--c1avg":e,орг:e,"xn--c2br7g":e,नेट:e,"xn--cck2b3b":e,ストア:e,"xn--cckwcxetd":e,アマゾン:e,"x\ n--cg4bki":e,삼성:e,"xn--czr694b":e,商标:e,"xn--czrs0t":e,商店:e,"xn--czru2d":e,商城:e,"xn--d1acj3b":e,дети:e,"xn--eckvdtc9d":e,ポイント:e,"xn--efvy88h":e,新闻:e,"xn--fct429k":e,家電:e,"xn--fhbei":e,كوم:e,"xn--fiq228c5hs":e,中文网:e,"xn--fiq64b":e,中信:e,"xn--fjq720a":e,娱乐:e,"xn--flw351e":e,谷歌:e,"xn--fzys8d69uvgm":e,電訊盈科:e,"xn--g2xx48c":e,购物:e,"xn--gckr3f0f":e,クラウド:e,"xn--gk3at1e":e,通販:e,"xn--hxt814e":e,网店:e,"xn--i1b6b1a6a2e":e,संगठन:e,"xn--imr513n":e,餐厅:e,"xn--io0a7i":e,网络:e,"xn--j1aef":e,ком:e,"xn--jlq480n2rg":e,亚马逊:e,"xn--jvr189m":e,食品:e,"xn--kcrx77d1x4a":e,飞利浦:e,"xn--kput3i":e,手机:e,"xn--mgba3a3ejt":e,ارامكو:e,"xn--mgba7c0bbn0a":e,العليان:e,"xn--mgbab2bd":e,بازار:e,"xn--mgbca7dzdo":e,ابوظبي:e,"xn--mgbi4ecexp":e,كاثوليك:e,"xn--mgbt3dhd":e,همراه:e,"xn--mk1bu44c":e,닷컴:e,"xn--mxtq1m":e,政府:e,"xn--ngbc5azd":e,شبكة:e,"xn--ngbe9e0a":e,بيتك:e, -"xn--ngbrx":e,عرب:e,"xn--nqv7f":e,机构:e,"xn--nqv7fs00ema":e,组织机构:e,"xn--nyqy26a":e,健康:e,"xn--otu796d":e,招聘:e,"xn--p1acf":e,рус:e,"xn--pssy2u":e,大拿:e,"xn--q9jyb4c":e,みんな:e,"xn--qcka1pmc":e,グーグル:e,"xn--rhqv96g":e,世界:e,"xn--rovu88b":e,書籍:e,"xn--ses554g":e,网址:e,"xn--t60b56a":e,닷넷:e,"xn--tckwe":e,コム:e,"xn--tiq49xqyj":e,天主教:e,"xn--unup4y":e,游戏:e,"xn--vermgensberater-ctb":e,vermögensberater:e,"xn--vermgensberatung-pwb":e,vermögensberatung:e,"xn--vhquv":e,企业:e,"xn--vuq861b":e,信息:e,"xn--w4r85el8fhu5dnra":e,嘉里大酒店:e,"xn--w4rs40l":e,嘉里:e,"xn--xhq521b":e,广东:e,"xn--zfr164b":e,政务:e,xyz:e,yachts:e,yahoo:e,yamaxun:e,yandex:e,yodobashi:e,yoga:e,yokohama:e,you:e,youtube:e,yun:e,zappos:e,zara:e,zero:e,zip:e,zone:e,zuerich:e}]}()});function oP(e,t,r){let n=null,i=t;for(;i!==void 0&&(i[0]===1&&(n={index:r+1}),r!==-1);){let a=i[1];i=Object.prototype.hasOwnProperty.call(a,e[r])?a[e[r]]:a["*"],r-=1}return n}function nw(e,t,r){var n;if(n1(e,t,r))return;let i=e.split("."),a=oP(i,nP,i.length-1);if(a!==null){r.publicSuffix=i.slice(a.index+1).join(".");return}let o=oP(i,iP,i.length-1);if(o!==null){r.publicSuffix=i.slice(o.index).join(".");return}r.publicSuffix=(n=i[i.length-1])!==null&&n!==void 0?n:null}var sP=g(()=>{d();rw();aP();s(oP,"lookupInTrie");s(nw,"suffixLookup")});function lP(e,t={}){return ew(uP),tw(e,3,nw,t,uP).domain}var uP,cP=g(()=>{d();rw();sP();uP=Qb();s(lP,"getDomain")});var tt,oie,dP,pP,z,sie,zt=g(()=>{"use strict";d();R();tt={didntCollectScreenshots:"Chrome didn't collect any screenshots during the page load. Please make sure there is content visible on the page, and then try re-running Lighthouse. ({errorCode})",badTraceRecording:"Something went wrong with recording the trace over your page load. Please run Lighthouse again. ({errorCode})",noFcp:"The page did not paint any content. Please ensure you keep the browser window in the foreground during the load and try again. ({errorCode})",noLcp:"The page did not display content that qualifies as a Largest Contentful Paint (LCP). Ensure the page has a valid LCP element and then try again. ({errorCode})",pageLoadTookTooLong:"Your page took too long to load. Please follow the opportunities in the report to reduce your page load time, and then try re-running Lighthouse. ({errorCode})",pageLoadFailed:"Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL an\ +"xn--ngbrx":e,عرب:e,"xn--nqv7f":e,机构:e,"xn--nqv7fs00ema":e,组织机构:e,"xn--nyqy26a":e,健康:e,"xn--otu796d":e,招聘:e,"xn--p1acf":e,рус:e,"xn--pssy2u":e,大拿:e,"xn--q9jyb4c":e,みんな:e,"xn--qcka1pmc":e,グーグル:e,"xn--rhqv96g":e,世界:e,"xn--rovu88b":e,書籍:e,"xn--ses554g":e,网址:e,"xn--t60b56a":e,닷넷:e,"xn--tckwe":e,コム:e,"xn--tiq49xqyj":e,天主教:e,"xn--unup4y":e,游戏:e,"xn--vermgensberater-ctb":e,vermögensberater:e,"xn--vermgensberatung-pwb":e,vermögensberatung:e,"xn--vhquv":e,企业:e,"xn--vuq861b":e,信息:e,"xn--w4r85el8fhu5dnra":e,嘉里大酒店:e,"xn--w4rs40l":e,嘉里:e,"xn--xhq521b":e,广东:e,"xn--zfr164b":e,政务:e,xyz:e,yachts:e,yahoo:e,yamaxun:e,yandex:e,yodobashi:e,yoga:e,yokohama:e,you:e,youtube:e,yun:e,zappos:e,zara:e,zero:e,zip:e,zone:e,zuerich:e}]}()});function z8(e,t,n){let r=null,a=t;for(;a!==void 0&&(a[0]===1&&(r={index:n+1}),n!==-1);){let o=a[1];a=Object.prototype.hasOwnProperty.call(o,e[n])?o[e[n]]:o["*"],n-=1}return r}function Pw(e,t,n){var r;if(c1(e,t,n))return;let a=e.split("."),o=z8(a,B8,a.length-1);if(o!==null){n.publicSuffix=a.slice(o.index+1).join(".");return}let i=z8(a,U8,a.length-1);if(i!==null){n.publicSuffix=a.slice(i.index).join(".");return}n.publicSuffix=(r=a[a.length-1])!==null&&r!==void 0?r:null}var q8=g(()=>{d();Lw();j8();s(z8,"lookupInTrie");s(Pw,"suffixLookup")});function W8(e,t={}){return Nw(H8),Ow(e,3,Pw,t,H8).domain}var H8,G8=g(()=>{d();Lw();q8();H8=Mw();s(W8,"getDomain")});var at,jie,V8,$8,q,zie,Wt=g(()=>{"use strict";d();A();at={didntCollectScreenshots:"Chrome didn't collect any screenshots during the page load. Please make sure there is content visible on the page, and then try re-running Lighthouse. ({errorCode})",badTraceRecording:"Something went wrong with recording the trace over your page load. Please run Lighthouse again. ({errorCode})",noFcp:"The page did not paint any content. Please ensure you keep the browser window in the foreground during the load and try again. ({errorCode})",noLcp:"The page did not display content that qualifies as a Largest Contentful Paint (LCP). Ensure the page has a valid LCP element and then try again. ({errorCode})",pageLoadTookTooLong:"Your page took too long to load. Please follow the opportunities in the report to reduce your page load time, and then try re-running Lighthouse. ({errorCode})",pageLoadFailed:"Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL an\ d that the server is properly responding to all requests.",pageLoadFailedWithStatusCode:"Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Status code: {statusCode})",pageLoadFailedWithDetails:"Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Details: {errorDetails})",pageLoadFailedInsecure:"The URL you have provided does not have a valid security certificate. {securityMessages}",pageLoadFailedInterstitial:"Chrome prevented page load with an interstitial. Make sure you are testing the correct URL and that the server is properly responding to all requests.",internalChromeError:"An internal Chrome error occurred. Please restart Chrome and try re-running Lighthouse.",requestContentTimeout:"Fetching resource content has exceeded the allotted time",notHtml:"The \ -page provided is not HTML (served as MIME type {mimeType}).",urlInvalid:"The URL you have provided appears to be invalid.",protocolTimeout:"Waiting for DevTools protocol response has exceeded the allotted time. (Method: {protocolMethod})",dnsFailure:"DNS servers could not resolve the provided domain.",pageLoadFailedHung:"Lighthouse was unable to reliably load the URL you requested because the page stopped responding.",criTimeout:"Timeout waiting for initial Debugger Protocol connection.",missingRequiredArtifact:"Required {artifactName} gatherer did not run.",erroredRequiredArtifact:"Required {artifactName} gatherer encountered an error: {errorMessage}",oldChromeDoesNotSupportFeature:"This version of Chrome is too old to support '{featureName}'. Use a newer version to see full results.",targetCrashed:"Browser tab has unexpectedly crashed."},oie=D("core/lib/lh-error.js",tt),dP="__LighthouseErrorSentinel",pP="__ErrorSentinel",z=class e extends Error{static{s(this,"LighthouseError")}constructor(t,r,n){ -super(t.code,n),this.name="LighthouseError",this.code=t.code,this.friendlyMessage=oie(t.message,{errorCode:this.code,...r}),this.lhrRuntimeError=!!t.lhrRuntimeError,r&&Object.assign(this,r),Error.captureStackTrace(this,e)}static fromProtocolMessage(t,r){let n=Object.values(e.errors).filter(o=>o.pattern).find(o=>o.pattern&&o.pattern.test(r.message));if(n)return new e(n);let i=`(${t}): ${r.message}`;r.data&&(i+=` (${r.data})`);let a=new Error(`Protocol error ${i}`);return Object.assign(a,{protocolMethod:t,protocolError:r.message})}static stringifyReplacer(t){if(t instanceof e){let{name:r,code:n,message:i,friendlyMessage:a,lhrRuntimeError:o,stack:u,cause:l,...c}=t;return{sentinel:dP,code:n,stack:u,cause:l,properties:c}}if(t instanceof Error){let{message:r,stack:n,cause:i}=t,a=t.code;return{sentinel:pP,message:r,code:a,stack:n,cause:i}}throw new Error("Invalid value for LighthouseError stringification")}static parseReviver(t,r){if(typeof r=="object"&&r!==null){if(r.sentinel===dP){let{code:n, -stack:i,cause:a,properties:o}=r,u=e.errors[n],l=new e(u,o,{cause:a});return l.stack=i,l}if(r.sentinel===pP){let{message:n,code:i,stack:a,cause:o}=r,u=o?{cause:o}:void 0,l=new Error(n,u);return Object.assign(l,{code:i,stack:a}),l}}return r}},sie={NO_SPEEDLINE_FRAMES:{code:"NO_SPEEDLINE_FRAMES",message:tt.didntCollectScreenshots,lhrRuntimeError:!0},SPEEDINDEX_OF_ZERO:{code:"SPEEDINDEX_OF_ZERO",message:tt.didntCollectScreenshots,lhrRuntimeError:!0},NO_SCREENSHOTS:{code:"NO_SCREENSHOTS",message:tt.didntCollectScreenshots,lhrRuntimeError:!0},INVALID_SPEEDLINE:{code:"INVALID_SPEEDLINE",message:tt.didntCollectScreenshots,lhrRuntimeError:!0},NO_TRACING_STARTED:{code:"NO_TRACING_STARTED",message:tt.badTraceRecording,lhrRuntimeError:!0},NO_RESOURCE_REQUEST:{code:"NO_RESOURCE_REQUEST",message:tt.badTraceRecording,lhrRuntimeError:!0},NO_NAVSTART:{code:"NO_NAVSTART",message:tt.badTraceRecording,lhrRuntimeError:!0},NO_FCP:{code:"NO_FCP",message:tt.noFcp,lhrRuntimeError:!0},NO_DCL:{code:"NO_DCL",message:tt. -badTraceRecording,lhrRuntimeError:!0},NO_FMP:{code:"NO_FMP",message:tt.badTraceRecording},NO_LCP:{code:"NO_LCP",message:tt.noLcp},NO_LCP_ALL_FRAMES:{code:"NO_LCP_ALL_FRAMES",message:tt.noLcp},UNSUPPORTED_OLD_CHROME:{code:"UNSUPPORTED_OLD_CHROME",message:tt.oldChromeDoesNotSupportFeature},NO_TTI_CPU_IDLE_PERIOD:{code:"NO_TTI_CPU_IDLE_PERIOD",message:tt.pageLoadTookTooLong},NO_TTI_NETWORK_IDLE_PERIOD:{code:"NO_TTI_NETWORK_IDLE_PERIOD",message:tt.pageLoadTookTooLong},NO_DOCUMENT_REQUEST:{code:"NO_DOCUMENT_REQUEST",message:tt.pageLoadFailed,lhrRuntimeError:!0},FAILED_DOCUMENT_REQUEST:{code:"FAILED_DOCUMENT_REQUEST",message:tt.pageLoadFailedWithDetails,lhrRuntimeError:!0},ERRORED_DOCUMENT_REQUEST:{code:"ERRORED_DOCUMENT_REQUEST",message:tt.pageLoadFailedWithStatusCode,lhrRuntimeError:!0},INSECURE_DOCUMENT_REQUEST:{code:"INSECURE_DOCUMENT_REQUEST",message:tt.pageLoadFailedInsecure,lhrRuntimeError:!0},CHROME_INTERSTITIAL_ERROR:{code:"CHROME_INTERSTITIAL_ERROR",message:tt.pageLoadFailedInterstitial, -lhrRuntimeError:!0},PAGE_HUNG:{code:"PAGE_HUNG",message:tt.pageLoadFailedHung,lhrRuntimeError:!0},NOT_HTML:{code:"NOT_HTML",message:tt.notHtml,lhrRuntimeError:!0},TRACING_ALREADY_STARTED:{code:"TRACING_ALREADY_STARTED",message:tt.internalChromeError,pattern:/Tracing.*started/,lhrRuntimeError:!0},PARSING_PROBLEM:{code:"PARSING_PROBLEM",message:tt.internalChromeError,pattern:/Parsing problem/,lhrRuntimeError:!0},READ_FAILED:{code:"READ_FAILED",message:tt.internalChromeError,pattern:/Read failed/,lhrRuntimeError:!0},INVALID_URL:{code:"INVALID_URL",message:tt.urlInvalid},PROTOCOL_TIMEOUT:{code:"PROTOCOL_TIMEOUT",message:tt.protocolTimeout,lhrRuntimeError:!0},DNS_FAILURE:{code:"DNS_FAILURE",message:tt.dnsFailure,lhrRuntimeError:!0},CRI_TIMEOUT:{code:"CRI_TIMEOUT",message:tt.criTimeout,lhrRuntimeError:!0},MISSING_REQUIRED_ARTIFACT:{code:"MISSING_REQUIRED_ARTIFACT",message:tt.missingRequiredArtifact},ERRORED_REQUIRED_ARTIFACT:{code:"ERRORED_REQUIRED_ARTIFACT",message:tt.erroredRequiredArtifact}, -TARGET_CRASHED:{code:"TARGET_CRASHED",message:tt.targetCrashed,lhrRuntimeError:!0}};z.errors=sie;z.NO_ERROR="NO_ERROR";z.UNKNOWN_ERROR="UNKNOWN_ERROR"});function pie(e){return!e||!e.startsWith("chrome://")?e:(e.endsWith("/")&&(e=e.replace(/\/$/,"")),e.replace(/^chrome:\/\/chrome\//,"chrome://"))}var uie,lie,cie,die,i1,J,ut=g(()=>{"use strict";d();cP();Pr();zt();uie=["https:","http:","chrome:","chrome-extension:"],lie=["data","https","wss","blob","chrome","chrome-extension","about","filesystem"],cie=["localhost","127.0.0.1"],die=["blob","data","intent","file","filesystem","chrome-extension"];s(pie,"rewriteChromeInternalUrl");i1=class e{static{s(this,"UrlUtils")}static isValid(t){try{return new URL(t),!0}catch{return!1}}static hostsMatch(t,r){try{return new URL(t).host===new URL(r).host}catch{return!1}}static originsMatch(t,r){try{return new URL(t).origin===new URL(r).origin}catch{return!1}}static getOrigin(t){try{let r=new URL(t);return r.protocol==="chrome-extension:"?Me.getChromeExtensionOrigin(t):r.host&&r.origin||null}catch{return null}}static getRootDomain(t){let r=Me.createOrReturnURL(t);return lP(r.href)||r.hostname}static rootDomainsMatch(t,r){ -let n,i;try{n=Me.createOrReturnURL(t),i=Me.createOrReturnURL(r)}catch{return!1}if(!n.hostname||!i.hostname)return!1;let a=e.getRootDomain(n),o=e.getRootDomain(i);return a===o}static getURLDisplayName(t,r){return Me.getURLDisplayName(new URL(t),r)}static elideDataURI(t){try{return new URL(t).protocol==="data:"?Me.truncate(t,100):t}catch{return t}}static equalWithExcludedFragments(t,r){[t,r]=[t,r].map(pie);try{let n=new URL(t);n.hash="";let i=new URL(r);return i.hash="",n.href===i.href}catch{return!1}}static isProtocolAllowed(t){try{let r=new URL(t);return uie.includes(r.protocol)}catch{return!1}}static isLikeLocalhost(t){return cie.includes(t)||t.endsWith(".localhost")}static isSecureScheme(t){return lie.includes(t)}static isNonNetworkProtocol(t){let r=t.includes(":")?t.slice(0,t.indexOf(":")):t;return die.includes(r)}static guessMimeType(t){let r;try{r=new URL(t)}catch{return}if(r.protocol==="data:"){let a=r.pathname.match(/^(image\/(png|jpeg|svg\+xml|webp|gif|avif))[;,]/);return a?a[1]: -void 0}let n=r.pathname.toLowerCase().match(/\.(png|jpeg|jpg|svg|webp|gif|avif)$/);if(!n)return;let i=n[1];return i==="svg"?"image/svg+xml":i==="jpg"?"image/jpeg":`image/${i}`}static normalizeUrl(t){if(t&&this.isValid(t)&&this.isProtocolAllowed(t))return new URL(t).href;throw new z(z.errors.INVALID_URL)}};i1.INVALID_URL_DEBUG_STRING="Lighthouse was unable to determine the URL of some script executions. It's possible a Chrome extension or other eval'd code is the source.";J=i1});var mP,fP,hP,gP,yP,vP,bP,a1,K,Ot=g(()=>{"use strict";d();or();It();ut();mP="X-TCPMs",fP="X-SSLMs",hP="X-RequestMs",gP="X-ResponseMs",yP="X-TotalMs",vP="X-TotalFetchedSize",bP="X-ProtocolIsH2",a1={XHR:"XHR",Fetch:"Fetch",EventSource:"EventSource",Script:"Script",Stylesheet:"Stylesheet",Image:"Image",Media:"Media",Font:"Font",Document:"Document",TextTrack:"TextTrack",WebSocket:"WebSocket",Other:"Other",Manifest:"Manifest",SignedExchange:"SignedExchange",Ping:"Ping",Preflight:"Preflight",CSPViolationReport:"CSPViolationReport",Prefetch:"Prefetch"},K=class e{static{s(this,"NetworkRequest")}constructor(){this.requestId="",this.connectionId=0,this.connectionReused=!1,this.url="",this.protocol="",this.isSecure=!1,this.isValid=!1,this.parsedURL={scheme:""},this.documentURL="",this.rendererStartTime=-1,this.networkRequestTime=-1,this.responseHeadersEndTime=-1,this.networkEndTime=-1,this.transferSize=0,this.responseHeadersTransferSize=0,this.resourceSize=0,this.fromDiskCache=!1,this.fromMemoryCache= -!1,this.fromPrefetchCache=!1,this.lrStatistics=void 0,this.finished=!1,this.requestMethod="",this.statusCode=-1,this.redirectSource=void 0,this.redirectDestination=void 0,this.redirects=void 0,this.failed=!1,this.localizedFailDescription="",this.initiator={type:"other"},this.timing=void 0,this.resourceType=void 0,this.mimeType="",this.priority="Low",this.initiatorRequest=void 0,this.responseHeaders=[],this.responseHeadersText="",this.fetchedViaServiceWorker=!1,this.frameId="",this.sessionId=void 0,this.sessionTargetType=void 0,this.fromWorker=!1,this.isLinkPreload=!1}hasErrorStatusCode(){return this.statusCode>=400}setInitiatorRequest(t){this.initiatorRequest=t}onRequestWillBeSent(t){this.requestId=t.requestId;let r;try{r=new URL(t.request.url)}catch{return}this.url=t.request.url,this.documentURL=t.documentURL,this.parsedURL={scheme:r.protocol.split(":")[0],host:r.hostname,securityOrigin:r.origin},this.isSecure=J.isSecureScheme(this.parsedURL.scheme),this.rendererStartTime=t.timestamp* -1e3,this.networkRequestTime=this.rendererStartTime,this.responseHeadersEndTime=this.rendererStartTime,this.requestMethod=t.request.method,this.initiator=t.initiator,this.resourceType=t.type&&a1[t.type],this.priority=t.request.initialPriority,this.frameId=t.frameId,this.isLinkPreload=t.initiator.type==="preload"||!!t.request.isLinkPreload,this.isValid=!0}onRequestServedFromCache(){this.fromMemoryCache=!0}onResponseReceived(t){this._onResponse(t.response,t.timestamp,t.type),this._updateProtocolForLightrider(),this.frameId=t.frameId}onResponseReceivedExtraInfo(t){this.responseHeadersText=t.headersText||""}onDataReceived(t){this.resourceSize+=t.dataLength,t.encodedDataLength!==-1&&(this.transferSize+=t.encodedDataLength)}onLoadingFinished(t){this.finished||(this.finished=!0,this.networkEndTime=t.timestamp*1e3,t.encodedDataLength>=0&&(this.transferSize=t.encodedDataLength),this._updateResponseHeadersEndTimeIfNecessary(),this._backfillReceiveHeaderStartTiming(),this._updateTransferSizeForLightrider(), -this._updateTimingsForLightrider())}onLoadingFailed(t){this.finished||(this.finished=!0,this.networkEndTime=t.timestamp*1e3,this.failed=!0,this.resourceType=t.type&&a1[t.type],this.localizedFailDescription=t.errorText,this._updateResponseHeadersEndTimeIfNecessary(),this._backfillReceiveHeaderStartTiming(),this._updateTransferSizeForLightrider(),this._updateTimingsForLightrider())}onResourceChangedPriority(t){this.priority=t.newPriority}onRedirectResponse(t){if(!t.redirectResponse)throw new Error("Missing redirectResponse data");this._onResponse(t.redirectResponse,t.timestamp,t.type),this.resourceType=void 0,this.finished=!0,this.networkEndTime=t.timestamp*1e3,this._updateResponseHeadersEndTimeIfNecessary(),this._backfillReceiveHeaderStartTiming()}setSession(t){this.sessionId=t}get isOutOfProcessIframe(){return this.sessionTargetType==="iframe"}_onResponse(t,r,n){this.url=t.url,this.connectionId=t.connectionId,this.connectionReused=t.connectionReused,t.protocol&&(this.protocol=t.protocol), -this.responseTimestamp=r*1e3,this.transferSize=t.encodedDataLength,this.responseHeadersTransferSize=t.encodedDataLength,typeof t.fromDiskCache=="boolean"&&(this.fromDiskCache=t.fromDiskCache),typeof t.fromPrefetchCache=="boolean"&&(this.fromPrefetchCache=t.fromPrefetchCache),this.statusCode=t.status,this.timing=t.timing,n&&(this.resourceType=a1[n]),this.mimeType=t.mimeType,this.responseHeaders=e._headersDictToHeadersArray(t.headers),this.fetchedViaServiceWorker=!!t.fromServiceWorker,this.fromMemoryCache&&(this.timing=void 0),this.timing&&this._recomputeTimesWithResourceTiming(this.timing)}_recomputeTimesWithResourceTiming(t){if(t.requestTime===-1||t.receiveHeadersEnd===-1)return;this.networkRequestTime=t.requestTime*1e3;let r=this.networkRequestTime+t.receiveHeadersEnd;this.responseHeadersEndTime=r,this.responseTimestamp!==void 0&&(this.responseHeadersEndTime=Math.min(this.responseHeadersEndTime,this.responseTimestamp)),this.responseHeadersEndTime=Math.max(this.responseHeadersEndTime,this. -networkRequestTime),this.networkEndTime=Math.max(this.networkEndTime,this.responseHeadersEndTime)}_updateResponseHeadersEndTimeIfNecessary(){this.responseHeadersEndTime=Math.min(this.networkEndTime,this.responseHeadersEndTime)}_updateTransferSizeForLightrider(){if(!globalThis.isLightrider)return;let t=this.responseHeaders.find(n=>n.name===vP);if(!t)return;let r=parseFloat(t.value);isNaN(r)||(this.transferSize=r)}_updateProtocolForLightrider(){globalThis.isLightrider&&this.responseHeaders.some(t=>t.name===bP)&&(this.protocol="h2")}_backfillReceiveHeaderStartTiming(){!this.timing||this.timing.receiveHeadersStart!==void 0||(this.timing.receiveHeadersStart=this.timing.receiveHeadersEnd)}_updateTimingsForLightrider(){if(!globalThis.isLightrider)return;let t=this.responseHeaders.find(m=>m.name===yP);if(!t)return;let r=parseInt(t.value),n=this.responseHeaders.find(m=>m.name===mP),i=this.responseHeaders.find(m=>m.name===fP),a=this.responseHeaders.find(m=>m.name===hP),o=this.responseHeaders.find( -m=>m.name===gP),u=n?Math.max(0,parseInt(n.value)):0,l=i?Math.max(0,parseInt(i.value)):0,c=a?Math.max(0,parseInt(a.value)):0,p=o?Math.max(0,parseInt(o.value)):0;if(!Number.isNaN(u+c+p+r)){if(u+c+p!==r){if(Math.abs(u+c+p-r)>=25)return;r=u+c+p}l>u||(this.lrStatistics={endTimeDeltaMs:this.networkEndTime-(this.networkRequestTime+r),TCPMs:u,requestMs:c,responseMs:p},this.serverResponseTime=p)}}static getRequestIdForBackend(t){return t.replace(/(:redirect)+$/,"")}static _headersDictToHeadersArray(t){let r=[];for(let n of Object.keys(t)){let i=t[n].split(` -`);for(let a=0;a<i.length;++a)r.push({name:n,value:i[a]})}return r}static get TYPES(){return a1}static asLanternNetworkRequest(t){let r=t.timing,n;return globalThis.isLightrider&&t.lrStatistics&&(t.protocol.startsWith("h3")?r={connectStart:0,connectEnd:t.lrStatistics.TCPMs}:(r={connectStart:0,sslStart:t.lrStatistics.TCPMs/2,connectEnd:t.lrStatistics.TCPMs,sslEnd:t.lrStatistics.TCPMs},n=t.lrStatistics.requestMs)),t.fromWorker=t.sessionTargetType==="worker",{rawRequest:t,...t,timing:r,serverResponseTime:n}}static isNonNetworkRequest(t){return J.isNonNetworkProtocol(t.protocol)||J.isNonNetworkProtocol(t.parsedURL.scheme)}static isSecureRequest(t){return J.isSecureScheme(t.parsedURL.scheme)||J.isSecureScheme(t.protocol)||J.isLikeLocalhost(t.parsedURL.host)||e.isHstsRequest(t)}static isHstsRequest(t){let r=t.redirectDestination;return r?t.responseHeaders.find(a=>a.name==="Non-Authoritative-Reason")?.value==="HSTS"&&e.isSecureRequest(r):!1}static isContentEncoded(t){let r=globalThis.isLightrider? -[/^x-original-content-encoding$/i]:[/^content-encoding$/i,/^x-content-encoding-over-network$/i],n=["gzip","br","deflate","zstd"];return t.responseHeaders.some(i=>r.some(a=>i.name.match(a))&&n.includes(i.value))}static getResourceSizeOnNetwork(t){return Math.min(t.resourceSize||0,t.transferSize||1/0)}};K.HEADER_TCP=mP;K.HEADER_SSL=fP;K.HEADER_REQ=hP;K.HEADER_RES=gP;K.HEADER_TOTAL=yP;K.HEADER_FETCHED_SIZE=vP;K.HEADER_PROTOCOL_IS_H2=bP});var mie,As,iw=g(()=>{"use strict";d();ti();Ne();or();It();Ot();mie=Ge,As=class e extends mie{static{s(this,"NetworkRecorder")}constructor(){super(),this._records=[],this._recordsById=new Map}getRawRecords(){return Array.from(this._records)}onRequestStarted(t){this._records.push(t),this._recordsById.set(t.requestId,t),this.emit("requeststarted",t)}onRequestFinished(t){this.emit("requestfinished",t)}onRequestWillBeSent(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);if(!n){let o=new K;o.onRequestWillBeSent(r),o.sessionId=t.sessionId,o.sessionTargetType=t.targetType,this.onRequestStarted(o),N.verbose("network",`request will be sent to ${o.url}`);return}if(!r.redirectResponse)return;let i={...r,initiator:n.initiator,requestId:`${n.requestId}:redirect`},a=new K;a.onRequestWillBeSent(i),n.onRedirectResponse(r),N.verbose("network",`${n.url} redirected to ${a.url}`),n.redirectDestination=a,a.redirectSource=n,this.onRequestStarted(a),this.onRequestFinished( -n)}onRequestServedFromCache(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&(N.verbose("network",`${n.url} served from cache`),n.onRequestServedFromCache())}onResponseReceived(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&(N.verbose("network",`${n.url} response received`),n.onResponseReceived(r))}onResponseReceivedExtraInfo(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&(N.verbose("network",`${n.url} response received extra info`),n.onResponseReceivedExtraInfo(r))}onDataReceived(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&(N.verbose("network",`${n.url} data received`),n.onDataReceived(r))}onLoadingFinished(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&(N.verbose("network",`${n.url} loading finished`),n.onLoadingFinished(r),this.onRequestFinished( -n))}onLoadingFailed(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&(N.verbose("network",`${n.url} loading failed`),n.onLoadingFailed(r),this.onRequestFinished(n))}onResourceChangedPriority(t){let r=t.params,n=this._findRealRequestAndSetSession(r.requestId,t.targetType,t.sessionId);n&&n.onResourceChangedPriority(r)}dispatch(t){switch(t.method){case"Network.requestWillBeSent":return this.onRequestWillBeSent(t);case"Network.requestServedFromCache":return this.onRequestServedFromCache(t);case"Network.responseReceived":return this.onResponseReceived(t);case"Network.responseReceivedExtraInfo":return this.onResponseReceivedExtraInfo(t);case"Network.dataReceived":return this.onDataReceived(t);case"Network.loadingFinished":return this.onLoadingFinished(t);case"Network.loadingFailed":return this.onLoadingFailed(t);case"Network.resourceChangedPriority":return this.onResourceChangedPriority(t);default:return}}_findRealRequestAndSetSession(t,r,n){let i=this. -_recordsById.get(t);if(!(!i||!i.isValid)){for(;i.redirectDestination;)i=i.redirectDestination;return i.setSession(n),i.sessionTargetType=r,i}}static _chooseInitiatorRequest(t,r){if(t.redirectSource)return t.redirectSource;let n=qt.PageDependencyGraph.getNetworkInitiators(t)[0],i=r.get(n)||[];if(i=i.filter(a=>a.responseHeadersEndTime<=t.rendererStartTime&&a.finished&&!a.failed),i.length>1){let a=i.filter(o=>o.resourceType!==K.TYPES.Other);a.length&&(i=a)}if(i.length>1){let a=i.filter(o=>o.frameId===t.frameId);a.length&&(i=a)}if(i.length>1&&t.initiator.type==="parser"){let a=i.filter(o=>o.resourceType===K.TYPES.Document);a.length&&(i=a)}if(i.length>1){let a=i.filter(o=>o.isLinkPreload);if(a.length){let o=i.filter(l=>!l.isLinkPreload),u=o.every(l=>l.fromDiskCache||l.fromMemoryCache);o.length&&u&&(i=a)}}return i.length===1?i[0]:null}static recordsFromLogs(t){let r=new e;t.forEach(a=>r.dispatch(a));let n=r.getRawRecords().filter(a=>a.isValid),i=new Map;for(let a of n){let o=i.get(a.url)||[]; -o.push(a),i.set(a.url,o)}for(let a of n){let o=e._chooseInitiatorRequest(a,i);o&&a.setInitiatorRequest(o);let u=a;for(;u.redirectDestination;)u=u.redirectDestination;if(u===a||u.redirects)continue;let l=[];for(let c=u.redirectSource;c;c=c.redirectSource)l.unshift(c);u.redirects=l}return n}}});var aw,ie,at=g(()=>{"use strict";d();or();De();iw();aw=class{static{s(this,"NetworkRecords")}static async compute_(t){return As.recordsFromLogs(t)}},ie=G(aw,null)});var ow,hn,ho=g(()=>{"use strict";d();It();De();at();ow=class{static{s(this,"NetworkAnalysis")}static async compute_(t,r){let n=await ie.request(t,r);return st.NetworkAnalyzer.analyze(n)}},hn=G(ow,null)});var sw,Jt,Bn=g(()=>{"use strict";d();De();It();ho();sw=class{static{s(this,"LoadSimulator")}static async compute_(t,r){let n=await hn.request(t.devtoolsLog,r);return gi.Simulator.createSimulator({...t.settings,networkAnalysis:n})}static convertAnalysisToSaveableLanternData(t){let r={additionalRttByOrigin:{},serverResponseTimeByOrigin:{}};for(let[n,i]of t.additionalRttByOrigin.entries())n.startsWith("http")&&(r.additionalRttByOrigin[n]=i);for(let[n,i]of t.serverResponseTimeByOrigin.entries())n.startsWith("http")&&(r.serverResponseTimeByOrigin[n]=i);return r}},Jt=G(sw,["devtoolsLog","settings"])});async function lw(e,t,r){let n=Wr.createWriteStream(r?t+".gz":t);r?await cy.promises.pipeline(e,a3(),n):await cy.promises.pipeline(e,n)}function uw(e,t){if(Wr.existsSync(e+".gz")&&(e=e+".gz"),!e.endsWith(".json.gz"))return JSON.parse(Wr.readFileSync(e,"utf8"),t);let r=s3(Wr.readFileSync(e));return JSON.parse(r.toString("utf8"),t)}function wP(e,t){return e.endsWith(t)||e.endsWith(t+".gz")}function TP(e){if(N.log("Reading artifacts from disk:",e),!Wr.existsSync(e))throw new Error("No saved artifacts found at "+e);let t=uw(St.join(e,o1),z.parseReviver),r=Wr.readdirSync(e);return r.filter(n=>wP(n,yo)).forEach(n=>{t.devtoolsLogs||(t.devtoolsLogs={});let i=n.replace(yo+".gz","").replace(yo,""),a=uw(St.join(e,n));t.devtoolsLogs[i]=a,i===s1&&(t.DevtoolsLog=a),i===u1&&(t.DevtoolsLogError=a)}),r.filter(n=>wP(n,go)).forEach(n=>{t.traces||(t.traces={});let i=uw(St.join(e,n)),a=n.replace(go+".gz","").replace(go,"");t.traces[a]=Array.isArray(i)?{traceEvents:i}:i,a===s1&&(t.Trace=t.traces[a]),a===u1&& -(t.TraceError=t.traces[a])}),Array.isArray(t.Timing)&&t.Timing.forEach(n=>n.gather=!0),t}function fie(e,t){return t instanceof Error?z.stringifyReplacer(t):t}async function xP(e,t,r={}){let n={msg:"Saving artifacts",id:"lh:assetSaver:saveArtifacts"};N.time(n),Wr.mkdirSync(t,{recursive:!0});let i=Wr.readdirSync(t);for(let h of i)(h.endsWith(go)||h.endsWith(yo)||h.endsWith(go+".gz")||h.endsWith(yo+".gz")||h===o1||h===o1+".gz")&&Wr.unlinkSync(`${t}/${h}`);let{traces:a,devtoolsLogs:o,DevtoolsLog:u,Trace:l,DevtoolsLogError:c,TraceError:p,...m}=e;l&&await DP(l,`${t}/${s1}${go}`,r),p&&await DP(p,`${t}/${u1}${go}`,r),u&&await EP(u,`${t}/${s1}${yo}`,r),c&&await EP(c,`${t}/${u1}${yo}`,r);let f=JSON.stringify(m,fie,2);await lw(function*(){yield f,yield` -`},`${t}/${o1}`,!!r.gzip),N.log("Artifacts saved to disk in folder:",t),N.timeEnd(n)}function SP(e,t){Wr.writeFileSync(`${t}/lhr.report.json`,JSON.stringify(e,null,2))}function*CP(e){if(yield`[ -`,e.length>0){let r=e[Symbol.iterator](),n=r.next().value;yield` ${JSON.stringify(n)}`;let i=500,a="";for(let o of r)a+=`, - ${JSON.stringify(o)}`,i--,i===0&&(yield a,i=500,a="");yield a}yield` -]`}function*hie(e){let{traceEvents:t,...r}=e;yield`{ -`,yield'"traceEvents": ',yield*CP(t);for(let[n,i]of Object.entries(r))yield`, -"${n}": ${JSON.stringify(i,null,2)}`;yield`} -`}function DP(e,t,r={}){let n=hie(e);return lw(n,t,!!r.gzip)}function EP(e,t,r={}){return lw(function*(){yield*CP(e),yield` -`},t,!!r.gzip)}var o1,go,yo,s1,u1,FP=g(()=>{"use strict";d();ni();Ui();dy();ll();jy();Ne();It();WL();GL();ho();Bn();zt();cl();o1="artifacts.json",go=".trace.json",yo=".devtoolslog.json",s1="defaultPass",u1="pageLoadError-defaultPass";s(lw,"writeJson");s(uw,"readJson");s(wP,"endsWithSuffix");s(TP,"loadArtifacts");s(fie,"stringifyReplacer");s(xP,"saveArtifacts");s(SP,"saveLhr");s(CP,"arrayOfObjectsJsonGenerator");s(hie,"traceJsonGenerator");s(DP,"saveTrace");s(EP,"saveDevtoolsLog")});var oa={};x(oa,{defaultSettings:()=>Yr,nonSimulatedSettingsOverrides:()=>Ms,screenEmulationMetrics:()=>l1,throttling:()=>Ns,userAgents:()=>aa});var Ns,yie,vie,l1,bie,wie,aa,Yr,Ms,wi=g(()=>{"use strict";d();It();Ns=gi.Constants.throttling,yie={mobile:!0,width:412,height:823,deviceScaleFactor:1.75,disabled:!1},vie={mobile:!1,width:1350,height:940,deviceScaleFactor:1,disabled:!1},l1={mobile:yie,desktop:vie},bie="Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36",wie="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",aa={mobile:bie,desktop:wie},Yr={output:"json",maxWaitForFcp:30*1e3,maxWaitForLoad:45*1e3,pauseAfterFcpMs:1e3,pauseAfterLoadMs:1e3,networkQuietThresholdMs:1e3,cpuQuietThresholdMs:1e3,formFactor:"mobile",throttling:Ns.mobileSlow4G,throttlingMethod:"simulate",screenEmulation:l1.mobile,emulatedUserAgent:aa.mobile,auditMode:!1,gatherMode:!1, -clearStorageTypes:["file_systems","shader_cache","service_workers","cache_storage"],disableStorageReset:!1,debugNavigation:!1,channel:"node",usePassiveGathering:!1,disableFullPageScreenshot:!1,skipAboutBlank:!1,blankPage:"about:blank",ignoreStatusCode:!1,locale:"en-US",blockedUrlPatterns:null,additionalTraceCategories:null,extraHeaders:null,precomputedLanternData:null,onlyAudits:null,onlyCategories:null,skipAudits:null},Ms={pauseAfterFcpMs:5250,pauseAfterLoadMs:5250,networkQuietThresholdMs:5250,cpuQuietThresholdMs:5250}});var Oe,$e,kP,c1,cw=g(()=>{"use strict";d();or();wi();R();Oe={performanceCategoryTitle:"Performance",metricGroupTitle:"Metrics",firstPaintImprovementsGroupTitle:"First Paint Improvements",firstPaintImprovementsGroupDescription:"The most critical aspect of performance is how quickly pixels are rendered onscreen. Key metrics: First Contentful Paint, First Meaningful Paint",overallImprovementsGroupTitle:"Overall Improvements",overallImprovementsGroupDescription:"Enhance the overall loading experience, so the page is responsive and ready to use as soon as possible. Key metrics: Time to Interactive, Speed Index",diagnosticsGroupTitle:"Diagnostics",diagnosticsGroupDescription:"More information about the performance of your application. These numbers don't [directly affect](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) the Performance score.",a11yCategoryTitle:"Accessibility",a11yCategoryDescription:"These checks highlight opportunities to [improve the accessib\ +page provided is not HTML (served as MIME type {mimeType}).",urlInvalid:"The URL you have provided appears to be invalid.",protocolTimeout:"Waiting for DevTools protocol response has exceeded the allotted time. (Method: {protocolMethod})",dnsFailure:"DNS servers could not resolve the provided domain.",pageLoadFailedHung:"Lighthouse was unable to reliably load the URL you requested because the page stopped responding.",criTimeout:"Timeout waiting for initial Debugger Protocol connection.",missingRequiredArtifact:"Required {artifactName} gatherer did not run.",erroredRequiredArtifact:"Required {artifactName} gatherer encountered an error: {errorMessage}",oldChromeDoesNotSupportFeature:"This version of Chrome is too old to support '{featureName}'. Use a newer version to see full results.",targetCrashed:"Browser tab has unexpectedly crashed."},jie=D("core/lib/lh-error.js",at),V8="__LighthouseErrorSentinel",$8="__ErrorSentinel",q=class e extends Error{static{s(this,"LighthouseError")}constructor(t,n,r){ +super(t.code,r),this.name="LighthouseError",this.code=t.code,this.friendlyMessage=jie(t.message,{errorCode:this.code,...n}),this.lhrRuntimeError=!!t.lhrRuntimeError,n&&Object.assign(this,n),Error.captureStackTrace(this,e)}static fromProtocolMessage(t,n){let r=Object.values(e.errors).filter(i=>i.pattern).find(i=>i.pattern&&i.pattern.test(n.message));if(r)return new e(r);let a=`(${t}): ${n.message}`;n.data&&(a+=` (${n.data})`);let o=new Error(`Protocol error ${a}`);return Object.assign(o,{protocolMethod:t,protocolError:n.message})}static stringifyReplacer(t){if(t instanceof e){let{name:n,code:r,message:a,friendlyMessage:o,lhrRuntimeError:i,stack:c,cause:u,...l}=t;return{sentinel:V8,code:r,stack:c,cause:u,properties:l}}if(t instanceof Error){let{message:n,stack:r,cause:a}=t,o=t.code;return{sentinel:$8,message:n,code:o,stack:r,cause:a}}throw new Error("Invalid value for LighthouseError stringification")}static parseReviver(t,n){if(typeof n=="object"&&n!==null){if(n.sentinel===V8){let{code:r, +stack:a,cause:o,properties:i}=n,c=e.errors[r],u=new e(c,i,{cause:o});return u.stack=a,u}if(n.sentinel===$8){let{message:r,code:a,stack:o,cause:i}=n,c=i?{cause:i}:void 0,u=new Error(r,c);return Object.assign(u,{code:a,stack:o}),u}}return n}},zie={NO_SPEEDLINE_FRAMES:{code:"NO_SPEEDLINE_FRAMES",message:at.didntCollectScreenshots,lhrRuntimeError:!0},SPEEDINDEX_OF_ZERO:{code:"SPEEDINDEX_OF_ZERO",message:at.didntCollectScreenshots,lhrRuntimeError:!0},NO_SCREENSHOTS:{code:"NO_SCREENSHOTS",message:at.didntCollectScreenshots,lhrRuntimeError:!0},INVALID_SPEEDLINE:{code:"INVALID_SPEEDLINE",message:at.didntCollectScreenshots,lhrRuntimeError:!0},NO_TRACING_STARTED:{code:"NO_TRACING_STARTED",message:at.badTraceRecording,lhrRuntimeError:!0},NO_RESOURCE_REQUEST:{code:"NO_RESOURCE_REQUEST",message:at.badTraceRecording,lhrRuntimeError:!0},NO_NAVSTART:{code:"NO_NAVSTART",message:at.badTraceRecording,lhrRuntimeError:!0},NO_FCP:{code:"NO_FCP",message:at.noFcp,lhrRuntimeError:!0},NO_DCL:{code:"NO_DCL",message:at. +badTraceRecording,lhrRuntimeError:!0},NO_FMP:{code:"NO_FMP",message:at.badTraceRecording},NO_LCP:{code:"NO_LCP",message:at.noLcp},NO_LCP_ALL_FRAMES:{code:"NO_LCP_ALL_FRAMES",message:at.noLcp},UNSUPPORTED_OLD_CHROME:{code:"UNSUPPORTED_OLD_CHROME",message:at.oldChromeDoesNotSupportFeature},NO_TTI_CPU_IDLE_PERIOD:{code:"NO_TTI_CPU_IDLE_PERIOD",message:at.pageLoadTookTooLong},NO_TTI_NETWORK_IDLE_PERIOD:{code:"NO_TTI_NETWORK_IDLE_PERIOD",message:at.pageLoadTookTooLong},NO_DOCUMENT_REQUEST:{code:"NO_DOCUMENT_REQUEST",message:at.pageLoadFailed,lhrRuntimeError:!0},FAILED_DOCUMENT_REQUEST:{code:"FAILED_DOCUMENT_REQUEST",message:at.pageLoadFailedWithDetails,lhrRuntimeError:!0},ERRORED_DOCUMENT_REQUEST:{code:"ERRORED_DOCUMENT_REQUEST",message:at.pageLoadFailedWithStatusCode,lhrRuntimeError:!0},INSECURE_DOCUMENT_REQUEST:{code:"INSECURE_DOCUMENT_REQUEST",message:at.pageLoadFailedInsecure,lhrRuntimeError:!0},CHROME_INTERSTITIAL_ERROR:{code:"CHROME_INTERSTITIAL_ERROR",message:at.pageLoadFailedInterstitial, +lhrRuntimeError:!0},PAGE_HUNG:{code:"PAGE_HUNG",message:at.pageLoadFailedHung,lhrRuntimeError:!0},NOT_HTML:{code:"NOT_HTML",message:at.notHtml,lhrRuntimeError:!0},TRACING_ALREADY_STARTED:{code:"TRACING_ALREADY_STARTED",message:at.internalChromeError,pattern:/Tracing.*started/,lhrRuntimeError:!0},PARSING_PROBLEM:{code:"PARSING_PROBLEM",message:at.internalChromeError,pattern:/Parsing problem/,lhrRuntimeError:!0},READ_FAILED:{code:"READ_FAILED",message:at.internalChromeError,pattern:/Read failed/,lhrRuntimeError:!0},INVALID_URL:{code:"INVALID_URL",message:at.urlInvalid},PROTOCOL_TIMEOUT:{code:"PROTOCOL_TIMEOUT",message:at.protocolTimeout,lhrRuntimeError:!0},DNS_FAILURE:{code:"DNS_FAILURE",message:at.dnsFailure,lhrRuntimeError:!0},CRI_TIMEOUT:{code:"CRI_TIMEOUT",message:at.criTimeout,lhrRuntimeError:!0},MISSING_REQUIRED_ARTIFACT:{code:"MISSING_REQUIRED_ARTIFACT",message:at.missingRequiredArtifact},ERRORED_REQUIRED_ARTIFACT:{code:"ERRORED_REQUIRED_ARTIFACT",message:at.erroredRequiredArtifact}, +TARGET_CRASHED:{code:"TARGET_CRASHED",message:at.targetCrashed,lhrRuntimeError:!0}};q.errors=zie;q.NO_ERROR="NO_ERROR";q.UNKNOWN_ERROR="UNKNOWN_ERROR"});function Vie(e){return!e||!e.startsWith("chrome://")?e:(e.endsWith("/")&&(e=e.replace(/\/$/,"")),e.replace(/^chrome:\/\/chrome\//,"chrome://"))}var qie,Hie,Wie,Gie,u1,X,dt=g(()=>{"use strict";d();G8();zn();Wt();qie=["https:","http:","chrome:","chrome-extension:"],Hie=["data","https","wss","blob","chrome","chrome-extension","about","filesystem"],Wie=["localhost","127.0.0.1"],Gie=["blob","data","intent","file","filesystem","chrome-extension"];s(Vie,"rewriteChromeInternalUrl");u1=class e{static{s(this,"UrlUtils")}static isValid(t){try{return new URL(t),!0}catch{return!1}}static hostsMatch(t,n){try{return new URL(t).host===new URL(n).host}catch{return!1}}static originsMatch(t,n){try{return new URL(t).origin===new URL(n).origin}catch{return!1}}static getOrigin(t){try{let n=new URL(t);return n.protocol==="chrome-extension:"?Le.getChromeExtensionOrigin(t):n.host&&n.origin||null}catch{return null}}static getRootDomain(t){let n=Le.createOrReturnURL(t);return W8(n.href)||n.hostname}static rootDomainsMatch(t,n){ +let r,a;try{r=Le.createOrReturnURL(t),a=Le.createOrReturnURL(n)}catch{return!1}if(!r.hostname||!a.hostname)return!1;let o=e.getRootDomain(r),i=e.getRootDomain(a);return o===i}static getURLDisplayName(t,n){return Le.getURLDisplayName(new URL(t),n)}static elideDataURI(t){try{return new URL(t).protocol==="data:"?Le.truncate(t,100):t}catch{return t}}static equalWithExcludedFragments(t,n){[t,n]=[t,n].map(Vie);try{let r=new URL(t);r.hash="";let a=new URL(n);return a.hash="",r.href===a.href}catch{return!1}}static isProtocolAllowed(t){try{let n=new URL(t);return qie.includes(n.protocol)}catch{return!1}}static isLikeLocalhost(t){return Wie.includes(t)||t.endsWith(".localhost")}static isSecureScheme(t){return Hie.includes(t)}static isNonNetworkProtocol(t){let n=t.includes(":")?t.slice(0,t.indexOf(":")):t;return Gie.includes(n)}static guessMimeType(t){let n;try{n=new URL(t)}catch{return}if(n.protocol==="data:"){let o=n.pathname.match(/^(image\/(png|jpeg|svg\+xml|webp|gif|avif))[;,]/);return o?o[1]: +void 0}let r=n.pathname.toLowerCase().match(/\.(png|jpeg|jpg|svg|webp|gif|avif)$/);if(!r)return;let a=r[1];return a==="svg"?"image/svg+xml":a==="jpg"?"image/jpeg":`image/${a}`}static normalizeUrl(t){if(t&&this.isValid(t)&&this.isProtocolAllowed(t))return new URL(t).href;throw new q(q.errors.INVALID_URL)}};u1.INVALID_URL_DEBUG_STRING="Lighthouse was unable to determine the URL of some script executions. It's possible a Chrome extension or other eval'd code is the source.";X=u1});var Y8,K8,J8,X8,Z8,Q8,eL,l1,K,Bt=g(()=>{"use strict";d();hn();Mt();dt();Y8="X-TCPMs",K8="X-SSLMs",J8="X-RequestMs",X8="X-ResponseMs",Z8="X-TotalMs",Q8="X-TotalFetchedSize",eL="X-ProtocolIsH2",l1={XHR:"XHR",Fetch:"Fetch",EventSource:"EventSource",Script:"Script",Stylesheet:"Stylesheet",Image:"Image",Media:"Media",Font:"Font",Document:"Document",TextTrack:"TextTrack",WebSocket:"WebSocket",Other:"Other",Manifest:"Manifest",SignedExchange:"SignedExchange",Ping:"Ping",Preflight:"Preflight",CSPViolationReport:"CSPViolationReport",Prefetch:"Prefetch"},K=class e{static{s(this,"NetworkRequest")}constructor(){this.requestId="",this.connectionId=0,this.connectionReused=!1,this.url="",this.protocol="",this.isSecure=!1,this.isValid=!1,this.parsedURL={scheme:""},this.documentURL="",this.rendererStartTime=-1,this.networkRequestTime=-1,this.responseHeadersEndTime=-1,this.networkEndTime=-1,this.transferSize=0,this.responseHeadersTransferSize=0,this.resourceSize=0,this.fromDiskCache=!1,this.fromMemoryCache= +!1,this.fromPrefetchCache=!1,this.lrStatistics=void 0,this.finished=!1,this.requestMethod="",this.statusCode=-1,this.redirectSource=void 0,this.redirectDestination=void 0,this.redirects=void 0,this.failed=!1,this.localizedFailDescription="",this.initiator={type:"other"},this.timing=void 0,this.resourceType=void 0,this.mimeType="",this.priority="Low",this.initiatorRequest=void 0,this.responseHeaders=[],this.responseHeadersText="",this.fetchedViaServiceWorker=!1,this.frameId="",this.sessionId=void 0,this.sessionTargetType=void 0,this.fromWorker=!1,this.isLinkPreload=!1}hasErrorStatusCode(){return this.statusCode>=400}setInitiatorRequest(t){this.initiatorRequest=t}onRequestWillBeSent(t){this.requestId=t.requestId;let n;try{n=new URL(t.request.url)}catch{return}this.url=t.request.url,this.documentURL=t.documentURL,this.parsedURL={scheme:n.protocol.split(":")[0],host:n.hostname,securityOrigin:n.origin},this.isSecure=X.isSecureScheme(this.parsedURL.scheme),this.rendererStartTime=t.timestamp* +1e3,this.networkRequestTime=this.rendererStartTime,this.responseHeadersEndTime=this.rendererStartTime,this.requestMethod=t.request.method,this.initiator=t.initiator,this.resourceType=t.type&&l1[t.type],this.priority=t.request.initialPriority,this.frameId=t.frameId,this.isLinkPreload=t.initiator.type==="preload"||!!t.request.isLinkPreload,this.isValid=!0}onRequestServedFromCache(){this.fromMemoryCache=!0}onResponseReceived(t){this._onResponse(t.response,t.timestamp,t.type),this._updateProtocolForLightrider(),this.frameId=t.frameId}onResponseReceivedExtraInfo(t){this.responseHeadersText=t.headersText||""}onDataReceived(t){this.resourceSize+=t.dataLength,t.encodedDataLength!==-1&&(this.transferSize+=t.encodedDataLength)}onLoadingFinished(t){this.finished||(this.finished=!0,this.networkEndTime=t.timestamp*1e3,t.encodedDataLength>=0&&(this.transferSize=t.encodedDataLength),this._updateResponseHeadersEndTimeIfNecessary(),this._backfillReceiveHeaderStartTiming(),this._updateTransferSizeForLightrider(), +this._updateTimingsForLightrider())}onLoadingFailed(t){this.finished||(this.finished=!0,this.networkEndTime=t.timestamp*1e3,this.failed=!0,this.resourceType=t.type&&l1[t.type],this.localizedFailDescription=t.errorText,this._updateResponseHeadersEndTimeIfNecessary(),this._backfillReceiveHeaderStartTiming(),this._updateTransferSizeForLightrider(),this._updateTimingsForLightrider())}onResourceChangedPriority(t){this.priority=t.newPriority}onRedirectResponse(t){if(!t.redirectResponse)throw new Error("Missing redirectResponse data");this._onResponse(t.redirectResponse,t.timestamp,t.type),this.resourceType=void 0,this.finished=!0,this.networkEndTime=t.timestamp*1e3,this._updateResponseHeadersEndTimeIfNecessary(),this._backfillReceiveHeaderStartTiming()}setSession(t){this.sessionId=t}get isOutOfProcessIframe(){return this.sessionTargetType==="iframe"}_onResponse(t,n,r){this.url=t.url,this.connectionId=t.connectionId,this.connectionReused=t.connectionReused,t.protocol&&(this.protocol=t.protocol), +this.responseTimestamp=n*1e3,this.transferSize=t.encodedDataLength,this.responseHeadersTransferSize=t.encodedDataLength,typeof t.fromDiskCache=="boolean"&&(this.fromDiskCache=t.fromDiskCache),typeof t.fromPrefetchCache=="boolean"&&(this.fromPrefetchCache=t.fromPrefetchCache),this.statusCode=t.status,this.timing=t.timing,r&&(this.resourceType=l1[r]),this.mimeType=t.mimeType,this.responseHeaders=e._headersDictToHeadersArray(t.headers),this.fetchedViaServiceWorker=!!t.fromServiceWorker,this.fromMemoryCache&&(this.timing=void 0),this.timing&&this._recomputeTimesWithResourceTiming(this.timing)}_recomputeTimesWithResourceTiming(t){if(t.requestTime===-1||t.receiveHeadersEnd===-1)return;this.networkRequestTime=t.requestTime*1e3;let n=this.networkRequestTime+t.receiveHeadersEnd;this.responseHeadersEndTime=n,this.responseTimestamp!==void 0&&(this.responseHeadersEndTime=Math.min(this.responseHeadersEndTime,this.responseTimestamp)),this.responseHeadersEndTime=Math.max(this.responseHeadersEndTime,this. +networkRequestTime),this.networkEndTime=Math.max(this.networkEndTime,this.responseHeadersEndTime)}_updateResponseHeadersEndTimeIfNecessary(){this.responseHeadersEndTime=Math.min(this.networkEndTime,this.responseHeadersEndTime)}_updateTransferSizeForLightrider(){if(!globalThis.isLightrider)return;let t=this.responseHeaders.find(r=>r.name===Q8);if(!t)return;let n=parseFloat(t.value);isNaN(n)||(this.transferSize=n)}_updateProtocolForLightrider(){globalThis.isLightrider&&this.responseHeaders.some(t=>t.name===eL)&&(this.protocol="h2")}_backfillReceiveHeaderStartTiming(){!this.timing||this.timing.receiveHeadersStart!==void 0||(this.timing.receiveHeadersStart=this.timing.receiveHeadersEnd)}_updateTimingsForLightrider(){if(!globalThis.isLightrider)return;let t=this.responseHeaders.find(p=>p.name===Z8);if(!t)return;let n=parseInt(t.value),r=this.responseHeaders.find(p=>p.name===Y8),a=this.responseHeaders.find(p=>p.name===K8),o=this.responseHeaders.find(p=>p.name===J8),i=this.responseHeaders.find( +p=>p.name===X8),c=r?Math.max(0,parseInt(r.value)):0,u=a?Math.max(0,parseInt(a.value)):0,l=o?Math.max(0,parseInt(o.value)):0,m=i?Math.max(0,parseInt(i.value)):0;if(!Number.isNaN(c+l+m+n)){if(c+l+m!==n){if(Math.abs(c+l+m-n)>=25)return;n=c+l+m}u>c||(this.lrStatistics={endTimeDeltaMs:this.networkEndTime-(this.networkRequestTime+n),TCPMs:c,requestMs:l,responseMs:m},this.serverResponseTime=m)}}static getRequestIdForBackend(t){return t.replace(/(:redirect)+$/,"")}static _headersDictToHeadersArray(t){let n=[];for(let r of Object.keys(t)){let a=t[r].split(` +`);for(let o=0;o<a.length;++o)n.push({name:r,value:a[o]})}return n}static get TYPES(){return l1}static asLanternNetworkRequest(t){let n=t.timing,r;return globalThis.isLightrider&&t.lrStatistics&&(t.protocol.startsWith("h3")?n={connectStart:0,connectEnd:t.lrStatistics.TCPMs}:(n={connectStart:0,sslStart:t.lrStatistics.TCPMs/2,connectEnd:t.lrStatistics.TCPMs,sslEnd:t.lrStatistics.TCPMs},r=t.lrStatistics.requestMs)),t.fromWorker=t.sessionTargetType==="worker",{rawRequest:t,...t,timing:n,serverResponseTime:r}}static isNonNetworkRequest(t){return X.isNonNetworkProtocol(t.protocol)||X.isNonNetworkProtocol(t.parsedURL.scheme)}static isSecureRequest(t){return X.isSecureScheme(t.parsedURL.scheme)||X.isSecureScheme(t.protocol)||X.isLikeLocalhost(t.parsedURL.host)||e.isHstsRequest(t)}static isHstsRequest(t){let n=t.redirectDestination;return n?t.responseHeaders.find(o=>o.name==="Non-Authoritative-Reason")?.value==="HSTS"&&e.isSecureRequest(n):!1}static isContentEncoded(t){let n=globalThis.isLightrider? +[/^x-original-content-encoding$/i]:[/^content-encoding$/i,/^x-content-encoding-over-network$/i],r=["gzip","br","deflate","zstd"];return t.responseHeaders.some(a=>n.some(o=>a.name.match(o))&&r.includes(a.value))}static getResourceSizeOnNetwork(t){return Math.min(t.resourceSize||0,t.transferSize||1/0)}};K.HEADER_TCP=Y8;K.HEADER_SSL=K8;K.HEADER_REQ=J8;K.HEADER_RES=X8;K.HEADER_TOTAL=Z8;K.HEADER_FETCHED_SIZE=Q8;K.HEADER_PROTOCOL_IS_H2=eL});var $ie,Ms,Bw=g(()=>{"use strict";d();ua();Oe();hn();Mt();Bt();$ie=We,Ms=class e extends $ie{static{s(this,"NetworkRecorder")}constructor(){super(),this._records=[],this._recordsById=new Map}getRawRecords(){return Array.from(this._records)}onRequestStarted(t){this._records.push(t),this._recordsById.set(t.requestId,t),this.emit("requeststarted",t)}onRequestFinished(t){this.emit("requestfinished",t)}onRequestWillBeSent(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);if(!r){let i=new K;i.onRequestWillBeSent(n),i.sessionId=t.sessionId,i.sessionTargetType=t.targetType,this.onRequestStarted(i),M.verbose("network",`request will be sent to ${i.url}`);return}if(!n.redirectResponse)return;let a={...n,initiator:r.initiator,requestId:`${r.requestId}:redirect`},o=new K;o.onRequestWillBeSent(a),r.onRedirectResponse(n),M.verbose("network",`${r.url} redirected to ${o.url}`),r.redirectDestination=o,o.redirectSource=r,this.onRequestStarted(o),this.onRequestFinished( +r)}onRequestServedFromCache(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&(M.verbose("network",`${r.url} served from cache`),r.onRequestServedFromCache())}onResponseReceived(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&(M.verbose("network",`${r.url} response received`),r.onResponseReceived(n))}onResponseReceivedExtraInfo(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&(M.verbose("network",`${r.url} response received extra info`),r.onResponseReceivedExtraInfo(n))}onDataReceived(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&(M.verbose("network",`${r.url} data received`),r.onDataReceived(n))}onLoadingFinished(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&(M.verbose("network",`${r.url} loading finished`),r.onLoadingFinished(n),this.onRequestFinished( +r))}onLoadingFailed(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&(M.verbose("network",`${r.url} loading failed`),r.onLoadingFailed(n),this.onRequestFinished(r))}onResourceChangedPriority(t){let n=t.params,r=this._findRealRequestAndSetSession(n.requestId,t.targetType,t.sessionId);r&&r.onResourceChangedPriority(n)}dispatch(t){switch(t.method){case"Network.requestWillBeSent":return this.onRequestWillBeSent(t);case"Network.requestServedFromCache":return this.onRequestServedFromCache(t);case"Network.responseReceived":return this.onResponseReceived(t);case"Network.responseReceivedExtraInfo":return this.onResponseReceivedExtraInfo(t);case"Network.dataReceived":return this.onDataReceived(t);case"Network.loadingFinished":return this.onLoadingFinished(t);case"Network.loadingFailed":return this.onLoadingFailed(t);case"Network.resourceChangedPriority":return this.onResourceChangedPriority(t);default:return}}_findRealRequestAndSetSession(t,n,r){let a=this. +_recordsById.get(t);if(!(!a||!a.isValid)){for(;a.redirectDestination;)a=a.redirectDestination;return a.setSession(r),a.sessionTargetType=n,a}}static _chooseInitiatorRequest(t,n){if(t.redirectSource)return t.redirectSource;let r=Ht.PageDependencyGraph.getNetworkInitiators(t)[0],a=n.get(r)||[];if(a=a.filter(o=>o.responseHeadersEndTime<=t.rendererStartTime&&o.finished&&!o.failed),a.length>1){let o=a.filter(i=>i.resourceType!==K.TYPES.Other);o.length&&(a=o)}if(a.length>1){let o=a.filter(i=>i.frameId===t.frameId);o.length&&(a=o)}if(a.length>1&&t.initiator.type==="parser"){let o=a.filter(i=>i.resourceType===K.TYPES.Document);o.length&&(a=o)}if(a.length>1){let o=a.filter(i=>i.isLinkPreload);if(o.length){let i=a.filter(u=>!u.isLinkPreload),c=i.every(u=>u.fromDiskCache||u.fromMemoryCache);i.length&&c&&(a=o)}}return a.length===1?a[0]:null}static recordsFromLogs(t){let n=new e;t.forEach(o=>n.dispatch(o));let r=n.getRawRecords().filter(o=>o.isValid),a=new Map;for(let o of r){let i=a.get(o.url)||[]; +i.push(o),a.set(o.url,i)}for(let o of r){let i=e._chooseInitiatorRequest(o,a);i&&o.setInitiatorRequest(i);let c=o;for(;c.redirectDestination;)c=c.redirectDestination;if(c===o||c.redirects)continue;let u=[];for(let l=c.redirectSource;l;l=l.redirectSource)u.unshift(l);c.redirects=u}return r}}});var Uw,oe,ut=g(()=>{"use strict";d();hn();xe();Bw();Uw=class{static{s(this,"NetworkRecords")}static async compute_(t){return Ms.recordsFromLogs(t)}},oe=G(Uw,null)});var jw,Er,wi=g(()=>{"use strict";d();Oe();Mt();xe();ut();jw=class{static{s(this,"NetworkAnalysis")}static async compute_(t,n){let r=await oe.request(t,n),a=ct.NetworkAnalyzer.analyze(r);return a||(M.error("NetworkAnalysis","Network analysis failed due to lack of transfer data"),{throughput:0,rtt:Number.POSITIVE_INFINITY,additionalRttByOrigin:new Map,serverResponseTimeByOrigin:new Map})}},Er=G(jw,null)});var zw,nn,Vr=g(()=>{"use strict";d();xe();Mt();wi();zw=class{static{s(this,"LoadSimulator")}static async compute_(t,n){let r=await Er.request(t.devtoolsLog,n);return Ta.Simulator.createSimulator({...t.settings,networkAnalysis:r})}static convertAnalysisToSaveableLanternData(t){let n={additionalRttByOrigin:{},serverResponseTimeByOrigin:{}};for(let[r,a]of t.additionalRttByOrigin.entries())r.startsWith("http")&&(n.additionalRttByOrigin[r]=a);for(let[r,a]of t.serverResponseTimeByOrigin.entries())r.startsWith("http")&&(n.serverResponseTimeByOrigin[r]=a);return n}},nn=G(zw,["devtoolsLog","settings"])});async function Hw(e,t,n){let r=Jn.createWriteStream(n?t+".gz":t);n?await hy.promises.pipeline(e,zM(),r):await hy.promises.pipeline(e,r)}function qw(e,t){if(Jn.existsSync(e+".gz")&&(e=e+".gz"),!e.endsWith(".json.gz"))return JSON.parse(Jn.readFileSync(e,"utf8"),t);let n=HM(Jn.readFileSync(e));return JSON.parse(n.toString("utf8"),t)}function tL(e,t){return e.endsWith(t)||e.endsWith(t+".gz")}function aL(e){if(M.log("Reading artifacts from disk:",e),!Jn.existsSync(e))throw new Error("No saved artifacts found at "+e);let t=qw(Ct.join(e,d1),q.parseReviver),n=Jn.readdirSync(e);return n.filter(r=>tL(r,xi)).forEach(r=>{t.devtoolsLogs||(t.devtoolsLogs={});let a=r.replace(xi+".gz","").replace(xi,""),o=qw(Ct.join(e,r));t.devtoolsLogs[a]=o,a===m1&&(t.DevtoolsLog=o),a===p1&&(t.DevtoolsLogError=o)}),n.filter(r=>tL(r,Di)).forEach(r=>{t.traces||(t.traces={});let a=qw(Ct.join(e,r)),o=r.replace(Di+".gz","").replace(Di,"");t.traces[o]=Array.isArray(a)?{traceEvents:a}:a,o===m1&&(t.Trace=t.traces[o]),o===p1&& +(t.TraceError=t.traces[o])}),Array.isArray(t.Timing)&&t.Timing.forEach(r=>r.gather=!0),t}function Yie(e,t){return t instanceof Error?q.stringifyReplacer(t):t}async function oL(e,t,n={}){let r={msg:"Saving artifacts",id:"lh:assetSaver:saveArtifacts"};M.time(r),Jn.mkdirSync(t,{recursive:!0});let a=Jn.readdirSync(t);for(let h of a)(h.endsWith(Di)||h.endsWith(xi)||h.endsWith(Di+".gz")||h.endsWith(xi+".gz")||h===d1||h===d1+".gz")&&Jn.unlinkSync(`${t}/${h}`);let{traces:o,devtoolsLogs:i,DevtoolsLog:c,Trace:u,DevtoolsLogError:l,TraceError:m,...p}=e;u&&await nL(u,`${t}/${m1}${Di}`,n),m&&await nL(m,`${t}/${p1}${Di}`,n),c&&await rL(c,`${t}/${m1}${xi}`,n),l&&await rL(l,`${t}/${p1}${xi}`,n);let f=JSON.stringify(p,Yie,2);await Hw(function*(){yield f,yield` +`},`${t}/${d1}`,!!n.gzip),M.log("Artifacts saved to disk in folder:",t),M.timeEnd(r)}function iL(e,t){Jn.writeFileSync(`${t}/lhr.report.json`,JSON.stringify(e,null,2))}function*sL(e){if(yield`[ +`,e.length>0){let n=e[Symbol.iterator](),r=n.next().value;yield` ${JSON.stringify(r)}`;let a=500,o="";for(let i of n)o+=`, + ${JSON.stringify(i)}`,a--,a===0&&(yield o,a=500,o="");yield o}yield` +]`}function*Kie(e){let{traceEvents:t,...n}=e;yield`{ +`,yield'"traceEvents": ',yield*sL(t);for(let[r,a]of Object.entries(n))yield`, +"${r}": ${JSON.stringify(a,null,2)}`;yield`} +`}function nL(e,t,n={}){let r=Kie(e);return Hw(r,t,!!n.gzip)}function rL(e,t,n={}){return Hw(function*(){yield*sL(e),yield` +`},t,!!n.gzip)}var d1,Di,xi,m1,p1,cL=g(()=>{"use strict";d();da();$a();gy();lu();Gy();Oe();Mt();S8();C8();wi();Vr();Wt();du();d1="artifacts.json",Di=".trace.json",xi=".devtoolslog.json",m1="defaultPass",p1="pageLoadError-defaultPass";s(Hw,"writeJson");s(qw,"readJson");s(tL,"endsWithSuffix");s(aL,"loadArtifacts");s(Yie,"stringifyReplacer");s(oL,"saveArtifacts");s(iL,"saveLhr");s(sL,"arrayOfObjectsJsonGenerator");s(Kie,"traceJsonGenerator");s(nL,"saveTrace");s(rL,"saveDevtoolsLog")});var vo={};T(vo,{defaultSettings:()=>tr,nonSimulatedSettingsOverrides:()=>Os,screenEmulationMetrics:()=>f1,throttling:()=>Ns,userAgents:()=>yo});var Ns,Xie,Zie,f1,Qie,ese,yo,tr,Os,Fa=g(()=>{"use strict";d();Mt();Ns=Ta.Constants.throttling,Xie={mobile:!0,width:412,height:823,deviceScaleFactor:1.75,disabled:!1},Zie={mobile:!1,width:1350,height:940,deviceScaleFactor:1,disabled:!1},f1={mobile:Xie,desktop:Zie},Qie="Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36",ese="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",yo={mobile:Qie,desktop:ese},tr={output:"json",maxWaitForFcp:30*1e3,maxWaitForLoad:45*1e3,pauseAfterFcpMs:1e3,pauseAfterLoadMs:1e3,networkQuietThresholdMs:1e3,cpuQuietThresholdMs:1e3,formFactor:"mobile",throttling:Ns.mobileSlow4G,throttlingMethod:"simulate",screenEmulation:f1.mobile,emulatedUserAgent:yo.mobile,auditMode:!1,gatherMode:!1, +clearStorageTypes:["file_systems","shader_cache","service_workers","cache_storage"],disableStorageReset:!1,debugNavigation:!1,channel:"node",usePassiveGathering:!1,disableFullPageScreenshot:!1,skipAboutBlank:!1,blankPage:"about:blank",ignoreStatusCode:!1,locale:"en-US",blockedUrlPatterns:null,additionalTraceCategories:null,extraHeaders:null,precomputedLanternData:null,onlyAudits:null,onlyCategories:null,skipAudits:null},Os={pauseAfterFcpMs:5250,pauseAfterLoadMs:5250,networkQuietThresholdMs:5250,cpuQuietThresholdMs:5250}});var Pe,$e,uL,h1,Ww=g(()=>{"use strict";d();hn();Fa();A();Pe={performanceCategoryTitle:"Performance",metricGroupTitle:"Metrics",firstPaintImprovementsGroupTitle:"First Paint Improvements",firstPaintImprovementsGroupDescription:"The most critical aspect of performance is how quickly pixels are rendered onscreen. Key metrics: First Contentful Paint, First Meaningful Paint",overallImprovementsGroupTitle:"Overall Improvements",overallImprovementsGroupDescription:"Enhance the overall loading experience, so the page is responsive and ready to use as soon as possible. Key metrics: Time to Interactive, Speed Index",diagnosticsGroupTitle:"Diagnostics",diagnosticsGroupDescription:"More information about the performance of your application. These numbers don't [directly affect](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) the Performance score.",a11yCategoryTitle:"Accessibility",a11yCategoryDescription:"These checks highlight opportunities to [improve the accessib\ ility of your web app](https://developer.chrome.com/docs/lighthouse/accessibility/). Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so [manual testing](https://web.dev/articles/how-to-review) is also encouraged.",a11yCategoryManualDescription:"These items address areas which an automated testing tool cannot cover. Learn more in our guide on [conducting an accessibility review](https://web.dev/articles/how-to-review).",a11yBestPracticesGroupTitle:"Best practices",a11yBestPracticesGroupDescription:"These items highlight common accessibility best practices.",a11yColorContrastGroupTitle:"Contrast",a11yColorContrastGroupDescription:"These are opportunities to improve the legibility of your content.",a11yNamesLabelsGroupTitle:"Names and labels",a11yNamesLabelsGroupDescription:"These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology,\ like a screen reader.",a11yNavigationGroupTitle:"Navigation",a11yNavigationGroupDescription:"These are opportunities to improve keyboard navigation in your application.",a11yAriaGroupTitle:"ARIA",a11yAriaGroupDescription:"These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.",a11yLanguageGroupTitle:"Internationalization and localization",a11yLanguageGroupDescription:"These are opportunities to improve the interpretation of your content by users in different locales.",a11yAudioVideoGroupTitle:"Audio and video",a11yAudioVideoGroupDescription:"These are opportunities to provide alternative content for audio and video. This may improve the experience for users with hearing or vision impairments.",a11yTablesListsVideoGroupTitle:"Tables and lists",a11yTablesListsVideoGroupDescription:"These are opportunities to improve the experience of reading tabular or list data using assistive te\ chnology, like a screen reader.",seoCategoryTitle:"SEO",seoCategoryDescription:"These checks ensure that your page is following basic search engine optimization advice. There are many additional factors Lighthouse does not score here that may affect your search ranking, including performance on [Core Web Vitals](https://web.dev/explore/vitals). [Learn more about Google Search Essentials](https://support.google.com/webmasters/answer/35769).",seoCategoryManualDescription:"Run these additional validators on your site to check additional SEO best practices.",seoMobileGroupTitle:"Mobile Friendly",seoMobileGroupDescription:"Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn how to make pages mobile-friendly](https://developers.google.com/search/mobile-sites/).",seoContentGroupTitle:"Content Best Practices",seoContentGroupDescription:"Format your HTML in a way that enables crawlers to better understand your app’s content.", -seoCrawlingGroupTitle:"Crawling and Indexing",seoCrawlingGroupDescription:"To appear in search results, crawlers need access to your app.",bestPracticesCategoryTitle:"Best Practices",bestPracticesTrustSafetyGroupTitle:"Trust and Safety",bestPracticesUXGroupTitle:"User Experience",bestPracticesBrowserCompatGroupTitle:"Browser Compatibility",bestPracticesGeneralGroupTitle:"General"},$e=D("core/config/default-config.js",Oe),kP={settings:Yr,artifacts:[{id:"DevtoolsLog",gatherer:"devtools-log"},{id:"Trace",gatherer:"trace"},{id:"RootCauses",gatherer:"root-causes"},{id:"Accessibility",gatherer:"accessibility"},{id:"AnchorElements",gatherer:"anchor-elements"},{id:"CacheContents",gatherer:"cache-contents"},{id:"ConsoleMessages",gatherer:"console-messages"},{id:"CSSUsage",gatherer:"css-usage"},{id:"Doctype",gatherer:"dobetterweb/doctype"},{id:"DOMStats",gatherer:"dobetterweb/domstats"},{id:"FontSize",gatherer:"seo/font-size"},{id:"Inputs",gatherer:"inputs"},{id:"IFrameElements",gatherer:"iframe\ +seoCrawlingGroupTitle:"Crawling and Indexing",seoCrawlingGroupDescription:"To appear in search results, crawlers need access to your app.",bestPracticesCategoryTitle:"Best Practices",bestPracticesTrustSafetyGroupTitle:"Trust and Safety",bestPracticesUXGroupTitle:"User Experience",bestPracticesBrowserCompatGroupTitle:"Browser Compatibility",bestPracticesGeneralGroupTitle:"General"},$e=D("core/config/default-config.js",Pe),uL={settings:tr,artifacts:[{id:"DevtoolsLog",gatherer:"devtools-log"},{id:"Trace",gatherer:"trace"},{id:"RootCauses",gatherer:"root-causes"},{id:"Accessibility",gatherer:"accessibility"},{id:"AnchorElements",gatherer:"anchor-elements"},{id:"CacheContents",gatherer:"cache-contents"},{id:"ConsoleMessages",gatherer:"console-messages"},{id:"CSSUsage",gatherer:"css-usage"},{id:"Doctype",gatherer:"dobetterweb/doctype"},{id:"DOMStats",gatherer:"dobetterweb/domstats"},{id:"FontSize",gatherer:"seo/font-size"},{id:"Inputs",gatherer:"inputs"},{id:"IFrameElements",gatherer:"iframe\ -elements"},{id:"ImageElements",gatherer:"image-elements"},{id:"InspectorIssues",gatherer:"inspector-issues"},{id:"JsUsage",gatherer:"js-usage"},{id:"LinkElements",gatherer:"link-elements"},{id:"MainDocumentContent",gatherer:"main-document-content"},{id:"MetaElements",gatherer:"meta-elements"},{id:"NetworkUserAgent",gatherer:"network-user-agent"},{id:"OptimizedImages",gatherer:"dobetterweb/optimized-images"},{id:"ResponseCompression",gatherer:"dobetterweb/response-compression"},{id:"RobotsTxt",gatherer:"seo/robots-txt"},{id:"Scripts",gatherer:"scripts"},{id:"SourceMaps",gatherer:"source-maps"},{id:"Stacks",gatherer:"stacks"},{id:"Stylesheets",gatherer:"stylesheets"},{id:"TraceElements",gatherer:"trace-elements"},{id:"ViewportDimensions",gatherer:"viewport-dimensions"},{id:"devtoolsLogs",gatherer:"devtools-log-compat"},{id:"traces",gatherer:"trace-compat"},{id:"FullPageScreenshot",gatherer:"full-page-screenshot"},{id:"BFCacheFailures",gatherer:"bf-cache-failures"}],audits:["is-on-https", -"redirects-http","viewport","metrics/first-contentful-paint","metrics/largest-contentful-paint","metrics/first-meaningful-paint","metrics/speed-index","screenshot-thumbnails","final-screenshot","metrics/total-blocking-time","metrics/max-potential-fid","metrics/cumulative-layout-shift","metrics/interaction-to-next-paint","errors-in-console","server-response-time","metrics/interactive","user-timings","critical-request-chains","redirects","image-aspect-ratio","image-size-responsive","deprecations","third-party-cookies","mainthread-work-breakdown","bootup-time","uses-rel-preconnect","font-display","diagnostics","network-requests","network-rtt","network-server-latency","main-thread-tasks","metrics","resource-summary","third-party-summary","third-party-facades","largest-contentful-paint-element","lcp-lazy-loaded","layout-shifts","long-tasks","non-composited-animations","unsized-images","valid-source-maps","prioritize-lcp-image","csp-xss","script-treemap-data","accessibility/accesskeys","acce\ -ssibility/aria-allowed-attr","accessibility/aria-allowed-role","accessibility/aria-command-name","accessibility/aria-conditional-attr","accessibility/aria-deprecated-role","accessibility/aria-dialog-name","accessibility/aria-hidden-body","accessibility/aria-hidden-focus","accessibility/aria-input-field-name","accessibility/aria-meter-name","accessibility/aria-progressbar-name","accessibility/aria-prohibited-attr","accessibility/aria-required-attr","accessibility/aria-required-children","accessibility/aria-required-parent","accessibility/aria-roles","accessibility/aria-text","accessibility/aria-toggle-field-name","accessibility/aria-tooltip-name","accessibility/aria-treeitem-name","accessibility/aria-valid-attr-value","accessibility/aria-valid-attr","accessibility/button-name","accessibility/bypass","accessibility/color-contrast","accessibility/definition-list","accessibility/dlitem","accessibility/document-title","accessibility/duplicate-id-aria","accessibility/empty-heading","accessib\ -ility/form-field-multiple-labels","accessibility/frame-title","accessibility/heading-order","accessibility/html-has-lang","accessibility/html-lang-valid","accessibility/html-xml-lang-mismatch","accessibility/identical-links-same-purpose","accessibility/image-alt","accessibility/image-redundant-alt","accessibility/input-button-name","accessibility/input-image-alt","accessibility/label-content-name-mismatch","accessibility/label","accessibility/landmark-one-main","accessibility/link-name","accessibility/link-in-text-block","accessibility/list","accessibility/listitem","accessibility/meta-refresh","accessibility/meta-viewport","accessibility/object-alt","accessibility/select-name","accessibility/skip-link","accessibility/tabindex","accessibility/table-duplicate-name","accessibility/table-fake-caption","accessibility/target-size","accessibility/td-has-header","accessibility/td-headers-attr","accessibility/th-has-data-cells","accessibility/valid-lang","accessibility/video-caption","accessib\ -ility/manual/custom-controls-labels","accessibility/manual/custom-controls-roles","accessibility/manual/focus-traps","accessibility/manual/focusable-controls","accessibility/manual/interactive-element-affordance","accessibility/manual/logical-tab-order","accessibility/manual/managed-focus","accessibility/manual/offscreen-content-hidden","accessibility/manual/use-landmarks","accessibility/manual/visual-order-follows-dom","byte-efficiency/uses-long-cache-ttl","byte-efficiency/total-byte-weight","byte-efficiency/offscreen-images","byte-efficiency/render-blocking-resources","byte-efficiency/unminified-css","byte-efficiency/unminified-javascript","byte-efficiency/unused-css-rules","byte-efficiency/unused-javascript","byte-efficiency/modern-image-formats","byte-efficiency/uses-optimized-images","byte-efficiency/uses-text-compression","byte-efficiency/uses-responsive-images","byte-efficiency/efficient-animated-content","byte-efficiency/duplicated-javascript","byte-efficiency/legacy-javascript", -"byte-efficiency/uses-responsive-images-snapshot","dobetterweb/doctype","dobetterweb/charset","dobetterweb/dom-size","dobetterweb/geolocation-on-start","dobetterweb/inspector-issues","dobetterweb/no-document-write","dobetterweb/js-libraries","dobetterweb/notification-on-start","dobetterweb/paste-preventing-inputs","dobetterweb/uses-http2","dobetterweb/uses-passive-event-listeners","seo/meta-description","seo/http-status-code","seo/font-size","seo/link-text","seo/crawlable-anchors","seo/is-crawlable","seo/robots-txt","seo/hreflang","seo/canonical","seo/manual/structured-data","work-during-interaction","bf-cache"],groups:{metrics:{title:$e(Oe.metricGroupTitle)},diagnostics:{title:$e(Oe.diagnosticsGroupTitle),description:$e(Oe.diagnosticsGroupDescription)},"a11y-best-practices":{title:$e(Oe.a11yBestPracticesGroupTitle),description:$e(Oe.a11yBestPracticesGroupDescription)},"a11y-color-contrast":{title:$e(Oe.a11yColorContrastGroupTitle),description:$e(Oe.a11yColorContrastGroupDescription)}, -"a11y-names-labels":{title:$e(Oe.a11yNamesLabelsGroupTitle),description:$e(Oe.a11yNamesLabelsGroupDescription)},"a11y-navigation":{title:$e(Oe.a11yNavigationGroupTitle),description:$e(Oe.a11yNavigationGroupDescription)},"a11y-aria":{title:$e(Oe.a11yAriaGroupTitle),description:$e(Oe.a11yAriaGroupDescription)},"a11y-language":{title:$e(Oe.a11yLanguageGroupTitle),description:$e(Oe.a11yLanguageGroupDescription)},"a11y-audio-video":{title:$e(Oe.a11yAudioVideoGroupTitle),description:$e(Oe.a11yAudioVideoGroupDescription)},"a11y-tables-lists":{title:$e(Oe.a11yTablesListsVideoGroupTitle),description:$e(Oe.a11yTablesListsVideoGroupDescription)},"seo-mobile":{title:$e(Oe.seoMobileGroupTitle),description:$e(Oe.seoMobileGroupDescription)},"seo-content":{title:$e(Oe.seoContentGroupTitle),description:$e(Oe.seoContentGroupDescription)},"seo-crawl":{title:$e(Oe.seoCrawlingGroupTitle),description:$e(Oe.seoCrawlingGroupDescription)},"best-practices-trust-safety":{title:$e(Oe.bestPracticesTrustSafetyGroupTitle)}, -"best-practices-ux":{title:$e(Oe.bestPracticesUXGroupTitle)},"best-practices-browser-compat":{title:$e(Oe.bestPracticesBrowserCompatGroupTitle)},"best-practices-general":{title:$e(Oe.bestPracticesGeneralGroupTitle)},hidden:{title:""}},categories:{performance:{title:$e(Oe.performanceCategoryTitle),supportedModes:["navigation","timespan","snapshot"],auditRefs:[{id:"first-contentful-paint",weight:10,group:"metrics",acronym:"FCP"},{id:"largest-contentful-paint",weight:25,group:"metrics",acronym:"LCP"},{id:"total-blocking-time",weight:30,group:"metrics",acronym:"TBT"},{id:"cumulative-layout-shift",weight:25,group:"metrics",acronym:"CLS"},{id:"speed-index",weight:10,group:"metrics",acronym:"SI"},{id:"interaction-to-next-paint",weight:0,group:"metrics",acronym:"INP"},{id:"interactive",weight:0,group:"hidden",acronym:"TTI"},{id:"max-potential-fid",weight:0,group:"hidden"},{id:"first-meaningful-paint",weight:0,acronym:"FMP",group:"hidden"},{id:"render-blocking-resources",weight:0,group:"diagnos\ +"redirects-http","viewport","metrics/first-contentful-paint","metrics/largest-contentful-paint","metrics/first-meaningful-paint","metrics/speed-index","screenshot-thumbnails","final-screenshot","metrics/total-blocking-time","metrics/max-potential-fid","metrics/cumulative-layout-shift","metrics/interaction-to-next-paint","errors-in-console","server-response-time","metrics/interactive","user-timings","critical-request-chains","redirects","image-aspect-ratio","image-size-responsive","deprecations","third-party-cookies","mainthread-work-breakdown","bootup-time","uses-rel-preconnect","font-display","diagnostics","network-requests","network-rtt","network-server-latency","main-thread-tasks","metrics","resource-summary","third-party-summary","third-party-facades","largest-contentful-paint-element","lcp-lazy-loaded","layout-shifts","long-tasks","non-composited-animations","unsized-images","valid-source-maps","prioritize-lcp-image","csp-xss","has-hsts","origin-isolation","script-treemap-data","a\ +ccessibility/accesskeys","accessibility/aria-allowed-attr","accessibility/aria-allowed-role","accessibility/aria-command-name","accessibility/aria-conditional-attr","accessibility/aria-deprecated-role","accessibility/aria-dialog-name","accessibility/aria-hidden-body","accessibility/aria-hidden-focus","accessibility/aria-input-field-name","accessibility/aria-meter-name","accessibility/aria-progressbar-name","accessibility/aria-prohibited-attr","accessibility/aria-required-attr","accessibility/aria-required-children","accessibility/aria-required-parent","accessibility/aria-roles","accessibility/aria-text","accessibility/aria-toggle-field-name","accessibility/aria-tooltip-name","accessibility/aria-treeitem-name","accessibility/aria-valid-attr-value","accessibility/aria-valid-attr","accessibility/button-name","accessibility/bypass","accessibility/color-contrast","accessibility/definition-list","accessibility/dlitem","accessibility/document-title","accessibility/duplicate-id-aria","accessib\ +ility/empty-heading","accessibility/form-field-multiple-labels","accessibility/frame-title","accessibility/heading-order","accessibility/html-has-lang","accessibility/html-lang-valid","accessibility/html-xml-lang-mismatch","accessibility/identical-links-same-purpose","accessibility/image-alt","accessibility/image-redundant-alt","accessibility/input-button-name","accessibility/input-image-alt","accessibility/label-content-name-mismatch","accessibility/label","accessibility/landmark-one-main","accessibility/link-name","accessibility/link-in-text-block","accessibility/list","accessibility/listitem","accessibility/meta-refresh","accessibility/meta-viewport","accessibility/object-alt","accessibility/select-name","accessibility/skip-link","accessibility/tabindex","accessibility/table-duplicate-name","accessibility/table-fake-caption","accessibility/target-size","accessibility/td-has-header","accessibility/td-headers-attr","accessibility/th-has-data-cells","accessibility/valid-lang","accessib\ +ility/video-caption","accessibility/manual/custom-controls-labels","accessibility/manual/custom-controls-roles","accessibility/manual/focus-traps","accessibility/manual/focusable-controls","accessibility/manual/interactive-element-affordance","accessibility/manual/logical-tab-order","accessibility/manual/managed-focus","accessibility/manual/offscreen-content-hidden","accessibility/manual/use-landmarks","accessibility/manual/visual-order-follows-dom","byte-efficiency/uses-long-cache-ttl","byte-efficiency/total-byte-weight","byte-efficiency/offscreen-images","byte-efficiency/render-blocking-resources","byte-efficiency/unminified-css","byte-efficiency/unminified-javascript","byte-efficiency/unused-css-rules","byte-efficiency/unused-javascript","byte-efficiency/modern-image-formats","byte-efficiency/uses-optimized-images","byte-efficiency/uses-text-compression","byte-efficiency/uses-responsive-images","byte-efficiency/efficient-animated-content","byte-efficiency/duplicated-javascript","byt\ +e-efficiency/legacy-javascript","byte-efficiency/uses-responsive-images-snapshot","dobetterweb/doctype","dobetterweb/charset","dobetterweb/dom-size","dobetterweb/geolocation-on-start","dobetterweb/inspector-issues","dobetterweb/no-document-write","dobetterweb/js-libraries","dobetterweb/notification-on-start","dobetterweb/paste-preventing-inputs","dobetterweb/uses-http2","dobetterweb/uses-passive-event-listeners","seo/meta-description","seo/http-status-code","seo/font-size","seo/link-text","seo/crawlable-anchors","seo/is-crawlable","seo/robots-txt","seo/hreflang","seo/canonical","seo/manual/structured-data","work-during-interaction","bf-cache"],groups:{metrics:{title:$e(Pe.metricGroupTitle)},diagnostics:{title:$e(Pe.diagnosticsGroupTitle),description:$e(Pe.diagnosticsGroupDescription)},"a11y-best-practices":{title:$e(Pe.a11yBestPracticesGroupTitle),description:$e(Pe.a11yBestPracticesGroupDescription)},"a11y-color-contrast":{title:$e(Pe.a11yColorContrastGroupTitle),description:$e(Pe.a11yColorContrastGroupDescription)}, +"a11y-names-labels":{title:$e(Pe.a11yNamesLabelsGroupTitle),description:$e(Pe.a11yNamesLabelsGroupDescription)},"a11y-navigation":{title:$e(Pe.a11yNavigationGroupTitle),description:$e(Pe.a11yNavigationGroupDescription)},"a11y-aria":{title:$e(Pe.a11yAriaGroupTitle),description:$e(Pe.a11yAriaGroupDescription)},"a11y-language":{title:$e(Pe.a11yLanguageGroupTitle),description:$e(Pe.a11yLanguageGroupDescription)},"a11y-audio-video":{title:$e(Pe.a11yAudioVideoGroupTitle),description:$e(Pe.a11yAudioVideoGroupDescription)},"a11y-tables-lists":{title:$e(Pe.a11yTablesListsVideoGroupTitle),description:$e(Pe.a11yTablesListsVideoGroupDescription)},"seo-mobile":{title:$e(Pe.seoMobileGroupTitle),description:$e(Pe.seoMobileGroupDescription)},"seo-content":{title:$e(Pe.seoContentGroupTitle),description:$e(Pe.seoContentGroupDescription)},"seo-crawl":{title:$e(Pe.seoCrawlingGroupTitle),description:$e(Pe.seoCrawlingGroupDescription)},"best-practices-trust-safety":{title:$e(Pe.bestPracticesTrustSafetyGroupTitle)}, +"best-practices-ux":{title:$e(Pe.bestPracticesUXGroupTitle)},"best-practices-browser-compat":{title:$e(Pe.bestPracticesBrowserCompatGroupTitle)},"best-practices-general":{title:$e(Pe.bestPracticesGeneralGroupTitle)},hidden:{title:""}},categories:{performance:{title:$e(Pe.performanceCategoryTitle),supportedModes:["navigation","timespan","snapshot"],auditRefs:[{id:"first-contentful-paint",weight:10,group:"metrics",acronym:"FCP"},{id:"largest-contentful-paint",weight:25,group:"metrics",acronym:"LCP"},{id:"total-blocking-time",weight:30,group:"metrics",acronym:"TBT"},{id:"cumulative-layout-shift",weight:25,group:"metrics",acronym:"CLS"},{id:"speed-index",weight:10,group:"metrics",acronym:"SI"},{id:"interaction-to-next-paint",weight:0,group:"metrics",acronym:"INP"},{id:"interactive",weight:0,group:"hidden",acronym:"TTI"},{id:"max-potential-fid",weight:0,group:"hidden"},{id:"first-meaningful-paint",weight:0,acronym:"FMP",group:"hidden"},{id:"render-blocking-resources",weight:0,group:"diagnos\ tics"},{id:"uses-responsive-images",weight:0,group:"diagnostics"},{id:"offscreen-images",weight:0,group:"diagnostics"},{id:"unminified-css",weight:0,group:"diagnostics"},{id:"unminified-javascript",weight:0,group:"diagnostics"},{id:"unused-css-rules",weight:0,group:"diagnostics"},{id:"unused-javascript",weight:0,group:"diagnostics"},{id:"uses-optimized-images",weight:0,group:"diagnostics"},{id:"modern-image-formats",weight:0,group:"diagnostics"},{id:"uses-text-compression",weight:0,group:"diagnostics"},{id:"uses-rel-preconnect",weight:0,group:"diagnostics"},{id:"server-response-time",weight:0,group:"diagnostics"},{id:"redirects",weight:0,group:"diagnostics"},{id:"uses-http2",weight:0,group:"diagnostics"},{id:"efficient-animated-content",weight:0,group:"diagnostics"},{id:"duplicated-javascript",weight:0,group:"diagnostics"},{id:"legacy-javascript",weight:0,group:"diagnostics"},{id:"prioritize-lcp-image",weight:0,group:"diagnostics"},{id:"total-byte-weight",weight:0,group:"diagnostics"}, {id:"uses-long-cache-ttl",weight:0,group:"diagnostics"},{id:"dom-size",weight:0,group:"diagnostics"},{id:"critical-request-chains",weight:0,group:"diagnostics"},{id:"user-timings",weight:0,group:"diagnostics"},{id:"bootup-time",weight:0,group:"diagnostics"},{id:"mainthread-work-breakdown",weight:0,group:"diagnostics"},{id:"font-display",weight:0,group:"diagnostics"},{id:"third-party-summary",weight:0,group:"diagnostics"},{id:"third-party-facades",weight:0,group:"diagnostics"},{id:"largest-contentful-paint-element",weight:0,group:"diagnostics"},{id:"lcp-lazy-loaded",weight:0,group:"diagnostics"},{id:"layout-shifts",weight:0,group:"diagnostics"},{id:"uses-passive-event-listeners",weight:0,group:"diagnostics"},{id:"no-document-write",weight:0,group:"diagnostics"},{id:"long-tasks",weight:0,group:"diagnostics"},{id:"non-composited-animations",weight:0,group:"diagnostics"},{id:"unsized-images",weight:0,group:"diagnostics"},{id:"viewport",weight:0,group:"diagnostics"},{id:"uses-responsive-ima\ -ges-snapshot",weight:0,group:"diagnostics"},{id:"work-during-interaction",weight:0,group:"diagnostics"},{id:"bf-cache",weight:0,group:"diagnostics"},{id:"network-requests",weight:0,group:"hidden"},{id:"network-rtt",weight:0,group:"hidden"},{id:"network-server-latency",weight:0,group:"hidden"},{id:"main-thread-tasks",weight:0,group:"hidden"},{id:"diagnostics",weight:0,group:"hidden"},{id:"metrics",weight:0,group:"hidden"},{id:"screenshot-thumbnails",weight:0,group:"hidden"},{id:"final-screenshot",weight:0,group:"hidden"},{id:"script-treemap-data",weight:0,group:"hidden"},{id:"resource-summary",weight:0,group:"hidden"}]},accessibility:{title:$e(Oe.a11yCategoryTitle),description:$e(Oe.a11yCategoryDescription),manualDescription:$e(Oe.a11yCategoryManualDescription),supportedModes:["navigation","snapshot"],auditRefs:[{id:"accesskeys",weight:7,group:"a11y-navigation"},{id:"aria-allowed-attr",weight:10,group:"a11y-aria"},{id:"aria-allowed-role",weight:1,group:"a11y-aria"},{id:"aria-command-nam\ +ges-snapshot",weight:0,group:"diagnostics"},{id:"work-during-interaction",weight:0,group:"diagnostics"},{id:"bf-cache",weight:0,group:"diagnostics"},{id:"network-requests",weight:0,group:"hidden"},{id:"network-rtt",weight:0,group:"hidden"},{id:"network-server-latency",weight:0,group:"hidden"},{id:"main-thread-tasks",weight:0,group:"hidden"},{id:"diagnostics",weight:0,group:"hidden"},{id:"metrics",weight:0,group:"hidden"},{id:"screenshot-thumbnails",weight:0,group:"hidden"},{id:"final-screenshot",weight:0,group:"hidden"},{id:"script-treemap-data",weight:0,group:"hidden"},{id:"resource-summary",weight:0,group:"hidden"}]},accessibility:{title:$e(Pe.a11yCategoryTitle),description:$e(Pe.a11yCategoryDescription),manualDescription:$e(Pe.a11yCategoryManualDescription),supportedModes:["navigation","snapshot"],auditRefs:[{id:"accesskeys",weight:7,group:"a11y-navigation"},{id:"aria-allowed-attr",weight:10,group:"a11y-aria"},{id:"aria-allowed-role",weight:1,group:"a11y-aria"},{id:"aria-command-nam\ e",weight:7,group:"a11y-aria"},{id:"aria-conditional-attr",weight:7,group:"a11y-aria"},{id:"aria-deprecated-role",weight:1,group:"a11y-aria"},{id:"aria-dialog-name",weight:7,group:"a11y-aria"},{id:"aria-hidden-body",weight:10,group:"a11y-aria"},{id:"aria-hidden-focus",weight:7,group:"a11y-aria"},{id:"aria-input-field-name",weight:7,group:"a11y-aria"},{id:"aria-meter-name",weight:7,group:"a11y-aria"},{id:"aria-progressbar-name",weight:7,group:"a11y-aria"},{id:"aria-prohibited-attr",weight:7,group:"a11y-aria"},{id:"aria-required-attr",weight:10,group:"a11y-aria"},{id:"aria-required-children",weight:10,group:"a11y-aria"},{id:"aria-required-parent",weight:10,group:"a11y-aria"},{id:"aria-roles",weight:7,group:"a11y-aria"},{id:"aria-text",weight:7,group:"a11y-aria"},{id:"aria-toggle-field-name",weight:7,group:"a11y-aria"},{id:"aria-tooltip-name",weight:7,group:"a11y-aria"},{id:"aria-treeitem-name",weight:7,group:"a11y-aria"},{id:"aria-valid-attr-value",weight:10,group:"a11y-aria"},{id:"aria-\ valid-attr",weight:10,group:"a11y-aria"},{id:"button-name",weight:10,group:"a11y-names-labels"},{id:"bypass",weight:7,group:"a11y-navigation"},{id:"color-contrast",weight:7,group:"a11y-color-contrast"},{id:"definition-list",weight:7,group:"a11y-tables-lists"},{id:"dlitem",weight:7,group:"a11y-tables-lists"},{id:"document-title",weight:7,group:"a11y-names-labels"},{id:"duplicate-id-aria",weight:10,group:"a11y-aria"},{id:"form-field-multiple-labels",weight:3,group:"a11y-names-labels"},{id:"frame-title",weight:7,group:"a11y-names-labels"},{id:"heading-order",weight:3,group:"a11y-navigation"},{id:"html-has-lang",weight:7,group:"a11y-language"},{id:"html-lang-valid",weight:7,group:"a11y-language"},{id:"html-xml-lang-mismatch",weight:3,group:"a11y-language"},{id:"image-alt",weight:10,group:"a11y-names-labels"},{id:"image-redundant-alt",weight:1,group:"a11y-names-labels"},{id:"input-button-name",weight:10,group:"a11y-names-labels"},{id:"input-image-alt",weight:10,group:"a11y-names-labels"},{id:"\ label",weight:7,group:"a11y-names-labels"},{id:"link-in-text-block",weight:7,group:"a11y-color-contrast"},{id:"link-name",weight:7,group:"a11y-names-labels"},{id:"list",weight:7,group:"a11y-tables-lists"},{id:"listitem",weight:7,group:"a11y-tables-lists"},{id:"meta-refresh",weight:10,group:"a11y-best-practices"},{id:"meta-viewport",weight:10,group:"a11y-best-practices"},{id:"object-alt",weight:7,group:"a11y-names-labels"},{id:"select-name",weight:7,group:"a11y-names-labels"},{id:"skip-link",weight:3,group:"a11y-names-labels"},{id:"tabindex",weight:7,group:"a11y-navigation"},{id:"table-duplicate-name",weight:1,group:"a11y-tables-lists"},{id:"target-size",weight:7,group:"a11y-best-practices"},{id:"td-headers-attr",weight:7,group:"a11y-tables-lists"},{id:"th-has-data-cells",weight:7,group:"a11y-tables-lists"},{id:"valid-lang",weight:7,group:"a11y-language"},{id:"video-caption",weight:10,group:"a11y-audio-video"},{id:"focusable-controls",weight:0},{id:"interactive-element-affordance",weight:0}, -{id:"logical-tab-order",weight:0},{id:"visual-order-follows-dom",weight:0},{id:"focus-traps",weight:0},{id:"managed-focus",weight:0},{id:"use-landmarks",weight:0},{id:"offscreen-content-hidden",weight:0},{id:"custom-controls-labels",weight:0},{id:"custom-controls-roles",weight:0},{id:"empty-heading",weight:0,group:"hidden"},{id:"identical-links-same-purpose",weight:0,group:"hidden"},{id:"landmark-one-main",weight:0,group:"hidden"},{id:"label-content-name-mismatch",weight:0,group:"hidden"},{id:"table-fake-caption",weight:0,group:"hidden"},{id:"td-has-header",weight:0,group:"hidden"}]},"best-practices":{title:$e(Oe.bestPracticesCategoryTitle),supportedModes:["navigation","timespan","snapshot"],auditRefs:[{id:"is-on-https",weight:5,group:"best-practices-trust-safety"},{id:"redirects-http",weight:1,group:"best-practices-trust-safety"},{id:"geolocation-on-start",weight:1,group:"best-practices-trust-safety"},{id:"notification-on-start",weight:1,group:"best-practices-trust-safety"},{id:"csp-x\ -ss",weight:0,group:"best-practices-trust-safety"},{id:"paste-preventing-inputs",weight:3,group:"best-practices-ux"},{id:"image-aspect-ratio",weight:1,group:"best-practices-ux"},{id:"image-size-responsive",weight:1,group:"best-practices-ux"},{id:"viewport",weight:1,group:"best-practices-ux"},{id:"font-size",weight:1,group:"best-practices-ux"},{id:"doctype",weight:1,group:"best-practices-browser-compat"},{id:"charset",weight:1,group:"best-practices-browser-compat"},{id:"js-libraries",weight:0,group:"best-practices-general"},{id:"deprecations",weight:5,group:"best-practices-general"},{id:"third-party-cookies",weight:5,group:"best-practices-general"},{id:"errors-in-console",weight:1,group:"best-practices-general"},{id:"valid-source-maps",weight:0,group:"best-practices-general"},{id:"inspector-issues",weight:1,group:"best-practices-general"}]},seo:{title:$e(Oe.seoCategoryTitle),description:$e(Oe.seoCategoryDescription),manualDescription:$e(Oe.seoCategoryManualDescription),supportedModes:["n\ -avigation","snapshot"],auditRefs:[{id:"is-crawlable",weight:93/23,group:"seo-crawl"},{id:"document-title",weight:1,group:"seo-content"},{id:"meta-description",weight:1,group:"seo-content"},{id:"http-status-code",weight:1,group:"seo-crawl"},{id:"link-text",weight:1,group:"seo-content"},{id:"crawlable-anchors",weight:1,group:"seo-crawl"},{id:"robots-txt",weight:1,group:"seo-crawl"},{id:"image-alt",weight:1,group:"seo-content"},{id:"hreflang",weight:1,group:"seo-content"},{id:"canonical",weight:1,group:"seo-content"},{id:"structured-data",weight:0}]}}};Object.defineProperty(kP,"UIStrings",{enumerable:!1,get:()=>Oe});c1=kP});function _P(e,t){let r={timespan:0,snapshot:1,navigation:2},n=Math.min(...e.instance.meta.supportedModes.map(a=>r[a])),i=Math.min(...t.instance.meta.supportedModes.map(a=>r[a]));return n===r.timespan?i===r.timespan:n===r.snapshot?i===r.snapshot:!0}function RP(e,t){if(!t.startsWith("lighthouse-plugin-"))throw new Error(`plugin name '${t}' does not start with 'lighthouse-plugin-'`);if(e.categories?.[t])throw new Error(`plugin name '${t}' not allowed because it is the id of a category already found in config`)}function Die(e){let t=e.gatherer.instance;if(typeof t.meta!="object")throw new Error(`Gatherer for ${e.id} did not provide a meta object.`);if(t.meta.supportedModes.length===0)throw new Error(`Gatherer for ${e.id} did not support any gather modes.`);if(typeof t.getArtifact!="function"||t.getArtifact===X.prototype.getArtifact)throw new Error(`Gatherer for ${e.id} did not define a "getArtifact" method.`)}function dw(e){let{implementation:t,path:r}=e,n=r||t?.meta?.id||"Unknown audit";if(typeof t. -audit!="function"||t.audit===v.audit)throw new Error(`${n} has no audit() method.`);if(typeof t.meta.id!="string")throw new Error(`${n} has no meta.id property, or the property is not a string.`);if(!_n(t.meta.title))throw new Error(`${n} has no meta.title property, or the property is not a string.`);let i=t.meta.scoreDisplayMode||v.SCORING_MODES.BINARY;if(!_n(t.meta.failureTitle)&&i===v.SCORING_MODES.BINARY)throw new Error(`${n} has no meta.failureTitle and should.`);if(_n(t.meta.description)){if(t.meta.description==="")throw new Error(`${n} has an empty meta.description string. Please add a description for the UI.`)}else throw new Error(`${n} has no meta.description property, or the property is not a string.`);if(!Array.isArray(t.meta.requiredArtifacts))throw new Error(`${n} has no meta.requiredArtifacts property, or the property is not an array.`)}function Eie(e,t,r){if(!e)return;let n=new Map((t||[]).map(i=>[i.implementation.meta.id,i]));Object.keys(e).forEach(i=>{e[i].auditRefs.forEach( -(a,o)=>{if(!a.id)throw new Error(`missing an audit id at ${i}[${o}]`);let u=n.get(a.id);if(!u)throw new Error(`could not find ${a.id} audit for category ${i}`);let c=u.implementation.meta.scoreDisplayMode==="manual";if(i==="accessibility"&&!a.group&&!c)throw new Error(`${a.id} accessibility audit does not have a group`);if(a.weight>0&&c)throw new Error(`${a.id} is manual but has a positive weight`);if(a.group&&(!r||!r[a.group]))throw new Error(`${a.id} references unknown group ${a.group}`)})})}function pw(e){if(!e.formFactor)throw new Error("`settings.formFactor` must be defined as 'mobile' or 'desktop'. See https://github.com/GoogleChrome/lighthouse/blob/main/docs/emulation.md");if(!e.screenEmulation.disabled&&e.screenEmulation.mobile!==(e.formFactor==="mobile"))throw new Error(`Screen emulation mobile setting (${e.screenEmulation.mobile}) does not match formFactor setting (${e.formFactor}). See https://github.com/GoogleChrome/lighthouse/blob/main/docs/emulation.md`);let t=e.skipAudits?. -find(r=>e.onlyAudits?.includes(r));if(t)throw new Error(`${t} appears in both skipAudits and onlyAudits`)}function Tie(e){let t=new Set;for(let r of e){if(Die(r),t.has(r.id))throw new Error(`Config defined multiple artifacts with id '${r.id}'`);if(t.add(r.id),!!r.dependencies)for(let[n,{id:i}]of Object.entries(r.dependencies))t.has(i)||mw(r.id,n)}}function IP(e){Tie(e.artifacts||[]);for(let t of e.audits||[])dw(t);Eie(e.categories,e.audits,e.groups),pw(e.settings)}function mw(e,t){throw new Error([`Failed to find dependency "${t}" for "${e}" artifact`,"Check that...",` 1. A gatherer exposes a matching Symbol that satisfies "${t}".`,` 2. "${t}" is configured to run before "${e}"`].join(` -`))}function AP(e,t){throw new Error([`Dependency "${t}" for "${e}" artifact is invalid.`,"The dependency must be collected before the dependent."].join(` -`))}var fw=g(()=>{"use strict";d();V();Ke();R();s(_P,"isValidArtifactDependency");s(RP,"assertValidPluginName");s(Die,"assertValidArtifact");s(dw,"assertValidAudit");s(Eie,"assertValidCategories");s(pw,"assertValidSettings");s(Tie,"assertValidArtifacts");s(IP,"assertValidConfig");s(mw,"throwInvalidDependencyOrder");s(AP,"throwInvalidArtifactDependency")});function NP(e,t){if(!e)return new Set;t=t||Object.keys(e);let n=t.map(i=>e[i]).flatMap(i=>i?.auditRefs||[]);return new Set(n.map(i=>i.id))}function _ie(e,t){if(!e)return null;if(!t)return e;let r=new Map(e.map(a=>[a.id,a])),n=new Set([...kie,...t.flatMap(a=>a.implementation.meta.requiredArtifacts)]),i=0;for(;i!==n.size;){i=n.size;for(let a of n){let o=r.get(a);if(o&&o.dependencies)for(let u of Object.values(o.dependencies))n.add(u.id)}}return e.filter(a=>n.has(a.id))}function Rie(e,t){return e?e.filter(r=>r.gatherer.instance.meta.supportedModes.includes(t)):null}function Iie(e,t){if(!e)return null;let r=new Set(t.map(n=>n.id).concat(Cie));return e.filter(n=>n.implementation.meta.requiredArtifacts.every(a=>r.has(a)))}function Aie(e,t){return e?e.filter(r=>{let n=r.implementation.meta;return!n.supportedModes||n.supportedModes.includes(t)}):null}function Nie(e,t){if(!e)return null;let r=Object.entries(e).filter(([n,i])=>!i.supportedModes||i.supportedModes.includes(t));return Object.fromEntries( -r)}function Mie(e,t){if(!e||!t)return e;let r=Object.entries(e).filter(([n])=>t.includes(n));return Object.fromEntries(r)}function Lie(e,t){if(t)for(let r of t)e?.[r]||N.warn("config",`unrecognized category in 'onlyCategories': ${r}`)}function MP(e,t){if(!e)return e;let r=new Map(t.map(i=>[i.implementation.meta.id,i.implementation.meta])),n=Object.entries(e).map(([i,a])=>{let o={...a,auditRefs:a.auditRefs.filter(c=>r.has(c.id))},u=o.auditRefs.length<a.auditRefs.length,l=o.auditRefs.every(c=>{let p=r.get(c.id);return p?p.scoreDisplayMode===v.SCORING_MODES.MANUAL:!1});return u&&l&&(o.auditRefs=[]),[i,o]}).filter(i=>typeof i[1]=="object"&&i[1].auditRefs.length);return Object.fromEntries(n)}function LP(e,t){let r=Rie(e.artifacts,t),n=Aie(e.audits,t),i=Iie(n,r||[]),a=Nie(e.categories,t),o=MP(a,i||[]);return{...e,artifacts:r,audits:i,categories:o}}function PP(e,t){let{onlyAudits:r,onlyCategories:n,skipAudits:i}=t;Lie(e.categories,n);let a=NP(e.categories,void 0);n?a=NP(e.categories,n):r?a=new Set: -(!e.categories||!Object.keys(e.categories).length)&&(a=new Set(e.audits?.map(m=>m.implementation.meta.id)));let o=new Set([...a,...r||[],...Fie].filter(m=>!i||!i.includes(m))),u=o.size&&e.audits?e.audits.filter(m=>o.has(m.implementation.meta.id)):e.audits,l=MP(e.categories,u||[]),c=Mie(l,n),p=_ie(e.artifacts,u);return p&&e.settings.disableFullPageScreenshot&&(p=p.filter(({id:m})=>m!=="FullPageScreenshot")),{...e,artifacts:p,audits:u,categories:c}}var Sie,Cie,Fie,kie,OP=g(()=>{"use strict";d();Ne();V();Sie={fetchTime:"",LighthouseRunWarnings:"",BenchmarkIndex:"",settings:"",Timing:"",URL:"",PageLoadError:"",HostFormFactor:"",HostUserAgent:"",HostProduct:"",GatherContext:""},Cie=Object.keys(Sie),Fie=[],kie=["Stacks","NetworkUserAgent","FullPageScreenshot"];s(NP,"getAuditIdsInCategories");s(_ie,"filterArtifactsByAvailableAudits");s(Rie,"filterArtifactsByGatherMode");s(Iie,"filterAuditsByAvailableArtifacts");s(Aie,"filterAuditsByGatherMode");s(Nie,"filterCategoriesByGatherMode");s(Mie,"fil\ -terCategoriesByExplicitFilters");s(Lie,"warnOnUnknownOnlyCategories");s(MP,"filterCategoriesByAvailableAudits");s(LP,"filterConfigByGatherMode");s(PP,"filterConfigByExplicitFilters")});function BP(e){return Array.isArray(e)&&e.every(uc)}function uc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pie(e){return typeof e!="string"?!1:e==="navigation"||e==="timespan"||e==="snapshot"}function Oie(e){return Array.isArray(e)?e.every(Pie):!1}function sc(e,t,r=""){r&&(r+=" ");let n=Object.keys(e);if(n.length>0){let i=n.join(", ");throw new Error(`${t} has unrecognized ${r}properties: [${i}]`)}}var hw,UP,jP=g(()=>{"use strict";d();R();s(BP,"isArrayOfUnknownObjects");s(uc,"isObjectOfUnknownProperties");s(Pie,"objectIsGatherMode");s(Oie,"isArrayOfGatherModes");s(sc,"assertNoExcessProperties");hw=class e{static{s(this,"ConfigPlugin")}static _parseAuditsList(t,r){if(t!==void 0){if(!BP(t))throw new Error(`${r} has an invalid audits array.`);return t.map(n=>{let{path:i,...a}=n;if(sc(a,r,"audit"),typeof i!="string")throw new Error(`${r} has a missing audit path.`);return{path:i}})}}static _parseAuditRefsList(t,r){if(!BP(t))throw new Error(`${r} has no valid auditsR\ -efs.`);return t.map(n=>{let{id:i,weight:a,group:o,...u}=n;if(sc(u,r,"auditRef"),typeof i!="string")throw new Error(`${r} has an invalid auditRef id.`);if(typeof a!="number")throw new Error(`${r} has an invalid auditRef weight.`);if(typeof o!="string"&&typeof o<"u")throw new Error(`${r} has an invalid auditRef group.`);let l=o&&`${r}-${o}`;return{id:i,weight:a,group:l}})}static _parseCategory(t,r){if(!uc(t))throw new Error(`${r} has no valid category.`);let{title:n,description:i,manualDescription:a,auditRefs:o,supportedModes:u,...l}=t;if(sc(l,r,"category"),!_n(n))throw new Error(`${r} has an invalid category tile.`);if(!_n(i)&&i!==void 0)throw new Error(`${r} has an invalid category description.`);if(!_n(a)&&a!==void 0)throw new Error(`${r} has an invalid category manualDescription.`);if(!Oie(u)&&u!==void 0)throw new Error(`${r} supportedModes must be an array, valid array values are "navigation", "timespan", and "snapshot".`);let c=e._parseAuditRefsList(o,r);return{title:n,auditRefs:c, -description:i,manualDescription:a,supportedModes:u}}static _parseGroups(t,r){if(t===void 0)return;if(!uc(t))throw new Error(`${r} groups json is not defined as an object.`);let n=Object.entries(t),i={};return n.forEach(([a,o])=>{if(!uc(o))throw new Error(`${r} has a group not defined as an object.`);let{title:u,description:l,...c}=o;if(sc(c,r,"group"),!_n(u))throw new Error(`${r} has an invalid group title.`);if(!_n(l)&&l!==void 0)throw new Error(`${r} has an invalid group description.`);i[`${r}-${a}`]={title:u,description:l}}),i}static parsePlugin(t,r){if(t=JSON.parse(JSON.stringify(t)),!uc(t))throw new Error(`${r} is not defined as an object.`);let{audits:n,category:i,groups:a,...o}=t;return sc(o,r),{audits:e._parseAuditsList(n,r),categories:{[r]:e._parseCategory(i,r)},groups:e._parseGroups(a,r)}}},UP=hw});var qP,zP=g(()=>{"use strict";d();ni();is();qP=`/*! axe v4.10.2 +{id:"logical-tab-order",weight:0},{id:"visual-order-follows-dom",weight:0},{id:"focus-traps",weight:0},{id:"managed-focus",weight:0},{id:"use-landmarks",weight:0},{id:"offscreen-content-hidden",weight:0},{id:"custom-controls-labels",weight:0},{id:"custom-controls-roles",weight:0},{id:"empty-heading",weight:0,group:"hidden"},{id:"identical-links-same-purpose",weight:0,group:"hidden"},{id:"landmark-one-main",weight:0,group:"hidden"},{id:"label-content-name-mismatch",weight:0,group:"hidden"},{id:"table-fake-caption",weight:0,group:"hidden"},{id:"td-has-header",weight:0,group:"hidden"}]},"best-practices":{title:$e(Pe.bestPracticesCategoryTitle),supportedModes:["navigation","timespan","snapshot"],auditRefs:[{id:"is-on-https",weight:5,group:"best-practices-trust-safety"},{id:"redirects-http",weight:1,group:"best-practices-trust-safety"},{id:"geolocation-on-start",weight:1,group:"best-practices-trust-safety"},{id:"notification-on-start",weight:1,group:"best-practices-trust-safety"},{id:"csp-x\ +ss",weight:0,group:"best-practices-trust-safety"},{id:"has-hsts",weight:0,group:"best-practices-trust-safety"},{id:"origin-isolation",weight:0,group:"best-practices-trust-safety"},{id:"paste-preventing-inputs",weight:3,group:"best-practices-ux"},{id:"image-aspect-ratio",weight:1,group:"best-practices-ux"},{id:"image-size-responsive",weight:1,group:"best-practices-ux"},{id:"viewport",weight:1,group:"best-practices-ux"},{id:"font-size",weight:1,group:"best-practices-ux"},{id:"doctype",weight:1,group:"best-practices-browser-compat"},{id:"charset",weight:1,group:"best-practices-browser-compat"},{id:"js-libraries",weight:0,group:"best-practices-general"},{id:"deprecations",weight:5,group:"best-practices-general"},{id:"third-party-cookies",weight:5,group:"best-practices-general"},{id:"errors-in-console",weight:1,group:"best-practices-general"},{id:"valid-source-maps",weight:0,group:"best-practices-general"},{id:"inspector-issues",weight:1,group:"best-practices-general"}]},seo:{title:$e(Pe.seoCategoryTitle), +description:$e(Pe.seoCategoryDescription),manualDescription:$e(Pe.seoCategoryManualDescription),supportedModes:["navigation","snapshot"],auditRefs:[{id:"is-crawlable",weight:93/23,group:"seo-crawl"},{id:"document-title",weight:1,group:"seo-content"},{id:"meta-description",weight:1,group:"seo-content"},{id:"http-status-code",weight:1,group:"seo-crawl"},{id:"link-text",weight:1,group:"seo-content"},{id:"crawlable-anchors",weight:1,group:"seo-crawl"},{id:"robots-txt",weight:1,group:"seo-crawl"},{id:"image-alt",weight:1,group:"seo-content"},{id:"hreflang",weight:1,group:"seo-content"},{id:"canonical",weight:1,group:"seo-content"},{id:"structured-data",weight:0}]}}};Object.defineProperty(uL,"UIStrings",{enumerable:!1,get:()=>Pe});h1=uL});function lL(e,t){let n={timespan:0,snapshot:1,navigation:2},r=Math.min(...e.instance.meta.supportedModes.map(o=>n[o])),a=Math.min(...t.instance.meta.supportedModes.map(o=>n[o]));return r===n.timespan?a===n.timespan:r===n.snapshot?a===n.snapshot:!0}function dL(e,t){if(!t.startsWith("lighthouse-plugin-"))throw new Error(`plugin name '${t}' does not start with 'lighthouse-plugin-'`);if(e.categories?.[t])throw new Error(`plugin name '${t}' not allowed because it is the id of a category already found in config`)}function tse(e){let t=e.gatherer.instance;if(typeof t.meta!="object")throw new Error(`Gatherer for ${e.id} did not provide a meta object.`);if(t.meta.supportedModes.length===0)throw new Error(`Gatherer for ${e.id} did not support any gather modes.`);if(typeof t.getArtifact!="function"||t.getArtifact===Q.prototype.getArtifact)throw new Error(`Gatherer for ${e.id} did not define a "getArtifact" method.`)}function Gw(e){let{implementation:t,path:n}=e,r=n||t?.meta?.id||"Unknown audit";if(typeof t. +audit!="function"||t.audit===b.audit)throw new Error(`${r} has no audit() method.`);if(typeof t.meta.id!="string")throw new Error(`${r} has no meta.id property, or the property is not a string.`);if(!Br(t.meta.title))throw new Error(`${r} has no meta.title property, or the property is not a string.`);let a=t.meta.scoreDisplayMode||b.SCORING_MODES.BINARY;if(!Br(t.meta.failureTitle)&&a===b.SCORING_MODES.BINARY)throw new Error(`${r} has no meta.failureTitle and should.`);if(Br(t.meta.description)){if(t.meta.description==="")throw new Error(`${r} has an empty meta.description string. Please add a description for the UI.`)}else throw new Error(`${r} has no meta.description property, or the property is not a string.`);if(!Array.isArray(t.meta.requiredArtifacts))throw new Error(`${r} has no meta.requiredArtifacts property, or the property is not an array.`)}function nse(e,t,n){if(!e)return;let r=new Map((t||[]).map(a=>[a.implementation.meta.id,a]));Object.keys(e).forEach(a=>{e[a].auditRefs.forEach( +(o,i)=>{if(!o.id)throw new Error(`missing an audit id at ${a}[${i}]`);let c=r.get(o.id);if(!c)throw new Error(`could not find ${o.id} audit for category ${a}`);let l=c.implementation.meta.scoreDisplayMode==="manual";if(a==="accessibility"&&!o.group&&!l)throw new Error(`${o.id} accessibility audit does not have a group`);if(o.weight>0&&l)throw new Error(`${o.id} is manual but has a positive weight`);if(o.group&&(!n||!n[o.group]))throw new Error(`${o.id} references unknown group ${o.group}`)})})}function Vw(e){if(!e.formFactor)throw new Error("`settings.formFactor` must be defined as 'mobile' or 'desktop'. See https://github.com/GoogleChrome/lighthouse/blob/main/docs/emulation.md");if(!e.screenEmulation.disabled&&e.screenEmulation.mobile!==(e.formFactor==="mobile"))throw new Error(`Screen emulation mobile setting (${e.screenEmulation.mobile}) does not match formFactor setting (${e.formFactor}). See https://github.com/GoogleChrome/lighthouse/blob/main/docs/emulation.md`);let t=e.skipAudits?. +find(n=>e.onlyAudits?.includes(n));if(t)throw new Error(`${t} appears in both skipAudits and onlyAudits`)}function rse(e){let t=new Set;for(let n of e){if(tse(n),t.has(n.id))throw new Error(`Config defined multiple artifacts with id '${n.id}'`);if(t.add(n.id),!!n.dependencies)for(let[r,{id:a}]of Object.entries(n.dependencies))t.has(a)||$w(n.id,r)}}function mL(e){rse(e.artifacts||[]);for(let t of e.audits||[])Gw(t);nse(e.categories,e.audits,e.groups),Vw(e.settings)}function $w(e,t){throw new Error([`Failed to find dependency "${t}" for "${e}" artifact`,"Check that...",` 1. A gatherer exposes a matching Symbol that satisfies "${t}".`,` 2. "${t}" is configured to run before "${e}"`].join(` +`))}function pL(e,t){throw new Error([`Dependency "${t}" for "${e}" artifact is invalid.`,"The dependency must be collected before the dependent."].join(` +`))}var Yw=g(()=>{"use strict";d();V();Ke();A();s(lL,"isValidArtifactDependency");s(dL,"assertValidPluginName");s(tse,"assertValidArtifact");s(Gw,"assertValidAudit");s(nse,"assertValidCategories");s(Vw,"assertValidSettings");s(rse,"assertValidArtifacts");s(mL,"assertValidConfig");s($w,"throwInvalidDependencyOrder");s(pL,"throwInvalidArtifactDependency")});function fL(e,t){if(!e)return new Set;t=t||Object.keys(e);let r=t.map(a=>e[a]).flatMap(a=>a?.auditRefs||[]);return new Set(r.map(a=>a.id))}function use(e,t){if(!e)return null;if(!t)return e;let n=new Map(e.map(o=>[o.id,o])),r=new Set([...cse,...t.flatMap(o=>o.implementation.meta.requiredArtifacts)]),a=0;for(;a!==r.size;){a=r.size;for(let o of r){let i=n.get(o);if(i&&i.dependencies)for(let c of Object.values(i.dependencies))r.add(c.id)}}return e.filter(o=>r.has(o.id))}function lse(e,t){return e?e.filter(n=>n.gatherer.instance.meta.supportedModes.includes(t)):null}function dse(e,t){if(!e)return null;let n=new Set(t.map(r=>r.id).concat(ise));return e.filter(r=>r.implementation.meta.requiredArtifacts.every(o=>n.has(o)))}function mse(e,t){return e?e.filter(n=>{let r=n.implementation.meta;return!r.supportedModes||r.supportedModes.includes(t)}):null}function pse(e,t){if(!e)return null;let n=Object.entries(e).filter(([r,a])=>!a.supportedModes||a.supportedModes.includes(t));return Object.fromEntries( +n)}function fse(e,t){if(!e||!t)return e;let n=Object.entries(e).filter(([r])=>t.includes(r));return Object.fromEntries(n)}function hse(e,t){if(t)for(let n of t)e?.[n]||M.warn("config",`unrecognized category in 'onlyCategories': ${n}`)}function hL(e,t){if(!e)return e;let n=new Map(t.map(a=>[a.implementation.meta.id,a.implementation.meta])),r=Object.entries(e).map(([a,o])=>{let i={...o,auditRefs:o.auditRefs.filter(l=>n.has(l.id))},c=i.auditRefs.length<o.auditRefs.length,u=i.auditRefs.every(l=>{let m=n.get(l.id);return m?m.scoreDisplayMode===b.SCORING_MODES.MANUAL:!1});return c&&u&&(i.auditRefs=[]),[a,i]}).filter(a=>typeof a[1]=="object"&&a[1].auditRefs.length);return Object.fromEntries(r)}function gL(e,t){let n=lse(e.artifacts,t),r=mse(e.audits,t),a=dse(r,n||[]),o=pse(e.categories,t),i=hL(o,a||[]);return{...e,artifacts:n,audits:a,categories:i}}function yL(e,t){let{onlyAudits:n,onlyCategories:r,skipAudits:a}=t;hse(e.categories,r);let o=fL(e.categories,void 0);r?o=fL(e.categories,r):n?o=new Set: +(!e.categories||!Object.keys(e.categories).length)&&(o=new Set(e.audits?.map(p=>p.implementation.meta.id)));let i=new Set([...o,...n||[],...sse].filter(p=>!a||!a.includes(p))),c=i.size&&e.audits?e.audits.filter(p=>i.has(p.implementation.meta.id)):e.audits,u=hL(e.categories,c||[]),l=fse(u,r),m=use(e.artifacts,c);return m&&e.settings.disableFullPageScreenshot&&(m=m.filter(({id:p})=>p!=="FullPageScreenshot")),{...e,artifacts:m,audits:c,categories:l}}var ose,ise,sse,cse,vL=g(()=>{"use strict";d();Oe();V();ose={fetchTime:"",LighthouseRunWarnings:"",BenchmarkIndex:"",settings:"",Timing:"",URL:"",PageLoadError:"",HostFormFactor:"",HostUserAgent:"",HostProduct:"",GatherContext:""},ise=Object.keys(ose),sse=[],cse=["Stacks","NetworkUserAgent","FullPageScreenshot"];s(fL,"getAuditIdsInCategories");s(use,"filterArtifactsByAvailableAudits");s(lse,"filterArtifactsByGatherMode");s(dse,"filterAuditsByAvailableArtifacts");s(mse,"filterAuditsByGatherMode");s(pse,"filterCategoriesByGatherMode");s(fse,"fil\ +terCategoriesByExplicitFilters");s(hse,"warnOnUnknownOnlyCategories");s(hL,"filterCategoriesByAvailableAudits");s(gL,"filterConfigByGatherMode");s(yL,"filterConfigByExplicitFilters")});function bL(e){return Array.isArray(e)&&e.every(dl)}function dl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gse(e){return typeof e!="string"?!1:e==="navigation"||e==="timespan"||e==="snapshot"}function yse(e){return Array.isArray(e)?e.every(gse):!1}function ll(e,t,n=""){n&&(n+=" ");let r=Object.keys(e);if(r.length>0){let a=r.join(", ");throw new Error(`${t} has unrecognized ${n}properties: [${a}]`)}}var Kw,wL,DL=g(()=>{"use strict";d();A();s(bL,"isArrayOfUnknownObjects");s(dl,"isObjectOfUnknownProperties");s(gse,"objectIsGatherMode");s(yse,"isArrayOfGatherModes");s(ll,"assertNoExcessProperties");Kw=class e{static{s(this,"ConfigPlugin")}static _parseAuditsList(t,n){if(t!==void 0){if(!bL(t))throw new Error(`${n} has an invalid audits array.`);return t.map(r=>{let{path:a,...o}=r;if(ll(o,n,"audit"),typeof a!="string")throw new Error(`${n} has a missing audit path.`);return{path:a}})}}static _parseAuditRefsList(t,n){if(!bL(t))throw new Error(`${n} has no valid auditsR\ +efs.`);return t.map(r=>{let{id:a,weight:o,group:i,...c}=r;if(ll(c,n,"auditRef"),typeof a!="string")throw new Error(`${n} has an invalid auditRef id.`);if(typeof o!="number")throw new Error(`${n} has an invalid auditRef weight.`);if(typeof i!="string"&&typeof i<"u")throw new Error(`${n} has an invalid auditRef group.`);let u=i&&`${n}-${i}`;return{id:a,weight:o,group:u}})}static _parseCategory(t,n){if(!dl(t))throw new Error(`${n} has no valid category.`);let{title:r,description:a,manualDescription:o,auditRefs:i,supportedModes:c,...u}=t;if(ll(u,n,"category"),!Br(r))throw new Error(`${n} has an invalid category tile.`);if(!Br(a)&&a!==void 0)throw new Error(`${n} has an invalid category description.`);if(!Br(o)&&o!==void 0)throw new Error(`${n} has an invalid category manualDescription.`);if(!yse(c)&&c!==void 0)throw new Error(`${n} supportedModes must be an array, valid array values are "navigation", "timespan", and "snapshot".`);let l=e._parseAuditRefsList(i,n);return{title:r,auditRefs:l, +description:a,manualDescription:o,supportedModes:c}}static _parseGroups(t,n){if(t===void 0)return;if(!dl(t))throw new Error(`${n} groups json is not defined as an object.`);let r=Object.entries(t),a={};return r.forEach(([o,i])=>{if(!dl(i))throw new Error(`${n} has a group not defined as an object.`);let{title:c,description:u,...l}=i;if(ll(l,n,"group"),!Br(c))throw new Error(`${n} has an invalid group title.`);if(!Br(u)&&u!==void 0)throw new Error(`${n} has an invalid group description.`);a[`${n}-${o}`]={title:c,description:u}}),a}static parsePlugin(t,n){if(t=JSON.parse(JSON.stringify(t)),!dl(t))throw new Error(`${n} is not defined as an object.`);let{audits:r,category:a,groups:o,...i}=t;return ll(i,n),{audits:e._parseAuditsList(r,n),categories:{[n]:e._parseCategory(a,n)},groups:e._parseGroups(o,n)}}},wL=Kw});var xL,EL=g(()=>{"use strict";d();da();us();xL=`/*! axe v4.10.2 * Copyright (c) 2015 - 2024 Deque Systems, Inc. * * Your use of this Source Code Form is subject to the terms of the Mozilla Public @@ -1317,101 +1595,102 @@ eading]"}},{id:"heading-order",evaluate:"heading-order-evaluate",after:"heading-order-after"},{id:"identical-links-same-purpose",evaluate:"identical-links-same-purpose-evaluate",after:"identical-links-same-purpose-after"},{id:"internal-link-present",evaluate:"internal-link-present-evaluate"},{id:"landmark",evaluate:"has-descendant-evaluate",options:{selector:"main, [role=main]"}},{id:"meta-refresh-no-exceptions",evaluate:"meta-refresh-evaluate",options:{minDelay:72e3,maxDelay:!1}},{id:"meta-refresh",evaluate:"meta-refresh-evaluate",options:{minDelay:0,maxDelay:72e3}},{id:"p-as-heading",evaluate:"p-as-heading-evaluate",options:{margins:[{weight:150,italic:!0},{weight:150,size:1.15},{italic:!0,size:1.15},{size:1.4}],passLength:1,failLength:.5}},{id:"region",evaluate:"region-evaluate",after:"region-after",options:{regionMatcher:"dialog, [role=dialog], [role=alertdialog], svg"}},{id:"skip-link",evaluate:"skip-link-evaluate"},{id:"unique-frame-title",evaluate:"unique-frame-title-evaluate",a\ fter:"unique-frame-title-after"},{id:"duplicate-id-active",evaluate:"duplicate-id-evaluate",after:"duplicate-id-after"},{id:"duplicate-id-aria",evaluate:"duplicate-id-evaluate",after:"duplicate-id-after"},{id:"duplicate-id",evaluate:"duplicate-id-evaluate",after:"duplicate-id-after"},{id:"aria-label",evaluate:"aria-label-evaluate"},{id:"aria-labelledby",evaluate:"aria-labelledby-evaluate"},{id:"avoid-inline-spacing",evaluate:"avoid-inline-spacing-evaluate",options:{cssProperties:["line-height","letter-spacing","word-spacing"]}},{id:"button-has-visible-text",evaluate:"has-text-content-evaluate"},{id:"doc-has-title",evaluate:"doc-has-title-evaluate"},{id:"exists",evaluate:"exists-evaluate"},{id:"has-alt",evaluate:"has-alt-evaluate"},{id:"has-visible-text",evaluate:"has-text-content-evaluate"},{id:"important-letter-spacing",evaluate:"inline-style-property-evaluate",options:{cssProperty:"letter-spacing",minValue:.12}},{id:"important-line-height",evaluate:"inline-style-property-evaluate",op\ tions:{multiLineOnly:!0,cssProperty:"line-height",minValue:1.5,normalValue:1}},{id:"important-word-spacing",evaluate:"inline-style-property-evaluate",options:{cssProperty:"word-spacing",minValue:.16}},{id:"is-on-screen",evaluate:"is-on-screen-evaluate"},{id:"non-empty-alt",evaluate:"attr-non-space-content-evaluate",options:{attribute:"alt"}},{id:"non-empty-if-present",evaluate:"non-empty-if-present-evaluate"},{id:"non-empty-placeholder",evaluate:"attr-non-space-content-evaluate",options:{attribute:"placeholder"}},{id:"non-empty-title",evaluate:"attr-non-space-content-evaluate",options:{attribute:"title"}},{id:"non-empty-value",evaluate:"attr-non-space-content-evaluate",options:{attribute:"value"}},{id:"presentational-role",evaluate:"presentational-role-evaluate"},{id:"role-none",evaluate:"matches-definition-evaluate",deprecated:!0,options:{matcher:{attributes:{role:"none"}}}},{id:"role-presentation",evaluate:"matches-definition-evaluate",deprecated:!0,options:{matcher:{attributes:{role\ -:"presentation"}}}},{id:"svg-non-empty-title",evaluate:"svg-non-empty-title-evaluate"},{id:"caption-faked",evaluate:"caption-faked-evaluate"},{id:"html5-scope",evaluate:"html5-scope-evaluate"},{id:"same-caption-summary",evaluate:"same-caption-summary-evaluate"},{id:"scope-value",evaluate:"scope-value-evaluate",options:{values:["row","col","rowgroup","colgroup"]}},{id:"td-has-header",evaluate:"td-has-header-evaluate"},{id:"td-headers-attr",evaluate:"td-headers-attr-evaluate"},{id:"th-has-data-cells",evaluate:"th-has-data-cells-evaluate"},{id:"hidden-content",evaluate:"hidden-content-evaluate"}]})}("object"==typeof window?window:this);`});function Bie(e){return(!e||typeof e=="string")&&(e=new Error(e)),{__failedInBrowser:!0,name:e.name||"Error",message:e.message||"unknown error",stack:e.stack}}function Uie(e){let t=window.__ElementMatches||window.Element.prototype.matches,r=[],n=s(i=>{for(let a of i){if(!e||t.call(a,e)){let o=a;r.push(o)}a.shadowRoot&&n(a.shadowRoot.querySelectorAll("*"))}},"_findAllElements");return n(document.querySelectorAll("*")),r}function cc(e,t=[],r=500){let i=["autofill-information","autofill-prediction","title"];e instanceof ShadowRoot&&(e=e.host);try{let a=e.cloneNode();e.ownerDocument.createElement("template").content.append(a),t.concat(i).forEach(p=>{a.removeAttribute(p)});let u=0;for(let p of a.getAttributeNames()){if(u>r){a.removeAttribute(p);continue}let m=a.getAttribute(p);if(m===null)continue;let f=!1;if(p==="src"&&"currentSrc"in e){let y=e,b=y.currentSrc,w=y.ownerDocument.location.href;new URL(m,w).toString()!==b&&(m=b,f=!0)}let h=sa(m,75);if(h!==m&&(f=!0),m=h,f)if(p==="style"){let y=a; -y.style.cssText=m}else a.setAttribute(p,m);u+=p.length+m.length}let l=/^[\s\S]*?>/,[c]=a.outerHTML.match(l)||[];return c&&u>r?c.slice(0,c.length-1)+" …>":c||""}catch{return`<${e.localName}>`}}function jie(){function e(){let r=Date.now(),n=0;for(;Date.now()-r<500;){let a="";for(let o=0;o<1e4;o++)a+="a";if(a.length===1)throw new Error("will never happen, but prevents compiler optimizations");n++}let i=(Date.now()-r)/1e3;return Math.round(n/10/i)}s(e,"benchmarkIndexGC");function t(){let r=[],n=[];for(let u=0;u<1e5;u++)r[u]=n[u]=u;let i=Date.now(),a=0;for(;a%10!==0||Date.now()-i<500;){let u=a%2===0?r:n,l=a%2===0?n:r;for(let c=0;c<u.length;c++)l[c]=u[c];a++}let o=(Date.now()-i)/1e3;return Math.round(a/10/o)}return s(t,"benchmarkIndexNoGC"),(e()+t())/2}function gw(e){let t=s(o=>o.nodeType===Node.DOCUMENT_FRAGMENT_NODE,"isShadowRoot"),r=s(o=>t(o)?o.host:o.parentNode,"getNodeParent");function n(o){if(t(o))return"a";let u=0,l;for(;l=o.previousSibling;)o=l,!(o.nodeType===Node.TEXT_NODE&&(o.nodeValue|| -"").trim().length===0)&&u++;return u}s(n,"getNodeIndex");let i=e,a=[];for(;i&&r(i);){let o=n(i);a.push([o,i.nodeName]),i=r(i)}return a.reverse(),a.join(",")}function yw(e){function t(n){let i=n.tagName.toLowerCase();return n.id?i+="#"+n.id:n.classList.length>0&&(i+="."+n.classList[0]),i}s(t,"getSelectorPart");let r=[];for(;r.length<4&&(r.unshift(t(e)),!(!e.parentElement||(e=e.parentElement,e.tagName==="HTML"))););return r.join(" > ")}function qie(e){function t(i,a){return i.style[a]||window.getComputedStyle(i)[a]}s(t,"getStyleAttrValue");let r=document.querySelector("html");if(!r)throw new Error("html element not found in document");if(r.scrollHeight<=r.clientHeight||!["scroll","auto","visible"].includes(t(r,"overflowY")))return!1;let n=e;for(;n;){let i=t(n,"position");if(i==="fixed"||i==="sticky")return!0;n=n.parentElement}return!1}function Ls(e){let t=e.tagName.toLowerCase();if(t!=="html"&&t!=="body"){let r=e instanceof HTMLElement&&e.innerText||e.getAttribute("alt")||e.getAttribute( -"aria-label");if(r)return sa(r,80);{let n=e.querySelector("[alt], [aria-label]");if(n)return Ls(n)}}return null}function vw(e){let r=(window.__HTMLElementBoundingClientRect||window.HTMLElement.prototype.getBoundingClientRect).call(e);return{top:Math.round(r.top),bottom:Math.round(r.bottom),left:Math.round(r.left),right:Math.round(r.right),width:Math.round(r.width),height:Math.round(r.height)}}function zie(e){let r=Math.floor(40/e),n=window.requestIdleCallback;window.requestIdleCallback=(i,a)=>n(s(u=>{let l=Date.now();u.__timeRemaining=u.timeRemaining,u.timeRemaining=()=>{let c=u.__timeRemaining();return Math.min(c,Math.max(0,r-(Date.now()-l)))},u.timeRemaining.toString=()=>"function timeRemaining() { [native code] }",i(u)},"cbWrap"),a),window.requestIdleCallback.toString=()=>"function requestIdleCallback() { [native code] }"}function d1(e){window.__lighthouseNodesDontTouchOrAllVarianceGoesAway||(window.__lighthouseNodesDontTouchOrAllVarianceGoesAway=new Map),e=e instanceof ShadowRoot?e. -host:e;let t=yw(e),r=window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.get(e);return r||(r=[window.__lighthouseExecutionContextUniqueIdentifier===void 0?"page":window.__lighthouseExecutionContextUniqueIdentifier,window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.size,e.tagName].join("-"),window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.set(e,r)),{lhId:r,devtoolsNodePath:gw(e),selector:t,boundingRect:vw(e),snippet:cc(e),nodeLabel:Ls(e)||t}}function sa(e,t){return Me.truncate(e,t)}function Hie(){if(globalThis.isDevtools||globalThis.isLightrider)return!0;let e=Wa("core/lib/page-functions.js");try{return e.resolve("lighthouse-logger"),!1}catch{return!0}}function Gie(){if(!Hie())return"";let t=(()=>{let i=s(()=>{},"a")}).toString().replace("/* @__PURE__ */","").match(/=\s*([\w_]+)\(/);if(!t)throw new Error("Could not determine esbuild function wrapper name");let r=s((i,a)=>Object.defineProperty(i,"name",{value:a,configurable:!0}),"esbuildFunctionWrapper");return`let ${t[1]}=${r}`} -function lc(e){let t=e.toString().match(/function ([\w$]+)/);if(!t)throw new Error(`could not find function name for: ${e}`);return t[1]}var Wie,p1,HP,WP,Vie,qe,Rr=g(()=>{"use strict";d();is();Pr();s(Bie,"wrapRuntimeEvalErrorInBrowser");s(Uie,"getElementsInDocument");s(cc,"getOuterHTMLSnippet");s(jie,"computeBenchmarkIndex");s(gw,"getNodePath");s(yw,"getNodeSelector");s(qie,"isPositionFixed");s(Ls,"getNodeLabel");s(vw,"getBoundingClientRect");s(zie,"wrapRequestIdleCallback");s(d1,"getNodeDetails");s(sa,"truncate");s(Hie,"isBundledEnvironment");Wie=Gie();s(Gie,"createEsbuildFunctionWrapper");s(lc,"getRuntimeFunctionName");p1={truncate:lc(sa),getNodeLabel:lc(Ls),getOuterHTMLSnippet:lc(cc),getNodeDetails:lc(d1)};sa.toString=()=>`function ${p1.truncate}(string, characterLimit) { - const Util = { ${Me.truncate} }; +:"presentation"}}}},{id:"svg-non-empty-title",evaluate:"svg-non-empty-title-evaluate"},{id:"caption-faked",evaluate:"caption-faked-evaluate"},{id:"html5-scope",evaluate:"html5-scope-evaluate"},{id:"same-caption-summary",evaluate:"same-caption-summary-evaluate"},{id:"scope-value",evaluate:"scope-value-evaluate",options:{values:["row","col","rowgroup","colgroup"]}},{id:"td-has-header",evaluate:"td-has-header-evaluate"},{id:"td-headers-attr",evaluate:"td-headers-attr-evaluate"},{id:"th-has-data-cells",evaluate:"th-has-data-cells-evaluate"},{id:"hidden-content",evaluate:"hidden-content-evaluate"}]})}("object"==typeof window?window:this);`});function vse(e){return(!e||typeof e=="string")&&(e=new Error(e)),{__failedInBrowser:!0,name:e.name||"Error",message:e.message||"unknown error",stack:e.stack}}function bse(e){let t=window.__ElementMatches||window.Element.prototype.matches,n=[],r=s(a=>{for(let o of a){if(!e||t.call(o,e)){let i=o;n.push(i)}o.shadowRoot&&r(o.shadowRoot.querySelectorAll("*"))}},"_findAllElements");return r(document.querySelectorAll("*")),n}function pl(e,t=[],n=500){let a=["autofill-information","autofill-prediction","title"];e instanceof ShadowRoot&&(e=e.host);try{let o=e.cloneNode();e.ownerDocument.createElement("template").content.append(o),t.concat(a).forEach(m=>{o.removeAttribute(m)});let c=0;for(let m of o.getAttributeNames()){if(c>n){o.removeAttribute(m);continue}let p=o.getAttribute(m);if(p===null)continue;let f=!1;if(m==="src"&&"currentSrc"in e){let y=e,v=y.currentSrc,w=y.ownerDocument.location.href;new URL(p,w).toString()!==v&&(p=v,f=!0)}let h=bo(p,75);if(h!==p&&(f=!0),p=h,f)if(m==="style"){let y=o; +y.style.cssText=p}else o.setAttribute(m,p);c+=m.length+p.length}let u=/^[\s\S]*?>/,[l]=o.outerHTML.match(u)||[];return l&&c>n?l.slice(0,l.length-1)+" …>":l||""}catch{return`<${e.localName}>`}}function wse(){function e(){let n=Date.now(),r=0;for(;Date.now()-n<500;){let o="";for(let i=0;i<1e4;i++)o+="a";if(o.length===1)throw new Error("will never happen, but prevents compiler optimizations");r++}let a=(Date.now()-n)/1e3;return Math.round(r/10/a)}s(e,"benchmarkIndexGC");function t(){let n=[],r=[];for(let c=0;c<1e5;c++)n[c]=r[c]=c;let a=Date.now(),o=0;for(;o%10!==0||Date.now()-a<500;){let c=o%2===0?n:r,u=o%2===0?r:n;for(let l=0;l<c.length;l++)u[l]=c[l];o++}let i=(Date.now()-a)/1e3;return Math.round(o/10/i)}return s(t,"benchmarkIndexNoGC"),(e()+t())/2}function Jw(e){let t=s(i=>i.nodeType===Node.DOCUMENT_FRAGMENT_NODE,"isShadowRoot"),n=s(i=>t(i)?i.host:i.parentNode,"getNodeParent");function r(i){if(t(i))return"a";let c=0,u;for(;u=i.previousSibling;)i=u,!(i.nodeType===Node.TEXT_NODE&&(i.nodeValue|| +"").trim().length===0)&&c++;return c}s(r,"getNodeIndex");let a=e,o=[];for(;a&&n(a);){let i=r(a);o.push([i,a.nodeName]),a=n(a)}return o.reverse(),o.join(",")}function Xw(e){function t(r){let a=r.tagName.toLowerCase();return r.id?a+="#"+r.id:r.classList.length>0&&(a+="."+r.classList[0]),a}s(t,"getSelectorPart");let n=[];for(;n.length<4&&(n.unshift(t(e)),!(!e.parentElement||(e=e.parentElement,e.tagName==="HTML"))););return n.join(" > ")}function Dse(e){function t(a,o){return a.style[o]||window.getComputedStyle(a)[o]}s(t,"getStyleAttrValue");let n=document.querySelector("html");if(!n)throw new Error("html element not found in document");if(n.scrollHeight<=n.clientHeight||!["scroll","auto","visible"].includes(t(n,"overflowY")))return!1;let r=e;for(;r;){let a=t(r,"position");if(a==="fixed"||a==="sticky")return!0;r=r.parentElement}return!1}function Ls(e){let t=e.tagName.toLowerCase();if(t!=="html"&&t!=="body"){let n=e instanceof HTMLElement&&e.innerText||e.getAttribute("alt")||e.getAttribute( +"aria-label");if(n)return bo(n,80);{let r=e.querySelector("[alt], [aria-label]");if(r)return Ls(r)}}return null}function Zw(e){let n=(window.__HTMLElementBoundingClientRect||window.HTMLElement.prototype.getBoundingClientRect).call(e);return{top:Math.round(n.top),bottom:Math.round(n.bottom),left:Math.round(n.left),right:Math.round(n.right),width:Math.round(n.width),height:Math.round(n.height)}}function xse(e){let n=Math.floor(40/e),r=window.requestIdleCallback;window.requestIdleCallback=(a,o)=>r(s(c=>{let u=Date.now();c.__timeRemaining=c.timeRemaining,c.timeRemaining=()=>{let l=c.__timeRemaining();return Math.min(l,Math.max(0,n-(Date.now()-u)))},c.timeRemaining.toString=()=>"function timeRemaining() { [native code] }",a(c)},"cbWrap"),o),window.requestIdleCallback.toString=()=>"function requestIdleCallback() { [native code] }"}function g1(e){window.__lighthouseNodesDontTouchOrAllVarianceGoesAway||(window.__lighthouseNodesDontTouchOrAllVarianceGoesAway=new Map),e=e instanceof ShadowRoot?e. +host:e;let t=Xw(e),n=window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.get(e);return n||(n=[window.__lighthouseExecutionContextUniqueIdentifier===void 0?"page":window.__lighthouseExecutionContextUniqueIdentifier,window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.size,e.tagName].join("-"),window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.set(e,n)),{lhId:n,devtoolsNodePath:Jw(e),selector:t,boundingRect:Zw(e),snippet:pl(e),nodeLabel:Ls(e)||t}}function bo(e,t){return Le.truncate(e,t)}function Ese(){if(globalThis.isDevtools||globalThis.isLightrider)return!0;let e=ri("core/lib/page-functions.js");try{return e.resolve("lighthouse-logger"),!1}catch{return!0}}function Sse(){if(!Ese())return"";let t=(()=>{let a=s(()=>{},"a")}).toString().replace("/* @__PURE__ */","").match(/=\s*([\w_]+)\(/);if(!t)throw new Error("Could not determine esbuild function wrapper name");let n=s((a,o)=>Object.defineProperty(a,"name",{value:o,configurable:!0}),"esbuildFunctionWrapper");return`let ${t[1]}=${n}`} +function ml(e){let t=e.toString().match(/function ([\w$]+)/);if(!t)throw new Error(`could not find function name for: ${e}`);return t[1]}var Tse,y1,TL,SL,Cse,je,On=g(()=>{"use strict";d();us();zn();s(vse,"wrapRuntimeEvalErrorInBrowser");s(bse,"getElementsInDocument");s(pl,"getOuterHTMLSnippet");s(wse,"computeBenchmarkIndex");s(Jw,"getNodePath");s(Xw,"getNodeSelector");s(Dse,"isPositionFixed");s(Ls,"getNodeLabel");s(Zw,"getBoundingClientRect");s(xse,"wrapRequestIdleCallback");s(g1,"getNodeDetails");s(bo,"truncate");s(Ese,"isBundledEnvironment");Tse=Sse();s(Sse,"createEsbuildFunctionWrapper");s(ml,"getRuntimeFunctionName");y1={truncate:ml(bo),getNodeLabel:ml(Ls),getOuterHTMLSnippet:ml(pl),getNodeDetails:ml(g1)};bo.toString=()=>`function ${y1.truncate}(string, characterLimit) { + const Util = { ${Le.truncate} }; return Util.truncate(string, characterLimit); -}`;HP=Ls.toString();Ls.toString=()=>`function ${p1.getNodeLabel}(element) { - ${sa}; - return (${HP})(element); -}`;WP=cc.toString();cc.toString=()=>`function ${p1.getOuterHTMLSnippet}(element, ignoreAttrs = [], snippetCharacterLimit = 500) { - ${sa}; - return (${WP})(element, ignoreAttrs, snippetCharacterLimit); -}`;Vie=d1.toString();d1.toString=()=>`function ${p1.getNodeDetails}(element) { - ${sa}; - ${gw}; - ${yw}; - ${vw}; - ${WP}; - ${HP}; - return (${Vie})(element); -}`;qe={wrapRuntimeEvalErrorInBrowser:Bie,getElementsInDocument:Uie,getOuterHTMLSnippet:cc,computeBenchmarkIndex:jie,getNodeDetails:d1,getNodePath:gw,getNodeSelector:yw,getNodeLabel:Ls,isPositionFixed:qie,wrapRequestIdleCallback:zie,getBoundingClientRect:vw,truncate:sa,esbuildFunctionWrapperString:Wie,getRuntimeFunctionName:lc}});var GP={};x(GP,{default:()=>Yie});async function bw(){let e=window.axe,t=`lighthouse-${Math.random()}`;e.configure({branding:{application:t},noHtml:!0});let r=await e.run(document,{elementRef:!0,runOnly:{type:"tag",values:["wcag2a","wcag2aa"]},resultTypes:["violations","inapplicable"],rules:{accesskeys:{enabled:!0},"area-alt":{enabled:!1},"aria-allowed-role":{enabled:!0},"aria-braille-equivalent":{enabled:!1},"aria-conditional-attr":{enabled:!0},"aria-deprecated-role":{enabled:!0},"aria-dialog-name":{enabled:!0},"aria-prohibited-attr":{enabled:!0},"aria-roledescription":{enabled:!1},"aria-treeitem-name":{enabled:!0},"aria-text":{enabled:!0},"audio-caption":{enabled:!1},blink:{enabled:!1},"duplicate-id":{enabled:!1},"empty-heading":{enabled:!0},"frame-focusable-content":{enabled:!1},"frame-title-unique":{enabled:!1},"heading-order":{enabled:!0},"html-xml-lang-mismatch":{enabled:!0},"identical-links-same-purpose":{enabled:!0},"image-redundant-alt":{enabled:!0},"input-button-name":{enabled:!0}, -"label-content-name-mismatch":{enabled:!0},"landmark-one-main":{enabled:!0},"link-in-text-block":{enabled:!0},marquee:{enabled:!1},"meta-viewport":{enabled:!0},"nested-interactive":{enabled:!1},"no-autoplay-audio":{enabled:!1},"role-img-alt":{enabled:!1},"scrollable-region-focusable":{enabled:!1},"select-name":{enabled:!0},"server-side-image-map":{enabled:!1},"skip-link":{enabled:!0},"summary-name":{enabled:!1},"svg-img-alt":{enabled:!1},tabindex:{enabled:!0},"table-duplicate-name":{enabled:!0},"table-fake-caption":{enabled:!0},"target-size":{enabled:!0},"td-has-header":{enabled:!0}}});return document.documentElement.scrollTop=0,{violations:r.violations.map(m1),incomplete:r.incomplete.map(m1),notApplicable:r.inapplicable.map(n=>({id:n.id})),passes:r.passes.map(n=>({id:n.id})),version:r.testEngine.version}}async function $ie(){let e={x:window.scrollX,y:window.scrollY};try{return await bw()}finally{window.scrollTo(e.x,e.y)}}function m1(e){let t=e.nodes.map(i=>{let{target:a,failureSummary:o, -element:u}=i,l=getNodeDetails(u),c=new Set,p=s(h=>[null,"minor","moderate","serious","critical"].indexOf(h),"impactToNumber"),m=[...i.any,...i.all,...i.none].sort((h,y)=>p(y.impact)-p(h.impact));for(let h of m)for(let y of h.relatedNodes||[]){let b=y.element;if(c.size>=3)break;b&&u!==b&&c.add(b)}let f=[...c].map(getNodeDetails);return{target:a,failureSummary:o,node:l,relatedNodes:f}}),r=e.error,n;return r instanceof Error&&(n={name:r.name,message:r.message}),{id:e.id,impact:e.impact||void 0,tags:e.tags,nodes:t,error:n}}var ww,Yie,VP=g(()=>{"use strict";d();Ke();zP();Rr();s(bw,"runA11yChecks");s($ie,"runA11yChecksAndResetScroll");s(m1,"createAxeRuleResultArtifact");ww=class extends X{static{s(this,"Accessibility")}meta={supportedModes:["snapshot","navigation"]};static pageFns={runA11yChecks:bw,createAxeRuleResultArtifact:m1};getArtifact(t){return t.driver.executionContext.evaluate($ie,{args:[],useIsolation:!0,deps:[qP,qe.getNodeDetails,m1,bw]})}},Yie=ww});function $P(e){if(!(/No node.*found/.test(e.message)||/Node.*does not belong to the document/.test(e.message)))throw e}async function YP(e,t){try{return(await e.sendCommand("DOM.resolveNode",{backendNodeId:t})).object.objectId}catch(r){return $P(r)}}async function KP(e,t){try{let{nodeId:r}=await e.sendCommand("DOM.pushNodeByPathToFrontend",{path:t}),{object:{objectId:n}}=await e.sendCommand("DOM.resolveNode",{nodeId:r});return n}catch(r){return $P(r)}}var Dw=g(()=>{"use strict";d();s($P,"handlePotentialMissingNodeError");s(YP,"resolveNodeIdToObjectId");s(KP,"resolveDevtoolsNodePathToObjectId")});var JP={};x(JP,{default:()=>Zie});function Kie(){let e=s(n=>{try{return new URL(n,window.location.href).href}catch{return""}},"resolveURLOrEmpty");function t(n){return(n.getAttribute("onclick")||"").slice(0,1024)}return s(t,"getTruncatedOnclick"),getElementsInDocument("a").map(n=>n instanceof HTMLAnchorElement?{href:n.href,rawHref:n.getAttribute("href")||"",onclick:t(n),role:n.getAttribute("role")||"",name:n.name,text:n.innerText,rel:n.rel,target:n.target,id:n.getAttribute("id")||"",node:getNodeDetails(n)}:{href:e(n.href.baseVal),rawHref:n.getAttribute("href")||"",onclick:t(n),role:n.getAttribute("role")||"",text:n.textContent||"",rel:"",target:n.target.baseVal||"",id:n.getAttribute("id")||"",node:getNodeDetails(n)})}async function Jie(e,t){let r=await KP(e,t);return r?(await e.sendCommand("DOMDebugger.getEventListeners",{objectId:r})).listeners.map(({type:i})=>({type:i})):[]}var Ew,Zie,ZP=g(()=>{"use strict";d();Ke();Rr();Dw();s(Kie,"collectAnchorElements");s(Jie,"getEventListeners"); -Ew=class extends X{static{s(this,"AnchorElements")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let r=t.driver.defaultSession,n=await t.driver.executionContext.evaluate(Kie,{args:[],useIsolation:!0,deps:[qe.getElementsInDocument,qe.getNodeDetails]});await r.sendCommand("DOM.enable"),await r.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});let i=n.map(async o=>{let u=await Jie(r,o.node.devtoolsNodePath);return{...o,listeners:u}}),a=await Promise.all(i);return await r.sendCommand("DOM.disable"),a}},Zie=Ew});var ua,f1=g(()=>{"use strict";d();or();Rr();ua=class e{static{s(this,"ExecutionContext")}constructor(t){this._session=t,this._executionContextId=void 0,this._executionContextIdentifiersCreated=0,t.on("Page.frameNavigated",()=>this.clearContextId()),t.on("Runtime.executionContextDestroyed",r=>{r.executionContextId===this._executionContextId&&this.clearContextId()})}getContextId(){return this._executionContextId}clearContextId(){this._executionContextId=void 0}async _getOrCreateIsolatedContextId(){if(typeof this._executionContextId=="number")return this._executionContextId;await this._session.sendCommand("Page.enable"),await this._session.sendCommand("Runtime.enable");let r=(await this._session.sendCommand("Page.getFrameTree")).frameTree.frame.id,n=await this._session.sendCommand("Page.createIsolatedWorld",{frameId:r,worldName:"lighthouse_isolated_context"});return this._executionContextId=n.executionContextId,this._executionContextIdentifiersCreated++,n.executionContextId}async _evaluateInContext(t,r,n){ -let i=r===void 0?void 0:this._executionContextIdentifiersCreated,a={expression:`(function wrapInNativePromise() { +}`;TL=Ls.toString();Ls.toString=()=>`function ${y1.getNodeLabel}(element) { + ${bo}; + return (${TL})(element); +}`;SL=pl.toString();pl.toString=()=>`function ${y1.getOuterHTMLSnippet}(element, ignoreAttrs = [], snippetCharacterLimit = 500) { + ${bo}; + return (${SL})(element, ignoreAttrs, snippetCharacterLimit); +}`;Cse=g1.toString();g1.toString=()=>`function ${y1.getNodeDetails}(element) { + ${bo}; + ${Jw}; + ${Xw}; + ${Zw}; + ${SL}; + ${TL}; + return (${Cse})(element); +}`;je={wrapRuntimeEvalErrorInBrowser:vse,getElementsInDocument:bse,getOuterHTMLSnippet:pl,computeBenchmarkIndex:wse,getNodeDetails:g1,getNodePath:Jw,getNodeSelector:Xw,getNodeLabel:Ls,isPositionFixed:Dse,wrapRequestIdleCallback:xse,getBoundingClientRect:Zw,truncate:bo,esbuildFunctionWrapperString:Tse,getRuntimeFunctionName:ml}});var CL={};T(CL,{default:()=>Fse});async function Qw(){let e=window.axe,t=`lighthouse-${Math.random()}`;e.configure({branding:{application:t},noHtml:!0});let n=await e.run(document,{elementRef:!0,runOnly:{type:"tag",values:["wcag2a","wcag2aa"]},resultTypes:["violations","inapplicable"],rules:{accesskeys:{enabled:!0},"area-alt":{enabled:!1},"aria-allowed-role":{enabled:!0},"aria-braille-equivalent":{enabled:!1},"aria-conditional-attr":{enabled:!0},"aria-deprecated-role":{enabled:!0},"aria-dialog-name":{enabled:!0},"aria-prohibited-attr":{enabled:!0},"aria-roledescription":{enabled:!1},"aria-treeitem-name":{enabled:!0},"aria-text":{enabled:!0},"audio-caption":{enabled:!1},blink:{enabled:!1},"duplicate-id":{enabled:!1},"empty-heading":{enabled:!0},"frame-focusable-content":{enabled:!1},"frame-title-unique":{enabled:!1},"heading-order":{enabled:!0},"html-xml-lang-mismatch":{enabled:!0},"identical-links-same-purpose":{enabled:!0},"image-redundant-alt":{enabled:!0},"input-button-name":{enabled:!0}, +"label-content-name-mismatch":{enabled:!0},"landmark-one-main":{enabled:!0},"link-in-text-block":{enabled:!0},marquee:{enabled:!1},"meta-viewport":{enabled:!0},"nested-interactive":{enabled:!1},"no-autoplay-audio":{enabled:!1},"role-img-alt":{enabled:!1},"scrollable-region-focusable":{enabled:!1},"select-name":{enabled:!0},"server-side-image-map":{enabled:!1},"skip-link":{enabled:!0},"summary-name":{enabled:!1},"svg-img-alt":{enabled:!1},tabindex:{enabled:!0},"table-duplicate-name":{enabled:!0},"table-fake-caption":{enabled:!0},"target-size":{enabled:!0},"td-has-header":{enabled:!0}}});return document.documentElement.scrollTop=0,{violations:n.violations.map(v1),incomplete:n.incomplete.map(v1),notApplicable:n.inapplicable.map(r=>({id:r.id})),passes:n.passes.map(r=>({id:r.id})),version:n.testEngine.version}}async function kse(){let e={x:window.scrollX,y:window.scrollY};try{return await Qw()}finally{window.scrollTo(e.x,e.y)}}function v1(e){let t=e.nodes.map(a=>{let{target:o,failureSummary:i, +element:c}=a,u=getNodeDetails(c),l=new Set,m=s(h=>[null,"minor","moderate","serious","critical"].indexOf(h),"impactToNumber"),p=[...a.any,...a.all,...a.none].sort((h,y)=>m(y.impact)-m(h.impact));for(let h of p)for(let y of h.relatedNodes||[]){let v=y.element;if(l.size>=3)break;v&&c!==v&&l.add(v)}let f=[...l].map(getNodeDetails);return{target:o,failureSummary:i,node:u,relatedNodes:f}}),n=e.error,r;return n instanceof Error&&(r={name:n.name,message:n.message}),{id:e.id,impact:e.impact||void 0,tags:e.tags,nodes:t,error:r}}var eD,Fse,kL=g(()=>{"use strict";d();Ke();EL();On();s(Qw,"runA11yChecks");s(kse,"runA11yChecksAndResetScroll");s(v1,"createAxeRuleResultArtifact");eD=class extends Q{static{s(this,"Accessibility")}meta={supportedModes:["snapshot","navigation"]};static pageFns={runA11yChecks:Qw,createAxeRuleResultArtifact:v1};getArtifact(t){return t.driver.executionContext.evaluate(kse,{args:[],useIsolation:!0,deps:[xL,je.getNodeDetails,v1,Qw]})}},Fse=eD});function FL(e){if(!(/No node.*found/.test(e.message)||/Node.*does not belong to the document/.test(e.message)))throw e}async function RL(e,t){try{return(await e.sendCommand("DOM.resolveNode",{backendNodeId:t})).object.objectId}catch(n){return FL(n)}}async function IL(e,t){try{let{nodeId:n}=await e.sendCommand("DOM.pushNodeByPathToFrontend",{path:t}),{object:{objectId:r}}=await e.sendCommand("DOM.resolveNode",{nodeId:n});return r}catch(n){return FL(n)}}var tD=g(()=>{"use strict";d();s(FL,"handlePotentialMissingNodeError");s(RL,"resolveNodeIdToObjectId");s(IL,"resolveDevtoolsNodePathToObjectId")});var AL={};T(AL,{default:()=>Ase});function Rse(){let e=s(r=>{try{return new URL(r,window.location.href).href}catch{return""}},"resolveURLOrEmpty");function t(r){return(r.getAttribute("onclick")||"").slice(0,1024)}return s(t,"getTruncatedOnclick"),getElementsInDocument("a").map(r=>r instanceof HTMLAnchorElement?{href:r.href,rawHref:r.getAttribute("href")||"",onclick:t(r),role:r.getAttribute("role")||"",name:r.name,text:r.innerText,rel:r.rel,target:r.target,id:r.getAttribute("id")||"",node:getNodeDetails(r)}:{href:e(r.href.baseVal),rawHref:r.getAttribute("href")||"",onclick:t(r),role:r.getAttribute("role")||"",text:r.textContent||"",rel:"",target:r.target.baseVal||"",id:r.getAttribute("id")||"",node:getNodeDetails(r)})}async function Ise(e,t){let n=await IL(e,t);return n?(await e.sendCommand("DOMDebugger.getEventListeners",{objectId:n})).listeners.map(({type:a})=>({type:a})):[]}var nD,Ase,_L=g(()=>{"use strict";d();Ke();On();tD();s(Rse,"collectAnchorElements");s(Ise,"getEventListeners"); +nD=class extends Q{static{s(this,"AnchorElements")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let n=t.driver.defaultSession,r=await t.driver.executionContext.evaluate(Rse,{args:[],useIsolation:!0,deps:[je.getElementsInDocument,je.getNodeDetails]});await n.sendCommand("DOM.enable"),await n.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});let a=r.map(async i=>{let c=await Ise(n,i.node.devtoolsNodePath);return{...i,listeners:c}}),o=await Promise.all(a);return await n.sendCommand("DOM.disable"),o}},Ase=nD});var wo,b1=g(()=>{"use strict";d();hn();On();wo=class e{static{s(this,"ExecutionContext")}constructor(t){this._session=t,this._executionContextId=void 0,this._executionContextIdentifiersCreated=0,t.on("Page.frameNavigated",()=>this.clearContextId()),t.on("Runtime.executionContextDestroyed",n=>{n.executionContextId===this._executionContextId&&this.clearContextId()})}getContextId(){return this._executionContextId}clearContextId(){this._executionContextId=void 0}async _getOrCreateIsolatedContextId(){if(typeof this._executionContextId=="number")return this._executionContextId;await this._session.sendCommand("Page.enable"),await this._session.sendCommand("Runtime.enable");let n=(await this._session.sendCommand("Page.getFrameTree")).frameTree.frame.id,r=await this._session.sendCommand("Page.createIsolatedWorld",{frameId:n,worldName:"lighthouse_isolated_context"});return this._executionContextId=r.executionContextId,this._executionContextIdentifiersCreated++,r.executionContextId}async _evaluateInContext(t,n,r){ +let a=n===void 0?void 0:this._executionContextIdentifiersCreated,o={expression:`(function wrapInNativePromise() { ${e._cachedNativesPreamble}; globalThis.__lighthouseExecutionContextUniqueIdentifier = - ${i}; - ${qe.esbuildFunctionWrapperString} + ${a}; + ${je.esbuildFunctionWrapperString} return new Promise(function (resolve) { return Promise.resolve() .then(_ => ${t}) - .catch(${qe.wrapRuntimeEvalErrorInBrowser}) + .catch(${je.wrapRuntimeEvalErrorInBrowser}) .then(resolve); }); }()) - //# sourceURL=_lighthouse-eval.js`,includeCommandLineAPI:!0,awaitPromise:!0,returnByValue:!0,timeout:n,contextId:r};this._session.setNextProtocolTimeout(n);let o=await this._session.sendCommand("Runtime.evaluate",a),u=o.exceptionDetails;if(u){let p=["Runtime.evaluate exception",`Expression: ${t.replace(/\s+/g," ").substring(0,100)} ----- (elided)`,u.stackTrace?null:`Parse error at: ${u.lineNumber+1}:${u.columnNumber+1}`,u.exception?.description||u.text].filter(Boolean),m=new Error(p.join(` -`));return Promise.reject(m)}if(o.result===void 0)return Promise.reject(new Error('Runtime.evaluate response did not contain a "result" object'));let l=o.result.value;return l?.__failedInBrowser?Promise.reject(Object.assign(new Error,l)):l}async evaluateAsync(t,r={}){let n=this._session.hasNextProtocolTimeout()?this._session.getNextProtocolTimeout():6e4,i=r.useIsolation?await this._getOrCreateIsolatedContextId():void 0;try{return await this._evaluateInContext(t,i,n)}catch(a){if(i&&a.message.includes("Cannot find context")){this.clearContextId();let o=await this._getOrCreateIsolatedContextId();return this._evaluateInContext(t,o,n)}throw a}}evaluate(t,r){let n=e.serializeArguments(r.args),a=`(() => { - ${e.serializeDeps(r.deps)} - return (${t})(${n}); - })()`;return this.evaluateAsync(a,r)}async evaluateOnNewDocument(t,r){let n=e.serializeArguments(r.args),i=e.serializeDeps(r.deps),a=`(() => { + //# sourceURL=_lighthouse-eval.js`,includeCommandLineAPI:!0,awaitPromise:!0,returnByValue:!0,timeout:r,contextId:n};this._session.setNextProtocolTimeout(r);let i=await this._session.sendCommand("Runtime.evaluate",o),c=i.exceptionDetails;if(c){let m=["Runtime.evaluate exception",`Expression: ${t.replace(/\s+/g," ").substring(0,100)} +---- (elided)`,c.stackTrace?null:`Parse error at: ${c.lineNumber+1}:${c.columnNumber+1}`,c.exception?.description||c.text].filter(Boolean),p=new Error(m.join(` +`));return Promise.reject(p)}if(i.result===void 0)return Promise.reject(new Error('Runtime.evaluate response did not contain a "result" object'));let u=i.result.value;return u?.__failedInBrowser?Promise.reject(Object.assign(new Error,u)):u}async evaluateAsync(t,n={}){let r=this._session.hasNextProtocolTimeout()?this._session.getNextProtocolTimeout():6e4,a=n.useIsolation?await this._getOrCreateIsolatedContextId():void 0;try{return await this._evaluateInContext(t,a,r)}catch(o){if(a&&o.message.includes("Cannot find context")){this.clearContextId();let i=await this._getOrCreateIsolatedContextId();return this._evaluateInContext(t,i,r)}throw o}}evaluate(t,n){let r=e.serializeArguments(n.args),o=`(() => { + ${e.serializeDeps(n.deps)} + return (${t})(${r}); + })()`;return this.evaluateAsync(o,n)}async evaluateOnNewDocument(t,n){let r=e.serializeArguments(n.args),a=e.serializeDeps(n.deps),o=`(() => { ${e._cachedNativesPreamble}; - ${i}; - (${t})(${n}); + ${a}; + (${t})(${r}); })() - //# sourceURL=_lighthouse-eval.js`;await this._session.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source:a})}async cacheNativesOnNewDocument(){await this.evaluateOnNewDocument(()=>{window.__nativePromise=window.Promise,window.__nativeURL=window.URL,window.__nativePerformance=window.performance,window.__nativeFetch=window.fetch,window.__ElementMatches=window.Element.prototype.matches,window.__HTMLElementBoundingClientRect=window.HTMLElement.prototype.getBoundingClientRect},{args:[]})}static _cachedNativesPreamble=["const Promise = globalThis.__nativePromise || globalThis.Promise","const URL = globalThis.__nativeURL || globalThis.URL","const performance = globalThis.__nativePerformance || globalThis.performance","const fetch = globalThis.__nativeFetch || globalThis.fetch"].join(`; -`);static serializeArguments(t){return t.map(r=>r===void 0?"undefined":JSON.stringify(r)).join(",")}static serializeDeps(t){return t=[qe.esbuildFunctionWrapperString,...t||[]],t.map(r=>{if(typeof r=="function"){let n=r.toString(),i=qe.getRuntimeFunctionName(r);return i!==r.name?`${n}; const ${r.name} = ${i};`:n}else return r}).join(` -`)}}});function XP(){return{promise:Promise.resolve(),cancel(){}}}function h1(e){let t=s(()=>{throw new Error("waitForFrameNavigated.cancel() called before it was defined")},"cancel");return{promise:new Promise((n,i)=>{e.once("Page.frameNavigated",n),t=s(()=>{e.off("Page.frameNavigated",n),i(new Error("Wait for navigated cancelled"))},"cancel")}),cancel:t}}function Xie(e,t,r){let n=s(()=>{throw new Error("waitForFcp.cancel() called before it was defined")},"cancel");return{promise:new Promise((a,o)=>{let u=setTimeout(()=>{o(new z(z.errors.NO_FCP))},r),l,c=s(m=>{m.name==="firstContentfulPaint"&&(l=setTimeout(()=>{a(),n()},t))},"lifecycleListener");e.on("Page.lifecycleEvent",c);let p=!1;n=s(()=>{p||(p=!0,e.off("Page.lifecycleEvent",c),u&&clearTimeout(u),l&&clearTimeout(l),o(new Error("Wait for FCP canceled")))},"cancel")}),cancel:n}}function Tw(e,t,r){let n=!1,i,a=s(()=>{throw new Error("waitForNetworkIdle.cancel() called before it was defined")},"cancel"),{networkQuietThresholdMs:o,busyEvent:u, -idleEvent:l,isIdle:c}=r;return{promise:new Promise((m,f)=>{let h=s(()=>{t.once(u,y),i=setTimeout(()=>{a(),m()},o)},"onIdle"),y=s(()=>{t.once(l,h),i&&clearTimeout(i)},"onBusy"),b=s(()=>{n=!0,c(t)?h():y()},"domContentLoadedListener"),w=s(()=>{if(!n){N.verbose("waitFor","Waiting on DomContentLoaded");return}let T=t.getInflightRequests();if(N.isVerbose()&&T.length<20&&T.length>0){N.verbose("waitFor",`=== Waiting on ${T.length} requests to finish`);for(let S of T)N.verbose("waitFor",`Waiting on ${S.url.slice(0,120)} to finish`)}},"logStatus");t.on("requeststarted",w),t.on("requestfinished",w),t.on(u,w),r.pretendDCLAlreadyFired?b():e.once("Page.domContentEventFired",b);let E=!1;a=s(()=>{E||(E=!0,i&&clearTimeout(i),r.pretendDCLAlreadyFired||e.off("Page.domContentEventFired",b),t.removeListener(u,y),t.removeListener(l,h),t.removeListener("requeststarted",w),t.removeListener("requestfinished",w),t.removeListener(u,w))},"cancel")}),cancel:a}}function Qie(e,t){if(!t)return{promise:Promise.resolve(), -cancel:()=>{}};let r,n=!1;async function i(l,c){if(n)return;let p=await l.evaluate(tae,{args:[],useIsolation:!0});if(!n&&typeof p=="number")if(p>=t)N.verbose("waitFor",`CPU has been idle for ${p} ms`),c();else{N.verbose("waitFor",`CPU has been idle for ${p} ms`);let m=t-p;r=setTimeout(()=>i(l,c),m)}}s(i,"checkForQuiet");let a=s(()=>{throw new Error("waitForCPUIdle.cancel() called before it was defined")},"cancel"),o=new ua(e);return{promise:new Promise((l,c)=>{o.evaluate(eae,{args:[],useIsolation:!0}).then(()=>i(o,l)).catch(c),a=s(()=>{n||(n=!0,r&&clearTimeout(r),c(new Error("Wait for CPU idle canceled")))},"cancel")}),cancel:a}}function eae(){if(window.____lastLongTask!==void 0)return;window.____lastLongTask=performance.now(),new window.PerformanceObserver(t=>{let r=t.getEntries();for(let n of r)if(n.entryType==="longtask"){let i=n.startTime+n.duration;window.____lastLongTask=Math.max(window.____lastLongTask||0,i)}}).observe({type:"longtask",buffered:!0})}function tae(){return new Promise( -e=>{let t=performance.now(),r=window.____lastLongTask||0;setTimeout(()=>{let n=window.____lastLongTask||0,i=r===n?t-r:0;e(i)},150)})}function xw(e,t){let r=s(()=>{throw new Error("waitForLoadEvent.cancel() called before it was defined")},"cancel");return{promise:new Promise((i,a)=>{let o,u=s(function(){o=setTimeout(i,t)},"loadListener");e.once("Page.loadEventFired",u);let l=!1;r=s(()=>{l||(l=!0,e.off("Page.loadEventFired",u),o&&clearTimeout(o))},"cancel")}),cancel:r}}async function rae(e){try{return e.setNextProtocolTimeout(1e3),await e.sendCommand("Runtime.evaluate",{expression:'"ping"',returnByValue:!0,timeout:1e3}),!1}catch{return!0}}async function QP(e,t,r){let{pauseAfterFcpMs:n,pauseAfterLoadMs:i,networkQuietThresholdMs:a,cpuQuietThresholdMs:o,maxWaitForLoadedMs:u,maxWaitForFcpMs:l}=r,{waitForFcp:c,waitForLoadEvent:p,waitForNetworkIdle:m,waitForCPUIdle:f}=r._waitForTestOverrides||nae,h,y=l?c(e,n,l):XP(),b=p(e,i),w=m(e,t,{networkQuietThresholdMs:a,busyEvent:"network-2-busy",idleEvent:"\ -network-2-idle",isIdle:L=>L.is2Idle()}),E=m(e,t,{networkQuietThresholdMs:a,busyEvent:"network-critical-busy",idleEvent:"network-critical-idle",isIdle:L=>L.isCriticalIdle()}),T=XP();N.isVerbose()&&(y.promise.then(()=>{N.verbose("waitFor","resolveOnFcp fired")}),b.promise.then(()=>{N.verbose("waitFor","resolveOnLoadEvent fired")}),w.promise.then(()=>{N.verbose("waitFor","resolveOnNetworkIdle fired")}),E.promise.then(()=>{N.verbose("waitFor","resolveOnCriticalNetworkIdle fired")}));let S=Promise.all([y.promise,b.promise,w.promise,E.promise]).then(()=>(T=f(e,o),T.promise)).then(()=>s(async function(){return N.verbose("waitFor","loadEventFired and network considered idle"),{timedOut:!1}},"cleanupFn")).catch(L=>function(){throw L}),C=new Promise((L,M)=>{h=setTimeout(L,u)}).then(L=>async()=>{if(N.warn("waitFor","Timed out waiting for page load. Checking if page is hung..."),await rae(e))throw N.warn("waitFor","Page appears to be hung, killing JavaScript..."),e.sendCommandAndIgnore("Emulation.\ -setScriptExecutionDisabled",{value:!0}),e.sendCommandAndIgnore("Runtime.terminateExecution"),new z(z.errors.PAGE_HUNG);let M=t.getInflightRequests().map(H=>H.url);return M.length>0&&N.warn("waitFor","Remaining inflight requests URLs",M),{timedOut:!0}}),_=await Promise.race([S,C]);return h&&clearTimeout(h),y.cancel(),b.cancel(),w.cancel(),T.cancel(),_()}function e8(e){function t(){let r=s(()=>{},"resolve"),n=new Promise(i=>r=i);return console.log(["You have enabled Lighthouse navigation debug mode.",'When you have finished inspecting the page, evaluate "continueLighthouseRun()"',"in the console to continue with the Lighthouse run."].join(" ")),window.continueLighthouseRun=r,n}return s(t,"createInPagePromise"),e.defaultSession.setNextProtocolTimeout(1/0),e.executionContext.evaluate(t,{args:[]})}var nae,g1=g(()=>{"use strict";d();Ne();zt();f1();s(XP,"waitForNothing");s(h1,"waitForFrameNavigated");s(Xie,"waitForFcp");s(Tw,"waitForNetworkIdle");s(Qie,"waitForCPUIdle");s(eae,"registerPerform\ -anceObserverInPage");s(tae,"checkTimeSinceLastLongTaskInPage");s(xw,"waitForLoadEvent");s(rae,"isPageHung");nae={waitForFcp:Xie,waitForLoadEvent:xw,waitForCPUIdle:Qie,waitForNetworkIdle:Tw};s(QP,"waitForFullyLoaded");s(e8,"waitForUserToContinue")});var t8={};x(t8,{DevtoolsMessageLog:()=>y1,default:()=>Gt});var Sw,y1,Gt,gn=g(()=>{"use strict";d();Ke();Sw=class e extends X{static{s(this,"DevtoolsLog")}static symbol=Symbol("DevtoolsLog");meta={symbol:e.symbol,supportedModes:["timespan","navigation"]};constructor(){super(),this._messageLog=new y1(/^(Page|Network|Target|Runtime)\./),this._onProtocolMessage=t=>this._messageLog.record(t)}async startSensitiveInstrumentation({driver:t}){this._messageLog.reset(),this._messageLog.beginRecording(),t.targetManager.on("protocolevent",this._onProtocolMessage),await t.defaultSession.sendCommand("Page.enable")}async stopSensitiveInstrumentation({driver:t}){this._messageLog.endRecording(),t.targetManager.off("protocolevent",this._onProtocolMessage)}getDebugData(){return this._messageLog.messages}async getArtifact(){return this._messageLog.messages}},y1=class{static{s(this,"DevtoolsMessageLog")}constructor(t){this._filter=t,this._messages=[],this._isRecording=!1}get messages(){return this._messages}reset(){ -this._messages=[]}beginRecording(){this._isRecording=!0}endRecording(){this._isRecording=!1}record(t){this._isRecording&&typeof t.method=="string"&&(this._filter&&!this._filter.test(t.method)||this._messages.push(t))}},Gt=Sw});var r8={};x(r8,{default:()=>oae});var iae,aae,Cw,oae,n8=g(()=>{"use strict";d();Ke();g1();gn();iae=100,aae=100,Cw=class e extends X{static{s(this,"BFCacheFailures")}meta={supportedModes:["navigation","timespan"],dependencies:{DevtoolsLog:Gt.symbol}};static processBFCacheEventList(t){let r={Circumstantial:{},PageSupportNeeded:{},SupportPending:{}};for(let n of t){let i=r[n.type];i[n.reason]=[]}return{notRestoredReasonsTree:r}}static processBFCacheEventTree(t){let r={Circumstantial:{},PageSupportNeeded:{},SupportPending:{}};function n(i){for(let a of i.explanations){let o=r[a.type],u=o[a.reason]||[];u.push(i.url),o[a.reason]=u}for(let a of i.children)n(a)}return s(n,"traverse"),n(t),{notRestoredReasonsTree:r}}static processBFCacheEvent(t){return t?.notRestoredExplanationsTree?e.processBFCacheEventTree(t.notRestoredExplanationsTree):e.processBFCacheEventList(t?.notRestoredExplanations||[])}async activelyCollectBFCacheEvent(t){let r=t.driver.defaultSession,n;function i(l){n=l}s(i,"onBfCach\ -eNotUsed"),r.on("Page.backForwardCacheNotUsed",i);let a=await r.sendCommand("Page.getNavigationHistory"),o=a.entries[a.currentIndex];await Promise.all([r.sendCommand("Page.navigate",{url:"chrome://terms"}),xw(r,aae).promise]);let[,u]=await Promise.all([r.sendCommand("Page.navigateToHistoryEntry",{entryId:o.id}),h1(r).promise]);if(await new Promise(l=>setTimeout(l,iae)),u.type!=="BackForwardCacheRestore"&&!n)throw new Error("bfcache failed but the failure reasons were not emitted in time");return r.off("Page.backForwardCacheNotUsed",i),n}passivelyCollectBFCacheEvents(t){let r=[];for(let n of t.dependencies.DevtoolsLog)n.method==="Page.backForwardCacheNotUsed"&&r.push(n.params);return r}async getArtifact(t){let r=this.passivelyCollectBFCacheEvents(t);if(t.gatherMode==="navigation"&&!t.settings.usePassiveGathering){let n=await this.activelyCollectBFCacheEvent(t);n&&r.push(n)}return r.map(e.processBFCacheEvent)}},oae=Cw});var i8={};x(i8,{default:()=>uae});function sae(){return caches.keys().then(e=>Promise.all(e.map(t=>caches.open(t)))).then(e=>{let t=[];return Promise.all(e.map(r=>r.keys().then(n=>{t.push(...n.map(i=>i.url))}))).then(r=>t)})}var Fw,uae,a8=g(()=>{"use strict";d();Ke();s(sae,"getCacheContents");Fw=class extends X{static{s(this,"CacheContents")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){return await t.driver.executionContext.evaluate(sae,{args:[]})}},uae=Fw});var o8={};x(o8,{default:()=>cae});function lae(e){if(typeof e.value<"u"||e.type==="undefined")return String(e.value);if(typeof e.description=="string"&&e.description!==e.className)return e.description;let t=e.subtype||e.type,r=e.className||"Object";return`[${t} ${r}]`}var kw,cae,s8=g(()=>{"use strict";d();Ke();s(lae,"remoteObjectToString");kw=class extends X{static{s(this,"ConsoleMessages")}meta={supportedModes:["timespan","navigation"]};constructor(){super(),this._logEntries=[],this._onConsoleAPICalled=this.onConsoleAPICalled.bind(this),this._onExceptionThrown=this.onExceptionThrown.bind(this),this._onLogEntryAdded=this.onLogEntry.bind(this)}onConsoleAPICalled(t){let{type:r}=t;if(r!=="warning"&&r!=="error")return;let i=(t.args||[]).map(lae).join(" ");if(!i&&!t.stackTrace)return;let{url:a,lineNumber:o,columnNumber:u}=t.stackTrace?.callFrames[0]||{},l={eventType:"consoleAPI",source:r==="warning"?"console.warn":"console.error",level:r,text:i,stackTrace:t.stackTrace,timestamp:t.timestamp, -url:a,lineNumber:o,columnNumber:u};this._logEntries.push(l)}onExceptionThrown(t){let r=t.exceptionDetails.exception?t.exceptionDetails.exception.description:t.exceptionDetails.text;if(!r)return;let n={eventType:"exception",source:"exception",level:"error",text:r,stackTrace:t.exceptionDetails.stackTrace,timestamp:t.timestamp,url:t.exceptionDetails.url,scriptId:t.exceptionDetails.scriptId,lineNumber:t.exceptionDetails.lineNumber,columnNumber:t.exceptionDetails.columnNumber};this._logEntries.push(n)}onLogEntry(t){let{source:r,level:n,text:i,stackTrace:a,timestamp:o,url:u,lineNumber:l}=t.entry,c=t.entry.stackTrace?.callFrames[0];this._logEntries.push({eventType:"protocolLog",source:r,level:n,text:i,stackTrace:a,timestamp:o,url:u,scriptId:c?.scriptId,lineNumber:l,columnNumber:c?.columnNumber})}async startInstrumentation(t){let r=t.driver.defaultSession;r.on("Log.entryAdded",this._onLogEntryAdded),await r.sendCommand("Log.enable"),await r.sendCommand("Log.startViolationsReport",{config:[{name:"\ -discouragedAPIUse",threshold:-1}]}),r.on("Runtime.consoleAPICalled",this._onConsoleAPICalled),r.on("Runtime.exceptionThrown",this._onExceptionThrown),await r.sendCommand("Runtime.enable")}async stopInstrumentation({driver:t}){await t.defaultSession.sendCommand("Log.stopViolationsReport"),await t.defaultSession.off("Log.entryAdded",this._onLogEntryAdded),await t.defaultSession.sendCommand("Log.disable"),await t.defaultSession.off("Runtime.consoleAPICalled",this._onConsoleAPICalled),await t.defaultSession.off("Runtime.exceptionThrown",this._onExceptionThrown),await t.defaultSession.sendCommand("Runtime.disable")}async getArtifact(){return this._logEntries}},cae=kw});var u8={};x(u8,{default:()=>dae});var _w,dae,l8=g(()=>{"use strict";d();Ke();_w=class extends X{static{s(this,"CSSUsage")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let r=t.driver.defaultSession,n=t.driver.executionContext;await r.sendCommand("DOM.enable"),await r.sendCommand("CSS.enable"),await r.sendCommand("CSS.startRuleUsageTracking"),await n.evaluateAsync("getComputedStyle(document.body)");let{ruleUsage:i}=await r.sendCommand("CSS.stopRuleUsageTracking");return await r.sendCommand("CSS.disable"),await r.sendCommand("DOM.disable"),i}},dae=_w});var c8={};x(c8,{default:()=>pae});var Rw,pae,d8=g(()=>{"use strict";d();gn();Ke();Rw=class extends X{static{s(this,"DevtoolsLogCompat")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Gt.symbol}};async getArtifact(t){return{defaultPass:t.dependencies.DevtoolsLog}}},pae=Rw});var p8={};x(p8,{default:()=>fae});function mae(){if(!document.doctype)return null;let e=document.compatMode,{name:t,publicId:r,systemId:n}=document.doctype;return{name:t,publicId:r,systemId:n,documentCompatMode:e}}var Iw,fae,m8=g(()=>{"use strict";d();Ke();s(mae,"getDoctype");Iw=class extends X{static{s(this,"Doctype")}meta={supportedModes:["snapshot","navigation"]};getArtifact(t){return t.driver.executionContext.evaluate(mae,{args:[],useIsolation:!0})}},fae=Iw});var f8={};x(f8,{default:()=>gae});function hae(e=document.body,t=!0){let r=null,n=-1,i=-1,a=0,o=null,u=s(function(c,p=1){p>n&&(r=c,n=p),c.children.length>i&&(o=c,i=c.children.length);let m=c.firstElementChild;for(;m;)u(m,p+1),t&&m.shadowRoot&&u(m.shadowRoot,p+1),m=m.nextElementSibling,a++;return{maxDepth:n,maxWidth:i,numElements:a}},"_calcDOMWidthAndHeight"),l=u(e);return{depth:{max:l.maxDepth,...getNodeDetails(r)},width:{max:l.maxWidth,...getNodeDetails(o)},totalBodyElements:l.numElements}}var Aw,gae,h8=g(()=>{"use strict";d();Ke();Rr();s(hae,"getDOMStats");Aw=class extends X{static{s(this,"DOMStats")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let r=t.driver;await r.defaultSession.sendCommand("DOM.enable");let n=await r.executionContext.evaluate(hae,{args:[],useIsolation:!0,deps:[qe.getNodeDetails]});return await r.defaultSession.sendCommand("DOM.disable"),n}},gae=Aw});var g8={};x(g8,{default:()=>Tae});var yae,vae,bae,wae,Dae,Eae,Nw,Tae,y8=g(()=>{"use strict";d();Ne();Ke();ut();Ot();Kr();at();gn();yae=5e3,vae=2e3*1024,bae=.92,wae=.85,Dae=4096,Eae=/^image\/((x|ms|x-ms)-)?(png|bmp|jpeg)$/,Nw=class e extends X{static{s(this,"OptimizedImages")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Gt.symbol}};constructor(){super(),this._encodingStartAt=0}static filterImageRequests(t){let r=new Set;return t.reduce((n,i)=>{if(r.has(i.url)||!i.finished||i.sessionTargetType!=="page")return n;r.add(i.url);let a=i.resourceType===K.TYPES.Image&&Eae.test(i.mimeType),o=K.getResourceSizeOnNetwork(i);return a&&o>Dae&&n.push({requestId:i.requestId,url:i.url,mimeType:i.mimeType,resourceSize:o}),n},[])}_getEncodedResponse(t,r,n){r=K.getRequestIdForBackend(r);let a={requestId:r,encoding:n,quality:n==="jpeg"?bae:wae,sizeOnly:!0};return t.sendCommand("Audits.getEncodedResponse",a)}async calculateImageStats(t,r){let n=r.resourceSize;if(Date.now()-this._encodingStartAt> -yae||n>vae)return{originalSize:n,jpegSize:void 0,webpSize:void 0};let i=await this._getEncodedResponse(t,r.requestId,"jpeg"),a=await this._getEncodedResponse(t,r.requestId,"webp");return{originalSize:n,jpegSize:i.encodedSize,webpSize:a.encodedSize}}async computeOptimizedImages(t,r){this._encodingStartAt=Date.now();let n=[];for(let i of r)try{let o={failed:!1,...await this.calculateImageStats(t,i),...i};n.push(o)}catch(a){N.warn("optimized-images",a.message),bt.captureException(a,{tags:{gatherer:"OptimizedImages"},extra:{imageUrl:J.elideDataURI(i.url)},level:"warning"});let o={failed:!0,errMsg:a.message,...i};n.push(o)}return n}async getArtifact(t){let r=t.dependencies.DevtoolsLog,n=await ie.request(r,t),i=e.filterImageRequests(n).sort((u,l)=>l.resourceSize-u.resourceSize),a=await this.computeOptimizedImages(t.driver.defaultSession,i),o=a.filter(u=>!u.failed);if(a.length&&!o.length)throw new Error("All image optimizations failed");return a}},Tae=Nw});async function v1(e,t,r=1e3){return t=K.getRequestIdForBackend(t),e.setNextProtocolTimeout(r),(await e.sendCommand("Network.getResponseBody",{requestId:t})).body}var Mw=g(()=>{"use strict";d();Ot();s(v1,"fetchResponseBodyFromCache")});var v8={};x(v8,{default:()=>Fae});var xae,Sae,Cae,Lw,Fae,b8=g(()=>{"use strict";d();Vo();jy();Ne();Ke();ut();Ot();gn();Mw();at();xae="chrome-extension:",Sae=["image","audio","video"],Cae=[K.TYPES.Document,K.TYPES.Script,K.TYPES.Stylesheet,K.TYPES.XHR,K.TYPES.Fetch,K.TYPES.EventSource],Lw=class e extends X{static{s(this,"ResponseCompression")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Gt.symbol}};static filterUnoptimizedResponses(t){let r=[];return t.forEach(n=>{if(n.sessionTargetType!=="page")return;let i=n.mimeType,a=n.resourceType||K.TYPES.Other,o=n.resourceSize,l=!(i&&Sae.some(p=>i.startsWith(p)))&&Cae.includes(a),c=n.url.startsWith(xae);!l||!o||!n.finished||c||!n.transferSize||n.statusCode===304||K.isContentEncoded(n)||r.push({requestId:n.requestId,url:n.url,mimeType:i,transferSize:n.transferSize,resourceSize:o,gzipSize:0})}),r}async getCompressibleRecords(t,r){let n=t.driver.defaultSession,i=e.filterUnoptimizedResponses(r);return Promise.all(i.map(a=>v1( -n,a.requestId).then(o=>o?new Promise((u,l)=>o3(o,(c,p)=>{if(c)return l(c);a.gzipSize=q.byteLength(p,"utf8"),u(a)})):a).catch(o=>{if(!o?.message?.includes("No resource with given identifier found"))throw o.extra={url:J.elideDataURI(a.url)},o;return N.error("ResponseCompression",o.message),a.gzipSize=void 0,a})))}async getArtifact(t){let r=t.dependencies.DevtoolsLog,n=await ie.request(r,t);return this.getCompressibleRecords(t,n)}},Fae=Lw});function Rae(e,t){let n=e.match(/Chrome\/([\d.]+)/)?.[1]||"99.0.1234.0",[i]=n.split(".",1),a=[{brand:"Chromium",version:i},{brand:"Google Chrome",version:i}],o={platform:"Android",platformVersion:"11.0",architecture:"",model:"moto g power (2022)"},u={platform:"macOS",platformVersion:"10.15.7",architecture:"x86",model:""},l=t==="mobile";return{brands:a,fullVersion:n,...l?o:u,mobile:l}}async function b1(e,t){if(t.emulatedUserAgent!==!1){let r=t.emulatedUserAgent;await e.sendCommand("Network.setUserAgentOverride",{userAgent:r,userAgentMetadata:Rae(r,t.formFactor)})}if(t.screenEmulation.disabled!==!0){let{width:r,height:n,deviceScaleFactor:i,mobile:a}=t.screenEmulation,o={width:r,height:n,deviceScaleFactor:i,mobile:a};await e.sendCommand("Emulation.setDeviceMetricsOverride",o),await e.sendCommand("Emulation.setTouchEmulationEnabled",{enabled:o.mobile})}}async function w8(e,t){if(t.throttlingMethod!=="devtools")return E8(e);await Promise.all([Iae(e,t.throttling),Aae(e,t.throttling)])}async function D8(e){ -await Promise.all([E8(e),Nae(e)])}function Iae(e,t){let r={offline:!1,latency:t.requestLatencyMs||0,downloadThroughput:t.downloadThroughputKbps||0,uploadThroughput:t.uploadThroughputKbps||0};return r.downloadThroughput=Math.floor(r.downloadThroughput*1024/8),r.uploadThroughput=Math.floor(r.uploadThroughput*1024/8),e.sendCommand("Network.emulateNetworkConditions",r)}function E8(e){return e.sendCommandAndIgnore("Network.emulateNetworkConditions",kae)}function Aae(e,t){let r=t.cpuSlowdownMultiplier;return e.sendCommand("Emulation.setCPUThrottlingRate",{rate:r})}function Nae(e){return e.sendCommandAndIgnore("Emulation.setCPUThrottlingRate",_ae)}var kae,_ae,w1=g(()=>{"use strict";d();kae={latency:0,downloadThroughput:0,uploadThroughput:0,offline:!1},_ae={rate:1};s(Rae,"parseUseragentIntoMetadata");s(b1,"emulate");s(w8,"throttle");s(D8,"clearThrottling");s(Iae,"enableNetworkThrottling");s(E8,"clearNetworkThrottling");s(Aae,"enableCPUThrottling");s(Nae,"clearCPUThrottling")});var S8={};x(S8,{default:()=>Bae});function x8(e){return e.replace(/(-\w)/g,t=>t[1].toUpperCase())}function Pae(){let e=x8(window.screen.orientation.type);return{width:window.outerWidth,height:window.outerHeight,screenOrientation:{type:e,angle:window.screen.orientation.angle},deviceScaleFactor:window.devicePixelRatio}}function Oae(){return new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(e))})}var Mae,T8,Lae,Ow,Bae,C8=g(()=>{"use strict";d();Ke();w1();Rr();g1();Mae=process.env.LH_FPS_TEST?100:30,T8=process.env.LH_FPS_TEST?"png":"webp",Lae=16383;s(x8,"kebabCaseToCamelCase");s(Pae,"getObservedDeviceMetrics");s(Oae,"waitForDoubleRaf");Ow=class extends X{static{s(this,"FullPageScreenshot")}meta={supportedModes:["snapshot","timespan","navigation"]};waitForNetworkIdle(t){let r=t.driver.defaultSession,n=t.driver.networkMonitor;return Tw(r,n,{pretendDCLAlreadyFired:!0,networkQuietThresholdMs:1e3,busyEvent:"network-critical-busy",idleEvent:"network-critical-idle",isIdle:i=>i.isCriticalIdle()})}async _resizeViewport(t,r){ -let n=t.driver.defaultSession,i=await n.sendCommand("Page.getLayoutMetrics"),a=Math.round(r.height*i.cssContentSize.height/i.cssLayoutViewport.clientHeight),o=Math.min(a,Lae),u=this.waitForNetworkIdle(t);await n.sendCommand("Emulation.setDeviceMetricsOverride",{mobile:r.mobile,deviceScaleFactor:1,height:o,width:0}),await Promise.race([new Promise(l=>setTimeout(l,1e3*5)),u.promise]),u.cancel(),await t.driver.executionContext.evaluate(Oae,{args:[]})}async _takeScreenshot(t){let[r,n]=await Promise.all([t.driver.defaultSession.sendCommand("Page.getLayoutMetrics"),t.driver.defaultSession.sendCommand("Page.captureScreenshot",{format:T8,quality:Mae})]);return{data:`data:image/${T8};base64,`+n.data,width:r.cssVisualViewport.clientWidth,height:r.cssVisualViewport.clientHeight}}async _resolveNodes(t){function r(){let o={};if(!window.__lighthouseNodesDontTouchOrAllVarianceGoesAway)return o;let u=window.__lighthouseNodesDontTouchOrAllVarianceGoesAway;for(let[l,c]of u.entries()){let p=getBoundingClientRect( -l);o[c]={id:l.id,...p}}return o}s(r,"resolveNodes");function n({useIsolation:o}){return t.driver.executionContext.evaluate(r,{args:[],useIsolation:o,deps:[qe.getBoundingClientRect]})}s(n,"resolveNodesInPage");let i=await n({useIsolation:!1}),a=await n({useIsolation:!0});return{...i,...a}}async getArtifact(t){let r=t.driver.defaultSession,n=t.driver.executionContext,i=t.settings,a=!i.screenEmulation.disabled,o={...i.screenEmulation};try{if(!i.usePassiveGathering){if(!a){let c=await n.evaluate(Pae,{args:[],useIsolation:!0,deps:[x8]});o.height=c.height,o.width=c.width,o.deviceScaleFactor=c.deviceScaleFactor,o.mobile=i.formFactor==="mobile"}await this._resizeViewport(t,o)}let[u,l]=await Promise.all([this._takeScreenshot(t),this._resolveNodes(t)]);return{screenshot:u,nodes:l}}finally{i.usePassiveGathering||(a?await b1(r,i):await r.sendCommand("Emulation.setDeviceMetricsOverride",{mobile:o.mobile,deviceScaleFactor:o.deviceScaleFactor,height:o.height,width:0}))}}},Bae=Ow});var F8={};x(F8,{default:()=>jae});function Uae(){let e=window.__HTMLElementBoundingClientRect||window.HTMLElement.prototype.getBoundingClientRect;return getElementsInDocument("iframe").map(r=>{let n=e.call(r),{top:i,bottom:a,left:o,right:u,width:l,height:c}=n;return{id:r.id,src:r.src,clientRect:{top:i,bottom:a,left:o,right:u,width:l,height:c},isPositionFixed:isPositionFixed(r),node:getNodeDetails(r)}})}var Bw,jae,k8=g(()=>{"use strict";d();Ke();Rr();s(Uae,"collectIFrameElements");Bw=class extends X{static{s(this,"IFrameElements")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){return await t.driver.executionContext.evaluate(Uae,{args:[],useIsolation:!0,deps:[qe.getElementsInDocument,qe.isPositionFixed,qe.getNodeDetails]})}},jae=Bw});var jw={};x(jw,{default:()=>$ae,findMostSpecificMatchedCSSRule:()=>pc,getEffectiveFontRule:()=>_8});function dc(e){return!!e&&!!e.cssProperties.find(({name:t})=>t===qae)}function pc(e=[],t){let r;for(let n=e.length-1;n>=0;n--)if(t(e[n].rule.style)){r=e[n].rule;break}if(r)return{type:"Regular",...r.style,parentRule:{origin:r.origin,selectors:r.selectorList.selectors}}}function Wae(e=[]){for(let{inlineStyle:t,matchedCSSRules:r}of e){if(dc(t))return{type:"Inline",...t};let n=pc(r,dc);if(n)return n}}function _8({attributesStyle:e,inlineStyle:t,matchedCSSRules:r,inherited:n}){if(dc(t))return{type:"Inline",...t};let i=pc(r,dc);if(i)return i;if(dc(e))return{type:"Attributes",...e};let a=Wae(n);if(a)return a}function Gae(e){return e?Array.from(e.trim()).length:0}async function Vae(e,t){let r=await e.sendCommand("CSS.getMatchedStylesForNode",{nodeId:t}),n=_8(r);if(n)return{type:n.type,range:n.range,styleSheetId:n.styleSheetId,parentRule:n.parentRule&&{origin:n.parentRule.origin,selectors:n.parentRule. -selectors}}}var qae,zae,Hae,Uw,$ae,qw=g(()=>{"use strict";d();Ke();qae="font-size",zae=12,Hae=50;s(dc,"hasFontSizeDeclaration");s(pc,"findMostSpecificMatchedCSSRule");s(Wae,"findInheritedCSSRule");s(_8,"getEffectiveFontRule");s(Gae,"getTextLength");s(Vae,"fetchSourceRule");Uw=class e extends X{static{s(this,"FontSize")}meta={supportedModes:["snapshot","navigation"]};static async fetchFailingNodeSourceRules(t,r){let n=r.sort((l,c)=>c.textLength-l.textLength).slice(0,Hae);await t.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});let{nodeIds:i}=await t.sendCommand("DOM.pushNodesByBackendIdsToFrontend",{backendNodeIds:n.map(l=>l.parentNode.backendNodeId)}),a=n.map(async(l,c)=>{l.nodeId=i[c];try{let p=await Vae(t,i[c]);l.cssRule=p}catch{l.cssRule=void 0}return l}),o=await Promise.all(a),u=o.reduce((l,{textLength:c})=>l+=c,0);return{analyzedFailingNodesData:o,analyzedFailingTextLength:u}}getTextNodesInLayoutFromSnapshot(t){let r=t.strings,n=s(o=>r[o],"getString"),i=s(o=>parseFloat(r[o]),"g\ -etFloat"),a=[];for(let o=0;o<t.documents.length;o++){let u=t.documents[o];if(!u.nodes.backendNodeId||!u.nodes.parentIndex||!u.nodes.attributes||!u.nodes.nodeName)throw new Error("Unexpected response from DOMSnapshot.captureSnapshot.");let l=u.nodes,c=s(p=>({backendNodeId:l.backendNodeId[p],attributes:l.attributes[p].map(n),nodeName:n(l.nodeName[p])}),"getParentData");for(let p of u.textBoxes.layoutIndex){let m=r[u.layout.text[p]];if(!m)continue;let f=u.layout.nodeIndex[p],h=u.layout.styles[p],[y]=h,b=i(y),w=l.parentIndex[f],E=l.parentIndex[w],T=c(w),S=E!==void 0?c(E):void 0;a.push({nodeIndex:f,backendNodeId:l.backendNodeId[f],fontSize:b,textLength:Gae(m),parentNode:{...T,parentNode:S}})}}return a}findFailingNodes(t){let r=[],n=0,i=0;for(let a of this.getTextNodesInLayoutFromSnapshot(t))n+=a.textLength,a.fontSize<zae&&(i+=a.textLength,r.push({nodeId:0,parentNode:a.parentNode,textLength:a.textLength,fontSize:a.fontSize}));return{totalTextLength:n,failingTextLength:i,failingNodes:r}}async getArtifact(t){ -let r=t.driver.defaultSession,n=new Map,i=s(m=>n.set(m.header.styleSheetId,m.header),"onStylesheetAdded");r.on("CSS.styleSheetAdded",i),await Promise.all([r.sendCommand("DOMSnapshot.enable"),r.sendCommand("DOM.enable"),r.sendCommand("CSS.enable")]);let a=await r.sendCommand("DOMSnapshot.captureSnapshot",{computedStyles:["font-size"]}),{totalTextLength:o,failingTextLength:u,failingNodes:l}=this.findFailingNodes(a),{analyzedFailingNodesData:c,analyzedFailingTextLength:p}=await e.fetchFailingNodeSourceRules(r,l);return r.off("CSS.styleSheetAdded",i),c.filter(m=>m.cssRule?.styleSheetId).forEach(m=>m.cssRule.stylesheet=n.get(m.cssRule.styleSheetId)),await Promise.all([r.sendCommand("DOMSnapshot.disable"),r.sendCommand("DOM.disable"),r.sendCommand("CSS.disable")]),{analyzedFailingNodesData:c,analyzedFailingTextLength:p,failingTextLength:u,totalTextLength:o}}},$ae=Uw});var N8={};x(N8,{default:()=>Zae});function Ww(e){let t=e.getBoundingClientRect();return{top:t.top,bottom:t.bottom,left:t.left,right:t.right}}function Gw(e,t){return e.parentElement&&e.parentElement.tagName==="PICTURE"?window.getComputedStyle(e.parentElement).getPropertyValue("position"):t.getPropertyValue("position")}function I8(e){return e.filter(r=>r.localName==="img").map(r=>{let n=window.getComputedStyle(r),i=!!r.parentElement&&r.parentElement.tagName==="PICTURE",a=!i&&!r.srcset;return{src:r.currentSrc,srcset:r.srcset,displayedWidth:r.width,displayedHeight:r.height,clientRect:Ww(r),attributeWidth:r.getAttribute("width"),attributeHeight:r.getAttribute("height"),naturalDimensions:a?{width:r.naturalWidth,height:r.naturalHeight}:void 0,cssRules:void 0,computedStyles:{position:Gw(r,n),objectFit:n.getPropertyValue("object-fit"),imageRendering:n.getPropertyValue("image-rendering")},isCss:!1,isPicture:i,loading:r.loading,isInShadowDOM:r.getRootNode()instanceof ShadowRoot,fetchPriority:r.fetchPriority, -node:getNodeDetails(r)}})}function A8(e){let t=/^url\("([^"]+)"\)$/,r=[];for(let n of e){let i=window.getComputedStyle(n);if(!i.backgroundImage||!t.test(i.backgroundImage))continue;let o=i.backgroundImage.match(t)[1];r.push({src:o,srcset:"",displayedWidth:n.clientWidth,displayedHeight:n.clientHeight,clientRect:Ww(n),attributeWidth:null,attributeHeight:null,naturalDimensions:void 0,cssEffectiveRules:void 0,computedStyles:{position:Gw(n,i),objectFit:"",imageRendering:i.getPropertyValue("image-rendering")},isCss:!0,isPicture:!1,isInShadowDOM:n.getRootNode()instanceof ShadowRoot,node:getNodeDetails(n)})}return r}function Yae(){let e=getElementsInDocument();return I8(e).concat(A8(e))}function Kae(e){return new Promise((t,r)=>{let n=new Image;n.addEventListener("error",i=>r(new Error("determineNaturalSize failed img load"))),n.addEventListener("load",()=>{t({naturalWidth:n.naturalWidth,naturalHeight:n.naturalHeight})}),n.src=e})}function D1(e,t){if(!e||!e.cssProperties)return;let r=e.cssProperties. -find(({name:n})=>n===t);if(r)return r.value}function Jae(e,t){let n=pc(e,s(i=>D1(i,t),"isDeclarationofInterest"));if(n)return D1(n,t)}function zw({attributesStyle:e,inlineStyle:t,matchedCSSRules:r},n){let i=D1(t,n);if(i)return i;let a=D1(e,n);if(a)return a;let o=Jae(r,n);return o||null}function R8(e){return e.naturalDimensions?e.naturalDimensions.height*e.naturalDimensions.width:e.displayedHeight*e.displayedWidth}var Hw,Zae,M8=g(()=>{"use strict";d();Ne();Ke();Rr();qw();s(Ww,"getClientRect");s(Gw,"getPosition");s(I8,"getHTMLImages");s(A8,"getCSSImages");s(Yae,"collectImageElementInfo");s(Kae,"determineNaturalSize");s(D1,"findSizeDeclaration");s(Jae,"findMostSpecificCSSRule");s(zw,"getEffectiveSizingRule");s(R8,"getPixelArea");Hw=class extends X{static{s(this,"ImageElements")}meta={supportedModes:["snapshot","timespan","navigation"]};constructor(){super(),this._naturalSizeCache=new Map}async fetchElementWithSizeInformation(t,r){let n=r.src,i=this._naturalSizeCache.get(n);if(!i)try{t.defaultSession. -setNextProtocolTimeout(250),i=await t.executionContext.evaluate(Kae,{args:[n],useIsolation:!0}),this._naturalSizeCache.set(n,i)}catch{}i&&(r.naturalDimensions={width:i.naturalWidth,height:i.naturalHeight})}async fetchSourceRules(t,r,n){try{let{nodeId:i}=await t.sendCommand("DOM.pushNodeByPathToFrontend",{path:r});if(!i)return;let a=await t.sendCommand("CSS.getMatchedStylesForNode",{nodeId:i}),o=zw(a,"width"),u=zw(a,"height"),l=zw(a,"aspect-ratio");n.cssEffectiveRules={width:o,height:u,aspectRatio:l}}catch(i){if(/No node.*found/.test(i.message))return;throw i}}async collectExtraDetails(t,r){let n=!1;setTimeout(a=>n=!0,5e3);let i=0;for(let a of r){if(n){i++;continue}!a.isInShadowDOM&&!a.isCss&&await this.fetchSourceRules(t.defaultSession,a.node.devtoolsNodePath,a),(a.isPicture||a.isCss||a.srcset)&&await this.fetchElementWithSizeInformation(t,a)}n&&N.warn("ImageElements",`Reached gathering budget of 5s. Skipped extra details for ${i}/${r.length}`)}async getArtifact(t){let r=t.driver.defaultSession, -i=await t.driver.executionContext.evaluate(Yae,{args:[],useIsolation:!0,deps:[qe.getElementsInDocument,qe.getBoundingClientRect,qe.getNodeDetails,Ww,Gw,I8,A8]});return await Promise.all([r.sendCommand("DOM.enable"),r.sendCommand("CSS.enable"),r.sendCommand("DOM.getDocument",{depth:-1,pierce:!0})]),i.sort((a,o)=>R8(o)-R8(a)),await this.collectExtraDetails(t.driver,i),await Promise.all([r.sendCommand("DOM.disable"),r.sendCommand("CSS.disable")]),i}},Zae=Hw});var L8={};x(L8,{default:()=>Qae});function Xae(){let e=[],t=new Map,r=new Map,n=getElementsInDocument("form");for(let o of n)t.set(o,{id:o.id,name:o.name,autocomplete:o.autocomplete,node:getNodeDetails(o)});let i=getElementsInDocument("label");for(let o of i)r.set(o,{for:o.htmlFor,node:getNodeDetails(o)});let a=getElementsInDocument("textarea, input, select");for(let o of a){let u=o.form,l=u?[...t.keys()].indexOf(u):void 0,c=[...o.labels||[]].map(m=>[...r.keys()].indexOf(m)),p;o.readOnly||(p=!o.dispatchEvent(new ClipboardEvent("paste",{cancelable:!0}))),e.push({parentFormIndex:l,labelIndices:c,id:o.id,name:o.name,type:o.type,placeholder:o instanceof HTMLSelectElement?void 0:o.placeholder,autocomplete:{property:o.autocomplete,attribute:o.getAttribute("autocomplete"),prediction:o.getAttribute("autofill-prediction")},preventsPaste:p,node:getNodeDetails(o)})}return{inputs:e,forms:[...t.values()],labels:[...r.values()]}}var Vw,Qae,P8=g(()=>{"use strict";d();Ke();Rr();s(Xae,"collectElements"); -Vw=class extends X{static{s(this,"Inputs")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){return t.driver.executionContext.evaluate(Xae,{args:[],useIsolation:!0,deps:[qe.getElementsInDocument,qe.getNodeDetails]})}},Qae=Vw});var O8={};x(O8,{default:()=>eoe});var $w,eoe,B8=g(()=>{"use strict";d();Ke();at();gn();$w=class extends X{static{s(this,"InspectorIssues")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Gt.symbol}};constructor(){super(),this._issues=[],this._onIssueAdded=this.onIssueAdded.bind(this)}onIssueAdded(t){this._issues.push(t.issue)}async startInstrumentation(t){let r=t.driver.defaultSession;r.on("Audits.issueAdded",this._onIssueAdded),await r.sendCommand("Audits.enable")}async stopInstrumentation(t){let r=t.driver.defaultSession;r.off("Audits.issueAdded",this._onIssueAdded),await r.sendCommand("Audits.disable")}async getArtifact(t){let r=t.dependencies.DevtoolsLog,n=await ie.request(r,t),i={attributionReportingIssue:[],blockedByResponseIssue:[],bounceTrackingIssue:[],clientHintIssue:[],contentSecurityPolicyIssue:[],cookieDeprecationMetadataIssue:[],corsIssue:[],deprecationIssue:[],federatedAuthRequestIssue:[],genericIssue:[],heavyAdIssue:[],lowTextContrastIssue:[],mixedContentIssue:[], -navigatorUserAgentIssue:[],propertyRuleIssue:[],quirksModeIssue:[],cookieIssue:[],sharedArrayBufferIssue:[],sharedDictionaryIssue:[],stylesheetLoadingIssue:[],federatedAuthUserInfoRequestIssue:[]},a=Object.keys(i);for(let o of a){let u=`${o}Details`,l=this._issues.map(c=>c.details[u]);for(let c of l){if(!c)continue;let p="request"in c&&c.request&&c.request.requestId;p?n.find(m=>m.requestId===p)&&i[o].push(c):i[o].push(c)}}return i}},eoe=$w});var U8={};x(U8,{default:()=>toe});var Yw,toe,j8=g(()=>{"use strict";d();Ke();Yw=class extends X{static{s(this,"JsUsage")}meta={supportedModes:["snapshot","timespan","navigation"]};constructor(){super(),this._scriptUsages=[]}async startInstrumentation(t){let r=t.driver.defaultSession;await r.sendCommand("Profiler.enable"),await r.sendCommand("Profiler.startPreciseCoverage",{detailed:!1})}async stopInstrumentation(t){let r=t.driver.defaultSession,n=await r.sendCommand("Profiler.takePreciseCoverage");this._scriptUsages=n.result,await r.sendCommand("Profiler.stopPreciseCoverage"),await r.sendCommand("Profiler.disable")}async getArtifact(){let t={};for(let r of this._scriptUsages)r.url===""||r.url==="_lighthouse-eval.js"||r.url!=="__puppeteer_evaluation_script__"&&(t[r.scriptId]=r);return t}},toe=Yw});var W8=pe((q3e,H8)=>{"use strict";d();var roe=/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i,noe=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ioe=/\s|\uFEFF|\xA0/,aoe=/\r?\n[\x20\x09]+/g,ooe=/[;,"]/,soe=/[;,"]|\s/,uoe=/^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/,Di={IDLE:1,URI:2,ATTR:4};function q8(e){return e.replace(noe,"")}s(q8,"trim");function E1(e){return ioe.test(e)}s(E1,"hasWhitespace");function loe(e,t){for(;E1(e[t]);)t++;return t}s(loe,"skipWhitespace");function z8(e){return soe.test(e)||!uoe.test(e)}s(z8,"needsQuotes");function coe(e,t){return Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(r=>r in t&&e[r]===t[r])}s(coe,"shallowCompareObjects");var jt=class e{static{s(this,"Link")}constructor(t){this.refs=[],t&&this.parse(t)}rel(t){for(var r=[],n=t.toLowerCase(),i=0;i<this.refs.length;i++)this.refs[i].rel.toLowerCase()===n&&r.push(this.refs[i]);return r}get(t,r){t=t.toLowerCase();for(var n=[],i=0;i<this.refs.length;i++)this.refs[i][t]===r&&n.push(this.refs[i]);return n}set(t){ -return this.refs.push(t),this}setUnique(t){return this.refs.some(r=>coe(r,t))||this.refs.push(t),this}has(t,r){t=t.toLowerCase();for(var n=0;n<this.refs.length;n++)if(this.refs[n][t]===r)return!0;return!1}parse(t,a){a=a||0,t=a?t.slice(a):t,t=q8(t).replace(aoe,"");for(var n=Di.IDLE,i=t.length,a=0,o=null;a<i;)if(n===Di.IDLE){if(E1(t[a])){a++;continue}else if(t[a]==="<"){o!=null&&(o.rel!=null?this.refs.push(...e.expandRelations(o)):this.refs.push(o));var u=t.indexOf(">",a);if(u===-1)throw new Error("Expected end of URI delimiter at offset "+a);o={uri:t.slice(a+1,u)},a=u,n=Di.URI}else throw new Error('Unexpected character "'+t[a]+'" at offset '+a);a++}else if(n===Di.URI)if(E1(t[a])){a++;continue}else if(t[a]===";")n=Di.ATTR,a++;else if(t[a]===",")n=Di.IDLE,a++;else throw new Error('Unexpected character "'+t[a]+'" at offset '+a);else if(n===Di.ATTR){if(t[a]===";"||E1(t[a])){a++;continue}var u=t.indexOf("=",a);u===-1&&(u=t.indexOf(";",a)),u===-1&&(u=t.length);var l=q8(t.slice(a,u)).toLowerCase(), -c="";if(a=u+1,a=loe(t,a),t[a]==='"')for(a++;a<i;){if(t[a]==='"'){a++;break}t[a]==="\\"&&a++,c+=t[a],a++}else{for(var u=a+1;!ooe.test(t[u])&&u<i;)u++;c=t.slice(a,u),a=u}switch(o[l]&&e.isSingleOccurenceAttr(l)||(l[l.length-1]==="*"?o[l]=e.parseExtendedValue(c):(c=l==="type"?c.toLowerCase():c,o[l]!=null?Array.isArray(o[l])?o[l].push(c):o[l]=[o[l],c]:o[l]=c)),t[a]){case",":n=Di.IDLE;break;case";":n=Di.ATTR;break}a++}else throw new Error('Unknown parser state "'+n+'"');return o!=null&&(o.rel!=null?this.refs.push(...e.expandRelations(o)):this.refs.push(o)),o=null,this}toString(){for(var t=[],r="",n=null,i=0;i<this.refs.length;i++)n=this.refs[i],r=Object.keys(this.refs[i]).reduce(function(a,o){return o==="uri"?a:a+"; "+e.formatAttribute(o,n[o])},"<"+n.uri+">"),t.push(r);return t.join(", ")}};jt.isCompatibleEncoding=function(e){return roe.test(e)};jt.parse=function(e,t){return new jt().parse(e,t)};jt.isSingleOccurenceAttr=function(e){return e==="rel"||e==="type"||e==="media"||e==="title"||e=== -"title*"};jt.isTokenAttr=function(e){return e==="rel"||e==="type"||e==="anchor"};jt.escapeQuotes=function(e){return e.replace(/"/g,'\\"')};jt.expandRelations=function(e){var t=e.rel.split(" ");return t.map(function(r){var n=Object.assign({},e);return n.rel=r,n})};jt.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']*)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:jt.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:jt.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}};jt.formatExtendedAttribute=function(e,t){var r=(t.encoding||"utf-8").toUpperCase(),n=t.language||"en",i="";return Buffer.isBuffer(t.value)&&jt.isCompatibleEncoding(r)?i=t.value.toString(r):Buffer.isBuffer(t.value)?i=t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):i=encodeURIComponent(t.value),e+"="+r+"'"+n+"'"+i};jt.formatAttribute=function(e,t){return Array.isArray(t)?t.map(r=>jt.formatAttribute(e,r)).join("; "):e[e.length-1]==="*"||typeof t!="string"?jt.formatExtendedAttribute(e, -t):(jt.isTokenAttr(e)?t=z8(t)?'"'+jt.escapeQuotes(t)+'"':jt.escapeQuotes(t):z8(t)&&(t=encodeURIComponent(t),t=t.replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"),t='"'+t+'"'),e+"="+t)};H8.exports=jt});var Kw,lt,dr=g(()=>{"use strict";d();It();De();at();Kw=class{static{s(this,"MainResource")}static async compute_(t,r){let{mainDocumentUrl:n}=t.URL;if(!n)throw new Error("mainDocumentUrl must exist to get the main resource");let i=await ie.request(t.devtoolsLog,r),a=st.NetworkAnalyzer.findLastDocumentForUrl(i,n);if(!a)throw new Error("Unable to identify the main resource");return a}},lt=G(Kw,["URL","devtoolsLog"])});var V8={};x(V8,{UIStrings:()=>Zw,default:()=>hoe});function poe(e,t){try{return new URL(e,t).href}catch{return null}}function moe(e){return e==="anonymous"?"anonymous":e==="use-credentials"?"use-credentials":null}function foe(){let e=getElementsInDocument("link"),t=[];for(let r of e){if(!(r instanceof HTMLLinkElement))continue;let n=r.getAttribute("href")||"",i=r.closest("head")?"head":"body";t.push({rel:r.rel,href:r.href,hreflang:r.hreflang,as:r.as,crossOrigin:r.crossOrigin,hrefRaw:n,source:i,fetchPriority:r.fetchPriority,node:getNodeDetails(r)})}return t}var G8,Zw,doe,Jw,hoe,$8=g(()=>{"use strict";d();G8=yr(W8(),1);Ke();Rr();gn();dr();Pr();R();Zw={headerParseWarning:"Error parsing `link` header ({error}): `{header}`"},doe=D("core/gather/gatherers/link-elements.js",Zw);s(poe,"normalizeUrlOrNull");s(moe,"getCrossoriginFromHeader");s(foe,"getLinkElementsInDOM");Jw=class e extends X{static{s(this,"LinkElements")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Gt. -symbol}};static getLinkElementsInDOM(t){return t.driver.executionContext.evaluate(foe,{args:[],useIsolation:!0,deps:[qe.getNodeDetails,qe.getElementsInDocument]})}static async getLinkElementsInHeaders(t,r){let n=await lt.request({devtoolsLog:r,URL:t.baseArtifacts.URL},t),i=[];for(let a of n.responseHeaders){if(a.name.toLowerCase()!=="link")continue;let o=[];try{o=G8.default.parse(a.value).refs}catch(u){let l=Me.truncate(a.value,100),c=doe(Zw.headerParseWarning,{error:u.message,header:l});t.baseArtifacts.LighthouseRunWarnings.push(c)}for(let u of o)i.push({rel:u.rel||"",href:poe(u.uri,t.baseArtifacts.URL.finalDisplayedUrl),hrefRaw:u.uri||"",hreflang:u.hreflang||"",as:u.as||"",crossOrigin:moe(u.crossorigin),source:"headers",fetchPriority:u.fetchpriority,node:null})}return i}async getArtifact(t){let r=t.dependencies.DevtoolsLog,n=await e.getLinkElementsInDOM(t),i=await e.getLinkElementsInHeaders(t,r),a=n.concat(i);for(let o of a)o.rel=o.rel.toLowerCase();return a}},hoe=Jw});var Y8={};x(Y8,{default:()=>goe});var Xw,goe,K8=g(()=>{"use strict";d();Ke();gn();Mw();dr();Xw=class extends X{static{s(this,"MainDocumentContent")}meta={supportedModes:["navigation"],dependencies:{DevtoolsLog:Gt.symbol}};async getArtifact(t){let r=t.dependencies.DevtoolsLog,n=await lt.request({devtoolsLog:r,URL:t.baseArtifacts.URL},t),i=t.driver.defaultSession;return v1(i,n.requestId)}},goe=Xw});var J8={};x(J8,{default:()=>voe});function yoe(){let e={getElementsInDocument,getNodeDetails};return e.getElementsInDocument("head meta").map(r=>{let n=s(i=>{let a=r.attributes.getNamedItem(i);if(a)return a.value},"getAttribute");return{name:r.name.toLowerCase(),content:r.content,property:n("property"),httpEquiv:r.httpEquiv?r.httpEquiv.toLowerCase():void 0,charset:n("charset"),node:e.getNodeDetails(r)}})}var Qw,voe,Z8=g(()=>{"use strict";d();Ke();Rr();s(yoe,"collectMetaElements");Qw=class extends X{static{s(this,"MetaElements")}meta={supportedModes:["snapshot","navigation"]};getArtifact(t){return t.driver.executionContext.evaluate(yoe,{args:[],useIsolation:!0,deps:[qe.getElementsInDocument,qe.getNodeDetails]})}},voe=Qw});var X8={};x(X8,{default:()=>boe});var eD,boe,Q8=g(()=>{"use strict";d();Ke();gn();eD=class e extends X{static{s(this,"NetworkUserAgent")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Gt.symbol}};static getNetworkUserAgent(t){for(let r of t){if(r.method!=="Network.requestWillBeSent")continue;let n=r.params.request.headers["User-Agent"];if(n)return n}return""}async getArtifact(t){return e.getNetworkUserAgent(t.dependencies.DevtoolsLog)}},boe=eD});function e5(){(function(e){function t(i){return i===void 0?0:Number(i)}s(t,"number");function r(i,a){return i!==a&&!(isNaN(i)&&isNaN(a))}s(r,"different");function n(i,a,o,u){let l,c,p,m,f,h,y,b;l=t(i),c=t(a),p=t(o),m=t(u),Object.defineProperties(this,{x:{get:function(){return l},set:function(w){r(l,w)&&(l=w,f=h=void 0)},enumerable:!0},y:{get:function(){return c},set:function(w){r(c,w)&&(c=w,y=b=void 0)},enumerable:!0},width:{get:function(){return p},set:function(w){r(p,w)&&(p=w,f=h=void 0)},enumerable:!0},height:{get:function(){return m},set:function(w){r(m,w)&&(m=w,y=b=void 0)},enumerable:!0},left:{get:function(){return f===void 0&&(f=l+Math.min(0,p)),f},enumerable:!0},right:{get:function(){return h===void 0&&(h=l+Math.max(0,p)),h},enumerable:!0},top:{get:function(){return y===void 0&&(y=c+Math.min(0,m)),y},enumerable:!0},bottom:{get:function(){return b===void 0&&(b=c+Math.max(0,m)),b},enumerable:!0}})}s(n,"DOMRect"),globalThis.DOMRect=n})(globalThis)}var t5=g(()=>{"use strict";d();s( -e5,"polyfillDOMRect")});var T1,mc,r5,x1=g(()=>{"use strict";d();Vb();t5();e5();T1=Xf.TraceProcessor,mc=Rs.ModelHandlers,r5=Qf.RootCauses.RootCauses});var rD,fc,nD=g(()=>{"use strict";d();zt();ri();rD=class extends tr{static{s(this,"LHTraceProcessor")}static createNoNavstartError(){return new z(z.errors.NO_NAVSTART)}static createNoResourceSendRequestError(){return new z(z.errors.NO_RESOURCE_REQUEST)}static createNoTracingStartedError(){return new z(z.errors.NO_TRACING_STARTED)}static createNoFirstContentfulPaintError(){return new z(z.errors.NO_FCP)}},fc=rD});var iD,xe,Bt=g(()=>{"use strict";d();De();nD();iD=class{static{s(this,"ProcessedTrace")}static async compute_(t){return fc.processTrace(t)}},xe=G(iD,null)});function woe({x:e,y:t,width:r,height:n}){return{left:e,top:t,right:e+r,bottom:t+n,width:r,height:n}}function n5(e,t){let r=Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top);if(r<=0)return 0;let n=Math.min(e.right,t.right)-Math.max(e.left,t.left);return n<=0?0:n*r}function aD(e){return e.width*e.height}function oD(e){let t={x:e[0],y:e[1],width:e[2],height:e[3]};return woe(t)}var i5=g(()=>{"use strict";d();s(woe,"addRectTopAndBottom");s(n5,"getRectOverlapArea");s(aD,"getRectArea");s(oD,"traceRectToLHRect")});var Eoe,sD,Un,Ps=g(()=>{"use strict";d();De();Bt();i5();x1();Kr();Eoe=500,sD=class e{static{s(this,"CumulativeLayoutShift")}static getLayoutShiftEvents(t){let r=[],n=!1,i=t.timestamps.timeOrigin,a=t.frameEvents.find(o=>o.name==="viewport");a&&(i=a.ts);for(let o of t.frameTreeEvents)if(!(o.name!=="LayoutShift"||!o.args.data||o.args.data.is_main_frame===void 0)){if(o.args.data.weighted_score_delta===void 0)throw new Error("CLS missing weighted_score_delta");if(o.args.data.had_recent_input){if((o.ts-i)/1e3>Eoe||n)continue}else n=!0;r.push({ts:o.ts,isMainFrame:o.args.data.is_main_frame,weightedScore:o.args.data.weighted_score_delta,impactedNodes:o.args.data.impacted_nodes,event:o})}return r}static getImpactByNodeId(t){let r=new Map;for(let n of t){if(!n.impactedNodes)continue;let i=0,a=new Map;for(let o of n.impactedNodes){if(!o.node_id||!o.old_rect||!o.new_rect)continue;let u=oD(o.old_rect),l=oD(o.new_rect),c=aD(u)+aD(l)-n5(u,l);a.set(o.node_id,c),i+=c}for(let[o,u]of a.entries()){let l=r. -get(o)||0;l+=u/i*n.weightedScore,r.set(o,l)}}return r}static calculate(t){let i=0,a=0,o=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let l of t)(l.ts-o>5e6||l.ts-u>1e6)&&(o=l.ts,a=0),u=l.ts,a+=l.weightedScore,i=Math.max(i,a);return i}static async computeWithSharedTraceEngine(t,r){let n=s(async o=>{let u=new T1({LayoutShifts:mc.LayoutShifts,Screenshots:mc.Screenshots});if(await u.parse(o),!u.traceParsedData)throw new Error("null trace engine result");return u.traceParsedData.LayoutShifts.sessionMaxScore},"run"),i=await n(t.map(o=>o.event)),a=await n(r.map(o=>o.event));return{cumulativeLayoutShift:i,cumulativeLayoutShiftMainFrame:a}}static async compute_(t,r){let n=await xe.request(t,r),i=e.getLayoutShiftEvents(n),a=e.getImpactByNodeId(i),o=i.filter(f=>f.isMainFrame),u=e.calculate(i),l=e.calculate(o),c,p=!1,m=!0;if(i.some(f=>f.event.args.data?.had_recent_input)&&(m=!1),m)try{if(c=await this.computeWithSharedTraceEngine(i,o),p=c.cumulativeLayoutShift!==u||c.cumulativeLayoutShiftMainFrame!== -l,p){p=!0;let f=JSON.stringify({cumulativeLayoutShift:u,cumulativeLayoutShiftMainFrame:l}),h=JSON.stringify(c);throw new Error(`new trace engine differed. expected: ${f}, got: ${h}`)}}catch(f){console.error(f),p=!0;let h=new Error("Error when using new trace engine",{cause:f});if(globalThis.expect)throw h;bt.captureException(h,{tags:{computed:"new-trace-engine"},level:"error",extra:{errorMsg:f.toString()}})}return{cumulativeLayoutShift:u,cumulativeLayoutShiftMainFrame:l,impactByNodeId:a,newEngineResult:c,newEngineResultDiffered:p}}},Un=G(sD,null)});var uD,Jr,vo=g(()=>{"use strict";d();x1();De();Ps();Bt();or();uD=class e{static{s(this,"TraceEngineResult")}static async runTraceEngine(t){let r={...mc};delete r.Invalidations;let n=new T1(r);if(await n.parse(t),!n.traceParsedData)throw new Error("No data");if(!n.insights)throw new Error("No insights");return{data:n.traceParsedData,insights:n.insights}}static async compute_(t,r){let n=await xe.request(t.trace,r),i=new Set(Un.getLayoutShiftEvents(n).map(u=>u.event)),a=[...t.trace.traceEvents];for(let u=0;u<a.length;u++){let l=a[u];if(l.name!=="LayoutShift"||!l.args.data)continue;let c=i.has(l);l.args.data.had_recent_input&&c&&(l=JSON.parse(JSON.stringify(l)),l.args.data.had_recent_input=!1,a[u]=l)}return await e.runTraceEngine(a)}},Jr=G(uD,["trace"])});var a5={};x(a5,{default:()=>cD});var lD,cD,dD=g(()=>{"use strict";d();Ke();Ba();x1();vo();lD=class e extends X{static{s(this,"RootCauses")}static symbol=Symbol("RootCauses");meta={symbol:e.symbol,supportedModes:["timespan","navigation"],dependencies:{Trace:cn.symbol}};static async runRootCauseAnalysis(t,r){await t.defaultSession.sendCommand("DOM.enable"),await t.defaultSession.sendCommand("CSS.enable"),await t.defaultSession.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});let n={getInitiatorForRequest(u){return null},async pushNodesByBackendIdsToFrontend(u){return(await t.defaultSession.sendCommand("DOM.pushNodesByBackendIdsToFrontend",{backendNodeIds:u})).nodeIds},async getNode(u){try{let l=await t.defaultSession.sendCommand("DOM.describeNode",{nodeId:u});return l.node.nodeId=u,l.node}catch(l){if(l.message.includes("Could not find node with given id"))return null;throw l}},async getComputedStyleForNode(u){try{return(await t.defaultSession.sendCommand("CSS.getComputedStyleForNode", -{nodeId:u})).computedStyle}catch{return[]}},async getMatchedStylesForNode(u){try{return{...await t.defaultSession.sendCommand("CSS.getMatchedStylesForNode",{nodeId:u}),getError(){}}}catch(l){return{getError(){return l.toString()}}}},async fontFaceForSource(u){return null}},i={layoutShifts:{}},a=new r5(n),o=r.LayoutShifts.clusters.flatMap(u=>u.events);for(let u of o){let l=await a.layoutShifts.rootCausesForEvent(r,u);if(l){for(let c of l.fontChanges)c.fontFace=await c.fontFace;i.layoutShifts[o.indexOf(u)]=l}}return await t.defaultSession.sendCommand("DOM.disable"),await t.defaultSession.sendCommand("CSS.disable"),i}async getArtifact(t){let r=t.dependencies.Trace,n=await Jr.request({trace:r},t);return e.runRootCauseAnalysis(t.driver,n.data)}},cD=lD});var o5={};x(o5,{default:()=>mD});async function Toe(e,t,r){if(r){let n=[];for(let i of e){let a=await t(i);n.push(a)}return n}else{let n=e.map(t);return await Promise.all(n)}}function xoe(e){return e.embedderName?e.hasSourceURL&&e.url==="_lighthouse-eval.js":!0}var pD,mD,fD=g(()=>{"use strict";d();Ke();s(Toe,"runInSeriesOrParallel");s(xoe,"isLighthouseRuntimeEvaluateScript");pD=class e extends X{static{s(this,"Scripts")}static symbol=Symbol("Scripts");meta={symbol:e.symbol,supportedModes:["timespan","navigation"]};_scriptParsedEvents=[];_scriptContents=[];constructor(){super(),this.onScriptParsed=this.onScriptParsed.bind(this)}onScriptParsed(t){xoe(t)||this._scriptParsedEvents.push(t)}async startInstrumentation(t){let r=t.driver.defaultSession;r.on("Debugger.scriptParsed",this.onScriptParsed),await r.sendCommand("Debugger.enable")}async stopInstrumentation(t){let r=t.driver.defaultSession,n=t.baseArtifacts.HostFormFactor;r.off("Debugger.scriptParsed",this.onScriptParsed),this._scriptContents= -await Toe(this._scriptParsedEvents,({scriptId:i})=>r.sendCommand("Debugger.getScriptSource",{scriptId:i}).then(a=>a.scriptSource).catch(()=>{}),n==="mobile"),await r.sendCommand("Debugger.disable")}async getArtifact(){return this._scriptParsedEvents.map((r,n)=>({name:r.url,...r,url:r.embedderName||r.url,content:this._scriptContents[n]}))}},mD=pD});var s5={};x(s5,{default:()=>Soe});var hD,Soe,u5=g(()=>{"use strict";d();Ke();hD=class extends X{static{s(this,"RobotsTxt")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let{finalDisplayedUrl:r}=t.baseArtifacts.URL,n=new URL("/robots.txt",r).href;return t.driver.fetcher.fetchResource(n).catch(i=>({status:null,content:null,errorMessage:i.message}))}},Soe=hD});var l5=pe(hc=>{"use strict";d();Object.defineProperty(hc,"__esModule",{value:!0});hc.ParsedURL=void 0;hc.normalizePath=Coe;function Coe(e){if(e.indexOf("..")===-1&&e.indexOf(".")===-1)return e;let t=(e[0]==="/"?e.substring(1):e).split("/"),r=[];for(let i of t)i!=="."&&(i===".."?r.pop():r.push(i));let n=r.join("/");return e[0]==="/"&&n&&(n="/"+n),n[n.length-1]!=="/"&&(e[e.length-1]==="/"||t[t.length-1]==="."||t[t.length-1]==="..")&&(n=n+"/"),n}s(Coe,"normalizePath");var gD=class e{static{s(this,"ParsedURL")}isValid;url;scheme;user;host;port;path;queryParams;fragment;folderPathComponents;lastPathComponent;blobInnerScheme;#e;#t;constructor(t){this.isValid=!1,this.url=t,this.scheme="",this.user="",this.host="",this.port="",this.path="",this.queryParams="",this.fragment="",this.folderPathComponents="",this.lastPathComponent="";let r=this.url.startsWith("blob:"),i=(r?t.substring(5):t).match(e.urlRegex());if(i)this.isValid=!0,r?(this.blobInnerScheme=i[2].toLowerCase(),this.scheme="blob"):this. -scheme=i[2].toLowerCase(),this.user=i[3]??"",this.host=i[4]??"",this.port=i[5]??"",this.path=i[6]??"/",this.queryParams=i[7]??"",this.fragment=i[8]??"";else{if(this.url.startsWith("data:")){this.scheme="data";return}if(this.url.startsWith("blob:")){this.scheme="blob";return}if(this.url==="about:blank"){this.scheme="about";return}this.path=this.url}let a=this.path.lastIndexOf("/");a!==-1?(this.folderPathComponents=this.path.substring(0,a),this.lastPathComponent=this.path.substring(a+1)):this.lastPathComponent=this.path}static concatenate(t,...r){return t.concat(...r)}static beginsWithWindowsDriveLetter(t){return/^[A-Za-z]:/.test(t)}static beginsWithScheme(t){return/^[A-Za-z][A-Za-z0-9+.-]*:/.test(t)}static isRelativeURL(t){return!this.beginsWithScheme(t)||this.beginsWithWindowsDriveLetter(t)}get displayName(){return this.#e?this.#e:this.isDataURL()?this.dataURLDisplayName():this.isBlobURL()?this.url:this.isAboutBlank()?this.url:(this.#e=this.lastPathComponent,this.#e||(this.#e=(this.host|| -"")+"/"),this.#e==="/"&&(this.#e=this.url),this.#e)}static urlRegexInstance=null};hc.ParsedURL=gD});var d5=pe((oLe,c5)=>{"use strict";d();var Foe=l5();c5.exports={ParsedURL:Foe}});var m5=pe((uLe,p5)=>{"use strict";d();function koe(e,t,r,n,i){let a=n||0,o=i!==void 0?i:e.length;for(;a<o;){let u=a+o>>1;r(t,e[u])>0?a=u+1:o=u}return o}s(koe,"lowerBound");function _oe(e,t,r,n,i){let a=n||0,o=i!==void 0?i:e.length;for(;a<o;){let u=a+o>>1;r(t,e[u])>=0?a=u+1:o=u}return o}s(_oe,"upperBound");p5.exports={ArrayUtilities:{lowerBound:koe,upperBound:_oe},DevToolsPath:{EmptyUrlString:""}}});var b5=pe((la,v5)=>{"use strict";d();var Roe=d5(),bo=m5();Object.defineProperty(la,"__esModule",{value:!0});la.SourceMap=la.SourceMapEntry=void 0;la.parseSourceMap=g5;function g5(e){return e.startsWith(")]}")&&(e=e.substring(e.indexOf(` -`))),e.charCodeAt(0)===65279&&(e=e.slice(1)),JSON.parse(e)}s(g5,"parseSourceMap");var wo=class{static{s(this,"SourceMapEntry")}lineNumber;columnNumber;sourceURL;sourceLineNumber;sourceColumnNumber;name;constructor(t,r,n,i,a,o){this.lineNumber=t,this.columnNumber=r,this.sourceURL=n,this.sourceLineNumber=i,this.sourceColumnNumber=a,this.name=o}static compare(t,r){return t.lineNumber!==r.lineNumber?t.lineNumber-r.lineNumber:t.columnNumber-r.columnNumber}};la.SourceMapEntry=wo;var f5="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y5=new Map;for(let e=0;e<f5.length;++e)y5.set(f5.charAt(e),e);var h5=new WeakMap,Do=class e{static{s(this,"SourceMap")}#e;#t;#n;#r;#i;#o;constructor(t,r,n){this.#e=n,this.#t=t,this.#n=r,this.#r=r.startsWith("data:")?t:r,this.#i=null,this.#o=new Map,"sections"in this.#e&&this.#e.sections.find(i=>"url"in i)&&console.warn(`SourceMap "${r}" contains unsupported "URL" field in one of its sections.`),this.eachSection(this.parseSources.bind(this))}compiledURL(){ -return this.#t}url(){return this.#n}sourceURLs(){return[...this.#o.keys()]}embeddedContentByURL(t){let r=this.#o.get(t);return r?r.content:null}findEntry(t,r){let n=this.mappings(),i=bo.ArrayUtilities.upperBound(n,void 0,(a,o)=>t-o.lineNumber||r-o.columnNumber);return i?n[i-1]:null}findEntryRanges(t,r){let n=this.mappings(),i=bo.ArrayUtilities.upperBound(n,void 0,(E,T)=>t-T.lineNumber||r-T.columnNumber);if(!i)return null;let a=i-1,o=n[a].sourceURL;if(!o)return null;let u=i<n.length?n[i].lineNumber:2**31-1,l=i<n.length?n[i].columnNumber:2**31-1,c=new TextUtils.TextRange.TextRange(n[a].lineNumber,n[a].columnNumber,u,l),p=this.reversedMappings(o),m=n[a].sourceLineNumber,f=n[a].sourceColumnNumber,h=bo.ArrayUtilities.upperBound(p,void 0,(E,T)=>m-n[T].sourceLineNumber||f-n[T].sourceColumnNumber);if(!h)return null;let y=h<p.length?n[p[h]].sourceLineNumber:2**31-1,b=h<p.length?n[p[h]].sourceColumnNumber:2**31-1,w=new TextUtils.TextRange.TextRange(m,f,y,b);return{range:c,sourceRange:w,sourceURL:o}}sourceLineMapping(t,r,n){ -let i=this.mappings(),a=this.reversedMappings(t),o=bo.ArrayUtilities.lowerBound(a,r,p),u=bo.ArrayUtilities.upperBound(a,r,p);if(o>=a.length||i[a[o]].sourceLineNumber!==r)return null;let l=a.slice(o,u);if(!l.length)return null;let c=bo.ArrayUtilities.lowerBound(l,n,(m,f)=>m-i[f].sourceColumnNumber);return c>=l.length?i[l[l.length-1]]:i[l[c]];function p(m,f){return m-i[f].sourceLineNumber}}findReverseIndices(t,r,n){let i=this.mappings(),a=this.reversedMappings(t),o=bo.ArrayUtilities.upperBound(a,void 0,(l,c)=>r-i[c].sourceLineNumber||n-i[c].sourceColumnNumber),u=o;for(;u>0&&i[a[u-1]].sourceLineNumber===i[a[o-1]].sourceLineNumber&&i[a[u-1]].sourceColumnNumber===i[a[o-1]].sourceColumnNumber;)--u;return a.slice(u,o)}findReverseEntries(t,r,n){let i=this.mappings();return this.findReverseIndices(t,r,n).map(a=>i[a])}findReverseRanges(t,r,n){let i=this.mappings(),a=this.findReverseIndices(t,r,n),o=[];for(let u=0;u<a.length;++u){let l=a[u],c=l+1;for(;u+1<a.length&&c===a[u+1];)++c,++u;let p=i[l]. -lineNumber,m=i[l].columnNumber,f=c<i.length?i[c].lineNumber:2**31-1,h=c<i.length?i[c].columnNumber:2**31-1;o.push(new TextUtils.TextRange.TextRange(p,m,f,h))}return o}mappings(){return this.#a(),this.#i??[]}reversedMappings(t){return this.#a(),this.#o.get(t)?.reverseMappings??[]}#a(){this.#i===null&&(this.#i=[],this.eachSection(this.parseMap.bind(this)),this.mappings().sort(wo.compare),this.#s(this.#i),this.#e=null)}#s(t){let r=new Map;for(let i=0;i<t.length;i++){let a=t[i].sourceURL;if(!a)continue;let o=r.get(a);o||(o=[],r.set(a,o)),o.push(i)}for(let[i,a]of r.entries()){let o=this.#o.get(i);o&&(a.sort(n),o.reverseMappings=a)}function n(i,a){let o=t[i],u=t[a];return o.sourceLineNumber-u.sourceLineNumber||o.sourceColumnNumber-u.sourceColumnNumber||o.lineNumber-u.lineNumber||o.columnNumber-u.columnNumber}s(n,"sourceMappingComparator")}eachSection(t){if(this.#e)if("sections"in this.#e)for(let r of this.#e.sections)"map"in r&&t(r.map,r.offset.line,r.offset.column);else t(this.#e,0,0)}parseSources(t){ -let r=[],n=t.sourceRoot??"",i=new Set(t.x_google_ignoreList);for(let a=0;a<t.sources.length;++a){let o=t.sources[a];Roe.ParsedURL.ParsedURL.isRelativeURL(o)&&(n&&!n.endsWith("/")&&o&&!o.startsWith("/")?o=n.concat("/",o):o=n.concat(o));let u=o,l=t.sourcesContent&&t.sourcesContent[a];if(r.push(u),!this.#o.has(u)){let c=l??null,p=i.has(a);this.#o.set(u,{content:c,ignoreListHint:p,reverseMappings:null})}}h5.set(t,r)}parseMap(t,r,n){let i=0,a=0,o=0,u=0,l=h5.get(t),c=t.names??[],p=new e.StringCharIterator(t.mappings),m=l&&l[i];for(;;){if(p.peek()===",")p.next();else{for(;p.peek()===";";)r+=1,n=0,p.next();if(!p.hasNext())break}if(n+=this.decodeVLQ(p),!p.hasNext()||this.isSeparator(p.peek())){this.mappings().push(new wo(r,n));continue}let f=this.decodeVLQ(p);if(f&&(i+=f,l&&(m=l[i])),a+=this.decodeVLQ(p),o+=this.decodeVLQ(p),!p.hasNext()||this.isSeparator(p.peek())){this.mappings().push(new wo(r,n,m,a,o));continue}u+=this.decodeVLQ(p),this.mappings().push(new wo(r,n,m,a,o,c[u]))}}isSeparator(t){ -return t===","||t===";"}decodeVLQ(t){let r=0,n=0,i=e._VLQ_CONTINUATION_MASK;for(;i&e._VLQ_CONTINUATION_MASK;)i=y5.get(t.next())||0,r+=(i&e._VLQ_BASE_MASK)<<n,n+=e._VLQ_BASE_SHIFT;let a=r&1;return r>>=1,a?-r:r}mapsOrigin(){let t=this.mappings();if(t.length>0){let r=t[0];return r?.lineNumber===0||r.columnNumber===0}return!1}hasIgnoreListHint(t){return this.#o.get(t)?.ignoreListHint??!1}findRanges(t,r){let n=this.mappings(),i=[];if(!n.length)return[];let a=null;(n[0].lineNumber!==0||n[0].columnNumber!==0)&&r?.isStartMatching&&(a=TextUtils.TextRange.TextRange.createUnboundedFromLocation(0,0),i.push(a));for(let{sourceURL:o,lineNumber:u,columnNumber:l}of n){let c=o&&t(o);if(!a&&c){a=TextUtils.TextRange.TextRange.createUnboundedFromLocation(u,l),i.push(a);continue}a&&!c&&(a.endLine=u,a.endColumn=l,a=null)}return i}};la.SourceMap=Do;(function(e){e._VLQ_BASE_SHIFT=5,e._VLQ_BASE_MASK=31,e._VLQ_CONTINUATION_MASK=32;class t{static{s(this,"StringCharIterator")}string;position;constructor(n){this.string= -n,this.position=0}next(){return this.string.charAt(this.position++)}peek(){return this.string.charAt(this.position)}hasNext(){return this.position<this.string.length}}e.StringCharIterator=t})(Do||(la.SourceMap=Do={}));v5.exports=Do;Do.parseSourceMap=g5});var yD=pe((mLe,D5)=>{"use strict";d();var w5={SourceMap:b5()};w5.SourceMap.prototype.computeLastGeneratedColumns=function(){let e=this.mappings();if(!(e.length&&e[0].lastColumnNumber!==void 0))for(let t=0;t<e.length-1;t++){let r=e[t],n=e[t+1];r.lineNumber===n.lineNumber&&(r.lastColumnNumber=n.columnNumber)}};D5.exports=w5});var E5={};x(E5,{default:()=>Ioe});var vD,bD,Ioe,T5=g(()=>{"use strict";d();vD=yr(yD(),1);Ke();fD();bD=class extends X{static{s(this,"SourceMaps")}meta={supportedModes:["timespan","navigation"],dependencies:{Scripts:mD.symbol}};async fetchSourceMap(t,r){let n=await t.fetcher.fetchResource(r,{timeout:1500});if(n.content===null)throw new Error(`Failed fetching source map (${n.status})`);return vD.default.SourceMap.parseSourceMap(n.content)}parseSourceMapFromDataUrl(t){let r=Buffer.from(t.split(",")[1],"base64");return vD.default.SourceMap.parseSourceMap(r.toString())}_resolveUrl(t,r){try{return new URL(t,r).href}catch{return}}async _retrieveMapFromScript(t,r){if(!r.sourceMapURL)throw new Error("precondition failed: event.sourceMapURL should exist");let n=r.sourceMapURL.startsWith("data:"),i=r.name,a=n?r.sourceMapURL:this._resolveUrl(r.sourceMapURL,r.name);if(!a)return{scriptId:r.scriptId,scriptUrl:i,errorMessage:`Could not resolve map url: ${r.sourceMapURL}`};let o=n?void 0:a;try{let u=n? -this.parseSourceMapFromDataUrl(a):await this.fetchSourceMap(t,a);if(typeof u.version!="number")throw new Error("Map has no numeric `version` field");if(!Array.isArray(u.sources))throw new Error("Map has no `sources` list");if(typeof u.mappings!="string")throw new Error("Map has no `mappings` field");return u.sections&&(u.sections=u.sections.filter(l=>l.map)),{scriptId:r.scriptId,scriptUrl:i,sourceMapUrl:o,map:u}}catch(u){return{scriptId:r.scriptId,scriptUrl:i,sourceMapUrl:o,errorMessage:u.toString()}}}async getArtifact(t){let r=t.dependencies.Scripts.filter(n=>n.sourceMapURL).map(n=>this._retrieveMapFromScript(t.driver,n));return Promise.all(r)}},Ioe=bD});var x5={};x(x5,{default:()=>Moe});async function Noe(){let e=[],t=d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests;for(let[r,n]of Object.entries(t))try{let i,a=new Promise(u=>i=setTimeout(()=>u(!1),1e3)),o=await Promise.race([n.test(window),a]);i&&clearTimeout(i),o&&e.push({id:n.id,name:r,version:o.version,npm:n.npm})}catch{}return e}var Aoe,wD,Moe,S5=g(()=>{"use strict";d();ni();is();Ne();Ke();Aoe=`function _createTimeoutHelper(){let e;return{timeoutPromise:new Promise(((t,o)=>{e=setTimeout((()=>o(new Error("Timed out"))),5e3)})),clearTimeout:()=>clearTimeout(e)}}var UNKNOWN_VERSION=null,d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests={GWT:{id:"gwt",icon:"gwt",url:"http://www.gwtproject.org/",test:function(e){var t=e.document,o=t.getElementById("__gwt_historyFrame"),n=t.gwt_uid,r=t.body.__listener,i=t.body.__eventBits,s=e.__gwt_activeModules,c=e.__gwt_jsonp__,u=e.__gwt_scriptsLoaded||e.__gwt_stylesLoaded||e.__gwt_activeModules;if(o||n||r||i||s||c||u){for(var a=t.getElements\ + //# sourceURL=_lighthouse-eval.js`;await this._session.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source:o})}async cacheNativesOnNewDocument(){await this.evaluateOnNewDocument(()=>{window.__nativePromise=window.Promise,window.__nativeURL=window.URL,window.__nativePerformance=window.performance,window.__nativeFetch=window.fetch,window.__ElementMatches=window.Element.prototype.matches,window.__HTMLElementBoundingClientRect=window.HTMLElement.prototype.getBoundingClientRect},{args:[]})}static _cachedNativesPreamble=["const Promise = globalThis.__nativePromise || globalThis.Promise","const URL = globalThis.__nativeURL || globalThis.URL","const performance = globalThis.__nativePerformance || globalThis.performance","const fetch = globalThis.__nativeFetch || globalThis.fetch"].join(`; +`);static serializeArguments(t){return t.map(n=>n===void 0?"undefined":JSON.stringify(n)).join(",")}static serializeDeps(t){return t=[je.esbuildFunctionWrapperString,...t||[]],t.map(n=>{if(typeof n=="function"){let r=n.toString(),a=je.getRuntimeFunctionName(n);return a!==n.name?`${r}; const ${n.name} = ${a};`:r}else return n}).join(` +`)}}});function ML(){return{promise:Promise.resolve(),cancel(){}}}function w1(e){let t=s(()=>{throw new Error("waitForFrameNavigated.cancel() called before it was defined")},"cancel");return{promise:new Promise((r,a)=>{e.once("Page.frameNavigated",r),t=s(()=>{e.off("Page.frameNavigated",r),a(new Error("Wait for navigated cancelled"))},"cancel")}),cancel:t}}function _se(e,t,n){let r=s(()=>{throw new Error("waitForFcp.cancel() called before it was defined")},"cancel");return{promise:new Promise((o,i)=>{let c=setTimeout(()=>{i(new q(q.errors.NO_FCP))},n),u,l=s(p=>{p.name==="firstContentfulPaint"&&(u=setTimeout(()=>{o(),r()},t))},"lifecycleListener");e.on("Page.lifecycleEvent",l);let m=!1;r=s(()=>{m||(m=!0,e.off("Page.lifecycleEvent",l),c&&clearTimeout(c),u&&clearTimeout(u),i(new Error("Wait for FCP canceled")))},"cancel")}),cancel:r}}function rD(e,t,n){let r=!1,a,o=s(()=>{throw new Error("waitForNetworkIdle.cancel() called before it was defined")},"cancel"),{networkQuietThresholdMs:i,busyEvent:c, +idleEvent:u,isIdle:l}=n;return{promise:new Promise((p,f)=>{let h=s(()=>{t.once(c,y),a=setTimeout(()=>{o(),p()},i)},"onIdle"),y=s(()=>{t.once(u,h),a&&clearTimeout(a)},"onBusy"),v=s(()=>{r=!0,l(t)?h():y()},"domContentLoadedListener"),w=s(()=>{if(!r){M.verbose("waitFor","Waiting on DomContentLoaded");return}let E=t.getInflightRequests();if(M.isVerbose()&&E.length<20&&E.length>0){M.verbose("waitFor",`=== Waiting on ${E.length} requests to finish`);for(let S of E)M.verbose("waitFor",`Waiting on ${S.url.slice(0,120)} to finish`)}},"logStatus");t.on("requeststarted",w),t.on("requestfinished",w),t.on(c,w),n.pretendDCLAlreadyFired?v():e.once("Page.domContentEventFired",v);let x=!1;o=s(()=>{x||(x=!0,a&&clearTimeout(a),n.pretendDCLAlreadyFired||e.off("Page.domContentEventFired",v),t.removeListener(c,y),t.removeListener(u,h),t.removeListener("requeststarted",w),t.removeListener("requestfinished",w),t.removeListener(c,w))},"cancel")}),cancel:o}}function Mse(e,t){if(!t)return{promise:Promise.resolve(), +cancel:()=>{}};let n,r=!1;async function a(u,l){if(r)return;let m=await u.evaluate(Ose,{args:[],useIsolation:!0});if(!r&&typeof m=="number")if(m>=t)M.verbose("waitFor",`CPU has been idle for ${m} ms`),l();else{M.verbose("waitFor",`CPU has been idle for ${m} ms`);let p=t-m;n=setTimeout(()=>a(u,l),p)}}s(a,"checkForQuiet");let o=s(()=>{throw new Error("waitForCPUIdle.cancel() called before it was defined")},"cancel"),i=new wo(e);return{promise:new Promise((u,l)=>{i.evaluate(Nse,{args:[],useIsolation:!0}).then(()=>a(i,u)).catch(l),o=s(()=>{r||(r=!0,n&&clearTimeout(n),l(new Error("Wait for CPU idle canceled")))},"cancel")}),cancel:o}}function Nse(){if(window.____lastLongTask!==void 0)return;window.____lastLongTask=performance.now(),new window.PerformanceObserver(t=>{let n=t.getEntries();for(let r of n)if(r.entryType==="longtask"){let a=r.startTime+r.duration;window.____lastLongTask=Math.max(window.____lastLongTask||0,a)}}).observe({type:"longtask",buffered:!0})}function Ose(){return new Promise( +e=>{let t=performance.now(),n=window.____lastLongTask||0;setTimeout(()=>{let r=window.____lastLongTask||0,a=n===r?t-n:0;e(a)},150)})}function aD(e,t){let n=s(()=>{throw new Error("waitForLoadEvent.cancel() called before it was defined")},"cancel");return{promise:new Promise((a,o)=>{let i,c=s(function(){i=setTimeout(a,t)},"loadListener");e.once("Page.loadEventFired",c);let u=!1;n=s(()=>{u||(u=!0,e.off("Page.loadEventFired",c),i&&clearTimeout(i))},"cancel")}),cancel:n}}async function Lse(e){try{return e.setNextProtocolTimeout(1e3),await e.sendCommand("Runtime.evaluate",{expression:'"ping"',returnByValue:!0,timeout:1e3}),!1}catch{return!0}}async function NL(e,t,n){let{pauseAfterFcpMs:r,pauseAfterLoadMs:a,networkQuietThresholdMs:o,cpuQuietThresholdMs:i,maxWaitForLoadedMs:c,maxWaitForFcpMs:u}=n,{waitForFcp:l,waitForLoadEvent:m,waitForNetworkIdle:p,waitForCPUIdle:f}=n._waitForTestOverrides||Pse,h,y=u?l(e,r,u):ML(),v=m(e,a),w=p(e,t,{networkQuietThresholdMs:o,busyEvent:"network-2-busy",idleEvent:"\ +network-2-idle",isIdle:O=>O.is2Idle()}),x=p(e,t,{networkQuietThresholdMs:o,busyEvent:"network-critical-busy",idleEvent:"network-critical-idle",isIdle:O=>O.isCriticalIdle()}),E=ML();M.isVerbose()&&(y.promise.then(()=>{M.verbose("waitFor","resolveOnFcp fired")}),v.promise.then(()=>{M.verbose("waitFor","resolveOnLoadEvent fired")}),w.promise.then(()=>{M.verbose("waitFor","resolveOnNetworkIdle fired")}),x.promise.then(()=>{M.verbose("waitFor","resolveOnCriticalNetworkIdle fired")}));let S=Promise.all([y.promise,v.promise,w.promise,x.promise]).then(()=>(E=f(e,i),E.promise)).then(()=>s(async function(){return M.verbose("waitFor","loadEventFired and network considered idle"),{timedOut:!1}},"cleanupFn")).catch(O=>function(){throw O}),k=new Promise((O,N)=>{h=setTimeout(O,c)}).then(O=>async()=>{if(M.warn("waitFor","Timed out waiting for page load. Checking if page is hung..."),await Lse(e))throw M.warn("waitFor","Page appears to be hung, killing JavaScript..."),e.sendCommandAndIgnore("Emulation.\ +setScriptExecutionDisabled",{value:!0}),e.sendCommandAndIgnore("Runtime.terminateExecution"),new q(q.errors.PAGE_HUNG);let N=t.getInflightRequests().map(H=>H.url);return N.length>0&&M.warn("waitFor","Remaining inflight requests URLs",N),{timedOut:!0}}),R=await Promise.race([S,k]);return h&&clearTimeout(h),y.cancel(),v.cancel(),w.cancel(),E.cancel(),R()}function OL(e){function t(){let n=s(()=>{},"resolve"),r=new Promise(a=>n=a);return console.log(["You have enabled Lighthouse navigation debug mode.",'When you have finished inspecting the page, evaluate "continueLighthouseRun()"',"in the console to continue with the Lighthouse run."].join(" ")),window.continueLighthouseRun=n,r}return s(t,"createInPagePromise"),e.defaultSession.setNextProtocolTimeout(1/0),e.executionContext.evaluate(t,{args:[]})}var Pse,D1=g(()=>{"use strict";d();Oe();Wt();b1();s(ML,"waitForNothing");s(w1,"waitForFrameNavigated");s(_se,"waitForFcp");s(rD,"waitForNetworkIdle");s(Mse,"waitForCPUIdle");s(Nse,"registerPerform\ +anceObserverInPage");s(Ose,"checkTimeSinceLastLongTaskInPage");s(aD,"waitForLoadEvent");s(Lse,"isPageHung");Pse={waitForFcp:_se,waitForLoadEvent:aD,waitForCPUIdle:Mse,waitForNetworkIdle:rD};s(NL,"waitForFullyLoaded");s(OL,"waitForUserToContinue")});var LL={};T(LL,{DevtoolsMessageLog:()=>x1,default:()=>Kt});var oD,x1,Kt,Tr=g(()=>{"use strict";d();Ke();oD=class e extends Q{static{s(this,"DevtoolsLog")}static symbol=Symbol("DevtoolsLog");meta={symbol:e.symbol,supportedModes:["timespan","navigation"]};constructor(){super(),this._messageLog=new x1(/^(Page|Network|Target|Runtime)\./),this._onProtocolMessage=t=>this._messageLog.record(t)}async startSensitiveInstrumentation({driver:t}){this._messageLog.reset(),this._messageLog.beginRecording(),t.targetManager.on("protocolevent",this._onProtocolMessage),await t.defaultSession.sendCommand("Page.enable")}async stopSensitiveInstrumentation({driver:t}){this._messageLog.endRecording(),t.targetManager.off("protocolevent",this._onProtocolMessage)}getDebugData(){return this._messageLog.messages}async getArtifact(){return this._messageLog.messages}},x1=class{static{s(this,"DevtoolsMessageLog")}constructor(t){this._filter=t,this._messages=[],this._isRecording=!1}get messages(){return this._messages}reset(){ +this._messages=[]}beginRecording(){this._isRecording=!0}endRecording(){this._isRecording=!1}record(t){this._isRecording&&typeof t.method=="string"&&(this._filter&&!this._filter.test(t.method)||this._messages.push(t))}},Kt=oD});var PL={};T(PL,{default:()=>jse});var Bse,Use,iD,jse,BL=g(()=>{"use strict";d();Ke();D1();Tr();Bse=100,Use=100,iD=class e extends Q{static{s(this,"BFCacheFailures")}meta={supportedModes:["navigation","timespan"],dependencies:{DevtoolsLog:Kt.symbol}};static processBFCacheEventList(t){let n={Circumstantial:{},PageSupportNeeded:{},SupportPending:{}};for(let r of t){let a=n[r.type];a[r.reason]=[]}return{notRestoredReasonsTree:n}}static processBFCacheEventTree(t){let n={Circumstantial:{},PageSupportNeeded:{},SupportPending:{}};function r(a){for(let o of a.explanations){let i=n[o.type],c=i[o.reason]||[];c.push(a.url),i[o.reason]=c}for(let o of a.children)r(o)}return s(r,"traverse"),r(t),{notRestoredReasonsTree:n}}static processBFCacheEvent(t){return t?.notRestoredExplanationsTree?e.processBFCacheEventTree(t.notRestoredExplanationsTree):e.processBFCacheEventList(t?.notRestoredExplanations||[])}async activelyCollectBFCacheEvent(t){let n=t.driver.defaultSession,r;function a(u){r=u}s(a,"onBfCach\ +eNotUsed"),n.on("Page.backForwardCacheNotUsed",a);let o=await n.sendCommand("Page.getNavigationHistory"),i=o.entries[o.currentIndex];await Promise.all([n.sendCommand("Page.navigate",{url:"chrome://terms"}),aD(n,Use).promise]);let[,c]=await Promise.all([n.sendCommand("Page.navigateToHistoryEntry",{entryId:i.id}),w1(n).promise]);if(await new Promise(u=>setTimeout(u,Bse)),c.type!=="BackForwardCacheRestore"&&!r)throw new Error("bfcache failed but the failure reasons were not emitted in time");return n.off("Page.backForwardCacheNotUsed",a),r}passivelyCollectBFCacheEvents(t){let n=[];for(let r of t.dependencies.DevtoolsLog)r.method==="Page.backForwardCacheNotUsed"&&n.push(r.params);return n}async getArtifact(t){let n=this.passivelyCollectBFCacheEvents(t);if(t.gatherMode==="navigation"&&!t.settings.usePassiveGathering){let r=await this.activelyCollectBFCacheEvent(t);r&&n.push(r)}return n.map(e.processBFCacheEvent)}},jse=iD});var UL={};T(UL,{default:()=>qse});function zse(){return caches.keys().then(e=>Promise.all(e.map(t=>caches.open(t)))).then(e=>{let t=[];return Promise.all(e.map(n=>n.keys().then(r=>{t.push(...r.map(a=>a.url))}))).then(n=>t)})}var sD,qse,jL=g(()=>{"use strict";d();Ke();s(zse,"getCacheContents");sD=class extends Q{static{s(this,"CacheContents")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){return await t.driver.executionContext.evaluate(zse,{args:[]})}},qse=sD});var zL={};T(zL,{default:()=>Wse});function Hse(e){if(typeof e.value<"u"||e.type==="undefined")return String(e.value);if(typeof e.description=="string"&&e.description!==e.className)return e.description;let t=e.subtype||e.type,n=e.className||"Object";return`[${t} ${n}]`}var cD,Wse,qL=g(()=>{"use strict";d();Ke();s(Hse,"remoteObjectToString");cD=class extends Q{static{s(this,"ConsoleMessages")}meta={supportedModes:["timespan","navigation"]};constructor(){super(),this._logEntries=[],this._onConsoleAPICalled=this.onConsoleAPICalled.bind(this),this._onExceptionThrown=this.onExceptionThrown.bind(this),this._onLogEntryAdded=this.onLogEntry.bind(this)}onConsoleAPICalled(t){let{type:n}=t;if(n!=="warning"&&n!=="error")return;let a=(t.args||[]).map(Hse).join(" ");if(!a&&!t.stackTrace)return;let{url:o,lineNumber:i,columnNumber:c}=t.stackTrace?.callFrames[0]||{},u={eventType:"consoleAPI",source:n==="warning"?"console.warn":"console.error",level:n,text:a,stackTrace:t.stackTrace,timestamp:t.timestamp, +url:o,lineNumber:i,columnNumber:c};this._logEntries.push(u)}onExceptionThrown(t){let n=t.exceptionDetails.exception?t.exceptionDetails.exception.description:t.exceptionDetails.text;if(!n)return;let r={eventType:"exception",source:"exception",level:"error",text:n,stackTrace:t.exceptionDetails.stackTrace,timestamp:t.timestamp,url:t.exceptionDetails.url,scriptId:t.exceptionDetails.scriptId,lineNumber:t.exceptionDetails.lineNumber,columnNumber:t.exceptionDetails.columnNumber};this._logEntries.push(r)}onLogEntry(t){let{source:n,level:r,text:a,stackTrace:o,timestamp:i,url:c,lineNumber:u}=t.entry,l=t.entry.stackTrace?.callFrames[0];this._logEntries.push({eventType:"protocolLog",source:n,level:r,text:a,stackTrace:o,timestamp:i,url:c,scriptId:l?.scriptId,lineNumber:u,columnNumber:l?.columnNumber})}async startInstrumentation(t){let n=t.driver.defaultSession;n.on("Log.entryAdded",this._onLogEntryAdded),await n.sendCommand("Log.enable"),await n.sendCommand("Log.startViolationsReport",{config:[{name:"\ +discouragedAPIUse",threshold:-1}]}),n.on("Runtime.consoleAPICalled",this._onConsoleAPICalled),n.on("Runtime.exceptionThrown",this._onExceptionThrown),await n.sendCommand("Runtime.enable")}async stopInstrumentation({driver:t}){await t.defaultSession.sendCommand("Log.stopViolationsReport"),await t.defaultSession.off("Log.entryAdded",this._onLogEntryAdded),await t.defaultSession.sendCommand("Log.disable"),await t.defaultSession.off("Runtime.consoleAPICalled",this._onConsoleAPICalled),await t.defaultSession.off("Runtime.exceptionThrown",this._onExceptionThrown),await t.defaultSession.sendCommand("Runtime.disable")}async getArtifact(){return this._logEntries}},Wse=cD});var HL={};T(HL,{default:()=>Gse});var uD,Gse,WL=g(()=>{"use strict";d();Ke();uD=class extends Q{static{s(this,"CSSUsage")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let n=t.driver.defaultSession,r=t.driver.executionContext;await n.sendCommand("DOM.enable"),await n.sendCommand("CSS.enable"),await n.sendCommand("CSS.startRuleUsageTracking"),await r.evaluateAsync("getComputedStyle(document.body)");let{ruleUsage:a}=await n.sendCommand("CSS.stopRuleUsageTracking");return await n.sendCommand("CSS.disable"),await n.sendCommand("DOM.disable"),a}},Gse=uD});var GL={};T(GL,{default:()=>Vse});var lD,Vse,VL=g(()=>{"use strict";d();Tr();Ke();lD=class extends Q{static{s(this,"DevtoolsLogCompat")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Kt.symbol}};async getArtifact(t){return{defaultPass:t.dependencies.DevtoolsLog}}},Vse=lD});var $L={};T($L,{default:()=>Yse});function $se(){if(!document.doctype)return null;let e=document.compatMode,{name:t,publicId:n,systemId:r}=document.doctype;return{name:t,publicId:n,systemId:r,documentCompatMode:e}}var dD,Yse,YL=g(()=>{"use strict";d();Ke();s($se,"getDoctype");dD=class extends Q{static{s(this,"Doctype")}meta={supportedModes:["snapshot","navigation"]};getArtifact(t){return t.driver.executionContext.evaluate($se,{args:[],useIsolation:!0})}},Yse=dD});var KL={};T(KL,{default:()=>Jse});function Kse(e=document.body,t=!0){let n=null,r=-1,a=-1,o=0,i=null,c=s(function(l,m=1){m>r&&(n=l,r=m),l.children.length>a&&(i=l,a=l.children.length);let p=l.firstElementChild;for(;p;)c(p,m+1),t&&p.shadowRoot&&c(p.shadowRoot,m+1),p=p.nextElementSibling,o++;return{maxDepth:r,maxWidth:a,numElements:o}},"_calcDOMWidthAndHeight"),u=c(e);return{depth:{max:u.maxDepth,...getNodeDetails(n)},width:{max:u.maxWidth,...getNodeDetails(i)},totalBodyElements:u.numElements}}var mD,Jse,JL=g(()=>{"use strict";d();Ke();On();s(Kse,"getDOMStats");mD=class extends Q{static{s(this,"DOMStats")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let n=t.driver;await n.defaultSession.sendCommand("DOM.enable");let r=await n.executionContext.evaluate(Kse,{args:[],useIsolation:!0,deps:[je.getNodeDetails]});return await n.defaultSession.sendCommand("DOM.disable"),r}},Jse=mD});var XL={};T(XL,{default:()=>rce});var Xse,Zse,Qse,ece,tce,nce,pD,rce,ZL=g(()=>{"use strict";d();Oe();Ke();dt();Bt();nr();ut();Tr();Xse=5e3,Zse=2e3*1024,Qse=.92,ece=.85,tce=4096,nce=/^image\/((x|ms|x-ms)-)?(png|bmp|jpeg)$/,pD=class e extends Q{static{s(this,"OptimizedImages")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Kt.symbol}};constructor(){super(),this._encodingStartAt=0}static filterImageRequests(t){let n=new Set;return t.reduce((r,a)=>{if(n.has(a.url)||!a.finished||a.sessionTargetType!=="page")return r;n.add(a.url);let o=a.resourceType===K.TYPES.Image&&nce.test(a.mimeType),i=K.getResourceSizeOnNetwork(a);return o&&i>tce&&r.push({requestId:a.requestId,url:a.url,mimeType:a.mimeType,resourceSize:i}),r},[])}_getEncodedResponse(t,n,r){n=K.getRequestIdForBackend(n);let o={requestId:n,encoding:r,quality:r==="jpeg"?Qse:ece,sizeOnly:!0};return t.sendCommand("Audits.getEncodedResponse",o)}async calculateImageStats(t,n){let r=n.resourceSize;if(Date.now()-this._encodingStartAt> +Xse||r>Zse)return{originalSize:r,jpegSize:void 0,webpSize:void 0};let a=await this._getEncodedResponse(t,n.requestId,"jpeg"),o=await this._getEncodedResponse(t,n.requestId,"webp");return{originalSize:r,jpegSize:a.encodedSize,webpSize:o.encodedSize}}async computeOptimizedImages(t,n){this._encodingStartAt=Date.now();let r=[];for(let a of n)try{let i={failed:!1,...await this.calculateImageStats(t,a),...a};r.push(i)}catch(o){M.warn("optimized-images",o.message),Dt.captureException(o,{tags:{gatherer:"OptimizedImages"},extra:{imageUrl:X.elideDataURI(a.url)},level:"warning"});let i={failed:!0,errMsg:o.message,...a};r.push(i)}return r}async getArtifact(t){let n=t.dependencies.DevtoolsLog,r=await oe.request(n,t),a=e.filterImageRequests(r).sort((c,u)=>u.resourceSize-c.resourceSize),o=await this.computeOptimizedImages(t.driver.defaultSession,a),i=o.filter(c=>!c.failed);if(o.length&&!i.length)throw new Error("All image optimizations failed");return o}},rce=pD});async function E1(e,t,n=1e3){return t=K.getRequestIdForBackend(t),e.setNextProtocolTimeout(n),(await e.sendCommand("Network.getResponseBody",{requestId:t})).body}var fD=g(()=>{"use strict";d();Bt();s(E1,"fetchResponseBodyFromCache")});var QL={};T(QL,{default:()=>sce});var ace,oce,ice,hD,sce,eP=g(()=>{"use strict";d();Xi();Gy();Oe();Ke();dt();Bt();Tr();fD();ut();ace="chrome-extension:",oce=["image","audio","video"],ice=[K.TYPES.Document,K.TYPES.Script,K.TYPES.Stylesheet,K.TYPES.XHR,K.TYPES.Fetch,K.TYPES.EventSource],hD=class e extends Q{static{s(this,"ResponseCompression")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Kt.symbol}};static filterUnoptimizedResponses(t){let n=[];return t.forEach(r=>{if(r.sessionTargetType!=="page")return;let a=r.mimeType,o=r.resourceType||K.TYPES.Other,i=r.resourceSize,u=!(a&&oce.some(m=>a.startsWith(m)))&&ice.includes(o),l=r.url.startsWith(ace);!u||!i||!r.finished||l||!r.transferSize||r.statusCode===304||K.isContentEncoded(r)||n.push({requestId:r.requestId,url:r.url,mimeType:a,transferSize:r.transferSize,resourceSize:i,gzipSize:0})}),n}async getCompressibleRecords(t,n){let r=t.driver.defaultSession,a=e.filterUnoptimizedResponses(n);return Promise.all(a.map(o=>E1( +r,o.requestId).then(i=>i?new Promise((c,u)=>qM(i,(l,m)=>{if(l)return u(l);o.gzipSize=z.byteLength(m,"utf8"),c(o)})):o).catch(i=>{if(!i?.message?.includes("No resource with given identifier found"))throw i.extra={url:X.elideDataURI(o.url)},i;return M.error("ResponseCompression",i.message),o.gzipSize=void 0,o})))}async getArtifact(t){let n=t.dependencies.DevtoolsLog,r=await oe.request(n,t);return this.getCompressibleRecords(t,r)}},sce=hD});function lce(e,t){let r=e.match(/Chrome\/([\d.]+)/)?.[1]||"99.0.1234.0",[a]=r.split(".",1),o=[{brand:"Chromium",version:a},{brand:"Google Chrome",version:a}],i={platform:"Android",platformVersion:"11.0",architecture:"",model:"moto g power (2022)"},c={platform:"macOS",platformVersion:"10.15.7",architecture:"x86",model:""},u=t==="mobile";return{brands:o,fullVersion:r,...u?i:c,mobile:u}}async function T1(e,t){if(t.emulatedUserAgent!==!1){let n=t.emulatedUserAgent;await e.sendCommand("Network.setUserAgentOverride",{userAgent:n,userAgentMetadata:lce(n,t.formFactor)})}if(t.screenEmulation.disabled!==!0){let{width:n,height:r,deviceScaleFactor:a,mobile:o}=t.screenEmulation,i={width:n,height:r,deviceScaleFactor:a,mobile:o};await e.sendCommand("Emulation.setDeviceMetricsOverride",i),await e.sendCommand("Emulation.setTouchEmulationEnabled",{enabled:i.mobile})}}async function tP(e,t){if(t.throttlingMethod!=="devtools")return rP(e);await Promise.all([dce(e,t.throttling),mce(e,t.throttling)])}async function nP(e){ +await Promise.all([rP(e),pce(e)])}function dce(e,t){let n={offline:!1,latency:t.requestLatencyMs||0,downloadThroughput:t.downloadThroughputKbps||0,uploadThroughput:t.uploadThroughputKbps||0};return n.downloadThroughput=Math.floor(n.downloadThroughput*1024/8),n.uploadThroughput=Math.floor(n.uploadThroughput*1024/8),e.sendCommand("Network.emulateNetworkConditions",n)}function rP(e){return e.sendCommandAndIgnore("Network.emulateNetworkConditions",cce)}function mce(e,t){let n=t.cpuSlowdownMultiplier;return e.sendCommand("Emulation.setCPUThrottlingRate",{rate:n})}function pce(e){return e.sendCommandAndIgnore("Emulation.setCPUThrottlingRate",uce)}var cce,uce,S1=g(()=>{"use strict";d();cce={latency:0,downloadThroughput:0,uploadThroughput:0,offline:!1},uce={rate:1};s(lce,"parseUseragentIntoMetadata");s(T1,"emulate");s(tP,"throttle");s(nP,"clearThrottling");s(dce,"enableNetworkThrottling");s(rP,"clearNetworkThrottling");s(mce,"enableCPUThrottling");s(pce,"clearCPUThrottling")});var iP={};T(iP,{default:()=>vce});function oP(e){return e.replace(/(-\w)/g,t=>t[1].toUpperCase())}function gce(){let e=oP(window.screen.orientation.type);return{width:window.outerWidth,height:window.outerHeight,screenOrientation:{type:e,angle:window.screen.orientation.angle},deviceScaleFactor:window.devicePixelRatio}}function yce(){return new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(e))})}var fce,aP,hce,yD,vce,sP=g(()=>{"use strict";d();Ke();S1();On();D1();fce=process.env.LH_FPS_TEST?100:30,aP=process.env.LH_FPS_TEST?"png":"webp",hce=16383;s(oP,"kebabCaseToCamelCase");s(gce,"getObservedDeviceMetrics");s(yce,"waitForDoubleRaf");yD=class extends Q{static{s(this,"FullPageScreenshot")}meta={supportedModes:["snapshot","timespan","navigation"]};waitForNetworkIdle(t){let n=t.driver.defaultSession,r=t.driver.networkMonitor;return rD(n,r,{pretendDCLAlreadyFired:!0,networkQuietThresholdMs:1e3,busyEvent:"network-critical-busy",idleEvent:"network-critical-idle",isIdle:a=>a.isCriticalIdle()})}async _resizeViewport(t,n){ +let r=t.driver.defaultSession,a=await r.sendCommand("Page.getLayoutMetrics"),o=Math.round(n.height*a.cssContentSize.height/a.cssLayoutViewport.clientHeight),i=Math.min(o,hce),c=this.waitForNetworkIdle(t);await r.sendCommand("Emulation.setDeviceMetricsOverride",{mobile:n.mobile,deviceScaleFactor:1,height:i,width:0}),await Promise.race([new Promise(u=>setTimeout(u,1e3*5)),c.promise]),c.cancel(),await t.driver.executionContext.evaluate(yce,{args:[]})}async _takeScreenshot(t){let[n,r]=await Promise.all([t.driver.defaultSession.sendCommand("Page.getLayoutMetrics"),t.driver.defaultSession.sendCommand("Page.captureScreenshot",{format:aP,quality:fce})]);return{data:`data:image/${aP};base64,`+r.data,width:n.cssVisualViewport.clientWidth,height:n.cssVisualViewport.clientHeight}}async _resolveNodes(t){function n(){let i={};if(!window.__lighthouseNodesDontTouchOrAllVarianceGoesAway)return i;let c=window.__lighthouseNodesDontTouchOrAllVarianceGoesAway;for(let[u,l]of c.entries()){let m=getBoundingClientRect( +u);i[l]={id:u.id,...m}}return i}s(n,"resolveNodes");function r({useIsolation:i}){return t.driver.executionContext.evaluate(n,{args:[],useIsolation:i,deps:[je.getBoundingClientRect]})}s(r,"resolveNodesInPage");let a=await r({useIsolation:!1}),o=await r({useIsolation:!0});return{...a,...o}}async getArtifact(t){let n=t.driver.defaultSession,r=t.driver.executionContext,a=t.settings,o=!a.screenEmulation.disabled,i={...a.screenEmulation};try{if(!a.usePassiveGathering){if(!o){let l=await r.evaluate(gce,{args:[],useIsolation:!0,deps:[oP]});i.height=l.height,i.width=l.width,i.deviceScaleFactor=l.deviceScaleFactor,i.mobile=a.formFactor==="mobile"}await this._resizeViewport(t,i)}let[c,u]=await Promise.all([this._takeScreenshot(t),this._resolveNodes(t)]);return{screenshot:c,nodes:u}}finally{a.usePassiveGathering||(o?await T1(n,a):await n.sendCommand("Emulation.setDeviceMetricsOverride",{mobile:i.mobile,deviceScaleFactor:i.deviceScaleFactor,height:i.height,width:0}))}}},vce=yD});var cP={};T(cP,{default:()=>wce});function bce(){let e=window.__HTMLElementBoundingClientRect||window.HTMLElement.prototype.getBoundingClientRect;return getElementsInDocument("iframe").map(n=>{let r=e.call(n),{top:a,bottom:o,left:i,right:c,width:u,height:l}=r;return{id:n.id,src:n.src,clientRect:{top:a,bottom:o,left:i,right:c,width:u,height:l},isPositionFixed:isPositionFixed(n),node:getNodeDetails(n)}})}var vD,wce,uP=g(()=>{"use strict";d();Ke();On();s(bce,"collectIFrameElements");vD=class extends Q{static{s(this,"IFrameElements")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){return await t.driver.executionContext.evaluate(bce,{args:[],useIsolation:!0,deps:[je.getElementsInDocument,je.isPositionFixed,je.getNodeDetails]})}},wce=vD});var wD={};T(wD,{default:()=>kce,findMostSpecificMatchedCSSRule:()=>hl,getEffectiveFontRule:()=>lP});function fl(e){return!!e&&!!e.cssProperties.find(({name:t})=>t===Dce)}function hl(e=[],t){let n;for(let r=e.length-1;r>=0;r--)if(t(e[r].rule.style)){n=e[r].rule;break}if(n)return{type:"Regular",...n.style,parentRule:{origin:n.origin,selectors:n.selectorList.selectors}}}function Tce(e=[]){for(let{inlineStyle:t,matchedCSSRules:n}of e){if(fl(t))return{type:"Inline",...t};let r=hl(n,fl);if(r)return r}}function lP({attributesStyle:e,inlineStyle:t,matchedCSSRules:n,inherited:r}){if(fl(t))return{type:"Inline",...t};let a=hl(n,fl);if(a)return a;if(fl(e))return{type:"Attributes",...e};let o=Tce(r);if(o)return o}function Sce(e){return e?Array.from(e.trim()).length:0}async function Cce(e,t){let n=await e.sendCommand("CSS.getMatchedStylesForNode",{nodeId:t}),r=lP(n);if(r)return{type:r.type,range:r.range,styleSheetId:r.styleSheetId,parentRule:r.parentRule&&{origin:r.parentRule.origin,selectors:r.parentRule. +selectors}}}var Dce,xce,Ece,bD,kce,DD=g(()=>{"use strict";d();Ke();Dce="font-size",xce=12,Ece=50;s(fl,"hasFontSizeDeclaration");s(hl,"findMostSpecificMatchedCSSRule");s(Tce,"findInheritedCSSRule");s(lP,"getEffectiveFontRule");s(Sce,"getTextLength");s(Cce,"fetchSourceRule");bD=class e extends Q{static{s(this,"FontSize")}meta={supportedModes:["snapshot","navigation"]};static async fetchFailingNodeSourceRules(t,n){let r=n.sort((u,l)=>l.textLength-u.textLength).slice(0,Ece);await t.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});let{nodeIds:a}=await t.sendCommand("DOM.pushNodesByBackendIdsToFrontend",{backendNodeIds:r.map(u=>u.parentNode.backendNodeId)}),o=r.map(async(u,l)=>{u.nodeId=a[l];try{let m=await Cce(t,a[l]);u.cssRule=m}catch{u.cssRule=void 0}return u}),i=await Promise.all(o),c=i.reduce((u,{textLength:l})=>u+=l,0);return{analyzedFailingNodesData:i,analyzedFailingTextLength:c}}getTextNodesInLayoutFromSnapshot(t){let n=t.strings,r=s(i=>n[i],"getString"),a=s(i=>parseFloat(n[i]),"g\ +etFloat"),o=[];for(let i=0;i<t.documents.length;i++){let c=t.documents[i];if(!c.nodes.backendNodeId||!c.nodes.parentIndex||!c.nodes.attributes||!c.nodes.nodeName)throw new Error("Unexpected response from DOMSnapshot.captureSnapshot.");let u=c.nodes,l=s(m=>({backendNodeId:u.backendNodeId[m],attributes:u.attributes[m].map(r),nodeName:r(u.nodeName[m])}),"getParentData");for(let m of c.textBoxes.layoutIndex){let p=n[c.layout.text[m]];if(!p)continue;let f=c.layout.nodeIndex[m],h=c.layout.styles[m],[y,v]=h,w=a(y),x=r(v),E=u.parentIndex[f],S=u.parentIndex[E],k=l(E),R=S!==void 0?l(S):void 0;o.push({nodeIndex:f,backendNodeId:u.backendNodeId[f],fontSize:w,visibility:x,textLength:Sce(p),parentNode:{...k,parentNode:R}})}}return o}findFailingNodes(t){let n=[],r=0,a=0;for(let o of this.getTextNodesInLayoutFromSnapshot(t))o.visibility!=="hidden"&&(r+=o.textLength,!(o.fontSize>=xce)&&(a+=o.textLength,n.push({nodeId:0,parentNode:o.parentNode,textLength:o.textLength,fontSize:o.fontSize})));return{totalTextLength:r, +failingTextLength:a,failingNodes:n}}async getArtifact(t){let n=t.driver.defaultSession,r=new Map,a=s(p=>r.set(p.header.styleSheetId,p.header),"onStylesheetAdded");n.on("CSS.styleSheetAdded",a),await Promise.all([n.sendCommand("DOMSnapshot.enable"),n.sendCommand("DOM.enable"),n.sendCommand("CSS.enable")]);let o=await n.sendCommand("DOMSnapshot.captureSnapshot",{computedStyles:["font-size","visibility"]}),{totalTextLength:i,failingTextLength:c,failingNodes:u}=this.findFailingNodes(o),{analyzedFailingNodesData:l,analyzedFailingTextLength:m}=await e.fetchFailingNodeSourceRules(n,u);return n.off("CSS.styleSheetAdded",a),l.filter(p=>p.cssRule?.styleSheetId).forEach(p=>p.cssRule.stylesheet=r.get(p.cssRule.styleSheetId)),await Promise.all([n.sendCommand("DOMSnapshot.disable"),n.sendCommand("DOM.disable"),n.sendCommand("CSS.disable")]),{analyzedFailingNodesData:l,analyzedFailingTextLength:m,failingTextLength:c,totalTextLength:i}}},kce=bD});var fP={};T(fP,{default:()=>Ace});function TD(e){let t=e.getBoundingClientRect();return{top:t.top,bottom:t.bottom,left:t.left,right:t.right}}function SD(e,t){return e.parentElement&&e.parentElement.tagName==="PICTURE"?window.getComputedStyle(e.parentElement).getPropertyValue("position"):t.getPropertyValue("position")}function mP(e){return e.filter(n=>n.localName==="img").map(n=>{let r=window.getComputedStyle(n),a=!!n.parentElement&&n.parentElement.tagName==="PICTURE",o=!a&&!n.srcset;return{src:n.currentSrc,srcset:n.srcset,displayedWidth:n.width,displayedHeight:n.height,clientRect:TD(n),attributeWidth:n.getAttribute("width"),attributeHeight:n.getAttribute("height"),naturalDimensions:o?{width:n.naturalWidth,height:n.naturalHeight}:void 0,cssRules:void 0,computedStyles:{position:SD(n,r),objectFit:r.getPropertyValue("object-fit"),imageRendering:r.getPropertyValue("image-rendering")},isCss:!1,isPicture:a,loading:n.loading,isInShadowDOM:n.getRootNode()instanceof ShadowRoot,fetchPriority:n.fetchPriority, +node:getNodeDetails(n)}})}function pP(e){let t=/^url\("([^"]+)"\)$/,n=[];for(let r of e){let a=window.getComputedStyle(r);if(!a.backgroundImage||!t.test(a.backgroundImage))continue;let i=a.backgroundImage.match(t)[1];n.push({src:i,srcset:"",displayedWidth:r.clientWidth,displayedHeight:r.clientHeight,clientRect:TD(r),attributeWidth:null,attributeHeight:null,naturalDimensions:void 0,cssEffectiveRules:void 0,computedStyles:{position:SD(r,a),objectFit:"",imageRendering:a.getPropertyValue("image-rendering")},isCss:!0,isPicture:!1,isInShadowDOM:r.getRootNode()instanceof ShadowRoot,node:getNodeDetails(r)})}return n}function Fce(){let e=getElementsInDocument();return mP(e).concat(pP(e))}function Rce(e){return new Promise((t,n)=>{let r=new Image;r.addEventListener("error",a=>n(new Error("determineNaturalSize failed img load"))),r.addEventListener("load",()=>{t({naturalWidth:r.naturalWidth,naturalHeight:r.naturalHeight})}),r.src=e})}function C1(e,t){if(!e||!e.cssProperties)return;let n=e.cssProperties. +find(({name:r})=>r===t);if(n)return n.value}function Ice(e,t){let r=hl(e,s(a=>C1(a,t),"isDeclarationofInterest"));if(r)return C1(r,t)}function xD({attributesStyle:e,inlineStyle:t,matchedCSSRules:n},r){let a=C1(t,r);if(a)return a;let o=C1(e,r);if(o)return o;let i=Ice(n,r);return i||null}function dP(e){return e.naturalDimensions?e.naturalDimensions.height*e.naturalDimensions.width:e.displayedHeight*e.displayedWidth}var ED,Ace,hP=g(()=>{"use strict";d();Oe();Ke();On();DD();s(TD,"getClientRect");s(SD,"getPosition");s(mP,"getHTMLImages");s(pP,"getCSSImages");s(Fce,"collectImageElementInfo");s(Rce,"determineNaturalSize");s(C1,"findSizeDeclaration");s(Ice,"findMostSpecificCSSRule");s(xD,"getEffectiveSizingRule");s(dP,"getPixelArea");ED=class extends Q{static{s(this,"ImageElements")}meta={supportedModes:["snapshot","timespan","navigation"]};constructor(){super(),this._naturalSizeCache=new Map}async fetchElementWithSizeInformation(t,n){let r=n.src,a=this._naturalSizeCache.get(r);if(!a)try{t.defaultSession. +setNextProtocolTimeout(250),a=await t.executionContext.evaluate(Rce,{args:[r],useIsolation:!0}),this._naturalSizeCache.set(r,a)}catch{}a&&(n.naturalDimensions={width:a.naturalWidth,height:a.naturalHeight})}async fetchSourceRules(t,n,r){try{let{nodeId:a}=await t.sendCommand("DOM.pushNodeByPathToFrontend",{path:n});if(!a)return;let o=await t.sendCommand("CSS.getMatchedStylesForNode",{nodeId:a}),i=xD(o,"width"),c=xD(o,"height"),u=xD(o,"aspect-ratio");r.cssEffectiveRules={width:i,height:c,aspectRatio:u}}catch(a){if(/No node.*found/.test(a.message))return;throw a}}async collectExtraDetails(t,n){let r=!1;setTimeout(o=>r=!0,5e3);let a=0;for(let o of n){if(r){a++;continue}!o.isInShadowDOM&&!o.isCss&&await this.fetchSourceRules(t.defaultSession,o.node.devtoolsNodePath,o),(o.isPicture||o.isCss||o.srcset)&&await this.fetchElementWithSizeInformation(t,o)}r&&M.warn("ImageElements",`Reached gathering budget of 5s. Skipped extra details for ${a}/${n.length}`)}async getArtifact(t){let n=t.driver.defaultSession, +a=await t.driver.executionContext.evaluate(Fce,{args:[],useIsolation:!0,deps:[je.getElementsInDocument,je.getBoundingClientRect,je.getNodeDetails,TD,SD,mP,pP]});return await Promise.all([n.sendCommand("DOM.enable"),n.sendCommand("CSS.enable"),n.sendCommand("DOM.getDocument",{depth:-1,pierce:!0})]),a.sort((o,i)=>dP(i)-dP(o)),await this.collectExtraDetails(t.driver,a),await Promise.all([n.sendCommand("DOM.disable"),n.sendCommand("CSS.disable")]),a}},Ace=ED});var gP={};T(gP,{default:()=>Mce});function _ce(){let e=[],t=new Map,n=new Map,r=getElementsInDocument("form");for(let i of r)t.set(i,{id:i.id,name:i.name,autocomplete:i.autocomplete,node:getNodeDetails(i)});let a=getElementsInDocument("label");for(let i of a)n.set(i,{for:i.htmlFor,node:getNodeDetails(i)});let o=getElementsInDocument("textarea, input, select");for(let i of o){let c=i.form,u=c?[...t.keys()].indexOf(c):void 0,l=[...i.labels||[]].map(p=>[...n.keys()].indexOf(p)),m;i.readOnly||(m=!i.dispatchEvent(new ClipboardEvent("paste",{cancelable:!0}))),e.push({parentFormIndex:u,labelIndices:l,id:i.id,name:i.name,type:i.type,placeholder:i instanceof HTMLSelectElement?void 0:i.placeholder,autocomplete:{property:i.autocomplete,attribute:i.getAttribute("autocomplete"),prediction:i.getAttribute("autofill-prediction")},preventsPaste:m,node:getNodeDetails(i)})}return{inputs:e,forms:[...t.values()],labels:[...n.values()]}}var CD,Mce,yP=g(()=>{"use strict";d();Ke();On();s(_ce,"collectElements"); +CD=class extends Q{static{s(this,"Inputs")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){return t.driver.executionContext.evaluate(_ce,{args:[],useIsolation:!0,deps:[je.getElementsInDocument,je.getNodeDetails]})}},Mce=CD});var vP={};T(vP,{default:()=>Nce});var kD,Nce,bP=g(()=>{"use strict";d();Ke();ut();Tr();kD=class extends Q{static{s(this,"InspectorIssues")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Kt.symbol}};constructor(){super(),this._issues=[],this._onIssueAdded=this.onIssueAdded.bind(this)}onIssueAdded(t){this._issues.push(t.issue)}async startInstrumentation(t){let n=t.driver.defaultSession;n.on("Audits.issueAdded",this._onIssueAdded),await n.sendCommand("Audits.enable")}async stopInstrumentation(t){let n=t.driver.defaultSession;n.off("Audits.issueAdded",this._onIssueAdded),await n.sendCommand("Audits.disable")}async getArtifact(t){let n=t.dependencies.DevtoolsLog,r=await oe.request(n,t),a={attributionReportingIssue:[],blockedByResponseIssue:[],bounceTrackingIssue:[],clientHintIssue:[],contentSecurityPolicyIssue:[],cookieDeprecationMetadataIssue:[],corsIssue:[],deprecationIssue:[],federatedAuthRequestIssue:[],genericIssue:[],heavyAdIssue:[],lowTextContrastIssue:[],mixedContentIssue:[], +navigatorUserAgentIssue:[],propertyRuleIssue:[],quirksModeIssue:[],cookieIssue:[],sharedArrayBufferIssue:[],sharedDictionaryIssue:[],stylesheetLoadingIssue:[],federatedAuthUserInfoRequestIssue:[]},o=Object.keys(a);for(let i of o){let c=`${i}Details`,u=this._issues.map(l=>l.details[c]);for(let l of u){if(!l)continue;let m="request"in l&&l.request&&l.request.requestId;m?r.find(p=>p.requestId===m)&&a[i].push(l):a[i].push(l)}}return a}},Nce=kD});var wP={};T(wP,{default:()=>Oce});var FD,Oce,DP=g(()=>{"use strict";d();Ke();FD=class extends Q{static{s(this,"JsUsage")}meta={supportedModes:["snapshot","timespan","navigation"]};constructor(){super(),this._scriptUsages=[]}async startInstrumentation(t){let n=t.driver.defaultSession;await n.sendCommand("Profiler.enable"),await n.sendCommand("Profiler.startPreciseCoverage",{detailed:!1})}async stopInstrumentation(t){let n=t.driver.defaultSession,r=await n.sendCommand("Profiler.takePreciseCoverage");this._scriptUsages=r.result,await n.sendCommand("Profiler.stopPreciseCoverage"),await n.sendCommand("Profiler.disable")}async getArtifact(){let t={};for(let n of this._scriptUsages)n.url===""||n.url==="_lighthouse-eval.js"||n.url!=="__puppeteer_evaluation_script__"&&(t[n.scriptId]=n);return t}},Oce=FD});var SP=de((o8e,TP)=>{"use strict";d();var Lce=/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i,Pce=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,Bce=/\s|\uFEFF|\xA0/,Uce=/\r?\n[\x20\x09]+/g,jce=/[;,"]/,zce=/[;,"]|\s/,qce=/^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/,Ra={IDLE:1,URI:2,ATTR:4};function xP(e){return e.replace(Pce,"")}s(xP,"trim");function k1(e){return Bce.test(e)}s(k1,"hasWhitespace");function Hce(e,t){for(;k1(e[t]);)t++;return t}s(Hce,"skipWhitespace");function EP(e){return zce.test(e)||!qce.test(e)}s(EP,"needsQuotes");function Wce(e,t){return Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(n=>n in t&&e[n]===t[n])}s(Wce,"shallowCompareObjects");var qt=class e{static{s(this,"Link")}constructor(t){this.refs=[],t&&this.parse(t)}rel(t){for(var n=[],r=t.toLowerCase(),a=0;a<this.refs.length;a++)this.refs[a].rel.toLowerCase()===r&&n.push(this.refs[a]);return n}get(t,n){t=t.toLowerCase();for(var r=[],a=0;a<this.refs.length;a++)this.refs[a][t]===n&&r.push(this.refs[a]);return r}set(t){ +return this.refs.push(t),this}setUnique(t){return this.refs.some(n=>Wce(n,t))||this.refs.push(t),this}has(t,n){t=t.toLowerCase();for(var r=0;r<this.refs.length;r++)if(this.refs[r][t]===n)return!0;return!1}parse(t,o){o=o||0,t=o?t.slice(o):t,t=xP(t).replace(Uce,"");for(var r=Ra.IDLE,a=t.length,o=0,i=null;o<a;)if(r===Ra.IDLE){if(k1(t[o])){o++;continue}else if(t[o]==="<"){i!=null&&(i.rel!=null?this.refs.push(...e.expandRelations(i)):this.refs.push(i));var c=t.indexOf(">",o);if(c===-1)throw new Error("Expected end of URI delimiter at offset "+o);i={uri:t.slice(o+1,c)},o=c,r=Ra.URI}else throw new Error('Unexpected character "'+t[o]+'" at offset '+o);o++}else if(r===Ra.URI)if(k1(t[o])){o++;continue}else if(t[o]===";")r=Ra.ATTR,o++;else if(t[o]===",")r=Ra.IDLE,o++;else throw new Error('Unexpected character "'+t[o]+'" at offset '+o);else if(r===Ra.ATTR){if(t[o]===";"||k1(t[o])){o++;continue}var c=t.indexOf("=",o);c===-1&&(c=t.indexOf(";",o)),c===-1&&(c=t.length);var u=xP(t.slice(o,c)).toLowerCase(), +l="";if(o=c+1,o=Hce(t,o),t[o]==='"')for(o++;o<a;){if(t[o]==='"'){o++;break}t[o]==="\\"&&o++,l+=t[o],o++}else{for(var c=o+1;!jce.test(t[c])&&c<a;)c++;l=t.slice(o,c),o=c}switch(i[u]&&e.isSingleOccurenceAttr(u)||(u[u.length-1]==="*"?i[u]=e.parseExtendedValue(l):(l=u==="type"?l.toLowerCase():l,i[u]!=null?Array.isArray(i[u])?i[u].push(l):i[u]=[i[u],l]:i[u]=l)),t[o]){case",":r=Ra.IDLE;break;case";":r=Ra.ATTR;break}o++}else throw new Error('Unknown parser state "'+r+'"');return i!=null&&(i.rel!=null?this.refs.push(...e.expandRelations(i)):this.refs.push(i)),i=null,this}toString(){for(var t=[],n="",r=null,a=0;a<this.refs.length;a++)r=this.refs[a],n=Object.keys(this.refs[a]).reduce(function(o,i){return i==="uri"?o:o+"; "+e.formatAttribute(i,r[i])},"<"+r.uri+">"),t.push(n);return t.join(", ")}};qt.isCompatibleEncoding=function(e){return Lce.test(e)};qt.parse=function(e,t){return new qt().parse(e,t)};qt.isSingleOccurenceAttr=function(e){return e==="rel"||e==="type"||e==="media"||e==="title"||e=== +"title*"};qt.isTokenAttr=function(e){return e==="rel"||e==="type"||e==="anchor"};qt.escapeQuotes=function(e){return e.replace(/"/g,'\\"')};qt.expandRelations=function(e){var t=e.rel.split(" ");return t.map(function(n){var r=Object.assign({},e);return r.rel=n,r})};qt.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']*)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:qt.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:qt.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}};qt.formatExtendedAttribute=function(e,t){var n=(t.encoding||"utf-8").toUpperCase(),r=t.language||"en",a="";return Buffer.isBuffer(t.value)&&qt.isCompatibleEncoding(n)?a=t.value.toString(n):Buffer.isBuffer(t.value)?a=t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):a=encodeURIComponent(t.value),e+"="+n+"'"+r+"'"+a};qt.formatAttribute=function(e,t){return Array.isArray(t)?t.map(n=>qt.formatAttribute(e,n)).join("; "):e[e.length-1]==="*"||typeof t!="string"?qt.formatExtendedAttribute(e, +t):(qt.isTokenAttr(e)?t=EP(t)?'"'+qt.escapeQuotes(t)+'"':qt.escapeQuotes(t):EP(t)&&(t=encodeURIComponent(t),t=t.replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"),t='"'+t+'"'),e+"="+t)};TP.exports=qt});var RD,Qe,rn=g(()=>{"use strict";d();Mt();xe();ut();RD=class{static{s(this,"MainResource")}static async compute_(t,n){let{mainDocumentUrl:r}=t.URL;if(!r)throw new Error("mainDocumentUrl must exist to get the main resource");let a=await oe.request(t.devtoolsLog,n),o=ct.NetworkAnalyzer.findLastDocumentForUrl(a,r);if(!o)throw new Error("Unable to identify the main resource");return o}},Qe=G(RD,["URL","devtoolsLog"])});var kP={};T(kP,{UIStrings:()=>AD,default:()=>Kce});function Vce(e,t){try{return new URL(e,t).href}catch{return null}}function $ce(e){return e==="anonymous"?"anonymous":e==="use-credentials"?"use-credentials":null}function Yce(){let e=getElementsInDocument("link"),t=[];for(let n of e){if(!(n instanceof HTMLLinkElement))continue;let r=n.getAttribute("href")||"",a=n.closest("head")?"head":"body";t.push({rel:n.rel,href:n.href,hreflang:n.hreflang,as:n.as,crossOrigin:n.crossOrigin,hrefRaw:r,source:a,fetchPriority:n.fetchPriority,node:getNodeDetails(n)})}return t}var CP,AD,Gce,ID,Kce,FP=g(()=>{"use strict";d();CP=mn(SP(),1);Ke();On();Tr();rn();zn();A();AD={headerParseWarning:"Error parsing `link` header ({error}): `{header}`"},Gce=D("core/gather/gatherers/link-elements.js",AD);s(Vce,"normalizeUrlOrNull");s($ce,"getCrossoriginFromHeader");s(Yce,"getLinkElementsInDOM");ID=class e extends Q{static{s(this,"LinkElements")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Kt. +symbol}};static getLinkElementsInDOM(t){return t.driver.executionContext.evaluate(Yce,{args:[],useIsolation:!0,deps:[je.getNodeDetails,je.getElementsInDocument]})}static async getLinkElementsInHeaders(t,n){let r=await Qe.request({devtoolsLog:n,URL:t.baseArtifacts.URL},t),a=[];for(let o of r.responseHeaders){if(o.name.toLowerCase()!=="link")continue;let i=[];try{i=CP.default.parse(o.value).refs}catch(c){let u=Le.truncate(o.value,100),l=Gce(AD.headerParseWarning,{error:c.message,header:u});t.baseArtifacts.LighthouseRunWarnings.push(l)}for(let c of i)a.push({rel:c.rel||"",href:Vce(c.uri,t.baseArtifacts.URL.finalDisplayedUrl),hrefRaw:c.uri||"",hreflang:c.hreflang||"",as:c.as||"",crossOrigin:$ce(c.crossorigin),source:"headers",fetchPriority:c.fetchpriority,node:null})}return a}async getArtifact(t){let n=t.dependencies.DevtoolsLog,r=await e.getLinkElementsInDOM(t),a=await e.getLinkElementsInHeaders(t,n),o=r.concat(a);for(let i of o)i.rel=i.rel.toLowerCase();return o}},Kce=ID});var RP={};T(RP,{default:()=>Jce});var _D,Jce,IP=g(()=>{"use strict";d();Ke();Tr();fD();rn();_D=class extends Q{static{s(this,"MainDocumentContent")}meta={supportedModes:["navigation"],dependencies:{DevtoolsLog:Kt.symbol}};async getArtifact(t){let n=t.dependencies.DevtoolsLog,r=await Qe.request({devtoolsLog:n,URL:t.baseArtifacts.URL},t),a=t.driver.defaultSession;return E1(a,r.requestId)}},Jce=_D});var AP={};T(AP,{default:()=>Zce});function Xce(){let e={getElementsInDocument,getNodeDetails};return e.getElementsInDocument("head meta").map(n=>{let r=s(a=>{let o=n.attributes.getNamedItem(a);if(o)return o.value},"getAttribute");return{name:n.name.toLowerCase(),content:n.content,property:r("property"),httpEquiv:n.httpEquiv?n.httpEquiv.toLowerCase():void 0,charset:r("charset"),node:e.getNodeDetails(n)}})}var MD,Zce,_P=g(()=>{"use strict";d();Ke();On();s(Xce,"collectMetaElements");MD=class extends Q{static{s(this,"MetaElements")}meta={supportedModes:["snapshot","navigation"]};getArtifact(t){return t.driver.executionContext.evaluate(Xce,{args:[],useIsolation:!0,deps:[je.getElementsInDocument,je.getNodeDetails]})}},Zce=MD});var MP={};T(MP,{default:()=>Qce});var ND,Qce,NP=g(()=>{"use strict";d();Ke();Tr();ND=class e extends Q{static{s(this,"NetworkUserAgent")}meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:Kt.symbol}};static getNetworkUserAgent(t){for(let n of t){if(n.method!=="Network.requestWillBeSent")continue;let r=n.params.request.headers["User-Agent"];if(r)return r}return""}async getArtifact(t){return e.getNetworkUserAgent(t.dependencies.DevtoolsLog)}},Qce=ND});function OP(){(function(e){function t(a){return a===void 0?0:Number(a)}s(t,"number");function n(a,o){return a!==o&&!(isNaN(a)&&isNaN(o))}s(n,"different");function r(a,o,i,c){let u,l,m,p,f,h,y,v;u=t(a),l=t(o),m=t(i),p=t(c),Object.defineProperties(this,{x:{get:function(){return u},set:function(w){n(u,w)&&(u=w,f=h=void 0)},enumerable:!0},y:{get:function(){return l},set:function(w){n(l,w)&&(l=w,y=v=void 0)},enumerable:!0},width:{get:function(){return m},set:function(w){n(m,w)&&(m=w,f=h=void 0)},enumerable:!0},height:{get:function(){return p},set:function(w){n(p,w)&&(p=w,y=v=void 0)},enumerable:!0},left:{get:function(){return f===void 0&&(f=u+Math.min(0,m)),f},enumerable:!0},right:{get:function(){return h===void 0&&(h=u+Math.max(0,m)),h},enumerable:!0},top:{get:function(){return y===void 0&&(y=l+Math.min(0,p)),y},enumerable:!0},bottom:{get:function(){return v===void 0&&(v=l+Math.max(0,p)),v},enumerable:!0}})}s(r,"DOMRect"),globalThis.DOMRect=r})(globalThis)}var LP=g(()=>{"use strict";d();s( +OP,"polyfillDOMRect")});var F1,gl,PP,R1=g(()=>{"use strict";d();Cw();LP();OP();F1=r1.TraceProcessor,gl=As.ModelHandlers,PP=a1.RootCauses.RootCauses});var LD,yl,PD=g(()=>{"use strict";d();Wt();la();LD=class extends un{static{s(this,"LHTraceProcessor")}static createNoNavstartError(){return new q(q.errors.NO_NAVSTART)}static createNoResourceSendRequestError(){return new q(q.errors.NO_RESOURCE_REQUEST)}static createNoTracingStartedError(){return new q(q.errors.NO_TRACING_STARTED)}static createNoFirstContentfulPaintError(){return new q(q.errors.NO_FCP)}},yl=LD});var BD,ke,Ut=g(()=>{"use strict";d();xe();PD();BD=class{static{s(this,"ProcessedTrace")}static async compute_(t){return yl.processTrace(t)}},ke=G(BD,null)});function eue({x:e,y:t,width:n,height:r}){return{left:e,top:t,right:e+n,bottom:t+r,width:n,height:r}}function BP(e,t){let n=Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top);if(n<=0)return 0;let r=Math.min(e.right,t.right)-Math.max(e.left,t.left);return r<=0?0:r*n}function UD(e){return e.width*e.height}function jD(e){let t={x:e[0],y:e[1],width:e[2],height:e[3]};return eue(t)}var UP=g(()=>{"use strict";d();s(eue,"addRectTopAndBottom");s(BP,"getRectOverlapArea");s(UD,"getRectArea");s(jD,"traceRectToLHRect")});var nue,zD,$r,Ps=g(()=>{"use strict";d();xe();Ut();UP();R1();nr();nue=500,zD=class e{static{s(this,"CumulativeLayoutShift")}static getLayoutShiftEvents(t){let n=[],r=!1,a=t.timestamps.timeOrigin,o=t.frameEvents.find(i=>i.name==="viewport");o&&(a=o.ts);for(let i of t.frameTreeEvents)if(!(i.name!=="LayoutShift"||!i.args.data||i.args.data.is_main_frame===void 0)){if(i.args.data.weighted_score_delta===void 0)throw new Error("CLS missing weighted_score_delta");if(i.args.data.had_recent_input){if((i.ts-a)/1e3>nue||r)continue}else r=!0;n.push({ts:i.ts,isMainFrame:i.args.data.is_main_frame,weightedScore:i.args.data.weighted_score_delta,impactedNodes:i.args.data.impacted_nodes,event:i})}return n}static getImpactByNodeId(t){let n=new Map;for(let r of t){if(!r.impactedNodes)continue;let a=0,o=new Map;for(let i of r.impactedNodes){if(!i.node_id||!i.old_rect||!i.new_rect)continue;let c=jD(i.old_rect),u=jD(i.new_rect),l=UD(c)+UD(u)-BP(c,u);o.set(i.node_id,l),a+=l}for(let[i,c]of o.entries()){let u=n. +get(i)||0;u+=c/a*r.weightedScore,n.set(i,u)}}return n}static calculate(t){let a=0,o=0,i=Number.NEGATIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let u of t)(u.ts-i>5e6||u.ts-c>1e6)&&(i=u.ts,o=0),c=u.ts,o+=u.weightedScore,a=Math.max(a,o);return a}static async computeWithSharedTraceEngine(t,n){let r=s(async i=>{let c=new F1({LayoutShifts:gl.LayoutShifts,Screenshots:gl.Screenshots});if(await c.parse(i,{}),!c.parsedTrace)throw new Error("null trace engine result");return c.parsedTrace.LayoutShifts.sessionMaxScore},"run"),a=await r(t.map(i=>i.event)),o=await r(n.map(i=>i.event));return{cumulativeLayoutShift:a,cumulativeLayoutShiftMainFrame:o}}static async compute_(t,n){let r=await ke.request(t,n),a=e.getLayoutShiftEvents(r),o=e.getImpactByNodeId(a),i=a.filter(f=>f.isMainFrame),c=e.calculate(a),u=e.calculate(i),l,m=!1,p=!0;if(a.some(f=>f.event.args.data?.had_recent_input)&&(p=!1),p)try{if(l=await this.computeWithSharedTraceEngine(a,i),m=l.cumulativeLayoutShift!==c||l.cumulativeLayoutShiftMainFrame!== +u,m){m=!0;let f=JSON.stringify({cumulativeLayoutShift:c,cumulativeLayoutShiftMainFrame:u}),h=JSON.stringify(l);throw new Error(`new trace engine differed. expected: ${f}, got: ${h}`)}}catch(f){console.error(f),m=!0;let h=new Error("Error when using new trace engine",{cause:f});if(globalThis.expect)throw h;Dt.captureException(h,{tags:{computed:"new-trace-engine"},level:"error",extra:{errorMsg:f.toString()}})}return{cumulativeLayoutShift:c,cumulativeLayoutShiftMainFrame:u,impactByNodeId:o,newEngineResult:l,newEngineResultDiffered:m}}},$r=G(zD,null)});var qD,rr,Ei=g(()=>{"use strict";d();A();R1();xe();Ps();Ut();hn();qD=class e{static{s(this,"TraceEngineResult")}static async runTraceEngine(t){let n={...gl};delete n.Invalidations;let r=new F1(n);if(await r.parse(t,{}),!r.parsedTrace)throw new Error("No data");if(!r.insights)throw new Error("No insights");return this.localizeInsights(r.insights),{data:r.parsedTrace,insights:r.insights}}static localizeInsights(t){for(let n of t.values())for(let[r,a]of Object.entries(n.model)){if(a instanceof Error)continue;let o=`node_modules/@paulirish/trace_engine/models/trace/insights/${r}.js`,i=D(o,{title:a.title,description:a.description});a.title=i(a.title),a.description=i(a.description)}}static async compute_(t,n){let r=await ke.request(t.trace,n),a=new Set($r.getLayoutShiftEvents(r).map(c=>c.event)),o=[...t.trace.traceEvents];for(let c=0;c<o.length;c++){let u=o[c];if(u.name!=="LayoutShift"||!u.args.data)continue;let l=a.has(u);u.args.data.had_recent_input&&l&&(u=JSON.parse(JSON.stringify(u)),u.args. +data.had_recent_input=!1,o[c]=u)}return await e.runTraceEngine(o)}},rr=G(qD,["trace"])});var jP={};T(jP,{default:()=>WD});var HD,WD,GD=g(()=>{"use strict";d();Ke();Xo();R1();Ei();HD=class e extends Q{static{s(this,"RootCauses")}static symbol=Symbol("RootCauses");meta={symbol:e.symbol,supportedModes:["timespan","navigation"],dependencies:{Trace:yr.symbol}};static async runRootCauseAnalysis(t,n){await t.defaultSession.sendCommand("DOM.enable"),await t.defaultSession.sendCommand("CSS.enable"),await t.defaultSession.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});let r={getInitiatorForRequest(c){return null},async pushNodesByBackendIdsToFrontend(c){return(await t.defaultSession.sendCommand("DOM.pushNodesByBackendIdsToFrontend",{backendNodeIds:c})).nodeIds},async getNode(c){try{let u=await t.defaultSession.sendCommand("DOM.describeNode",{nodeId:c});return u.node.nodeId=c,u.node}catch(u){if(u.message.includes("Could not find node with given id"))return null;throw u}},async getComputedStyleForNode(c){try{return(await t.defaultSession.sendCommand("CSS.getComputedStyleForNode", +{nodeId:c})).computedStyle}catch{return[]}},async getMatchedStylesForNode(c){try{return{...await t.defaultSession.sendCommand("CSS.getMatchedStylesForNode",{nodeId:c}),getError(){}}}catch(u){return{getError(){return u.toString()}}}},async fontFaceForSource(c){return null}},a={layoutShifts:{}},o=new PP(r),i=n.LayoutShifts.clusters.flatMap(c=>c.events);for(let c of i){let u=await o.layoutShifts.rootCausesForEvent(n,c);if(u){for(let l of u.fontChanges)l.fontFace=await l.fontFace;a.layoutShifts[i.indexOf(c)]=u}}return await t.defaultSession.sendCommand("DOM.disable"),await t.defaultSession.sendCommand("CSS.disable"),a}async getArtifact(t){let n=t.dependencies.Trace,r=await rr.request({trace:n},t);return e.runRootCauseAnalysis(t.driver,r.data)}},WD=HD});var zP={};T(zP,{default:()=>$D});async function rue(e,t,n){if(n){let r=[];for(let a of e){let o=await t(a);r.push(o)}return r}else{let r=e.map(t);return await Promise.all(r)}}function aue(e){return e.embedderName?e.hasSourceURL&&e.url==="_lighthouse-eval.js":!0}var VD,$D,YD=g(()=>{"use strict";d();Ke();s(rue,"runInSeriesOrParallel");s(aue,"isLighthouseRuntimeEvaluateScript");VD=class e extends Q{static{s(this,"Scripts")}static symbol=Symbol("Scripts");meta={symbol:e.symbol,supportedModes:["timespan","navigation"]};_scriptParsedEvents=[];_scriptContents=[];constructor(){super(),this.onScriptParsed=this.onScriptParsed.bind(this)}onScriptParsed(t){aue(t)||this._scriptParsedEvents.push(t)}async startInstrumentation(t){let n=t.driver.defaultSession;n.on("Debugger.scriptParsed",this.onScriptParsed),await n.sendCommand("Debugger.enable")}async stopInstrumentation(t){let n=t.driver.defaultSession,r=t.baseArtifacts.HostFormFactor;n.off("Debugger.scriptParsed",this.onScriptParsed),this._scriptContents= +await rue(this._scriptParsedEvents,({scriptId:a})=>n.sendCommand("Debugger.getScriptSource",{scriptId:a}).then(o=>o.scriptSource).catch(()=>{}),r==="mobile"),await n.sendCommand("Debugger.disable")}async getArtifact(){return this._scriptParsedEvents.map((n,r)=>({name:n.url,...n,url:n.embedderName||n.url,content:this._scriptContents[r]}))}},$D=VD});var qP={};T(qP,{default:()=>oue});var KD,oue,HP=g(()=>{"use strict";d();Ke();KD=class extends Q{static{s(this,"RobotsTxt")}meta={supportedModes:["snapshot","navigation"]};async getArtifact(t){let{finalDisplayedUrl:n}=t.baseArtifacts.URL,r=new URL("/robots.txt",n).href;return t.driver.fetcher.fetchResource(r).catch(a=>({status:null,content:null,errorMessage:a.message}))}},oue=KD});var WP=de(vl=>{"use strict";d();Object.defineProperty(vl,"__esModule",{value:!0});vl.ParsedURL=void 0;vl.normalizePath=iue;function iue(e){if(e.indexOf("..")===-1&&e.indexOf(".")===-1)return e;let t=(e[0]==="/"?e.substring(1):e).split("/"),n=[];for(let a of t)a!=="."&&(a===".."?n.pop():n.push(a));let r=n.join("/");return e[0]==="/"&&r&&(r="/"+r),r[r.length-1]!=="/"&&(e[e.length-1]==="/"||t[t.length-1]==="."||t[t.length-1]==="..")&&(r=r+"/"),r}s(iue,"normalizePath");var JD=class e{static{s(this,"ParsedURL")}isValid;url;scheme;user;host;port;path;queryParams;fragment;folderPathComponents;lastPathComponent;blobInnerScheme;#e;#t;constructor(t){this.isValid=!1,this.url=t,this.scheme="",this.user="",this.host="",this.port="",this.path="",this.queryParams="",this.fragment="",this.folderPathComponents="",this.lastPathComponent="";let n=this.url.startsWith("blob:"),a=(n?t.substring(5):t).match(e.urlRegex());if(a)this.isValid=!0,n?(this.blobInnerScheme=a[2].toLowerCase(),this.scheme="blob"):this. +scheme=a[2].toLowerCase(),this.user=a[3]??"",this.host=a[4]??"",this.port=a[5]??"",this.path=a[6]??"/",this.queryParams=a[7]??"",this.fragment=a[8]??"";else{if(this.url.startsWith("data:")){this.scheme="data";return}if(this.url.startsWith("blob:")){this.scheme="blob";return}if(this.url==="about:blank"){this.scheme="about";return}this.path=this.url}let o=this.path.lastIndexOf("/");o!==-1?(this.folderPathComponents=this.path.substring(0,o),this.lastPathComponent=this.path.substring(o+1)):this.lastPathComponent=this.path}static concatenate(t,...n){return t.concat(...n)}static beginsWithWindowsDriveLetter(t){return/^[A-Za-z]:/.test(t)}static beginsWithScheme(t){return/^[A-Za-z][A-Za-z0-9+.-]*:/.test(t)}static isRelativeURL(t){return!this.beginsWithScheme(t)||this.beginsWithWindowsDriveLetter(t)}get displayName(){return this.#e?this.#e:this.isDataURL()?this.dataURLDisplayName():this.isBlobURL()?this.url:this.isAboutBlank()?this.url:(this.#e=this.lastPathComponent,this.#e||(this.#e=(this.host|| +"")+"/"),this.#e==="/"&&(this.#e=this.url),this.#e)}static urlRegexInstance=null};vl.ParsedURL=JD});var VP=de((TLe,GP)=>{"use strict";d();var sue=WP();GP.exports={ParsedURL:sue}});var YP=de((CLe,$P)=>{"use strict";d();function cue(e,t,n,r,a){let o=r||0,i=a!==void 0?a:e.length;for(;o<i;){let c=o+i>>1;n(t,e[c])>0?o=c+1:i=c}return i}s(cue,"lowerBound");function uue(e,t,n,r,a){let o=r||0,i=a!==void 0?a:e.length;for(;o<i;){let c=o+i>>1;n(t,e[c])>=0?o=c+1:i=c}return i}s(uue,"upperBound");$P.exports={ArrayUtilities:{lowerBound:cue,upperBound:uue},DevToolsPath:{EmptyUrlString:""}}});var e4=de((Do,QP)=>{"use strict";d();var lue=VP(),Ti=YP();Object.defineProperty(Do,"__esModule",{value:!0});Do.SourceMap=Do.SourceMapEntry=void 0;Do.parseSourceMap=XP;function XP(e){return e.startsWith(")]}")&&(e=e.substring(e.indexOf(` +`))),e.charCodeAt(0)===65279&&(e=e.slice(1)),JSON.parse(e)}s(XP,"parseSourceMap");var Si=class{static{s(this,"SourceMapEntry")}lineNumber;columnNumber;sourceURL;sourceLineNumber;sourceColumnNumber;name;constructor(t,n,r,a,o,i){this.lineNumber=t,this.columnNumber=n,this.sourceURL=r,this.sourceLineNumber=a,this.sourceColumnNumber=o,this.name=i}static compare(t,n){return t.lineNumber!==n.lineNumber?t.lineNumber-n.lineNumber:t.columnNumber-n.columnNumber}};Do.SourceMapEntry=Si;var KP="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ZP=new Map;for(let e=0;e<KP.length;++e)ZP.set(KP.charAt(e),e);var JP=new WeakMap,Ci=class e{static{s(this,"SourceMap")}#e;#t;#r;#n;#a;#i;constructor(t,n,r){this.#e=r,this.#t=t,this.#r=n,this.#n=n.startsWith("data:")?t:n,this.#a=null,this.#i=new Map,"sections"in this.#e&&this.#e.sections.find(a=>"url"in a)&&console.warn(`SourceMap "${n}" contains unsupported "URL" field in one of its sections.`),this.eachSection(this.parseSources.bind(this))}compiledURL(){ +return this.#t}url(){return this.#r}sourceURLs(){return[...this.#i.keys()]}embeddedContentByURL(t){let n=this.#i.get(t);return n?n.content:null}findEntry(t,n){let r=this.mappings(),a=Ti.ArrayUtilities.upperBound(r,void 0,(o,i)=>t-i.lineNumber||n-i.columnNumber);return a?r[a-1]:null}findEntryRanges(t,n){let r=this.mappings(),a=Ti.ArrayUtilities.upperBound(r,void 0,(x,E)=>t-E.lineNumber||n-E.columnNumber);if(!a)return null;let o=a-1,i=r[o].sourceURL;if(!i)return null;let c=a<r.length?r[a].lineNumber:2**31-1,u=a<r.length?r[a].columnNumber:2**31-1,l=new TextUtils.TextRange.TextRange(r[o].lineNumber,r[o].columnNumber,c,u),m=this.reversedMappings(i),p=r[o].sourceLineNumber,f=r[o].sourceColumnNumber,h=Ti.ArrayUtilities.upperBound(m,void 0,(x,E)=>p-r[E].sourceLineNumber||f-r[E].sourceColumnNumber);if(!h)return null;let y=h<m.length?r[m[h]].sourceLineNumber:2**31-1,v=h<m.length?r[m[h]].sourceColumnNumber:2**31-1,w=new TextUtils.TextRange.TextRange(p,f,y,v);return{range:l,sourceRange:w,sourceURL:i}}sourceLineMapping(t,n,r){ +let a=this.mappings(),o=this.reversedMappings(t),i=Ti.ArrayUtilities.lowerBound(o,n,m),c=Ti.ArrayUtilities.upperBound(o,n,m);if(i>=o.length||a[o[i]].sourceLineNumber!==n)return null;let u=o.slice(i,c);if(!u.length)return null;let l=Ti.ArrayUtilities.lowerBound(u,r,(p,f)=>p-a[f].sourceColumnNumber);return l>=u.length?a[u[u.length-1]]:a[u[l]];function m(p,f){return p-a[f].sourceLineNumber}}findReverseIndices(t,n,r){let a=this.mappings(),o=this.reversedMappings(t),i=Ti.ArrayUtilities.upperBound(o,void 0,(u,l)=>n-a[l].sourceLineNumber||r-a[l].sourceColumnNumber),c=i;for(;c>0&&a[o[c-1]].sourceLineNumber===a[o[i-1]].sourceLineNumber&&a[o[c-1]].sourceColumnNumber===a[o[i-1]].sourceColumnNumber;)--c;return o.slice(c,i)}findReverseEntries(t,n,r){let a=this.mappings();return this.findReverseIndices(t,n,r).map(o=>a[o])}findReverseRanges(t,n,r){let a=this.mappings(),o=this.findReverseIndices(t,n,r),i=[];for(let c=0;c<o.length;++c){let u=o[c],l=u+1;for(;c+1<o.length&&l===o[c+1];)++l,++c;let m=a[u]. +lineNumber,p=a[u].columnNumber,f=l<a.length?a[l].lineNumber:2**31-1,h=l<a.length?a[l].columnNumber:2**31-1;i.push(new TextUtils.TextRange.TextRange(m,p,f,h))}return i}mappings(){return this.#o(),this.#a??[]}reversedMappings(t){return this.#o(),this.#i.get(t)?.reverseMappings??[]}#o(){this.#a===null&&(this.#a=[],this.eachSection(this.parseMap.bind(this)),this.mappings().sort(Si.compare),this.#s(this.#a),this.#e=null)}#s(t){let n=new Map;for(let a=0;a<t.length;a++){let o=t[a].sourceURL;if(!o)continue;let i=n.get(o);i||(i=[],n.set(o,i)),i.push(a)}for(let[a,o]of n.entries()){let i=this.#i.get(a);i&&(o.sort(r),i.reverseMappings=o)}function r(a,o){let i=t[a],c=t[o];return i.sourceLineNumber-c.sourceLineNumber||i.sourceColumnNumber-c.sourceColumnNumber||i.lineNumber-c.lineNumber||i.columnNumber-c.columnNumber}s(r,"sourceMappingComparator")}eachSection(t){if(this.#e)if("sections"in this.#e)for(let n of this.#e.sections)"map"in n&&t(n.map,n.offset.line,n.offset.column);else t(this.#e,0,0)}parseSources(t){ +let n=[],r=t.sourceRoot??"",a=new Set(t.x_google_ignoreList);for(let o=0;o<t.sources.length;++o){let i=t.sources[o];lue.ParsedURL.ParsedURL.isRelativeURL(i)&&(r&&!r.endsWith("/")&&i&&!i.startsWith("/")?i=r.concat("/",i):i=r.concat(i));let c=i,u=t.sourcesContent&&t.sourcesContent[o];if(n.push(c),!this.#i.has(c)){let l=u??null,m=a.has(o);this.#i.set(c,{content:l,ignoreListHint:m,reverseMappings:null})}}JP.set(t,n)}parseMap(t,n,r){let a=0,o=0,i=0,c=0,u=JP.get(t),l=t.names??[],m=new e.StringCharIterator(t.mappings),p=u&&u[a];for(;;){if(m.peek()===",")m.next();else{for(;m.peek()===";";)n+=1,r=0,m.next();if(!m.hasNext())break}if(r+=this.decodeVLQ(m),!m.hasNext()||this.isSeparator(m.peek())){this.mappings().push(new Si(n,r));continue}let f=this.decodeVLQ(m);if(f&&(a+=f,u&&(p=u[a])),o+=this.decodeVLQ(m),i+=this.decodeVLQ(m),!m.hasNext()||this.isSeparator(m.peek())){this.mappings().push(new Si(n,r,p,o,i));continue}c+=this.decodeVLQ(m),this.mappings().push(new Si(n,r,p,o,i,l[c]))}}isSeparator(t){ +return t===","||t===";"}decodeVLQ(t){let n=0,r=0,a=e._VLQ_CONTINUATION_MASK;for(;a&e._VLQ_CONTINUATION_MASK;)a=ZP.get(t.next())||0,n+=(a&e._VLQ_BASE_MASK)<<r,r+=e._VLQ_BASE_SHIFT;let o=n&1;return n>>=1,o?-n:n}mapsOrigin(){let t=this.mappings();if(t.length>0){let n=t[0];return n?.lineNumber===0||n.columnNumber===0}return!1}hasIgnoreListHint(t){return this.#i.get(t)?.ignoreListHint??!1}findRanges(t,n){let r=this.mappings(),a=[];if(!r.length)return[];let o=null;(r[0].lineNumber!==0||r[0].columnNumber!==0)&&n?.isStartMatching&&(o=TextUtils.TextRange.TextRange.createUnboundedFromLocation(0,0),a.push(o));for(let{sourceURL:i,lineNumber:c,columnNumber:u}of r){let l=i&&t(i);if(!o&&l){o=TextUtils.TextRange.TextRange.createUnboundedFromLocation(c,u),a.push(o);continue}o&&!l&&(o.endLine=c,o.endColumn=u,o=null)}return a}};Do.SourceMap=Ci;(function(e){e._VLQ_BASE_SHIFT=5,e._VLQ_BASE_MASK=31,e._VLQ_CONTINUATION_MASK=32;class t{static{s(this,"StringCharIterator")}string;position;constructor(r){this.string= +r,this.position=0}next(){return this.string.charAt(this.position++)}peek(){return this.string.charAt(this.position)}hasNext(){return this.position<this.string.length}}e.StringCharIterator=t})(Ci||(Do.SourceMap=Ci={}));QP.exports=Ci;Ci.parseSourceMap=XP});var XD=de((ALe,n4)=>{"use strict";d();var t4={SourceMap:e4()};t4.SourceMap.prototype.computeLastGeneratedColumns=function(){let e=this.mappings();if(!(e.length&&e[0].lastColumnNumber!==void 0))for(let t=0;t<e.length-1;t++){let n=e[t],r=e[t+1];n.lineNumber===r.lineNumber&&(n.lastColumnNumber=r.columnNumber)}};n4.exports=t4});var r4={};T(r4,{default:()=>due});var ZD,QD,due,a4=g(()=>{"use strict";d();ZD=mn(XD(),1);Ke();YD();QD=class extends Q{static{s(this,"SourceMaps")}meta={supportedModes:["timespan","navigation"],dependencies:{Scripts:$D.symbol}};async fetchSourceMap(t,n){let r=await t.fetcher.fetchResource(n,{timeout:1500});if(r.content===null)throw new Error(`Failed fetching source map (${r.status})`);return ZD.default.SourceMap.parseSourceMap(r.content)}parseSourceMapFromDataUrl(t){let n=Buffer.from(t.split(",")[1],"base64");return ZD.default.SourceMap.parseSourceMap(n.toString())}_resolveUrl(t,n){try{return new URL(t,n).href}catch{return}}async _retrieveMapFromScript(t,n){if(!n.sourceMapURL)throw new Error("precondition failed: event.sourceMapURL should exist");let r=n.sourceMapURL.startsWith("data:"),a=n.name,o=r?n.sourceMapURL:this._resolveUrl(n.sourceMapURL,n.name);if(!o)return{scriptId:n.scriptId,scriptUrl:a,errorMessage:`Could not resolve map url: ${n.sourceMapURL}`};let i=r?void 0:o;try{let c=r? +this.parseSourceMapFromDataUrl(o):await this.fetchSourceMap(t,o);if(typeof c.version!="number")throw new Error("Map has no numeric `version` field");if(!Array.isArray(c.sources))throw new Error("Map has no `sources` list");if(typeof c.mappings!="string")throw new Error("Map has no `mappings` field");return c.sections&&(c.sections=c.sections.filter(u=>u.map)),{scriptId:n.scriptId,scriptUrl:a,sourceMapUrl:i,map:c}}catch(c){return{scriptId:n.scriptId,scriptUrl:a,sourceMapUrl:i,errorMessage:c.toString()}}}async getArtifact(t){let n=t.dependencies.Scripts.filter(r=>r.sourceMapURL).map(r=>this._retrieveMapFromScript(t.driver,r));return Promise.all(n)}},due=QD});var o4={};T(o4,{default:()=>fue});async function pue(){let e=[],t=d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests;for(let[n,r]of Object.entries(t))try{let a,o=new Promise(c=>a=setTimeout(()=>c(!1),1e3)),i=await Promise.race([r.test(window),o]);a&&clearTimeout(a),i&&e.push({id:r.id,name:n,version:i.version,npm:r.npm})}catch{}return e}var mue,ex,fue,i4=g(()=>{"use strict";d();da();us();Oe();Ke();mue=`function _createTimeoutHelper(){let e;return{timeoutPromise:new Promise(((t,o)=>{e=setTimeout((()=>o(new Error("Timed out"))),5e3)})),clearTimeout:()=>clearTimeout(e)}}var UNKNOWN_VERSION=null,d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests={GWT:{id:"gwt",icon:"gwt",url:"http://www.gwtproject.org/",test:function(e){var t=e.document,o=t.getElementById("__gwt_historyFrame"),n=t.gwt_uid,r=t.body.__listener,i=t.body.__eventBits,s=e.__gwt_activeModules,c=e.__gwt_jsonp__,u=e.__gwt_scriptsLoaded||e.__gwt_stylesLoaded||e.__gwt_activeModules;if(o||n||r||i||s||c||u){for(var a=t.getElements\ ByTagName("iframe"),l=UNKNOWN_VERSION,N=0;N<a.length;N++)try{if(a[N].tabIndex<0&&a[N].contentWindow&&a[N].contentWindow.$gwt_version){l=a[N].contentWindow.$gwt_version;break}}catch(e){}return"0.0.999"==l&&(l="Google Internal"),{version:l}}return!1}},Ink:{id:"ink",icon:"ink",url:"http://ink.sapo.pt/",test:function(e){return!(!e.Ink||!e.Ink.createModule)&&{version:UNKNOWN_VERSION}}},Vaadin:{id:"vaadin",icon:"vaadin",url:"https://vaadin.com/",test:function(e){return!(!e.vaadin||!e.vaadin.registerWidgetset)&&{version:UNKNOWN_VERSION}}},Bootstrap:{id:"bootstrap",icon:"bootstrap",url:"http://getbootstrap.com/",npm:"bootstrap",test:function(e){var t,o=e.$&&e.$.fn;if(o&&(["affix","alert","button","carousel","collapse","dropdown","modal","popover","scrollspy","tab","tooltip"].some((function(o){if(e.$.fn[o]){if(e.$.fn[o].Constructor&&e.$.fn[o].Constructor.VERSION)return t=e.$.fn[o].Constructor.VERSION,!0;if(new RegExp("\\\\$this\\\\.data\\\\((?:'|\\")(?:bs\\\\.){1}"+o).test(e.$.fn[o].toString()))return t\ =">= 3.0.0 & <= 3.1.1",!0;if(new RegExp("\\\\$this\\\\.data\\\\((?:'|\\")"+o).test(e.$.fn[o].toString()))return t=">= 2.0.0 & <= 2.3.2",!0}return!1})),t))return{version:t};return!1}},Zurb:{id:"zurb",icon:"zurb",url:"https://foundation.zurb.com/",npm:"foundation-sites",test:function(e){return!(!e.Foundation||!e.Foundation.Toggler)&&{version:e.Foundation.version||UNKNOWN_VERSION}}},Polymer:{id:"polymer",icon:"polymer",url:"https://www.polymer-project.org/",npm:"@polymer/polymer",test:function(e){return!(!e.Polymer||!e.Polymer.dom)&&{version:e.Polymer.version||UNKNOWN_VERSION}}},LitElement:{id:"litelement",icon:"polymer",url:"https://lit-element.polymer-project.org/",npm:"lit-element",test:function(e){if(e.litElementVersions&&e.litElementVersions.length){var t=[...e.litElementVersions].sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0})));return{version:t[t.length-1]}}return!1}},"lit-html":{id:"lit-html",icon:"polymer",url:"https://lit-html.polymer-project.org/",npm:"lit-element",test:function(e\ ){if(e.litHtmlVersions&&e.litHtmlVersions.length){var t=[...e.litHtmlVersions].sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0})));return{version:t[t.length-1]}}return!1}},Highcharts:{id:"highcharts",icon:"highcharts",url:"http://www.highcharts.com",npm:"highcharts",test:function(e){return!(!e.Highcharts||!e.Highcharts.Point)&&{version:e.Highcharts.version||UNKNOWN_VERSION}}},InfoVis:{id:"jit",icon:"jit",url:"http://philogb.github.com/jit/",test:function(e){return!(!e.$jit||!e.$jit.PieChart)&&{version:e.$jit.version||UNKNOWN_VERSION}}},FlotCharts:{id:"flotcharts",icon:"flotcharts",url:"http://www.flotcharts.org/",npm:"flot",test:function(e){return!(!e.$||!e.$.plot)&&{version:e.$.plot.version||UNKNOWN_VERSION}}},CreateJS:{id:"createjs",icon:"createjs",url:"https://createjs.com/",npm:"createjs",test:function(e){return!(!e.createjs||!e.createjs.promote)&&{version:UNKNOWN_VERSION}}},"Google Maps":{id:"gmaps",icon:"gmaps",url:"https://developers.google.com/maps/",test:function(e){return!(\ @@ -1442,25 +1721,25 @@ sions;return{version:Array.isArray(e)?e.map((e=>\`core-js-\${e.mode}@\${e.version}\`)).join("; "):UNKNOWN_VERSION}}return!!o&&{version:o.version||UNKNOWN_VERSION}}},Drupal:{id:"drupal",icon:"drupal",url:"https://www.drupal.org/",npm:null,test:function(e){const t=document.querySelector('meta[name="generator"][content^="Drupal"]'),o=t?t.getAttribute("content").replace(/\\D+/gi,""):UNKNOWN_VERSION,n=/\\/sites\\/(?:default|all)\\/(?:themes|modules|files)/,r=Array.from(document.querySelectorAll("link,style,script")||[]);return!!(r.some((e=>n.test(e.src)))||r.some((e=>n.test(e.href)))||t||e.Drupal&&e.Drupal.behaviors)&&{version:o}}},TYPO3:{id:"typo3",icon:"typo3",url:"https://typo3.org/",npm:null,test:function(e){const t=document.querySelector('meta[name="generator"][content^="TYPO3"]'),o=/\\/(typo3conf|typo3temp|fileadmin)/,n=Array.from(document.querySelectorAll("link,style,script")||[]);return!!(t||n.some((e=>o.test(e.src)))||n.some((e=>o.test(e.href))))&&{version:UNKNOWN_VERSION}}},"Create React A\ pp":{id:"create-react-app",icon:"cra",url:"https://create-react-app.dev/",npm:"react-scripts",test:function(e){let t,o,n=e.document.body.firstElementChild;do{"noscript"===n.localName?t=n:"root"===n.id&&(o=n)}while(n=n.nextElementSibling);return!!(o&&t&&/You need to enable JavaScript to run this app/.test(t.textContent))&&{version:UNKNOWN_VERSION}}},"Guess.js":{id:"guessjs",icon:"guessjs",url:"https://guess-js.github.io/",test:function(e){return!(!e.__GUESS__||!e.__GUESS__.guess)&&{version:UNKNOWN_VERSION}}},"October CMS":{id:"octobercms",icon:"october",url:"https://octobercms.com/",npm:null,test:function(e){const t=document.querySelector('meta[name="generator"][content^="OctoberCMS"]'),o=document.querySelector('meta[name="generator"][content^="October CMS"]'),n=/\\/modules\\/system\\/assets\\/(css|js)\\/framework(\\.extras|\\.combined)?(-min)?/,r=Array.from(document.querySelectorAll("link,style,script")||[]);return!!(t||o||r.some((e=>n.test(e.src||e.href))))&&{version:UNKNOWN_VERSION}}},Jooml\ a:{id:"joomla",icon:"joomla",url:"https://www.joomla.org/",npm:null,test:function(e){const t=document.querySelector('meta[name=generator][content^="Joomla"]'),o=!!document.querySelectorAll('script[src*="/media/jui/js/bootstrap.min.js"]').length;return t?{version:t.getAttribute("content").replace(/^\\w+\\s/,"")}:!(!e.Joomla&&!o)&&{version:UNKNOWN_VERSION}}},Sugar:{id:"sugar",icon:"sugar",url:"https://sugarjs.com",npm:"sugar",test:function(e){return e.Sugar?{version:e.Sugar.VERSION||UNKNOWN_VERSION}:!!e.Array.SugarMethods&&{version:UNKNOWN_VERSION}}},Bento:{id:"bentojs",icon:"bentojs",url:"https://bentojs.dev",npm:"https://www.npmjs.com/org/bentoproject",test:function(e){return!(!e.BENTO||!e.BENTO.push)&&{version:UNKNOWN_VERSION}}},"WP Rocket":{id:"wp-rocket",icon:"wp-rocket",url:"https://wp-rocket.me/",npm:null,test:async function(e){const t="undefined"!=typeof RocketLazyLoadScripts||"undefined"!=typeof RocketPreloadLinksConfig||"undefined"!=typeof rocket_lazy,o=!!document.querySelector("\ -style#wpr-usedcss"),n=document.lastChild.nodeType===Node.COMMENT_NODE&&document.lastChild.textContent.includes("WP Rocket");return!!(o||t||n)&&{version:UNKNOWN_VERSION}}},NitroPack:{id:"nitropack",icon:"nitropack",url:"https://nitropack.io/",npm:null,test:async function(e){return!!document.querySelector('meta[name="generator"][content="NitroPack"]')&&{version:UNKNOWN_VERSION}}},Remix:{id:"remix",icon:"remix",url:"https://remix.run/",npm:"remix",test:function(e){return!!e.__remixContext&&{version:UNKNOWN_VERSION}}}};`;s(Noe,"detectLibraries");wD=class e extends X{static{s(this,"Stacks")}constructor(){super(),this.meta={supportedModes:["snapshot","navigation"]}}static async collectStacks(t){let r={msg:"Collect stacks",id:"lh:gather:collectStacks"};N.time(r);let i=(await t.evaluate(Noe,{args:[],deps:[Aoe]})).map(a=>({detector:"js",id:a.id,name:a.name,version:typeof a.version=="number"?String(a.version):a.version||void 0,npm:a.npm||void 0}));return N.timeEnd(r),i}async getArtifact(t){try{return await e. -collectStacks(t.driver.executionContext)}catch{return[]}}},Moe=wD});var C5={};x(C5,{default:()=>Loe});var DD,Loe,F5=g(()=>{"use strict";d();Ne();Ke();Kr();DD=class extends X{static{s(this,"Stylesheets")}constructor(){super(),this._session=void 0,this._sheetPromises=new Map,this._onStylesheetAdded=this._onStylesheetAdded.bind(this)}meta={supportedModes:["snapshot","timespan","navigation"]};_onStylesheetAdded(t){if(!this._session)throw new Error("Session not initialized");let r=t.header.styleSheetId,n=this._session.sendCommand("CSS.getStyleSheetText",{styleSheetId:r}).then(i=>({header:t.header,content:i.text})).catch(i=>(N.warn("Stylesheets",`Error fetching content of stylesheet with URL "${t.header.sourceURL}"`),bt.captureException(i,{tags:{gatherer:"Stylesheets"},extra:{url:t.header.sourceURL},level:"error"}),null));this._sheetPromises.set(r,n)}async getArtifact(t){let r=t.driver.executionContext,n=t.driver.defaultSession;this._session=n,n.on("CSS.styleSheetAdded",this._onStylesheetAdded),await n.sendCommand("DOM.enable"),await n.sendCommand("CSS.enabl\ -e"),await r.evaluateAsync("getComputedStyle(document.body)"),n.off("CSS.styleSheetAdded",this._onStylesheetAdded);let i=await Promise.all(this._sheetPromises.values());await n.sendCommand("CSS.disable"),await n.sendCommand("DOM.disable");let a=new Map;for(let o of i)o&&o.header.length!==0&&a.set(o.content,o);return Array.from(a.values())}},Loe=DD});var k5={};x(k5,{default:()=>Poe});var ED,Poe,_5=g(()=>{"use strict";d();Ba();Ke();ED=class extends X{static{s(this,"TraceCompat")}meta={supportedModes:["timespan","navigation"],dependencies:{Trace:cn.symbol}};async getArtifact(t){return{defaultPass:t.dependencies.Trace}}},Poe=ED});var TD,pr,Ei=g(()=>{"use strict";d();De();Bt();nD();TD=class{static{s(this,"ProcessedNavigation")}static isProcessedTrace(t){return"timeOriginEvt"in t}static async compute_(t,r){if(this.isProcessedTrace(t))return fc.processNavigation(t);let n=await xe.request(t,r);return fc.processNavigation(n)}},pr=G(TD,null)});var Ooe,R5,Boe,xD,Os,S1=g(()=>{"use strict";d();Bt();De();zt();Ooe=new Set(["keydown","keypress","keyup"]),R5=new Set(["mousedown","mouseup","pointerdown","pointerup","click"]),Boe={keyboard:Ooe,tapOrClick:R5,drag:R5},xD=class e{static{s(this,"Responsiveness")}static getHighPercentileResponsiveness(t){let r=t.frameTreeEvents.filter(i=>i.name==="Responsiveness.Renderer.UserInteraction").sort((i,a)=>a.args.data.maxDuration-i.args.data.maxDuration);if(r.length===0)return null;let n=Math.min(9,Math.floor(r.length/50));return r[n]}static findInteractionEvent(t,{traceEvents:r}){let n=r.filter(l=>l.name==="EventTiming"&&l.ph!=="e");if(n.length&&n.every(l=>!l.args.data?.frame))throw new z(z.errors.UNSUPPORTED_OLD_CHROME,{featureName:"detailed EventTiming trace events"});let{maxDuration:i,interactionType:a}=t.args.data,o,u=Number.POSITIVE_INFINITY;for(let l of n){if(l.args.data.frame!==t.args.frame)continue;let{type:c,duration:p}=l.args.data,m=Boe[a];if(!m)throw new Error(`unexpected responsive\ -ness interactionType '${a}'`);if(!m.has(c))continue;let f=Math.abs(p-i);f<u&&(o=l,u=f)}if(!o)throw new Error(`no interaction event found for responsiveness type '${a}'`);if(u>5)throw new Error(`no interaction event found within 5ms of responsiveness maxDuration (max: ${i}, closest ${o.args.data.duration})`);return o}static async compute_(t,r){let{settings:n,trace:i}=t;if(n.throttlingMethod==="simulate")throw new Error("Responsiveness currently unsupported by simulated throttling");let a=await xe.request(i,r),o=e.getHighPercentileResponsiveness(a);if(!o)return null;let u=e.findInteractionEvent(o,i);return JSON.parse(JSON.stringify(u))}},Os=G(xD,["trace","settings"])});var I5={};x(I5,{default:()=>CD});function joe(){let e=this.nodeType===document.ELEMENT_NODE?this:this.parentElement,t;return e&&(t={node:getNodeDetails(e)}),t}var Uoe,SD,CD,FD=g(()=>{"use strict";d();Ke();Dw();Rr();Kr();Ba();Bt();Ei();zt();S1();Ps();f1();dD();vo();Uoe=15;s(joe,"getNodeDetailsData");SD=class e extends X{static{s(this,"TraceElements")}meta={supportedModes:["timespan","navigation"],dependencies:{Trace:cn.symbol,RootCauses:cD.symbol}};animationIdToName=new Map;constructor(){super(),this._onAnimationStarted=this._onAnimationStarted.bind(this)}_onAnimationStarted({animation:{id:t,name:r}}){r&&this.animationIdToName.set(t,r)}static getBiggestImpactNodeForShiftEvent(t,r,n){try{let i,a=Number.NEGATIVE_INFINITY;for(let o of t){let u=r.get(o.node_id);u!==void 0&&u>a&&(i=o.node_id,a=u)}return i}catch(i){let a=typeof t,o=t?.constructor?.name,u,l;try{u=JSON.parse(JSON.stringify(t)),l=JSON.parse(JSON.stringify(n))}catch{}bt.captureException(i,{extra:{impactedNodes:u,event:l,impactedNodesType:a, -impactedNodesClassName:o}});return}}static async getTopLayoutShifts(t,r,n,i){let{impactByNodeId:a}=await Un.request(t,i),u=(r.LayoutShifts.clusters??[]).flatMap(l=>l.events);return u.sort((l,c)=>c.args.data.weighted_score_delta-l.args.data.weighted_score_delta).slice(0,Uoe).flatMap(l=>{let c=[],p=l.args.data.impacted_nodes||[],m=this.getBiggestImpactNodeForShiftEvent(p,a,l);m!==void 0&&c.push(m);let f=u.indexOf(l),h=n.layoutShifts[f];if(h)for(let y of h.unsizedMedia)c.push(y.node.backendNodeId);return c.map(y=>({nodeId:y}))})}static async getResponsivenessElement(t,r){let{settings:n}=r;try{let i=await Os.request({trace:t,settings:n},r);return i?{nodeId:i.args.data.nodeId}:void 0}catch{return}}async getAnimatedElements(t){let r=new Map;for(let a of t){if(a.name!=="Animation"||!a.id2||!a.id2.local)continue;let o=a.id2.local,u=r.get(o)||{begin:void 0,status:void 0};a.ph==="b"?u.begin=a:a.ph==="n"&&a.args.data&&a.args.data.compositeFailed!==void 0&&(u.status=a),r.set(o,u)}let n=new Map;for(let{ -begin:a,status:o}of r.values()){let u=a?.args?.data?.nodeId,l=a?.args?.data?.id,c=o?.args?.data?.compositeFailed,p=o?.args?.data?.unsupportedProperties;if(!u||!l)continue;let m=n.get(u)||new Set;m.add({animationId:l,failureReasonsMask:c,unsupportedProperties:p}),n.set(u,m)}let i=[];for(let[a,o]of n){let u=[];for(let{animationId:l,failureReasonsMask:c,unsupportedProperties:p}of o){let m=this.animationIdToName.get(l);u.push({name:m,failureReasonsMask:c,unsupportedProperties:p})}i.push({nodeId:a,animations:u})}return i}static async getLcpElement(t,r){let n;try{n=await pr.request(t,r)}catch(a){if(r.gatherMode==="timespan"&&a.code===z.errors.NO_FCP.code)return;throw a}let i=n.largestContentfulPaintEvt?.args?.data;if(!(i?.nodeId===void 0||!i.type))return{nodeId:i.nodeId,type:i.type}}async startInstrumentation(t){await t.driver.defaultSession.sendCommand("Animation.enable"),t.driver.defaultSession.on("Animation.animationStarted",this._onAnimationStarted)}async stopInstrumentation(t){t.driver. -defaultSession.off("Animation.animationStarted",this._onAnimationStarted),await t.driver.defaultSession.sendCommand("Animation.disable")}async getNodeDetails(t,r){try{let n=await YP(t,r);if(!n)return null;let i=ua.serializeDeps([qe.getNodeDetails,joe]);return await t.sendCommand("Runtime.callFunctionOn",{objectId:n,functionDeclaration:`function () { - ${i} +style#wpr-usedcss"),n=document.lastChild.nodeType===Node.COMMENT_NODE&&document.lastChild.textContent.includes("WP Rocket");return!!(o||t||n)&&{version:UNKNOWN_VERSION}}},NitroPack:{id:"nitropack",icon:"nitropack",url:"https://nitropack.io/",npm:null,test:async function(e){return!!document.querySelector('meta[name="generator"][content="NitroPack"]')&&{version:UNKNOWN_VERSION}}},Remix:{id:"remix",icon:"remix",url:"https://remix.run/",npm:"remix",test:function(e){return!!e.__remixContext&&{version:UNKNOWN_VERSION}}}};`;s(pue,"detectLibraries");ex=class e extends Q{static{s(this,"Stacks")}constructor(){super(),this.meta={supportedModes:["snapshot","navigation"]}}static async collectStacks(t){let n={msg:"Collect stacks",id:"lh:gather:collectStacks"};M.time(n);let a=(await t.evaluate(pue,{args:[],deps:[mue]})).map(o=>({detector:"js",id:o.id,name:o.name,version:typeof o.version=="number"?String(o.version):o.version||void 0,npm:o.npm||void 0}));return M.timeEnd(n),a}async getArtifact(t){try{return await e. +collectStacks(t.driver.executionContext)}catch{return[]}}},fue=ex});var s4={};T(s4,{default:()=>hue});var tx,hue,c4=g(()=>{"use strict";d();Oe();Ke();nr();tx=class extends Q{static{s(this,"Stylesheets")}constructor(){super(),this._session=void 0,this._sheetPromises=new Map,this._onStylesheetAdded=this._onStylesheetAdded.bind(this)}meta={supportedModes:["snapshot","timespan","navigation"]};_onStylesheetAdded(t){if(!this._session)throw new Error("Session not initialized");let n=t.header.styleSheetId,r=this._session.sendCommand("CSS.getStyleSheetText",{styleSheetId:n}).then(a=>({header:t.header,content:a.text})).catch(a=>(M.warn("Stylesheets",`Error fetching content of stylesheet with URL "${t.header.sourceURL}"`),Dt.captureException(a,{tags:{gatherer:"Stylesheets"},extra:{url:t.header.sourceURL},level:"error"}),null));this._sheetPromises.set(n,r)}async getArtifact(t){let n=t.driver.executionContext,r=t.driver.defaultSession;this._session=r,r.on("CSS.styleSheetAdded",this._onStylesheetAdded),await r.sendCommand("DOM.enable"),await r.sendCommand("CSS.enabl\ +e"),await n.evaluateAsync("getComputedStyle(document.body)"),r.off("CSS.styleSheetAdded",this._onStylesheetAdded);let a=await Promise.all(this._sheetPromises.values());await r.sendCommand("CSS.disable"),await r.sendCommand("DOM.disable");let o=new Map;for(let i of a)i&&i.header.length!==0&&o.set(i.content,i);return Array.from(o.values())}},hue=tx});var u4={};T(u4,{default:()=>gue});var nx,gue,l4=g(()=>{"use strict";d();Xo();Ke();nx=class extends Q{static{s(this,"TraceCompat")}meta={supportedModes:["timespan","navigation"],dependencies:{Trace:yr.symbol}};async getArtifact(t){return{defaultPass:t.dependencies.Trace}}},gue=nx});var rx,bn,Ia=g(()=>{"use strict";d();xe();Ut();PD();rx=class{static{s(this,"ProcessedNavigation")}static isProcessedTrace(t){return"timeOriginEvt"in t}static async compute_(t,n){if(this.isProcessedTrace(t))return yl.processNavigation(t);let r=await ke.request(t,n);return yl.processNavigation(r)}},bn=G(rx,null)});var yue,d4,vue,ax,Bs,I1=g(()=>{"use strict";d();Ut();xe();Wt();yue=new Set(["keydown","keypress","keyup"]),d4=new Set(["mousedown","mouseup","pointerdown","pointerup","click"]),vue={keyboard:yue,tapOrClick:d4,drag:d4},ax=class e{static{s(this,"Responsiveness")}static getHighPercentileResponsiveness(t){let n=t.frameTreeEvents.filter(a=>a.name==="Responsiveness.Renderer.UserInteraction").sort((a,o)=>o.args.data.maxDuration-a.args.data.maxDuration);if(n.length===0)return null;let r=Math.min(9,Math.floor(n.length/50));return n[r]}static findInteractionEvent(t,{traceEvents:n}){let r=n.filter(u=>u.name==="EventTiming"&&u.ph!=="e");if(r.length&&r.every(u=>!u.args.data?.frame))throw new q(q.errors.UNSUPPORTED_OLD_CHROME,{featureName:"detailed EventTiming trace events"});let{maxDuration:a,interactionType:o}=t.args.data,i,c=Number.POSITIVE_INFINITY;for(let u of r){if(u.args.data.frame!==t.args.frame)continue;let{type:l,duration:m}=u.args.data,p=vue[o];if(!p)throw new Error(`unexpected responsive\ +ness interactionType '${o}'`);if(!p.has(l))continue;let f=Math.abs(m-a);f<c&&(i=u,c=f)}if(!i)throw new Error(`no interaction event found for responsiveness type '${o}'`);if(c>5)throw new Error(`no interaction event found within 5ms of responsiveness maxDuration (max: ${a}, closest ${i.args.data.duration})`);return i}static async compute_(t,n){let{settings:r,trace:a}=t;if(r.throttlingMethod==="simulate")throw new Error("Responsiveness currently unsupported by simulated throttling");let o=await ke.request(a,n),i=e.getHighPercentileResponsiveness(o);if(!i)return null;let c=e.findInteractionEvent(i,a);return JSON.parse(JSON.stringify(c))}},Bs=G(ax,["trace","settings"])});var m4={};T(m4,{default:()=>ix});function wue(){let e=this.nodeType===document.ELEMENT_NODE?this:this.parentElement,t;return e&&(t={node:getNodeDetails(e)}),t}var bue,ox,ix,sx=g(()=>{"use strict";d();Ke();tD();On();nr();Xo();Ut();Ia();Wt();I1();Ps();b1();GD();Ei();bue=15;s(wue,"getNodeDetailsData");ox=class e extends Q{static{s(this,"TraceElements")}meta={supportedModes:["timespan","navigation"],dependencies:{Trace:yr.symbol,RootCauses:WD.symbol}};animationIdToName=new Map;constructor(){super(),this._onAnimationStarted=this._onAnimationStarted.bind(this)}_onAnimationStarted({animation:{id:t,name:n}}){n&&this.animationIdToName.set(t,n)}static getBiggestImpactNodeForShiftEvent(t,n,r){try{let a,o=Number.NEGATIVE_INFINITY;for(let i of t){let c=n.get(i.node_id);c!==void 0&&c>o&&(a=i.node_id,o=c)}return a}catch(a){let o=typeof t,i=t?.constructor?.name,c,u;try{c=JSON.parse(JSON.stringify(t)),u=JSON.parse(JSON.stringify(r))}catch{}Dt.captureException(a,{extra:{impactedNodes:c,event:u,impactedNodesType:o, +impactedNodesClassName:i}});return}}static async getTopLayoutShifts(t,n,r,a){let{impactByNodeId:o}=await $r.request(t,a),c=(n.LayoutShifts.clusters??[]).flatMap(u=>u.events);return c.sort((u,l)=>l.args.data.weighted_score_delta-u.args.data.weighted_score_delta).slice(0,bue).flatMap(u=>{let l=[],m=u.args.data.impacted_nodes||[],p=this.getBiggestImpactNodeForShiftEvent(m,o,u);p!==void 0&&l.push(p);let f=c.indexOf(u),h=r.layoutShifts[f];if(h)for(let y of h.unsizedMedia)l.push(y.node.backendNodeId);return l.map(y=>({nodeId:y}))})}static async getResponsivenessElement(t,n){let{settings:r}=n;try{let a=await Bs.request({trace:t,settings:r},n);return a?{nodeId:a.args.data.nodeId}:void 0}catch{return}}async getAnimatedElements(t){let n=new Map;for(let o of t){if(o.name!=="Animation"||!o.id2||!o.id2.local)continue;let i=o.id2.local,c=n.get(i)||{begin:void 0,status:void 0};o.ph==="b"?c.begin=o:o.ph==="n"&&o.args.data&&o.args.data.compositeFailed!==void 0&&(c.status=o),n.set(i,c)}let r=new Map;for(let{ +begin:o,status:i}of n.values()){let c=o?.args?.data?.nodeId,u=o?.args?.data?.id,l=i?.args?.data?.compositeFailed,m=i?.args?.data?.unsupportedProperties;if(!c||!u)continue;let p=r.get(c)||new Set;p.add({animationId:u,failureReasonsMask:l,unsupportedProperties:m}),r.set(c,p)}let a=[];for(let[o,i]of r){let c=[];for(let{animationId:u,failureReasonsMask:l,unsupportedProperties:m}of i){let p=this.animationIdToName.get(u);c.push({name:p,failureReasonsMask:l,unsupportedProperties:m})}a.push({nodeId:o,animations:c})}return a}static async getLcpElement(t,n){let r;try{r=await bn.request(t,n)}catch(o){if(n.gatherMode==="timespan"&&o.code===q.errors.NO_FCP.code)return;throw o}let a=r.largestContentfulPaintEvt?.args?.data;if(!(a?.nodeId===void 0||!a.type))return{nodeId:a.nodeId,type:a.type}}async startInstrumentation(t){await t.driver.defaultSession.sendCommand("Animation.enable"),t.driver.defaultSession.on("Animation.animationStarted",this._onAnimationStarted)}async stopInstrumentation(t){t.driver. +defaultSession.off("Animation.animationStarted",this._onAnimationStarted),await t.driver.defaultSession.sendCommand("Animation.disable")}async getNodeDetails(t,n){try{let r=await RL(t,n);if(!r)return null;let a=wo.serializeDeps([je.getNodeDetails,wue]);return await t.sendCommand("Runtime.callFunctionOn",{objectId:r,functionDeclaration:`function () { + ${a} return getNodeDetailsData.call(this); - }`,returnByValue:!0,awaitPromise:!0})}catch(n){bt.captureException(n,{tags:{gatherer:"TraceElements"},level:"error"})}return null}async getArtifact(t){let r=t.driver.defaultSession,n=t.dependencies.Trace,i=await Jr.request({trace:n},t),a=t.dependencies.RootCauses,o=await xe.request(n,t),{mainThreadEvents:u}=o,l=await e.getLcpElement(n,t),c=await e.getTopLayoutShifts(n,i.data,a,t),p=await this.getAnimatedElements(u),m=await e.getResponsivenessElement(n,t),f=new Map([["largest-contentful-paint",l?[l]:[]],["layout-shift",c],["animation",p],["responsiveness",m?[m]:[]]]),h=new Map,y=[];for(let[b,w]of f)for(let E=0;E<w.length;E++){let T=w[E].nodeId,S=h.get(T);S===void 0&&(S=await this.getNodeDetails(r,T),h.set(T,S)),S?.result?.value&&y.push({traceEventType:b,...S.result.value,animations:w[E].animations,nodeId:T,type:w[E].type})}return y}},CD=SD});var A5={};x(A5,{default:()=>zoe});function qoe(){return{innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight,devicePixelRatio:window.devicePixelRatio}}var kD,zoe,N5=g(()=>{"use strict";d();Ke();s(qoe,"getViewportDimensions");kD=class extends X{static{s(this,"ViewportDimensions")}meta={supportedModes:["snapshot","timespan","navigation"]};async getArtifact(t){let n=await t.driver.executionContext.evaluate(qoe,{args:[],useIsolation:!0});if(!Object.values(n).every(Number.isFinite)){let a=JSON.stringify(n);throw new Error(`ViewportDimensions results were not numeric: ${a}`)}return n}},zoe=kD});var M5,Hoe,_D,P,ne=g(()=>{"use strict";d();V();R();M5={failingElementsHeader:"Failing Elements"},Hoe=D("core/audits/accessibility/axe-audit.js",M5),_D=class extends v{static{s(this,"AxeAudit")}static audit(t){if((t.Accessibility.notApplicable||[]).find(b=>b.id===this.meta.id))return{score:null,notApplicable:!0};let i=t.Accessibility.incomplete||[],a=i.find(b=>b.id===this.meta.id);if(a?.error)return{score:null,errorMessage:`axe-core Error: ${a.error.message||"Unknown error"}`};let o=this.meta.scoreDisplayMode===v.SCORING_MODES.INFORMATIVE,u=t.Accessibility.violations||[],c=(o?u.concat(i):u).find(b=>b.id===this.meta.id),p=c?.impact,m=c?.tags;if(o&&!c)return{score:null,notApplicable:!0};let f=[];c?.nodes&&(f=c.nodes.map(b=>({node:{...v.makeNodeItem(b.node),explanation:b.failureSummary},subItems:b.relatedNodes.length?{type:"subitems",items:b.relatedNodes.map(w=>({relatedNode:v.makeNodeItem(w)}))}:void 0})));let h=[{key:"node",valueType:"node",subItemsHeading:{key:"relatedNode",valueType:"n\ -ode"},label:Hoe(M5.failingElementsHeader)}],y;return(p||m)&&(y={type:"debugdata",impact:p,tags:m}),{score:+(c===void 0),details:{...v.makeTableDetails(h,f),debugData:y}}}},P=_D});var L5={};x(L5,{UIStrings:()=>gc,default:()=>Woe});var gc,RD,ID,Woe,P5=g(()=>{"use strict";d();ne();R();gc={title:"`[accesskey]` values are unique",failureTitle:"`[accesskey]` values are not unique",description:"Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more about access keys](https://dequeuniversity.com/rules/axe/4.10/accesskeys)."},RD=D("core/audits/accessibility/accesskeys.js",gc),ID=class extends P{static{s(this,"Accesskeys")}static get meta(){return{id:"accesskeys",title:RD(gc.title),failureTitle:RD(gc.failureTitle),description:RD(gc.description),requiredArtifacts:["Accessibility"]}}},Woe=ID});var O5={};x(O5,{UIStrings:()=>yc,default:()=>Goe});var yc,AD,ND,Goe,B5=g(()=>{"use strict";d();ne();R();yc={title:"`[aria-*]` attributes match their roles",failureTitle:"`[aria-*]` attributes do not match their roles",description:"Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn how to match ARIA attributes to their roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr)."},AD=D("core/audits/accessibility/aria-allowed-attr.js",yc),ND=class extends P{static{s(this,"ARIAAllowedAttr")}static get meta(){return{id:"aria-allowed-attr",title:AD(yc.title),failureTitle:AD(yc.failureTitle),description:AD(yc.description),requiredArtifacts:["Accessibility"]}}},Goe=ND});var U5={};x(U5,{UIStrings:()=>vc,default:()=>Voe});var vc,MD,LD,Voe,j5=g(()=>{"use strict";d();ne();R();vc={title:"Uses ARIA roles only on compatible elements",failureTitle:"Uses ARIA roles on incompatible elements",description:"Many HTML elements can only be assigned certain ARIA roles. Using ARIA roles where they are not allowed can interfere with the accessibility of the web page. [Learn more about ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-role)."},MD=D("core/audits/accessibility/aria-allowed-role.js",vc),LD=class extends P{static{s(this,"ARIAAllowedRole")}static get meta(){return{id:"aria-allowed-role",title:MD(vc.title),failureTitle:MD(vc.failureTitle),description:MD(vc.description),requiredArtifacts:["Accessibility"]}}},Voe=LD});var q5={};x(q5,{UIStrings:()=>bc,default:()=>$oe});var bc,PD,OD,$oe,z5=g(()=>{"use strict";d();ne();R();bc={title:"`button`, `link`, and `menuitem` elements have accessible names",failureTitle:"`button`, `link`, and `menuitem` elements do not have accessible names.",description:"When an element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to make command elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-command-name)."},PD=D("core/audits/accessibility/aria-command-name.js",bc),OD=class extends P{static{s(this,"AriaCommandName")}static get meta(){return{id:"aria-command-name",title:PD(bc.title),failureTitle:PD(bc.failureTitle),description:PD(bc.description),requiredArtifacts:["Accessibility"]}}},$oe=OD});var H5={};x(H5,{UIStrings:()=>wc,default:()=>Yoe});var wc,BD,UD,Yoe,W5=g(()=>{"use strict";d();ne();R();wc={title:"ARIA attributes are used as specified for the element's role",failureTitle:"ARIA attributes are not used as specified for the element's role",description:"Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr)."},BD=D("core/audits/accessibility/aria-conditional-attr.js",wc),UD=class extends P{static{s(this,"AriaConditionalAttr")}static get meta(){return{id:"aria-conditional-attr",title:BD(wc.title),failureTitle:BD(wc.failureTitle),description:BD(wc.description),requiredArtifacts:["Accessibility"]}}},Yoe=UD});var G5={};x(G5,{UIStrings:()=>Dc,default:()=>Koe});var Dc,jD,qD,Koe,V5=g(()=>{"use strict";d();ne();R();Dc={title:"Deprecated ARIA roles were not used",failureTitle:"Deprecated ARIA roles were used",description:"Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role)."},jD=D("core/audits/accessibility/aria-deprecated-role.js",Dc),qD=class extends P{static{s(this,"AriaDeprecatedRole")}static get meta(){return{id:"aria-deprecated-role",title:jD(Dc.title),failureTitle:jD(Dc.failureTitle),description:jD(Dc.description),requiredArtifacts:["Accessibility"]}}},Koe=qD});var $5={};x($5,{UIStrings:()=>Ec,default:()=>Joe});var Ec,zD,HD,Joe,Y5=g(()=>{"use strict";d();ne();R();Ec={title:'Elements with `role="dialog"` or `role="alertdialog"` have accessible names.',failureTitle:'Elements with `role="dialog"` or `role="alertdialog"` do not have accessible names.',description:"ARIA dialog elements without accessible names may prevent screen readers users from discerning the purpose of these elements. [Learn how to make ARIA dialog elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-dialog-name)."},zD=D("core/audits/accessibility/aria-dialog-name.js",Ec),HD=class extends P{static{s(this,"AriaDialogName")}static get meta(){return{id:"aria-dialog-name",title:zD(Ec.title),failureTitle:zD(Ec.failureTitle),description:zD(Ec.description),requiredArtifacts:["Accessibility"]}}},Joe=HD});var K5={};x(K5,{UIStrings:()=>Tc,default:()=>Zoe});var Tc,WD,GD,Zoe,J5=g(()=>{"use strict";d();ne();R();Tc={title:'`[aria-hidden="true"]` is not present on the document `<body>`',failureTitle:'`[aria-hidden="true"]` is present on the document `<body>`',description:'Assistive technologies, like screen readers, work inconsistently when `aria-hidden="true"` is set on the document `<body>`. [Learn how `aria-hidden` affects the document body](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body).'},WD=D("core/audits/accessibility/aria-hidden-body.js",Tc),GD=class extends P{static{s(this,"AriaHiddenBody")}static get meta(){return{id:"aria-hidden-body",title:WD(Tc.title),failureTitle:WD(Tc.failureTitle),description:WD(Tc.description),requiredArtifacts:["Accessibility"]}}},Zoe=GD});var Z5={};x(Z5,{UIStrings:()=>xc,default:()=>Xoe});var xc,VD,$D,Xoe,X5=g(()=>{"use strict";d();ne();R();xc={title:'`[aria-hidden="true"]` elements do not contain focusable descendents',failureTitle:'`[aria-hidden="true"]` elements contain focusable descendents',description:'Focusable descendents within an `[aria-hidden="true"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn how `aria-hidden` affects focusable elements](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus).'},VD=D("core/audits/accessibility/aria-hidden-focus.js",xc),$D=class extends P{static{s(this,"AriaHiddenFocus")}static get meta(){return{id:"aria-hidden-focus",title:VD(xc.title),failureTitle:VD(xc.failureTitle),description:VD(xc.description),requiredArtifacts:["Accessibility"]}}},Xoe=$D});var Q5={};x(Q5,{UIStrings:()=>Sc,default:()=>Qoe});var Sc,YD,KD,Qoe,eO=g(()=>{"use strict";d();ne();R();Sc={title:"ARIA input fields have accessible names",failureTitle:"ARIA input fields do not have accessible names",description:"When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about input field labels](https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name)."},YD=D("core/audits/accessibility/aria-input-field-name.js",Sc),KD=class extends P{static{s(this,"AriaInputFieldName")}static get meta(){return{id:"aria-input-field-name",title:YD(Sc.title),failureTitle:YD(Sc.failureTitle),description:YD(Sc.description),requiredArtifacts:["Accessibility"]}}},Qoe=KD});var tO={};x(tO,{UIStrings:()=>Cc,default:()=>ese});var Cc,JD,ZD,ese,rO=g(()=>{"use strict";d();ne();R();Cc={title:"ARIA `meter` elements have accessible names",failureTitle:"ARIA `meter` elements do not have accessible names.",description:"When a meter element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `meter` elements](https://dequeuniversity.com/rules/axe/4.10/aria-meter-name)."},JD=D("core/audits/accessibility/aria-meter-name.js",Cc),ZD=class extends P{static{s(this,"AriaMeterName")}static get meta(){return{id:"aria-meter-name",title:JD(Cc.title),failureTitle:JD(Cc.failureTitle),description:JD(Cc.description),requiredArtifacts:["Accessibility"]}}},ese=ZD});var nO={};x(nO,{UIStrings:()=>Fc,default:()=>tse});var Fc,XD,QD,tse,iO=g(()=>{"use strict";d();ne();R();Fc={title:"ARIA `progressbar` elements have accessible names",failureTitle:"ARIA `progressbar` elements do not have accessible names.",description:"When a `progressbar` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to label `progressbar` elements](https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name)."},XD=D("core/audits/accessibility/aria-progressbar-name.js",Fc),QD=class extends P{static{s(this,"AriaProgressbarName")}static get meta(){return{id:"aria-progressbar-name",title:XD(Fc.title),failureTitle:XD(Fc.failureTitle),description:XD(Fc.description),requiredArtifacts:["Accessibility"]}}},tse=QD});var aO={};x(aO,{UIStrings:()=>kc,default:()=>rse});var kc,eE,tE,rse,oO=g(()=>{"use strict";d();ne();R();kc={title:"Elements use only permitted ARIA attributes",failureTitle:"Elements use prohibited ARIA attributes",description:"Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr)."},eE=D("core/audits/accessibility/aria-prohibited-attr.js",kc),tE=class extends P{static{s(this,"AriaProhibitedAttr")}static get meta(){return{id:"aria-prohibited-attr",title:eE(kc.title),failureTitle:eE(kc.failureTitle),description:eE(kc.description),requiredArtifacts:["Accessibility"]}}},rse=tE});var sO={};x(sO,{UIStrings:()=>_c,default:()=>nse});var _c,rE,nE,nse,uO=g(()=>{"use strict";d();ne();R();_c={title:"`[role]`s have all required `[aria-*]` attributes",failureTitle:"`[role]`s do not have all required `[aria-*]` attributes",description:"Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more about roles and required attributes](https://dequeuniversity.com/rules/axe/4.10/aria-required-attr)."},rE=D("core/audits/accessibility/aria-required-attr.js",_c),nE=class extends P{static{s(this,"ARIARequiredAttr")}static get meta(){return{id:"aria-required-attr",title:rE(_c.title),failureTitle:rE(_c.failureTitle),description:rE(_c.description),requiredArtifacts:["Accessibility"]}}},nse=nE});var lO={};x(lO,{UIStrings:()=>Rc,default:()=>ise});var Rc,iE,aE,ise,cO=g(()=>{"use strict";d();ne();R();Rc={title:"Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children.",failureTitle:"Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children.",description:"Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more about roles and required children elements](https://dequeuniversity.com/rules/axe/4.10/aria-required-children)."},iE=D("core/audits/accessibility/aria-required-children.js",Rc),aE=class extends P{static{s(this,"AriaRequiredChildren")}static get meta(){return{id:"aria-required-children",title:iE(Rc.title),failureTitle:iE(Rc.failureTitle),description:iE(Rc.description),requiredArtifacts:["Accessibility"]}}},ise=aE});var dO={};x(dO,{UIStrings:()=>Ic,default:()=>ase});var Ic,oE,sE,ase,pO=g(()=>{"use strict";d();ne();R();Ic={title:"`[role]`s are contained by their required parent element",failureTitle:"`[role]`s are not contained by their required parent element",description:"Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more about ARIA roles and required parent element](https://dequeuniversity.com/rules/axe/4.10/aria-required-parent)."},oE=D("core/audits/accessibility/aria-required-parent.js",Ic),sE=class extends P{static{s(this,"AriaRequiredParent")}static get meta(){return{id:"aria-required-parent",title:oE(Ic.title),failureTitle:oE(Ic.failureTitle),description:oE(Ic.description),requiredArtifacts:["Accessibility"]}}},ase=sE});var mO={};x(mO,{UIStrings:()=>Ac,default:()=>ose});var Ac,uE,lE,ose,fO=g(()=>{"use strict";d();ne();R();Ac={title:"`[role]` values are valid",failureTitle:"`[role]` values are not valid",description:"ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more about valid ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-roles)."},uE=D("core/audits/accessibility/aria-roles.js",Ac),lE=class extends P{static{s(this,"AriaRoles")}static get meta(){return{id:"aria-roles",title:uE(Ac.title),failureTitle:uE(Ac.failureTitle),description:uE(Ac.description),requiredArtifacts:["Accessibility"]}}},ose=lE});var hO={};x(hO,{UIStrings:()=>Nc,default:()=>sse});var Nc,cE,dE,sse,gO=g(()=>{"use strict";d();ne();R();Nc={title:"Elements with the `role=text` attribute do not have focusable descendents.",failureTitle:"Elements with the `role=text` attribute do have focusable descendents.",description:"Adding `role=text` around a text node split by markup enables VoiceOver to treat it as one phrase, but the element's focusable descendents will not be announced. [Learn more about the `role=text` attribute](https://dequeuniversity.com/rules/axe/4.10/aria-text)."},cE=D("core/audits/accessibility/aria-text.js",Nc),dE=class extends P{static{s(this,"AriaText")}static get meta(){return{id:"aria-text",title:cE(Nc.title),failureTitle:cE(Nc.failureTitle),description:cE(Nc.description),requiredArtifacts:["Accessibility"]}}},sse=dE});var yO={};x(yO,{UIStrings:()=>Mc,default:()=>use});var Mc,pE,mE,use,vO=g(()=>{"use strict";d();ne();R();Mc={title:"ARIA toggle fields have accessible names",failureTitle:"ARIA toggle fields do not have accessible names",description:"When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about toggle fields](https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name)."},pE=D("core/audits/accessibility/aria-toggle-field-name.js",Mc),mE=class extends P{static{s(this,"AriaToggleFieldName")}static get meta(){return{id:"aria-toggle-field-name",title:pE(Mc.title),failureTitle:pE(Mc.failureTitle),description:pE(Mc.description),requiredArtifacts:["Accessibility"]}}},use=mE});var bO={};x(bO,{UIStrings:()=>Lc,default:()=>lse});var Lc,fE,hE,lse,wO=g(()=>{"use strict";d();ne();R();Lc={title:"ARIA `tooltip` elements have accessible names",failureTitle:"ARIA `tooltip` elements do not have accessible names.",description:"When a tooltip element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `tooltip` elements](https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name)."},fE=D("core/audits/accessibility/aria-tooltip-name.js",Lc),hE=class extends P{static{s(this,"AriaTooltipName")}static get meta(){return{id:"aria-tooltip-name",title:fE(Lc.title),failureTitle:fE(Lc.failureTitle),description:fE(Lc.description),requiredArtifacts:["Accessibility"]}}},lse=hE});var DO={};x(DO,{UIStrings:()=>Pc,default:()=>cse});var Pc,gE,yE,cse,EO=g(()=>{"use strict";d();ne();R();Pc={title:"ARIA `treeitem` elements have accessible names",failureTitle:"ARIA `treeitem` elements do not have accessible names.",description:"When a `treeitem` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about labeling `treeitem` elements](https://dequeuniversity.com/rules/axe/4.10/aria-treeitem-name)."},gE=D("core/audits/accessibility/aria-treeitem-name.js",Pc),yE=class extends P{static{s(this,"AriaTreeitemName")}static get meta(){return{id:"aria-treeitem-name",title:gE(Pc.title),failureTitle:gE(Pc.failureTitle),description:gE(Pc.description),requiredArtifacts:["Accessibility"]}}},cse=yE});var TO={};x(TO,{UIStrings:()=>Oc,default:()=>dse});var Oc,vE,bE,dse,xO=g(()=>{"use strict";d();ne();R();Oc={title:"`[aria-*]` attributes have valid values",failureTitle:"`[aria-*]` attributes do not have valid values",description:"Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more about valid values for ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value)."},vE=D("core/audits/accessibility/aria-valid-attr-value.js",Oc),bE=class extends P{static{s(this,"ARIAValidAttr")}static get meta(){return{id:"aria-valid-attr-value",title:vE(Oc.title),failureTitle:vE(Oc.failureTitle),description:vE(Oc.description),requiredArtifacts:["Accessibility"]}}},dse=bE});var SO={};x(SO,{UIStrings:()=>Bc,default:()=>pse});var Bc,wE,DE,pse,CO=g(()=>{"use strict";d();ne();R();Bc={title:"`[aria-*]` attributes are valid and not misspelled",failureTitle:"`[aria-*]` attributes are not valid or misspelled",description:"Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more about valid ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr)."},wE=D("core/audits/accessibility/aria-valid-attr.js",Bc),DE=class extends P{static{s(this,"ARIAValidAttr")}static get meta(){return{id:"aria-valid-attr",title:wE(Bc.title),failureTitle:wE(Bc.failureTitle),description:wE(Bc.description),requiredArtifacts:["Accessibility"]}}},pse=DE});var FO={};x(FO,{UIStrings:()=>Uc,default:()=>mse});var Uc,EE,TE,mse,kO=g(()=>{"use strict";d();ne();R();Uc={title:"Buttons have an accessible name",failureTitle:"Buttons do not have an accessible name",description:`When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. [Learn how to make buttons more accessible](https://dequeuniversity.com/rules/axe/4.10/button-name).`},EE=D("core/audits/accessibility/button-name.js",Uc),TE=class extends P{static{s(this,"ButtonName")}static get meta(){return{id:"button-name",title:EE(Uc.title),failureTitle:EE(Uc.failureTitle),description:EE(Uc.description),requiredArtifacts:["Accessibility"]}}},mse=TE});var _O={};x(_O,{UIStrings:()=>jc,default:()=>fse});var jc,xE,SE,fse,RO=g(()=>{"use strict";d();ne();R();jc={title:"The page contains a heading, skip link, or landmark region",failureTitle:"The page does not contain a heading, skip link, or landmark region",description:"Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more about bypass blocks](https://dequeuniversity.com/rules/axe/4.10/bypass)."},xE=D("core/audits/accessibility/bypass.js",jc),SE=class extends P{static{s(this,"Bypass")}static get meta(){return{id:"bypass",title:xE(jc.title),failureTitle:xE(jc.failureTitle),description:xE(jc.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},fse=SE});var IO={};x(IO,{UIStrings:()=>qc,default:()=>hse});var qc,CE,FE,hse,AO=g(()=>{"use strict";d();ne();R();qc={title:"Background and foreground colors have a sufficient contrast ratio",failureTitle:"Background and foreground colors do not have a sufficient contrast ratio.",description:"Low-contrast text is difficult or impossible for many users to read. [Learn how to provide sufficient color contrast](https://dequeuniversity.com/rules/axe/4.10/color-contrast)."},CE=D("core/audits/accessibility/color-contrast.js",qc),FE=class extends P{static{s(this,"ColorContrast")}static get meta(){return{id:"color-contrast",title:CE(qc.title),failureTitle:CE(qc.failureTitle),description:CE(qc.description),requiredArtifacts:["Accessibility"]}}},hse=FE});var NO={};x(NO,{UIStrings:()=>zc,default:()=>gse});var zc,kE,_E,gse,MO=g(()=>{"use strict";d();ne();R();zc={title:"`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.",failureTitle:"`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.",description:"When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.10/definition-list)."},kE=D("core/audits/accessibility/definition-list.js",zc),_E=class extends P{static{s(this,"DefinitionList")}static get meta(){return{id:"definition-list",title:kE(zc.title),failureTitle:kE(zc.failureTitle),description:kE(zc.description),requiredArtifacts:["Accessibility"]}}},gse=_E});var LO={};x(LO,{UIStrings:()=>Hc,default:()=>yse});var Hc,RE,IE,yse,PO=g(()=>{"use strict";d();ne();R();Hc={title:"Definition list items are wrapped in `<dl>` elements",failureTitle:"Definition list items are not wrapped in `<dl>` elements",description:"Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.10/dlitem)."},RE=D("core/audits/accessibility/dlitem.js",Hc),IE=class extends P{static{s(this,"DLItem")}static get meta(){return{id:"dlitem",title:RE(Hc.title),failureTitle:RE(Hc.failureTitle),description:RE(Hc.description),requiredArtifacts:["Accessibility"]}}},yse=IE});var OO={};x(OO,{UIStrings:()=>Wc,default:()=>vse});var Wc,AE,NE,vse,BO=g(()=>{"use strict";d();ne();R();Wc={title:"Document has a `<title>` element",failureTitle:"Document doesn't have a `<title>` element",description:"The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more about document titles](https://dequeuniversity.com/rules/axe/4.10/document-title)."},AE=D("core/audits/accessibility/document-title.js",Wc),NE=class extends P{static{s(this,"DocumentTitle")}static get meta(){return{id:"document-title",title:AE(Wc.title),failureTitle:AE(Wc.failureTitle),description:AE(Wc.description),requiredArtifacts:["Accessibility"]}}},vse=NE});var UO={};x(UO,{UIStrings:()=>Gc,default:()=>bse});var Gc,ME,LE,bse,jO=g(()=>{"use strict";d();ne();R();Gc={title:"ARIA IDs are unique",failureTitle:"ARIA IDs are not unique",description:"The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies. [Learn how to fix duplicate ARIA IDs](https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria)."},ME=D("core/audits/accessibility/duplicate-id-aria.js",Gc),LE=class extends P{static{s(this,"DuplicateIdAria")}static get meta(){return{id:"duplicate-id-aria",title:ME(Gc.title),failureTitle:ME(Gc.failureTitle),description:ME(Gc.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},bse=LE});var qO={};x(qO,{UIStrings:()=>Vc,default:()=>wse});var Vc,PE,OE,wse,zO=g(()=>{"use strict";d();ne();R();Vc={title:"All heading elements contain content.",failureTitle:"Heading elements do not contain content.",description:"A heading with no content or inaccessible text prevent screen reader users from accessing information on the page's structure. [Learn more about headings](https://dequeuniversity.com/rules/axe/4.10/empty-heading)."},PE=D("core/audits/accessibility/empty-heading.js",Vc),OE=class extends P{static{s(this,"EmptyHeading")}static get meta(){return{id:"empty-heading",title:PE(Vc.title),failureTitle:PE(Vc.failureTitle),description:PE(Vc.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},wse=OE});var HO={};x(HO,{UIStrings:()=>$c,default:()=>Dse});var $c,BE,UE,Dse,WO=g(()=>{"use strict";d();ne();R();$c={title:"No form fields have multiple labels",failureTitle:"Form fields have multiple labels",description:"Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn how to use form labels](https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels)."},BE=D("core/audits/accessibility/form-field-multiple-labels.js",$c),UE=class extends P{static{s(this,"FormFieldMultipleLabels")}static get meta(){return{id:"form-field-multiple-labels",title:BE($c.title),failureTitle:BE($c.failureTitle),description:BE($c.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},Dse=UE});var GO={};x(GO,{UIStrings:()=>Yc,default:()=>Ese});var Yc,jE,qE,Ese,VO=g(()=>{"use strict";d();ne();R();Yc={title:"`<frame>` or `<iframe>` elements have a title",failureTitle:"`<frame>` or `<iframe>` elements do not have a title",description:"Screen reader users rely on frame titles to describe the contents of frames. [Learn more about frame titles](https://dequeuniversity.com/rules/axe/4.10/frame-title)."},jE=D("core/audits/accessibility/frame-title.js",Yc),qE=class extends P{static{s(this,"FrameTitle")}static get meta(){return{id:"frame-title",title:jE(Yc.title),failureTitle:jE(Yc.failureTitle),description:jE(Yc.description),requiredArtifacts:["Accessibility"]}}},Ese=qE});var $O={};x($O,{UIStrings:()=>Kc,default:()=>Tse});var Kc,zE,HE,Tse,YO=g(()=>{"use strict";d();ne();R();Kc={title:"Heading elements appear in a sequentially-descending order",failureTitle:"Heading elements are not in a sequentially-descending order",description:"Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. [Learn more about heading order](https://dequeuniversity.com/rules/axe/4.10/heading-order)."},zE=D("core/audits/accessibility/heading-order.js",Kc),HE=class extends P{static{s(this,"HeadingOrder")}static get meta(){return{id:"heading-order",title:zE(Kc.title),failureTitle:zE(Kc.failureTitle),description:zE(Kc.description),requiredArtifacts:["Accessibility"]}}},Tse=HE});var KO={};x(KO,{UIStrings:()=>Jc,default:()=>xse});var Jc,WE,GE,xse,JO=g(()=>{"use strict";d();ne();R();Jc={title:"`<html>` element has a `[lang]` attribute",failureTitle:"`<html>` element does not have a `[lang]` attribute",description:"If a page doesn't specify a `lang` attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-has-lang)."},WE=D("core/audits/accessibility/html-has-lang.js",Jc),GE=class extends P{static{s(this,"HTMLHasLang")}static get meta(){return{id:"html-has-lang",title:WE(Jc.title),failureTitle:WE(Jc.failureTitle),description:WE(Jc.description),requiredArtifacts:["Accessibility"]}}},xse=GE});var ZO={};x(ZO,{UIStrings:()=>Zc,default:()=>Sse});var Zc,VE,$E,Sse,XO=g(()=>{"use strict";d();ne();R();Zc={title:"`<html>` element has a valid value for its `[lang]` attribute",failureTitle:"`<html>` element does not have a valid value for its `[lang]` attribute.",description:"Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-lang-valid)."},VE=D("core/audits/accessibility/html-lang-valid.js",Zc),$E=class extends P{static{s(this,"HTMLLangValid")}static get meta(){return{id:"html-lang-valid",title:VE(Zc.title),failureTitle:VE(Zc.failureTitle),description:VE(Zc.description),requiredArtifacts:["Accessibility"]}}},Sse=$E});var QO={};x(QO,{UIStrings:()=>Xc,default:()=>Cse});var Xc,YE,KE,Cse,e6=g(()=>{"use strict";d();ne();R();Xc={title:"`<html>` element has an `[xml:lang]` attribute with the same base language as the `[lang]` attribute.",failureTitle:"`<html>` element does not have an `[xml:lang]` attribute with the same base language as the `[lang]` attribute.",description:"If the webpage does not specify a consistent language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch)."},YE=D("core/audits/accessibility/html-xml-lang-mismatch.js",Xc),KE=class extends P{static{s(this,"HTMLXMLLangMismatch")}static get meta(){return{id:"html-xml-lang-mismatch",title:YE(Xc.title),failureTitle:YE(Xc.failureTitle),description:YE(Xc.description),requiredArtifacts:["Accessibility"]}}},Cse=KE});var t6={};x(t6,{UIStrings:()=>Qc,default:()=>Fse});var Qc,JE,ZE,Fse,r6=g(()=>{"use strict";d();ne();R();Qc={title:"Identical links have the same purpose.",failureTitle:"Identical links do not have the same purpose.",description:"Links with the same destination should have the same description, to help users understand the link's purpose and decide whether to follow it. [Learn more about identical links](https://dequeuniversity.com/rules/axe/4.10/identical-links-same-purpose)."},JE=D("core/audits/accessibility/identical-links-same-purpose.js",Qc),ZE=class extends P{static{s(this,"IdenticalLinksSamePurpose")}static get meta(){return{id:"identical-links-same-purpose",title:JE(Qc.title),failureTitle:JE(Qc.failureTitle),description:JE(Qc.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},Fse=ZE});var n6={};x(n6,{UIStrings:()=>ed,default:()=>kse});var ed,XE,QE,kse,i6=g(()=>{"use strict";d();ne();R();ed={title:"Image elements have `[alt]` attributes",failureTitle:"Image elements do not have `[alt]` attributes",description:"Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.10/image-alt)."},XE=D("core/audits/accessibility/image-alt.js",ed),QE=class extends P{static{s(this,"ImageAlt")}static get meta(){return{id:"image-alt",title:XE(ed.title),failureTitle:XE(ed.failureTitle),description:XE(ed.description),requiredArtifacts:["Accessibility"]}}},kse=QE});var a6={};x(a6,{UIStrings:()=>td,default:()=>_se});var td,eT,tT,_se,o6=g(()=>{"use strict";d();ne();R();td={title:"Image elements do not have `[alt]` attributes that are redundant text.",failureTitle:"Image elements have `[alt]` attributes that are redundant text.",description:"Informative elements should aim for short, descriptive alternative text. Alternative text that is exactly the same as the text adjacent to the link or image is potentially confusing for screen reader users, because the text will be read twice. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.10/image-redundant-alt)."},eT=D("core/audits/accessibility/image-redundant-alt.js",td),tT=class extends P{static{s(this,"ImageRedundantAlt")}static get meta(){return{id:"image-redundant-alt",title:eT(td.title),failureTitle:eT(td.failureTitle),description:eT(td.description),requiredArtifacts:["Accessibility"]}}},_se=tT});var s6={};x(s6,{UIStrings:()=>rd,default:()=>Rse});var rd,rT,nT,Rse,u6=g(()=>{"use strict";d();ne();R();rd={title:"Input buttons have discernible text.",failureTitle:"Input buttons do not have discernible text.",description:"Adding discernable and accessible text to input buttons may help screen reader users understand the purpose of the input button. [Learn more about input buttons](https://dequeuniversity.com/rules/axe/4.10/input-button-name)."},rT=D("core/audits/accessibility/input-button-name.js",rd),nT=class extends P{static{s(this,"InputButtonName")}static get meta(){return{id:"input-button-name",title:rT(rd.title),failureTitle:rT(rd.failureTitle),description:rT(rd.description),requiredArtifacts:["Accessibility"]}}},Rse=nT});var l6={};x(l6,{UIStrings:()=>nd,default:()=>Ise});var nd,iT,aT,Ise,c6=g(()=>{"use strict";d();ne();R();nd={title:'`<input type="image">` elements have `[alt]` text',failureTitle:'`<input type="image">` elements do not have `[alt]` text',description:"When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn about input image alt text](https://dequeuniversity.com/rules/axe/4.10/input-image-alt)."},iT=D("core/audits/accessibility/input-image-alt.js",nd),aT=class extends P{static{s(this,"InputImageAlt")}static get meta(){return{id:"input-image-alt",title:iT(nd.title),failureTitle:iT(nd.failureTitle),description:iT(nd.description),requiredArtifacts:["Accessibility"]}}},Ise=aT});var d6={};x(d6,{UIStrings:()=>id,default:()=>Ase});var id,oT,sT,Ase,p6=g(()=>{"use strict";d();ne();R();id={title:"Elements with visible text labels have matching accessible names.",failureTitle:"Elements with visible text labels do not have matching accessible names.",description:"Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. [Learn more about accessible names](https://dequeuniversity.com/rules/axe/4.10/label-content-name-mismatch)."},oT=D("core/audits/accessibility/label-content-name-mismatch.js",id),sT=class extends P{static{s(this,"LabelContentNameMismatch")}static get meta(){return{id:"label-content-name-mismatch",title:oT(id.title),failureTitle:oT(id.failureTitle),description:oT(id.description),requiredArtifacts:["Accessibility"]}}},Ase=sT});var m6={};x(m6,{UIStrings:()=>ad,default:()=>Nse});var ad,uT,lT,Nse,f6=g(()=>{"use strict";d();ne();R();ad={title:"Form elements have associated labels",failureTitle:"Form elements do not have associated labels",description:"Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more about form element labels](https://dequeuniversity.com/rules/axe/4.10/label)."},uT=D("core/audits/accessibility/label.js",ad),lT=class extends P{static{s(this,"Label")}static get meta(){return{id:"label",title:uT(ad.title),failureTitle:uT(ad.failureTitle),description:uT(ad.description),requiredArtifacts:["Accessibility"]}}},Nse=lT});var h6={};x(h6,{UIStrings:()=>od,default:()=>Mse});var od,cT,dT,Mse,g6=g(()=>{"use strict";d();ne();R();od={title:"Document has a main landmark.",failureTitle:"Document does not have a main landmark.",description:"One main landmark helps screen reader users navigate a web page. [Learn more about landmarks](https://dequeuniversity.com/rules/axe/4.10/landmark-one-main)."},cT=D("core/audits/accessibility/landmark-one-main.js",od),dT=class extends P{static{s(this,"LandmarkOneMain")}static get meta(){return{id:"landmark-one-main",title:cT(od.title),failureTitle:cT(od.failureTitle),description:cT(od.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},Mse=dT});var y6={};x(y6,{UIStrings:()=>sd,default:()=>Lse});var sd,pT,mT,Lse,v6=g(()=>{"use strict";d();ne();R();sd={title:"Links are distinguishable without relying on color.",failureTitle:"Links rely on color to be distinguishable.",description:"Low-contrast text is difficult or impossible for many users to read. Link text that is discernible improves the experience for users with low vision. [Learn how to make links distinguishable](https://dequeuniversity.com/rules/axe/4.10/link-in-text-block)."},pT=D("core/audits/accessibility/link-in-text-block.js",sd),mT=class extends P{static{s(this,"LinkInTextBlock")}static get meta(){return{id:"link-in-text-block",title:pT(sd.title),failureTitle:pT(sd.failureTitle),description:pT(sd.description),requiredArtifacts:["Accessibility"]}}},Lse=mT});var b6={};x(b6,{UIStrings:()=>ud,default:()=>Pse});var ud,fT,hT,Pse,w6=g(()=>{"use strict";d();ne();R();ud={title:"Links have a discernible name",failureTitle:"Links do not have a discernible name",description:"Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn how to make links accessible](https://dequeuniversity.com/rules/axe/4.10/link-name)."},fT=D("core/audits/accessibility/link-name.js",ud),hT=class extends P{static{s(this,"LinkName")}static get meta(){return{id:"link-name",title:fT(ud.title),failureTitle:fT(ud.failureTitle),description:fT(ud.description),requiredArtifacts:["Accessibility"]}}},Pse=hT});var D6={};x(D6,{UIStrings:()=>ld,default:()=>Ose});var ld,gT,yT,Ose,E6=g(()=>{"use strict";d();ne();R();ld={title:"Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).",failureTitle:"Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).",description:"Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.10/list)."},gT=D("core/audits/accessibility/list.js",ld),yT=class extends P{static{s(this,"List")}static get meta(){return{id:"list",title:gT(ld.title),failureTitle:gT(ld.failureTitle),description:gT(ld.description),requiredArtifacts:["Accessibility"]}}},Ose=yT});var T6={};x(T6,{UIStrings:()=>cd,default:()=>Bse});var cd,vT,bT,Bse,x6=g(()=>{"use strict";d();ne();R();cd={title:"List items (`<li>`) are contained within `<ul>`, `<ol>` or `<menu>` parent elements",failureTitle:"List items (`<li>`) are not contained within `<ul>`, `<ol>` or `<menu>` parent elements.",description:"Screen readers require list items (`<li>`) to be contained within a parent `<ul>`, `<ol>` or `<menu>` to be announced properly. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.10/listitem)."},vT=D("core/audits/accessibility/listitem.js",cd),bT=class extends P{static{s(this,"ListItem")}static get meta(){return{id:"listitem",title:vT(cd.title),failureTitle:vT(cd.failureTitle),description:vT(cd.description),requiredArtifacts:["Accessibility"]}}},Bse=bT});var wT,Ut,Zr=g(()=>{"use strict";d();V();wT=class extends v{static{s(this,"ManualAudit")}static get partialMeta(){return{scoreDisplayMode:v.SCORING_MODES.MANUAL,requiredArtifacts:[]}}static audit(){return{score:0}}},Ut=wT});var S6={};x(S6,{default:()=>Use});var DT,Use,C6=g(()=>{"use strict";d();Zr();DT=class extends Ut{static{s(this,"CustomControlsLabels")}static get meta(){return Object.assign({id:"custom-controls-labels",description:"Custom interactive controls have associated labels, provided by aria-label or aria-labelledby. [Learn more about custom controls and labels](https://developer.chrome.com/docs/lighthouse/accessibility/custom-controls-labels/).",title:"Custom controls have associated labels"},super.partialMeta)}},Use=DT});var F6={};x(F6,{default:()=>jse});var ET,jse,k6=g(()=>{"use strict";d();Zr();ET=class extends Ut{static{s(this,"CustomControlsRoles")}static get meta(){return Object.assign({id:"custom-controls-roles",description:"Custom interactive controls have appropriate ARIA roles. [Learn how to add roles to custom controls](https://developer.chrome.com/docs/lighthouse/accessibility/custom-control-roles/).",title:"Custom controls have ARIA roles"},super.partialMeta)}},jse=ET});var _6={};x(_6,{default:()=>qse});var TT,qse,R6=g(()=>{"use strict";d();Zr();TT=class extends Ut{static{s(this,"FocusTraps")}static get meta(){return Object.assign({id:"focus-traps",description:"A user can tab into and out of any control or region without accidentally trapping their focus. [Learn how to avoid focus traps](https://developer.chrome.com/docs/lighthouse/accessibility/focus-traps/).",title:"User focus is not accidentally trapped in a region"},super.partialMeta)}},qse=TT});var I6={};x(I6,{default:()=>zse});var xT,zse,A6=g(()=>{"use strict";d();Zr();xT=class extends Ut{static{s(this,"FocusableControls")}static get meta(){return Object.assign({id:"focusable-controls",description:"Custom interactive controls are keyboard focusable and display a focus indicator. [Learn how to make custom controls focusable](https://developer.chrome.com/docs/lighthouse/accessibility/focusable-controls/).",title:"Interactive controls are keyboard focusable"},super.partialMeta)}},zse=xT});var N6={};x(N6,{default:()=>Hse});var ST,Hse,M6=g(()=>{"use strict";d();Zr();ST=class extends Ut{static{s(this,"InteractiveElementAffordance")}static get meta(){return Object.assign({id:"interactive-element-affordance",description:"Interactive elements, such as links and buttons, should indicate their state and be distinguishable from non-interactive elements. [Learn how to decorate interactive elements with affordance hints](https://developer.chrome.com/docs/lighthouse/accessibility/interactive-element-affordance/).",title:"Interactive elements indicate their purpose and state"},super.partialMeta)}},Hse=ST});var L6={};x(L6,{default:()=>Wse});var CT,Wse,P6=g(()=>{"use strict";d();Zr();CT=class extends Ut{static{s(this,"LogicalTabOrder")}static get meta(){return Object.assign({id:"logical-tab-order",description:"Tabbing through the page follows the visual layout. Users cannot focus elements that are offscreen. [Learn more about logical tab ordering](https://developer.chrome.com/docs/lighthouse/accessibility/logical-tab-order/).",title:"The page has a logical tab order"},super.partialMeta)}},Wse=CT});var O6={};x(O6,{default:()=>Gse});var FT,Gse,B6=g(()=>{"use strict";d();Zr();FT=class extends Ut{static{s(this,"ManagedFocus")}static get meta(){return Object.assign({id:"managed-focus",description:"If new content, such as a dialog, is added to the page, the user's focus is directed to it. [Learn how to direct focus to new content](https://developer.chrome.com/docs/lighthouse/accessibility/managed-focus/).",title:"The user's focus is directed to new content added to the page"},super.partialMeta)}},Gse=FT});var U6={};x(U6,{default:()=>Vse});var kT,Vse,j6=g(()=>{"use strict";d();Zr();kT=class extends Ut{static{s(this,"OffscreenContentHidden")}static get meta(){return Object.assign({id:"offscreen-content-hidden",description:"Offscreen content is hidden with display: none or aria-hidden=true. [Learn how to properly hide offscreen content](https://developer.chrome.com/docs/lighthouse/accessibility/offscreen-content-hidden/).",title:"Offscreen content is hidden from assistive technology"},super.partialMeta)}},Vse=kT});var q6={};x(q6,{default:()=>$se});var _T,$se,z6=g(()=>{"use strict";d();Zr();_T=class extends Ut{static{s(this,"UseLandmarks")}static get meta(){return Object.assign({id:"use-landmarks",description:"Landmark elements (`<main>`, `<nav>`, etc.) are used to improve the keyboard navigation of the page for assistive technology. [Learn more about landmark elements](https://developer.chrome.com/docs/lighthouse/accessibility/use-landmarks/).",title:"HTML5 landmark elements are used to improve navigation"},super.partialMeta)}},$se=_T});var H6={};x(H6,{default:()=>Yse});var RT,Yse,W6=g(()=>{"use strict";d();Zr();RT=class extends Ut{static{s(this,"VisualOrderFollowsDOM")}static get meta(){return Object.assign({id:"visual-order-follows-dom",description:"DOM order matches the visual order, improving navigation for assistive technology. [Learn more about DOM and visual ordering](https://developer.chrome.com/docs/lighthouse/accessibility/visual-order-follows-dom/).",title:"Visual order on the page follows DOM order"},super.partialMeta)}},Yse=RT});var G6={};x(G6,{UIStrings:()=>dd,default:()=>Kse});var dd,IT,AT,Kse,V6=g(()=>{"use strict";d();ne();R();dd={title:'The document does not use `<meta http-equiv="refresh">`',failureTitle:'The document uses `<meta http-equiv="refresh">`',description:"Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more about the refresh meta tag](https://dequeuniversity.com/rules/axe/4.10/meta-refresh)."},IT=D("core/audits/accessibility/meta-refresh.js",dd),AT=class extends P{static{s(this,"MetaRefresh")}static get meta(){return{id:"meta-refresh",title:IT(dd.title),failureTitle:IT(dd.failureTitle),description:IT(dd.description),requiredArtifacts:["Accessibility"]}}},Kse=AT});var $6={};x($6,{UIStrings:()=>pd,default:()=>Jse});var pd,NT,MT,Jse,Y6=g(()=>{"use strict";d();ne();R();pd={title:'`[user-scalable="no"]` is not used in the `<meta name="viewport">` element and the `[maximum-scale]` attribute is not less than 5.',failureTitle:'`[user-scalable="no"]` is used in the `<meta name="viewport">` element or the `[maximum-scale]` attribute is less than 5.',description:"Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more about the viewport meta tag](https://dequeuniversity.com/rules/axe/4.10/meta-viewport)."},NT=D("core/audits/accessibility/meta-viewport.js",pd),MT=class extends P{static{s(this,"MetaViewport")}static get meta(){return{id:"meta-viewport",title:NT(pd.title),failureTitle:NT(pd.failureTitle),description:NT(pd.description),requiredArtifacts:["Accessibility"]}}},Jse=MT});var K6={};x(K6,{UIStrings:()=>md,default:()=>Zse});var md,LT,PT,Zse,J6=g(()=>{"use strict";d();ne();R();md={title:"`<object>` elements have alternate text",failureTitle:"`<object>` elements do not have alternate text",description:"Screen readers cannot translate non-text content. Adding alternate text to `<object>` elements helps screen readers convey meaning to users. [Learn more about alt text for `object` elements](https://dequeuniversity.com/rules/axe/4.10/object-alt)."},LT=D("core/audits/accessibility/object-alt.js",md),PT=class extends P{static{s(this,"ObjectAlt")}static get meta(){return{id:"object-alt",title:LT(md.title),failureTitle:LT(md.failureTitle),description:LT(md.description),requiredArtifacts:["Accessibility"]}}},Zse=PT});var Z6={};x(Z6,{UIStrings:()=>fd,default:()=>Xse});var fd,OT,BT,Xse,X6=g(()=>{"use strict";d();ne();R();fd={title:"Select elements have associated label elements.",failureTitle:"Select elements do not have associated label elements.",description:"Form elements without effective labels can create frustrating experiences for screen reader users. [Learn more about the `select` element](https://dequeuniversity.com/rules/axe/4.10/select-name)."},OT=D("core/audits/accessibility/select-name.js",fd),BT=class extends P{static{s(this,"SelectName")}static get meta(){return{id:"select-name",title:OT(fd.title),failureTitle:OT(fd.failureTitle),description:OT(fd.description),requiredArtifacts:["Accessibility"]}}},Xse=BT});var Q6={};x(Q6,{UIStrings:()=>hd,default:()=>Qse});var hd,UT,jT,Qse,e4=g(()=>{"use strict";d();ne();R();hd={title:"Skip links are focusable.",failureTitle:"Skip links are not focusable.",description:"Including a skip link can help users skip to the main content to save time. [Learn more about skip links](https://dequeuniversity.com/rules/axe/4.10/skip-link)."},UT=D("core/audits/accessibility/skip-link.js",hd),jT=class extends P{static{s(this,"SkipLink")}static get meta(){return{id:"skip-link",title:UT(hd.title),failureTitle:UT(hd.failureTitle),description:UT(hd.description),requiredArtifacts:["Accessibility"]}}},Qse=jT});var t4={};x(t4,{UIStrings:()=>gd,default:()=>eue});var gd,qT,zT,eue,r4=g(()=>{"use strict";d();ne();R();gd={title:"No element has a `[tabindex]` value greater than 0",failureTitle:"Some elements have a `[tabindex]` value greater than 0",description:"A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more about the `tabindex` attribute](https://dequeuniversity.com/rules/axe/4.10/tabindex)."},qT=D("core/audits/accessibility/tabindex.js",gd),zT=class extends P{static{s(this,"TabIndex")}static get meta(){return{id:"tabindex",title:qT(gd.title),failureTitle:qT(gd.failureTitle),description:qT(gd.description),requiredArtifacts:["Accessibility"]}}},eue=zT});var n4={};x(n4,{UIStrings:()=>yd,default:()=>tue});var yd,HT,WT,tue,i4=g(()=>{"use strict";d();ne();R();yd={title:"Tables have different content in the summary attribute and `<caption>`.",failureTitle:"Tables have the same content in the summary attribute and `<caption>.`",description:"The summary attribute should describe the table structure, while `<caption>` should have the onscreen title. Accurate table mark-up helps users of screen readers. [Learn more about summary and caption](https://dequeuniversity.com/rules/axe/4.10/table-duplicate-name)."},HT=D("core/audits/accessibility/table-duplicate-name.js",yd),WT=class extends P{static{s(this,"TableDuplicateName")}static get meta(){return{id:"table-duplicate-name",title:HT(yd.title),failureTitle:HT(yd.failureTitle),description:HT(yd.description),requiredArtifacts:["Accessibility"]}}},tue=WT});var a4={};x(a4,{UIStrings:()=>vd,default:()=>rue});var vd,GT,VT,rue,o4=g(()=>{"use strict";d();ne();R();vd={title:"Tables use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption.",failureTitle:"Tables do not use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption.",description:"Screen readers have features to make navigating tables easier. Ensuring that tables use the actual caption element instead of cells with the `[colspan]` attribute may improve the experience for screen reader users. [Learn more about captions](https://dequeuniversity.com/rules/axe/4.10/table-fake-caption)."},GT=D("core/audits/accessibility/table-fake-caption.js",vd),VT=class extends P{static{s(this,"TableFakeCaption")}static get meta(){return{id:"table-fake-caption",title:GT(vd.title),failureTitle:GT(vd.failureTitle),description:GT(vd.description),requiredArtifacts:["Accessibility"]}}},rue=VT});var s4={};x(s4,{UIStrings:()=>bd,default:()=>nue});var bd,$T,YT,nue,u4=g(()=>{"use strict";d();ne();R();bd={title:"Touch targets have sufficient size and spacing.",failureTitle:"Touch targets do not have sufficient size or spacing.",description:"Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. [Learn more about touch targets](https://dequeuniversity.com/rules/axe/4.10/target-size)."},$T=D("core/audits/accessibility/target-size.js",bd),YT=class extends P{static{s(this,"TargetSize")}static get meta(){return{id:"target-size",title:$T(bd.title),failureTitle:$T(bd.failureTitle),description:$T(bd.description),requiredArtifacts:["Accessibility"]}}},nue=YT});var l4={};x(l4,{UIStrings:()=>wd,default:()=>iue});var wd,KT,JT,iue,c4=g(()=>{"use strict";d();ne();R();wd={title:"`<td>` elements in a large `<table>` have one or more table headers.",failureTitle:"`<td>` elements in a large `<table>` do not have table headers.",description:"Screen readers have features to make navigating tables easier. Ensuring that `<td>` elements in a large table (3 or more cells in width and height) have an associated table header may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.10/td-has-header)."},KT=D("core/audits/accessibility/td-has-header.js",wd),JT=class extends P{static{s(this,"TDHasHeader")}static get meta(){return{id:"td-has-header",title:KT(wd.title),failureTitle:KT(wd.failureTitle),description:KT(wd.description),requiredArtifacts:["Accessibility"]}}},iue=JT});var d4={};x(d4,{UIStrings:()=>Dd,default:()=>aue});var Dd,ZT,XT,aue,p4=g(()=>{"use strict";d();ne();R();Dd={title:"Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table.",failureTitle:"Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table.",description:"Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more about the `headers` attribute](https://dequeuniversity.com/rules/axe/4.10/td-headers-attr)."},ZT=D("core/audits/accessibility/td-headers-attr.js",Dd),XT=class extends P{static{s(this,"TDHeadersAttr")}static get meta(){return{id:"td-headers-attr",title:ZT(Dd.title),failureTitle:ZT(Dd.failureTitle),description:ZT(Dd.description),requiredArtifacts:["Accessibility"]}}},aue=XT});var m4={};x(m4,{UIStrings:()=>Ed,default:()=>oue});var Ed,QT,ex,oue,f4=g(()=>{"use strict";d();ne();R();Ed={title:'`<th>` elements and elements with `[role="columnheader"/"rowheader"]` have data cells they describe.',failureTitle:'`<th>` elements and elements with `[role="columnheader"/"rowheader"]` do not have data cells they describe.',description:"Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells)."},QT=D("core/audits/accessibility/th-has-data-cells.js",Ed),ex=class extends P{static{s(this,"THHasDataCells")}static get meta(){return{id:"th-has-data-cells",title:QT(Ed.title),failureTitle:QT(Ed.failureTitle),description:QT(Ed.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},oue=ex});var h4={};x(h4,{UIStrings:()=>Td,default:()=>sue});var Td,tx,rx,sue,g4=g(()=>{"use strict";d();ne();R();Td={title:"`[lang]` attributes have a valid value",failureTitle:"`[lang]` attributes do not have a valid value",description:"Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/valid-lang)."},tx=D("core/audits/accessibility/valid-lang.js",Td),rx=class extends P{static{s(this,"ValidLang")}static get meta(){return{id:"valid-lang",title:tx(Td.title),failureTitle:tx(Td.failureTitle),description:tx(Td.description),requiredArtifacts:["Accessibility"]}}},sue=rx});var y4={};x(y4,{UIStrings:()=>xd,default:()=>uue});var xd,nx,ix,uue,v4=g(()=>{"use strict";d();ne();R();xd={title:'`<video>` elements contain a `<track>` element with `[kind="captions"]`',failureTitle:'`<video>` elements do not contain a `<track>` element with `[kind="captions"]`.',description:"When a video provides a caption it is easier for deaf and hearing impaired users to access its information. [Learn more about video captions](https://dequeuniversity.com/rules/axe/4.10/video-caption)."},nx=D("core/audits/accessibility/video-caption.js",xd),ix=class extends P{static{s(this,"VideoCaption")}static get meta(){return{id:"video-caption",title:nx(xd.title),failureTitle:nx(xd.failureTitle),description:nx(xd.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},uue=ix});var w4={};x(w4,{UIStrings:()=>mr,default:()=>due});var mr,Er,lue,cue,b4,ax,due,D4=g(()=>{"use strict";d();Ne();V();R();mr={title:"`<input>` elements correctly use `autocomplete`",failureTitle:"`<input>` elements do not have correct `autocomplete` attributes",description:"`autocomplete` helps users submit forms quicker. To reduce user effort, consider enabling by setting the `autocomplete` attribute to a valid value. [Learn more about `autocomplete` in forms](https://developers.google.com/web/fundamentals/design-and-ux/input/forms#use_metadata_to_enable_auto-complete)",columnSuggestions:"Suggested Token",columnCurrent:"Current Value",warningInvalid:'`autocomplete` token(s): "{token}" is invalid in {snippet}',warningOrder:'Review order of tokens: "{tokens}" in {snippet}',reviewOrder:"Review order of tokens",manualReview:"Requires manual review"},Er=D("core/audits/autocomplete.js",mr),lue=["name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname", -"username","new-password","current-password","one-time-code","organization-title","organization","street-address","address-line1","address-line2","address-line3","address-level4","address-level3","address-level2","address-level1","country","country-name","postal-code","cc-name","cc-given-name","cc-additional-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type","transaction-currency","transaction-amount","language","bday","bday-day","bday-month","bday-year","sex","url","photo","tel","tel-country-code","tel-national","tel-area-code","on","tel-local","tel-local-prefix","tel-local-suffix","tel-extension","email","impp","off","additional-name-initial","home","work","mobile","fax","pager","shipping","billing"],cue=["NO_SERVER_DATA","UNKNOWN_TYPE","EMPTY_TYPE","HTML_TYPE_UNSPECIFIED","HTML_TYPE_UNRECOGNIZED"],b4={NO_SERVER_DATA:Er(mr.manualReview),UNKNOWN_TYPE:Er(mr.manualReview),EMPTY_TYPE:Er(mr.manualReview),NAME_FIRST:"given-name",NAME_MIDDLE:"additio\ + }`,returnByValue:!0,awaitPromise:!0})}catch(r){Dt.captureException(r,{tags:{gatherer:"TraceElements"},level:"error"})}return null}async getArtifact(t){let n=t.driver.defaultSession,r=t.dependencies.Trace,a=await rr.request({trace:r},t),o=t.dependencies.RootCauses,i=await ke.request(r,t),{mainThreadEvents:c}=i,u=await e.getLcpElement(r,t),l=await e.getTopLayoutShifts(r,a.data,o,t),m=await this.getAnimatedElements(c),p=await e.getResponsivenessElement(r,t),f=new Map([["largest-contentful-paint",u?[u]:[]],["layout-shift",l],["animation",m],["responsiveness",p?[p]:[]]]),h=new Map,y=[];for(let[v,w]of f)for(let x=0;x<w.length;x++){let E=w[x].nodeId,S=h.get(E);S===void 0&&(S=await this.getNodeDetails(n,E),h.set(E,S)),S?.result?.value&&y.push({traceEventType:v,...S.result.value,animations:w[x].animations,nodeId:E,type:w[x].type})}return y}},ix=ox});var p4={};T(p4,{default:()=>xue});function Due(){return{innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight,devicePixelRatio:window.devicePixelRatio}}var cx,xue,f4=g(()=>{"use strict";d();Ke();s(Due,"getViewportDimensions");cx=class extends Q{static{s(this,"ViewportDimensions")}meta={supportedModes:["snapshot","timespan","navigation"]};async getArtifact(t){let r=await t.driver.executionContext.evaluate(Due,{args:[],useIsolation:!0});if(!Object.values(r).every(Number.isFinite)){let o=JSON.stringify(r);throw new Error(`ViewportDimensions results were not numeric: ${o}`)}return r}},xue=cx});var h4,Eue,ux,P,ae=g(()=>{"use strict";d();V();A();h4={failingElementsHeader:"Failing Elements"},Eue=D("core/audits/accessibility/axe-audit.js",h4),ux=class extends b{static{s(this,"AxeAudit")}static audit(t){if((t.Accessibility.notApplicable||[]).find(v=>v.id===this.meta.id))return{score:null,notApplicable:!0};let a=t.Accessibility.incomplete||[],o=a.find(v=>v.id===this.meta.id);if(o?.error)return{score:null,errorMessage:`axe-core Error: ${o.error.message||"Unknown error"}`};let i=this.meta.scoreDisplayMode===b.SCORING_MODES.INFORMATIVE,c=t.Accessibility.violations||[],l=(i?c.concat(a):c).find(v=>v.id===this.meta.id),m=l?.impact,p=l?.tags;if(i&&!l)return{score:null,notApplicable:!0};let f=[];l?.nodes&&(f=l.nodes.map(v=>({node:{...b.makeNodeItem(v.node),explanation:v.failureSummary},subItems:v.relatedNodes.length?{type:"subitems",items:v.relatedNodes.map(w=>({relatedNode:b.makeNodeItem(w)}))}:void 0})));let h=[{key:"node",valueType:"node",subItemsHeading:{key:"relatedNode",valueType:"n\ +ode"},label:Eue(h4.failingElementsHeader)}],y;return(m||p)&&(y={type:"debugdata",impact:m,tags:p}),{score:+(l===void 0),details:{...b.makeTableDetails(h,f),debugData:y}}}},P=ux});var g4={};T(g4,{UIStrings:()=>bl,default:()=>Tue});var bl,lx,dx,Tue,y4=g(()=>{"use strict";d();ae();A();bl={title:"`[accesskey]` values are unique",failureTitle:"`[accesskey]` values are not unique",description:"Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more about access keys](https://dequeuniversity.com/rules/axe/4.10/accesskeys)."},lx=D("core/audits/accessibility/accesskeys.js",bl),dx=class extends P{static{s(this,"Accesskeys")}static get meta(){return{id:"accesskeys",title:lx(bl.title),failureTitle:lx(bl.failureTitle),description:lx(bl.description),requiredArtifacts:["Accessibility"]}}},Tue=dx});var v4={};T(v4,{UIStrings:()=>wl,default:()=>Sue});var wl,mx,px,Sue,b4=g(()=>{"use strict";d();ae();A();wl={title:"`[aria-*]` attributes match their roles",failureTitle:"`[aria-*]` attributes do not match their roles",description:"Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn how to match ARIA attributes to their roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr)."},mx=D("core/audits/accessibility/aria-allowed-attr.js",wl),px=class extends P{static{s(this,"ARIAAllowedAttr")}static get meta(){return{id:"aria-allowed-attr",title:mx(wl.title),failureTitle:mx(wl.failureTitle),description:mx(wl.description),requiredArtifacts:["Accessibility"]}}},Sue=px});var w4={};T(w4,{UIStrings:()=>Dl,default:()=>Cue});var Dl,fx,hx,Cue,D4=g(()=>{"use strict";d();ae();A();Dl={title:"Uses ARIA roles only on compatible elements",failureTitle:"Uses ARIA roles on incompatible elements",description:"Many HTML elements can only be assigned certain ARIA roles. Using ARIA roles where they are not allowed can interfere with the accessibility of the web page. [Learn more about ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-role)."},fx=D("core/audits/accessibility/aria-allowed-role.js",Dl),hx=class extends P{static{s(this,"ARIAAllowedRole")}static get meta(){return{id:"aria-allowed-role",title:fx(Dl.title),failureTitle:fx(Dl.failureTitle),description:fx(Dl.description),requiredArtifacts:["Accessibility"]}}},Cue=hx});var x4={};T(x4,{UIStrings:()=>xl,default:()=>kue});var xl,gx,yx,kue,E4=g(()=>{"use strict";d();ae();A();xl={title:"`button`, `link`, and `menuitem` elements have accessible names",failureTitle:"`button`, `link`, and `menuitem` elements do not have accessible names.",description:"When an element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to make command elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-command-name)."},gx=D("core/audits/accessibility/aria-command-name.js",xl),yx=class extends P{static{s(this,"AriaCommandName")}static get meta(){return{id:"aria-command-name",title:gx(xl.title),failureTitle:gx(xl.failureTitle),description:gx(xl.description),requiredArtifacts:["Accessibility"]}}},kue=yx});var T4={};T(T4,{UIStrings:()=>El,default:()=>Fue});var El,vx,bx,Fue,S4=g(()=>{"use strict";d();ae();A();El={title:"ARIA attributes are used as specified for the element's role",failureTitle:"ARIA attributes are not used as specified for the element's role",description:"Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr)."},vx=D("core/audits/accessibility/aria-conditional-attr.js",El),bx=class extends P{static{s(this,"AriaConditionalAttr")}static get meta(){return{id:"aria-conditional-attr",title:vx(El.title),failureTitle:vx(El.failureTitle),description:vx(El.description),requiredArtifacts:["Accessibility"]}}},Fue=bx});var C4={};T(C4,{UIStrings:()=>Tl,default:()=>Rue});var Tl,wx,Dx,Rue,k4=g(()=>{"use strict";d();ae();A();Tl={title:"Deprecated ARIA roles were not used",failureTitle:"Deprecated ARIA roles were used",description:"Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role)."},wx=D("core/audits/accessibility/aria-deprecated-role.js",Tl),Dx=class extends P{static{s(this,"AriaDeprecatedRole")}static get meta(){return{id:"aria-deprecated-role",title:wx(Tl.title),failureTitle:wx(Tl.failureTitle),description:wx(Tl.description),requiredArtifacts:["Accessibility"]}}},Rue=Dx});var F4={};T(F4,{UIStrings:()=>Sl,default:()=>Iue});var Sl,xx,Ex,Iue,R4=g(()=>{"use strict";d();ae();A();Sl={title:'Elements with `role="dialog"` or `role="alertdialog"` have accessible names.',failureTitle:'Elements with `role="dialog"` or `role="alertdialog"` do not have accessible names.',description:"ARIA dialog elements without accessible names may prevent screen readers users from discerning the purpose of these elements. [Learn how to make ARIA dialog elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-dialog-name)."},xx=D("core/audits/accessibility/aria-dialog-name.js",Sl),Ex=class extends P{static{s(this,"AriaDialogName")}static get meta(){return{id:"aria-dialog-name",title:xx(Sl.title),failureTitle:xx(Sl.failureTitle),description:xx(Sl.description),requiredArtifacts:["Accessibility"]}}},Iue=Ex});var I4={};T(I4,{UIStrings:()=>Cl,default:()=>Aue});var Cl,Tx,Sx,Aue,A4=g(()=>{"use strict";d();ae();A();Cl={title:'`[aria-hidden="true"]` is not present on the document `<body>`',failureTitle:'`[aria-hidden="true"]` is present on the document `<body>`',description:'Assistive technologies, like screen readers, work inconsistently when `aria-hidden="true"` is set on the document `<body>`. [Learn how `aria-hidden` affects the document body](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body).'},Tx=D("core/audits/accessibility/aria-hidden-body.js",Cl),Sx=class extends P{static{s(this,"AriaHiddenBody")}static get meta(){return{id:"aria-hidden-body",title:Tx(Cl.title),failureTitle:Tx(Cl.failureTitle),description:Tx(Cl.description),requiredArtifacts:["Accessibility"]}}},Aue=Sx});var _4={};T(_4,{UIStrings:()=>kl,default:()=>_ue});var kl,Cx,kx,_ue,M4=g(()=>{"use strict";d();ae();A();kl={title:'`[aria-hidden="true"]` elements do not contain focusable descendents',failureTitle:'`[aria-hidden="true"]` elements contain focusable descendents',description:'Focusable descendents within an `[aria-hidden="true"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn how `aria-hidden` affects focusable elements](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus).'},Cx=D("core/audits/accessibility/aria-hidden-focus.js",kl),kx=class extends P{static{s(this,"AriaHiddenFocus")}static get meta(){return{id:"aria-hidden-focus",title:Cx(kl.title),failureTitle:Cx(kl.failureTitle),description:Cx(kl.description),requiredArtifacts:["Accessibility"]}}},_ue=kx});var N4={};T(N4,{UIStrings:()=>Fl,default:()=>Mue});var Fl,Fx,Rx,Mue,O4=g(()=>{"use strict";d();ae();A();Fl={title:"ARIA input fields have accessible names",failureTitle:"ARIA input fields do not have accessible names",description:"When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about input field labels](https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name)."},Fx=D("core/audits/accessibility/aria-input-field-name.js",Fl),Rx=class extends P{static{s(this,"AriaInputFieldName")}static get meta(){return{id:"aria-input-field-name",title:Fx(Fl.title),failureTitle:Fx(Fl.failureTitle),description:Fx(Fl.description),requiredArtifacts:["Accessibility"]}}},Mue=Rx});var L4={};T(L4,{UIStrings:()=>Rl,default:()=>Nue});var Rl,Ix,Ax,Nue,P4=g(()=>{"use strict";d();ae();A();Rl={title:"ARIA `meter` elements have accessible names",failureTitle:"ARIA `meter` elements do not have accessible names.",description:"When a meter element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `meter` elements](https://dequeuniversity.com/rules/axe/4.10/aria-meter-name)."},Ix=D("core/audits/accessibility/aria-meter-name.js",Rl),Ax=class extends P{static{s(this,"AriaMeterName")}static get meta(){return{id:"aria-meter-name",title:Ix(Rl.title),failureTitle:Ix(Rl.failureTitle),description:Ix(Rl.description),requiredArtifacts:["Accessibility"]}}},Nue=Ax});var B4={};T(B4,{UIStrings:()=>Il,default:()=>Oue});var Il,_x,Mx,Oue,U4=g(()=>{"use strict";d();ae();A();Il={title:"ARIA `progressbar` elements have accessible names",failureTitle:"ARIA `progressbar` elements do not have accessible names.",description:"When a `progressbar` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to label `progressbar` elements](https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name)."},_x=D("core/audits/accessibility/aria-progressbar-name.js",Il),Mx=class extends P{static{s(this,"AriaProgressbarName")}static get meta(){return{id:"aria-progressbar-name",title:_x(Il.title),failureTitle:_x(Il.failureTitle),description:_x(Il.description),requiredArtifacts:["Accessibility"]}}},Oue=Mx});var j4={};T(j4,{UIStrings:()=>Al,default:()=>Lue});var Al,Nx,Ox,Lue,z4=g(()=>{"use strict";d();ae();A();Al={title:"Elements use only permitted ARIA attributes",failureTitle:"Elements use prohibited ARIA attributes",description:"Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr)."},Nx=D("core/audits/accessibility/aria-prohibited-attr.js",Al),Ox=class extends P{static{s(this,"AriaProhibitedAttr")}static get meta(){return{id:"aria-prohibited-attr",title:Nx(Al.title),failureTitle:Nx(Al.failureTitle),description:Nx(Al.description),requiredArtifacts:["Accessibility"]}}},Lue=Ox});var q4={};T(q4,{UIStrings:()=>_l,default:()=>Pue});var _l,Lx,Px,Pue,H4=g(()=>{"use strict";d();ae();A();_l={title:"`[role]`s have all required `[aria-*]` attributes",failureTitle:"`[role]`s do not have all required `[aria-*]` attributes",description:"Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more about roles and required attributes](https://dequeuniversity.com/rules/axe/4.10/aria-required-attr)."},Lx=D("core/audits/accessibility/aria-required-attr.js",_l),Px=class extends P{static{s(this,"ARIARequiredAttr")}static get meta(){return{id:"aria-required-attr",title:Lx(_l.title),failureTitle:Lx(_l.failureTitle),description:Lx(_l.description),requiredArtifacts:["Accessibility"]}}},Pue=Px});var W4={};T(W4,{UIStrings:()=>Ml,default:()=>Bue});var Ml,Bx,Ux,Bue,G4=g(()=>{"use strict";d();ae();A();Ml={title:"Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children.",failureTitle:"Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children.",description:"Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more about roles and required children elements](https://dequeuniversity.com/rules/axe/4.10/aria-required-children)."},Bx=D("core/audits/accessibility/aria-required-children.js",Ml),Ux=class extends P{static{s(this,"AriaRequiredChildren")}static get meta(){return{id:"aria-required-children",title:Bx(Ml.title),failureTitle:Bx(Ml.failureTitle),description:Bx(Ml.description),requiredArtifacts:["Accessibility"]}}},Bue=Ux});var V4={};T(V4,{UIStrings:()=>Nl,default:()=>Uue});var Nl,jx,zx,Uue,$4=g(()=>{"use strict";d();ae();A();Nl={title:"`[role]`s are contained by their required parent element",failureTitle:"`[role]`s are not contained by their required parent element",description:"Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more about ARIA roles and required parent element](https://dequeuniversity.com/rules/axe/4.10/aria-required-parent)."},jx=D("core/audits/accessibility/aria-required-parent.js",Nl),zx=class extends P{static{s(this,"AriaRequiredParent")}static get meta(){return{id:"aria-required-parent",title:jx(Nl.title),failureTitle:jx(Nl.failureTitle),description:jx(Nl.description),requiredArtifacts:["Accessibility"]}}},Uue=zx});var Y4={};T(Y4,{UIStrings:()=>Ol,default:()=>jue});var Ol,qx,Hx,jue,K4=g(()=>{"use strict";d();ae();A();Ol={title:"`[role]` values are valid",failureTitle:"`[role]` values are not valid",description:"ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more about valid ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-roles)."},qx=D("core/audits/accessibility/aria-roles.js",Ol),Hx=class extends P{static{s(this,"AriaRoles")}static get meta(){return{id:"aria-roles",title:qx(Ol.title),failureTitle:qx(Ol.failureTitle),description:qx(Ol.description),requiredArtifacts:["Accessibility"]}}},jue=Hx});var J4={};T(J4,{UIStrings:()=>Ll,default:()=>zue});var Ll,Wx,Gx,zue,X4=g(()=>{"use strict";d();ae();A();Ll={title:"Elements with the `role=text` attribute do not have focusable descendents.",failureTitle:"Elements with the `role=text` attribute do have focusable descendents.",description:"Adding `role=text` around a text node split by markup enables VoiceOver to treat it as one phrase, but the element's focusable descendents will not be announced. [Learn more about the `role=text` attribute](https://dequeuniversity.com/rules/axe/4.10/aria-text)."},Wx=D("core/audits/accessibility/aria-text.js",Ll),Gx=class extends P{static{s(this,"AriaText")}static get meta(){return{id:"aria-text",title:Wx(Ll.title),failureTitle:Wx(Ll.failureTitle),description:Wx(Ll.description),requiredArtifacts:["Accessibility"]}}},zue=Gx});var Z4={};T(Z4,{UIStrings:()=>Pl,default:()=>que});var Pl,Vx,$x,que,Q4=g(()=>{"use strict";d();ae();A();Pl={title:"ARIA toggle fields have accessible names",failureTitle:"ARIA toggle fields do not have accessible names",description:"When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about toggle fields](https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name)."},Vx=D("core/audits/accessibility/aria-toggle-field-name.js",Pl),$x=class extends P{static{s(this,"AriaToggleFieldName")}static get meta(){return{id:"aria-toggle-field-name",title:Vx(Pl.title),failureTitle:Vx(Pl.failureTitle),description:Vx(Pl.description),requiredArtifacts:["Accessibility"]}}},que=$x});var e6={};T(e6,{UIStrings:()=>Bl,default:()=>Hue});var Bl,Yx,Kx,Hue,t6=g(()=>{"use strict";d();ae();A();Bl={title:"ARIA `tooltip` elements have accessible names",failureTitle:"ARIA `tooltip` elements do not have accessible names.",description:"When a tooltip element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `tooltip` elements](https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name)."},Yx=D("core/audits/accessibility/aria-tooltip-name.js",Bl),Kx=class extends P{static{s(this,"AriaTooltipName")}static get meta(){return{id:"aria-tooltip-name",title:Yx(Bl.title),failureTitle:Yx(Bl.failureTitle),description:Yx(Bl.description),requiredArtifacts:["Accessibility"]}}},Hue=Kx});var n6={};T(n6,{UIStrings:()=>Ul,default:()=>Wue});var Ul,Jx,Xx,Wue,r6=g(()=>{"use strict";d();ae();A();Ul={title:"ARIA `treeitem` elements have accessible names",failureTitle:"ARIA `treeitem` elements do not have accessible names.",description:"When a `treeitem` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about labeling `treeitem` elements](https://dequeuniversity.com/rules/axe/4.10/aria-treeitem-name)."},Jx=D("core/audits/accessibility/aria-treeitem-name.js",Ul),Xx=class extends P{static{s(this,"AriaTreeitemName")}static get meta(){return{id:"aria-treeitem-name",title:Jx(Ul.title),failureTitle:Jx(Ul.failureTitle),description:Jx(Ul.description),requiredArtifacts:["Accessibility"]}}},Wue=Xx});var a6={};T(a6,{UIStrings:()=>jl,default:()=>Gue});var jl,Zx,Qx,Gue,o6=g(()=>{"use strict";d();ae();A();jl={title:"`[aria-*]` attributes have valid values",failureTitle:"`[aria-*]` attributes do not have valid values",description:"Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more about valid values for ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value)."},Zx=D("core/audits/accessibility/aria-valid-attr-value.js",jl),Qx=class extends P{static{s(this,"ARIAValidAttr")}static get meta(){return{id:"aria-valid-attr-value",title:Zx(jl.title),failureTitle:Zx(jl.failureTitle),description:Zx(jl.description),requiredArtifacts:["Accessibility"]}}},Gue=Qx});var i6={};T(i6,{UIStrings:()=>zl,default:()=>Vue});var zl,eE,tE,Vue,s6=g(()=>{"use strict";d();ae();A();zl={title:"`[aria-*]` attributes are valid and not misspelled",failureTitle:"`[aria-*]` attributes are not valid or misspelled",description:"Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more about valid ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr)."},eE=D("core/audits/accessibility/aria-valid-attr.js",zl),tE=class extends P{static{s(this,"ARIAValidAttr")}static get meta(){return{id:"aria-valid-attr",title:eE(zl.title),failureTitle:eE(zl.failureTitle),description:eE(zl.description),requiredArtifacts:["Accessibility"]}}},Vue=tE});var c6={};T(c6,{UIStrings:()=>ql,default:()=>$ue});var ql,nE,rE,$ue,u6=g(()=>{"use strict";d();ae();A();ql={title:"Buttons have an accessible name",failureTitle:"Buttons do not have an accessible name",description:`When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. [Learn how to make buttons more accessible](https://dequeuniversity.com/rules/axe/4.10/button-name).`},nE=D("core/audits/accessibility/button-name.js",ql),rE=class extends P{static{s(this,"ButtonName")}static get meta(){return{id:"button-name",title:nE(ql.title),failureTitle:nE(ql.failureTitle),description:nE(ql.description),requiredArtifacts:["Accessibility"]}}},$ue=rE});var l6={};T(l6,{UIStrings:()=>Hl,default:()=>Yue});var Hl,aE,oE,Yue,d6=g(()=>{"use strict";d();ae();A();Hl={title:"The page contains a heading, skip link, or landmark region",failureTitle:"The page does not contain a heading, skip link, or landmark region",description:"Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more about bypass blocks](https://dequeuniversity.com/rules/axe/4.10/bypass)."},aE=D("core/audits/accessibility/bypass.js",Hl),oE=class extends P{static{s(this,"Bypass")}static get meta(){return{id:"bypass",title:aE(Hl.title),failureTitle:aE(Hl.failureTitle),description:aE(Hl.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},Yue=oE});var m6={};T(m6,{UIStrings:()=>Wl,default:()=>Kue});var Wl,iE,sE,Kue,p6=g(()=>{"use strict";d();ae();A();Wl={title:"Background and foreground colors have a sufficient contrast ratio",failureTitle:"Background and foreground colors do not have a sufficient contrast ratio.",description:"Low-contrast text is difficult or impossible for many users to read. [Learn how to provide sufficient color contrast](https://dequeuniversity.com/rules/axe/4.10/color-contrast)."},iE=D("core/audits/accessibility/color-contrast.js",Wl),sE=class extends P{static{s(this,"ColorContrast")}static get meta(){return{id:"color-contrast",title:iE(Wl.title),failureTitle:iE(Wl.failureTitle),description:iE(Wl.description),requiredArtifacts:["Accessibility"]}}},Kue=sE});var f6={};T(f6,{UIStrings:()=>Gl,default:()=>Jue});var Gl,cE,uE,Jue,h6=g(()=>{"use strict";d();ae();A();Gl={title:"`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.",failureTitle:"`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.",description:"When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.10/definition-list)."},cE=D("core/audits/accessibility/definition-list.js",Gl),uE=class extends P{static{s(this,"DefinitionList")}static get meta(){return{id:"definition-list",title:cE(Gl.title),failureTitle:cE(Gl.failureTitle),description:cE(Gl.description),requiredArtifacts:["Accessibility"]}}},Jue=uE});var g6={};T(g6,{UIStrings:()=>Vl,default:()=>Xue});var Vl,lE,dE,Xue,y6=g(()=>{"use strict";d();ae();A();Vl={title:"Definition list items are wrapped in `<dl>` elements",failureTitle:"Definition list items are not wrapped in `<dl>` elements",description:"Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.10/dlitem)."},lE=D("core/audits/accessibility/dlitem.js",Vl),dE=class extends P{static{s(this,"DLItem")}static get meta(){return{id:"dlitem",title:lE(Vl.title),failureTitle:lE(Vl.failureTitle),description:lE(Vl.description),requiredArtifacts:["Accessibility"]}}},Xue=dE});var v6={};T(v6,{UIStrings:()=>$l,default:()=>Zue});var $l,mE,pE,Zue,b6=g(()=>{"use strict";d();ae();A();$l={title:"Document has a `<title>` element",failureTitle:"Document doesn't have a `<title>` element",description:"The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more about document titles](https://dequeuniversity.com/rules/axe/4.10/document-title)."},mE=D("core/audits/accessibility/document-title.js",$l),pE=class extends P{static{s(this,"DocumentTitle")}static get meta(){return{id:"document-title",title:mE($l.title),failureTitle:mE($l.failureTitle),description:mE($l.description),requiredArtifacts:["Accessibility"]}}},Zue=pE});var w6={};T(w6,{UIStrings:()=>Yl,default:()=>Que});var Yl,fE,hE,Que,D6=g(()=>{"use strict";d();ae();A();Yl={title:"ARIA IDs are unique",failureTitle:"ARIA IDs are not unique",description:"The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies. [Learn how to fix duplicate ARIA IDs](https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria)."},fE=D("core/audits/accessibility/duplicate-id-aria.js",Yl),hE=class extends P{static{s(this,"DuplicateIdAria")}static get meta(){return{id:"duplicate-id-aria",title:fE(Yl.title),failureTitle:fE(Yl.failureTitle),description:fE(Yl.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},Que=hE});var x6={};T(x6,{UIStrings:()=>Kl,default:()=>ele});var Kl,gE,yE,ele,E6=g(()=>{"use strict";d();ae();A();Kl={title:"All heading elements contain content.",failureTitle:"Heading elements do not contain content.",description:"A heading with no content or inaccessible text prevent screen reader users from accessing information on the page's structure. [Learn more about headings](https://dequeuniversity.com/rules/axe/4.10/empty-heading)."},gE=D("core/audits/accessibility/empty-heading.js",Kl),yE=class extends P{static{s(this,"EmptyHeading")}static get meta(){return{id:"empty-heading",title:gE(Kl.title),failureTitle:gE(Kl.failureTitle),description:gE(Kl.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},ele=yE});var T6={};T(T6,{UIStrings:()=>Jl,default:()=>tle});var Jl,vE,bE,tle,S6=g(()=>{"use strict";d();ae();A();Jl={title:"No form fields have multiple labels",failureTitle:"Form fields have multiple labels",description:"Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn how to use form labels](https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels)."},vE=D("core/audits/accessibility/form-field-multiple-labels.js",Jl),bE=class extends P{static{s(this,"FormFieldMultipleLabels")}static get meta(){return{id:"form-field-multiple-labels",title:vE(Jl.title),failureTitle:vE(Jl.failureTitle),description:vE(Jl.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},tle=bE});var C6={};T(C6,{UIStrings:()=>Xl,default:()=>nle});var Xl,wE,DE,nle,k6=g(()=>{"use strict";d();ae();A();Xl={title:"`<frame>` or `<iframe>` elements have a title",failureTitle:"`<frame>` or `<iframe>` elements do not have a title",description:"Screen reader users rely on frame titles to describe the contents of frames. [Learn more about frame titles](https://dequeuniversity.com/rules/axe/4.10/frame-title)."},wE=D("core/audits/accessibility/frame-title.js",Xl),DE=class extends P{static{s(this,"FrameTitle")}static get meta(){return{id:"frame-title",title:wE(Xl.title),failureTitle:wE(Xl.failureTitle),description:wE(Xl.description),requiredArtifacts:["Accessibility"]}}},nle=DE});var F6={};T(F6,{UIStrings:()=>Zl,default:()=>rle});var Zl,xE,EE,rle,R6=g(()=>{"use strict";d();ae();A();Zl={title:"Heading elements appear in a sequentially-descending order",failureTitle:"Heading elements are not in a sequentially-descending order",description:"Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. [Learn more about heading order](https://dequeuniversity.com/rules/axe/4.10/heading-order)."},xE=D("core/audits/accessibility/heading-order.js",Zl),EE=class extends P{static{s(this,"HeadingOrder")}static get meta(){return{id:"heading-order",title:xE(Zl.title),failureTitle:xE(Zl.failureTitle),description:xE(Zl.description),requiredArtifacts:["Accessibility"]}}},rle=EE});var I6={};T(I6,{UIStrings:()=>Ql,default:()=>ale});var Ql,TE,SE,ale,A6=g(()=>{"use strict";d();ae();A();Ql={title:"`<html>` element has a `[lang]` attribute",failureTitle:"`<html>` element does not have a `[lang]` attribute",description:"If a page doesn't specify a `lang` attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-has-lang)."},TE=D("core/audits/accessibility/html-has-lang.js",Ql),SE=class extends P{static{s(this,"HTMLHasLang")}static get meta(){return{id:"html-has-lang",title:TE(Ql.title),failureTitle:TE(Ql.failureTitle),description:TE(Ql.description),requiredArtifacts:["Accessibility"]}}},ale=SE});var _6={};T(_6,{UIStrings:()=>ed,default:()=>ole});var ed,CE,kE,ole,M6=g(()=>{"use strict";d();ae();A();ed={title:"`<html>` element has a valid value for its `[lang]` attribute",failureTitle:"`<html>` element does not have a valid value for its `[lang]` attribute.",description:"Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-lang-valid)."},CE=D("core/audits/accessibility/html-lang-valid.js",ed),kE=class extends P{static{s(this,"HTMLLangValid")}static get meta(){return{id:"html-lang-valid",title:CE(ed.title),failureTitle:CE(ed.failureTitle),description:CE(ed.description),requiredArtifacts:["Accessibility"]}}},ole=kE});var N6={};T(N6,{UIStrings:()=>td,default:()=>ile});var td,FE,RE,ile,O6=g(()=>{"use strict";d();ae();A();td={title:"`<html>` element has an `[xml:lang]` attribute with the same base language as the `[lang]` attribute.",failureTitle:"`<html>` element does not have an `[xml:lang]` attribute with the same base language as the `[lang]` attribute.",description:"If the webpage does not specify a consistent language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch)."},FE=D("core/audits/accessibility/html-xml-lang-mismatch.js",td),RE=class extends P{static{s(this,"HTMLXMLLangMismatch")}static get meta(){return{id:"html-xml-lang-mismatch",title:FE(td.title),failureTitle:FE(td.failureTitle),description:FE(td.description),requiredArtifacts:["Accessibility"]}}},ile=RE});var L6={};T(L6,{UIStrings:()=>nd,default:()=>sle});var nd,IE,AE,sle,P6=g(()=>{"use strict";d();ae();A();nd={title:"Identical links have the same purpose.",failureTitle:"Identical links do not have the same purpose.",description:"Links with the same destination should have the same description, to help users understand the link's purpose and decide whether to follow it. [Learn more about identical links](https://dequeuniversity.com/rules/axe/4.10/identical-links-same-purpose)."},IE=D("core/audits/accessibility/identical-links-same-purpose.js",nd),AE=class extends P{static{s(this,"IdenticalLinksSamePurpose")}static get meta(){return{id:"identical-links-same-purpose",title:IE(nd.title),failureTitle:IE(nd.failureTitle),description:IE(nd.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},sle=AE});var B6={};T(B6,{UIStrings:()=>rd,default:()=>cle});var rd,_E,ME,cle,U6=g(()=>{"use strict";d();ae();A();rd={title:"Image elements have `[alt]` attributes",failureTitle:"Image elements do not have `[alt]` attributes",description:"Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.10/image-alt)."},_E=D("core/audits/accessibility/image-alt.js",rd),ME=class extends P{static{s(this,"ImageAlt")}static get meta(){return{id:"image-alt",title:_E(rd.title),failureTitle:_E(rd.failureTitle),description:_E(rd.description),requiredArtifacts:["Accessibility"]}}},cle=ME});var j6={};T(j6,{UIStrings:()=>ad,default:()=>ule});var ad,NE,OE,ule,z6=g(()=>{"use strict";d();ae();A();ad={title:"Image elements do not have `[alt]` attributes that are redundant text.",failureTitle:"Image elements have `[alt]` attributes that are redundant text.",description:"Informative elements should aim for short, descriptive alternative text. Alternative text that is exactly the same as the text adjacent to the link or image is potentially confusing for screen reader users, because the text will be read twice. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.10/image-redundant-alt)."},NE=D("core/audits/accessibility/image-redundant-alt.js",ad),OE=class extends P{static{s(this,"ImageRedundantAlt")}static get meta(){return{id:"image-redundant-alt",title:NE(ad.title),failureTitle:NE(ad.failureTitle),description:NE(ad.description),requiredArtifacts:["Accessibility"]}}},ule=OE});var q6={};T(q6,{UIStrings:()=>od,default:()=>lle});var od,LE,PE,lle,H6=g(()=>{"use strict";d();ae();A();od={title:"Input buttons have discernible text.",failureTitle:"Input buttons do not have discernible text.",description:"Adding discernable and accessible text to input buttons may help screen reader users understand the purpose of the input button. [Learn more about input buttons](https://dequeuniversity.com/rules/axe/4.10/input-button-name)."},LE=D("core/audits/accessibility/input-button-name.js",od),PE=class extends P{static{s(this,"InputButtonName")}static get meta(){return{id:"input-button-name",title:LE(od.title),failureTitle:LE(od.failureTitle),description:LE(od.description),requiredArtifacts:["Accessibility"]}}},lle=PE});var W6={};T(W6,{UIStrings:()=>id,default:()=>dle});var id,BE,UE,dle,G6=g(()=>{"use strict";d();ae();A();id={title:'`<input type="image">` elements have `[alt]` text',failureTitle:'`<input type="image">` elements do not have `[alt]` text',description:"When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn about input image alt text](https://dequeuniversity.com/rules/axe/4.10/input-image-alt)."},BE=D("core/audits/accessibility/input-image-alt.js",id),UE=class extends P{static{s(this,"InputImageAlt")}static get meta(){return{id:"input-image-alt",title:BE(id.title),failureTitle:BE(id.failureTitle),description:BE(id.description),requiredArtifacts:["Accessibility"]}}},dle=UE});var V6={};T(V6,{UIStrings:()=>sd,default:()=>mle});var sd,jE,zE,mle,$6=g(()=>{"use strict";d();ae();A();sd={title:"Elements with visible text labels have matching accessible names.",failureTitle:"Elements with visible text labels do not have matching accessible names.",description:"Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. [Learn more about accessible names](https://dequeuniversity.com/rules/axe/4.10/label-content-name-mismatch)."},jE=D("core/audits/accessibility/label-content-name-mismatch.js",sd),zE=class extends P{static{s(this,"LabelContentNameMismatch")}static get meta(){return{id:"label-content-name-mismatch",title:jE(sd.title),failureTitle:jE(sd.failureTitle),description:jE(sd.description),requiredArtifacts:["Accessibility"]}}},mle=zE});var Y6={};T(Y6,{UIStrings:()=>cd,default:()=>ple});var cd,qE,HE,ple,K6=g(()=>{"use strict";d();ae();A();cd={title:"Form elements have associated labels",failureTitle:"Form elements do not have associated labels",description:"Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more about form element labels](https://dequeuniversity.com/rules/axe/4.10/label)."},qE=D("core/audits/accessibility/label.js",cd),HE=class extends P{static{s(this,"Label")}static get meta(){return{id:"label",title:qE(cd.title),failureTitle:qE(cd.failureTitle),description:qE(cd.description),requiredArtifacts:["Accessibility"]}}},ple=HE});var J6={};T(J6,{UIStrings:()=>ud,default:()=>fle});var ud,WE,GE,fle,X6=g(()=>{"use strict";d();ae();A();ud={title:"Document has a main landmark.",failureTitle:"Document does not have a main landmark.",description:"One main landmark helps screen reader users navigate a web page. [Learn more about landmarks](https://dequeuniversity.com/rules/axe/4.10/landmark-one-main)."},WE=D("core/audits/accessibility/landmark-one-main.js",ud),GE=class extends P{static{s(this,"LandmarkOneMain")}static get meta(){return{id:"landmark-one-main",title:WE(ud.title),failureTitle:WE(ud.failureTitle),description:WE(ud.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},fle=GE});var Z6={};T(Z6,{UIStrings:()=>ld,default:()=>hle});var ld,VE,$E,hle,Q6=g(()=>{"use strict";d();ae();A();ld={title:"Links are distinguishable without relying on color.",failureTitle:"Links rely on color to be distinguishable.",description:"Low-contrast text is difficult or impossible for many users to read. Link text that is discernible improves the experience for users with low vision. [Learn how to make links distinguishable](https://dequeuniversity.com/rules/axe/4.10/link-in-text-block)."},VE=D("core/audits/accessibility/link-in-text-block.js",ld),$E=class extends P{static{s(this,"LinkInTextBlock")}static get meta(){return{id:"link-in-text-block",title:VE(ld.title),failureTitle:VE(ld.failureTitle),description:VE(ld.description),requiredArtifacts:["Accessibility"]}}},hle=$E});var e7={};T(e7,{UIStrings:()=>dd,default:()=>gle});var dd,YE,KE,gle,t7=g(()=>{"use strict";d();ae();A();dd={title:"Links have a discernible name",failureTitle:"Links do not have a discernible name",description:"Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn how to make links accessible](https://dequeuniversity.com/rules/axe/4.10/link-name)."},YE=D("core/audits/accessibility/link-name.js",dd),KE=class extends P{static{s(this,"LinkName")}static get meta(){return{id:"link-name",title:YE(dd.title),failureTitle:YE(dd.failureTitle),description:YE(dd.description),requiredArtifacts:["Accessibility"]}}},gle=KE});var n7={};T(n7,{UIStrings:()=>md,default:()=>yle});var md,JE,XE,yle,r7=g(()=>{"use strict";d();ae();A();md={title:"Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).",failureTitle:"Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).",description:"Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.10/list)."},JE=D("core/audits/accessibility/list.js",md),XE=class extends P{static{s(this,"List")}static get meta(){return{id:"list",title:JE(md.title),failureTitle:JE(md.failureTitle),description:JE(md.description),requiredArtifacts:["Accessibility"]}}},yle=XE});var a7={};T(a7,{UIStrings:()=>pd,default:()=>vle});var pd,ZE,QE,vle,o7=g(()=>{"use strict";d();ae();A();pd={title:"List items (`<li>`) are contained within `<ul>`, `<ol>` or `<menu>` parent elements",failureTitle:"List items (`<li>`) are not contained within `<ul>`, `<ol>` or `<menu>` parent elements.",description:"Screen readers require list items (`<li>`) to be contained within a parent `<ul>`, `<ol>` or `<menu>` to be announced properly. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.10/listitem)."},ZE=D("core/audits/accessibility/listitem.js",pd),QE=class extends P{static{s(this,"ListItem")}static get meta(){return{id:"listitem",title:ZE(pd.title),failureTitle:ZE(pd.failureTitle),description:ZE(pd.description),requiredArtifacts:["Accessibility"]}}},vle=QE});var eT,jt,ar=g(()=>{"use strict";d();V();eT=class extends b{static{s(this,"ManualAudit")}static get partialMeta(){return{scoreDisplayMode:b.SCORING_MODES.MANUAL,requiredArtifacts:[]}}static audit(){return{score:0}}},jt=eT});var i7={};T(i7,{default:()=>ble});var tT,ble,s7=g(()=>{"use strict";d();ar();tT=class extends jt{static{s(this,"CustomControlsLabels")}static get meta(){return Object.assign({id:"custom-controls-labels",description:"Custom interactive controls have associated labels, provided by aria-label or aria-labelledby. [Learn more about custom controls and labels](https://developer.chrome.com/docs/lighthouse/accessibility/custom-controls-labels/).",title:"Custom controls have associated labels"},super.partialMeta)}},ble=tT});var c7={};T(c7,{default:()=>wle});var nT,wle,u7=g(()=>{"use strict";d();ar();nT=class extends jt{static{s(this,"CustomControlsRoles")}static get meta(){return Object.assign({id:"custom-controls-roles",description:"Custom interactive controls have appropriate ARIA roles. [Learn how to add roles to custom controls](https://developer.chrome.com/docs/lighthouse/accessibility/custom-control-roles/).",title:"Custom controls have ARIA roles"},super.partialMeta)}},wle=nT});var l7={};T(l7,{default:()=>Dle});var rT,Dle,d7=g(()=>{"use strict";d();ar();rT=class extends jt{static{s(this,"FocusTraps")}static get meta(){return Object.assign({id:"focus-traps",description:"A user can tab into and out of any control or region without accidentally trapping their focus. [Learn how to avoid focus traps](https://developer.chrome.com/docs/lighthouse/accessibility/focus-traps/).",title:"User focus is not accidentally trapped in a region"},super.partialMeta)}},Dle=rT});var m7={};T(m7,{default:()=>xle});var aT,xle,p7=g(()=>{"use strict";d();ar();aT=class extends jt{static{s(this,"FocusableControls")}static get meta(){return Object.assign({id:"focusable-controls",description:"Custom interactive controls are keyboard focusable and display a focus indicator. [Learn how to make custom controls focusable](https://developer.chrome.com/docs/lighthouse/accessibility/focusable-controls/).",title:"Interactive controls are keyboard focusable"},super.partialMeta)}},xle=aT});var f7={};T(f7,{default:()=>Ele});var oT,Ele,h7=g(()=>{"use strict";d();ar();oT=class extends jt{static{s(this,"InteractiveElementAffordance")}static get meta(){return Object.assign({id:"interactive-element-affordance",description:"Interactive elements, such as links and buttons, should indicate their state and be distinguishable from non-interactive elements. [Learn how to decorate interactive elements with affordance hints](https://developer.chrome.com/docs/lighthouse/accessibility/interactive-element-affordance/).",title:"Interactive elements indicate their purpose and state"},super.partialMeta)}},Ele=oT});var g7={};T(g7,{default:()=>Tle});var iT,Tle,y7=g(()=>{"use strict";d();ar();iT=class extends jt{static{s(this,"LogicalTabOrder")}static get meta(){return Object.assign({id:"logical-tab-order",description:"Tabbing through the page follows the visual layout. Users cannot focus elements that are offscreen. [Learn more about logical tab ordering](https://developer.chrome.com/docs/lighthouse/accessibility/logical-tab-order/).",title:"The page has a logical tab order"},super.partialMeta)}},Tle=iT});var v7={};T(v7,{default:()=>Sle});var sT,Sle,b7=g(()=>{"use strict";d();ar();sT=class extends jt{static{s(this,"ManagedFocus")}static get meta(){return Object.assign({id:"managed-focus",description:"If new content, such as a dialog, is added to the page, the user's focus is directed to it. [Learn how to direct focus to new content](https://developer.chrome.com/docs/lighthouse/accessibility/managed-focus/).",title:"The user's focus is directed to new content added to the page"},super.partialMeta)}},Sle=sT});var w7={};T(w7,{default:()=>Cle});var cT,Cle,D7=g(()=>{"use strict";d();ar();cT=class extends jt{static{s(this,"OffscreenContentHidden")}static get meta(){return Object.assign({id:"offscreen-content-hidden",description:"Offscreen content is hidden with display: none or aria-hidden=true. [Learn how to properly hide offscreen content](https://developer.chrome.com/docs/lighthouse/accessibility/offscreen-content-hidden/).",title:"Offscreen content is hidden from assistive technology"},super.partialMeta)}},Cle=cT});var x7={};T(x7,{default:()=>kle});var uT,kle,E7=g(()=>{"use strict";d();ar();uT=class extends jt{static{s(this,"UseLandmarks")}static get meta(){return Object.assign({id:"use-landmarks",description:"Landmark elements (`<main>`, `<nav>`, etc.) are used to improve the keyboard navigation of the page for assistive technology. [Learn more about landmark elements](https://developer.chrome.com/docs/lighthouse/accessibility/use-landmarks/).",title:"HTML5 landmark elements are used to improve navigation"},super.partialMeta)}},kle=uT});var T7={};T(T7,{default:()=>Fle});var lT,Fle,S7=g(()=>{"use strict";d();ar();lT=class extends jt{static{s(this,"VisualOrderFollowsDOM")}static get meta(){return Object.assign({id:"visual-order-follows-dom",description:"DOM order matches the visual order, improving navigation for assistive technology. [Learn more about DOM and visual ordering](https://developer.chrome.com/docs/lighthouse/accessibility/visual-order-follows-dom/).",title:"Visual order on the page follows DOM order"},super.partialMeta)}},Fle=lT});var C7={};T(C7,{UIStrings:()=>fd,default:()=>Rle});var fd,dT,mT,Rle,k7=g(()=>{"use strict";d();ae();A();fd={title:'The document does not use `<meta http-equiv="refresh">`',failureTitle:'The document uses `<meta http-equiv="refresh">`',description:"Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more about the refresh meta tag](https://dequeuniversity.com/rules/axe/4.10/meta-refresh)."},dT=D("core/audits/accessibility/meta-refresh.js",fd),mT=class extends P{static{s(this,"MetaRefresh")}static get meta(){return{id:"meta-refresh",title:dT(fd.title),failureTitle:dT(fd.failureTitle),description:dT(fd.description),requiredArtifacts:["Accessibility"]}}},Rle=mT});var F7={};T(F7,{UIStrings:()=>hd,default:()=>Ile});var hd,pT,fT,Ile,R7=g(()=>{"use strict";d();ae();A();hd={title:'`[user-scalable="no"]` is not used in the `<meta name="viewport">` element and the `[maximum-scale]` attribute is not less than 5.',failureTitle:'`[user-scalable="no"]` is used in the `<meta name="viewport">` element or the `[maximum-scale]` attribute is less than 5.',description:"Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more about the viewport meta tag](https://dequeuniversity.com/rules/axe/4.10/meta-viewport)."},pT=D("core/audits/accessibility/meta-viewport.js",hd),fT=class extends P{static{s(this,"MetaViewport")}static get meta(){return{id:"meta-viewport",title:pT(hd.title),failureTitle:pT(hd.failureTitle),description:pT(hd.description),requiredArtifacts:["Accessibility"]}}},Ile=fT});var I7={};T(I7,{UIStrings:()=>gd,default:()=>Ale});var gd,hT,gT,Ale,A7=g(()=>{"use strict";d();ae();A();gd={title:"`<object>` elements have alternate text",failureTitle:"`<object>` elements do not have alternate text",description:"Screen readers cannot translate non-text content. Adding alternate text to `<object>` elements helps screen readers convey meaning to users. [Learn more about alt text for `object` elements](https://dequeuniversity.com/rules/axe/4.10/object-alt)."},hT=D("core/audits/accessibility/object-alt.js",gd),gT=class extends P{static{s(this,"ObjectAlt")}static get meta(){return{id:"object-alt",title:hT(gd.title),failureTitle:hT(gd.failureTitle),description:hT(gd.description),requiredArtifacts:["Accessibility"]}}},Ale=gT});var _7={};T(_7,{UIStrings:()=>yd,default:()=>_le});var yd,yT,vT,_le,M7=g(()=>{"use strict";d();ae();A();yd={title:"Select elements have associated label elements.",failureTitle:"Select elements do not have associated label elements.",description:"Form elements without effective labels can create frustrating experiences for screen reader users. [Learn more about the `select` element](https://dequeuniversity.com/rules/axe/4.10/select-name)."},yT=D("core/audits/accessibility/select-name.js",yd),vT=class extends P{static{s(this,"SelectName")}static get meta(){return{id:"select-name",title:yT(yd.title),failureTitle:yT(yd.failureTitle),description:yT(yd.description),requiredArtifacts:["Accessibility"]}}},_le=vT});var N7={};T(N7,{UIStrings:()=>vd,default:()=>Mle});var vd,bT,wT,Mle,O7=g(()=>{"use strict";d();ae();A();vd={title:"Skip links are focusable.",failureTitle:"Skip links are not focusable.",description:"Including a skip link can help users skip to the main content to save time. [Learn more about skip links](https://dequeuniversity.com/rules/axe/4.10/skip-link)."},bT=D("core/audits/accessibility/skip-link.js",vd),wT=class extends P{static{s(this,"SkipLink")}static get meta(){return{id:"skip-link",title:bT(vd.title),failureTitle:bT(vd.failureTitle),description:bT(vd.description),requiredArtifacts:["Accessibility"]}}},Mle=wT});var L7={};T(L7,{UIStrings:()=>bd,default:()=>Nle});var bd,DT,xT,Nle,P7=g(()=>{"use strict";d();ae();A();bd={title:"No element has a `[tabindex]` value greater than 0",failureTitle:"Some elements have a `[tabindex]` value greater than 0",description:"A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more about the `tabindex` attribute](https://dequeuniversity.com/rules/axe/4.10/tabindex)."},DT=D("core/audits/accessibility/tabindex.js",bd),xT=class extends P{static{s(this,"TabIndex")}static get meta(){return{id:"tabindex",title:DT(bd.title),failureTitle:DT(bd.failureTitle),description:DT(bd.description),requiredArtifacts:["Accessibility"]}}},Nle=xT});var B7={};T(B7,{UIStrings:()=>wd,default:()=>Ole});var wd,ET,TT,Ole,U7=g(()=>{"use strict";d();ae();A();wd={title:"Tables have different content in the summary attribute and `<caption>`.",failureTitle:"Tables have the same content in the summary attribute and `<caption>.`",description:"The summary attribute should describe the table structure, while `<caption>` should have the onscreen title. Accurate table mark-up helps users of screen readers. [Learn more about summary and caption](https://dequeuniversity.com/rules/axe/4.10/table-duplicate-name)."},ET=D("core/audits/accessibility/table-duplicate-name.js",wd),TT=class extends P{static{s(this,"TableDuplicateName")}static get meta(){return{id:"table-duplicate-name",title:ET(wd.title),failureTitle:ET(wd.failureTitle),description:ET(wd.description),requiredArtifacts:["Accessibility"]}}},Ole=TT});var j7={};T(j7,{UIStrings:()=>Dd,default:()=>Lle});var Dd,ST,CT,Lle,z7=g(()=>{"use strict";d();ae();A();Dd={title:"Tables use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption.",failureTitle:"Tables do not use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption.",description:"Screen readers have features to make navigating tables easier. Ensuring that tables use the actual caption element instead of cells with the `[colspan]` attribute may improve the experience for screen reader users. [Learn more about captions](https://dequeuniversity.com/rules/axe/4.10/table-fake-caption)."},ST=D("core/audits/accessibility/table-fake-caption.js",Dd),CT=class extends P{static{s(this,"TableFakeCaption")}static get meta(){return{id:"table-fake-caption",title:ST(Dd.title),failureTitle:ST(Dd.failureTitle),description:ST(Dd.description),requiredArtifacts:["Accessibility"]}}},Lle=CT});var q7={};T(q7,{UIStrings:()=>xd,default:()=>Ple});var xd,kT,FT,Ple,H7=g(()=>{"use strict";d();ae();A();xd={title:"Touch targets have sufficient size and spacing.",failureTitle:"Touch targets do not have sufficient size or spacing.",description:"Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. [Learn more about touch targets](https://dequeuniversity.com/rules/axe/4.10/target-size)."},kT=D("core/audits/accessibility/target-size.js",xd),FT=class extends P{static{s(this,"TargetSize")}static get meta(){return{id:"target-size",title:kT(xd.title),failureTitle:kT(xd.failureTitle),description:kT(xd.description),requiredArtifacts:["Accessibility"]}}},Ple=FT});var W7={};T(W7,{UIStrings:()=>Ed,default:()=>Ble});var Ed,RT,IT,Ble,G7=g(()=>{"use strict";d();ae();A();Ed={title:"`<td>` elements in a large `<table>` have one or more table headers.",failureTitle:"`<td>` elements in a large `<table>` do not have table headers.",description:"Screen readers have features to make navigating tables easier. Ensuring that `<td>` elements in a large table (3 or more cells in width and height) have an associated table header may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.10/td-has-header)."},RT=D("core/audits/accessibility/td-has-header.js",Ed),IT=class extends P{static{s(this,"TDHasHeader")}static get meta(){return{id:"td-has-header",title:RT(Ed.title),failureTitle:RT(Ed.failureTitle),description:RT(Ed.description),requiredArtifacts:["Accessibility"]}}},Ble=IT});var V7={};T(V7,{UIStrings:()=>Td,default:()=>Ule});var Td,AT,_T,Ule,$7=g(()=>{"use strict";d();ae();A();Td={title:"Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table.",failureTitle:"Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table.",description:"Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more about the `headers` attribute](https://dequeuniversity.com/rules/axe/4.10/td-headers-attr)."},AT=D("core/audits/accessibility/td-headers-attr.js",Td),_T=class extends P{static{s(this,"TDHeadersAttr")}static get meta(){return{id:"td-headers-attr",title:AT(Td.title),failureTitle:AT(Td.failureTitle),description:AT(Td.description),requiredArtifacts:["Accessibility"]}}},Ule=_T});var Y7={};T(Y7,{UIStrings:()=>Sd,default:()=>jle});var Sd,MT,NT,jle,K7=g(()=>{"use strict";d();ae();A();Sd={title:'`<th>` elements and elements with `[role="columnheader"/"rowheader"]` have data cells they describe.',failureTitle:'`<th>` elements and elements with `[role="columnheader"/"rowheader"]` do not have data cells they describe.',description:"Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells)."},MT=D("core/audits/accessibility/th-has-data-cells.js",Sd),NT=class extends P{static{s(this,"THHasDataCells")}static get meta(){return{id:"th-has-data-cells",title:MT(Sd.title),failureTitle:MT(Sd.failureTitle),description:MT(Sd.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},jle=NT});var J7={};T(J7,{UIStrings:()=>Cd,default:()=>zle});var Cd,OT,LT,zle,X7=g(()=>{"use strict";d();ae();A();Cd={title:"`[lang]` attributes have a valid value",failureTitle:"`[lang]` attributes do not have a valid value",description:"Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/valid-lang)."},OT=D("core/audits/accessibility/valid-lang.js",Cd),LT=class extends P{static{s(this,"ValidLang")}static get meta(){return{id:"valid-lang",title:OT(Cd.title),failureTitle:OT(Cd.failureTitle),description:OT(Cd.description),requiredArtifacts:["Accessibility"]}}},zle=LT});var Z7={};T(Z7,{UIStrings:()=>kd,default:()=>qle});var kd,PT,BT,qle,Q7=g(()=>{"use strict";d();ae();A();kd={title:'`<video>` elements contain a `<track>` element with `[kind="captions"]`',failureTitle:'`<video>` elements do not contain a `<track>` element with `[kind="captions"]`.',description:"When a video provides a caption it is easier for deaf and hearing impaired users to access its information. [Learn more about video captions](https://dequeuniversity.com/rules/axe/4.10/video-caption)."},PT=D("core/audits/accessibility/video-caption.js",kd),BT=class extends P{static{s(this,"VideoCaption")}static get meta(){return{id:"video-caption",title:PT(kd.title),failureTitle:PT(kd.failureTitle),description:PT(kd.description),scoreDisplayMode:P.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},qle=BT});var t9={};T(t9,{UIStrings:()=>wn,default:()=>Gle});var wn,kn,Hle,Wle,e9,UT,Gle,n9=g(()=>{"use strict";d();Oe();V();A();wn={title:"`<input>` elements correctly use `autocomplete`",failureTitle:"`<input>` elements do not have correct `autocomplete` attributes",description:"`autocomplete` helps users submit forms quicker. To reduce user effort, consider enabling by setting the `autocomplete` attribute to a valid value. [Learn more about `autocomplete` in forms](https://developers.google.com/web/fundamentals/design-and-ux/input/forms#use_metadata_to_enable_auto-complete)",columnSuggestions:"Suggested Token",columnCurrent:"Current Value",warningInvalid:'`autocomplete` token(s): "{token}" is invalid in {snippet}',warningOrder:'Review order of tokens: "{tokens}" in {snippet}',reviewOrder:"Review order of tokens",manualReview:"Requires manual review"},kn=D("core/audits/autocomplete.js",wn),Hle=["name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname", +"username","new-password","current-password","one-time-code","organization-title","organization","street-address","address-line1","address-line2","address-line3","address-level4","address-level3","address-level2","address-level1","country","country-name","postal-code","cc-name","cc-given-name","cc-additional-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type","transaction-currency","transaction-amount","language","bday","bday-day","bday-month","bday-year","sex","url","photo","tel","tel-country-code","tel-national","tel-area-code","on","tel-local","tel-local-prefix","tel-local-suffix","tel-extension","email","impp","off","additional-name-initial","home","work","mobile","fax","pager","shipping","billing"],Wle=["NO_SERVER_DATA","UNKNOWN_TYPE","EMPTY_TYPE","HTML_TYPE_UNSPECIFIED","HTML_TYPE_UNRECOGNIZED"],e9={NO_SERVER_DATA:kn(wn.manualReview),UNKNOWN_TYPE:kn(wn.manualReview),EMPTY_TYPE:kn(wn.manualReview),NAME_FIRST:"given-name",NAME_MIDDLE:"additio\ nal-name",NAME_LAST:"family-name",NAME_FULL:"name",NAME_MIDDLE_INITIAL:"additional-name-initial",NAME_SUFFIX:"honorific-suffix",NAME_BILLING_FIRST:"billing given-name",NAME_BILLING_MIDDLE:"billing additional-name",NAME_BILLING_LAST:"billing family-name",NAME_BILLING_MIDDLE_INITIAL:"billing additional-name-initial",NAME_BILLING_FULL:"billing name",NAME_BILLING_SUFFIX:"billing honorific-suffix",EMAIL_ADDRESS:"email",MERCHANT_EMAIL_SIGNUP:"email",PHONE_HOME_NUMBER:"tel-local",PHONE_HOME_CITY_CODE:"tel-area-code",PHONE_HOME_COUNTRY_CODE:"tel-country-code",PHONE_HOME_CITY_AND_NUMBER:"tel-national",PHONE_HOME_WHOLE_NUMBER:"tel",PHONE_HOME_EXTENSION:"tel-extension",PHONE_BILLING_NUMBER:"billing tel-local",PHONE_BILLING_CITY_CODE:"billing tel-area-code",PHONE_BILLING_COUNTRY_CODE:"tel-country-code",PHONE_BILLING_CITY_AND_NUMBER:"tel-national",PHONE_BILLING_WHOLE_NUMBER:"tel",ADDRESS_HOME_STREET_ADDRESS:"street-address",ADDRESS_HOME_LINE1:"address-line1",ADDRESS_HOME_LINE2:"address-line2",ADDRESS_HOME_LINE3:"\ address-line3",ADDRESS_HOME_STATE:"address-level1",ADDRESS_HOME_CITY:"address-level2",ADDRESS_HOME_DEPENDENT_LOCALITY:"address-level3",ADDRESS_HOME_ZIP:"postal-code",ADDRESS_HOME_COUNTRY:"country-name",ADDRESS_BILLING_DEPENDENT_LOCALITY:"billing address-level3",ADDRESS_BILLING_STREET_ADDRESS:"billing street-address",ADDRESS_BILLING_LINE1:"billing address-line1",ADDRESS_BILLING_LINE2:"billing address-line2",ADDRESS_BILLING_LINE3:"billing address-line3",ADDRESS_BILLING_APT_NUM:"billing address-level3",ADDRESS_BILLING_CITY:"billing address-level2",ADDRESS_BILLING_STATE:"billing address-level1",ADDRESS_BILLING_ZIP:"billing postal-code",ADDRESS_BILLING_COUNTRY:"billing country-name",CREDIT_CARD_NAME_FULL:"cc-name",CREDIT_CARD_NAME_FIRST:"cc-given-name",CREDIT_CARD_NAME_LAST:"cc-family-name",CREDIT_CARD_NUMBER:"cc-number",CREDIT_CARD_EXP_MONTH:"cc-exp-month",CREDIT_CARD_EXP_2_DIGIT_YEAR:"cc-exp-year",CREDIT_CARD_EXP_4_DIGIT_YEAR:"cc-exp-year",CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:"cc-exp",CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:"\ -cc-exp",CREDIT_CARD_TYPE:"cc-type",CREDIT_CARD_VERIFICATION_CODE:"cc-csc",COMPANY_NAME:"organization",PASSWORD:"current-password",ACCOUNT_CREATION_PASSWORD:"new-password",HTML_TYPE_UNSPECIFIED:Er(mr.manualReview),HTML_TYPE_NAME:"name",HTML_TYPE_HONORIFIC_PREFIX:"honorific-prefix",HTML_TYPE_GIVEN_NAME:"given-name",HTML_TYPE_ADDITIONAL_NAME:"additional-name",HTML_TYPE_FAMILY_NAME:"family-name",HTML_TYPE_ORGANIZATION:"organization",HTML_TYPE_STREET_ADDRESS:"street-address",HTML_TYPE_ADDRESS_LINE1:"address-line1",HTML_TYPE_ADDRESS_LINE2:"address-line2",HTML_TYPE_ADDRESS_LINE3:"address-line3",HTML_TYPE_ADDRESS_LEVEL1:"address-level1",HTML_TYPE_ADDRESS_LEVEL2:"address-level2",HTML_TYPE_ADDRESS_LEVEL3:"address-level3",HTML_TYPE_COUNTRY_CODE:"tel-country-code",HTML_TYPE_COUNTRY_NAME:"country-name",HTML_TYPE_POSTAL_CODE:"postal-code",HTML_TYPE_FULL_ADDRESS:"street-address",HTML_TYPE_CREDIT_CARD_NAME_FULL:"cc-name",HTML_TYPE_CREDIT_CARD_NAME_FIRST:"cc-given-name",HTML_TYPE_CREDIT_CARD_NAME_LAST:"\ -cc-family-name",HTML_TYPE_CREDIT_CARD_NUMBER:"cc-number",HTML_TYPE_CREDIT_CARD_EXP:"cc-exp",HTML_TYPE_CREDIT_CARD_EXP_MONTH:"cc-exp-month",HTML_TYPE_CREDIT_CARD_EXP_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE:"cc-csc",HTML_TYPE_CREDIT_CARD_TYPE:"cc-csc",HTML_TYPE_TEL:"tel",HTML_TYPE_TEL_COUNTRY_CODE:"tel-country-code",HTML_TYPE_TEL_NATIONAL:"tel-national",HTML_TYPE_TEL_AREA_CODE:"tel-area-code",HTML_TYPE_TEL_LOCAL:"tel-local",HTML_TYPE_TEL_LOCAL_PREFIX:"tel-local-prefix",HTML_TYPE_TEL_LOCAL_SUFFIX:"tel-local-suffix",HTML_TYPE_TEL_EXTENSION:"tel-extension",HTML_TYPE_EMAIL:"email",HTML_TYPE_ADDITIONAL_NAME_INITIAL:"additional-name-initial",HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_UPI_VPA:Er(mr.manualReview),HTML_TYPE_ONE_TIME_CODE:"one-time-code",HTML_TYPE_UNRECOGNIZED:Er(mr.manualReview), -HTML_TYPE_TRANSACTION_AMOUNT:"transaction-amount",HTML_TYPE_TRANSACTION_CURRENCY:"transaction-currency"},ax=class extends v{static{s(this,"AutocompleteAudit")}static get meta(){return{id:"autocomplete",title:Er(mr.title),failureTitle:Er(mr.failureTitle),description:Er(mr.description),requiredArtifacts:["Inputs"]}}static checkAttributeValidity(t){if(!t.autocomplete.attribute)return{hasValidTokens:!1};let r=t.autocomplete.attribute.split(" ");for(let n of r)if(n.slice(0,8)!=="section-"&&!lue.includes(n))return{hasValidTokens:!1};return t.autocomplete.property?{hasValidTokens:!0,isValidOrder:!0}:{hasValidTokens:!0,isValidOrder:!1}}static audit(t){let r=[],n=[],i=!1;for(let l of t.Inputs.inputs){let c=this.checkAttributeValidity(l);if(c.hasValidTokens&&c.isValidOrder||!l.autocomplete.prediction||cue.includes(l.autocomplete.prediction)&&!l.autocomplete.attribute)continue;i=!0;let p=b4[l.autocomplete.prediction];if(l.autocomplete.attribute||(l.autocomplete.attribute=""),l.autocomplete.attribute&& -n.push(Er(mr.warningInvalid,{token:l.autocomplete.attribute,snippet:l.node.snippet})),c.isValidOrder===!1&&(n.push(Er(mr.warningOrder,{tokens:l.autocomplete.attribute,snippet:l.node.snippet})),p=mr.reviewOrder),!(l.autocomplete.prediction in b4)&&c.isValidOrder){N.warn(`Autocomplete prediction (${l.autocomplete.prediction}) - not found in our mapping`);continue}r.push({node:v.makeNodeItem(l.node),suggestion:p,current:l.autocomplete.attribute})}let a=[{key:"node",valueType:"node",label:Er(F.columnFailingElem)},{key:"current",valueType:"text",label:Er(mr.columnCurrent)},{key:"suggestion",valueType:"text",label:Er(mr.columnSuggestions)}],o=v.makeTableDetails(a,r),u;return r.length>0&&(u=Er(F.displayValueElementsFound,{nodeCount:r.length})),{score:r.length>0?0:1,notApplicable:!i,displayValue:u,details:o,warnings:n}}},due=ax});var B,U,E4,T4=g(()=>{"use strict";d();R();B={notMainFrame:"Navigation happened in a frame other than the main frame.",backForwardCacheDisabled:"Back/forward cache is disabled by flags. Visit chrome://flags/#back-forward-cache to enable it locally on this device.",relatedActiveContentsExist:"The page was opened using '`window.open()`' and another tab has a reference to it, or the page opened a window.",HTTPStatusNotOK:"Only pages with a status code of 2XX can be cached.",schemeNotHTTPOrHTTPS:"Only pages whose URL scheme is HTTP / HTTPS can be cached.",loading:"The page did not finish loading before navigating away.",wasGrantedMediaAccess:"Pages that have granted access to record video or audio are not currently eligible for back/forward cache.",HTTPMethodNotGET:"Only pages loaded via a GET request are eligible for back/forward cache.",subframeIsNavigating:"An iframe on the page started a navigation that did not complete.",timeout:"The page exceeded the maximum time in back/forward cache\ +cc-exp",CREDIT_CARD_TYPE:"cc-type",CREDIT_CARD_VERIFICATION_CODE:"cc-csc",COMPANY_NAME:"organization",PASSWORD:"current-password",ACCOUNT_CREATION_PASSWORD:"new-password",HTML_TYPE_UNSPECIFIED:kn(wn.manualReview),HTML_TYPE_NAME:"name",HTML_TYPE_HONORIFIC_PREFIX:"honorific-prefix",HTML_TYPE_GIVEN_NAME:"given-name",HTML_TYPE_ADDITIONAL_NAME:"additional-name",HTML_TYPE_FAMILY_NAME:"family-name",HTML_TYPE_ORGANIZATION:"organization",HTML_TYPE_STREET_ADDRESS:"street-address",HTML_TYPE_ADDRESS_LINE1:"address-line1",HTML_TYPE_ADDRESS_LINE2:"address-line2",HTML_TYPE_ADDRESS_LINE3:"address-line3",HTML_TYPE_ADDRESS_LEVEL1:"address-level1",HTML_TYPE_ADDRESS_LEVEL2:"address-level2",HTML_TYPE_ADDRESS_LEVEL3:"address-level3",HTML_TYPE_COUNTRY_CODE:"tel-country-code",HTML_TYPE_COUNTRY_NAME:"country-name",HTML_TYPE_POSTAL_CODE:"postal-code",HTML_TYPE_FULL_ADDRESS:"street-address",HTML_TYPE_CREDIT_CARD_NAME_FULL:"cc-name",HTML_TYPE_CREDIT_CARD_NAME_FIRST:"cc-given-name",HTML_TYPE_CREDIT_CARD_NAME_LAST:"\ +cc-family-name",HTML_TYPE_CREDIT_CARD_NUMBER:"cc-number",HTML_TYPE_CREDIT_CARD_EXP:"cc-exp",HTML_TYPE_CREDIT_CARD_EXP_MONTH:"cc-exp-month",HTML_TYPE_CREDIT_CARD_EXP_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE:"cc-csc",HTML_TYPE_CREDIT_CARD_TYPE:"cc-csc",HTML_TYPE_TEL:"tel",HTML_TYPE_TEL_COUNTRY_CODE:"tel-country-code",HTML_TYPE_TEL_NATIONAL:"tel-national",HTML_TYPE_TEL_AREA_CODE:"tel-area-code",HTML_TYPE_TEL_LOCAL:"tel-local",HTML_TYPE_TEL_LOCAL_PREFIX:"tel-local-prefix",HTML_TYPE_TEL_LOCAL_SUFFIX:"tel-local-suffix",HTML_TYPE_TEL_EXTENSION:"tel-extension",HTML_TYPE_EMAIL:"email",HTML_TYPE_ADDITIONAL_NAME_INITIAL:"additional-name-initial",HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR:"cc-exp-year",HTML_TYPE_UPI_VPA:kn(wn.manualReview),HTML_TYPE_ONE_TIME_CODE:"one-time-code",HTML_TYPE_UNRECOGNIZED:kn(wn.manualReview), +HTML_TYPE_TRANSACTION_AMOUNT:"transaction-amount",HTML_TYPE_TRANSACTION_CURRENCY:"transaction-currency"},UT=class extends b{static{s(this,"AutocompleteAudit")}static get meta(){return{id:"autocomplete",title:kn(wn.title),failureTitle:kn(wn.failureTitle),description:kn(wn.description),requiredArtifacts:["Inputs"]}}static checkAttributeValidity(t){if(!t.autocomplete.attribute)return{hasValidTokens:!1};let n=t.autocomplete.attribute.split(" ");for(let r of n)if(r.slice(0,8)!=="section-"&&!Hle.includes(r))return{hasValidTokens:!1};return t.autocomplete.property?{hasValidTokens:!0,isValidOrder:!0}:{hasValidTokens:!0,isValidOrder:!1}}static audit(t){let n=[],r=[],a=!1;for(let u of t.Inputs.inputs){let l=this.checkAttributeValidity(u);if(l.hasValidTokens&&l.isValidOrder||!u.autocomplete.prediction||Wle.includes(u.autocomplete.prediction)&&!u.autocomplete.attribute)continue;a=!0;let m=e9[u.autocomplete.prediction];if(u.autocomplete.attribute||(u.autocomplete.attribute=""),u.autocomplete.attribute&& +r.push(kn(wn.warningInvalid,{token:u.autocomplete.attribute,snippet:u.node.snippet})),l.isValidOrder===!1&&(r.push(kn(wn.warningOrder,{tokens:u.autocomplete.attribute,snippet:u.node.snippet})),m=wn.reviewOrder),!(u.autocomplete.prediction in e9)&&l.isValidOrder){M.warn(`Autocomplete prediction (${u.autocomplete.prediction}) + not found in our mapping`);continue}n.push({node:b.makeNodeItem(u.node),suggestion:m,current:u.autocomplete.attribute})}let o=[{key:"node",valueType:"node",label:kn(F.columnFailingElem)},{key:"current",valueType:"text",label:kn(wn.columnCurrent)},{key:"suggestion",valueType:"text",label:kn(wn.columnSuggestions)}],i=b.makeTableDetails(o,n),c;return n.length>0&&(c=kn(F.displayValueElementsFound,{nodeCount:n.length})),{score:n.length>0?0:1,notApplicable:!a,displayValue:c,details:i,warnings:r}}},Gle=UT});var B,U,r9,a9=g(()=>{"use strict";d();A();B={notMainFrame:"Navigation happened in a frame other than the main frame.",backForwardCacheDisabled:"Back/forward cache is disabled by flags. Visit chrome://flags/#back-forward-cache to enable it locally on this device.",relatedActiveContentsExist:"The page was opened using '`window.open()`' and another tab has a reference to it, or the page opened a window.",HTTPStatusNotOK:"Only pages with a status code of 2XX can be cached.",schemeNotHTTPOrHTTPS:"Only pages whose URL scheme is HTTP / HTTPS can be cached.",loading:"The page did not finish loading before navigating away.",wasGrantedMediaAccess:"Pages that have granted access to record video or audio are not currently eligible for back/forward cache.",HTTPMethodNotGET:"Only pages loaded via a GET request are eligible for back/forward cache.",subframeIsNavigating:"An iframe on the page started a navigation that did not complete.",timeout:"The page exceeded the maximum time in back/forward cache\ and was expired.",cacheLimit:"The page was evicted from the cache to allow another page to be cached.",JavaScriptExecution:"Chrome detected an attempt to execute JavaScript while in the cache.",rendererProcessKilled:"The renderer process for the page in back/forward cache was killed.",rendererProcessCrashed:"The renderer process for the page in back/forward cache crashed.",grantedMediaStreamAccess:"Pages that have granted media stream access are not currently eligible for back/forward cache.",cacheFlushed:"The cache was intentionally cleared.",serviceWorkerVersionActivation:"The page was evicted from back/forward cache due to a service worker activation.",sessionRestored:"Chrome restarted and cleared the back/forward cache entries.",serviceWorkerPostMessage:"A service worker attempted to send the page in back/forward cache a `MessageEvent`.",enteredBackForwardCacheBeforeServiceWorkerHostAdded:"A service worker was activated while the page was in back/forward cache.",serviceWorkerClaim:"\ The page was claimed by a service worker while it is in back/forward cache.",haveInnerContents:"Pages that use portals are not currently eligible for back/forward cache.",timeoutPuttingInCache:"The page timed out entering back/forward cache (likely due to long-running pagehide handlers).",backForwardCacheDisabledByLowMemory:"Back/forward cache is disabled due to insufficient memory.",backForwardCacheDisabledByCommandLine:"Back/forward cache is disabled by the command line.",networkRequestDatapipeDrainedAsBytesConsumer:"Pages that have inflight fetch() or XHR are not currently eligible for back/forward cache.",networkRequestRedirected:"The page was evicted from back/forward cache because an active network request involved a redirect.",networkRequestTimeout:"The page was evicted from the cache because a network connection was open too long. Chrome limits the amount of time that a page may receive data while cached.",networkExceedsBufferLimit:"The page was evicted from the cache because a\ n active network connection received too much data. Chrome limits the amount of data that a page may receive while cached.",navigationCancelledWhileRestoring:"Navigation was cancelled before the page could be restored from back/forward cache.",backForwardCacheDisabledForPrerender:"Back/forward cache is disabled for prerenderer.",userAgentOverrideDiffers:"Browser has changed the user agent override header.",foregroundCacheLimit:"The page was evicted from the cache to allow another page to be cached.",backForwardCacheDisabledForDelegate:"Back/forward cache is not supported by delegate.",unloadHandlerExistsInMainFrame:"The page has an unload handler in the main frame.",unloadHandlerExistsInSubFrame:"The page has an unload handler in a sub frame.",serviceWorkerUnregistration:"ServiceWorker was unregistered while a page was in back/forward cache.",noResponseHead:"Pages that do not have a valid response head cannot enter back/forward cache.",cacheControlNoStore:"Pages with cache-control:no-s\ @@ -1471,7 +1750,7 @@ t currently eligible for back/forward cache.",speechSynthesis:"Pages that use SpeechSynthesis are not currently eligible for back/forward cache.",keyboardLock:"Pages that use Keyboard lock are not currently eligible for back/forward cache.",webOTPService:"Pages that use WebOTPService are not currently eligible for bfcache.",outstandingNetworkRequestDirectSocket:"Pages with an in-flight network request are not currently eligible for back/forward cache.",injectedJavascript:"Pages that `JavaScript` is injected into by extensions are not currently eligible for back/forward cache.",injectedStyleSheet:"Pages that a `StyleSheet` is injected into by extensions are not currently eligible for back/forward cache.",contentSecurityHandler:"Pages that use SecurityHandler are not eligible for back/forward cache.",contentWebAuthenticationAPI:"Pages that use WebAuthentication API are not eligible for back/forward cache.",contentFileChooser:"Pages that use FileChooser API are not eligible for back/forwa\ rd cache.",contentSerial:"Pages that use Serial API are not eligible for back/forward cache.",contentFileSystemAccess:"Pages that use File System Access API are not eligible for back/forward cache.",contentMediaDevicesDispatcherHost:"Pages that use Media Device Dispatcher are not eligible for back/forward cache.",contentWebBluetooth:"Pages that use WebBluetooth API are not eligible for back/forward cache.",contentWebUSB:"Pages that use WebUSB API are not eligible for back/forward cache.",contentMediaSession:"Pages that use MediaSession API and set a playback state are not eligible for back/forward cache.",contentMediaSessionService:"Pages that use MediaSession API and set action handlers are not eligible for back/forward cache.",contentMediaPlay:"A media player was playing upon navigating away.",contentScreenReader:"Back/forward cache is disabled due to screen reader.",embedderPopupBlockerTabHelper:"Popup blocker was present upon navigating away.",embedderSafeBrowsingTriggeredPopupBlocker:"\ Safe Browsing considered this page to be abusive and blocked popup.",embedderSafeBrowsingThreatDetails:"Safe Browsing details were shown upon navigating away.",embedderAppBannerManager:"App Banner was present upon navigating away.",embedderDomDistillerViewerSource:"DOM Distiller Viewer was present upon navigating away.",embedderDomDistillerSelfDeletingRequestDelegate:"DOM distillation was in progress upon navigating away.",embedderOomInterventionTabHelper:"Out-Of-Memory Intervention bar was present upon navigating away.",embedderOfflinePage:"The offline page was shown upon navigating away.",embedderChromePasswordManagerClientBindCredentialManager:"Chrome Password Manager was present upon navigating away.",embedderPermissionRequestManager:"There were permission requests upon navigating away.",embedderModalDialog:"Modal dialog such as form resubmission or http password dialog was shown for the page upon navigating away.",embedderExtensions:"Back/forward cache is disabled due to extension\ -s.",embedderExtensionMessaging:"Back/forward cache is disabled due to extensions using messaging API.",embedderExtensionMessagingForOpenPort:"Extensions with long-lived connection should close the connection before entering back/forward cache.",embedderExtensionSentMessageToCachedFrame:"Extensions with long-lived connection attempted to send messages to frames in back/forward cache.",errorDocument:"Back/forward cache is disabled due to a document error.",fencedFramesEmbedder:"Pages using FencedFrames cannot be stored in bfcache.",keepaliveRequest:"Back/forward cache is disabled due to a keepalive request.",authorizationHeader:"Back/forward cache is disabled due to a keepalive request.",indexedDBEvent:"Back/forward cache is disabled due to an IndexedDB event.",cookieDisabled:"Back/forward cache is disabled because cookies are disabled on a page that uses `Cache-Control: no-store`."},U=D("core/lib/bf-cache-strings.js",B),E4={NotPrimaryMainFrame:{name:U(B.notMainFrame)},BackForwardCacheDisabled:{ +s.",embedderExtensionMessaging:"Back/forward cache is disabled due to extensions using messaging API.",embedderExtensionMessagingForOpenPort:"Extensions with long-lived connection should close the connection before entering back/forward cache.",embedderExtensionSentMessageToCachedFrame:"Extensions with long-lived connection attempted to send messages to frames in back/forward cache.",errorDocument:"Back/forward cache is disabled due to a document error.",fencedFramesEmbedder:"Pages using FencedFrames cannot be stored in bfcache.",keepaliveRequest:"Back/forward cache is disabled due to a keepalive request.",authorizationHeader:"Back/forward cache is disabled due to a keepalive request.",indexedDBEvent:"Back/forward cache is disabled due to an IndexedDB event.",cookieDisabled:"Back/forward cache is disabled because cookies are disabled on a page that uses `Cache-Control: no-store`."},U=D("core/lib/bf-cache-strings.js",B),r9={NotPrimaryMainFrame:{name:U(B.notMainFrame)},BackForwardCacheDisabled:{ name:U(B.backForwardCacheDisabled)},RelatedActiveContentsExist:{name:U(B.relatedActiveContentsExist)},HTTPStatusNotOK:{name:U(B.HTTPStatusNotOK)},SchemeNotHTTPOrHTTPS:{name:U(B.schemeNotHTTPOrHTTPS)},Loading:{name:U(B.loading)},WasGrantedMediaAccess:{name:U(B.wasGrantedMediaAccess)},HTTPMethodNotGET:{name:U(B.HTTPMethodNotGET)},SubframeIsNavigating:{name:U(B.subframeIsNavigating)},Timeout:{name:U(B.timeout)},CacheLimit:{name:U(B.cacheLimit)},JavaScriptExecution:{name:U(B.JavaScriptExecution)},RendererProcessKilled:{name:U(B.rendererProcessKilled)},RendererProcessCrashed:{name:U(B.rendererProcessCrashed)},GrantedMediaStreamAccess:{name:U(B.grantedMediaStreamAccess)},CacheFlushed:{name:U(B.cacheFlushed)},ServiceWorkerVersionActivation:{name:U(B.serviceWorkerVersionActivation)},SessionRestored:{name:U(B.sessionRestored)},ServiceWorkerPostMessage:{name:U(B.serviceWorkerPostMessage)},EnteredBackForwardCacheBeforeServiceWorkerHostAdded:{name:U(B.enteredBackForwardCacheBeforeServiceWorkerHostAdded)}, ServiceWorkerClaim:{name:U(B.serviceWorkerClaim)},HaveInnerContents:{name:U(B.haveInnerContents)},TimeoutPuttingInCache:{name:U(B.timeoutPuttingInCache)},BackForwardCacheDisabledByLowMemory:{name:U(B.backForwardCacheDisabledByLowMemory)},BackForwardCacheDisabledByCommandLine:{name:U(B.backForwardCacheDisabledByCommandLine)},NetworkRequestDatapipeDrainedAsBytesConsumer:{name:U(B.networkRequestDatapipeDrainedAsBytesConsumer)},NetworkRequestRedirected:{name:U(B.networkRequestRedirected)},NetworkRequestTimeout:{name:U(B.networkRequestTimeout)},NetworkExceedsBufferLimit:{name:U(B.networkExceedsBufferLimit)},NavigationCancelledWhileRestoring:{name:U(B.navigationCancelledWhileRestoring)},BackForwardCacheDisabledForPrerender:{name:U(B.backForwardCacheDisabledForPrerender)},UserAgentOverrideDiffers:{name:U(B.userAgentOverrideDiffers)},ForegroundCacheLimit:{name:U(B.foregroundCacheLimit)},BackForwardCacheDisabledForDelegate:{name:U(B.backForwardCacheDisabledForDelegate)},UnloadHandlerExistsInMainFrame:{ name:U(B.unloadHandlerExistsInMainFrame)},UnloadHandlerExistsInSubFrame:{name:U(B.unloadHandlerExistsInSubFrame)},ServiceWorkerUnregistration:{name:U(B.serviceWorkerUnregistration)},NoResponseHead:{name:U(B.noResponseHead)},CacheControlNoStore:{name:U(B.cacheControlNoStore)},CacheControlNoStoreCookieModified:{name:U(B.cacheControlNoStore)},CacheControlNoStoreHTTPOnlyCookieModified:{name:U(B.cacheControlNoStore)},DisableForRenderFrameHostCalled:{name:U(B.ineligibleAPI)},BlocklistedFeatures:{name:U(B.ineligibleAPI)},SchedulerTrackedFeatureUsed:{name:U(B.ineligibleAPI)},DomainNotAllowed:{name:U(B.internalError)},ConflictingBrowsingInstance:{name:U(B.internalError)},NotMostRecentNavigationEntry:{name:U(B.internalError)},IgnoreEventAndEvict:{name:U(B.internalError)},BrowsingInstanceNotSwapped:{name:U(B.internalError)},ActivationNavigationsDisallowedForBug1234857:{name:U(B.internalError)},Unknown:{name:U(B.internalError)},RenderFrameHostReused_SameSite:{name:U(B.internalError)},RenderFrameHostReused_CrossSite:{ @@ -1479,38 +1758,38 @@ requestedVideoCapturePermission)},RequestedBackForwardCacheBlockedSensors:{name:U(B.requestedBackForwardCacheBlockedSensors)},RequestedBackgroundWorkPermission:{name:U(B.requestedBackgroundWorkPermission)},BroadcastChannel:{name:U(B.broadcastChannel)},IndexedDBConnection:{name:U(B.indexedDBConnection)},WebXR:{name:U(B.webXR)},SharedWorker:{name:U(B.sharedWorker)},WebLocks:{name:U(B.webLocks)},WebHID:{name:U(B.webHID)},WebShare:{name:U(B.webShare)},RequestedStorageAccessGrant:{name:U(B.requestedStorageAccessGrant)},WebNfc:{name:U(B.webNfc)},OutstandingNetworkRequestFetch:{name:U(B.outstandingNetworkRequestFetch)},OutstandingNetworkRequestXHR:{name:U(B.outstandingNetworkRequestXHR)},AppBanner:{name:U(B.appBanner)},Printing:{name:U(B.printing)},WebDatabase:{name:U(B.webDatabase)},PictureInPicture:{name:U(B.pictureInPicture)},Portal:{name:U(B.portal)},SpeechRecognizer:{name:U(B.speechRecognizer)},IdleManager:{name:U(B.idleManager)},PaymentManager:{name:U(B.paymentManager)},SpeechSynthesis:{ name:U(B.speechSynthesis)},KeyboardLock:{name:U(B.keyboardLock)},WebOTPService:{name:U(B.webOTPService)},OutstandingNetworkRequestDirectSocket:{name:U(B.outstandingNetworkRequestDirectSocket)},InjectedJavascript:{name:U(B.injectedJavascript)},InjectedStyleSheet:{name:U(B.injectedStyleSheet)},Dummy:{name:U(B.internalError)},ContentSecurityHandler:{name:U(B.contentSecurityHandler)},ContentWebAuthenticationAPI:{name:U(B.contentWebAuthenticationAPI)},ContentFileChooser:{name:U(B.contentFileChooser)},ContentSerial:{name:U(B.contentSerial)},ContentFileSystemAccess:{name:U(B.contentFileSystemAccess)},ContentMediaDevicesDispatcherHost:{name:U(B.contentMediaDevicesDispatcherHost)},ContentWebBluetooth:{name:U(B.contentWebBluetooth)},ContentWebUSB:{name:U(B.contentWebUSB)},ContentMediaSession:{name:U(B.contentMediaSession)},ContentMediaSessionService:{name:U(B.contentMediaSessionService)},ContentMediaPlay:{name:U(B.contentMediaPlay)},ContentScreenReader:{name:U(B.contentScreenReader)},EmbedderPopupBlockerTabHelper:{ name:U(B.embedderPopupBlockerTabHelper)},EmbedderSafeBrowsingTriggeredPopupBlocker:{name:U(B.embedderSafeBrowsingTriggeredPopupBlocker)},EmbedderSafeBrowsingThreatDetails:{name:U(B.embedderSafeBrowsingThreatDetails)},EmbedderAppBannerManager:{name:U(B.embedderAppBannerManager)},EmbedderDomDistillerViewerSource:{name:U(B.embedderDomDistillerViewerSource)},EmbedderDomDistillerSelfDeletingRequestDelegate:{name:U(B.embedderDomDistillerSelfDeletingRequestDelegate)},EmbedderOomInterventionTabHelper:{name:U(B.embedderOomInterventionTabHelper)},EmbedderOfflinePage:{name:U(B.embedderOfflinePage)},EmbedderChromePasswordManagerClientBindCredentialManager:{name:U(B.embedderChromePasswordManagerClientBindCredentialManager)},EmbedderPermissionRequestManager:{name:U(B.embedderPermissionRequestManager)},EmbedderModalDialog:{name:U(B.embedderModalDialog)},EmbedderExtensions:{name:U(B.embedderExtensions)},EmbedderExtensionMessaging:{name:U(B.embedderExtensionMessaging)},EmbedderExtensionMessagingForOpenPort:{ -name:U(B.embedderExtensionMessagingForOpenPort)},EmbedderExtensionSentMessageToCachedFrame:{name:U(B.embedderExtensionSentMessageToCachedFrame)},ErrorDocument:{name:U(B.errorDocument)},FencedFramesEmbedder:{name:U(B.fencedFramesEmbedder)},KeepaliveRequest:{name:U(B.keepaliveRequest)},AuthorizationHeader:{name:U(B.authorizationHeader)},IndexedDBEvent:{name:U(B.indexedDBEvent)},CookieDisabled:{name:U(B.cookieDisabled)}}});var x4={};x(x4,{UIStrings:()=>Xr,default:()=>fue});var Xr,jn,pue,mue,ox,fue,S4=g(()=>{"use strict";d();V();R();T4();Xr={title:"Page didn't prevent back/forward cache restoration",failureTitle:"Page prevented back/forward cache restoration",description:"Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache (bfcache) can speed up these return navigations. [Learn more about the bfcache](https://developer.chrome.com/docs/lighthouse/performance/bf-cache/)",actionableFailureType:"Actionable",notActionableFailureType:"Not actionable",supportPendingFailureType:"Pending browser support",failureReasonColumn:"Failure reason",failureTypeColumn:"Failure type",warningHeadless:'Back/forward cache cannot be tested in old Headless Chrome (`--chrome-flags="--headless=old"`). To see audit results, use the new Headless Chrome (`--chrome-flags="--headless=new"`) or standard Chrome.',displayValue:`{itemCount, plural, +name:U(B.embedderExtensionMessagingForOpenPort)},EmbedderExtensionSentMessageToCachedFrame:{name:U(B.embedderExtensionSentMessageToCachedFrame)},ErrorDocument:{name:U(B.errorDocument)},FencedFramesEmbedder:{name:U(B.fencedFramesEmbedder)},KeepaliveRequest:{name:U(B.keepaliveRequest)},AuthorizationHeader:{name:U(B.authorizationHeader)},IndexedDBEvent:{name:U(B.indexedDBEvent)},CookieDisabled:{name:U(B.cookieDisabled)}}});var o9={};T(o9,{UIStrings:()=>or,default:()=>Yle});var or,Yr,Vle,$le,jT,Yle,i9=g(()=>{"use strict";d();V();A();a9();or={title:"Page didn't prevent back/forward cache restoration",failureTitle:"Page prevented back/forward cache restoration",description:"Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache (bfcache) can speed up these return navigations. [Learn more about the bfcache](https://developer.chrome.com/docs/lighthouse/performance/bf-cache/)",actionableFailureType:"Actionable",notActionableFailureType:"Not actionable",supportPendingFailureType:"Pending browser support",failureReasonColumn:"Failure reason",failureTypeColumn:"Failure type",warningHeadless:'Back/forward cache cannot be tested in old Headless Chrome (`--chrome-flags="--headless=old"`). To see audit results, use the new Headless Chrome (`--chrome-flags="--headless=new"`) or standard Chrome.',displayValue:`{itemCount, plural, =1 {1 failure reason} other {# failure reasons} - }`},jn=D("core/audits/bf-cache.js",Xr),pue=["PageSupportNeeded","SupportPending","Circumstantial"],mue={PageSupportNeeded:jn(Xr.actionableFailureType),Circumstantial:jn(Xr.notActionableFailureType),SupportPending:jn(Xr.supportPendingFailureType)},ox=class extends v{static{s(this,"BFCache")}static get meta(){return{id:"bf-cache",title:jn(Xr.title),failureTitle:jn(Xr.failureTitle),description:jn(Xr.description),supportedModes:["navigation","timespan"],guidanceLevel:4,requiredArtifacts:["BFCacheFailures","HostProduct"],scoreDisplayMode:v.SCORING_MODES.BINARY}}static async audit(t){if(/HeadlessChrome/.test(t.HostProduct))return{score:null,notApplicable:!0,warnings:[jn(Xr.warningHeadless)]};let r=t.BFCacheFailures;if(!r.length)return{score:1};let{notRestoredReasonsTree:n}=r[0],i=0,a=[];for(let c of pue){let p=n[c];for(let[m,f]of Object.entries(p))i+=f.length,a.push({reason:E4[m]?.name??m,failureType:mue[c],subItems:{type:"subitems",items:f.map(h=>({frameUrl:h}))},protocolReason:m})}let o=[ -{key:"reason",valueType:"text",subItemsHeading:{key:"frameUrl",valueType:"url"},label:jn(Xr.failureReasonColumn)},{key:"failureType",valueType:"text",label:jn(Xr.failureTypeColumn)}],u=v.makeTableDetails(o,a),l=i?jn(Xr.displayValue,{itemCount:i}):void 0;return{score:a.length?0:1,displayValue:l,details:u}}},fue=ox});var Tr,sx,Sd=g(()=>{"use strict";d();Tr={parseHTML:{id:"parseHTML",label:"Parse HTML & CSS",traceEventNames:["ParseHTML","ParseAuthorStyleSheet"]},styleLayout:{id:"styleLayout",label:"Style & Layout",traceEventNames:["ScheduleStyleRecalculation","UpdateLayoutTree","InvalidateLayout","Layout"]},paintCompositeRender:{id:"paintCompositeRender",label:"Rendering",traceEventNames:["Animation","HitTest","PaintSetup","Paint","PaintImage","RasterTask","ScrollLayer","UpdateLayer","UpdateLayerTree","CompositeLayers","PrePaint"]},scriptParseCompile:{id:"scriptParseCompile",label:"Script Parsing & Compilation",traceEventNames:["v8.compile","v8.compileModule","v8.parseOnBackground"]},scriptEvaluation:{id:"scriptEvaluation",label:"Script Evaluation",traceEventNames:["EventDispatch","EvaluateScript","v8.evaluateModule","FunctionCall","TimerFire","FireIdleCallback","FireAnimationFrame","RunMicrotasks","V8.Execute"]},garbageCollection:{id:"garbageCollection",label:"Garbage Collection",traceEventNames:["\ -MinorGC","MajorGC","BlinkGC.AtomicPhase","ThreadState::performIdleLazySweep","ThreadState::completeSweep","BlinkGCMarking"]},other:{id:"other",label:"Other",traceEventNames:["MessageLoop::RunTask","TaskQueueManager::ProcessTaskFromWorkQueue","ThreadControllerImpl::DoWork"]}},sx={};for(let e of Object.values(Tr))for(let t of e.traceEventNames)sx[t]=e});var Bs,ux=g(()=>{"use strict";d();or();Sd();Bs=class e{static{s(this,"MainThreadTasks")}static _createNewTaskNode(t,r){let n=t.ph==="X"&&!r,i=t.ph==="B"&&r&&r.ph==="E";if(!n&&!i)throw new Error("Invalid parameters for _createNewTaskNode");let a=t.ts,o=r?r.ts:t.ts+Number(t.dur||0);return{event:t,endEvent:r,startTime:a,endTime:o,duration:o-a,unbounded:!1,parent:void 0,children:[],attributableURLs:[],group:Tr.other,selfTime:NaN}}static _assignAllTimersUntilTs(t,r,n,i){for(;i.length;){let a=i.pop();if(!a)break;if(a.ts>r){i.push(a);break}if(a.ts<t.startTime)continue;let o=a.args.data.timerId;n.timers.set(o,t)}}static _createTasksFromStartAndEndEvents(t,r,n){let i=[],a=r.slice().reverse();for(let o=0;o<t.length;o++){let u=t[o];if(u.ph==="X"){i.push(e._createNewTaskNode(u));continue}let l=-1,c=0,p=o+1;for(let y=a.length-1;y>=0;y--){let b=a[y];for(;p<t.length&&!(t[p].ts>=b.ts);p++)t[p].name===u.name&&c++;if(b.name===u.name&&!(b.ts<u.ts)){if(c>0){c--;continue}l=y;break}}let m,f=!1;l===-1?(m={...u, -ph:"E",ts:n},f=!0):l===a.length-1?m=a.pop():m=a.splice(l,1)[0];let h=e._createNewTaskNode(u,m);h.unbounded=f,i.push(h)}if(a.length)throw new Error(`Fatal trace logic error - ${a.length} unmatched end events`);return i}static _createTaskRelationships(t,r,n){let i,a=r.slice().reverse();for(let o=0;o<t.length;o++){let u=t[o];if(u.event.name==="XHRReadyStateChange"){let l=u.event.args.data,c=l?.url;l&&c&&l.readyState===1&&n.xhrs.set(c,u)}for(;i&&Number.isFinite(i.endTime)&&i.endTime<=u.startTime;)e._assignAllTimersUntilTs(i,i.endTime,n,a),i=i.parent;if(i){if(u.endTime>i.endTime){let l=u.endTime-i.endTime;if(l<1e3)i.endTime=u.endTime,i.duration+=l;else if(u.unbounded)u.endTime=i.endTime,u.duration=u.endTime-u.startTime;else if(u.startTime-i.startTime<1e3&&!i.children.length){let c=u,p=i,m=i.parent;if(m){let f=m.children.length-1;if(m.children[f]!==p)throw new Error("Fatal trace logic error - impossible children");m.children.pop(),m.children.push(c)}c.parent=m,c.startTime=p.startTime,c.duration= -c.endTime-c.startTime,i=c,u=p}else{let c=new Error("Fatal trace logic error - child cannot end after parent");throw c.timeDelta=l,c.nextTaskEvent=u.event,c.nextTaskEndEvent=u.endEvent,c.nextTaskEndTime=u.endTime,c.currentTaskEvent=i.event,c.currentTaskEndEvent=i.endEvent,c.currentTaskEndTime=i.endTime,c}}u.parent=i,i.children.push(u),e._assignAllTimersUntilTs(i,u.startTime,n,a)}i=u}i&&e._assignAllTimersUntilTs(i,i.endTime,n,a)}static _createTasksFromEvents(t,r,n){let i=[],a=[],o=[];for(let c of t)(c.ph==="X"||c.ph==="B")&&i.push(c),c.ph==="E"&&a.push(c),c.name==="TimerInstall"&&o.push(c);let l=e._createTasksFromStartAndEndEvents(i,a,n).sort((c,p)=>c.startTime-p.startTime||p.duration-c.duration);return e._createTaskRelationships(l,o,r),l.sort((c,p)=>c.startTime-p.startTime||p.duration-c.duration)}static _computeRecursiveSelfTime(t,r){if(r&&t.endTime>r.endTime)throw new Error("Fatal trace logic error - child cannot end after parent");let n=t.children.map(i=>e._computeRecursiveSelfTime(i, -t)).reduce((i,a)=>i+a,0);return t.selfTime=t.duration-n,t.duration}static _computeRecursiveAttributableURLs(t,r,n,i){let a=t.event.args,o={...a.beginData||{},...a.data||{}},u=o.frame||"",l=i.frameURLsById.get(u),c=(o.stackTrace||[]).map(h=>h.url),p=c[0];u&&l&&l.startsWith("about:")&&p&&(i.frameURLsById.set(u,p),l=p);let m=[];switch(t.event.name){case"v8.compile":case"EvaluateScript":case"FunctionCall":m=[o.url,l];break;case"v8.compileModule":m=[t.event.args.fileName];break;case"TimerFire":{let h=t.event.args.data.timerId,y=i.timers.get(h);if(!y)break;m=y.attributableURLs;break}case"ParseHTML":m=[o.url,l];break;case"ParseAuthorStyleSheet":m=[o.styleSheetUrl,l];break;case"UpdateLayoutTree":case"Layout":case"Paint":if(l){m=[l];break}if(n.length)break;m=i.lastTaskURLs;break;case"XHRReadyStateChange":case"XHRLoad":{let h=o.url,y=o.readyState;if(!h||typeof y=="number"&&y!==4)break;let b=i.xhrs.get(h);if(!b)break;m=b.attributableURLs;break}default:m=[];break}let f=Array.from(r);for(let h of[...m, -...c])h&&(n.includes(h)||n.push(h),f[f.length-1]!==h&&f.push(h));t.attributableURLs=f,t.children.forEach(h=>e._computeRecursiveAttributableURLs(h,f,n,i)),!f.length&&!t.parent&&n.length&&e._setRecursiveEmptyAttributableURLs(t,n)}static _setRecursiveEmptyAttributableURLs(t,r){t.attributableURLs.length||(t.attributableURLs=r.slice(),t.children.forEach(n=>e._setRecursiveEmptyAttributableURLs(n,r)))}static _computeRecursiveTaskGroup(t,r){let n=sx[t.event.name];t.group=n||r||Tr.other,t.children.forEach(i=>e._computeRecursiveTaskGroup(i,t.group))}static getMainThreadTasks(t,r,n,i){let a=new Map,o=new Map,u=new Map;r.forEach(({id:f,url:h})=>u.set(f,h));let c={timers:a,xhrs:o,frameURLsById:u,lastTaskURLs:[]},p=e._createTasksFromEvents(t,c,n);for(let f of p)f.parent||(e._computeRecursiveSelfTime(f,void 0),e._computeRecursiveAttributableURLs(f,[],[],c),e._computeRecursiveTaskGroup(f),c.lastTaskURLs=f.attributableURLs);let m=i??p[0].startTime;for(let f of p)if(f.startTime=(f.startTime-m)/1e3,f.endTime= -(f.endTime-m)/1e3,f.duration/=1e3,f.selfTime/=1e3,!Number.isFinite(f.selfTime))throw new Error("Invalid task timing data");return p}static printTaskTreeToDebugString(t,r={}){let n=Math.max(...t.map(b=>b.endTime),0),{printWidth:i=100,startTime:a=0,endTime:o=n,taskLabelFn:u=s(b=>b.event.name,"taskLabelFn")}=r;function l(b){let w=0;for(;b.parent;b=b.parent)w++;return w}s(l,"computeTaskDepth");let p=(o-a)/i,m=new Map,f=new Map;for(let b of t){if(b.startTime>o||b.endTime<a)continue;let w=l(b),E=f.get(w)||[];E.push(b),f.set(w,E);let T=String.fromCharCode(65+m.size%26);m.set(b,{id:T,task:b})}let h=[`Trace Duration: ${n.toFixed(0)}ms`,`Range: [${a}, ${o}]`,`█ = ${p.toFixed(2)}ms`,""],y=Array.from(f.entries()).sort((b,w)=>b[0]-w[0]);for(let[,b]of y){let w=Array.from({length:i}).map(()=>" ");for(let E of b){let T=Math.max(E.startTime,a),S=Math.min(E.endTime,o),{id:C}=m.get(E)||{id:"?"},_=Math.floor(T/p),L=Math.floor(S/p),M=Math.floor((_+L)/2);for(let H=_;H<=L;H++)w[H]="█";for(let H=0;H<C.length;H++) -w[M]=C}h.push(w.join(""))}h.push("");for(let{id:b,task:w}of m.values())h.push(`${b} = ${u(w)}`);return h.join(` -`)}}});var lx,Qr,Eo=g(()=>{"use strict";d();De();ux();Bt();lx=class{static{s(this,"MainThreadTasks")}static async compute_(t,r){let{mainThreadEvents:n,frames:i,timestamps:a}=await xe.request(t,r);return Bs.getMainThreadTasks(n,i,a.traceEnd,a.timeOrigin)}},Qr=G(lx,null)});function Cd(e){let t=new Set;for(let r of e)r.resourceType===K.TYPES.Script&&t.add(r.url);return t}function Us(e,t){let r=e.attributableURLs.find(a=>t.has(a)),n=e.attributableURLs[0],i=r||n;return(!i||i==="about:blank")&&(hue.has(e.event.name)?i="Browser":gue.has(e.event.name)?i="Browser GC":i="Unattributable"),i}function C1(e,t){let r=Cd(t),n=new Map;for(let i of e){let a=Us(i,r),o=n.get(a)||{},u=o[i.group.id]||0;o[i.group.id]=u+i.selfTime,n.set(a,o)}return n}var hue,gue,Fd=g(()=>{"use strict";d();Ot();hue=new Set(["CpuProfiler::StartProfiling"]),gue=new Set(["V8.GCCompactor","MajorGC","MinorGC"]);s(Cd,"getJavaScriptURLs");s(Us,"getAttributableURLForTask");s(C1,"getExecutionTimingsByURL")});var cx,js,dx=g(()=>{"use strict";d();ri();Bt();Ei();at();cx=class{static{s(this,"Metric")}constructor(){}static getMetricComputationInput(t){return{trace:t.trace,devtoolsLog:t.devtoolsLog,gatherContext:t.gatherContext,settings:t.settings,URL:t.URL}}static computeSimulatedMetric(t,r){throw new Error("Unimplemented")}static computeObservedMetric(t,r){throw new Error("Unimplemented")}static async compute_(t,r){let{trace:n,devtoolsLog:i,settings:a,gatherContext:o}=t;if(!n||!i||!a)throw new Error("Did not provide necessary metric computation data");let u=await xe.request(n,r),l=o.gatherMode==="timespan"?void 0:await pr.request(n,r),c=Object.assign({networkRecords:await ie.request(i,r),gatherContext:o,processedTrace:u,processedNavigation:l},t);switch(tr.assertHasToplevelEvents(c.processedTrace.mainThreadEvents),a.throttlingMethod){case"simulate":if(o.gatherMode!=="navigation")throw new Error(`${o.gatherMode} does not support throttlingMethod simulate`);return this.computeSimulatedMetric(c,r);case"\ -provided":case"devtools":return this.computeObservedMetric(c,r);default:throw new TypeError(`Unrecognized throttling method: ${a.throttlingMethod}`)}}},js=cx});var At,Ti=g(()=>{"use strict";d();dx();At=class extends js{static{s(this,"NavigationMetric")}static computeSimulatedMetric(t,r){throw new Error("Unimplemented")}static computeObservedMetric(t,r){throw new Error("Unimplemented")}static async compute_(t,r){if(t.gatherContext.gatherMode!=="navigation")throw new Error(`${this.name} can only be computed on navigations`);return super.compute_(t,r)}}});var px,yn,qs=g(()=>{"use strict";d();It();De();Ot();Bt();at();vo();px=class{static{s(this,"PageDependencyGraph")}static async compute_(t,r){let{trace:n,devtoolsLog:i,URL:a}=t,[{mainThreadEvents:o},u]=await Promise.all([xe.request(n,r),ie.request(i,r)]);if(t.fromTrace){let p=(await Jr.request({trace:n},r)).data,m=bi.createNetworkRequests(n,p);return bi.createGraph(m,n,p,a)}let l=u.map(K.asLanternNetworkRequest);return qt.PageDependencyGraph.createGraph(o,l,a)}},yn=G(px,["devtoolsLog","trace","URL","fromTrace"])});async function yue(e,t){if(e.gatherContext.gatherMode!=="navigation")throw new Error("Lantern metrics can only be computed on navigations");let r=await yn.request(e,t),n=await pr.request(e.trace,t);return{simulator:e.simulator||await Jt.request(e,t),graph:r,processedNavigation:n}}async function vue(e,t){if(e.gatherContext.gatherMode!=="navigation")throw new Error("Lantern metrics can only be computed on navigations");let r=await yn.request({...e,fromTrace:!0},t),n=await Jr.request(e,t),i=bi.createProcessedNavigation(n.data);return{simulator:e.simulator||await Jt.request(e,t),graph:r,processedNavigation:i}}function qn(e){if(!(e instanceof st.LanternError))throw e;let t=e.message;throw z.errors[t]?new z(z.errors[t]):e}function en(e,t){return process.env.INTERNAL_LANTERN_USE_TRACE!==void 0?vue(e,t):yue(e,t)}var To=g(()=>{"use strict";d();It();zt();Bn();Ei();qs();vo();s(yue,"getComputationDataParamsFromDevtoolsLog");s(vue,"getComputationDataParamsFromTrace");s(qn,"lanternErrorAdapter");s(en, -"getComputationDataParams")});var mx,Zt,zn=g(()=>{"use strict";d();It();De();To();mx=class extends Rt.FirstContentfulPaint{static{s(this,"LanternFirstContentfulPaint")}static async computeMetricWithGraphs(t,r,n){let i=await en(t,r);return Promise.resolve(this.compute(i,n)).catch(qn)}static async compute_(t,r){return this.computeMetricWithGraphs(t,r)}},Zt=G(mx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var fx,ca,kd=g(()=>{"use strict";d();De();Ti();zn();fx=class extends At{static{s(this,"FirstContentfulPaint")}static computeSimulatedMetric(t,r){let n=At.getMetricComputationInput(t);return Zt.request(n,r)}static async computeObservedMetric(t){let{processedNavigation:r}=t;return{timing:r.timings.firstContentfulPaint,timestamp:r.timestamps.firstContentfulPaint}}},ca=G(fx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var hx,Ir,da=g(()=>{"use strict";d();It();De();To();zn();hx=class extends Rt.LargestContentfulPaint{static{s(this,"LanternLargestContentfulPaint")}static async computeMetricWithGraphs(t,r,n){let i=await en(t,r);return Promise.resolve(this.compute(i,n)).catch(qn)}static async compute_(t,r){let n=await Zt.request(t,r);return this.computeMetricWithGraphs(t,r,{fcpResult:n})}},Ir=G(hx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var gx,pa,_d=g(()=>{"use strict";d();It();De();da();To();gx=class extends Rt.Interactive{static{s(this,"LanternInteractive")}static async computeMetricWithGraphs(t,r,n){let i=await en(t,r);return Promise.resolve(this.compute(i,n)).catch(qn)}static async compute_(t,r){let n=await Ir.request(t,r);return this.computeMetricWithGraphs(t,r,{lcpResult:n})}},pa=G(gx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var bue,zs,yx=g(()=>{"use strict";d();ti();Ne();or();iw();Ot();ut();bue=Ge,zs=class extends bue{static{s(this,"NetworkMonitor")}_networkRecorder=void 0;_frameNavigations=[];constructor(t){super(),this._targetManager=t,this._session=t.rootSession(),this._onFrameNavigated=r=>this._frameNavigations.push(r.frame),this._onProtocolMessage=r=>{this._networkRecorder&&this._networkRecorder.dispatch(r)}}async enable(){if(this._networkRecorder)return;this._frameNavigations=[],this._networkRecorder=new As;let t=s(r=>n=>{this.emit(r,n),this._emitNetworkStatus()},"reEmit");this._networkRecorder.on("requeststarted",t("requeststarted")),this._networkRecorder.on("requestfinished",t("requestfinished")),this._session.on("Page.frameNavigated",this._onFrameNavigated),this._targetManager.on("protocolevent",this._onProtocolMessage)}async disable(){this._networkRecorder&&(this._session.off("Page.frameNavigated",this._onFrameNavigated),this._targetManager.off("protocolevent",this._onProtocolMessage),this._frameNavigations= -[],this._networkRecorder=void 0)}async getNavigationUrls(){let t=this._frameNavigations;if(!t.length)return{};let r=t.filter(i=>!i.parentId);r.length||N.warn("NetworkMonitor","No detected navigations");let n=r[0]?.url;if(this._networkRecorder){let a=this._networkRecorder.getRawRecords().find(o=>o.url===n);for(;a?.redirectSource;)a=a.redirectSource,n=a.url}return{requestedUrl:n,mainDocumentUrl:r[r.length-1]?.url}}getInflightRequests(){return this._networkRecorder?this._networkRecorder.getRawRecords().filter(t=>!t.finished):[]}isIdle(){return this._isIdlePeriod(0)}isCriticalIdle(){if(!this._networkRecorder)return!1;let n=this._networkRecorder.getRawRecords().find(i=>i.resourceType==="Document")?.frameId;return this._isIdlePeriod(0,i=>i.frameId===n&&i.resourceType!=="WebSocket"&&i.resourceType!=="EventSource"&&(i.priority==="VeryHigh"||i.priority==="High"))}is2Idle(){return this._isIdlePeriod(2)}_isIdlePeriod(t,r){if(!this._networkRecorder)return!1;let n=this._networkRecorder.getRawRecords(), -i=0;for(let a=0;a<n.length;a++){let o=n[a];o.finished||r?.(o)!==!1&&(K.isNonNetworkRequest(o)||i++)}return i<=t}_emitNetworkStatus(){let t=this.isIdle(),r=this.is2Idle(),n=this.isCriticalIdle();this.emit(t?"networkidle":"networkbusy"),this.emit(r?"network-2-idle":"network-2-busy"),this.emit(n?"network-critical-idle":"network-critical-busy"),r&&t?N.verbose("NetworkRecorder","network fully-quiet"):r&&!t?N.verbose("NetworkRecorder","network semi-quiet"):N.verbose("NetworkRecorder","network busy")}static findNetworkQuietPeriods(t,r,n=1/0){let i=[];t.forEach(l=>{J.isNonNetworkProtocol(l.protocol)||l.protocol==="ws"||l.protocol==="wss"||(i.push({time:l.networkRequestTime,isStart:!0}),l.finished&&i.push({time:l.networkEndTime,isStart:!1}))}),i=i.filter(l=>l.time<=n).sort((l,c)=>l.time-c.time);let a=0,o=0,u=[];return i.forEach(l=>{l.isStart?(a===r&&u.push({start:o,end:l.time}),a++):(a--,a===r&&(o=l.time))}),a<=r&&u.push({start:o,end:n}),u.filter(l=>l.start!==l.end)}}});var F1,wue,vx,Hn,Hs=g(()=>{"use strict";d();De();Ti();_d();yx();ri();zt();F1=5e3,wue=2,vx=class e extends At{static{s(this,"Interactive")}static _findNetworkQuietPeriods(t,r){let n=r.timestamps.traceEnd/1e3,i=t.filter(a=>a.finished&&a.requestMethod==="GET"&&!a.failed&&a.statusCode<400);return zs.findNetworkQuietPeriods(i,wue,n)}static _findCPUQuietPeriods(t,r){let n=r.timestamps.timeOrigin/1e3,i=r.timestamps.traceEnd/1e3;if(t.length===0)return[{start:0,end:i}];let a=[];return t.forEach((o,u)=>{u===0&&a.push({start:0,end:o.start+n}),u===t.length-1?a.push({start:o.end+n,end:i}):a.push({start:o.end+n,end:t[u+1].start+n})}),a}static findOverlappingQuietPeriods(t,r,n){let i=n.timestamps.firstContentfulPaint/1e3,a=s(f=>f.end>i+F1&&f.end-f.start>=F1,"isLongEnoughQuietPeriod"),o=this._findNetworkQuietPeriods(r,n).filter(a),u=this._findCPUQuietPeriods(t,n).filter(a),l=u.slice(),c=o.slice(),p=l.shift(),m=c.shift();for(;p&&m;)if(p.start>=m.start){if(m.end>=p.start+F1)return{cpuQuietPeriod:p,networkQuietPeriod:m, -cpuQuietPeriods:u,networkQuietPeriods:o};m=c.shift()}else{if(p.end>=m.start+F1)return{cpuQuietPeriod:p,networkQuietPeriod:m,cpuQuietPeriods:u,networkQuietPeriods:o};p=l.shift()}throw new z(p?z.errors.NO_TTI_NETWORK_IDLE_PERIOD:z.errors.NO_TTI_CPU_IDLE_PERIOD)}static computeSimulatedMetric(t,r){let n=At.getMetricComputationInput(t);return pa.request(n,r)}static computeObservedMetric(t){let{processedTrace:r,processedNavigation:n,networkRecords:i}=t;if(!n.timestamps.domContentLoaded)throw new z(z.errors.NO_DCL);let a=tr.getMainThreadTopLevelEvents(r).filter(p=>p.duration>=50),u=e.findOverlappingQuietPeriods(a,i,n).cpuQuietPeriod,l=Math.max(u.start,n.timestamps.firstContentfulPaint/1e3,n.timestamps.domContentLoaded/1e3)*1e3,c=(l-n.timestamps.timeOrigin)/1e3;return Promise.resolve({timing:c,timestamp:l})}},Hn=G(vx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var bx,C4,F4=g(()=>{"use strict";d();It();De();zn();_d();To();bx=class extends Rt.TotalBlockingTime{static{s(this,"LanternTotalBlockingTime")}static async computeMetricWithGraphs(t,r,n){return this.compute(await en(t,r),n)}static async compute_(t,r){let n=await Zt.request(t,r),i=await pa.request(t,r);return this.computeMetricWithGraphs(t,r,{fcpResult:n,interactiveResult:i})}},C4=G(bx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var k4,wx,Wn,Ws=g(()=>{"use strict";d();It();De();dx();ri();F4();Hs();({calculateSumOfBlockingTime:k4}=Rt.TBTUtils),wx=class extends js{static{s(this,"TotalBlockingTime")}static computeSimulatedMetric(t,r){let n=js.getMetricComputationInput(t);return C4.request(n,r)}static async computeObservedMetric(t,r){let n=tr.getMainThreadTopLevelEvents(t.processedTrace);if(t.processedNavigation){let{firstContentfulPaint:i}=t.processedNavigation.timings,a=js.getMetricComputationInput(t),o=(await Hn.request(a,r)).timing;return{timing:k4(n,i,o)}}else return{timing:k4(n,0,t.processedTrace.timings.traceEnd)}}},Wn=G(wx,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var Gs,Dx,ma,Rd=g(()=>{"use strict";d();It();De();Eo();kd();Hs();Ws();Bt();({calculateTbtImpactForEvent:Gs}=Rt.TBTUtils),Dx=class{static{s(this,"TBTImpactTasks")}static getTopLevelTask(t){let r=t;for(;r.parent;)r=r.parent;return r}static async getTbtBounds(t,r){let n=await xe.request(t.trace,r);if(t.gatherContext.gatherMode!=="navigation")return{startTimeMs:0,endTimeMs:n.timings.traceEnd};let i=await ca.request(t,r),a=await Hn.request(t,r),o=i.timing,u=a.timing;return"optimisticEstimate"in i&&(o=i.optimisticEstimate.timeInMs),"pessimisticEstimate"in a&&(u=a.pessimisticEstimate.timeInMs),{startTimeMs:o,endTimeMs:u}}static createImpactTasks(t,r,n){let i=[];for(let a of t){let o=r.get(a)||0,u=o,c=n.get(a)||0;for(let p of a.children){let m=r.get(p)||0;u-=m;let f=n.get(p)||0;c-=f}i.push({...a,tbtImpact:Math.max(o,0),selfTbtImpact:Math.max(u,0),selfBlockingTime:Math.max(c,0)})}return i}static computeImpactsFromObservedTasks(t,r,n){let i=new Map,a=new Map;for(let o of t){let u={start:o.startTime, -end:o.endTime,duration:o.duration},l=this.getTopLevelTask(o),c={start:l.startTime,end:l.endTime,duration:l.duration},p=Gs(u,r,n,c),m=Gs(u,-1/0,1/0,c);i.set(o,p),a.set(o,m)}return this.createImpactTasks(t,i,a)}static computeImpactsFromLantern(t,r,n,i){let a=new Map,o=new Map,u=new Map,l=new Map;for(let c of t)l.set(c.event,c);for(let[c,p]of r){if(c.type!=="cpu")continue;let m={start:p.startTime,end:p.endTime,duration:p.duration},f=Gs(m,n,i),h=Gs(m,-1/0,1/0),y=l.get(c.event);y&&(u.set(y,m),a.set(y,f),o.set(y,h))}for(let c of t){if(a.has(c)||o.has(c))continue;let p=this.getTopLevelTask(c),m=u.get(p);if(!m)continue;let h=(c.startTime-p.startTime)/p.duration*m.duration+m.start,y=(p.endTime-c.endTime)/p.duration,b=m.end-y*m.duration,w={start:h,end:b,duration:b-h},E=Gs(w,n,i,m),T=Gs(w,-1/0,1/0,m);a.set(c,E),o.set(c,T)}return this.createImpactTasks(t,a,o)}static async compute_(t,r){let n=await Wn.request(t,r),i=await Qr.request(t.trace,r),{startTimeMs:a,endTimeMs:o}=await this.getTbtBounds(t,r); -return"pessimisticEstimate"in n?this.computeImpactsFromLantern(i,n.pessimisticEstimate.nodeTimings,a,o):this.computeImpactsFromObservedTasks(i,a,o)}},ma=G(Dx,["trace","devtoolsLog","URL","gatherContext","settings","simulator"])});var _4={};x(_4,{UIStrings:()=>Si,default:()=>Due});var Si,xi,Ex,Due,R4=g(()=>{"use strict";d();Ne();V();Sd();R();at();Eo();Fd();Rd();Kr();Pr();Si={title:"JavaScript execution time",failureTitle:"Reduce JavaScript execution time",description:"Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).",columnTotal:"Total CPU Time",columnScriptEval:"Script Evaluation",columnScriptParse:"Script Parse",chromeExtensionsWarning:"Chrome extensions negatively affected this page's load performance. Try auditing the page in incognito mode or from a Chrome profile without extensions."},xi=D("core/audits/bootup-time.js",Si),Ex=class e extends v{static{s(this,"BootupTime")}static get meta(){return{id:"bootup-time",title:xi(Si.title),failureTitle:xi(Si.failureTitle),description:xi(Si.description),scoreDisplayMode:v. -SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"]}}static get defaultOptions(){return{p10:1282,median:3500,thresholdInMs:50}}static async getTbtImpact(t,r){let n=0;try{let i=v.makeMetricComputationDataInput(t,r),a=await ma.request(i,r);for(let o of a){let u=o.group.id;u!=="scriptEvaluation"&&u!=="scriptParseCompile"||(n+=o.selfTbtImpact)}}catch(i){bt.captureException(i,{tags:{audit:this.meta.id},level:"error"}),N.error(this.meta.id,i.message)}return n}static async audit(t,r){let n=r.settings||{},i=t.traces[e.DEFAULT_PASS],a=t.devtoolsLogs[e.DEFAULT_PASS],o=await ie.request(a,r),u=await Qr.request(i,r),l=n.throttlingMethod==="simulate"?n.throttling.cpuSlowdownMultiplier:1,c=C1(u,o);c.delete("_lighthouse-eval.js");let p=await this.getTbtImpact(t,r),m=!1,f=0,h=Array.from(c).map(([T,S])=>{let C=0;for(let[M,H]of Object.entries(S))S[M]=H*l,C+=H*l;let _=S[Tr.scriptEvaluation.id]||0,L=S[Tr.scriptParseCompile.id]||0;return C>=r.options. -thresholdInMs&&(f+=_+L),m=m||T.startsWith("chrome-extension:")&&_>100,{url:T,total:C,scripting:_,scriptParseCompile:L}}).filter(T=>T.total>=r.options.thresholdInMs).sort((T,S)=>S.total-T.total),y;m&&(y=[xi(Si.chromeExtensionsWarning)]);let b=[{key:"url",valueType:"url",label:xi(F.columnURL)},{key:"total",granularity:1,valueType:"ms",label:xi(Si.columnTotal)},{key:"scripting",granularity:1,valueType:"ms",label:xi(Si.columnScriptEval)},{key:"scriptParseCompile",granularity:1,valueType:"ms",label:xi(Si.columnScriptParse)}],w=e.makeTableDetails(b,h,{wastedMs:f,sortedBy:["total"]}),E=v.computeLogNormalScore({p10:r.options.p10,median:r.options.median},f);return{score:E,scoreDisplayMode:E>=Me.PASS_THRESHOLD?v.SCORING_MODES.INFORMATIVE:void 0,notApplicable:!h.length,numericValue:f,numericUnit:"millisecond",displayValue:f>0?xi(F.seconds,{timeInMs:f}):"",details:w,runWarnings:y,metricSavings:{TBT:p}}}},Due=Ex});var Tx,fa,Id=g(()=>{"use strict";d();De();at();Ei();zt();Tx=class{static{s(this,"LCPImageRecord")}static async compute_(t,r){let{trace:n,devtoolsLog:i}=t,a=await ie.request(i,r),o=await pr.request(n,r);if(o.timings.largestContentfulPaint===void 0)throw new z(z.errors.NO_LCP);let u=o.largestContentfulPaintEvt;if(!u)return;let l=n.traceEvents.filter(m=>m.name==="LargestImagePaint::Candidate"&&m.args.frame===u.args.frame&&m.args.data?.DOMNodeId===u.args.data?.nodeId&&m.args.data?.size===u.args.data?.size).sort((m,f)=>f.ts-m.ts)[0],c=l?.args.data?.imageUrl;return c?a.filter(m=>m.url===c&&m.finished&&m.frameId===l.args.frame&&m.networkRequestTime<(o.timestamps.largestContentfulPaint||0)).map(m=>{for(;m.redirectDestination;)m=m.redirectDestination;return m}).filter(m=>m.resourceType==="Image").sort((m,f)=>m.networkEndTime-f.networkEndTime)[0]:void 0}},fa=G(Tx,["devtoolsLog","trace"])});var Eue,Tue,xue,ge,Ur=g(()=>{"use strict";d();V();R();at();Bn();da();zn();Id();Eue=D("core/audits/byte-efficiency/byte-efficiency-audit.js",{}),Tue=150,xue=935,ge=class extends v{static{s(this,"ByteEfficiencyAudit")}static scoreForWastedMs(t){return v.computeLogNormalScore({p10:Tue,median:xue},t)}static async audit(t,r){let n=t.GatherContext,i=t.devtoolsLogs[v.DEFAULT_PASS],a=r?.settings||{},o={devtoolsLog:i,settings:a},u=await ie.request(i,r);if(!u.some(f=>f.transferSize)&&n.gatherMode==="timespan")return{score:1,notApplicable:!0};let c=v.makeMetricComputationDataInput(t,r),[p,m]=await Promise.all([this.audit_(t,u,r),Jt.request(o,r)]);return this.createAuditProduct(p,m,c,r)}static computeWasteWithGraph(t,r,n,i){i=Object.assign({label:""},i);let a=`${this.meta.id}-${i.label}-before`,o=`${this.meta.id}-${i.label}-after`,u=n.simulate(r,{label:a}),l=i.providedWastedBytesByUrl||new Map;if(!i.providedWastedBytesByUrl)for(let{url:f,wastedBytes:h}of t)l.set(f,(l.get(f)||0)+h);let c=new Map;r. -traverse(f=>{if(f.type!=="network")return;let h=l.get(f.request.url);if(!h)return;let y=f.request.transferSize;c.set(f.request.requestId,y),f.request.transferSize=Math.max(y-h,0)});let p=n.simulate(r,{label:o});r.traverse(f=>{if(f.type!=="network")return;let h=c.get(f.request.requestId);h!==void 0&&(f.request.transferSize=h)});let m=u.timeInMs-p.timeInMs;return{savings:Math.round(Math.max(m,0)/10)*10,simulationBeforeChanges:u,simulationAfterChanges:p}}static async createAuditProduct(t,r,n,i){let a=t.items.sort((f,h)=>h.wastedBytes-f.wastedBytes),o=a.reduce((f,h)=>f+h.wastedBytes,0),u={FCP:0,LCP:0},l;if(n.gatherContext.gatherMode==="navigation"){let{optimisticGraph:f}=await Zt.request(n,i),{optimisticGraph:h}=await Ir.request(n,i),{savings:y}=this.computeWasteWithGraph(a,f,r,{providedWastedBytesByUrl:t.wastedBytesByUrl,label:"fcp"}),{savings:b}=this.computeWasteWithGraph(a,h,r,{providedWastedBytesByUrl:t.wastedBytesByUrl,label:"lcp"}),w=0,E=await fa.request(n,i);if(E){let T=a.find(S=>S. -url===E.url);T&&(w=r.computeWastedMsFromWastedBytes(T.wastedBytes))}u.FCP=y,u.LCP=Math.max(b,w),l=u.LCP}else l=r.computeWastedMsFromWastedBytes(o);let c=t.displayValue||"";typeof t.displayValue>"u"&&o&&(c=Eue(F.displayValueByteSavings,{wastedBytes:o}));let p=t.sortedBy||["wastedBytes"],m=v.makeOpportunityDetails(t.headings,a,{overallSavingsMs:l,overallSavingsBytes:o,sortedBy:p});return m.debugData={type:"debugdata",metricSavings:u},{explanation:t.explanation,warnings:t.warnings,displayValue:c,numericValue:l,numericUnit:"millisecond",score:a.length?0:1,details:m,metricSavings:u}}static audit_(t,r,n){throw new Error("audit_ unimplemented")}}});function Sue(e,t,r){let n=r.split(` -`),i={},a=t,o=a;e.computeLastGeneratedColumns();for(let u of e.mappings()){let l=u.sourceURL,c=u.lineNumber,p=u.columnNumber,m=u.lastColumnNumber;if(!l)continue;let f=n[c];if(f==null){let y=`${e.url()} mapping for line out of bounds: ${c+1}`;return N.error("JSBundles",y),{errorMessage:y}}if(p>f.length){let y=`${e.url()} mapping for column out of bounds: ${c+1}:${p}`;return N.error("JSBundles",y),{errorMessage:y}}let h=0;if(m!==void 0){if(m>f.length){let y=`${e.url()} mapping for last column out of bounds: ${c+1}:${m}`;return N.error("JSBundles",y),{errorMessage:y}}h=m-p}else h=f.length-p+1;i[l]=(i[l]||0)+h,o-=h}return{files:i,unmappedBytes:o,totalBytes:a}}var I4,xx,Ar,ha=g(()=>{"use strict";d();Ne();De();I4=yr(yD(),1);s(Sue,"computeGeneratedFileSizes");xx=class{static{s(this,"JSBundles")}static async compute_(t){let{SourceMaps:r,Scripts:n}=t,i=[];for(let a of r){if(!a.map)continue;let{scriptId:o,map:u}=a;if(!u.mappings)continue;let l=n.find(y=>y.scriptId===o);if(!l)continue;let c=a.scriptUrl|| -"compiled.js",p=a.sourceMapUrl||"compiled.js.map",m=new I4.default.SourceMap(c,p,u),f=Sue(m,l.length||0,l.content||""),h={rawMap:u,script:l,map:m,sizes:f};i.push(h)}return i}},Ar=G(xx,["Scripts","SourceMaps"])});var Cue,Fue,Sx,Ad,Cx=g(()=>{"use strict";d();De();ha();Cue=.1,Fue=1024*.5,Sx=class e{static{s(this,"ModuleDuplication")}static normalizeSource(t){t=t.replace(/\?$/,"");let r=t.lastIndexOf("node_modules");return r!==-1&&(t=t.substring(r)),t}static _shouldIgnoreSource(t){return!!(t.includes("webpack/bootstrap")||t.includes("(webpack)/buildin")||t.includes("external "))}static _normalizeAggregatedData(t){for(let[r,n]of t.entries()){let i=n;if(i.sort((a,o)=>o.resourceSize-a.resourceSize),i.length>1){let a=i[0].resourceSize;i=i.filter(o=>o.resourceSize/a>=Cue)}i=i.filter(a=>a.resourceSize>=Fue),i.length>1?t.set(r,i):t.delete(r)}}static async compute_(t,r){let n=await Ar.request(t,r),i=new Map;for(let{rawMap:o,sizes:u}of n){if("errorMessage"in u)continue;let l=[];i.set(o,l);for(let c=0;c<o.sources.length;c++){if(this._shouldIgnoreSource(o.sources[c]))continue;let p=(o.sourceRoot||"")+o.sources[c],m=u.files[p];l.push({source:e.normalizeSource(o.sources[c]),resourceSize:m})}}let a=new Map;for(let{ -rawMap:o,script:u}of n){let l=i.get(o);if(l)for(let c of l){let p=a.get(c.source);p||(p=[],a.set(c.source,p)),p.push({scriptId:u.scriptId,scriptUrl:u.url,resourceSize:c.resourceSize})}}return this._normalizeAggregatedData(a),a}},Ad=G(Sx,["Scripts","SourceMaps"])});function k1(e){return!!(e.startLine||e.startColumn)}function Fx(e,t){let r=e.find(n=>n.url===t.url);for(;r?.redirectDestination;)r=r.redirectDestination;return r}function A4(e,t,r){if(e){if(e.resourceType===r)return e.transferSize||0;{let n=e.transferSize||0,i=e.resourceSize||0,a=Number.isFinite(i)&&i>0?n/i:1;return Math.round(t*a)}}else switch(r){case"Stylesheet":return Math.round(t*.2);case"Script":case"Document":return Math.round(t*.33);default:return Math.round(t*.5)}}function Nd(e,t,r){if(!e)switch(r){case"Stylesheet":return Math.round(t*.2);case"Script":case"Document":return Math.round(t*.33);default:return Math.round(t*.5)}let n=e.transferSize||0;if(K.isContentEncoded(e)?e.responseHeadersTransferSize&&(n=Math.max(0,n-e.responseHeadersTransferSize)):n=e.resourceSize,e.resourceType===r)return n;{let i=e.resourceSize||0,a=Number.isFinite(i)&&i>0?n/i:1;return Math.round(t*a)}}function Vs(e,t,r,n){let i=e.get(t);if(i!==void 0)return i;let a=r.Scripts.find(o=>o.url===t);if(!a)i=1;else{ -let o=Fx(n,a),u=o?.resourceSize||a.length||0;i=Nd(o,u,"Script")/u}return e.set(t,i),i}var ga=g(()=>{"use strict";d();Ot();s(k1,"isInline");s(Fx,"getRequestForScript");s(A4,"estimateTransferSize");s(Nd,"estimateCompressedContentSize");s(Vs,"estimateCompressionRatioForContent")});var M4={};x(M4,{UIStrings:()=>_1,default:()=>_ue});function N4(e,t,r=0){let n=e.indexOf(t,r);return n===-1?e.length:n}var _1,Md,kue,kx,_ue,L4=g(()=>{"use strict";d();Ur();Cx();R();ga();_1={title:"Remove duplicate modules in JavaScript bundles",description:"Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity. "},Md=D("core/audits/byte-efficiency/duplicated-javascript.js",_1),kue=1024;s(N4,"indexOfOrEnd");kx=class e extends ge{static{s(this,"DuplicatedJavascript")}static get meta(){return{id:"duplicated-javascript",title:Md(_1.title),description:Md(_1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["devtoolsLogs","traces","SourceMaps","Scripts","GatherContext","URL"]}}static _getNodeModuleName(t){let r=t.split("node_modules/");t=r[r.length-1];let n=N4(t,"/");return t[0]==="@"?t.slice(0,N4(t,"/",n+1)):t.slice(0,n)}static async _getDuplicationGroupedByNodeModules(t,r){let n=await Ad. -request(t,r),i=new Map;for(let[a,o]of n.entries()){if(!a.includes("node_modules")){i.set(a,o);continue}let u="node_modules/"+e._getNodeModuleName(a),l=i.get(u)||[];for(let{scriptId:c,scriptUrl:p,resourceSize:m}of o){let f=l.find(h=>h.scriptId===c);f||(f={scriptId:c,scriptUrl:p,resourceSize:0},l.push(f)),f.resourceSize+=m}i.set(u,l)}for(let a of n.values())a.sort((o,u)=>u.resourceSize-o.resourceSize);return i}static async audit_(t,r,n){let i=n.options?.ignoreThresholdInBytes||kue,a=await e._getDuplicationGroupedByNodeModules(t,n),o=new Map,u=[],l=0,c=new Set,p=new Map;for(let[f,h]of a.entries()){let y=[],b=0;for(let w=0;w<h.length;w++){let E=h[w],T=E.scriptId,C=t.Scripts.find(M=>M.scriptId===T)?.url||"",_=Vs(o,C,t,r),L=Math.round(E.resourceSize*_);y.push({url:C,sourceTransferBytes:L}),w!==0&&(b+=L,p.set(C,(p.get(C)||0)+L))}if(b<=i){l+=b;for(let w of y)c.add(w.url);continue}u.push({source:f,wastedBytes:b,url:"",totalBytes:0,subItems:{type:"subitems",items:y}})}l>i&&u.push({source:"Other", -wastedBytes:l,url:"",totalBytes:0,subItems:{type:"subitems",items:Array.from(c).map(f=>({url:f}))}});let m=[{key:"source",valueType:"code",subItemsHeading:{key:"url",valueType:"url"},label:Md(F.columnSource)},{key:null,valueType:"bytes",subItemsHeading:{key:"sourceTransferBytes"},granularity:10,label:Md(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",granularity:10,label:Md(F.columnWastedBytes)}];return{items:u,headings:m,wastedBytesByUrl:p}}},_ue=kx});var P4={};x(P4,{UIStrings:()=>R1,default:()=>Iue});var R1,Ld,Rue,_x,Iue,O4=g(()=>{"use strict";d();Ot();Ur();R();R1={title:"Use video formats for animated content",description:"Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more about efficient video formats](https://developer.chrome.com/docs/lighthouse/performance/efficient-animated-content/)"},Ld=D("core/audits/byte-efficiency/efficient-animated-content.js",R1),Rue=100*1024,_x=class e extends ge{static{s(this,"EfficientAnimatedContent")}static get meta(){return{id:"efficient-animated-content",title:Ld(R1.title),description:Ld(R1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["devtoolsLogs","traces","GatherContext","URL"]}}static getPercentSavings(t){return Math.round(29.1*Math.log10(t)-100.7)/100}static audit_(t,r){let i=r.filter(o=>o.mimeType==="ima\ -ge/gif"&&o.resourceType===K.TYPES.Image&&(o.resourceSize||0)>Rue).map(o=>{let u=o.resourceSize||0;return{url:o.url,totalBytes:u,wastedBytes:Math.round(u*e.getPercentSavings(u))}}),a=[{key:"url",valueType:"url",label:Ld(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Ld(F.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Ld(F.columnWastedBytes)}];return{items:i,headings:a}}},Iue=_x});var B4,U4=g(()=>{d();B4={}});function Aue(e){Rx=e}function j4(e){return Rx.getEntity(e)}function Nue(e){return Rx.getProduct(e)}function q4(e,t){let r=j4(e);return!(!r||r===t)}function Mue(e,t){return!q4(e,t)}var Rx,ya,I1=g(()=>{"use strict";d();U4();Rx=B4;s(Aue,"provideThirdPartyWeb");s(j4,"getEntity");s(Nue,"getProduct");s(q4,"isThirdParty");s(Mue,"isFirstParty");ya={provideThirdPartyWeb:Aue,getEntity:j4,getProduct:Nue,isThirdParty:q4,isFirstParty:Mue}});var Ix,fr,Ci=g(()=>{"use strict";d();De();at();Pr();ut();I1();Ix=class e{static{s(this,"EntityClassification")}static makeupChromeExtensionEntity_(t,r,n){let i=Me.getChromeExtensionOrigin(r),a=new URL(i).host,o=n||a,u=t.get(i);if(u)return u;let l={name:o,company:o,category:"Chrome Extension",homepage:"https://chromewebstore.google.com/detail/"+a,categories:[],domains:[],averageExecutionTime:0,totalExecutionTime:0,totalOccurrences:0};return t.set(i,l),l}static _makeUpAnEntity(t,r){if(!J.isValid(r))return;let n=Me.createOrReturnURL(r);if(n.protocol==="chrome-extension:")return e.makeupChromeExtensionEntity_(t,r);if(!n.protocol.startsWith("http"))return;let i=J.getRootDomain(r);if(!i)return;if(t.has(i))return t.get(i);let a={name:i,company:i,category:"",categories:[],domains:[i],averageExecutionTime:0,totalExecutionTime:0,totalOccurrences:0,isUnrecognized:!0};return t.set(i,a),a}static _preloadChromeExtensionsToCache(t,r){for(let n of r.values()){if(n.method!=="Runtime.executionContextCre\ -ated")continue;let i=n.params.context.origin;i.startsWith("chrome-extension:")&&(t.has(i)||e.makeupChromeExtensionEntity_(t,i,n.params.context.name))}}static async compute_(t,r){let n=await ie.request(t.devtoolsLog,r),i=new Map,a=new Map,o=new Map;e._preloadChromeExtensionsToCache(i,t.devtoolsLog);for(let p of n){let{url:m}=p;if(a.has(m))continue;let f=ya.getEntity(m)||e._makeUpAnEntity(i,m);if(!f)continue;let h=o.get(f)||new Set;h.add(m),o.set(f,h),a.set(m,f)}let u=t.URL.mainDocumentUrl||t.URL.finalDisplayedUrl,l=ya.getEntity(u)||e._makeUpAnEntity(i,u);function c(p){return a.get(p)===l}return s(c,"isFirstParty"),{entityByUrl:a,urlsByEntity:o,firstParty:l,isFirstParty:c}}},fr=G(Ix,["URL","devtoolsLog"])});var z4={};x(z4,{UIStrings:()=>N1,default:()=>Pue});var Lue,Ax,N1,A1,Nx,Mx,Pue,H4=g(()=>{"use strict";d();ni();V();Ur();Ci();ha();R();ga();cl();Lue=`{ + }`},Yr=D("core/audits/bf-cache.js",or),Vle=["PageSupportNeeded","SupportPending","Circumstantial"],$le={PageSupportNeeded:Yr(or.actionableFailureType),Circumstantial:Yr(or.notActionableFailureType),SupportPending:Yr(or.supportPendingFailureType)},jT=class extends b{static{s(this,"BFCache")}static get meta(){return{id:"bf-cache",title:Yr(or.title),failureTitle:Yr(or.failureTitle),description:Yr(or.description),supportedModes:["navigation","timespan"],guidanceLevel:4,requiredArtifacts:["BFCacheFailures","HostProduct"],scoreDisplayMode:b.SCORING_MODES.BINARY}}static async audit(t){if(/HeadlessChrome/.test(t.HostProduct))return{score:null,notApplicable:!0,warnings:[Yr(or.warningHeadless)]};let n=t.BFCacheFailures;if(!n.length)return{score:1};let{notRestoredReasonsTree:r}=n[0],a=0,o=[];for(let l of Vle){let m=r[l];for(let[p,f]of Object.entries(m))a+=f.length,o.push({reason:r9[p]?.name??p,failureType:$le[l],subItems:{type:"subitems",items:f.map(h=>({frameUrl:h}))},protocolReason:p})}let i=[ +{key:"reason",valueType:"text",subItemsHeading:{key:"frameUrl",valueType:"url"},label:Yr(or.failureReasonColumn)},{key:"failureType",valueType:"text",label:Yr(or.failureTypeColumn)}],c=b.makeTableDetails(i,o),u=a?Yr(or.displayValue,{itemCount:a}):void 0;return{score:o.length?0:1,displayValue:u,details:c}}},Yle=jT});var Fn,zT,Fd=g(()=>{"use strict";d();Fn={parseHTML:{id:"parseHTML",label:"Parse HTML & CSS",traceEventNames:["ParseHTML","ParseAuthorStyleSheet"]},styleLayout:{id:"styleLayout",label:"Style & Layout",traceEventNames:["ScheduleStyleRecalculation","UpdateLayoutTree","InvalidateLayout","Layout"]},paintCompositeRender:{id:"paintCompositeRender",label:"Rendering",traceEventNames:["Animation","HitTest","PaintSetup","Paint","PaintImage","RasterTask","ScrollLayer","UpdateLayer","UpdateLayerTree","CompositeLayers","PrePaint"]},scriptParseCompile:{id:"scriptParseCompile",label:"Script Parsing & Compilation",traceEventNames:["v8.compile","v8.compileModule","v8.parseOnBackground"]},scriptEvaluation:{id:"scriptEvaluation",label:"Script Evaluation",traceEventNames:["EventDispatch","EvaluateScript","v8.evaluateModule","FunctionCall","TimerFire","FireIdleCallback","FireAnimationFrame","RunMicrotasks","V8.Execute"]},garbageCollection:{id:"garbageCollection",label:"Garbage Collection",traceEventNames:["\ +MinorGC","MajorGC","BlinkGC.AtomicPhase","ThreadState::performIdleLazySweep","ThreadState::completeSweep","BlinkGCMarking"]},other:{id:"other",label:"Other",traceEventNames:["MessageLoop::RunTask","TaskQueueManager::ProcessTaskFromWorkQueue","ThreadControllerImpl::DoWork"]}},zT={};for(let e of Object.values(Fn))for(let t of e.traceEventNames)zT[t]=e});var Us,qT=g(()=>{"use strict";d();hn();Fd();Us=class e{static{s(this,"MainThreadTasks")}static _createNewTaskNode(t,n){let r=t.ph==="X"&&!n,a=t.ph==="B"&&n&&n.ph==="E";if(!r&&!a)throw new Error("Invalid parameters for _createNewTaskNode");let o=t.ts,i=n?n.ts:t.ts+Number(t.dur||0);return{event:t,endEvent:n,startTime:o,endTime:i,duration:i-o,unbounded:!1,parent:void 0,children:[],attributableURLs:[],group:Fn.other,selfTime:NaN}}static _assignAllTimersUntilTs(t,n,r,a){for(;a.length;){let o=a.pop();if(!o)break;if(o.ts>n){a.push(o);break}if(o.ts<t.startTime)continue;let i=o.args.data.timerId;r.timers.set(i,t)}}static _createTasksFromStartAndEndEvents(t,n,r){let a=[],o=n.slice().reverse();for(let i=0;i<t.length;i++){let c=t[i];if(c.ph==="X"){a.push(e._createNewTaskNode(c));continue}let u=-1,l=0,m=i+1;for(let y=o.length-1;y>=0;y--){let v=o[y];for(;m<t.length&&!(t[m].ts>=v.ts);m++)t[m].name===c.name&&l++;if(v.name===c.name&&!(v.ts<c.ts)){if(l>0){l--;continue}u=y;break}}let p,f=!1;u===-1?(p={...c, +ph:"E",ts:r},f=!0):u===o.length-1?p=o.pop():p=o.splice(u,1)[0];let h=e._createNewTaskNode(c,p);h.unbounded=f,a.push(h)}if(o.length)throw new Error(`Fatal trace logic error - ${o.length} unmatched end events`);return a}static _createTaskRelationships(t,n,r){let a,o=n.slice().reverse();for(let i=0;i<t.length;i++){let c=t[i];if(c.event.name==="XHRReadyStateChange"){let u=c.event.args.data,l=u?.url;u&&l&&u.readyState===1&&r.xhrs.set(l,c)}for(;a&&Number.isFinite(a.endTime)&&a.endTime<=c.startTime;)e._assignAllTimersUntilTs(a,a.endTime,r,o),a=a.parent;if(a){if(c.endTime>a.endTime){let u=c.endTime-a.endTime;if(u<1e3)a.endTime=c.endTime,a.duration+=u;else if(c.unbounded)c.endTime=a.endTime,c.duration=c.endTime-c.startTime;else if(c.startTime-a.startTime<1e3&&!a.children.length){let l=c,m=a,p=a.parent;if(p){let f=p.children.length-1;if(p.children[f]!==m)throw new Error("Fatal trace logic error - impossible children");p.children.pop(),p.children.push(l)}l.parent=p,l.startTime=m.startTime,l.duration= +l.endTime-l.startTime,a=l,c=m}else{let l=new Error("Fatal trace logic error - child cannot end after parent");throw l.timeDelta=u,l.nextTaskEvent=c.event,l.nextTaskEndEvent=c.endEvent,l.nextTaskEndTime=c.endTime,l.currentTaskEvent=a.event,l.currentTaskEndEvent=a.endEvent,l.currentTaskEndTime=a.endTime,l}}c.parent=a,a.children.push(c),e._assignAllTimersUntilTs(a,c.startTime,r,o)}a=c}a&&e._assignAllTimersUntilTs(a,a.endTime,r,o)}static _createTasksFromEvents(t,n,r){let a=[],o=[],i=[];for(let l of t)(l.ph==="X"||l.ph==="B")&&a.push(l),l.ph==="E"&&o.push(l),l.name==="TimerInstall"&&i.push(l);let u=e._createTasksFromStartAndEndEvents(a,o,r).sort((l,m)=>l.startTime-m.startTime||m.duration-l.duration);return e._createTaskRelationships(u,i,n),u.sort((l,m)=>l.startTime-m.startTime||m.duration-l.duration)}static _computeRecursiveSelfTime(t,n){if(n&&t.endTime>n.endTime)throw new Error("Fatal trace logic error - child cannot end after parent");let r=t.children.map(a=>e._computeRecursiveSelfTime(a, +t)).reduce((a,o)=>a+o,0);return t.selfTime=t.duration-r,t.duration}static _computeRecursiveAttributableURLs(t,n,r,a){let o=t.event.args,i={...o.beginData||{},...o.data||{}},c=i.frame||"",u=a.frameURLsById.get(c),l=(i.stackTrace||[]).map(h=>h.url),m=l[0];c&&u&&u.startsWith("about:")&&m&&(a.frameURLsById.set(c,m),u=m);let p=[];switch(t.event.name){case"v8.compile":case"EvaluateScript":case"FunctionCall":p=[i.url,u];break;case"v8.compileModule":p=[t.event.args.fileName];break;case"TimerFire":{let h=t.event.args.data.timerId,y=a.timers.get(h);if(!y)break;p=y.attributableURLs;break}case"ParseHTML":p=[i.url,u];break;case"ParseAuthorStyleSheet":p=[i.styleSheetUrl,u];break;case"UpdateLayoutTree":case"Layout":case"Paint":if(u){p=[u];break}if(r.length)break;p=a.lastTaskURLs;break;case"XHRReadyStateChange":case"XHRLoad":{let h=i.url,y=i.readyState;if(!h||typeof y=="number"&&y!==4)break;let v=a.xhrs.get(h);if(!v)break;p=v.attributableURLs;break}default:p=[];break}let f=Array.from(n);for(let h of[...p, +...l])h&&(r.includes(h)||r.push(h),f[f.length-1]!==h&&f.push(h));t.attributableURLs=f,t.children.forEach(h=>e._computeRecursiveAttributableURLs(h,f,r,a)),!f.length&&!t.parent&&r.length&&e._setRecursiveEmptyAttributableURLs(t,r)}static _setRecursiveEmptyAttributableURLs(t,n){t.attributableURLs.length||(t.attributableURLs=n.slice(),t.children.forEach(r=>e._setRecursiveEmptyAttributableURLs(r,n)))}static _computeRecursiveTaskGroup(t,n){let r=zT[t.event.name];t.group=r||n||Fn.other,t.children.forEach(a=>e._computeRecursiveTaskGroup(a,t.group))}static getMainThreadTasks(t,n,r,a){let o=new Map,i=new Map,c=new Map;n.forEach(({id:f,url:h})=>c.set(f,h));let l={timers:o,xhrs:i,frameURLsById:c,lastTaskURLs:[]},m=e._createTasksFromEvents(t,l,r);for(let f of m)f.parent||(e._computeRecursiveSelfTime(f,void 0),e._computeRecursiveAttributableURLs(f,[],[],l),e._computeRecursiveTaskGroup(f),l.lastTaskURLs=f.attributableURLs);let p=a??m[0].startTime;for(let f of m)if(f.startTime=(f.startTime-p)/1e3,f.endTime= +(f.endTime-p)/1e3,f.duration/=1e3,f.selfTime/=1e3,!Number.isFinite(f.selfTime))throw new Error("Invalid task timing data");return m}static printTaskTreeToDebugString(t,n={}){let r=Math.max(...t.map(v=>v.endTime),0),{printWidth:a=100,startTime:o=0,endTime:i=r,taskLabelFn:c=s(v=>v.event.name,"taskLabelFn")}=n;function u(v){let w=0;for(;v.parent;v=v.parent)w++;return w}s(u,"computeTaskDepth");let m=(i-o)/a,p=new Map,f=new Map;for(let v of t){if(v.startTime>i||v.endTime<o)continue;let w=u(v),x=f.get(w)||[];x.push(v),f.set(w,x);let E=String.fromCharCode(65+p.size%26);p.set(v,{id:E,task:v})}let h=[`Trace Duration: ${r.toFixed(0)}ms`,`Range: [${o}, ${i}]`,`█ = ${m.toFixed(2)}ms`,""],y=Array.from(f.entries()).sort((v,w)=>v[0]-w[0]);for(let[,v]of y){let w=Array.from({length:a}).map(()=>" ");for(let x of v){let E=Math.max(x.startTime,o),S=Math.min(x.endTime,i),{id:k}=p.get(x)||{id:"?"},R=Math.floor(E/m),O=Math.floor(S/m),N=Math.floor((R+O)/2);for(let H=R;H<=O;H++)w[H]="█";for(let H=0;H<k.length;H++) +w[N]=k}h.push(w.join(""))}h.push("");for(let{id:v,task:w}of p.values())h.push(`${v} = ${c(w)}`);return h.join(` +`)}}});var HT,ir,ki=g(()=>{"use strict";d();xe();qT();Ut();HT=class{static{s(this,"MainThreadTasks")}static async compute_(t,n){let{mainThreadEvents:r,frames:a,timestamps:o}=await ke.request(t,n);return Us.getMainThreadTasks(r,a,o.traceEnd,o.timeOrigin)}},ir=G(HT,null)});function Rd(e){let t=new Set;for(let n of e)n.resourceType===K.TYPES.Script&&t.add(n.url);return t}function js(e,t){let n=e.attributableURLs.find(o=>t.has(o)),r=e.attributableURLs[0],a=n||r;return(!a||a==="about:blank")&&(Kle.has(e.event.name)?a="Browser":Jle.has(e.event.name)?a="Browser GC":a="Unattributable"),a}function A1(e,t){let n=Rd(t),r=new Map;for(let a of e){let o=js(a,n),i=r.get(o)||{},c=i[a.group.id]||0;i[a.group.id]=c+a.selfTime,r.set(o,i)}return r}var Kle,Jle,Id=g(()=>{"use strict";d();Bt();Kle=new Set(["CpuProfiler::StartProfiling"]),Jle=new Set(["V8.GCCompactor","MajorGC","MinorGC"]);s(Rd,"getJavaScriptURLs");s(js,"getAttributableURLForTask");s(A1,"getExecutionTimingsByURL")});var WT,zs,GT=g(()=>{"use strict";d();la();Ut();Ia();ut();WT=class{static{s(this,"Metric")}constructor(){}static getMetricComputationInput(t){return{trace:t.trace,devtoolsLog:t.devtoolsLog,gatherContext:t.gatherContext,settings:t.settings,URL:t.URL}}static computeSimulatedMetric(t,n){throw new Error("Unimplemented")}static computeObservedMetric(t,n){throw new Error("Unimplemented")}static async compute_(t,n){let{trace:r,devtoolsLog:a,settings:o,gatherContext:i}=t;if(!r||!a||!o)throw new Error("Did not provide necessary metric computation data");let c=await ke.request(r,n),u=i.gatherMode==="timespan"?void 0:await bn.request(r,n),l=Object.assign({networkRecords:await oe.request(a,n),gatherContext:i,processedTrace:c,processedNavigation:u},t);switch(un.assertHasToplevelEvents(l.processedTrace.mainThreadEvents),o.throttlingMethod){case"simulate":if(i.gatherMode!=="navigation")throw new Error(`${i.gatherMode} does not support throttlingMethod simulate`);return this.computeSimulatedMetric(l,n);case"\ +provided":case"devtools":return this.computeObservedMetric(l,n);default:throw new TypeError(`Unrecognized throttling method: ${o.throttlingMethod}`)}}},zs=WT});var Nt,Aa=g(()=>{"use strict";d();GT();Nt=class extends zs{static{s(this,"NavigationMetric")}static computeSimulatedMetric(t,n){throw new Error("Unimplemented")}static computeObservedMetric(t,n){throw new Error("Unimplemented")}static async compute_(t,n){if(t.gatherContext.gatherMode!=="navigation")throw new Error(`${this.name} can only be computed on navigations`);return super.compute_(t,n)}}});var VT,Sr,qs=g(()=>{"use strict";d();Mt();xe();Bt();Ut();ut();Ei();VT=class{static{s(this,"PageDependencyGraph")}static async compute_(t,n){let{trace:r,devtoolsLog:a,URL:o}=t,[{mainThreadEvents:i},c]=await Promise.all([ke.request(r,n),oe.request(a,n)]);if(t.fromTrace){let m=(await rr.request({trace:r},n)).data,p=ka.createNetworkRequests(r,m);return ka.createGraph(p,r,m,o)}let u=c.map(K.asLanternNetworkRequest);return Ht.PageDependencyGraph.createGraph(i,u,o)}},Sr=G(VT,["devtoolsLog","trace","URL","fromTrace"])});async function Xle(e,t){if(e.gatherContext.gatherMode!=="navigation")throw new Error("Lantern metrics can only be computed on navigations");let n=await Sr.request(e,t),r=await bn.request(e.trace,t);return{simulator:e.simulator||await nn.request(e,t),graph:n,processedNavigation:r}}async function Zle(e,t){if(e.gatherContext.gatherMode!=="navigation")throw new Error("Lantern metrics can only be computed on navigations");let n=await Sr.request({...e,fromTrace:!0},t),r=await rr.request(e,t),a=r.data.Meta.mainFrameId,o=r.data.Meta.mainFrameNavigations[0].args.data.navigationId,i=ka.createProcessedNavigation(r.data,a,o);return{simulator:e.simulator||await nn.request(e,t),graph:n,processedNavigation:i}}function Kr(e){if(!(e instanceof ct.LanternError))throw e;let t=e.message;throw q.errors[t]?new q(q.errors[t]):e}function sr(e,t){return process.env.INTERNAL_LANTERN_USE_TRACE!==void 0?Zle(e,t):Xle(e,t)}var Fi=g(()=>{"use strict";d();Mt();Wt();Vr();Ia();qs();Ei();s(Xle,"getComputationDataParamsF\ +romDevtoolsLog");s(Zle,"getComputationDataParamsFromTrace");s(Kr,"lanternErrorAdapter");s(sr,"getComputationDataParams")});var $T,an,Jr=g(()=>{"use strict";d();Mt();xe();Fi();$T=class extends _t.FirstContentfulPaint{static{s(this,"LanternFirstContentfulPaint")}static async computeMetricWithGraphs(t,n,r){let a=await sr(t,n);return Promise.resolve(this.compute(a,r)).catch(Kr)}static async compute_(t,n){return this.computeMetricWithGraphs(t,n)}},an=G($T,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var YT,xo,Ad=g(()=>{"use strict";d();xe();Aa();Jr();YT=class extends Nt{static{s(this,"FirstContentfulPaint")}static computeSimulatedMetric(t,n){let r=Nt.getMetricComputationInput(t);return an.request(r,n)}static async computeObservedMetric(t){let{processedNavigation:n}=t;return{timing:n.timings.firstContentfulPaint,timestamp:n.timestamps.firstContentfulPaint}}},xo=G(YT,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var KT,Ln,Eo=g(()=>{"use strict";d();Mt();xe();Fi();Jr();KT=class extends _t.LargestContentfulPaint{static{s(this,"LanternLargestContentfulPaint")}static async computeMetricWithGraphs(t,n,r){let a=await sr(t,n);return Promise.resolve(this.compute(a,r)).catch(Kr)}static async compute_(t,n){let r=await an.request(t,n);return this.computeMetricWithGraphs(t,n,{fcpResult:r})}},Ln=G(KT,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var JT,To,_d=g(()=>{"use strict";d();Mt();xe();Eo();Fi();JT=class extends _t.Interactive{static{s(this,"LanternInteractive")}static async computeMetricWithGraphs(t,n,r){let a=await sr(t,n);return Promise.resolve(this.compute(a,r)).catch(Kr)}static async compute_(t,n){let r=await Ln.request(t,n);return this.computeMetricWithGraphs(t,n,{lcpResult:r})}},To=G(JT,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var Qle,Hs,XT=g(()=>{"use strict";d();ua();Oe();hn();Bw();Bt();dt();Qle=We,Hs=class extends Qle{static{s(this,"NetworkMonitor")}_networkRecorder=void 0;_frameNavigations=[];constructor(t){super(),this._targetManager=t,this._session=t.rootSession(),this._onFrameNavigated=n=>this._frameNavigations.push(n.frame),this._onProtocolMessage=n=>{this._networkRecorder&&this._networkRecorder.dispatch(n)}}async enable(){if(this._networkRecorder)return;this._frameNavigations=[],this._networkRecorder=new Ms;let t=s(n=>r=>{this.emit(n,r),this._emitNetworkStatus()},"reEmit");this._networkRecorder.on("requeststarted",t("requeststarted")),this._networkRecorder.on("requestfinished",t("requestfinished")),this._session.on("Page.frameNavigated",this._onFrameNavigated),this._targetManager.on("protocolevent",this._onProtocolMessage)}async disable(){this._networkRecorder&&(this._session.off("Page.frameNavigated",this._onFrameNavigated),this._targetManager.off("protocolevent",this._onProtocolMessage),this._frameNavigations= +[],this._networkRecorder=void 0)}async getNavigationUrls(){let t=this._frameNavigations;if(!t.length)return{};let n=t.filter(a=>!a.parentId);n.length||M.warn("NetworkMonitor","No detected navigations");let r=n[0]?.url;if(this._networkRecorder){let o=this._networkRecorder.getRawRecords().find(i=>i.url===r);for(;o?.redirectSource;)o=o.redirectSource,r=o.url}return{requestedUrl:r,mainDocumentUrl:n[n.length-1]?.url}}getInflightRequests(){return this._networkRecorder?this._networkRecorder.getRawRecords().filter(t=>!t.finished):[]}isIdle(){return this._isIdlePeriod(0)}isCriticalIdle(){if(!this._networkRecorder)return!1;let r=this._networkRecorder.getRawRecords().find(a=>a.resourceType==="Document")?.frameId;return this._isIdlePeriod(0,a=>a.frameId===r&&a.resourceType!=="WebSocket"&&a.resourceType!=="EventSource"&&(a.priority==="VeryHigh"||a.priority==="High"))}is2Idle(){return this._isIdlePeriod(2)}_isIdlePeriod(t,n){if(!this._networkRecorder)return!1;let r=this._networkRecorder.getRawRecords(), +a=0;for(let o=0;o<r.length;o++){let i=r[o];i.finished||n?.(i)!==!1&&(K.isNonNetworkRequest(i)||a++)}return a<=t}_emitNetworkStatus(){let t=this.isIdle(),n=this.is2Idle(),r=this.isCriticalIdle();this.emit(t?"networkidle":"networkbusy"),this.emit(n?"network-2-idle":"network-2-busy"),this.emit(r?"network-critical-idle":"network-critical-busy"),n&&t?M.verbose("NetworkRecorder","network fully-quiet"):n&&!t?M.verbose("NetworkRecorder","network semi-quiet"):M.verbose("NetworkRecorder","network busy")}static findNetworkQuietPeriods(t,n,r=1/0){let a=[];t.forEach(u=>{X.isNonNetworkProtocol(u.protocol)||u.protocol==="ws"||u.protocol==="wss"||(a.push({time:u.networkRequestTime,isStart:!0}),u.finished&&a.push({time:u.networkEndTime,isStart:!1}))}),a=a.filter(u=>u.time<=r).sort((u,l)=>u.time-l.time);let o=0,i=0,c=[];return a.forEach(u=>{u.isStart?(o===n&&c.push({start:i,end:u.time}),o++):(o--,o===n&&(i=u.time))}),o<=n&&c.push({start:i,end:r}),c.filter(u=>u.start!==u.end)}}});var _1,ede,ZT,Xr,Ws=g(()=>{"use strict";d();xe();Aa();_d();XT();la();Wt();_1=5e3,ede=2,ZT=class e extends Nt{static{s(this,"Interactive")}static _findNetworkQuietPeriods(t,n){let r=n.timestamps.traceEnd/1e3,a=t.filter(o=>o.finished&&o.requestMethod==="GET"&&!o.failed&&o.statusCode<400);return Hs.findNetworkQuietPeriods(a,ede,r)}static _findCPUQuietPeriods(t,n){let r=n.timestamps.timeOrigin/1e3,a=n.timestamps.traceEnd/1e3;if(t.length===0)return[{start:0,end:a}];let o=[];return t.forEach((i,c)=>{c===0&&o.push({start:0,end:i.start+r}),c===t.length-1?o.push({start:i.end+r,end:a}):o.push({start:i.end+r,end:t[c+1].start+r})}),o}static findOverlappingQuietPeriods(t,n,r){let a=r.timestamps.firstContentfulPaint/1e3,o=s(f=>f.end>a+_1&&f.end-f.start>=_1,"isLongEnoughQuietPeriod"),i=this._findNetworkQuietPeriods(n,r).filter(o),c=this._findCPUQuietPeriods(t,r).filter(o),u=c.slice(),l=i.slice(),m=u.shift(),p=l.shift();for(;m&&p;)if(m.start>=p.start){if(p.end>=m.start+_1)return{cpuQuietPeriod:m,networkQuietPeriod:p, +cpuQuietPeriods:c,networkQuietPeriods:i};p=l.shift()}else{if(m.end>=p.start+_1)return{cpuQuietPeriod:m,networkQuietPeriod:p,cpuQuietPeriods:c,networkQuietPeriods:i};m=u.shift()}throw new q(m?q.errors.NO_TTI_NETWORK_IDLE_PERIOD:q.errors.NO_TTI_CPU_IDLE_PERIOD)}static computeSimulatedMetric(t,n){let r=Nt.getMetricComputationInput(t);return To.request(r,n)}static computeObservedMetric(t){let{processedTrace:n,processedNavigation:r,networkRecords:a}=t;if(!r.timestamps.domContentLoaded)throw new q(q.errors.NO_DCL);let o=un.getMainThreadTopLevelEvents(n).filter(m=>m.duration>=50),c=e.findOverlappingQuietPeriods(o,a,r).cpuQuietPeriod,u=Math.max(c.start,r.timestamps.firstContentfulPaint/1e3,r.timestamps.domContentLoaded/1e3)*1e3,l=(u-r.timestamps.timeOrigin)/1e3;return Promise.resolve({timing:l,timestamp:u})}},Xr=G(ZT,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var QT,s9,c9=g(()=>{"use strict";d();Mt();xe();Jr();_d();Fi();QT=class extends _t.TotalBlockingTime{static{s(this,"LanternTotalBlockingTime")}static async computeMetricWithGraphs(t,n,r){return this.compute(await sr(t,n),r)}static async compute_(t,n){let r=await an.request(t,n),a=await To.request(t,n);return this.computeMetricWithGraphs(t,n,{fcpResult:r,interactiveResult:a})}},s9=G(QT,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var u9,e2,Zr,Gs=g(()=>{"use strict";d();Mt();xe();GT();la();c9();Ws();({calculateSumOfBlockingTime:u9}=_t.TBTUtils),e2=class extends zs{static{s(this,"TotalBlockingTime")}static computeSimulatedMetric(t,n){let r=zs.getMetricComputationInput(t);return s9.request(r,n)}static async computeObservedMetric(t,n){let r=un.getMainThreadTopLevelEvents(t.processedTrace);if(t.processedNavigation){let{firstContentfulPaint:a}=t.processedNavigation.timings,o=zs.getMetricComputationInput(t),i=(await Xr.request(o,n)).timing;return{timing:u9(r,a,i)}}else return{timing:u9(r,0,t.processedTrace.timings.traceEnd)}}},Zr=G(e2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var Vs,t2,So,Md=g(()=>{"use strict";d();Mt();xe();ki();Ad();Ws();Gs();Ut();({calculateTbtImpactForEvent:Vs}=_t.TBTUtils),t2=class{static{s(this,"TBTImpactTasks")}static getTopLevelTask(t){let n=t;for(;n.parent;)n=n.parent;return n}static async getTbtBounds(t,n){let r=await ke.request(t.trace,n);if(t.gatherContext.gatherMode!=="navigation")return{startTimeMs:0,endTimeMs:r.timings.traceEnd};let a=await xo.request(t,n),o=await Xr.request(t,n),i=a.timing,c=o.timing;return"optimisticEstimate"in a&&(i=a.optimisticEstimate.timeInMs),"pessimisticEstimate"in o&&(c=o.pessimisticEstimate.timeInMs),{startTimeMs:i,endTimeMs:c}}static createImpactTasks(t,n,r){let a=[];for(let o of t){let i=n.get(o)||0,c=i,l=r.get(o)||0;for(let m of o.children){let p=n.get(m)||0;c-=p;let f=r.get(m)||0;l-=f}a.push({...o,tbtImpact:Math.max(i,0),selfTbtImpact:Math.max(c,0),selfBlockingTime:Math.max(l,0)})}return a}static computeImpactsFromObservedTasks(t,n,r){let a=new Map,o=new Map;for(let i of t){let c={start:i.startTime, +end:i.endTime,duration:i.duration},u=this.getTopLevelTask(i),l={start:u.startTime,end:u.endTime,duration:u.duration},m=Vs(c,n,r,l),p=Vs(c,-1/0,1/0,l);a.set(i,m),o.set(i,p)}return this.createImpactTasks(t,a,o)}static computeImpactsFromLantern(t,n,r,a){let o=new Map,i=new Map,c=new Map,u=new Map;for(let l of t)u.set(l.event,l);for(let[l,m]of n){if(l.type!=="cpu")continue;let p={start:m.startTime,end:m.endTime,duration:m.duration},f=Vs(p,r,a),h=Vs(p,-1/0,1/0),y=u.get(l.event);y&&(c.set(y,p),o.set(y,f),i.set(y,h))}for(let l of t){if(o.has(l)||i.has(l))continue;let m=this.getTopLevelTask(l),p=c.get(m);if(!p)continue;let h=(l.startTime-m.startTime)/m.duration*p.duration+p.start,y=(m.endTime-l.endTime)/m.duration,v=p.end-y*p.duration,w={start:h,end:v,duration:v-h},x=Vs(w,r,a,p),E=Vs(w,-1/0,1/0,p);o.set(l,x),i.set(l,E)}return this.createImpactTasks(t,o,i)}static async compute_(t,n){let r=await Zr.request(t,n),a=await ir.request(t.trace,n),{startTimeMs:o,endTimeMs:i}=await this.getTbtBounds(t,n); +return"pessimisticEstimate"in r?this.computeImpactsFromLantern(a,r.pessimisticEstimate.nodeTimings,o,i):this.computeImpactsFromObservedTasks(a,o,i)}},So=G(t2,["trace","devtoolsLog","URL","gatherContext","settings","simulator"])});var l9={};T(l9,{UIStrings:()=>Ma,default:()=>tde});var Ma,_a,n2,tde,d9=g(()=>{"use strict";d();Oe();V();Fd();A();ut();ki();Id();Md();nr();zn();Ma={title:"JavaScript execution time",failureTitle:"Reduce JavaScript execution time",description:"Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).",columnTotal:"Total CPU Time",columnScriptEval:"Script Evaluation",columnScriptParse:"Script Parse",chromeExtensionsWarning:"Chrome extensions negatively affected this page's load performance. Try auditing the page in incognito mode or from a Chrome profile without extensions."},_a=D("core/audits/bootup-time.js",Ma),n2=class e extends b{static{s(this,"BootupTime")}static get meta(){return{id:"bootup-time",title:_a(Ma.title),failureTitle:_a(Ma.failureTitle),description:_a(Ma.description),scoreDisplayMode:b. +SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"]}}static get defaultOptions(){return{p10:1282,median:3500,thresholdInMs:50}}static async getTbtImpact(t,n){let r=0;try{let a=b.makeMetricComputationDataInput(t,n),o=await So.request(a,n);for(let i of o){let c=i.group.id;c!=="scriptEvaluation"&&c!=="scriptParseCompile"||(r+=i.selfTbtImpact)}}catch(a){Dt.captureException(a,{tags:{audit:this.meta.id},level:"error"}),M.error(this.meta.id,a.message)}return r}static async audit(t,n){let r=n.settings||{},a=t.traces[e.DEFAULT_PASS],o=t.devtoolsLogs[e.DEFAULT_PASS],i=await oe.request(o,n),c=await ir.request(a,n),u=r.throttlingMethod==="simulate"?r.throttling.cpuSlowdownMultiplier:1,l=A1(c,i);l.delete("_lighthouse-eval.js");let m=await this.getTbtImpact(t,n),p=!1,f=0,h=Array.from(l).map(([E,S])=>{let k=0;for(let[N,H]of Object.entries(S))S[N]=H*u,k+=H*u;let R=S[Fn.scriptEvaluation.id]||0,O=S[Fn.scriptParseCompile.id]||0;return k>=n.options. +thresholdInMs&&(f+=R+O),p=p||E.startsWith("chrome-extension:")&&R>100,{url:E,total:k,scripting:R,scriptParseCompile:O}}).filter(E=>E.total>=n.options.thresholdInMs).sort((E,S)=>S.total-E.total),y;p&&(y=[_a(Ma.chromeExtensionsWarning)]);let v=[{key:"url",valueType:"url",label:_a(F.columnURL)},{key:"total",granularity:1,valueType:"ms",label:_a(Ma.columnTotal)},{key:"scripting",granularity:1,valueType:"ms",label:_a(Ma.columnScriptEval)},{key:"scriptParseCompile",granularity:1,valueType:"ms",label:_a(Ma.columnScriptParse)}],w=e.makeTableDetails(v,h,{wastedMs:f,sortedBy:["total"]}),x=b.computeLogNormalScore({p10:n.options.p10,median:n.options.median},f);return{score:x,scoreDisplayMode:x>=Le.PASS_THRESHOLD?b.SCORING_MODES.INFORMATIVE:void 0,notApplicable:!h.length,numericValue:f,numericUnit:"millisecond",displayValue:f>0?_a(F.seconds,{timeInMs:f}):"",details:w,runWarnings:y,metricSavings:{TBT:m}}}},tde=n2});var r2,Co,Nd=g(()=>{"use strict";d();xe();ut();Ia();Wt();r2=class{static{s(this,"LCPImageRecord")}static async compute_(t,n){let{trace:r,devtoolsLog:a}=t,o=await oe.request(a,n),i=await bn.request(r,n);if(i.timings.largestContentfulPaint===void 0)throw new q(q.errors.NO_LCP);let c=i.largestContentfulPaintEvt;if(!c)return;let u=r.traceEvents.filter(p=>p.name==="LargestImagePaint::Candidate"&&p.args.frame===c.args.frame&&p.args.data?.DOMNodeId===c.args.data?.nodeId&&p.args.data?.size===c.args.data?.size).sort((p,f)=>f.ts-p.ts)[0],l=u?.args.data?.imageUrl;return l?o.filter(p=>p.url===l&&p.finished&&p.frameId===u.args.frame&&p.networkRequestTime<(i.timestamps.largestContentfulPaint||0)).map(p=>{for(;p.redirectDestination;)p=p.redirectDestination;return p}).filter(p=>p.resourceType==="Image").sort((p,f)=>p.networkEndTime-f.networkEndTime)[0]:void 0}},Co=G(r2,["devtoolsLog","trace"])});var nde,rde,ade,ge,Gn=g(()=>{"use strict";d();V();A();ut();Vr();Eo();Jr();Nd();nde=D("core/audits/byte-efficiency/byte-efficiency-audit.js",{}),rde=150,ade=935,ge=class extends b{static{s(this,"ByteEfficiencyAudit")}static scoreForWastedMs(t){return b.computeLogNormalScore({p10:rde,median:ade},t)}static async audit(t,n){let r=t.GatherContext,a=t.devtoolsLogs[b.DEFAULT_PASS],o=n?.settings||{},i={devtoolsLog:a,settings:o},c=await oe.request(a,n);if(!c.some(f=>f.transferSize)&&r.gatherMode==="timespan")return{score:1,notApplicable:!0};let l=b.makeMetricComputationDataInput(t,n),[m,p]=await Promise.all([this.audit_(t,c,n),nn.request(i,n)]);return this.createAuditProduct(m,p,l,n)}static computeWasteWithGraph(t,n,r,a){a=Object.assign({label:""},a);let o=`${this.meta.id}-${a.label}-before`,i=`${this.meta.id}-${a.label}-after`,c=r.simulate(n,{label:o}),u=a.providedWastedBytesByUrl||new Map;if(!a.providedWastedBytesByUrl)for(let{url:f,wastedBytes:h}of t)u.set(f,(u.get(f)||0)+h);let l=new Map;n. +traverse(f=>{if(f.type!=="network")return;let h=u.get(f.request.url);if(!h)return;let y=f.request.transferSize;l.set(f.request.requestId,y),f.request.transferSize=Math.max(y-h,0)});let m=r.simulate(n,{label:i});n.traverse(f=>{if(f.type!=="network")return;let h=l.get(f.request.requestId);h!==void 0&&(f.request.transferSize=h)});let p=c.timeInMs-m.timeInMs;return{savings:Math.round(Math.max(p,0)/10)*10,simulationBeforeChanges:c,simulationAfterChanges:m}}static async createAuditProduct(t,n,r,a){let o=t.items.sort((f,h)=>h.wastedBytes-f.wastedBytes),i=o.reduce((f,h)=>f+h.wastedBytes,0),c={FCP:0,LCP:0},u;if(r.gatherContext.gatherMode==="navigation"){let{optimisticGraph:f}=await an.request(r,a),{optimisticGraph:h}=await Ln.request(r,a),{savings:y}=this.computeWasteWithGraph(o,f,n,{providedWastedBytesByUrl:t.wastedBytesByUrl,label:"fcp"}),{savings:v}=this.computeWasteWithGraph(o,h,n,{providedWastedBytesByUrl:t.wastedBytesByUrl,label:"lcp"}),w=0,x=await Co.request(r,a);if(x){let E=o.find(S=>S. +url===x.url);E&&(w=n.computeWastedMsFromWastedBytes(E.wastedBytes))}c.FCP=y,c.LCP=Math.max(v,w),u=c.LCP}else u=n.computeWastedMsFromWastedBytes(i);let l=t.displayValue||"";typeof t.displayValue>"u"&&i&&(l=nde(F.displayValueByteSavings,{wastedBytes:i}));let m=t.sortedBy||["wastedBytes"],p=b.makeOpportunityDetails(t.headings,o,{overallSavingsMs:u,overallSavingsBytes:i,sortedBy:m});return p.debugData={type:"debugdata",metricSavings:c},{explanation:t.explanation,warnings:t.warnings,displayValue:l,numericValue:u,numericUnit:"millisecond",score:o.length?0:1,details:p,metricSavings:c}}static audit_(t,n,r){throw new Error("audit_ unimplemented")}}});function ode(e,t,n){let r=n.split(` +`),a={},o=t,i=o;e.computeLastGeneratedColumns();for(let c of e.mappings()){let u=c.sourceURL,l=c.lineNumber,m=c.columnNumber,p=c.lastColumnNumber;if(!u)continue;let f=r[l];if(f==null){let y=`${e.url()} mapping for line out of bounds: ${l+1}`;return M.error("JSBundles",y),{errorMessage:y}}if(m>f.length){let y=`${e.url()} mapping for column out of bounds: ${l+1}:${m}`;return M.error("JSBundles",y),{errorMessage:y}}let h=0;if(p!==void 0){if(p>f.length){let y=`${e.url()} mapping for last column out of bounds: ${l+1}:${p}`;return M.error("JSBundles",y),{errorMessage:y}}h=p-m}else h=f.length-m+1;a[u]=(a[u]||0)+h,i-=h}return{files:a,unmappedBytes:i,totalBytes:o}}var m9,a2,Pn,ko=g(()=>{"use strict";d();Oe();xe();m9=mn(XD(),1);s(ode,"computeGeneratedFileSizes");a2=class{static{s(this,"JSBundles")}static async compute_(t){let{SourceMaps:n,Scripts:r}=t,a=[];for(let o of n){if(!o.map)continue;let{scriptId:i,map:c}=o;if(!c.mappings)continue;let u=r.find(y=>y.scriptId===i);if(!u)continue;let l=o.scriptUrl|| +"compiled.js",m=o.sourceMapUrl||"compiled.js.map",p=new m9.default.SourceMap(l,m,c),f=ode(p,u.length||0,u.content||""),h={rawMap:c,script:u,map:p,sizes:f};a.push(h)}return a}},Pn=G(a2,["Scripts","SourceMaps"])});var ide,sde,o2,Od,i2=g(()=>{"use strict";d();xe();ko();ide=.1,sde=1024*.5,o2=class e{static{s(this,"ModuleDuplication")}static normalizeSource(t){t=t.replace(/\?$/,"");let n=t.lastIndexOf("node_modules");return n!==-1&&(t=t.substring(n)),t}static _shouldIgnoreSource(t){return!!(t.includes("webpack/bootstrap")||t.includes("(webpack)/buildin")||t.includes("external "))}static _normalizeAggregatedData(t){for(let[n,r]of t.entries()){let a=r;if(a.sort((o,i)=>i.resourceSize-o.resourceSize),a.length>1){let o=a[0].resourceSize;a=a.filter(i=>i.resourceSize/o>=ide)}a=a.filter(o=>o.resourceSize>=sde),a.length>1?t.set(n,a):t.delete(n)}}static async compute_(t,n){let r=await Pn.request(t,n),a=new Map;for(let{rawMap:i,sizes:c}of r){if("errorMessage"in c)continue;let u=[];a.set(i,u);for(let l=0;l<i.sources.length;l++){if(this._shouldIgnoreSource(i.sources[l]))continue;let m=(i.sourceRoot||"")+i.sources[l],p=c.files[m];u.push({source:e.normalizeSource(i.sources[l]),resourceSize:p})}}let o=new Map;for(let{ +rawMap:i,script:c}of r){let u=a.get(i);if(u)for(let l of u){let m=o.get(l.source);m||(m=[],o.set(l.source,m)),m.push({scriptId:c.scriptId,scriptUrl:c.url,resourceSize:l.resourceSize})}}return this._normalizeAggregatedData(o),o}},Od=G(o2,["Scripts","SourceMaps"])});function M1(e){return!!(e.startLine||e.startColumn)}function s2(e,t){let n=e.find(r=>r.url===t.url);for(;n?.redirectDestination;)n=n.redirectDestination;return n}function p9(e,t,n){if(e){if(e.resourceType===n)return e.transferSize||0;{let r=e.transferSize||0,a=e.resourceSize||0,o=Number.isFinite(a)&&a>0?r/a:1;return Math.round(t*o)}}else switch(n){case"Stylesheet":return Math.round(t*.2);case"Script":case"Document":return Math.round(t*.33);default:return Math.round(t*.5)}}function Ld(e,t,n){if(!e)switch(n){case"Stylesheet":return Math.round(t*.2);case"Script":case"Document":return Math.round(t*.33);default:return Math.round(t*.5)}let r=e.transferSize||0;if(K.isContentEncoded(e)?e.responseHeadersTransferSize&&(r=Math.max(0,r-e.responseHeadersTransferSize)):r=e.resourceSize,e.resourceType===n)return r;{let a=e.resourceSize||0,o=Number.isFinite(a)&&a>0?r/a:1;return Math.round(t*o)}}function $s(e,t,n,r){let a=e.get(t);if(a!==void 0)return a;let o=n.Scripts.find(i=>i.url===t);if(!o)a=1;else{ +let i=s2(r,o),c=i?.resourceSize||o.length||0;a=Ld(i,c,"Script")/c}return e.set(t,a),a}var Fo=g(()=>{"use strict";d();Bt();s(M1,"isInline");s(s2,"getRequestForScript");s(p9,"estimateTransferSize");s(Ld,"estimateCompressedContentSize");s($s,"estimateCompressionRatioForContent")});var h9={};T(h9,{UIStrings:()=>N1,default:()=>ude});function f9(e,t,n=0){let r=e.indexOf(t,n);return r===-1?e.length:r}var N1,Pd,cde,c2,ude,g9=g(()=>{"use strict";d();Gn();i2();A();Fo();N1={title:"Remove duplicate modules in JavaScript bundles",description:"Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity. "},Pd=D("core/audits/byte-efficiency/duplicated-javascript.js",N1),cde=1024;s(f9,"indexOfOrEnd");c2=class e extends ge{static{s(this,"DuplicatedJavascript")}static get meta(){return{id:"duplicated-javascript",title:Pd(N1.title),description:Pd(N1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["devtoolsLogs","traces","SourceMaps","Scripts","GatherContext","URL"]}}static _getNodeModuleName(t){let n=t.split("node_modules/");t=n[n.length-1];let r=f9(t,"/");return t[0]==="@"?t.slice(0,f9(t,"/",r+1)):t.slice(0,r)}static async _getDuplicationGroupedByNodeModules(t,n){let r=await Od. +request(t,n),a=new Map;for(let[o,i]of r.entries()){if(!o.includes("node_modules")){a.set(o,i);continue}let c="node_modules/"+e._getNodeModuleName(o),u=a.get(c)||[];for(let{scriptId:l,scriptUrl:m,resourceSize:p}of i){let f=u.find(h=>h.scriptId===l);f||(f={scriptId:l,scriptUrl:m,resourceSize:0},u.push(f)),f.resourceSize+=p}a.set(c,u)}for(let o of r.values())o.sort((i,c)=>c.resourceSize-i.resourceSize);return a}static async audit_(t,n,r){let a=r.options?.ignoreThresholdInBytes||cde,o=await e._getDuplicationGroupedByNodeModules(t,r),i=new Map,c=[],u=0,l=new Set,m=new Map;for(let[f,h]of o.entries()){let y=[],v=0;for(let w=0;w<h.length;w++){let x=h[w],E=x.scriptId,k=t.Scripts.find(N=>N.scriptId===E)?.url||"",R=$s(i,k,t,n),O=Math.round(x.resourceSize*R);y.push({url:k,sourceTransferBytes:O}),w!==0&&(v+=O,m.set(k,(m.get(k)||0)+O))}if(v<=a){u+=v;for(let w of y)l.add(w.url);continue}c.push({source:f,wastedBytes:v,url:"",totalBytes:0,subItems:{type:"subitems",items:y}})}u>a&&c.push({source:"Other", +wastedBytes:u,url:"",totalBytes:0,subItems:{type:"subitems",items:Array.from(l).map(f=>({url:f}))}});let p=[{key:"source",valueType:"code",subItemsHeading:{key:"url",valueType:"url"},label:Pd(F.columnSource)},{key:null,valueType:"bytes",subItemsHeading:{key:"sourceTransferBytes"},granularity:10,label:Pd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",granularity:10,label:Pd(F.columnWastedBytes)}];return{items:c,headings:p,wastedBytesByUrl:m}}},ude=c2});var y9={};T(y9,{UIStrings:()=>O1,default:()=>dde});var O1,Bd,lde,u2,dde,v9=g(()=>{"use strict";d();Bt();Gn();A();O1={title:"Use video formats for animated content",description:"Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more about efficient video formats](https://developer.chrome.com/docs/lighthouse/performance/efficient-animated-content/)"},Bd=D("core/audits/byte-efficiency/efficient-animated-content.js",O1),lde=100*1024,u2=class e extends ge{static{s(this,"EfficientAnimatedContent")}static get meta(){return{id:"efficient-animated-content",title:Bd(O1.title),description:Bd(O1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["devtoolsLogs","traces","GatherContext","URL"]}}static getPercentSavings(t){return Math.round(29.1*Math.log10(t)-100.7)/100}static audit_(t,n){let a=n.filter(i=>i.mimeType==="ima\ +ge/gif"&&i.resourceType===K.TYPES.Image&&(i.resourceSize||0)>lde).map(i=>{let c=i.resourceSize||0;return{url:i.url,totalBytes:c,wastedBytes:Math.round(c*e.getPercentSavings(c))}}),o=[{key:"url",valueType:"url",label:Bd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Bd(F.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Bd(F.columnWastedBytes)}];return{items:a,headings:o}}},dde=u2});var b9,w9=g(()=>{d();b9={}});function mde(e){l2=e}function D9(e){return l2.getEntity(e)}function pde(e){return l2.getProduct(e)}function x9(e,t){let n=D9(e);return!(!n||n===t)}function fde(e,t){return!x9(e,t)}var l2,Ro,L1=g(()=>{"use strict";d();w9();l2=b9;s(mde,"provideThirdPartyWeb");s(D9,"getEntity");s(pde,"getProduct");s(x9,"isThirdParty");s(fde,"isFirstParty");Ro={provideThirdPartyWeb:mde,getEntity:D9,getProduct:pde,isThirdParty:x9,isFirstParty:fde}});var d2,Dn,Na=g(()=>{"use strict";d();xe();ut();zn();dt();L1();d2=class e{static{s(this,"EntityClassification")}static makeupChromeExtensionEntity_(t,n,r){let a=Le.getChromeExtensionOrigin(n),o=new URL(a).host,i=r||o,c=t.get(a);if(c)return c;let u={name:i,company:i,category:"Chrome Extension",homepage:"https://chromewebstore.google.com/detail/"+o,categories:[],domains:[],averageExecutionTime:0,totalExecutionTime:0,totalOccurrences:0};return t.set(a,u),u}static _makeUpAnEntity(t,n){if(!X.isValid(n))return;let r=Le.createOrReturnURL(n);if(r.protocol==="chrome-extension:")return e.makeupChromeExtensionEntity_(t,n);if(!r.protocol.startsWith("http"))return;let a=X.getRootDomain(n);if(!a)return;if(t.has(a))return t.get(a);let o={name:a,company:a,category:"",categories:[],domains:[a],averageExecutionTime:0,totalExecutionTime:0,totalOccurrences:0,isUnrecognized:!0};return t.set(a,o),o}static _preloadChromeExtensionsToCache(t,n){for(let r of n.values()){if(r.method!=="Runtime.executionContextCre\ +ated")continue;let a=r.params.context.origin;a.startsWith("chrome-extension:")&&(t.has(a)||e.makeupChromeExtensionEntity_(t,a,r.params.context.name))}}static async compute_(t,n){let r=await oe.request(t.devtoolsLog,n),a=new Map,o=new Map,i=new Map;e._preloadChromeExtensionsToCache(a,t.devtoolsLog);for(let m of r){let{url:p}=m;if(o.has(p))continue;let f=Ro.getEntity(p)||e._makeUpAnEntity(a,p);if(!f)continue;let h=i.get(f)||new Set;h.add(p),i.set(f,h),o.set(p,f)}let c=t.URL.mainDocumentUrl||t.URL.finalDisplayedUrl,u=Ro.getEntity(c)||e._makeUpAnEntity(a,c);function l(m){return o.get(m)===u}return s(l,"isFirstParty"),{entityByUrl:o,urlsByEntity:i,firstParty:u,isFirstParty:l}}},Dn=G(d2,["URL","devtoolsLog"])});var E9={};T(E9,{UIStrings:()=>B1,default:()=>gde});var hde,m2,B1,P1,p2,f2,gde,T9=g(()=>{"use strict";d();da();V();Gn();Na();ko();A();Fo();du();hde=`{ "moduleSizes": [11897, 498, 265, 277, 263, 453, 219, 216, 546, 339, 1608, 671, 1525, 420, 214, 504, 98, 524, 196, 268, 642, 204, 742, 618, 169, 394, 127, 433, 1473, 779, 239, 144, 182, 254, 77, 508, 124, 1388, 75, 133, 301, 362, 170, 1078, 182, 490, 195, 321, 316, 447, 551, 216, 284, 253, 17, 107, 295, 356, 345, 1939, 1596, 291, 139, 259, 1291, 179, 528, 174, 61, 326, 20, 444, 522, 104, 1945, 120, 1943, 680, 1409, 850, 630, 288, 38, 695, 569, 106, 587, 208, 370, 606, 766, 535, 616, 200, 170, 224, 422, 970, 978, 498, 284, 241, 210, 151, 194, 178, 814, 205, 189, 215, 111, 236, 147, 237, 191, 691, 212, 432, 499, 445, 176, 333, 129, 414, 617, 380, 251, 199, 524, 515, 681, 160, 259, 295, 283, 178, 472, 786, 520, 202, 575, 575, 349, 549, 458, 166, 173, 508, 1522, 743, 414, 431, 393, 899, 137, 270, 131, 472, 457, 205, 778, 801, 133, 3000], "dependencies": { "Array.prototype.fill": [0, 5, 8, 11, 21, 23, 25, 26, 29, 36, 37, 54, 55, 57, 58, 60, 66, 73, 74, 75, 76, 77, 79, 81, 82, 86, 87, 88, 92, 94, 101, 102, 103, 104, 114, 116], @@ -1563,87 +1842,87 @@ "focus-visible": [163] }, "maxSize": 87683 -}`,Ax=JSON.parse(Lue),N1={title:"Avoid serving legacy JavaScript to modern browsers",description:"Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers. For your bundled JavaScript, adopt a modern script deployment strategy using module/nomodule feature detection to reduce the amount of code shipped to modern browsers, while retaining support for legacy browsers. [Learn how to use modern JavaScript](https://web.dev/articles/publish-modern-javascript)"},A1=D("core/audits/byte-efficiency/legacy-javascript.js",N1),Nx=class{static{s(this,"CodePatternMatcher")}constructor(t){let r=t.map(n=>`(${n.expression})`).join("|");this.re=new RegExp(`(^\r +}`,m2=JSON.parse(hde),B1={title:"Avoid serving legacy JavaScript to modern browsers",description:"Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers. For your bundled JavaScript, adopt a modern script deployment strategy using module/nomodule feature detection to reduce the amount of code shipped to modern browsers, while retaining support for legacy browsers. [Learn how to use modern JavaScript](https://web.dev/articles/publish-modern-javascript)"},P1=D("core/audits/byte-efficiency/legacy-javascript.js",B1),p2=class{static{s(this,"CodePatternMatcher")}constructor(t){let n=t.map(r=>`(${r.expression})`).join("|");this.re=new RegExp(`(^\r |\r| -)|${r}`,"g"),this.patterns=t}match(t){this.re.lastIndex=0;let r=new Set,n=[],i,a=0,o=0;for(;(i=this.re.exec(t))!==null;){let u=i.slice(1),[l,...c]=u;if(l){a++,o=i.index+1;continue}let p=this.patterns[c.findIndex(Boolean)];if(r.has(p)){let m=n.find(f=>f.name===p.name);m&&(m.count+=1);continue}r.add(p),n.push({name:p.name,line:a,column:i.index-o,count:1})}return n}},Mx=class extends ge{static{s(this,"LegacyJavascript")}static get meta(){return{id:"legacy-javascript",scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,description:A1(N1.description),title:A1(N1.title),guidanceLevel:2,requiredArtifacts:["devtoolsLogs","traces","Scripts","SourceMaps","GatherContext","URL"]}}static buildPolyfillExpression(t,r){let n=s(a=>`['"]${a}['"]`,"qt"),i="";if(t?i+=`${t}\\.${r}\\s?=[^=]`:i+=`(?:window\\.|[\\s;]+)${r}\\s?=[^=]`,t&&(i+=`|${t}\\[${n(r)}\\]\\s?=[^=]`),i+=`|defineProperty\\(${t||"window"},\\s?${n(r)}`,t&&(i+=`|\\(${t},\\s*{${r}:.*},\\s*{${r}`),t){let a=t.replace(".prototype","");i+=`|\\$export\\(\ -[^,]+,${n(a)},{${r}:`,i+=`|{target:${n(a)}\\S*},{${r}:`}else i+=`|function ${r}\\(`;return i}static getPolyfillData(){let t=[{name:"focus-visible",modules:["focus-visible"]}],r=[["Array.prototype.fill","es6.array.fill"],["Array.prototype.filter","es6.array.filter"],["Array.prototype.find","es6.array.find"],["Array.prototype.findIndex","es6.array.find-index"],["Array.prototype.forEach","es6.array.for-each"],["Array.from","es6.array.from"],["Array.isArray","es6.array.is-array"],["Array.prototype.map","es6.array.map"],["Array.of","es6.array.of"],["Array.prototype.some","es6.array.some"],["Date.now","es6.date.now"],["Date.prototype.toISOString","es6.date.to-iso-string"],["Date.prototype.toJSON","es6.date.to-json"],["Date.prototype.toString","es6.date.to-string"],["Function.prototype.name","es6.function.name"],["Number.isInteger","es6.number.is-integer"],["Number.isSafeInteger","es6.number.is-safe-integer"],["Object.defineProperties","es6.object.define-properties"],["Object.defineProperty", +)|${n}`,"g"),this.patterns=t}match(t){this.re.lastIndex=0;let n=new Set,r=[],a,o=0,i=0;for(;(a=this.re.exec(t))!==null;){let c=a.slice(1),[u,...l]=c;if(u){o++,i=a.index+1;continue}let m=this.patterns[l.findIndex(Boolean)];if(n.has(m)){let p=r.find(f=>f.name===m.name);p&&(p.count+=1);continue}n.add(m),r.push({name:m.name,line:o,column:a.index-i,count:1})}return r}},f2=class extends ge{static{s(this,"LegacyJavascript")}static get meta(){return{id:"legacy-javascript",scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,description:P1(B1.description),title:P1(B1.title),guidanceLevel:2,requiredArtifacts:["devtoolsLogs","traces","Scripts","SourceMaps","GatherContext","URL"]}}static buildPolyfillExpression(t,n){let r=s(o=>`['"]${o}['"]`,"qt"),a="";if(t?a+=`${t}\\.${n}\\s?=[^=]`:a+=`(?:window\\.|[\\s;]+)${n}\\s?=[^=]`,t&&(a+=`|${t}\\[${r(n)}\\]\\s?=[^=]`),a+=`|defineProperty\\(${t||"window"},\\s?${r(n)}`,t&&(a+=`|\\(${t},\\s*{${n}:.*},\\s*{${n}`),t){let o=t.replace(".prototype","");a+=`|\\$export\\(\ +[^,]+,${r(o)},{${n}:`,a+=`|{target:${r(o)}\\S*},{${n}:`}else a+=`|function ${n}\\(`;return a}static getPolyfillData(){let t=[{name:"focus-visible",modules:["focus-visible"]}],n=[["Array.prototype.fill","es6.array.fill"],["Array.prototype.filter","es6.array.filter"],["Array.prototype.find","es6.array.find"],["Array.prototype.findIndex","es6.array.find-index"],["Array.prototype.forEach","es6.array.for-each"],["Array.from","es6.array.from"],["Array.isArray","es6.array.is-array"],["Array.prototype.map","es6.array.map"],["Array.of","es6.array.of"],["Array.prototype.some","es6.array.some"],["Date.now","es6.date.now"],["Date.prototype.toISOString","es6.date.to-iso-string"],["Date.prototype.toJSON","es6.date.to-json"],["Date.prototype.toString","es6.date.to-string"],["Function.prototype.name","es6.function.name"],["Number.isInteger","es6.number.is-integer"],["Number.isSafeInteger","es6.number.is-safe-integer"],["Object.defineProperties","es6.object.define-properties"],["Object.defineProperty", "es6.object.define-property"],["Object.freeze","es6.object.freeze"],["Object.getPrototypeOf","es6.object.get-prototype-of"],["Object.isExtensible","es6.object.is-extensible"],["Object.isFrozen","es6.object.is-frozen"],["Object.isSealed","es6.object.is-sealed"],["Object.keys","es6.object.keys"],["Object.preventExtensions","es6.object.prevent-extensions"],["Object.seal","es6.object.seal"],["Object.setPrototypeOf","es6.object.set-prototype-of"],["Reflect.apply","es6.reflect.apply"],["Reflect.construct","es6.reflect.construct"],["Reflect.defineProperty","es6.reflect.define-property"],["Reflect.deleteProperty","es6.reflect.delete-property"],["Reflect.get","es6.reflect.get"],["Reflect.getOwnPropertyDescriptor","es6.reflect.get-own-property-descriptor"],["Reflect.getPrototypeOf","es6.reflect.get-prototype-of"],["Reflect.has","es6.reflect.has"],["Reflect.isExtensible","es6.reflect.is-extensible"],["Reflect.ownKeys","es6.reflect.own-keys"],["Reflect.preventExtensions","es6.reflect.prevent-exten\ -sions"],["Reflect.setPrototypeOf","es6.reflect.set-prototype-of"],["String.prototype.codePointAt","es6.string.code-point-at"],["String.fromCodePoint","es6.string.from-code-point"],["String.raw","es6.string.raw"],["String.prototype.repeat","es6.string.repeat"],["Object.entries","es7.object.entries"],["Object.getOwnPropertyDescriptors","es7.object.get-own-property-descriptors"],["Object.values","es7.object.values"]];for(let[n,i]of r){let a=n.toLowerCase();t.push({name:n,modules:[i,i.replace("es6.","es.").replace("es7.","es.").replace("typed.","typed-array."),a],corejs:!0})}return t}static getCoreJsPolyfillData(){return this.getPolyfillData().filter(t=>t.corejs).map(t=>({name:t.name,coreJs2Module:t.modules[0],coreJs3Module:t.modules[1]}))}static getPolyfillPatterns(){let t=[];for(let{name:r}of this.getCoreJsPolyfillData()){let n=r.split("."),i=n.length>1?n.slice(0,n.length-1).join("."):null,a=n[n.length-1];t.push({name:r,expression:this.buildPolyfillExpression(i,a)})}return t}static getTransformPatterns(){ -return[{name:"@babel/plugin-transform-classes",expression:"Cannot call a class as a function",estimateBytes:t=>150+t.count*17},{name:"@babel/plugin-transform-regenerator",expression:/regeneratorRuntime\(?\)?\.a?wrap/.source,estimateBytes:t=>t.count*80},{name:"@babel/plugin-transform-spread",expression:/\.apply\(void 0,\s?_toConsumableArray/.source,estimateBytes:t=>1169+t.count*20}]}static detectAcrossScripts(t,r,n,i){let a=new Map,o=this.getPolyfillData();for(let u of Object.values(r)){if(!u.content)continue;let l=t.match(u.content),c=i.find(p=>p.script.scriptId===u.scriptId);if(c)for(let{name:p,modules:m}of o){if(l.some(y=>y.name===p))continue;let f=c.rawMap.sources.find(y=>m.some(b=>y.endsWith(`/${b}.js`)||y.includes(`node_modules/${b}/`)));if(!f)continue;let h=c.map.mappings().find(y=>y.sourceURL===f);h?l.push({name:p,line:h.lineNumber,column:h.columnNumber,count:1}):l.push({name:p,line:0,column:0,count:1})}l.length&&a.set(u,l)}return a}static estimateWastedBytes(t){let r=t.filter(l=>!l. -name.startsWith("@")),n=t.filter(l=>l.name.startsWith("@")),i=0,a=new Set;for(let l of r){let c=Ax.dependencies[l.name];if(c)for(let p of c)a.add(p)}i+=[...a].reduce((l,c)=>l+Ax.moduleSizes[c],0),i=Math.min(i,Ax.maxSize);let o=0;for(let l of n){let c=this.getTransformPatterns().find(p=>p.name===l.name);!c||!c.estimateBytes||(o+=c.estimateBytes(l))}return i+o}static async audit_(t,r,n){let i=t.devtoolsLogs[v.DEFAULT_PASS],a=await fr.request({URL:t.URL,devtoolsLog:i},n),o=await Ar.request(t,n),u=[],l=new Nx([...this.getPolyfillPatterns(),...this.getTransformPatterns()]),c=new Map,p=this.detectAcrossScripts(l,t.Scripts,r,o);for(let[h,y]of p.entries()){let b=Vs(c,h.url,t,r),w=Math.round(this.estimateWastedBytes(y)*b),E={url:h.url,wastedBytes:w,subItems:{type:"subitems",items:[]},totalBytes:0},T=o.find(S=>S.script.scriptId===h.scriptId);for(let S of y){let{name:C,line:_,column:L}=S,M={signal:C,location:ge.makeSourceLocation(h.url,_,L,T)};E.subItems.items.push(M)}u.push(E)}let m=new Map;for(let h of u) -a.isFirstParty(h.url)&&m.set(h.url,h.wastedBytes);let f=[{key:"url",valueType:"url",subItemsHeading:{key:"location",valueType:"source-location"},label:A1(F.columnURL)},{key:null,valueType:"code",subItemsHeading:{key:"signal"},label:""},{key:"wastedBytes",valueType:"bytes",label:A1(F.columnWastedBytes)}];return{items:u,headings:f,wastedBytesByUrl:m}}},Pue=Mx});var W4={};x(W4,{UIStrings:()=>M1,default:()=>Bue});var M1,Pd,Oue,Lx,Bue,G4=g(()=>{"use strict";d();Ur();ut();R();M1={title:"Serve images in next-gen formats",description:"Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/)."},Pd=D("core/audits/byte-efficiency/modern-image-formats.js",M1),Oue=8192,Lx=class e extends ge{static{s(this,"ModernImageFormats")}static get meta(){return{id:"modern-image-formats",title:Pd(M1.title),description:Pd(M1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["OptimizedImages","devtoolsLogs","traces","URL","GatherContext","ImageElements"]}}static estimateWebPSizeFromDimensions(t){let r=t.naturalWidth*t.naturalHeight,n=2*1/10;return Math.round(r*n)}static estimateAvifSizeFromDimensions(t){let r=t.naturalWidth*t. -naturalHeight,n=2*1/12;return Math.round(r*n)}static estimateAvifSizeFromWebPAndJpegEstimates(t){if(!t.jpegSize||!t.webpSize)return;let r=t.jpegSize*5/10,n=t.webpSize*8/10;return r/2+n/2}static audit_(t){let r=t.URL.finalDisplayedUrl,n=t.OptimizedImages,i=t.ImageElements,a=new Map;i.forEach(c=>a.set(c.src,c));let o=[],u=[];for(let c of n){let p=a.get(c.url);if(c.failed){u.push(`Unable to decode ${J.getURLDisplayName(c.url)}`);continue}if(c.mimeType==="image/webp"||c.mimeType==="image/avif")continue;let m=c.jpegSize,f=c.webpSize,h=e.estimateAvifSizeFromWebPAndJpegEstimates({jpegSize:m,webpSize:f}),y=!0;if(typeof f>"u"){if(!p){u.push(`Unable to locate resource ${J.getURLDisplayName(c.url)}`);continue}if(!p.naturalDimensions)continue;let S=p.naturalDimensions.height,C=p.naturalDimensions.width;if(!C||!S)continue;f=e.estimateWebPSizeFromDimensions({naturalHeight:S,naturalWidth:C}),h=e.estimateAvifSizeFromDimensions({naturalHeight:S,naturalWidth:C}),y=!1}if(f===void 0||h===void 0)continue;let b=c. -originalSize-f,w=c.originalSize-h;if(w<Oue)continue;let E=J.elideDataURI(c.url),T=!J.originsMatch(r,c.url);o.push({node:p?ge.makeNodeItem(p.node):void 0,url:E,fromProtocol:y,isCrossOrigin:T,totalBytes:c.originalSize,wastedBytes:w,wastedWebpBytes:b})}let l=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Pd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Pd(F.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Pd(F.columnWastedBytes)}];return{warnings:u,items:o,headings:l}}},Bue=Lx});var K4={};x(K4,{UIStrings:()=>L1,default:()=>jue});var L1,Od,Px,Uue,V4,$4,Y4,Ox,jue,J4=g(()=>{"use strict";d();Ur();Ot();Kr();ut();R();Hs();Bt();L1={title:"Defer offscreen images",description:"Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/)."},Od=D("core/audits/byte-efficiency/offscreen-images.js",L1),Px=100,Uue=3,V4=2048,$4=75,Y4=50,Ox=class e extends ge{static{s(this,"OffscreenImages")}static get meta(){return{id:"offscreen-images",title:Od(L1.title),description:Od(L1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,supportedModes:["navigation"],guidanceLevel:2,requiredArtifacts:["ImageElements","ViewportDimensions","GatherContext","devtoolsLogs","traces","URL"]}}static computeVisiblePixels(t,r){let n=r.innerWidth,i=r.innerHeight,a=Uue*r.innerHeight,o=Math.max(t.top,-1*Px),u=Math. -min(t.right,n+Px),l=Math.min(t.bottom,i+a),c=Math.max(t.left,-1*Px);return Math.max(u-c,0)*Math.max(l-o,0)}static computeWaste(t,r,n){let i=n.find(m=>m.url===t.src);if(!i||t.loading==="lazy"||t.loading==="eager")return null;let a=J.elideDataURI(t.src),o=t.displayedWidth*t.displayedHeight,u=this.computeVisiblePixels(t.clientRect,r),l=o===0?1:1-u/o,c=K.getResourceSizeOnNetwork(i),p=Math.round(c*l);return Number.isFinite(l)?{node:ge.makeNodeItem(t.node),url:a,requestStartTime:i.networkRequestTime,totalBytes:c,wastedBytes:p,wastedPercent:100*l}:new Error(`Invalid image sizing information ${a}`)}static filterLanternResults(t,r){let n=r.pessimisticEstimate.nodeTimings,i=0,a=new Map;for(let[o,u]of n)o.type==="cpu"&&u.duration>=50?i=Math.max(i,u.startTime):o.type==="network"&&a.set(o.request.url,u.startTime);return t.filter(o=>o.wastedBytes<V4||o.wastedPercent<$4?!1:(a.get(o.url)||0)<i-Y4)}static filterObservedResults(t,r){return t.filter(n=>n.wastedBytes<V4||n.wastedPercent<$4?!1:n.requestStartTime< -r/1e3-Y4)}static async audit_(t,r,n){let i=t.ImageElements,a=t.ViewportDimensions,o=t.GatherContext,u=t.traces[ge.DEFAULT_PASS],l=t.devtoolsLogs[ge.DEFAULT_PASS],c=t.URL,p=[],m=new Map;for(let w of i){let E=e.computeWaste(w,a,r);if(E===null)continue;if(E instanceof Error){p.push(E.message),bt.captureException(E,{tags:{audit:this.meta.id},level:"warning"});continue}let T=m.get(E.url);(!T||T.wastedBytes>E.wastedBytes)&&m.set(E.url,E)}let f=n.settings,h,y=Array.from(m.values());try{let w={trace:u,devtoolsLog:l,gatherContext:o,settings:f,URL:c},E=await Hn.request(w,n),T=E;h=n.settings.throttlingMethod==="simulate"?e.filterLanternResults(y,T):e.filterObservedResults(y,E.timestamp)}catch(w){if(n.settings.throttlingMethod==="simulate")throw w;h=e.filterObservedResults(y,await xe.request(u,n).then(E=>E.timestamps.traceEnd))}let b=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Od(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Od(F.columnResourceSize)},{key:"wa\ -stedBytes",valueType:"bytes",label:Od(F.columnWastedBytes)}];return{warnings:p,items:h,headings:b}}},jue=Ox});var $s,Bx,Ys,P1=g(()=>{"use strict";d();De();at();Pr();ga();$s=100,Bx=class e{static{s(this,"UnusedCSS")}static indexStylesheetsById(t,r){let n=r.filter(i=>i.resourceSize>0).reduce((i,a)=>(i[a.url]=a,i),{});return t.reduce((i,a)=>(i[a.header.styleSheetId]=Object.assign({usedRules:[],networkRecord:n[a.header.sourceURL]},a),i),{})}static indexUsedRules(t,r){t.forEach(n=>{let i=r[n.styleSheetId];i&&n.used&&i.usedRules.push(n)})}static computeUsage(t){let r=0,n=t.content.length;for(let u of t.usedRules)r+=u.endOffset-u.startOffset;let i=Nd(t.networkRecord,n,"Stylesheet"),a=(n-r)/n;return{wastedBytes:Math.round(a*i),wastedPercent:a*100,totalBytes:i}}static determineContentPreview(t){let r=Me.truncate(t||"",$s*5,"").replace(/( {2,}|\t)+/g," ").replace(/\n\s+}/g,` -}`).trim();if(r.length>$s){let n=r.indexOf("{"),i=r.indexOf("}");if(n===-1||i===-1||n>i||n>$s)r=Me.truncate(r,$s);else if(i<$s)r=r.slice(0,i+1)+" …";else{let a=Me.truncate(r,$s,""),o=a.lastIndexOf(";");r=o<n?a+"… } …":r.slice(0,o+1)+" … } …"}}return r}static mapSheetToResult(t){let r=t.header.sourceURL;(!r||t.header.isInline)&&(r=e.determineContentPreview(t.content));let n=e.computeUsage(t);return{url:r,...n}}static async compute_(t,r){let{CSSUsage:n,Stylesheets:i,devtoolsLog:a}=t,o=await ie.request(a,r),u=e.indexStylesheetsById(i,o);return e.indexUsedRules(n,u),Object.keys(u).map(c=>e.mapSheetToResult(u[c]))}},Ys=G(Bx,["Stylesheets","CSSUsage","devtoolsLog"])});var Ux,Z4,X4=g(()=>{"use strict";d();De();Bt();vo();Ux=class{static{s(this,"NavigationInsights")}static async compute_(t,r){let n=await xe.request(t,r),i=await Jr.request({trace:t},r),a=n.timeOriginEvt.args.data?.navigationId;if(!a)throw new Error("No navigationId found");let o=i.insights.get(a);if(!o)throw new Error("No navigations insights found");return o}},Z4=G(Ux,null)});var eB={};x(eB,{UIStrings:()=>O1,default:()=>Wue});function zue(e){let t=new Map;for(let[r,n]of e)r.type==="network"&&t.set(r.request.requestId,{node:r,nodeTiming:n});return t}function Hue(e,t,r){let n=e.get(t);if(!n)return;let i=Q4(t,n,r);n.duration-i.duration&&(t.traverse(o=>{e.delete(o)}),e.set(t,i))}function Q4(e,t,r){let n={...t};return r.some(i=>i.id==="amp")&&e.type===qt.BaseNode.types.NETWORK&&e.request.resourceType===K.TYPES.Stylesheet&&t.endTime>2100&&(n.endTime=Math.max(t.startTime,2100),n.duration=n.endTime-n.startTime),n}var que,O1,Ks,jx,Wue,tB=g(()=>{"use strict";d();V();R();It();P1();Ot();Bn();kd();Id();X4();que=50,O1={title:"Eliminate render-blocking resources",description:"Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/)."},Ks=D("core/audits/byte-e\ -fficiency/render-blocking-resources.js",O1);s(zue,"getNodesAndTimingByRequestId");s(Hue,"adjustNodeTimings");s(Q4,"computeStackSpecificTiming");jx=class e extends v{static{s(this,"RenderBlockingResources")}static get meta(){return{id:"render-blocking-resources",title:Ks(O1.title),supportedModes:["navigation"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,description:Ks(O1.description),guidanceLevel:2,requiredArtifacts:["URL","traces","devtoolsLogs","Stylesheets","CSSUsage","GatherContext","Stacks"]}}static async computeResults(t,r){let n=t.GatherContext,i=t.traces[v.DEFAULT_PASS],a=t.devtoolsLogs[v.DEFAULT_PASS],o={devtoolsLog:a,settings:r.settings},u=await Jt.request(o,r),l=await e.computeWastedCSSBytes(t,r),p=(await Z4.request(i,r)).RenderBlocking;if(p instanceof Error)throw p;let m={...r.settings,throttlingMethod:"simulate"},f={trace:i,devtoolsLog:a,gatherContext:n,simulator:u,settings:m,URL:t.URL},h=await ca.request(f,r),y=zue(h.optimisticEstimate.nodeTimings),b=[],w=new Set;for(let S of p. -renderBlockingRequests){let C=y.get(S.args.data.requestId);if(!C)continue;let{node:_,nodeTiming:L}=C,M=Q4(_,L,t.Stacks);_.traverse(te=>w.add(te.id));let H=Math.round(M.duration);H<que||b.push({url:S.args.data.url,totalBytes:_.request.transferSize,wastedMs:H})}if(!b.length)return{results:b,fcpWastedMs:0,lcpWastedMs:0};let E=e.estimateSavingsWithGraphs(u,h.optimisticGraph,w,l,t.Stacks),T=await fa.request(f,r);return{results:b,fcpWastedMs:E,lcpWastedMs:T?0:E}}static estimateSavingsWithGraphs(t,r,n,i,a){let{nodeTimings:o}=t.simulate(r),u=new Map(o),l=0,c=r.cloneWithRelationships(y=>{Hue(u,y,a);let b=n.has(y.id);if(y.type!==qt.BaseNode.types.NETWORK)return!b;let w=y.request.resourceType===K.TYPES.Stylesheet;if(b&&w){let E=i.get(y.request.url)||0;l+=(y.request.transferSize||0)-E}return!b});if(c.type!=="network")throw new Error("minimalFCPGraph not a NetworkNode");let p=Math.max(...Array.from(Array.from(u).map(y=>y[1].endTime))),m=c.request.transferSize,f=m||0;c.request.transferSize=f+l;let h=t. -simulate(c).timeInMs;return c.request.transferSize=m,Math.round(Math.max(p-h,0))}static async computeWastedCSSBytes(t,r){let n=new Map;try{let i=await Ys.request({Stylesheets:t.Stylesheets,CSSUsage:t.CSSUsage,devtoolsLog:t.devtoolsLogs[v.DEFAULT_PASS]},r);for(let a of i)n.set(a.url,a.wastedBytes)}catch{}return n}static async audit(t,r){let{results:n,fcpWastedMs:i,lcpWastedMs:a}=await e.computeResults(t,r),o;n.length>0&&(o=Ks(F.displayValueMsSavings,{wastedMs:i}));let u=[{key:"url",valueType:"url",label:Ks(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Ks(F.columnTransferSize)},{key:"wastedMs",valueType:"timespanMs",label:Ks(F.columnWastedMs)}],l=v.makeOpportunityDetails(u,n,{overallSavingsMs:i});return{displayValue:o,score:n.length?0:1,numericValue:i,numericUnit:"millisecond",details:l,metricSavings:{FCP:i,LCP:a}}}},Wue=jx});var rB={};x(rB,{UIStrings:()=>Zs,default:()=>Gue});var Zs,Js,qx,Gue,nB=g(()=>{"use strict";d();V();R();Ot();at();Pr();Zs={title:"Avoids enormous network payloads",failureTitle:"Avoid enormous network payloads",description:"Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",displayValue:"Total size was {totalBytes, number, bytes} KiB"},Js=D("core/audits/byte-efficiency/total-byte-weight.js",Zs),qx=class extends v{static{s(this,"TotalByteWeight")}static get meta(){return{id:"total-byte-weight",title:Js(Zs.title),failureTitle:Js(Zs.failureTitle),description:Js(Zs.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["devtoolsLogs"]}}static get defaultOptions(){return{p10:2667*1024,median:4e3*1024}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await ie.request(n,r),a=0,o=[];i. -forEach(p=>{if(K.isNonNetworkRequest(p)||!p.transferSize)return;let m={url:p.url,totalBytes:p.transferSize};a+=m.totalBytes,o.push(m)}),o=o.sort((p,m)=>m.totalBytes-p.totalBytes||p.url.localeCompare(m.url)).slice(0,10);let u=v.computeLogNormalScore({p10:r.options.p10,median:r.options.median},a),l=[{key:"url",valueType:"url",label:Js(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Js(F.columnTransferSize)}],c=v.makeTableDetails(l,o,{sortedBy:["totalBytes"]});return{score:u,scoreDisplayMode:u>=Me.PASS_THRESHOLD?v.SCORING_MODES.INFORMATIVE:void 0,numericValue:a,numericUnit:"byte",displayValue:Js(Zs.displayValue,{totalBytes:a}),details:c}}},Gue=qx});function Yue(e,t){for(let r=t;r>0;r--){let n=Math.max(0,r-6),i=e.slice(n,r);if(!$ue.test(i))return Vue.test(i)}return!0}function iB(e,t){let r=0,n=!1,i=!1,a=!1,o=!1,u=!1,l=!1,c=null,p=[];for(let m=0;m<e.length;m++){let f=e.substr(m,2),h=f.charAt(0),y=h===" "||h===` -`||h===" ",b=h==="'"||h==='"'||h==="`";n?h===` -`&&(n=!1):i?(a&&r++,f==="*/"&&(a&&r++,i=!1,m++)):o?(r++,c==="`"&&f==="${"?(p.push("templateBrace"),o=!1,r++,m++):h==="\\"?(r++,m++):h===c&&(o=!1)):u?(r++,h==="\\"?(r++,m++):h==="["?l=!0:h==="]"&&l?l=!1:h==="/"&&!l&&(u=!1)):f==="/*"?(i=!0,a=e.charAt(m+2)==="!",a&&(r+=2),m++):f==="//"&&t.singlelineComments?(n=!0,i=!1,a=!1,m++):h==="/"&&t.regex&&Yue(e,m)?(u=!0,r++):h==="{"&&p.length?(p.push("normalBrace"),r++):h==="}"&&p.length?(p[p.length-1]==="templateBrace"&&(o=!0,c="`"),p.pop(),r++):b?(o=!0,c=h,r++):y||r++}return i||o?e.length:r}function aB(e){return iB(e,{singlelineComments:!0,regex:!0})}function oB(e){return iB(e,{singlelineComments:!1,regex:!1})}var Vue,$ue,zx=g(()=>{"use strict";d();Vue=/(return|case|else|{|\(|\[|\.\.\.|;|,|<|>|<=|>=|==|!=|===|!==|\+|-|\*|%|\*\*|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|\*\*=|<<=|>>=|>>>=|&=|\|=|\^=|=>|\/|\/=|\})$/,$ue=/( |\n|\t)+$/;s(Yue,"hasPunctuatorBefore");s(iB,"computeTokenLength");s(aB,"computeJSTokenLength");s(oB,"computeC\ -SSTokenLength")});var sB={};x(sB,{UIStrings:()=>B1,default:()=>Zue});var B1,Bd,Kue,Jue,Hx,Zue,uB=g(()=>{"use strict";d();Ur();P1();R();zx();ga();B1={title:"Minify CSS",description:"Minifying CSS files can reduce network payload sizes. [Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/)."},Bd=D("core/audits/byte-efficiency/unminified-css.js",B1),Kue=5,Jue=2048,Hx=class e extends ge{static{s(this,"UnminifiedCSS")}static get meta(){return{id:"unminified-css",title:Bd(B1.title),description:Bd(B1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["Stylesheets","devtoolsLogs","traces","URL","GatherContext"]}}static computeTokenLength(t){return oB(t)}static computeWaste(t,r){let n=t.content,i=e.computeTokenLength(n),a=t.header.sourceURL;(!a||t.header.isInline)&&(a=Ys.determineContentPreview(t.content));let o=A4(r,n.length,"Stylesheet"),u=1-i/n.length,l=Math.round(o*u);return{url:a,totalBytes:o,wastedBytes:l,wastedPercent:100* -u}}static audit_(t,r){let n=[];for(let a of t.Stylesheets){let o=r.find(l=>l.url===a.header.sourceURL);if(!a.content)continue;let u=e.computeWaste(a,o);u.wastedPercent<Kue||u.wastedBytes<Jue||!Number.isFinite(u.wastedBytes)||n.push(u)}let i=[{key:"url",valueType:"url",label:Bd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Bd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Bd(F.columnWastedBytes)}];return{items:n,headings:i}}},Zue=Hx});var lB={};x(lB,{UIStrings:()=>U1,default:()=>ele});var U1,Ud,Xue,Que,Wx,ele,cB=g(()=>{"use strict";d();Ur();R();zx();ga();Pr();U1={title:"Minify JavaScript",description:"Minifying JavaScript files can reduce payload sizes and script parse time. [Learn how to minify JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/)."},Ud=D("core/audits/byte-efficiency/unminified-javascript.js",U1),Xue=10,Que=2048,Wx=class e extends ge{static{s(this,"UnminifiedJavaScript")}static get meta(){return{id:"unminified-javascript",title:Ud(U1.title),description:Ud(U1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["Scripts","devtoolsLogs","traces","GatherContext","URL"]}}static computeWaste(t,r,n){let i=t.length,a=aB(t),o=Nd(n,i,"Script"),u=1-a/i,l=Math.round(o*u);return{url:r,totalBytes:o,wastedBytes:l,wastedPercent:100*u}}static audit_(t,r){let n=[],i=[];for(let o of t.Scripts){if(!o.content)continue;let u=Fx(r,o),l=k1( -o)?`inline: ${Me.truncate(o.content,40)}`:o.url;try{let c=e.computeWaste(o.content,l,u);if(c.wastedPercent<Xue||c.wastedBytes<Que||!Number.isFinite(c.wastedBytes))continue;n.push(c)}catch(c){i.push(`Unable to process script ${o.url}: ${c.message}`)}}let a=[{key:"url",valueType:"url",label:Ud(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Ud(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Ud(F.columnWastedBytes)}];return{items:n,warnings:i,headings:a}}},ele=Wx});var dB={};x(dB,{UIStrings:()=>j1,default:()=>rle});var j1,jd,tle,Gx,rle,pB=g(()=>{"use strict";d();Ur();P1();R();j1={title:"Reduce unused CSS",description:"Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/)."},jd=D("core/audits/byte-efficiency/unused-css-rules.js",j1),tle=10*1024,Gx=class extends ge{static{s(this,"UnusedCSSRules")}static get meta(){return{id:"unused-css-rules",title:jd(j1.title),description:jd(j1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["Stylesheets","CSSUsage","URL","devtoolsLogs","traces","GatherContext"]}}static async audit_(t,r,n){let a=(await Ys.request({Stylesheets:t.Stylesheets,CSSUsage:t.CSSUsage,devtoolsLog:t.devtoolsLogs[ge.DEFAULT_PASS]},n)).filter(u=>u&&u.wastedBytes>tle),o=[{key:"url",valueType:"url",label:jd(F. -columnURL)},{key:"totalBytes",valueType:"bytes",label:jd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:jd(F.columnWastedBytes)}];return{items:a,headings:o}}},rle=Gx});var Vx,q1,$x=g(()=>{"use strict";d();De();Vx=class e{static{s(this,"UnusedJavascriptSummary")}static computeWaste(t){let r=0;for(let a of t.functions)r=Math.max(r,...a.ranges.map(o=>o.endOffset));let n=new Uint8Array(r);for(let a of t.functions)for(let o of a.ranges)if(o.count===0)for(let u=o.startOffset;u<o.endOffset;u++)n[u]=1;let i=0;for(let a of n)i+=a;return{unusedByIndex:n,unusedLength:i,contentLength:r}}static createItem(t,r){let n=r.unusedLength/r.contentLength||0,i=Math.round(r.contentLength*n);return{scriptId:t,totalBytes:r.contentLength,wastedBytes:i,wastedPercent:100*n}}static createSourceWastedBytes(t,r){if(!r.script.content)return;let n={},i=r.script.content.split(` -`).map(c=>c.length),a=0,o=i.map(c=>{let p=a;return a+=c+1,p});r.map.computeLastGeneratedColumns();for(let c of r.map.mappings()){let p=o[c.lineNumber];p+=c.columnNumber;let m=c.lastColumnNumber!==void 0?c.lastColumnNumber-1:i[c.lineNumber];for(let f=c.columnNumber;f<=m;f++){if(t.unusedByIndex[p]===1){let h=c.sourceURL||"(unmapped)";n[h]=(n[h]||0)+1}p+=1}}let u=Object.entries(n).sort(([c,p],[m,f])=>f-p),l={};for(let[c,p]of u)l[c]=p;return l}static async compute_(t){let{scriptId:r,scriptCoverage:n,bundle:i}=t,a=e.computeWaste(n),o=e.createItem(r,a);return i?{...o,sourcesWastedBytes:e.createSourceWastedBytes(a,i)}:o}},q1=G(Vx,["bundle","scriptCoverage","scriptId"])});var mB={};x(mB,{UIStrings:()=>z1,default:()=>sle});function ale(e){if(!e.length)return"";let t=e.reduce((n,i)=>n>i?n:i),r=e.reduce((n,i)=>n>i?i:n);for(;!t.startsWith(r);)r=r.slice(0,-1);return r}function ole(e,t){return t&&e.startsWith(t)?"…"+e.slice(t.length):e}var z1,qd,nle,ile,Yx,sle,fB=g(()=>{"use strict";d();Ur();$x();ha();R();ga();z1={title:"Reduce unused JavaScript",description:"Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/)."},qd=D("core/audits/byte-efficiency/unused-javascript.js",z1),nle=20*1024,ile=512;s(ale,"commonPrefix");s(ole,"trimCommonPrefix");Yx=class extends ge{static{s(this,"UnusedJavaScript")}static get meta(){return{id:"unused-javascript",title:qd(z1.title),description:qd(z1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["J\ -sUsage","Scripts","SourceMaps","GatherContext","devtoolsLogs","traces","URL"]}}static async audit_(t,r,n){let i=await Ar.request(t,n),{unusedThreshold:a=nle,bundleSourceUnusedThreshold:o=ile}=n.options||{},u=new Map,l=[];for(let[c,p]of Object.entries(t.JsUsage)){let m=t.Scripts.find(E=>E.scriptId===c);if(!m)continue;let f=i.find(E=>E.script.scriptId===c),h=await q1.request({scriptId:c,scriptCoverage:p,bundle:f},n);if(h.wastedBytes===0||h.totalBytes===0)continue;let y=Vs(u,m.url,t,r),b={url:m.url,totalBytes:Math.round(y*h.totalBytes),wastedBytes:Math.round(y*h.wastedBytes),wastedPercent:h.wastedPercent};if(b.wastedBytes<=a||(l.push(b),!f||"errorMessage"in f.sizes))continue;let w=f.sizes;if(h.sourcesWastedBytes){let E=Object.entries(h.sourcesWastedBytes).sort((S,C)=>C[1]-S[1]).slice(0,5).map(([S,C])=>{let _=S==="(unmapped)"?w.unmappedBytes:w.files[S];return{source:S,unused:Math.round(C*y),total:Math.round(_*y)}}).filter(S=>S.unused>=o),T=ale(f.map.sourceURLs());b.subItems={type:"subitems", -items:E.map(({source:S,unused:C,total:_})=>({source:ole(S,T),sourceBytes:_,sourceWastedBytes:C}))}}}return{items:l,headings:[{key:"url",valueType:"url",subItemsHeading:{key:"source",valueType:"code"},label:qd(F.columnURL)},{key:"totalBytes",valueType:"bytes",subItemsHeading:{key:"sourceBytes"},label:qd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",subItemsHeading:{key:"sourceWastedBytes"},label:qd(F.columnWastedBytes)}]}}},sle=Yx});var gB=pe((h9e,hB)=>{d();hB.exports=s(function(t){if(typeof t!="string")return null;var r=/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,n={},i=t.replace(r,function(o,u,l,c){var p=l||c;return n[u]=p?p.toLowerCase():!0,""});if(n["max-age"])try{var a=parseInt(n["max-age"],10);if(isNaN(a))return null;n["max-age"]=a}catch{}return i?null:n},"parseCacheControl")});var vB={};x(vB,{UIStrings:()=>Xs,default:()=>lle});var yB,Xs,xo,ule,Kx,lle,bB=g(()=>{"use strict";d();yB=yr(gB(),1);V();Ot();ut();yg();R();at();Xs={title:"Uses efficient cache policy on static assets",failureTitle:"Serve static assets with an efficient cache policy",description:"A long cache lifetime can speed up repeat visits to your page. [Learn more about efficient cache policies](https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/).",displayValue:`{itemCount, plural, +sions"],["Reflect.setPrototypeOf","es6.reflect.set-prototype-of"],["String.prototype.codePointAt","es6.string.code-point-at"],["String.fromCodePoint","es6.string.from-code-point"],["String.raw","es6.string.raw"],["String.prototype.repeat","es6.string.repeat"],["Object.entries","es7.object.entries"],["Object.getOwnPropertyDescriptors","es7.object.get-own-property-descriptors"],["Object.values","es7.object.values"]];for(let[r,a]of n){let o=r.toLowerCase();t.push({name:r,modules:[a,a.replace("es6.","es.").replace("es7.","es.").replace("typed.","typed-array."),o],corejs:!0})}return t}static getCoreJsPolyfillData(){return this.getPolyfillData().filter(t=>t.corejs).map(t=>({name:t.name,coreJs2Module:t.modules[0],coreJs3Module:t.modules[1]}))}static getPolyfillPatterns(){let t=[];for(let{name:n}of this.getCoreJsPolyfillData()){let r=n.split("."),a=r.length>1?r.slice(0,r.length-1).join("."):null,o=r[r.length-1];t.push({name:n,expression:this.buildPolyfillExpression(a,o)})}return t}static getTransformPatterns(){ +return[{name:"@babel/plugin-transform-classes",expression:"Cannot call a class as a function",estimateBytes:t=>150+t.count*17},{name:"@babel/plugin-transform-regenerator",expression:/regeneratorRuntime\(?\)?\.a?wrap/.source,estimateBytes:t=>t.count*80},{name:"@babel/plugin-transform-spread",expression:/\.apply\(void 0,\s?_toConsumableArray/.source,estimateBytes:t=>1169+t.count*20}]}static detectAcrossScripts(t,n,r,a){let o=new Map,i=this.getPolyfillData();for(let c of Object.values(n)){if(!c.content)continue;let u=t.match(c.content),l=a.find(m=>m.script.scriptId===c.scriptId);if(l)for(let{name:m,modules:p}of i){if(u.some(y=>y.name===m))continue;let f=l.rawMap.sources.find(y=>p.some(v=>y.endsWith(`/${v}.js`)||y.includes(`node_modules/${v}/`)));if(!f)continue;let h=l.map.mappings().find(y=>y.sourceURL===f);h?u.push({name:m,line:h.lineNumber,column:h.columnNumber,count:1}):u.push({name:m,line:0,column:0,count:1})}u.length&&o.set(c,u)}return o}static estimateWastedBytes(t){let n=t.filter(u=>!u. +name.startsWith("@")),r=t.filter(u=>u.name.startsWith("@")),a=0,o=new Set;for(let u of n){let l=m2.dependencies[u.name];if(l)for(let m of l)o.add(m)}a+=[...o].reduce((u,l)=>u+m2.moduleSizes[l],0),a=Math.min(a,m2.maxSize);let i=0;for(let u of r){let l=this.getTransformPatterns().find(m=>m.name===u.name);!l||!l.estimateBytes||(i+=l.estimateBytes(u))}return a+i}static async audit_(t,n,r){let a=t.devtoolsLogs[b.DEFAULT_PASS],o=await Dn.request({URL:t.URL,devtoolsLog:a},r),i=await Pn.request(t,r),c=[],u=new p2([...this.getPolyfillPatterns(),...this.getTransformPatterns()]),l=new Map,m=this.detectAcrossScripts(u,t.Scripts,n,i);for(let[h,y]of m.entries()){let v=$s(l,h.url,t,n),w=Math.round(this.estimateWastedBytes(y)*v),x={url:h.url,wastedBytes:w,subItems:{type:"subitems",items:[]},totalBytes:0},E=i.find(S=>S.script.scriptId===h.scriptId);for(let S of y){let{name:k,line:R,column:O}=S,N={signal:k,location:ge.makeSourceLocation(h.url,R,O,E)};x.subItems.items.push(N)}c.push(x)}let p=new Map;for(let h of c) +o.isFirstParty(h.url)&&p.set(h.url,h.wastedBytes);let f=[{key:"url",valueType:"url",subItemsHeading:{key:"location",valueType:"source-location"},label:P1(F.columnURL)},{key:null,valueType:"code",subItemsHeading:{key:"signal"},label:""},{key:"wastedBytes",valueType:"bytes",label:P1(F.columnWastedBytes)}];return{items:c,headings:f,wastedBytesByUrl:p}}},gde=f2});var S9={};T(S9,{UIStrings:()=>U1,default:()=>vde});var U1,Ud,yde,h2,vde,C9=g(()=>{"use strict";d();Gn();dt();A();U1={title:"Serve images in next-gen formats",description:"Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/)."},Ud=D("core/audits/byte-efficiency/modern-image-formats.js",U1),yde=8192,h2=class e extends ge{static{s(this,"ModernImageFormats")}static get meta(){return{id:"modern-image-formats",title:Ud(U1.title),description:Ud(U1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["OptimizedImages","devtoolsLogs","traces","URL","GatherContext","ImageElements"]}}static estimateWebPSizeFromDimensions(t){let n=t.naturalWidth*t.naturalHeight,r=2*1/10;return Math.round(n*r)}static estimateAvifSizeFromDimensions(t){let n=t.naturalWidth*t. +naturalHeight,r=2*1/12;return Math.round(n*r)}static estimateAvifSizeFromWebPAndJpegEstimates(t){if(!t.jpegSize||!t.webpSize)return;let n=t.jpegSize*5/10,r=t.webpSize*8/10;return n/2+r/2}static audit_(t){let n=t.URL.finalDisplayedUrl,r=t.OptimizedImages,a=t.ImageElements,o=new Map;a.forEach(l=>o.set(l.src,l));let i=[],c=[];for(let l of r){let m=o.get(l.url);if(l.failed){c.push(`Unable to decode ${X.getURLDisplayName(l.url)}`);continue}if(l.mimeType==="image/webp"||l.mimeType==="image/avif")continue;let p=l.jpegSize,f=l.webpSize,h=e.estimateAvifSizeFromWebPAndJpegEstimates({jpegSize:p,webpSize:f}),y=!0;if(typeof f>"u"){if(!m){c.push(`Unable to locate resource ${X.getURLDisplayName(l.url)}`);continue}if(!m.naturalDimensions)continue;let S=m.naturalDimensions.height,k=m.naturalDimensions.width;if(!k||!S)continue;f=e.estimateWebPSizeFromDimensions({naturalHeight:S,naturalWidth:k}),h=e.estimateAvifSizeFromDimensions({naturalHeight:S,naturalWidth:k}),y=!1}if(f===void 0||h===void 0)continue;let v=l. +originalSize-f,w=l.originalSize-h;if(w<yde)continue;let x=X.elideDataURI(l.url),E=!X.originsMatch(n,l.url);i.push({node:m?ge.makeNodeItem(m.node):void 0,url:x,fromProtocol:y,isCrossOrigin:E,totalBytes:l.originalSize,wastedBytes:w,wastedWebpBytes:v})}let u=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Ud(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Ud(F.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Ud(F.columnWastedBytes)}];return{warnings:c,items:i,headings:u}}},vde=h2});var I9={};T(I9,{UIStrings:()=>j1,default:()=>wde});var j1,jd,g2,bde,k9,F9,R9,y2,wde,A9=g(()=>{"use strict";d();Gn();Bt();nr();dt();A();Ws();Ut();j1={title:"Defer offscreen images",description:"Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/)."},jd=D("core/audits/byte-efficiency/offscreen-images.js",j1),g2=100,bde=3,k9=2048,F9=75,R9=50,y2=class e extends ge{static{s(this,"OffscreenImages")}static get meta(){return{id:"offscreen-images",title:jd(j1.title),description:jd(j1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,supportedModes:["navigation"],guidanceLevel:2,requiredArtifacts:["ImageElements","ViewportDimensions","GatherContext","devtoolsLogs","traces","URL"]}}static computeVisiblePixels(t,n){let r=n.innerWidth,a=n.innerHeight,o=bde*n.innerHeight,i=Math.max(t.top,-1*g2),c=Math. +min(t.right,r+g2),u=Math.min(t.bottom,a+o),l=Math.max(t.left,-1*g2);return Math.max(c-l,0)*Math.max(u-i,0)}static computeWaste(t,n,r){let a=r.find(p=>p.url===t.src);if(!a||t.loading==="lazy"||t.loading==="eager")return null;let o=X.elideDataURI(t.src),i=t.displayedWidth*t.displayedHeight,c=this.computeVisiblePixels(t.clientRect,n),u=i===0?1:1-c/i,l=K.getResourceSizeOnNetwork(a),m=Math.round(l*u);return Number.isFinite(u)?{node:ge.makeNodeItem(t.node),url:o,requestStartTime:a.networkRequestTime,totalBytes:l,wastedBytes:m,wastedPercent:100*u}:new Error(`Invalid image sizing information ${o}`)}static filterLanternResults(t,n){let r=n.pessimisticEstimate.nodeTimings,a=0,o=new Map;for(let[i,c]of r)i.type==="cpu"&&c.duration>=50?a=Math.max(a,c.startTime):i.type==="network"&&o.set(i.request.url,c.startTime);return t.filter(i=>i.wastedBytes<k9||i.wastedPercent<F9?!1:(o.get(i.url)||0)<a-R9)}static filterObservedResults(t,n){return t.filter(r=>r.wastedBytes<k9||r.wastedPercent<F9?!1:r.requestStartTime< +n/1e3-R9)}static async audit_(t,n,r){let a=t.ImageElements,o=t.ViewportDimensions,i=t.GatherContext,c=t.traces[ge.DEFAULT_PASS],u=t.devtoolsLogs[ge.DEFAULT_PASS],l=t.URL,m=[],p=new Map;for(let w of a){let x=e.computeWaste(w,o,n);if(x===null)continue;if(x instanceof Error){m.push(x.message),Dt.captureException(x,{tags:{audit:this.meta.id},level:"warning"});continue}let E=p.get(x.url);(!E||E.wastedBytes>x.wastedBytes)&&p.set(x.url,x)}let f=r.settings,h,y=Array.from(p.values());try{let w={trace:c,devtoolsLog:u,gatherContext:i,settings:f,URL:l},x=await Xr.request(w,r),E=x;h=r.settings.throttlingMethod==="simulate"?e.filterLanternResults(y,E):e.filterObservedResults(y,x.timestamp)}catch(w){if(r.settings.throttlingMethod==="simulate")throw w;h=e.filterObservedResults(y,await ke.request(c,r).then(x=>x.timestamps.traceEnd))}let v=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:jd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:jd(F.columnResourceSize)},{key:"wa\ +stedBytes",valueType:"bytes",label:jd(F.columnWastedBytes)}];return{warnings:m,items:h,headings:v}}},wde=y2});var Ys,v2,Ks,z1=g(()=>{"use strict";d();xe();ut();zn();Fo();Ys=100,v2=class e{static{s(this,"UnusedCSS")}static indexStylesheetsById(t,n){let r=n.filter(a=>a.resourceSize>0).reduce((a,o)=>(a[o.url]=o,a),{});return t.reduce((a,o)=>(a[o.header.styleSheetId]=Object.assign({usedRules:[],networkRecord:r[o.header.sourceURL]},o),a),{})}static indexUsedRules(t,n){t.forEach(r=>{let a=n[r.styleSheetId];a&&r.used&&a.usedRules.push(r)})}static computeUsage(t){let n=0,r=t.content.length;for(let c of t.usedRules)n+=c.endOffset-c.startOffset;let a=Ld(t.networkRecord,r,"Stylesheet"),o=(r-n)/r;return{wastedBytes:Math.round(o*a),wastedPercent:o*100,totalBytes:a}}static determineContentPreview(t){let n=Le.truncate(t||"",Ys*5,"").replace(/( {2,}|\t)+/g," ").replace(/\n\s+}/g,` +}`).trim();if(n.length>Ys){let r=n.indexOf("{"),a=n.indexOf("}");if(r===-1||a===-1||r>a||r>Ys)n=Le.truncate(n,Ys);else if(a<Ys)n=n.slice(0,a+1)+" …";else{let o=Le.truncate(n,Ys,""),i=o.lastIndexOf(";");n=i<r?o+"… } …":n.slice(0,i+1)+" … } …"}}return n}static mapSheetToResult(t){let n=t.header.sourceURL;(!n||t.header.isInline)&&(n=e.determineContentPreview(t.content));let r=e.computeUsage(t);return{url:n,...r}}static async compute_(t,n){let{CSSUsage:r,Stylesheets:a,devtoolsLog:o}=t,i=await oe.request(o,n),c=e.indexStylesheetsById(a,i);return e.indexUsedRules(r,c),Object.keys(c).map(l=>e.mapSheetToResult(c[l]))}},Ks=G(v2,["Stylesheets","CSSUsage","devtoolsLog"])});var b2,_9,M9=g(()=>{"use strict";d();xe();Ut();Ei();b2=class{static{s(this,"NavigationInsights")}static async compute_(t,n){let r=await ke.request(t,n),a=await rr.request({trace:t},n),o=r.timeOriginEvt.args.data?.navigationId;if(!o)throw new Error("No navigationId found");let i=a.insights.get(o);if(!i)throw new Error("No navigations insights found");return i}},_9=G(b2,null)});var O9={};T(O9,{UIStrings:()=>q1,default:()=>Tde});function xde(e){let t=new Map;for(let[n,r]of e)n.type==="network"&&t.set(n.request.requestId,{node:n,nodeTiming:r});return t}function Ede(e,t,n){let r=e.get(t);if(!r)return;let a=N9(t,r,n);r.duration-a.duration&&(t.traverse(i=>{e.delete(i)}),e.set(t,a))}function N9(e,t,n){let r={...t};return n.some(a=>a.id==="amp")&&e.type===Ht.BaseNode.types.NETWORK&&e.request.resourceType===K.TYPES.Stylesheet&&t.endTime>2100&&(r.endTime=Math.max(t.startTime,2100),r.duration=r.endTime-r.startTime),r}var Dde,q1,Js,w2,Tde,L9=g(()=>{"use strict";d();V();A();Mt();z1();Bt();Vr();Ad();Nd();M9();Dde=50,q1={title:"Eliminate render-blocking resources",description:"Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/)."},Js=D("core/audits/byte-e\ +fficiency/render-blocking-resources.js",q1);s(xde,"getNodesAndTimingByRequestId");s(Ede,"adjustNodeTimings");s(N9,"computeStackSpecificTiming");w2=class e extends b{static{s(this,"RenderBlockingResources")}static get meta(){return{id:"render-blocking-resources",title:Js(q1.title),supportedModes:["navigation"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,description:Js(q1.description),guidanceLevel:2,requiredArtifacts:["URL","traces","devtoolsLogs","Stylesheets","CSSUsage","GatherContext","Stacks"]}}static async computeResults(t,n){let r=t.GatherContext,a=t.traces[b.DEFAULT_PASS],o=t.devtoolsLogs[b.DEFAULT_PASS],i={devtoolsLog:o,settings:n.settings},c=await nn.request(i,n),u=await e.computeWastedCSSBytes(t,n),m=(await _9.request(a,n)).model.RenderBlocking;if(m instanceof Error)throw m;let p={...n.settings,throttlingMethod:"simulate"},f={trace:a,devtoolsLog:o,gatherContext:r,simulator:c,settings:p,URL:t.URL},h=await xo.request(f,n),y=xde(h.optimisticEstimate.nodeTimings),v=[],w=new Set; +for(let S of m.renderBlockingRequests){let k=y.get(S.args.data.requestId);if(!k)continue;let{node:R,nodeTiming:O}=k,N=N9(R,O,t.Stacks);R.traverse(ne=>w.add(ne.id));let H=Math.round(N.duration);H<Dde||v.push({url:S.args.data.url,totalBytes:R.request.transferSize,wastedMs:H})}if(!v.length)return{results:v,fcpWastedMs:0,lcpWastedMs:0};let x=e.estimateSavingsWithGraphs(c,h.optimisticGraph,w,u,t.Stacks),E=await Co.request(f,n);return{results:v,fcpWastedMs:x,lcpWastedMs:E?0:x}}static estimateSavingsWithGraphs(t,n,r,a,o){let{nodeTimings:i}=t.simulate(n),c=new Map(i),u=0,l=n.cloneWithRelationships(y=>{Ede(c,y,o);let v=r.has(y.id);if(y.type!==Ht.BaseNode.types.NETWORK)return!v;let w=y.request.resourceType===K.TYPES.Stylesheet;if(v&&w){let x=a.get(y.request.url)||0;u+=(y.request.transferSize||0)-x}return!v});if(l.type!=="network")throw new Error("minimalFCPGraph not a NetworkNode");let m=Math.max(...Array.from(Array.from(c).map(y=>y[1].endTime))),p=l.request.transferSize,f=p||0;l.request.transferSize= +f+u;let h=t.simulate(l).timeInMs;return l.request.transferSize=p,Math.round(Math.max(m-h,0))}static async computeWastedCSSBytes(t,n){let r=new Map;try{let a=await Ks.request({Stylesheets:t.Stylesheets,CSSUsage:t.CSSUsage,devtoolsLog:t.devtoolsLogs[b.DEFAULT_PASS]},n);for(let o of a)r.set(o.url,o.wastedBytes)}catch{}return r}static async audit(t,n){let{results:r,fcpWastedMs:a,lcpWastedMs:o}=await e.computeResults(t,n),i;r.length>0&&(i=Js(F.displayValueMsSavings,{wastedMs:a}));let c=[{key:"url",valueType:"url",label:Js(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Js(F.columnTransferSize)},{key:"wastedMs",valueType:"timespanMs",label:Js(F.columnWastedMs)}],u=b.makeOpportunityDetails(c,r,{overallSavingsMs:a});return{displayValue:i,score:r.length?0:1,numericValue:a,numericUnit:"millisecond",details:u,metricSavings:{FCP:a,LCP:o}}}},Tde=w2});var P9={};T(P9,{UIStrings:()=>Zs,default:()=>Sde});var Zs,Xs,D2,Sde,B9=g(()=>{"use strict";d();V();A();Bt();ut();zn();Zs={title:"Avoids enormous network payloads",failureTitle:"Avoid enormous network payloads",description:"Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",displayValue:"Total size was {totalBytes, number, bytes} KiB"},Xs=D("core/audits/byte-efficiency/total-byte-weight.js",Zs),D2=class extends b{static{s(this,"TotalByteWeight")}static get meta(){return{id:"total-byte-weight",title:Xs(Zs.title),failureTitle:Xs(Zs.failureTitle),description:Xs(Zs.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["devtoolsLogs"]}}static get defaultOptions(){return{p10:2667*1024,median:4e3*1024}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await oe.request(r,n),o=0,i=[];a. +forEach(m=>{if(K.isNonNetworkRequest(m)||!m.transferSize)return;let p={url:m.url,totalBytes:m.transferSize};o+=p.totalBytes,i.push(p)}),i=i.sort((m,p)=>p.totalBytes-m.totalBytes||m.url.localeCompare(p.url)).slice(0,10);let c=b.computeLogNormalScore({p10:n.options.p10,median:n.options.median},o),u=[{key:"url",valueType:"url",label:Xs(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Xs(F.columnTransferSize)}],l=b.makeTableDetails(u,i,{sortedBy:["totalBytes"]});return{score:c,scoreDisplayMode:c>=Le.PASS_THRESHOLD?b.SCORING_MODES.INFORMATIVE:void 0,numericValue:o,numericUnit:"byte",displayValue:Xs(Zs.displayValue,{totalBytes:o}),details:l}}},Sde=D2});function Fde(e,t){for(let n=t;n>0;n--){let r=Math.max(0,n-6),a=e.slice(r,n);if(!kde.test(a))return Cde.test(a)}return!0}function U9(e,t){let n=0,r=!1,a=!1,o=!1,i=!1,c=!1,u=!1,l=null,m=[];for(let p=0;p<e.length;p++){let f=e.substr(p,2),h=f.charAt(0),y=h===" "||h===` +`||h===" ",v=h==="'"||h==='"'||h==="`";r?h===` +`&&(r=!1):a?(o&&n++,f==="*/"&&(o&&n++,a=!1,p++)):i?(n++,l==="`"&&f==="${"?(m.push("templateBrace"),i=!1,n++,p++):h==="\\"?(n++,p++):h===l&&(i=!1)):c?(n++,h==="\\"?(n++,p++):h==="["?u=!0:h==="]"&&u?u=!1:h==="/"&&!u&&(c=!1)):f==="/*"?(a=!0,o=e.charAt(p+2)==="!",o&&(n+=2),p++):f==="//"&&t.singlelineComments?(r=!0,a=!1,o=!1,p++):h==="/"&&t.regex&&Fde(e,p)?(c=!0,n++):h==="{"&&m.length?(m.push("normalBrace"),n++):h==="}"&&m.length?(m[m.length-1]==="templateBrace"&&(i=!0,l="`"),m.pop(),n++):v?(i=!0,l=h,n++):y||n++}return a||i?e.length:n}function j9(e){return U9(e,{singlelineComments:!0,regex:!0})}function z9(e){return U9(e,{singlelineComments:!1,regex:!1})}var Cde,kde,x2=g(()=>{"use strict";d();Cde=/(return|case|else|{|\(|\[|\.\.\.|;|,|<|>|<=|>=|==|!=|===|!==|\+|-|\*|%|\*\*|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|\*\*=|<<=|>>=|>>>=|&=|\|=|\^=|=>|\/|\/=|\})$/,kde=/( |\n|\t)+$/;s(Fde,"hasPunctuatorBefore");s(U9,"computeTokenLength");s(j9,"computeJSTokenLength");s(z9,"computeC\ +SSTokenLength")});var q9={};T(q9,{UIStrings:()=>H1,default:()=>Ade});var H1,zd,Rde,Ide,E2,Ade,H9=g(()=>{"use strict";d();Gn();z1();A();x2();Fo();H1={title:"Minify CSS",description:"Minifying CSS files can reduce network payload sizes. [Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/)."},zd=D("core/audits/byte-efficiency/unminified-css.js",H1),Rde=5,Ide=2048,E2=class e extends ge{static{s(this,"UnminifiedCSS")}static get meta(){return{id:"unminified-css",title:zd(H1.title),description:zd(H1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["Stylesheets","devtoolsLogs","traces","URL","GatherContext"]}}static computeTokenLength(t){return z9(t)}static computeWaste(t,n){let r=t.content,a=e.computeTokenLength(r),o=t.header.sourceURL;(!o||t.header.isInline)&&(o=Ks.determineContentPreview(t.content));let i=p9(n,r.length,"Stylesheet"),c=1-a/r.length,u=Math.round(i*c);return{url:o,totalBytes:i,wastedBytes:u,wastedPercent:100* +c}}static audit_(t,n){let r=[];for(let o of t.Stylesheets){let i=n.find(u=>u.url===o.header.sourceURL);if(!o.content)continue;let c=e.computeWaste(o,i);c.wastedPercent<Rde||c.wastedBytes<Ide||!Number.isFinite(c.wastedBytes)||r.push(c)}let a=[{key:"url",valueType:"url",label:zd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:zd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:zd(F.columnWastedBytes)}];return{items:r,headings:a}}},Ade=E2});var W9={};T(W9,{UIStrings:()=>W1,default:()=>Nde});var W1,qd,_de,Mde,T2,Nde,G9=g(()=>{"use strict";d();Gn();A();x2();Fo();zn();W1={title:"Minify JavaScript",description:"Minifying JavaScript files can reduce payload sizes and script parse time. [Learn how to minify JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/)."},qd=D("core/audits/byte-efficiency/unminified-javascript.js",W1),_de=10,Mde=2048,T2=class e extends ge{static{s(this,"UnminifiedJavaScript")}static get meta(){return{id:"unminified-javascript",title:qd(W1.title),description:qd(W1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["Scripts","devtoolsLogs","traces","GatherContext","URL"]}}static computeWaste(t,n,r){let a=t.length,o=j9(t),i=Ld(r,a,"Script"),c=1-o/a,u=Math.round(i*c);return{url:n,totalBytes:i,wastedBytes:u,wastedPercent:100*c}}static audit_(t,n){let r=[],a=[];for(let i of t.Scripts){if(!i.content)continue;let c=s2(n,i),u=M1( +i)?`inline: ${Le.truncate(i.content,40)}`:i.url;try{let l=e.computeWaste(i.content,u,c);if(l.wastedPercent<_de||l.wastedBytes<Mde||!Number.isFinite(l.wastedBytes))continue;r.push(l)}catch(l){a.push(`Unable to process script ${i.url}: ${l.message}`)}}let o=[{key:"url",valueType:"url",label:qd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:qd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:qd(F.columnWastedBytes)}];return{items:r,warnings:a,headings:o}}},Nde=T2});var V9={};T(V9,{UIStrings:()=>G1,default:()=>Lde});var G1,Hd,Ode,S2,Lde,$9=g(()=>{"use strict";d();Gn();z1();A();G1={title:"Reduce unused CSS",description:"Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/)."},Hd=D("core/audits/byte-efficiency/unused-css-rules.js",G1),Ode=10*1024,S2=class extends ge{static{s(this,"UnusedCSSRules")}static get meta(){return{id:"unused-css-rules",title:Hd(G1.title),description:Hd(G1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["Stylesheets","CSSUsage","URL","devtoolsLogs","traces","GatherContext"]}}static async audit_(t,n,r){let o=(await Ks.request({Stylesheets:t.Stylesheets,CSSUsage:t.CSSUsage,devtoolsLog:t.devtoolsLogs[ge.DEFAULT_PASS]},r)).filter(c=>c&&c.wastedBytes>Ode),i=[{key:"url",valueType:"url",label:Hd(F. +columnURL)},{key:"totalBytes",valueType:"bytes",label:Hd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Hd(F.columnWastedBytes)}];return{items:o,headings:i}}},Lde=S2});var C2,V1,k2=g(()=>{"use strict";d();xe();C2=class e{static{s(this,"UnusedJavascriptSummary")}static computeWaste(t){let n=0;for(let o of t.functions)n=Math.max(n,...o.ranges.map(i=>i.endOffset));let r=new Uint8Array(n);for(let o of t.functions)for(let i of o.ranges)if(i.count===0)for(let c=i.startOffset;c<i.endOffset;c++)r[c]=1;let a=0;for(let o of r)a+=o;return{unusedByIndex:r,unusedLength:a,contentLength:n}}static createItem(t,n){let r=n.unusedLength/n.contentLength||0,a=Math.round(n.contentLength*r);return{scriptId:t,totalBytes:n.contentLength,wastedBytes:a,wastedPercent:100*r}}static createSourceWastedBytes(t,n){if(!n.script.content)return;let r={},a=n.script.content.split(` +`).map(l=>l.length),o=0,i=a.map(l=>{let m=o;return o+=l+1,m});n.map.computeLastGeneratedColumns();for(let l of n.map.mappings()){let m=i[l.lineNumber];m+=l.columnNumber;let p=l.lastColumnNumber!==void 0?l.lastColumnNumber-1:a[l.lineNumber];for(let f=l.columnNumber;f<=p;f++){if(t.unusedByIndex[m]===1){let h=l.sourceURL||"(unmapped)";r[h]=(r[h]||0)+1}m+=1}}let c=Object.entries(r).sort(([l,m],[p,f])=>f-m),u={};for(let[l,m]of c)u[l]=m;return u}static async compute_(t){let{scriptId:n,scriptCoverage:r,bundle:a}=t,o=e.computeWaste(r),i=e.createItem(n,o);return a?{...i,sourcesWastedBytes:e.createSourceWastedBytes(o,a)}:i}},V1=G(C2,["bundle","scriptCoverage","scriptId"])});var Y9={};T(Y9,{UIStrings:()=>$1,default:()=>zde});function Ude(e){if(!e.length)return"";let t=e.reduce((r,a)=>r>a?r:a),n=e.reduce((r,a)=>r>a?a:r);for(;!t.startsWith(n);)n=n.slice(0,-1);return n}function jde(e,t){return t&&e.startsWith(t)?"…"+e.slice(t.length):e}var $1,Wd,Pde,Bde,F2,zde,K9=g(()=>{"use strict";d();Gn();k2();ko();A();Fo();$1={title:"Reduce unused JavaScript",description:"Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/)."},Wd=D("core/audits/byte-efficiency/unused-javascript.js",$1),Pde=20*1024,Bde=512;s(Ude,"commonPrefix");s(jde,"trimCommonPrefix");F2=class extends ge{static{s(this,"UnusedJavaScript")}static get meta(){return{id:"unused-javascript",title:Wd($1.title),description:Wd($1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["J\ +sUsage","Scripts","SourceMaps","GatherContext","devtoolsLogs","traces","URL"]}}static async audit_(t,n,r){let a=await Pn.request(t,r),{unusedThreshold:o=Pde,bundleSourceUnusedThreshold:i=Bde}=r.options||{},c=new Map,u=[];for(let[l,m]of Object.entries(t.JsUsage)){let p=t.Scripts.find(x=>x.scriptId===l);if(!p)continue;let f=a.find(x=>x.script.scriptId===l),h=await V1.request({scriptId:l,scriptCoverage:m,bundle:f},r);if(h.wastedBytes===0||h.totalBytes===0)continue;let y=$s(c,p.url,t,n),v={url:p.url,totalBytes:Math.round(y*h.totalBytes),wastedBytes:Math.round(y*h.wastedBytes),wastedPercent:h.wastedPercent};if(v.wastedBytes<=o||(u.push(v),!f||"errorMessage"in f.sizes))continue;let w=f.sizes;if(h.sourcesWastedBytes){let x=Object.entries(h.sourcesWastedBytes).sort((S,k)=>k[1]-S[1]).slice(0,5).map(([S,k])=>{let R=S==="(unmapped)"?w.unmappedBytes:w.files[S];return{source:S,unused:Math.round(k*y),total:Math.round(R*y)}}).filter(S=>S.unused>=i),E=Ude(f.map.sourceURLs());v.subItems={type:"subitems", +items:x.map(({source:S,unused:k,total:R})=>({source:jde(S,E),sourceBytes:R,sourceWastedBytes:k}))}}}return{items:u,headings:[{key:"url",valueType:"url",subItemsHeading:{key:"source",valueType:"code"},label:Wd(F.columnURL)},{key:"totalBytes",valueType:"bytes",subItemsHeading:{key:"sourceBytes"},label:Wd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",subItemsHeading:{key:"sourceWastedBytes"},label:Wd(F.columnWastedBytes)}]}}},zde=F2});var X9=de((Mqe,J9)=>{d();J9.exports=s(function(t){if(typeof t!="string")return null;var n=/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,r={},a=t.replace(n,function(i,c,u,l){var m=u||l;return r[c]=m?m.toLowerCase():!0,""});if(r["max-age"])try{var o=parseInt(r["max-age"],10);if(isNaN(o))return null;r["max-age"]=o}catch{}return a?null:r},"parseCacheControl")});var Q9={};T(Q9,{UIStrings:()=>Qs,default:()=>Hde});var Z9,Qs,Ri,qde,R2,Hde,eB=g(()=>{"use strict";d();Z9=mn(X9(),1);V();Bt();dt();xg();A();ut();Qs={title:"Uses efficient cache policy on static assets",failureTitle:"Serve static assets with an efficient cache policy",description:"A long cache lifetime can speed up repeat visits to your page. [Learn more about efficient cache policies](https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/).",displayValue:`{itemCount, plural, =1 {1 resource found} other {# resources found} - }`},xo=D("core/audits/byte-efficiency/uses-long-cache-ttl.js",Xs),ule=.925,Kx=class e extends v{static{s(this,"CacheHeaders")}static get meta(){return{id:"uses-long-cache-ttl",title:xo(Xs.title),failureTitle:xo(Xs.failureTitle),description:xo(Xs.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["devtoolsLogs"]}}static get defaultOptions(){return{p10:28*1024,median:128*1024}}static getCacheHitProbability(t){let r=[0,.2,1,3,8,12,24,48,72,168,8760,1/0];if(r.length!==12)throw new Error("deciles 0-10 and 1 for overflow");let n=t/3600,i=r.findIndex(c=>c>=n);if(i===r.length-1)return 1;if(i===0)return 0;let a=r[i],o=r[i-1],u=i/10,l=(i-1)/10;return nI(o,l,a,u,n)}static computeCacheLifetimeInSeconds(t,r){if(r&&r["max-age"]!==void 0)return r["max-age"];let n=t.get("expires");if(n){let i=new Date(n).getTime();return i?Math.ceil((i-Date.now())/1e3):0}return null}static isCacheableAsset(t){let r=new Set([200,203,206]),n=new Set([K.TYPES.Font,K.TYPES. -Image,K.TYPES.Media,K.TYPES.Script,K.TYPES.Stylesheet]);return K.isNonNetworkRequest(t)?!1:r.has(t.statusCode)&&n.has(t.resourceType||"Other")}static shouldSkipRecord(t,r){return!!(!r&&(t.get("pragma")||"").includes("no-cache")||r&&(r["must-revalidate"]||r["no-cache"]||r["no-store"]||r["stale-while-revalidate"]||r.private))}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await ie.request(n,r),a=[],o=0;for(let c of i){if(!e.isCacheableAsset(c))continue;let p=new Map;for(let T of c.responseHeaders||[])if(p.has(T.name.toLowerCase())){let S=p.get(T.name.toLowerCase());p.set(T.name.toLowerCase(),`${S}, ${T.value}`)}else p.set(T.name.toLowerCase(),T.value);let m=(0,yB.default)(p.get("cache-control"));if(this.shouldSkipRecord(p,m))continue;let f=e.computeCacheLifetimeInSeconds(p,m);if(f!==null&&(!Number.isFinite(f)||f<=0))continue;f=f||0;let h=e.getCacheHitProbability(f);if(h>ule)continue;let y=J.elideDataURI(c.url),b=c.transferSize||0,w=(1-h)*b;o+=w;let E;m&&(E={type:"debugdat\ -a",...m}),a.push({url:y,debugData:E,cacheLifetimeMs:f*1e3,cacheHitProbability:h,totalBytes:b,wastedBytes:w})}a.sort((c,p)=>c.cacheLifetimeMs-p.cacheLifetimeMs||p.totalBytes-c.totalBytes||c.url.localeCompare(p.url));let u=[{key:"url",valueType:"url",label:xo(F.columnURL)},{key:"cacheLifetimeMs",valueType:"ms",label:xo(F.columnCacheTTL),displayUnit:"duration"},{key:"totalBytes",valueType:"bytes",label:xo(F.columnTransferSize),displayUnit:"kb",granularity:1}],l=v.makeTableDetails(u,a,{wastedBytes:o,sortedBy:["totalBytes"],skipSumming:["cacheLifetimeMs"]});return{score:a.length?0:1,numericValue:o,numericUnit:"byte",displayValue:xo(Xs.displayValue,{itemCount:a.length}),details:l}}},lle=Kx});var wB={};x(wB,{UIStrings:()=>H1,default:()=>dle});var H1,zd,cle,Jx,dle,DB=g(()=>{"use strict";d();Ur();ut();R();H1={title:"Efficiently encode images",description:"Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)."},zd=D("core/audits/byte-efficiency/uses-optimized-images.js",H1),cle=4096,Jx=class e extends ge{static{s(this,"UsesOptimizedImages")}static get meta(){return{id:"uses-optimized-images",title:zd(H1.title),description:zd(H1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["OptimizedImages","ImageElements","GatherContext","devtoolsLogs","traces","URL"]}}static computeSavings(t){let r=t.originalSize-t.jpegSize,n=100*r/t.originalSize;return{bytes:r,percent:n}}static estimateJPEGSizeFromDimensions(t){let r=t.naturalWidth*t.naturalHeight,n=2*1/8;return Math.round(r*n)}static audit_(t){let r=t.URL.finalDisplayedUrl, -n=t.OptimizedImages,i=t.ImageElements,a=new Map;i.forEach(c=>a.set(c.src,c));let o=[],u=[];for(let c of n){let p=a.get(c.url);if(c.failed){u.push(`Unable to decode ${J.getURLDisplayName(c.url)}`);continue}else if(/(jpeg|bmp)/.test(c.mimeType)===!1)continue;let m=c.jpegSize,f=!0;if(typeof m>"u"){if(!p){u.push(`Unable to locate resource ${J.getURLDisplayName(c.url)}`);continue}if(!p.naturalDimensions)continue;let w=p.naturalDimensions.height,E=p.naturalDimensions.width;if(!w||!E)continue;m=e.estimateJPEGSizeFromDimensions({naturalHeight:w,naturalWidth:E}),f=!1}if(c.originalSize<m+cle)continue;let h=J.elideDataURI(c.url),y=!J.originsMatch(r,c.url),b=e.computeSavings({...c,jpegSize:m});o.push({node:p?ge.makeNodeItem(p.node):void 0,url:h,fromProtocol:f,isCrossOrigin:y,totalBytes:c.originalSize,wastedBytes:b.bytes})}let l=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:zd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:zd(F.columnResourceSize)},{key:"wastedBy\ -tes",valueType:"bytes",label:zd(F.columnWastedBytes)}];return{warnings:u,items:o,headings:l}}},dle=Jx});var Zx,EB,TB=g(()=>{"use strict";d();ut();De();Zx=class e{static{s(this,"ImageRecords")}static indexNetworkRecords(t){return t.reduce((r,n)=>((/^image/.test(n.mimeType)||/\.(avif|webp)$/i.test(n.url))&&n.finished&&n.statusCode===200&&(r[n.url]=n),r),{})}static async compute_(t){let r=e.indexNetworkRecords(t.networkRecords),n=[];for(let i of t.ImageElements){let o=r[i.src]?.mimeType;n.push({...i,mimeType:o||J.guessMimeType(i.src)})}return n.sort((i,a)=>{let o=r[i.src]||{};return(r[a.src]||{}).resourceSize-o.resourceSize}),n}},EB=G(Zx,["ImageElements","networkRecords"])});var eS={};x(eS,{UIStrings:()=>Qs,default:()=>Qx,str_:()=>va});var Qs,va,ple,mle,Xx,Qx,tS=g(()=>{"use strict";d();Ur();Ot();TB();ut();R();Qs={title:"Properly size images",description:"Serve images that are appropriately-sized to save cellular data and improve load time. [Learn how to size images](https://developer.chrome.com/docs/lighthouse/performance/uses-responsive-images/)."},va=D("core/audits/byte-efficiency/uses-responsive-images.js",Qs),ple=4096,mle=12288,Xx=class e extends ge{static{s(this,"UsesResponsiveImages")}static get meta(){return{id:"uses-responsive-images",title:va(Qs.title),description:va(Qs.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["ImageElements","ViewportDimensions","GatherContext","devtoolsLogs","traces","URL"]}}static getDisplayedDimensions(t,r){if(t.displayedWidth&&t.displayedHeight)return{width:t.displayedWidth*r.devicePixelRatio,height:t.displayedHeight*r.devicePixelRatio};let n=r.innerWidth,i=r.innerHeight* -2,a=t.naturalWidth/t.naturalHeight,o=n/i,u=n,l=i;return a>o?l=n/a:u=i*a,{width:u*r.devicePixelRatio,height:l*r.devicePixelRatio}}static computeWaste(t,r,n){let i=n.find(f=>f.url===t.src);if(!i)return null;let a=this.getDisplayedDimensions(t,r),o=a.width*a.height,u=J.elideDataURI(t.src),l=t.naturalWidth*t.naturalHeight,c=1-o/l,p=K.getResourceSizeOnNetwork(i),m=Math.round(p*c);return{node:ge.makeNodeItem(t.node),url:u,totalBytes:p,wastedBytes:m,wastedPercent:100*c}}static determineAllowableWaste(t){return t.srcset||t.isPicture?mle:ple}static async audit_(t,r,n){let i=await EB.request({ImageElements:t.ImageElements,networkRecords:r},n),a=t.ViewportDimensions,o=new Map,u=[];for(let p of i){if(p.mimeType==="image/svg+xml"||p.isCss||!p.naturalDimensions)continue;let m=p.naturalDimensions.height,f=p.naturalDimensions.width;if(!f||!m)continue;let h=e.computeWaste({...p,naturalHeight:m,naturalWidth:f},a,r);if(!h)continue;let y=h.wastedBytes>this.determineAllowableWaste(p),b=o.get(h.url);y&&!u.includes( -h.url)?(!b||b.wastedBytes>h.wastedBytes)&&o.set(h.url,h):(o.delete(h.url),u.push(h.url))}let l=Array.from(o.values()),c=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:va(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:va(F.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:va(F.columnWastedBytes)}];return{items:l,headings:c}}},Qx=Xx});var xB={};x(xB,{UIStrings:()=>eu,default:()=>hle});var eu,Hd,fle,rS,hle,SB=g(()=>{"use strict";d();V();tS();ut();R();eu={title:"Images were appropriate for their displayed size",failureTitle:"Images were larger than their displayed size",columnDisplayedDimensions:"Displayed dimensions",columnActualDimensions:"Actual dimensions"},Hd=D("core/audits/byte-efficiency/uses-responsive-images-snapshot.js",eu),fle=1365,rS=class extends v{static{s(this,"UsesResponsiveImagesSnapshot")}static get meta(){return{id:"uses-responsive-images-snapshot",title:Hd(eu.title),failureTitle:Hd(eu.failureTitle),description:va(Qs.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,supportedModes:["snapshot"],guidanceLevel:2,requiredArtifacts:["ImageElements","ViewportDimensions"]}}static async audit(t){let r=1,n=[];for(let o of t.ImageElements){if(o.isCss||!o.naturalDimensions)continue;let u=o.naturalDimensions,l=Qx.getDisplayedDimensions({...o,naturalWidth:u.width,naturalHeight:u.height},t.ViewportDimensions), -c=u.width*u.height,p=l.width*l.height;c<=p||(c-p>fle&&(r=0),n.push({node:v.makeNodeItem(o.node),url:J.elideDataURI(o.src),displayedDimensions:`${l.width}x${l.height}`,actualDimensions:`${u.width}x${u.height}`}))}let i=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Hd(F.columnURL)},{key:"displayedDimensions",valueType:"text",label:Hd(eu.columnDisplayedDimensions)},{key:"actualDimensions",valueType:"text",label:Hd(eu.columnActualDimensions)}],a=v.makeTableDetails(i,n);return{score:r,details:a}}},hle=rS});var CB={};x(CB,{UIStrings:()=>W1,default:()=>vle});var W1,Wd,gle,yle,nS,vle,FB=g(()=>{"use strict";d();Ur();ut();R();W1={title:"Enable text compression",description:"Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/)."},Wd=D("core/audits/byte-efficiency/uses-text-compression.js",W1),gle=1400,yle=.1,nS=class extends ge{static{s(this,"ResponsesAreCompressed")}static get meta(){return{id:"uses-text-compression",title:Wd(W1.title),description:Wd(W1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["ResponseCompression","GatherContext","devtoolsLogs","traces","URL"]}}static audit_(t){let r=t.ResponseCompression,n=[];r.forEach(a=>{if(!a.gzipSize||a.gzipSize<0)return;let o=a.resourceSize,u=a.gzipSize,l=o-u;if(a.transferSize<u||l<gle||l<2e4&&1-u/o<yle)return;let c=J.elideDataURI( -a.url);n.find(m=>m.url===c&&m.totalBytes===a.resourceSize)||n.push({url:c,totalBytes:o,wastedBytes:l})});let i=[{key:"url",valueType:"url",label:Wd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Wd(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Wd(F.columnWastedBytes)}];return{items:n,headings:i}}},vle=nS});var iS,G1,aS=g(()=>{"use strict";d();It();De();Ot();dr();qs();iS=class e{static{s(this,"CriticalRequestChains")}static isCritical(t,r){if(!r)throw new Error("mainResource not provided");if(t.requestId===r.requestId)return!0;if(t.isLinkPreload)return!1;for(;t.redirectDestination;)t=t.redirectDestination;let n=t.resourceType===K.TYPES.Document&&t.frameId!==r.frameId;return[K.TYPES.Image,K.TYPES.XHR,K.TYPES.Fetch,K.TYPES.EventSource].includes(t.resourceType||"Other")||n||t.mimeType&&t.mimeType.startsWith("image/")||!t.initiatorRequest?!1:["VeryHigh","High","Medium"].includes(t.priority)}static extractChainsFromGraph(t,r){let n={};function i(u){let l=n;for(let c of u)l[c.requestId]||(l[c.requestId]={request:c,children:{}}),l=l[c.requestId].children}s(i,"addChain");let a=new Set;function o(u){return u.getDependents().filter(l=>l.getDependencies().every(c=>a.has(c)))}return s(o,"getNextNodes"),r.traverse((u,l)=>{if(a.add(u),u.type!=="network"||!e.isCritical(u.request,t))return;let c=l.filter( -p=>p.type==="network").reverse().map(p=>p.rawRequest);c.some(p=>!e.isCritical(p,t))||K.isNonNetworkRequest(u.request)||i(c)},o),n}static async compute_(t,r){let n=await lt.request(t,r),i=await yn.request(t,r);return e.extractChainsFromGraph(n,i)}},G1=G(iS,["URL","devtoolsLog","trace"])});var kB={};x(kB,{UIStrings:()=>Gd,default:()=>ble});var Gd,oS,sS,ble,_B=g(()=>{"use strict";d();V();R();aS();Gd={title:"Avoid chaining critical requests",description:"The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn how to avoid chaining critical requests](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains/).",displayValue:`{itemCount, plural, + }`},Ri=D("core/audits/byte-efficiency/uses-long-cache-ttl.js",Qs),qde=.925,R2=class e extends b{static{s(this,"CacheHeaders")}static get meta(){return{id:"uses-long-cache-ttl",title:Ri(Qs.title),failureTitle:Ri(Qs.failureTitle),description:Ri(Qs.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["devtoolsLogs"]}}static get defaultOptions(){return{p10:28*1024,median:128*1024}}static getCacheHitProbability(t){let n=[0,.2,1,3,8,12,24,48,72,168,8760,1/0];if(n.length!==12)throw new Error("deciles 0-10 and 1 for overflow");let r=t/3600,a=n.findIndex(l=>l>=r);if(a===n.length-1)return 1;if(a===0)return 0;let o=n[a],i=n[a-1],c=a/10,u=(a-1)/10;return UA(i,u,o,c,r)}static computeCacheLifetimeInSeconds(t,n){if(n&&n["max-age"]!==void 0)return n["max-age"];let r=t.get("expires");if(r){let a=new Date(r).getTime();return a?Math.ceil((a-Date.now())/1e3):0}return null}static isCacheableAsset(t){let n=new Set([200,203,206]),r=new Set([K.TYPES.Font,K.TYPES. +Image,K.TYPES.Media,K.TYPES.Script,K.TYPES.Stylesheet]);return K.isNonNetworkRequest(t)?!1:n.has(t.statusCode)&&r.has(t.resourceType||"Other")}static shouldSkipRecord(t,n){return!!(!n&&(t.get("pragma")||"").includes("no-cache")||n&&(n["must-revalidate"]||n["no-cache"]||n["no-store"]||n["stale-while-revalidate"]||n.private))}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await oe.request(r,n),o=[],i=0;for(let l of a){if(!e.isCacheableAsset(l))continue;let m=new Map;for(let E of l.responseHeaders||[])if(m.has(E.name.toLowerCase())){let S=m.get(E.name.toLowerCase());m.set(E.name.toLowerCase(),`${S}, ${E.value}`)}else m.set(E.name.toLowerCase(),E.value);let p=(0,Z9.default)(m.get("cache-control"));if(this.shouldSkipRecord(m,p))continue;let f=e.computeCacheLifetimeInSeconds(m,p);if(f!==null&&(!Number.isFinite(f)||f<=0))continue;f=f||0;let h=e.getCacheHitProbability(f);if(h>qde)continue;let y=X.elideDataURI(l.url),v=l.transferSize||0,w=(1-h)*v;i+=w;let x;p&&(x={type:"debugdat\ +a",...p}),o.push({url:y,debugData:x,cacheLifetimeMs:f*1e3,cacheHitProbability:h,totalBytes:v,wastedBytes:w})}o.sort((l,m)=>l.cacheLifetimeMs-m.cacheLifetimeMs||m.totalBytes-l.totalBytes||l.url.localeCompare(m.url));let c=[{key:"url",valueType:"url",label:Ri(F.columnURL)},{key:"cacheLifetimeMs",valueType:"ms",label:Ri(F.columnCacheTTL),displayUnit:"duration"},{key:"totalBytes",valueType:"bytes",label:Ri(F.columnTransferSize),displayUnit:"kb",granularity:1}],u=b.makeTableDetails(c,o,{wastedBytes:i,sortedBy:["totalBytes"],skipSumming:["cacheLifetimeMs"]});return{score:o.length?0:1,numericValue:i,numericUnit:"byte",displayValue:Ri(Qs.displayValue,{itemCount:o.length}),details:u}}},Hde=R2});var tB={};T(tB,{UIStrings:()=>Y1,default:()=>Gde});var Y1,Gd,Wde,I2,Gde,nB=g(()=>{"use strict";d();Gn();dt();A();Y1={title:"Efficiently encode images",description:"Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)."},Gd=D("core/audits/byte-efficiency/uses-optimized-images.js",Y1),Wde=4096,I2=class e extends ge{static{s(this,"UsesOptimizedImages")}static get meta(){return{id:"uses-optimized-images",title:Gd(Y1.title),description:Gd(Y1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["OptimizedImages","ImageElements","GatherContext","devtoolsLogs","traces","URL"]}}static computeSavings(t){let n=t.originalSize-t.jpegSize,r=100*n/t.originalSize;return{bytes:n,percent:r}}static estimateJPEGSizeFromDimensions(t){let n=t.naturalWidth*t.naturalHeight,r=2*1/8;return Math.round(n*r)}static audit_(t){let n=t.URL.finalDisplayedUrl, +r=t.OptimizedImages,a=t.ImageElements,o=new Map;a.forEach(l=>o.set(l.src,l));let i=[],c=[];for(let l of r){let m=o.get(l.url);if(l.failed){c.push(`Unable to decode ${X.getURLDisplayName(l.url)}`);continue}else if(/(jpeg|bmp)/.test(l.mimeType)===!1)continue;let p=l.jpegSize,f=!0;if(typeof p>"u"){if(!m){c.push(`Unable to locate resource ${X.getURLDisplayName(l.url)}`);continue}if(!m.naturalDimensions)continue;let w=m.naturalDimensions.height,x=m.naturalDimensions.width;if(!w||!x)continue;p=e.estimateJPEGSizeFromDimensions({naturalHeight:w,naturalWidth:x}),f=!1}if(l.originalSize<p+Wde)continue;let h=X.elideDataURI(l.url),y=!X.originsMatch(n,l.url),v=e.computeSavings({...l,jpegSize:p});i.push({node:m?ge.makeNodeItem(m.node):void 0,url:h,fromProtocol:f,isCrossOrigin:y,totalBytes:l.originalSize,wastedBytes:v.bytes})}let u=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Gd(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Gd(F.columnResourceSize)},{key:"wastedBy\ +tes",valueType:"bytes",label:Gd(F.columnWastedBytes)}];return{warnings:c,items:i,headings:u}}},Gde=I2});var A2,rB,aB=g(()=>{"use strict";d();dt();xe();A2=class e{static{s(this,"ImageRecords")}static indexNetworkRecords(t){return t.reduce((n,r)=>((/^image/.test(r.mimeType)||/\.(avif|webp)$/i.test(r.url))&&r.finished&&r.statusCode===200&&(n[r.url]=r),n),{})}static async compute_(t){let n=e.indexNetworkRecords(t.networkRecords),r=[];for(let a of t.ImageElements){let i=n[a.src]?.mimeType;r.push({...a,mimeType:i||X.guessMimeType(a.src)})}return r.sort((a,o)=>{let i=n[a.src]||{};return(n[o.src]||{}).resourceSize-i.resourceSize}),r}},rB=G(A2,["ImageElements","networkRecords"])});var N2={};T(N2,{UIStrings:()=>ec,default:()=>M2,str_:()=>Io});var ec,Io,Vde,$de,_2,M2,O2=g(()=>{"use strict";d();Gn();Bt();aB();dt();A();ec={title:"Properly size images",description:"Serve images that are appropriately-sized to save cellular data and improve load time. [Learn how to size images](https://developer.chrome.com/docs/lighthouse/performance/uses-responsive-images/)."},Io=D("core/audits/byte-efficiency/uses-responsive-images.js",ec),Vde=4096,$de=12288,_2=class e extends ge{static{s(this,"UsesResponsiveImages")}static get meta(){return{id:"uses-responsive-images",title:Io(ec.title),description:Io(ec.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["ImageElements","ViewportDimensions","GatherContext","devtoolsLogs","traces","URL"]}}static getDisplayedDimensions(t,n){if(t.displayedWidth&&t.displayedHeight)return{width:t.displayedWidth*n.devicePixelRatio,height:t.displayedHeight*n.devicePixelRatio};let r=n.innerWidth,a=n.innerHeight* +2,o=t.naturalWidth/t.naturalHeight,i=r/a,c=r,u=a;return o>i?u=r/o:c=a*o,{width:c*n.devicePixelRatio,height:u*n.devicePixelRatio}}static computeWaste(t,n,r){let a=r.find(f=>f.url===t.src);if(!a)return null;let o=this.getDisplayedDimensions(t,n),i=o.width*o.height,c=X.elideDataURI(t.src),u=t.naturalWidth*t.naturalHeight,l=1-i/u,m=K.getResourceSizeOnNetwork(a),p=Math.round(m*l);return{node:ge.makeNodeItem(t.node),url:c,totalBytes:m,wastedBytes:p,wastedPercent:100*l}}static determineAllowableWaste(t){return t.srcset||t.isPicture?$de:Vde}static async audit_(t,n,r){let a=await rB.request({ImageElements:t.ImageElements,networkRecords:n},r),o=t.ViewportDimensions,i=new Map,c=[];for(let m of a){if(m.mimeType==="image/svg+xml"||m.isCss||!m.naturalDimensions)continue;let p=m.naturalDimensions.height,f=m.naturalDimensions.width;if(!f||!p)continue;let h=e.computeWaste({...m,naturalHeight:p,naturalWidth:f},o,n);if(!h)continue;let y=h.wastedBytes>this.determineAllowableWaste(m),v=i.get(h.url);y&&!c.includes( +h.url)?(!v||v.wastedBytes>h.wastedBytes)&&i.set(h.url,h):(i.delete(h.url),c.push(h.url))}let u=Array.from(i.values()),l=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Io(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:Io(F.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Io(F.columnWastedBytes)}];return{items:u,headings:l}}},M2=_2});var oB={};T(oB,{UIStrings:()=>tc,default:()=>Kde});var tc,Vd,Yde,L2,Kde,iB=g(()=>{"use strict";d();V();O2();dt();A();tc={title:"Images were appropriate for their displayed size",failureTitle:"Images were larger than their displayed size",columnDisplayedDimensions:"Displayed dimensions",columnActualDimensions:"Actual dimensions"},Vd=D("core/audits/byte-efficiency/uses-responsive-images-snapshot.js",tc),Yde=1365,L2=class extends b{static{s(this,"UsesResponsiveImagesSnapshot")}static get meta(){return{id:"uses-responsive-images-snapshot",title:Vd(tc.title),failureTitle:Vd(tc.failureTitle),description:Io(ec.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,supportedModes:["snapshot"],guidanceLevel:2,requiredArtifacts:["ImageElements","ViewportDimensions"]}}static async audit(t){let n=1,r=[];for(let i of t.ImageElements){if(i.isCss||!i.naturalDimensions)continue;let c=i.naturalDimensions,u=M2.getDisplayedDimensions({...i,naturalWidth:c.width,naturalHeight:c.height},t.ViewportDimensions), +l=c.width*c.height,m=u.width*u.height;l<=m||(l-m>Yde&&(n=0),r.push({node:b.makeNodeItem(i.node),url:X.elideDataURI(i.src),displayedDimensions:`${u.width}x${u.height}`,actualDimensions:`${c.width}x${c.height}`}))}let a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Vd(F.columnURL)},{key:"displayedDimensions",valueType:"text",label:Vd(tc.columnDisplayedDimensions)},{key:"actualDimensions",valueType:"text",label:Vd(tc.columnActualDimensions)}],o=b.makeTableDetails(a,r);return{score:n,details:o}}},Kde=L2});var sB={};T(sB,{UIStrings:()=>K1,default:()=>Zde});var K1,$d,Jde,Xde,P2,Zde,cB=g(()=>{"use strict";d();Gn();dt();A();K1={title:"Enable text compression",description:"Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/)."},$d=D("core/audits/byte-efficiency/uses-text-compression.js",K1),Jde=1400,Xde=.1,P2=class extends ge{static{s(this,"ResponsesAreCompressed")}static get meta(){return{id:"uses-text-compression",title:$d(K1.title),description:$d(K1.description),scoreDisplayMode:ge.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["ResponseCompression","GatherContext","devtoolsLogs","traces","URL"]}}static audit_(t){let n=t.ResponseCompression,r=[];n.forEach(o=>{if(!o.gzipSize||o.gzipSize<0)return;let i=o.resourceSize,c=o.gzipSize,u=i-c;if(o.transferSize<c||u<Jde||u<2e4&&1-c/i<Xde)return;let l=X.elideDataURI( +o.url);r.find(p=>p.url===l&&p.totalBytes===o.resourceSize)||r.push({url:l,totalBytes:i,wastedBytes:u})});let a=[{key:"url",valueType:"url",label:$d(F.columnURL)},{key:"totalBytes",valueType:"bytes",label:$d(F.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:$d(F.columnWastedBytes)}];return{items:r,headings:a}}},Zde=P2});var B2,J1,U2=g(()=>{"use strict";d();Mt();xe();Bt();rn();qs();B2=class e{static{s(this,"CriticalRequestChains")}static isCritical(t,n){if(!n)throw new Error("mainResource not provided");if(t.requestId===n.requestId)return!0;if(t.isLinkPreload)return!1;for(;t.redirectDestination;)t=t.redirectDestination;let r=t.resourceType===K.TYPES.Document&&t.frameId!==n.frameId;return[K.TYPES.Image,K.TYPES.XHR,K.TYPES.Fetch,K.TYPES.EventSource].includes(t.resourceType||"Other")||r||t.mimeType&&t.mimeType.startsWith("image/")||!t.initiatorRequest?!1:["VeryHigh","High","Medium"].includes(t.priority)}static extractChainsFromGraph(t,n){let r={};function a(c){let u=r;for(let l of c)u[l.requestId]||(u[l.requestId]={request:l,children:{}}),u=u[l.requestId].children}s(a,"addChain");let o=new Set;function i(c){return c.getDependents().filter(u=>u.getDependencies().every(l=>o.has(l)))}return s(i,"getNextNodes"),n.traverse((c,u)=>{if(o.add(c),c.type!=="network"||!e.isCritical(c.request,t))return;let l=u.filter( +m=>m.type==="network").reverse().map(m=>m.rawRequest);l.some(m=>!e.isCritical(m,t))||K.isNonNetworkRequest(c.request)||a(l)},i),r}static async compute_(t,n){let r=await Qe.request(t,n),a=await Sr.request(t,n);return e.extractChainsFromGraph(r,a)}},J1=G(B2,["URL","devtoolsLog","trace"])});var uB={};T(uB,{UIStrings:()=>Yd,default:()=>Qde});var Yd,j2,z2,Qde,lB=g(()=>{"use strict";d();V();A();U2();Yd={title:"Avoid chaining critical requests",description:"The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn how to avoid chaining critical requests](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains/).",displayValue:`{itemCount, plural, =1 {1 chain found} other {# chains found} - }`},oS=D("core/audits/critical-request-chains.js",Gd),sS=class e extends v{static{s(this,"CriticalRequestChains")}static get meta(){return{id:"critical-request-chains",title:oS(Gd.title),description:oS(Gd.description),scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,supportedModes:["navigation"],guidanceLevel:1,requiredArtifacts:["traces","devtoolsLogs","URL"]}}static _traverse(t,r){function n(i,a,o,u=0){let l=Object.keys(i);l.length!==0&&l.forEach(c=>{let p=i[c];o||(o=p.request.networkRequestTime),r({depth:a,id:c,node:p,chainDuration:p.request.networkEndTime-o,chainTransferSize:u+p.request.transferSize}),p.children&&n(p.children,a+1,o)},"")}s(n,"walk"),n(t,0)}static _getLongestChain(t){let r={duration:0,length:0,transferSize:0};return e._traverse(t,n=>{let i=n.chainDuration;i>r.duration&&(r.duration=i,r.transferSize=n.chainTransferSize,r.length=n.depth)}),r.length++,r}static flattenRequests(t){let r={},n=new Map;function i(a){let o=a.node.request,u={url:o.url,startTime:o.networkRequestTime/ -1e3,endTime:o.networkEndTime/1e3,responseReceivedTime:o.responseHeadersEndTime/1e3,transferSize:o.transferSize},l=n.get(a.id);if(l?l.request=u:(l={request:u},r[a.id]=l),a.node.children)for(let c of Object.keys(a.node.children)){let p={request:{}};n.set(c,p),l.children||(l.children={}),l.children[c]=p}n.set(a.id,l)}return s(i,"flatten"),e._traverse(t,i),r}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.URL,o=await G1.request({devtoolsLog:i,trace:n,URL:a},r),u=0;function l(h,y){Object.keys(h).forEach(w=>{let E=h[w];E.children?l(E.children,y+1):u++},"")}s(l,"walk");let c=e.flattenRequests(o),p=Object.keys(c)[0],m=p&&c[p].children;m&&Object.keys(m).length>0&&l(m,0);let f=e._getLongestChain(o);return{score:+(u===0),notApplicable:u===0,displayValue:u?oS(Gd.displayValue,{itemCount:u}):"",details:{type:"criticalrequestchain",chains:c,longestChain:f}}}},ble=sS});var tu=pe(Gn=>{"use strict";d();Object.defineProperty(Gn,"__esModule",{value:!0});Gn.Type=Gn.Severity=Gn.Finding=void 0;var uS=class e{static{s(this,"Finding")}constructor(t,r,n,i,a){this.type=t,this.description=r,this.severity=n,this.directive=i,this.value=a}static getHighestSeverity(t){if(t.length===0)return lS.NONE;let r=t.map(i=>i.severity),n=s((i,a)=>i<a?i:a,"min");return r.reduce(n,lS.NONE)}equals(t){return t instanceof e?t.type===this.type&&t.description===this.description&&t.severity===this.severity&&t.directive===this.directive&&t.value===this.value:!1}};Gn.Finding=uS;var lS;(function(e){e[e.HIGH=10]="HIGH",e[e.SYNTAX=20]="SYNTAX",e[e.MEDIUM=30]="MEDIUM",e[e.HIGH_MAYBE=40]="HIGH_MAYBE",e[e.STRICT_CSP=45]="STRICT_CSP",e[e.MEDIUM_MAYBE=50]="MEDIUM_MAYBE",e[e.INFO=60]="INFO",e[e.NONE=100]="NONE"})(lS=Gn.Severity||(Gn.Severity={}));var wle;(function(e){e[e.MISSING_SEMICOLON=100]="MISSING_SEMICOLON",e[e.UNKNOWN_DIRECTIVE=101]="UNKNOWN_DIRECTIVE",e[e.INVALID_KEYWORD=102]="INVALID_KE\ + }`},j2=D("core/audits/critical-request-chains.js",Yd),z2=class e extends b{static{s(this,"CriticalRequestChains")}static get meta(){return{id:"critical-request-chains",title:j2(Yd.title),description:j2(Yd.description),scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,supportedModes:["navigation"],guidanceLevel:1,requiredArtifacts:["traces","devtoolsLogs","URL"]}}static _traverse(t,n){function r(a,o,i,c=0){let u=Object.keys(a);u.length!==0&&u.forEach(l=>{let m=a[l];i||(i=m.request.networkRequestTime),n({depth:o,id:l,node:m,chainDuration:m.request.networkEndTime-i,chainTransferSize:c+m.request.transferSize}),m.children&&r(m.children,o+1,i)},"")}s(r,"walk"),r(t,0)}static _getLongestChain(t){let n={duration:0,length:0,transferSize:0};return e._traverse(t,r=>{let a=r.chainDuration;a>n.duration&&(n.duration=a,n.transferSize=r.chainTransferSize,n.length=r.depth)}),n.length++,n}static flattenRequests(t){let n={},r=new Map;function a(o){let i=o.node.request,c={url:i.url,startTime:i.networkRequestTime/ +1e3,endTime:i.networkEndTime/1e3,responseReceivedTime:i.responseHeadersEndTime/1e3,transferSize:i.transferSize},u=r.get(o.id);if(u?u.request=c:(u={request:c},n[o.id]=u),o.node.children)for(let l of Object.keys(o.node.children)){let m={request:{}};r.set(l,m),u.children||(u.children={}),u.children[l]=m}r.set(o.id,u)}return s(a,"flatten"),e._traverse(t,a),n}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.URL,i=await J1.request({devtoolsLog:a,trace:r,URL:o},n),c=0;function u(h,y){Object.keys(h).forEach(w=>{let x=h[w];x.children?u(x.children,y+1):c++},"")}s(u,"walk");let l=e.flattenRequests(i),m=Object.keys(l)[0],p=m&&l[m].children;p&&Object.keys(p).length>0&&u(p,0);let f=e._getLongestChain(i);return{score:+(c===0),notApplicable:c===0,displayValue:c?j2(Yd.displayValue,{itemCount:c}):"",details:{type:"criticalrequestchain",chains:l,longestChain:f}}}},Qde=z2});var nc=de(Qr=>{"use strict";d();Object.defineProperty(Qr,"__esModule",{value:!0});Qr.Type=Qr.Severity=Qr.Finding=void 0;var q2=class e{static{s(this,"Finding")}constructor(t,n,r,a,o){this.type=t,this.description=n,this.severity=r,this.directive=a,this.value=o}static getHighestSeverity(t){if(t.length===0)return H2.NONE;let n=t.map(a=>a.severity),r=s((a,o)=>a<o?a:o,"min");return n.reduce(r,H2.NONE)}equals(t){return t instanceof e?t.type===this.type&&t.description===this.description&&t.severity===this.severity&&t.directive===this.directive&&t.value===this.value:!1}};Qr.Finding=q2;var H2;(function(e){e[e.HIGH=10]="HIGH",e[e.SYNTAX=20]="SYNTAX",e[e.MEDIUM=30]="MEDIUM",e[e.HIGH_MAYBE=40]="HIGH_MAYBE",e[e.STRICT_CSP=45]="STRICT_CSP",e[e.MEDIUM_MAYBE=50]="MEDIUM_MAYBE",e[e.INFO=60]="INFO",e[e.NONE=100]="NONE"})(H2=Qr.Severity||(Qr.Severity={}));var eme;(function(e){e[e.MISSING_SEMICOLON=100]="MISSING_SEMICOLON",e[e.UNKNOWN_DIRECTIVE=101]="UNKNOWN_DIRECTIVE",e[e.INVALID_KEYWORD=102]="INVALID_KE\ YWORD",e[e.NONCE_CHARSET=106]="NONCE_CHARSET",e[e.MISSING_DIRECTIVES=300]="MISSING_DIRECTIVES",e[e.SCRIPT_UNSAFE_INLINE=301]="SCRIPT_UNSAFE_INLINE",e[e.SCRIPT_UNSAFE_EVAL=302]="SCRIPT_UNSAFE_EVAL",e[e.PLAIN_URL_SCHEMES=303]="PLAIN_URL_SCHEMES",e[e.PLAIN_WILDCARD=304]="PLAIN_WILDCARD",e[e.SCRIPT_ALLOWLIST_BYPASS=305]="SCRIPT_ALLOWLIST_BYPASS",e[e.OBJECT_ALLOWLIST_BYPASS=306]="OBJECT_ALLOWLIST_BYPASS",e[e.NONCE_LENGTH=307]="NONCE_LENGTH",e[e.IP_SOURCE=308]="IP_SOURCE",e[e.DEPRECATED_DIRECTIVE=309]="DEPRECATED_DIRECTIVE",e[e.SRC_HTTP=310]="SRC_HTTP",e[e.STRICT_DYNAMIC=400]="STRICT_DYNAMIC",e[e.STRICT_DYNAMIC_NOT_STANDALONE=401]="STRICT_DYNAMIC_NOT_STANDALONE",e[e.NONCE_HASH=402]="NONCE_HASH",e[e.UNSAFE_INLINE_FALLBACK=403]="UNSAFE_INLINE_FALLBACK",e[e.ALLOWLIST_FALLBACK=404]="ALLOWLIST_FALLBACK",e[e.IGNORED=405]="IGNORED",e[e.REQUIRE_TRUSTED_TYPES_FOR_SCRIPTS=500]="REQUIRE_TRUSTED_TYPES_FOR_SCRIPTS",e[e.REPORTING_DESTINATION_MISSING=600]="REPORTING_DESTINATION_MISSING",e[e.REPORT_TO_ONLY= -601]="REPORT_TO_ONLY"})(wle=Gn.Type||(Gn.Type={}))});var Vn=pe(Te=>{"use strict";d();Object.defineProperty(Te,"__esModule",{value:!0});Te.CspError=Te.isHash=Te.HASH_PATTERN=Te.STRICT_HASH_PATTERN=Te.isNonce=Te.NONCE_PATTERN=Te.STRICT_NONCE_PATTERN=Te.isUrlScheme=Te.isKeyword=Te.isDirective=Te.Version=Te.FETCH_DIRECTIVES=Te.Directive=Te.TrustedTypesSink=Te.Keyword=Te.Csp=void 0;var ru=tu(),cS=class e{static{s(this,"Csp")}constructor(){this.directives={}}clone(){let t=new e;for(let[r,n]of Object.entries(this.directives))n&&(t.directives[r]=[...n]);return t}convertToString(){let t="";for(let[r,n]of Object.entries(this.directives)){if(t+=r,n!==void 0)for(let i,a=0;i=n[a];a++)t+=" ",t+=i;t+="; "}return t}getEffectiveCsp(t,r){let n=r||[],i=this.clone(),a=i.getEffectiveDirective(ht.SCRIPT_SRC),o=this.directives[a]||[],u=i.directives[a];if(u&&(i.policyHasScriptNonces()||i.policyHasScriptHashes()))if(t>=$1.CSP2)o.includes(Fi.UNSAFE_INLINE)&&(V1(u,Fi.UNSAFE_INLINE),n.push(new ru.Finding(ru.Type.IGNORED,"unsafe-inline is ignored if a nonce or a has\ -h is present. (CSP2 and above)",ru.Severity.NONE,a,Fi.UNSAFE_INLINE)));else for(let l of o)(l.startsWith("'nonce-")||l.startsWith("'sha"))&&V1(u,l);if(u&&this.policyHasStrictDynamic())if(t>=$1.CSP3)for(let l of o)(!l.startsWith("'")||l===Fi.SELF||l===Fi.UNSAFE_INLINE)&&(V1(u,l),n.push(new ru.Finding(ru.Type.IGNORED,"Because of strict-dynamic this entry is ignored in CSP3 and above",ru.Severity.NONE,a,l)));else V1(u,Fi.STRICT_DYNAMIC);return t<$1.CSP3&&(delete i.directives[ht.REPORT_TO],delete i.directives[ht.WORKER_SRC],delete i.directives[ht.MANIFEST_SRC],delete i.directives[ht.TRUSTED_TYPES],delete i.directives[ht.REQUIRE_TRUSTED_TYPES_FOR]),i}getEffectiveDirective(t){return!(t in this.directives)&&Te.FETCH_DIRECTIVES.includes(t)?ht.DEFAULT_SRC:t}getEffectiveDirectives(t){return[...new Set(t.map(n=>this.getEffectiveDirective(n)))]}policyHasScriptNonces(){let t=this.getEffectiveDirective(ht.SCRIPT_SRC);return(this.directives[t]||[]).some(n=>RB(n))}policyHasScriptHashes(){let t=this.getEffectiveDirective( -ht.SCRIPT_SRC);return(this.directives[t]||[]).some(n=>IB(n))}policyHasStrictDynamic(){let t=this.getEffectiveDirective(ht.SCRIPT_SRC);return(this.directives[t]||[]).includes(Fi.STRICT_DYNAMIC)}};Te.Csp=cS;var Fi;(function(e){e.SELF="'self'",e.NONE="'none'",e.UNSAFE_INLINE="'unsafe-inline'",e.UNSAFE_EVAL="'unsafe-eval'",e.WASM_EVAL="'wasm-eval'",e.WASM_UNSAFE_EVAL="'wasm-unsafe-eval'",e.STRICT_DYNAMIC="'strict-dynamic'",e.UNSAFE_HASHED_ATTRIBUTES="'unsafe-hashed-attributes'",e.UNSAFE_HASHES="'unsafe-hashes'",e.REPORT_SAMPLE="'report-sample'",e.BLOCK="'block'",e.ALLOW="'allow'"})(Fi=Te.Keyword||(Te.Keyword={}));var Dle;(function(e){e.SCRIPT="'script'"})(Dle=Te.TrustedTypesSink||(Te.TrustedTypesSink={}));var ht;(function(e){e.CHILD_SRC="child-src",e.CONNECT_SRC="connect-src",e.DEFAULT_SRC="default-src",e.FONT_SRC="font-src",e.FRAME_SRC="frame-src",e.IMG_SRC="img-src",e.MEDIA_SRC="media-src",e.OBJECT_SRC="object-src",e.SCRIPT_SRC="script-src",e.SCRIPT_SRC_ATTR="script-src-attr",e.SCRIPT_SRC_ELEM= -"script-src-elem",e.STYLE_SRC="style-src",e.STYLE_SRC_ATTR="style-src-attr",e.STYLE_SRC_ELEM="style-src-elem",e.PREFETCH_SRC="prefetch-src",e.MANIFEST_SRC="manifest-src",e.WORKER_SRC="worker-src",e.BASE_URI="base-uri",e.PLUGIN_TYPES="plugin-types",e.SANDBOX="sandbox",e.DISOWN_OPENER="disown-opener",e.FORM_ACTION="form-action",e.FRAME_ANCESTORS="frame-ancestors",e.NAVIGATE_TO="navigate-to",e.REPORT_TO="report-to",e.REPORT_URI="report-uri",e.BLOCK_ALL_MIXED_CONTENT="block-all-mixed-content",e.UPGRADE_INSECURE_REQUESTS="upgrade-insecure-requests",e.REFLECTED_XSS="reflected-xss",e.REFERRER="referrer",e.REQUIRE_SRI_FOR="require-sri-for",e.TRUSTED_TYPES="trusted-types",e.REQUIRE_TRUSTED_TYPES_FOR="require-trusted-types-for",e.WEBRTC="webrtc"})(ht=Te.Directive||(Te.Directive={}));Te.FETCH_DIRECTIVES=[ht.CHILD_SRC,ht.CONNECT_SRC,ht.DEFAULT_SRC,ht.FONT_SRC,ht.FRAME_SRC,ht.IMG_SRC,ht.MANIFEST_SRC,ht.MEDIA_SRC,ht.OBJECT_SRC,ht.SCRIPT_SRC,ht.SCRIPT_SRC_ATTR,ht.SCRIPT_SRC_ELEM,ht.STYLE_SRC,ht.STYLE_SRC_ATTR, -ht.STYLE_SRC_ELEM,ht.WORKER_SRC];var $1;(function(e){e[e.CSP1=1]="CSP1",e[e.CSP2=2]="CSP2",e[e.CSP3=3]="CSP3"})($1=Te.Version||(Te.Version={}));function Ele(e){return Object.values(ht).includes(e)}s(Ele,"isDirective");Te.isDirective=Ele;function Tle(e){return Object.values(Fi).includes(e)}s(Tle,"isKeyword");Te.isKeyword=Tle;function xle(e){return new RegExp("^[a-zA-Z][+a-zA-Z0-9.-]*:$").test(e)}s(xle,"isUrlScheme");Te.isUrlScheme=xle;Te.STRICT_NONCE_PATTERN=new RegExp("^'nonce-[a-zA-Z0-9+/_-]+[=]{0,2}'$");Te.NONCE_PATTERN=new RegExp("^'nonce-(.+)'$");function RB(e,t){return(t?Te.STRICT_NONCE_PATTERN:Te.NONCE_PATTERN).test(e)}s(RB,"isNonce");Te.isNonce=RB;Te.STRICT_HASH_PATTERN=new RegExp("^'(sha256|sha384|sha512)-[a-zA-Z0-9+/]+[=]{0,2}'$");Te.HASH_PATTERN=new RegExp("^'(sha256|sha384|sha512)-(.+)'$");function IB(e,t){return(t?Te.STRICT_HASH_PATTERN:Te.HASH_PATTERN).test(e)}s(IB,"isHash");Te.isHash=IB;var dS=class extends Error{static{s(this,"CspError")}constructor(t){super(t)}};Te.CspError= -dS;function V1(e,t){if(e.includes(t)){let r=e.findIndex(n=>t===n);e.splice(r,1)}}s(V1,"arrayRemove")});var AB=pe(Nr=>{"use strict";d();var Sle=Nr&&Nr.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Cle=Nr&&Nr.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fle=Nr&&Nr.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Sle(t,e,r);return Cle(t,e),t};Object.defineProperty(Nr,"__esModule",{value:!0});Nr.checkInvalidKeyword=Nr.checkMissingSemicolon=Nr.checkUnknownDirective=void 0;var ba=Fle(Vn()),kle=Vn(),xr=tu();function _le(e){let t=[];for(let r of Object.keys(e.directives))ba.isDirective(r)||(r.endsWith(":")?t.push(new xr.Finding(xr.Type.UNKNOWN_DIRECTIVE,"CSP directives don't end with a colon.",xr.Severity.SYNTAX,r)):t.push(new xr.Finding(xr.Type.UNKNOWN_DIRECTIVE,'Dire\ -ctive "'+r+'" is not a known CSP directive.',xr.Severity.SYNTAX,r)));return t}s(_le,"checkUnknownDirective");Nr.checkUnknownDirective=_le;function Rle(e){let t=[];for(let[r,n]of Object.entries(e.directives))if(n!==void 0)for(let i of n)ba.isDirective(i)&&t.push(new xr.Finding(xr.Type.MISSING_SEMICOLON,'Did you forget the semicolon? "'+i+'" seems to be a directive, not a value.',xr.Severity.SYNTAX,r,i));return t}s(Rle,"checkMissingSemicolon");Nr.checkMissingSemicolon=Rle;function Ile(e){let t=[],r=Object.values(kle.Keyword).map(n=>n.replace(/'/g,""));for(let[n,i]of Object.entries(e.directives))if(i!==void 0)for(let a of i){if(r.some(o=>o===a)||a.startsWith("nonce-")||a.match(/^(sha256|sha384|sha512)-/)){t.push(new xr.Finding(xr.Type.INVALID_KEYWORD,'Did you forget to surround "'+a+'" with single-ticks?',xr.Severity.SYNTAX,n,a));continue}if(a.startsWith("'")){if(n===ba.Directive.REQUIRE_TRUSTED_TYPES_FOR){if(a===ba.TrustedTypesSink.SCRIPT)continue}else if(n===ba.Directive.TRUSTED_TYPES){ -if(a==="'allow-duplicates'"||a==="'none'")continue}else if(ba.isKeyword(a)||ba.isHash(a)||ba.isNonce(a))continue;t.push(new xr.Finding(xr.Type.INVALID_KEYWORD,a+" seems to be an invalid CSP keyword.",xr.Severity.SYNTAX,n,a))}}return t}s(Ile,"checkInvalidKeyword");Nr.checkInvalidKeyword=Ile});var NB=pe(Y1=>{"use strict";d();Object.defineProperty(Y1,"__esModule",{value:!0});Y1.URLS=void 0;Y1.URLS=["//gstatic.com/fsn/angular_js-bundle1.js","//www.gstatic.com/fsn/angular_js-bundle1.js","//www.googleadservices.com/pageadimg/imgad","//yandex.st/angularjs/1.2.16/angular-cookies.min.js","//yastatic.net/angularjs/1.2.23/angular.min.js","//yuedust.yuedu.126.net/js/components/angular/angular.js","//art.jobs.netease.com/script/angular.js","//csu-c45.kxcdn.com/angular/angular.js","//elysiumwebsite.s3.amazonaws.com/uploads/blog-media/rockstar/angular.min.js","//inno.blob.core.windows.net/new/libs/AngularJS/1.2.1/angular.min.js","//gift-talk.kakao.com/public/javascripts/angular.min.js","//ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js","//master-sumok.ru/vendors/angular/angular-cookies.js","//ayicommon-a.akamaihd.net/static/vendor/angular-1.4.2.min.js","//pangxiehaitao.com/framework/angular-1.3.9/angular-animate.min.js","//cdnjs.cloudflare.com/ajax/libs/angular.js/\ +601]="REPORT_TO_ONLY"})(eme=Qr.Type||(Qr.Type={}))});var ea=de(Se=>{"use strict";d();Object.defineProperty(Se,"__esModule",{value:!0});Se.CspError=Se.isHash=Se.HASH_PATTERN=Se.STRICT_HASH_PATTERN=Se.isNonce=Se.NONCE_PATTERN=Se.STRICT_NONCE_PATTERN=Se.isUrlScheme=Se.isKeyword=Se.isDirective=Se.Version=Se.FETCH_DIRECTIVES=Se.Directive=Se.TrustedTypesSink=Se.Keyword=Se.Csp=void 0;var rc=nc(),W2=class e{static{s(this,"Csp")}constructor(){this.directives={}}clone(){let t=new e;for(let[n,r]of Object.entries(this.directives))r&&(t.directives[n]=[...r]);return t}convertToString(){let t="";for(let[n,r]of Object.entries(this.directives)){if(t+=n,r!==void 0)for(let a,o=0;a=r[o];o++)t+=" ",t+=a;t+="; "}return t}getEffectiveCsp(t,n){let r=n||[],a=this.clone(),o=a.getEffectiveDirective(yt.SCRIPT_SRC),i=this.directives[o]||[],c=a.directives[o];if(c&&(a.policyHasScriptNonces()||a.policyHasScriptHashes()))if(t>=Z1.CSP2)i.includes(Oa.UNSAFE_INLINE)&&(X1(c,Oa.UNSAFE_INLINE),r.push(new rc.Finding(rc.Type.IGNORED,"unsafe-inline is ignored if a nonce or a has\ +h is present. (CSP2 and above)",rc.Severity.NONE,o,Oa.UNSAFE_INLINE)));else for(let u of i)(u.startsWith("'nonce-")||u.startsWith("'sha"))&&X1(c,u);if(c&&this.policyHasStrictDynamic())if(t>=Z1.CSP3)for(let u of i)(!u.startsWith("'")||u===Oa.SELF||u===Oa.UNSAFE_INLINE)&&(X1(c,u),r.push(new rc.Finding(rc.Type.IGNORED,"Because of strict-dynamic this entry is ignored in CSP3 and above",rc.Severity.NONE,o,u)));else X1(c,Oa.STRICT_DYNAMIC);return t<Z1.CSP3&&(delete a.directives[yt.REPORT_TO],delete a.directives[yt.WORKER_SRC],delete a.directives[yt.MANIFEST_SRC],delete a.directives[yt.TRUSTED_TYPES],delete a.directives[yt.REQUIRE_TRUSTED_TYPES_FOR]),a}getEffectiveDirective(t){return!(t in this.directives)&&Se.FETCH_DIRECTIVES.includes(t)?yt.DEFAULT_SRC:t}getEffectiveDirectives(t){return[...new Set(t.map(r=>this.getEffectiveDirective(r)))]}policyHasScriptNonces(){let t=this.getEffectiveDirective(yt.SCRIPT_SRC);return(this.directives[t]||[]).some(r=>dB(r))}policyHasScriptHashes(){let t=this.getEffectiveDirective( +yt.SCRIPT_SRC);return(this.directives[t]||[]).some(r=>mB(r))}policyHasStrictDynamic(){let t=this.getEffectiveDirective(yt.SCRIPT_SRC);return(this.directives[t]||[]).includes(Oa.STRICT_DYNAMIC)}};Se.Csp=W2;var Oa;(function(e){e.SELF="'self'",e.NONE="'none'",e.UNSAFE_INLINE="'unsafe-inline'",e.UNSAFE_EVAL="'unsafe-eval'",e.WASM_EVAL="'wasm-eval'",e.WASM_UNSAFE_EVAL="'wasm-unsafe-eval'",e.STRICT_DYNAMIC="'strict-dynamic'",e.UNSAFE_HASHED_ATTRIBUTES="'unsafe-hashed-attributes'",e.UNSAFE_HASHES="'unsafe-hashes'",e.REPORT_SAMPLE="'report-sample'",e.BLOCK="'block'",e.ALLOW="'allow'"})(Oa=Se.Keyword||(Se.Keyword={}));var tme;(function(e){e.SCRIPT="'script'"})(tme=Se.TrustedTypesSink||(Se.TrustedTypesSink={}));var yt;(function(e){e.CHILD_SRC="child-src",e.CONNECT_SRC="connect-src",e.DEFAULT_SRC="default-src",e.FONT_SRC="font-src",e.FRAME_SRC="frame-src",e.IMG_SRC="img-src",e.MEDIA_SRC="media-src",e.OBJECT_SRC="object-src",e.SCRIPT_SRC="script-src",e.SCRIPT_SRC_ATTR="script-src-attr",e.SCRIPT_SRC_ELEM= +"script-src-elem",e.STYLE_SRC="style-src",e.STYLE_SRC_ATTR="style-src-attr",e.STYLE_SRC_ELEM="style-src-elem",e.PREFETCH_SRC="prefetch-src",e.MANIFEST_SRC="manifest-src",e.WORKER_SRC="worker-src",e.BASE_URI="base-uri",e.PLUGIN_TYPES="plugin-types",e.SANDBOX="sandbox",e.DISOWN_OPENER="disown-opener",e.FORM_ACTION="form-action",e.FRAME_ANCESTORS="frame-ancestors",e.NAVIGATE_TO="navigate-to",e.REPORT_TO="report-to",e.REPORT_URI="report-uri",e.BLOCK_ALL_MIXED_CONTENT="block-all-mixed-content",e.UPGRADE_INSECURE_REQUESTS="upgrade-insecure-requests",e.REFLECTED_XSS="reflected-xss",e.REFERRER="referrer",e.REQUIRE_SRI_FOR="require-sri-for",e.TRUSTED_TYPES="trusted-types",e.REQUIRE_TRUSTED_TYPES_FOR="require-trusted-types-for",e.WEBRTC="webrtc"})(yt=Se.Directive||(Se.Directive={}));Se.FETCH_DIRECTIVES=[yt.CHILD_SRC,yt.CONNECT_SRC,yt.DEFAULT_SRC,yt.FONT_SRC,yt.FRAME_SRC,yt.IMG_SRC,yt.MANIFEST_SRC,yt.MEDIA_SRC,yt.OBJECT_SRC,yt.SCRIPT_SRC,yt.SCRIPT_SRC_ATTR,yt.SCRIPT_SRC_ELEM,yt.STYLE_SRC,yt.STYLE_SRC_ATTR, +yt.STYLE_SRC_ELEM,yt.WORKER_SRC];var Z1;(function(e){e[e.CSP1=1]="CSP1",e[e.CSP2=2]="CSP2",e[e.CSP3=3]="CSP3"})(Z1=Se.Version||(Se.Version={}));function nme(e){return Object.values(yt).includes(e)}s(nme,"isDirective");Se.isDirective=nme;function rme(e){return Object.values(Oa).includes(e)}s(rme,"isKeyword");Se.isKeyword=rme;function ame(e){return new RegExp("^[a-zA-Z][+a-zA-Z0-9.-]*:$").test(e)}s(ame,"isUrlScheme");Se.isUrlScheme=ame;Se.STRICT_NONCE_PATTERN=new RegExp("^'nonce-[a-zA-Z0-9+/_-]+[=]{0,2}'$");Se.NONCE_PATTERN=new RegExp("^'nonce-(.+)'$");function dB(e,t){return(t?Se.STRICT_NONCE_PATTERN:Se.NONCE_PATTERN).test(e)}s(dB,"isNonce");Se.isNonce=dB;Se.STRICT_HASH_PATTERN=new RegExp("^'(sha256|sha384|sha512)-[a-zA-Z0-9+/]+[=]{0,2}'$");Se.HASH_PATTERN=new RegExp("^'(sha256|sha384|sha512)-(.+)'$");function mB(e,t){return(t?Se.STRICT_HASH_PATTERN:Se.HASH_PATTERN).test(e)}s(mB,"isHash");Se.isHash=mB;var G2=class extends Error{static{s(this,"CspError")}constructor(t){super(t)}};Se.CspError= +G2;function X1(e,t){if(e.includes(t)){let n=e.findIndex(r=>t===r);e.splice(n,1)}}s(X1,"arrayRemove")});var pB=de(Bn=>{"use strict";d();var ome=Bn&&Bn.__createBinding||(Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]}),ime=Bn&&Bn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sme=Bn&&Bn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&ome(t,e,n);return ime(t,e),t};Object.defineProperty(Bn,"__esModule",{value:!0});Bn.checkInvalidKeyword=Bn.checkMissingSemicolon=Bn.checkUnknownDirective=void 0;var Ao=sme(ea()),cme=ea(),Rn=nc();function ume(e){let t=[];for(let n of Object.keys(e.directives))Ao.isDirective(n)||(n.endsWith(":")?t.push(new Rn.Finding(Rn.Type.UNKNOWN_DIRECTIVE,"CSP directives don't end with a colon.",Rn.Severity.SYNTAX,n)):t.push(new Rn.Finding(Rn.Type.UNKNOWN_DIRECTIVE,'Dire\ +ctive "'+n+'" is not a known CSP directive.',Rn.Severity.SYNTAX,n)));return t}s(ume,"checkUnknownDirective");Bn.checkUnknownDirective=ume;function lme(e){let t=[];for(let[n,r]of Object.entries(e.directives))if(r!==void 0)for(let a of r)Ao.isDirective(a)&&t.push(new Rn.Finding(Rn.Type.MISSING_SEMICOLON,'Did you forget the semicolon? "'+a+'" seems to be a directive, not a value.',Rn.Severity.SYNTAX,n,a));return t}s(lme,"checkMissingSemicolon");Bn.checkMissingSemicolon=lme;function dme(e){let t=[],n=Object.values(cme.Keyword).map(r=>r.replace(/'/g,""));for(let[r,a]of Object.entries(e.directives))if(a!==void 0)for(let o of a){if(n.some(i=>i===o)||o.startsWith("nonce-")||o.match(/^(sha256|sha384|sha512)-/)){t.push(new Rn.Finding(Rn.Type.INVALID_KEYWORD,'Did you forget to surround "'+o+'" with single-ticks?',Rn.Severity.SYNTAX,r,o));continue}if(o.startsWith("'")){if(r===Ao.Directive.REQUIRE_TRUSTED_TYPES_FOR){if(o===Ao.TrustedTypesSink.SCRIPT)continue}else if(r===Ao.Directive.TRUSTED_TYPES){ +if(o==="'allow-duplicates'"||o==="'none'")continue}else if(Ao.isKeyword(o)||Ao.isHash(o)||Ao.isNonce(o))continue;t.push(new Rn.Finding(Rn.Type.INVALID_KEYWORD,o+" seems to be an invalid CSP keyword.",Rn.Severity.SYNTAX,r,o))}}return t}s(dme,"checkInvalidKeyword");Bn.checkInvalidKeyword=dme});var fB=de(Q1=>{"use strict";d();Object.defineProperty(Q1,"__esModule",{value:!0});Q1.URLS=void 0;Q1.URLS=["//gstatic.com/fsn/angular_js-bundle1.js","//www.gstatic.com/fsn/angular_js-bundle1.js","//www.googleadservices.com/pageadimg/imgad","//yandex.st/angularjs/1.2.16/angular-cookies.min.js","//yastatic.net/angularjs/1.2.23/angular.min.js","//yuedust.yuedu.126.net/js/components/angular/angular.js","//art.jobs.netease.com/script/angular.js","//csu-c45.kxcdn.com/angular/angular.js","//elysiumwebsite.s3.amazonaws.com/uploads/blog-media/rockstar/angular.min.js","//inno.blob.core.windows.net/new/libs/AngularJS/1.2.1/angular.min.js","//gift-talk.kakao.com/public/javascripts/angular.min.js","//ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js","//master-sumok.ru/vendors/angular/angular-cookies.js","//ayicommon-a.akamaihd.net/static/vendor/angular-1.4.2.min.js","//pangxiehaitao.com/framework/angular-1.3.9/angular-animate.min.js","//cdnjs.cloudflare.com/ajax/libs/angular.js/\ 1.2.16/angular.min.js","//96fe3ee995e96e922b6b-d10c35bd0a0de2c718b252bc575fdb73.ssl.cf1.rackcdn.com/angular.js","//oss.maxcdn.com/angularjs/1.2.20/angular.min.js","//reports.zemanta.com/smedia/common/angularjs/1.2.11/angular.js","//cdn.shopify.com/s/files/1/0225/6463/t/1/assets/angular-animate.min.js","//parademanagement.com.s3-website-ap-southeast-1.amazonaws.com/js/angular.min.js","//cdn.jsdelivr.net/angularjs/1.1.2/angular.min.js","//eb2883ede55c53e09fd5-9c145fb03d93709ea57875d307e2d82e.ssl.cf3.rackcdn.com/components/angular-resource.min.js","//andors-trail.googlecode.com/git/AndorsTrailEdit/lib/angular.min.js","//cdn.walkme.com/General/EnvironmentTests/angular/angular.min.js","//laundrymail.com/angular/angular.js","//s3-eu-west-1.amazonaws.com/staticancpa/js/angular-cookies.min.js","//collade.demo.stswp.com/js/vendor/angular.min.js","//mrfishie.github.io/sailor/bower_components/angular/angular.min.js","//askgithub.com/static/js/angular.min.js","//services.amazon.com/solution-provid\ -ers/assets/vendor/angular-cookies.min.js","//raw.githubusercontent.com/angular/code.angularjs.org/master/1.0.7/angular-resource.js","//prb-resume.appspot.com/bower_components/angular-animate/angular-animate.js","//dl.dropboxusercontent.com/u/30877786/angular.min.js","//static.tumblr.com/x5qdx0r/nPOnngtff/angular-resource.min_1_.js","//storage.googleapis.com/assets-prod.urbansitter.net/us-sym/assets/vendor/angular-sanitize/angular-sanitize.min.js","//twitter.github.io/labella.js/bower_components/angular/angular.min.js","//cdn2-casinoroom.global.ssl.fastly.net/js/lib/angular-animate.min.js","//www.adobe.com/devnet-apps/flashshowcase/lib/angular/angular.1.1.5.min.js","//eternal-sunset.herokuapp.com/bower_components/angular/angular.js","//cdn.bootcss.com/angular.js/1.2.0/angular.min.js"]});var MB=pe(K1=>{"use strict";d();Object.defineProperty(K1,"__esModule",{value:!0});K1.URLS=void 0;K1.URLS=["//vk.com/swf/video.swf","//ajax.googleapis.com/ajax/libs/yui/2.8.0r4/build/charts/assets/charts.swf"]});var LB=pe(nu=>{"use strict";d();Object.defineProperty(nu,"__esModule",{value:!0});nu.URLS=nu.NEEDS_EVAL=void 0;nu.NEEDS_EVAL=["googletagmanager.com","www.googletagmanager.com","www.googleadservices.com","google-analytics.com","ssl.google-analytics.com","www.google-analytics.com"];nu.URLS=["//bebezoo.1688.com/fragment/index.htm","//www.google-analytics.com/gtm/js","//googleads.g.doubleclick.net/pagead/conversion/1036918760/wcm","//www.googleadservices.com/pagead/conversion/1070110417/wcm","//www.google.com/tools/feedback/escalation-options","//pin.aliyun.com/check_audio","//offer.alibaba.com/market/CID100002954/5/fetchKeyword.do","//ccrprod.alipay.com/ccr/arriveTime.json","//group.aliexpress.com/ajaxAcquireGroupbuyProduct.do","//detector.alicdn.com/2.7.3/index.php","//suggest.taobao.com/sug","//translate.google.com/translate_a/l","//count.tbcdn.cn//counter3","//wb.amap.com/channel.php","//translate.googleapis.com/translate_a/l","//afpeng.alimama.com/ex","//accounts.google.com/o/oauth2/r\ +ers/assets/vendor/angular-cookies.min.js","//raw.githubusercontent.com/angular/code.angularjs.org/master/1.0.7/angular-resource.js","//prb-resume.appspot.com/bower_components/angular-animate/angular-animate.js","//dl.dropboxusercontent.com/u/30877786/angular.min.js","//static.tumblr.com/x5qdx0r/nPOnngtff/angular-resource.min_1_.js","//storage.googleapis.com/assets-prod.urbansitter.net/us-sym/assets/vendor/angular-sanitize/angular-sanitize.min.js","//twitter.github.io/labella.js/bower_components/angular/angular.min.js","//cdn2-casinoroom.global.ssl.fastly.net/js/lib/angular-animate.min.js","//www.adobe.com/devnet-apps/flashshowcase/lib/angular/angular.1.1.5.min.js","//eternal-sunset.herokuapp.com/bower_components/angular/angular.js","//cdn.bootcss.com/angular.js/1.2.0/angular.min.js"]});var hB=de(eh=>{"use strict";d();Object.defineProperty(eh,"__esModule",{value:!0});eh.URLS=void 0;eh.URLS=["//vk.com/swf/video.swf","//ajax.googleapis.com/ajax/libs/yui/2.8.0r4/build/charts/assets/charts.swf"]});var gB=de(ac=>{"use strict";d();Object.defineProperty(ac,"__esModule",{value:!0});ac.URLS=ac.NEEDS_EVAL=void 0;ac.NEEDS_EVAL=["googletagmanager.com","www.googletagmanager.com","www.googleadservices.com","google-analytics.com","ssl.google-analytics.com","www.google-analytics.com"];ac.URLS=["//bebezoo.1688.com/fragment/index.htm","//www.google-analytics.com/gtm/js","//googleads.g.doubleclick.net/pagead/conversion/1036918760/wcm","//www.googleadservices.com/pagead/conversion/1070110417/wcm","//www.google.com/tools/feedback/escalation-options","//pin.aliyun.com/check_audio","//offer.alibaba.com/market/CID100002954/5/fetchKeyword.do","//ccrprod.alipay.com/ccr/arriveTime.json","//group.aliexpress.com/ajaxAcquireGroupbuyProduct.do","//detector.alicdn.com/2.7.3/index.php","//suggest.taobao.com/sug","//translate.google.com/translate_a/l","//count.tbcdn.cn//counter3","//wb.amap.com/channel.php","//translate.googleapis.com/translate_a/l","//afpeng.alimama.com/ex","//accounts.google.com/o/oauth2/r\ evoke","//pagead2.googlesyndication.com/relatedsearch","//yandex.ru/soft/browsers/check","//api.facebook.com/restserver.php","//mts0.googleapis.com/maps/vt","//syndication.twitter.com/widgets/timelines/765840589183213568","//www.youtube.com/profile_style","//googletagmanager.com/gtm/js","//mc.yandex.ru/watch/24306916/1","//share.yandex.net/counter/gpp/","//ok.go.mail.ru/lady_on_lady_recipes_r.json","//d1f69o4buvlrj5.cloudfront.net/__efa_15_1_ornpba.xekq.arg/optout_check","//www.googletagmanager.com/gtm/js","//api.vk.com/method/wall.get","//www.sharethis.com/get-publisher-info.php","//google.ru/maps/vt","//pro.netrox.sc/oapi/h_checksite.ashx","//vimeo.com/api/oembed.json/","//de.blog.newrelic.com/wp-admin/admin-ajax.php","//ajax.googleapis.com/ajax/services/search/news","//ssl.google-analytics.com/gtm/js","//pubsub.pubnub.com/subscribe/demo/hello_world/","//pass.yandex.ua/services","//id.rambler.ru/script/topline_info.js","//m.addthis.com/live/red_lojson/100eng.json","//passport.ngs.ru/\ ajax/check","//catalog.api.2gis.ru/ads/search","//gum.criteo.com/sync","//maps.google.com/maps/vt","//ynuf.alipay.com/service/um.json","//securepubads.g.doubleclick.net/gampad/ads","//c.tiles.mapbox.com/v3/texastribune.tx-congress-cvap/6/15/26.grid.json","//rexchange.begun.ru/banners","//an.yandex.ru/page/147484","//links.services.disqus.com/api/ping","//api.map.baidu.com/","//tj.gongchang.com/api/keywordrecomm/","//data.gongchang.com/livegrail/","//ulogin.ru/token.php","//beta.gismeteo.ru/api/informer/layout.js/120x240-3/ru/","//maps.googleapis.com/maps/api/js/GeoPhotoService.GetMetadata","//a.config.skype.com/config/v1/Skype/908_1.33.0.111/SkypePersonalization","//maps.beeline.ru/w","//target.ukr.net/","//www.meteoprog.ua/data/weather/informer/Poltava.js","//cdn.syndication.twimg.com/widgets/timelines/599200054310604802","//wslocker.ru/client/user.chk.php","//community.adobe.com/CommunityPod/getJSON","//maps.google.lv/maps/vt","//dev.virtualearth.net/REST/V1/Imagery/Metadata/AerialWi\ thLabels/26.318581","//awaps.yandex.ru/10/8938/02400400.","//a248.e.akamai.net/h5.hulu.com/h5.mp4","//nominatim.openstreetmap.org/","//plugins.mozilla.org/en-us/plugins_list.json","//h.cackle.me/widget/32153/bootstrap","//graph.facebook.com/1/","//fellowes.ugc.bazaarvoice.com/data/reviews.json","//widgets.pinterest.com/v3/pidgets/boards/ciciwin/hedgehog-squirrel-crafts/pins/","//www.linkedin.com/countserv/count/share","//se.wikipedia.org/w/api.php","//cse.google.com/api/007627024705277327428/cse/r3vs7b0fcli/queries/js","//relap.io/api/v2/similar_pages_jsonp.js","//c1n3.hypercomments.com/stream/subscribe","//maps.google.de/maps/vt","//books.google.com/books","//connect.mail.ru/share_count","//tr.indeed.com/m/newjobs","//www-onepick-opensocial.googleusercontent.com/gadgets/proxy","//www.panoramio.com/map/get_panoramas.php","//client.siteheart.com/streamcli/client","//www.facebook.com/restserver.php","//autocomplete.travelpayouts.com/avia","//www.googleapis.com/freebase/v1/topic/m/0344_", "//mts1.googleapis.com/mapslt/ft","//api.twitter.com/1/statuses/oembed.json","//fast.wistia.com/embed/medias/o75jtw7654.json","//partner.googleadservices.com/gampad/ads","//pass.yandex.ru/services","//gupiao.baidu.com/stocks/stockbets","//widget.admitad.com/widget/init","//api.instagram.com/v1/tags/partykungen23328/media/recent","//video.media.yql.yahoo.com/v1/video/sapi/streams/063fb76c-6c70-38c5-9bbc-04b7c384de2b","//ib.adnxs.com/jpt","//pass.yandex.com/services","//www.google.de/maps/vt","//clients1.google.com/complete/search","//api.userlike.com/api/chat/slot/proactive/","//www.youku.com/index_cookielist/s/jsonp","//mt1.googleapis.com/mapslt/ft","//api.mixpanel.com/track/","//wpd.b.qq.com/cgi/get_sign.php","//pipes.yahooapis.com/pipes/pipe.run","//gdata.youtube.com/feeds/api/videos/WsJIHN1kNWc","//9.chart.apis.google.com/chart","//cdn.syndication.twitter.com/moments/709229296800440320","//api.flickr.com/services/feeds/photos_friends.gne","//cbks0.googleapis.com/cbk","//www.blogger.\ -com/feeds/5578653387562324002/posts/summary/4427562025302749269","//query.yahooapis.com/v1/public/yql","//kecngantang.blogspot.com/feeds/posts/default/-/Komik","//www.travelpayouts.com/widgets/50f53ce9ada1b54bcc000031.json","//i.cackle.me/widget/32586/bootstrap","//translate.yandex.net/api/v1.5/tr.json/detect","//a.tiles.mapbox.com/v3/zentralmedia.map-n2raeauc.jsonp","//maps.google.ru/maps/vt","//c1n2.hypercomments.com/stream/subscribe","//rec.ydf.yandex.ru/cookie","//cdn.jsdelivr.net"]});var OB=pe($n=>{"use strict";d();Object.defineProperty($n,"__esModule",{value:!0});$n.applyCheckFunktionToDirectives=$n.matchWildcardUrls=$n.getHostname=$n.getSchemeFreeUrl=void 0;function pS(e){return e=e.replace(/^\w[+\w.-]*:\/\//i,""),e=e.replace(/^\/\//,""),e}s(pS,"getSchemeFreeUrl");$n.getSchemeFreeUrl=pS;function Ale(e){let t=new URL("https://"+pS(e).replace(":*","").replace("*","wildcard_placeholder")).hostname.replace("wildcard_placeholder","*"),r=/^\[[\d:]+\]/;return pS(e).match(r)&&!t.match(r)?"["+t+"]":t}s(Ale,"getHostname");$n.getHostname=Ale;function PB(e){return e.startsWith("//")?e.replace("//","https://"):e}s(PB,"setScheme");function Nle(e,t){let r=new URL(PB(e.replace(":*","").replace("*","wildcard_placeholder"))),n=t.map(c=>new URL(PB(c))),i=r.hostname.toLowerCase(),a=i.startsWith("wildcard_placeholder."),o=i.replace(/^\wildcard_placeholder/i,""),u=r.pathname,l=u!=="/";for(let c of n){let p=c.hostname;if(p.endsWith(o)&&!(!a&&i!==p)){if(l){if(u.endsWith("/")){if(!c.pathname. -startsWith(u))continue}else if(c.pathname!==u)continue}return c}}return null}s(Nle,"matchWildcardUrls");$n.matchWildcardUrls=Nle;function Mle(e,t){let r=Object.keys(e.directives);for(let n of r){let i=e.directives[n];i&&t(n,i)}}s(Mle,"applyCheckFunktionToDirectives");$n.applyCheckFunktionToDirectives=Mle});var GB=pe(fe=>{"use strict";d();var Lle=fe&&fe.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Ple=fe&&fe.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vd=fe&&fe.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Lle(t,e,r);return Ple(t,e),t};Object.defineProperty(fe,"__esModule",{value:!0});fe.checkHasConfiguredReporting=fe.checkSrcHttp=fe.checkNonceLength=fe.checkDeprecatedDirective=fe.checkIpSource=fe.looksLikeIpAddress=fe.checkFlashObjectAllowlistBypass=fe.checkScriptAllowlistBypass=fe.checkMissingDirectives=fe.checkMultipleMissingBaseUriDirective=fe.checkMissingBaseUriDirective=fe.checkMissingScriptSrcDirective=fe.checkMissingObjectSrcDirective=fe.checkWildcards= -fe.checkPlainUrlSchemes=fe.checkScriptUnsafeEval=fe.checkScriptUnsafeInline=fe.URL_SCHEMES_CAUSING_XSS=fe.DIRECTIVES_CAUSING_XSS=void 0;var Ole=Vd(NB()),Ble=Vd(MB()),BB=Vd(LB()),UB=Vd(Vn()),ze=Vn(),re=tu(),Yn=Vd(OB());fe.DIRECTIVES_CAUSING_XSS=[ze.Directive.SCRIPT_SRC,ze.Directive.OBJECT_SRC,ze.Directive.BASE_URI];fe.URL_SCHEMES_CAUSING_XSS=["data:","http:","https:"];function Ule(e){let t=e.getEffectiveDirective(ze.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(ze.Keyword.UNSAFE_INLINE)?[new re.Finding(re.Type.SCRIPT_UNSAFE_INLINE,"'unsafe-inline' allows the execution of unsafe in-page scripts and event handlers.",re.Severity.HIGH,t,ze.Keyword.UNSAFE_INLINE)]:[]}s(Ule,"checkScriptUnsafeInline");fe.checkScriptUnsafeInline=Ule;function jle(e){let t=e.getEffectiveDirective(ze.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(ze.Keyword.UNSAFE_EVAL)?[new re.Finding(re.Type.SCRIPT_UNSAFE_EVAL,"'unsafe-eval' allows the execution of code injected into DOM APIs such as eva\ -l().",re.Severity.MEDIUM_MAYBE,t,ze.Keyword.UNSAFE_EVAL)]:[]}s(jle,"checkScriptUnsafeEval");fe.checkScriptUnsafeEval=jle;function qle(e){let t=[],r=e.getEffectiveDirectives(fe.DIRECTIVES_CAUSING_XSS);for(let n of r){let i=e.directives[n]||[];for(let a of i)fe.URL_SCHEMES_CAUSING_XSS.includes(a)&&t.push(new re.Finding(re.Type.PLAIN_URL_SCHEMES,a+" URI in "+n+" allows the execution of unsafe scripts.",re.Severity.HIGH,n,a))}return t}s(qle,"checkPlainUrlSchemes");fe.checkPlainUrlSchemes=qle;function zle(e){let t=[],r=e.getEffectiveDirectives(fe.DIRECTIVES_CAUSING_XSS);for(let n of r){let i=e.directives[n]||[];for(let a of i)if(Yn.getSchemeFreeUrl(a)==="*"){t.push(new re.Finding(re.Type.PLAIN_WILDCARD,n+" should not allow '*' as source",re.Severity.HIGH,n,a));continue}}return t}s(zle,"checkWildcards");fe.checkWildcards=zle;function jB(e){let t=[];return ze.Directive.OBJECT_SRC in e.directives?t=e.directives[ze.Directive.OBJECT_SRC]:ze.Directive.DEFAULT_SRC in e.directives&&(t=e.directives[ze. -Directive.DEFAULT_SRC]),t!==void 0&&t.length>=1?[]:[new re.Finding(re.Type.MISSING_DIRECTIVES,"Missing object-src allows the injection of plugins which can execute JavaScript. Can you set it to 'none'?",re.Severity.HIGH,ze.Directive.OBJECT_SRC)]}s(jB,"checkMissingObjectSrcDirective");fe.checkMissingObjectSrcDirective=jB;function qB(e){return ze.Directive.SCRIPT_SRC in e.directives||ze.Directive.DEFAULT_SRC in e.directives?[]:[new re.Finding(re.Type.MISSING_DIRECTIVES,"script-src directive is missing.",re.Severity.HIGH,ze.Directive.SCRIPT_SRC)]}s(qB,"checkMissingScriptSrcDirective");fe.checkMissingScriptSrcDirective=qB;function zB(e){return HB([e])}s(zB,"checkMissingBaseUriDirective");fe.checkMissingBaseUriDirective=zB;function HB(e){let t=s(n=>n.policyHasScriptNonces()||n.policyHasScriptHashes()&&n.policyHasStrictDynamic(),"needsBaseUri"),r=s(n=>ze.Directive.BASE_URI in n.directives,"hasBaseUri");if(e.some(t)&&!e.some(r)){let n="Missing base-uri allows the injection of base tags. They \ -can be used to set the base URL for all relative (script) URLs to an attacker controlled domain. Can you set it to 'none' or 'self'?";return[new re.Finding(re.Type.MISSING_DIRECTIVES,n,re.Severity.HIGH,ze.Directive.BASE_URI)]}return[]}s(HB,"checkMultipleMissingBaseUriDirective");fe.checkMultipleMissingBaseUriDirective=HB;function Hle(e){return[...jB(e),...qB(e),...zB(e)]}s(Hle,"checkMissingDirectives");fe.checkMissingDirectives=Hle;function Wle(e){let t=[],r=e.getEffectiveDirective(ze.Directive.SCRIPT_SRC),n=e.directives[r]||[];if(n.includes(ze.Keyword.NONE))return t;for(let i of n){if(i===ze.Keyword.SELF){t.push(new re.Finding(re.Type.SCRIPT_ALLOWLIST_BYPASS,"'self' can be problematic if you host JSONP, AngularJS or user uploaded files.",re.Severity.MEDIUM_MAYBE,r,i));continue}if(i.startsWith("'")||UB.isUrlScheme(i)||i.indexOf(".")===-1)continue;let a="//"+Yn.getSchemeFreeUrl(i),o=Yn.matchWildcardUrls(a,Ole.URLS),u=Yn.matchWildcardUrls(a,BB.URLS);if(u){let l=BB.NEEDS_EVAL.includes(u.hostname), -c=n.includes(ze.Keyword.UNSAFE_EVAL);l&&!c&&(u=null)}if(u||o){let l="",c="";u&&(l=u.hostname,c=" JSONP endpoints"),o&&(l=o.hostname,c+=c.trim()===""?"":" and",c+=" Angular libraries"),t.push(new re.Finding(re.Type.SCRIPT_ALLOWLIST_BYPASS,l+" is known to host"+c+" which allow to bypass this CSP.",re.Severity.HIGH,r,i))}else t.push(new re.Finding(re.Type.SCRIPT_ALLOWLIST_BYPASS,"No bypass found; make sure that this URL doesn't serve JSONP replies or Angular libraries.",re.Severity.MEDIUM_MAYBE,r,i))}return t}s(Wle,"checkScriptAllowlistBypass");fe.checkScriptAllowlistBypass=Wle;function Gle(e){let t=[],r=e.getEffectiveDirective(ze.Directive.OBJECT_SRC),n=e.directives[r]||[],i=e.directives[ze.Directive.PLUGIN_TYPES];if(i&&!i.includes("application/x-shockwave-flash"))return[];for(let a of n){if(a===ze.Keyword.NONE)return[];let o="//"+Yn.getSchemeFreeUrl(a),u=Yn.matchWildcardUrls(o,Ble.URLS);u?t.push(new re.Finding(re.Type.OBJECT_ALLOWLIST_BYPASS,u.hostname+" is known to host Flash files whi\ -ch allow to bypass this CSP.",re.Severity.HIGH,r,a)):r===ze.Directive.OBJECT_SRC&&t.push(new re.Finding(re.Type.OBJECT_ALLOWLIST_BYPASS,"Can you restrict object-src to 'none' only?",re.Severity.MEDIUM_MAYBE,r,a))}return t}s(Gle,"checkFlashObjectAllowlistBypass");fe.checkFlashObjectAllowlistBypass=Gle;function WB(e){return!!(e.startsWith("[")&&e.endsWith("]")||/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/.test(e))}s(WB,"looksLikeIpAddress");fe.looksLikeIpAddress=WB;function Vle(e){let t=[],r=s((n,i)=>{for(let a of i){let o=Yn.getHostname(a);WB(o)&&(o==="127.0.0.1"?t.push(new re.Finding(re.Type.IP_SOURCE,n+" directive allows localhost as source. Please make sure to remove this in production environments.",re.Severity.INFO,n,a)):t.push(new re.Finding(re.Type.IP_SOURCE,n+" directive has an IP-Address as source: "+o+" (will be ignored by browsers!). ",re.Severity.INFO,n,a)))}},"checkIp");return Yn.applyCheckFunktionToDirectives(e,r),t}s(Vle,"checkIpSource");fe.checkIpSource=Vle;function $le(e){ -let t=[];return ze.Directive.REFLECTED_XSS in e.directives&&t.push(new re.Finding(re.Type.DEPRECATED_DIRECTIVE,"reflected-xss is deprecated since CSP2. Please, use the X-XSS-Protection header instead.",re.Severity.INFO,ze.Directive.REFLECTED_XSS)),ze.Directive.REFERRER in e.directives&&t.push(new re.Finding(re.Type.DEPRECATED_DIRECTIVE,"referrer is deprecated since CSP2. Please, use the Referrer-Policy header instead.",re.Severity.INFO,ze.Directive.REFERRER)),ze.Directive.DISOWN_OPENER in e.directives&&t.push(new re.Finding(re.Type.DEPRECATED_DIRECTIVE,"disown-opener is deprecated since CSP3. Please, use the Cross Origin Opener Policy header instead.",re.Severity.INFO,ze.Directive.DISOWN_OPENER)),t}s($le,"checkDeprecatedDirective");fe.checkDeprecatedDirective=$le;function Yle(e){let t=new RegExp("^'nonce-(.+)'$"),r=[];return Yn.applyCheckFunktionToDirectives(e,(n,i)=>{for(let a of i){let o=a.match(t);if(!o)continue;o[1].length<8&&r.push(new re.Finding(re.Type.NONCE_LENGTH,"Nonces shoul\ -d be at least 8 characters long.",re.Severity.MEDIUM,n,a)),UB.isNonce(a,!0)||r.push(new re.Finding(re.Type.NONCE_CHARSET,"Nonces should only use the base64 charset.",re.Severity.INFO,n,a))}}),r}s(Yle,"checkNonceLength");fe.checkNonceLength=Yle;function Kle(e){let t=[];return Yn.applyCheckFunktionToDirectives(e,(r,n)=>{for(let i of n){let a=r===ze.Directive.REPORT_URI?"Use HTTPS to send violation reports securely.":"Allow only resources downloaded over HTTPS.";i.startsWith("http://")&&t.push(new re.Finding(re.Type.SRC_HTTP,a,re.Severity.MEDIUM,r,i))}}),t}s(Kle,"checkSrcHttp");fe.checkSrcHttp=Kle;function Jle(e){return(e.directives[ze.Directive.REPORT_URI]||[]).length>0?[]:(e.directives[ze.Directive.REPORT_TO]||[]).length>0?[new re.Finding(re.Type.REPORT_TO_ONLY,"This CSP policy only provides a reporting destination via the 'report-to' directive. This directive is only supported in Chromium-based browsers so it is recommended to also use a 'report-uri' directive.",re.Severity.INFO,ze.Directive. -REPORT_TO)]:[new re.Finding(re.Type.REPORTING_DESTINATION_MISSING,"This CSP policy does not configure a reporting destination. This makes it difficult to maintain the CSP policy over time and monitor for any breakages.",re.Severity.INFO,ze.Directive.REPORT_URI)]}s(Jle,"checkHasConfiguredReporting");fe.checkHasConfiguredReporting=Jle});var VB=pe(Xt=>{"use strict";d();var Zle=Xt&&Xt.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Xle=Xt&&Xt.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Qle=Xt&&Xt.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Zle(t,e,r);return Xle(t,e),t};Object.defineProperty(Xt,"__esModule",{value:!0});Xt.checkRequiresTrustedTypesForScripts=Xt.checkAllowlistFallback=Xt.checkUnsafeInlineFallback=Xt.checkStrictDynamicNotStandalone=Xt.checkStrictDynamic=void 0;var So=Qle(Vn()),J1=Vn(),Sr=tu();function ece(e){let t=e.getEffectiveDirective(So.Directive.SCRIPT_SRC),r=e.directives[t]||[];return r.some(i=>!i.startsWith("'"))&&!r.includes(J1.Keyword.STRICT_DYNAMIC)?[new Sr.Finding(Sr. -Type.STRICT_DYNAMIC,"Host allowlists can frequently be bypassed. Consider using 'strict-dynamic' in combination with CSP nonces or hashes.",Sr.Severity.STRICT_CSP,t)]:[]}s(ece,"checkStrictDynamic");Xt.checkStrictDynamic=ece;function tce(e){let t=e.getEffectiveDirective(So.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(J1.Keyword.STRICT_DYNAMIC)&&!e.policyHasScriptNonces()&&!e.policyHasScriptHashes()?[new Sr.Finding(Sr.Type.STRICT_DYNAMIC_NOT_STANDALONE,"'strict-dynamic' without a CSP nonce/hash will block all scripts.",Sr.Severity.INFO,t)]:[]}s(tce,"checkStrictDynamicNotStandalone");Xt.checkStrictDynamicNotStandalone=tce;function rce(e){if(!e.policyHasScriptNonces()&&!e.policyHasScriptHashes())return[];let t=e.getEffectiveDirective(So.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(J1.Keyword.UNSAFE_INLINE)?[]:[new Sr.Finding(Sr.Type.UNSAFE_INLINE_FALLBACK,"Consider adding 'unsafe-inline' (ignored by browsers supporting nonces/hashes) to be backward compatible wi\ -th older browsers.",Sr.Severity.STRICT_CSP,t)]}s(rce,"checkUnsafeInlineFallback");Xt.checkUnsafeInlineFallback=rce;function nce(e){let t=e.getEffectiveDirective(So.Directive.SCRIPT_SRC),r=e.directives[t]||[];return r.includes(J1.Keyword.STRICT_DYNAMIC)?r.some(n=>["http:","https:","*"].includes(n)||n.includes("."))?[]:[new Sr.Finding(Sr.Type.ALLOWLIST_FALLBACK,"Consider adding https: and http: url schemes (ignored by browsers supporting 'strict-dynamic') to be backward compatible with older browsers.",Sr.Severity.STRICT_CSP,t)]:[]}s(nce,"checkAllowlistFallback");Xt.checkAllowlistFallback=nce;function ice(e){let t=e.getEffectiveDirective(So.Directive.REQUIRE_TRUSTED_TYPES_FOR);return(e.directives[t]||[]).includes(So.TrustedTypesSink.SCRIPT)?[]:[new Sr.Finding(Sr.Type.REQUIRE_TRUSTED_TYPES_FOR_SCRIPTS,`Consider requiring Trusted Types for scripts to lock down DOM XSS injection sinks. You can do this by adding "require-trusted-types-for 'script'" to your policy.`,Sr.Severity.INFO,So.Directive. -REQUIRE_TRUSTED_TYPES_FOR)]}s(ice,"checkRequiresTrustedTypesForScripts");Xt.checkRequiresTrustedTypesForScripts=ice});var JB=pe(Da=>{"use strict";d();Object.defineProperty(Da,"__esModule",{value:!0});Da.evaluateForSyntaxErrors=Da.evaluateForWarnings=Da.evaluateForFailure=void 0;var mS=AB(),wa=GB(),fS=VB(),$B=Vn();function KB(e,t){return e.some(r=>r.equals(t))}s(KB,"arrayContains");function ace(e){let t=[];if(e.length===0)return t;let r=e[0];for(let n of r)e.every(i=>KB(i,n))&&t.push(n);return t}s(ace,"setIntersection");function oce(e){let t=[];for(let r of e)for(let n of r)KB(t,n)||t.push(n);return t}s(oce,"setUnion");function iu(e,t){let r=[];for(let n of e)r.push(t(n));return ace(r)}s(iu,"atLeastOnePasses");function YB(e,t){let r=[];for(let n of e)r.push(t(n));return oce(r)}s(YB,"atLeastOneFails");function sce(e){let t=[...iu(e,wa.checkMissingScriptSrcDirective),...iu(e,wa.checkMissingObjectSrcDirective),...wa.checkMultipleMissingBaseUriDirective(e)],r=e.map(a=>a.getEffectiveCsp($B.Version.CSP3)),n=r.filter(a=>{let o=a.getEffectiveDirective($B.Directive.SCRIPT_SRC);return a.directives[o]}),i=[...iu( -n,fS.checkStrictDynamic),...iu(n,wa.checkScriptUnsafeInline),...iu(r,wa.checkWildcards),...iu(r,wa.checkPlainUrlSchemes)];return[...t,...i]}s(sce,"evaluateForFailure");Da.evaluateForFailure=sce;function uce(e){return[...YB(e,fS.checkUnsafeInlineFallback),...YB(e,fS.checkAllowlistFallback)]}s(uce,"evaluateForWarnings");Da.evaluateForWarnings=uce;function lce(e){let t=[];for(let r of e){let n=[...wa.checkNonceLength(r),...mS.checkUnknownDirective(r),...wa.checkDeprecatedDirective(r),...mS.checkMissingSemicolon(r),...mS.checkInvalidKeyword(r)];t.push(n)}return t}s(lce,"evaluateForSyntaxErrors");Da.evaluateForSyntaxErrors=lce});var XB=pe(tn=>{"use strict";d();var cce=tn&&tn.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),dce=tn&&tn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pce=tn&&tn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&cce(t,e,r);return dce(t,e),t};Object.defineProperty(tn,"__esModule",{value:!0});tn.TEST_ONLY=tn.CspParser=void 0;var $d=pce(Vn()),hS=class{static{s(this,"CspParser")}constructor(t){this.csp=new $d.Csp,this.parse(t)}parse(t){this.csp=new $d.Csp;let r=t.split(";");for(let n=0;n<r.length;n++){let a=r[n].trim().match(/\S+/g);if(Array.isArray(a)){let o=a[0].toLowerCase();if(o in this.csp.directives)continue;$d.isDirective(o);let u=[];for(let l,c=1;l=a[c];c++)l= -ZB(l),u.includes(l)||u.push(l);this.csp.directives[o]=u}}return this.csp}};tn.CspParser=hS;function ZB(e){e=e.trim();let t=e.toLowerCase();return $d.isKeyword(t)||$d.isUrlScheme(e)?t:e}s(ZB,"normalizeDirectiveValue");tn.TEST_ONLY={normalizeDirectiveValue:ZB}});function eU(e){let t=mce[e.type];return t?os(t)?t:typeof t=="string"?gr(t,{keyword:e.value||""}):(t=t[e.directive],t||(N.warn("CSP Evaluator",`No translation found for description: ${e.description}`),e.description)):(N.warn("CSP Evaluator",`No translation found for description: ${e.description}`),e.description)}function fce(e){return new QB.CspParser(e).csp}function gS(e){let t=e.map(fce),r=(0,au.evaluateForFailure)(t),n=(0,au.evaluateForWarnings)(t),i=(0,au.evaluateForSyntaxErrors)(t);return{bypasses:r,warnings:n,syntax:i}}var au,hr,QB,Co,Ht,gr,mce,tU=g(()=>{"use strict";d();au=yr(JB(),1),hr=yr(tu(),1),QB=yr(XB(),1),Co=yr(Vn(),1);Ne();R();ci();Ht={missingBaseUri:"Missing `base-uri` allows injected `<base>` tags to set the base URL for all relative URLs (e.g. scripts) to an attacker controlled domain. Consider setting `base-uri` to `'none'` or `'self'`.",missingScriptSrc:"`script-src` directive is missing. This can allow the execution of unsafe scripts.",missingObjectSrc:"Missing `obje\ +com/feeds/5578653387562324002/posts/summary/4427562025302749269","//query.yahooapis.com/v1/public/yql","//kecngantang.blogspot.com/feeds/posts/default/-/Komik","//www.travelpayouts.com/widgets/50f53ce9ada1b54bcc000031.json","//i.cackle.me/widget/32586/bootstrap","//translate.yandex.net/api/v1.5/tr.json/detect","//a.tiles.mapbox.com/v3/zentralmedia.map-n2raeauc.jsonp","//maps.google.ru/maps/vt","//c1n2.hypercomments.com/stream/subscribe","//rec.ydf.yandex.ru/cookie","//cdn.jsdelivr.net"]});var vB=de(ta=>{"use strict";d();Object.defineProperty(ta,"__esModule",{value:!0});ta.applyCheckFunktionToDirectives=ta.matchWildcardUrls=ta.getHostname=ta.getSchemeFreeUrl=void 0;function V2(e){return e=e.replace(/^\w[+\w.-]*:\/\//i,""),e=e.replace(/^\/\//,""),e}s(V2,"getSchemeFreeUrl");ta.getSchemeFreeUrl=V2;function mme(e){let t=new URL("https://"+V2(e).replace(":*","").replace("*","wildcard_placeholder")).hostname.replace("wildcard_placeholder","*"),n=/^\[[\d:]+\]/;return V2(e).match(n)&&!t.match(n)?"["+t+"]":t}s(mme,"getHostname");ta.getHostname=mme;function yB(e){return e.startsWith("//")?e.replace("//","https://"):e}s(yB,"setScheme");function pme(e,t){let n=new URL(yB(e.replace(":*","").replace("*","wildcard_placeholder"))),r=t.map(l=>new URL(yB(l))),a=n.hostname.toLowerCase(),o=a.startsWith("wildcard_placeholder."),i=a.replace(/^\wildcard_placeholder/i,""),c=n.pathname,u=c!=="/";for(let l of r){let m=l.hostname;if(m.endsWith(i)&&!(!o&&a!==m)){if(u){if(c.endsWith("/")){if(!l.pathname. +startsWith(c))continue}else if(l.pathname!==c)continue}return l}}return null}s(pme,"matchWildcardUrls");ta.matchWildcardUrls=pme;function fme(e,t){let n=Object.keys(e.directives);for(let r of n){let a=e.directives[r];a&&t(r,a)}}s(fme,"applyCheckFunktionToDirectives");ta.applyCheckFunktionToDirectives=fme});var CB=de(fe=>{"use strict";d();var hme=fe&&fe.__createBinding||(Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]}),gme=fe&&fe.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Kd=fe&&fe.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&hme(t,e,n);return gme(t,e),t};Object.defineProperty(fe,"__esModule",{value:!0});fe.checkHasConfiguredReporting=fe.checkSrcHttp=fe.checkNonceLength=fe.checkDeprecatedDirective=fe.checkIpSource=fe.looksLikeIpAddress=fe.checkFlashObjectAllowlistBypass=fe.checkScriptAllowlistBypass=fe.checkMissingDirectives=fe.checkMultipleMissingBaseUriDirective=fe.checkMissingBaseUriDirective=fe.checkMissingScriptSrcDirective=fe.checkMissingObjectSrcDirective=fe.checkWildcards= +fe.checkPlainUrlSchemes=fe.checkScriptUnsafeEval=fe.checkScriptUnsafeInline=fe.URL_SCHEMES_CAUSING_XSS=fe.DIRECTIVES_CAUSING_XSS=void 0;var yme=Kd(fB()),vme=Kd(hB()),bB=Kd(gB()),wB=Kd(ea()),ze=ea(),re=nc(),na=Kd(vB());fe.DIRECTIVES_CAUSING_XSS=[ze.Directive.SCRIPT_SRC,ze.Directive.OBJECT_SRC,ze.Directive.BASE_URI];fe.URL_SCHEMES_CAUSING_XSS=["data:","http:","https:"];function bme(e){let t=e.getEffectiveDirective(ze.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(ze.Keyword.UNSAFE_INLINE)?[new re.Finding(re.Type.SCRIPT_UNSAFE_INLINE,"'unsafe-inline' allows the execution of unsafe in-page scripts and event handlers.",re.Severity.HIGH,t,ze.Keyword.UNSAFE_INLINE)]:[]}s(bme,"checkScriptUnsafeInline");fe.checkScriptUnsafeInline=bme;function wme(e){let t=e.getEffectiveDirective(ze.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(ze.Keyword.UNSAFE_EVAL)?[new re.Finding(re.Type.SCRIPT_UNSAFE_EVAL,"'unsafe-eval' allows the execution of code injected into DOM APIs such as eva\ +l().",re.Severity.MEDIUM_MAYBE,t,ze.Keyword.UNSAFE_EVAL)]:[]}s(wme,"checkScriptUnsafeEval");fe.checkScriptUnsafeEval=wme;function Dme(e){let t=[],n=e.getEffectiveDirectives(fe.DIRECTIVES_CAUSING_XSS);for(let r of n){let a=e.directives[r]||[];for(let o of a)fe.URL_SCHEMES_CAUSING_XSS.includes(o)&&t.push(new re.Finding(re.Type.PLAIN_URL_SCHEMES,o+" URI in "+r+" allows the execution of unsafe scripts.",re.Severity.HIGH,r,o))}return t}s(Dme,"checkPlainUrlSchemes");fe.checkPlainUrlSchemes=Dme;function xme(e){let t=[],n=e.getEffectiveDirectives(fe.DIRECTIVES_CAUSING_XSS);for(let r of n){let a=e.directives[r]||[];for(let o of a)if(na.getSchemeFreeUrl(o)==="*"){t.push(new re.Finding(re.Type.PLAIN_WILDCARD,r+" should not allow '*' as source",re.Severity.HIGH,r,o));continue}}return t}s(xme,"checkWildcards");fe.checkWildcards=xme;function DB(e){let t=[];return ze.Directive.OBJECT_SRC in e.directives?t=e.directives[ze.Directive.OBJECT_SRC]:ze.Directive.DEFAULT_SRC in e.directives&&(t=e.directives[ze. +Directive.DEFAULT_SRC]),t!==void 0&&t.length>=1?[]:[new re.Finding(re.Type.MISSING_DIRECTIVES,"Missing object-src allows the injection of plugins which can execute JavaScript. Can you set it to 'none'?",re.Severity.HIGH,ze.Directive.OBJECT_SRC)]}s(DB,"checkMissingObjectSrcDirective");fe.checkMissingObjectSrcDirective=DB;function xB(e){return ze.Directive.SCRIPT_SRC in e.directives||ze.Directive.DEFAULT_SRC in e.directives?[]:[new re.Finding(re.Type.MISSING_DIRECTIVES,"script-src directive is missing.",re.Severity.HIGH,ze.Directive.SCRIPT_SRC)]}s(xB,"checkMissingScriptSrcDirective");fe.checkMissingScriptSrcDirective=xB;function EB(e){return TB([e])}s(EB,"checkMissingBaseUriDirective");fe.checkMissingBaseUriDirective=EB;function TB(e){let t=s(r=>r.policyHasScriptNonces()||r.policyHasScriptHashes()&&r.policyHasStrictDynamic(),"needsBaseUri"),n=s(r=>ze.Directive.BASE_URI in r.directives,"hasBaseUri");if(e.some(t)&&!e.some(n)){let r="Missing base-uri allows the injection of base tags. They \ +can be used to set the base URL for all relative (script) URLs to an attacker controlled domain. Can you set it to 'none' or 'self'?";return[new re.Finding(re.Type.MISSING_DIRECTIVES,r,re.Severity.HIGH,ze.Directive.BASE_URI)]}return[]}s(TB,"checkMultipleMissingBaseUriDirective");fe.checkMultipleMissingBaseUriDirective=TB;function Eme(e){return[...DB(e),...xB(e),...EB(e)]}s(Eme,"checkMissingDirectives");fe.checkMissingDirectives=Eme;function Tme(e){let t=[],n=e.getEffectiveDirective(ze.Directive.SCRIPT_SRC),r=e.directives[n]||[];if(r.includes(ze.Keyword.NONE))return t;for(let a of r){if(a===ze.Keyword.SELF){t.push(new re.Finding(re.Type.SCRIPT_ALLOWLIST_BYPASS,"'self' can be problematic if you host JSONP, AngularJS or user uploaded files.",re.Severity.MEDIUM_MAYBE,n,a));continue}if(a.startsWith("'")||wB.isUrlScheme(a)||a.indexOf(".")===-1)continue;let o="//"+na.getSchemeFreeUrl(a),i=na.matchWildcardUrls(o,yme.URLS),c=na.matchWildcardUrls(o,bB.URLS);if(c){let u=bB.NEEDS_EVAL.includes(c.hostname), +l=r.includes(ze.Keyword.UNSAFE_EVAL);u&&!l&&(c=null)}if(c||i){let u="",l="";c&&(u=c.hostname,l=" JSONP endpoints"),i&&(u=i.hostname,l+=l.trim()===""?"":" and",l+=" Angular libraries"),t.push(new re.Finding(re.Type.SCRIPT_ALLOWLIST_BYPASS,u+" is known to host"+l+" which allow to bypass this CSP.",re.Severity.HIGH,n,a))}else t.push(new re.Finding(re.Type.SCRIPT_ALLOWLIST_BYPASS,"No bypass found; make sure that this URL doesn't serve JSONP replies or Angular libraries.",re.Severity.MEDIUM_MAYBE,n,a))}return t}s(Tme,"checkScriptAllowlistBypass");fe.checkScriptAllowlistBypass=Tme;function Sme(e){let t=[],n=e.getEffectiveDirective(ze.Directive.OBJECT_SRC),r=e.directives[n]||[],a=e.directives[ze.Directive.PLUGIN_TYPES];if(a&&!a.includes("application/x-shockwave-flash"))return[];for(let o of r){if(o===ze.Keyword.NONE)return[];let i="//"+na.getSchemeFreeUrl(o),c=na.matchWildcardUrls(i,vme.URLS);c?t.push(new re.Finding(re.Type.OBJECT_ALLOWLIST_BYPASS,c.hostname+" is known to host Flash files whi\ +ch allow to bypass this CSP.",re.Severity.HIGH,n,o)):n===ze.Directive.OBJECT_SRC&&t.push(new re.Finding(re.Type.OBJECT_ALLOWLIST_BYPASS,"Can you restrict object-src to 'none' only?",re.Severity.MEDIUM_MAYBE,n,o))}return t}s(Sme,"checkFlashObjectAllowlistBypass");fe.checkFlashObjectAllowlistBypass=Sme;function SB(e){return!!(e.startsWith("[")&&e.endsWith("]")||/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/.test(e))}s(SB,"looksLikeIpAddress");fe.looksLikeIpAddress=SB;function Cme(e){let t=[],n=s((r,a)=>{for(let o of a){let i=na.getHostname(o);SB(i)&&(i==="127.0.0.1"?t.push(new re.Finding(re.Type.IP_SOURCE,r+" directive allows localhost as source. Please make sure to remove this in production environments.",re.Severity.INFO,r,o)):t.push(new re.Finding(re.Type.IP_SOURCE,r+" directive has an IP-Address as source: "+i+" (will be ignored by browsers!). ",re.Severity.INFO,r,o)))}},"checkIp");return na.applyCheckFunktionToDirectives(e,n),t}s(Cme,"checkIpSource");fe.checkIpSource=Cme;function kme(e){ +let t=[];return ze.Directive.REFLECTED_XSS in e.directives&&t.push(new re.Finding(re.Type.DEPRECATED_DIRECTIVE,"reflected-xss is deprecated since CSP2. Please, use the X-XSS-Protection header instead.",re.Severity.INFO,ze.Directive.REFLECTED_XSS)),ze.Directive.REFERRER in e.directives&&t.push(new re.Finding(re.Type.DEPRECATED_DIRECTIVE,"referrer is deprecated since CSP2. Please, use the Referrer-Policy header instead.",re.Severity.INFO,ze.Directive.REFERRER)),ze.Directive.DISOWN_OPENER in e.directives&&t.push(new re.Finding(re.Type.DEPRECATED_DIRECTIVE,"disown-opener is deprecated since CSP3. Please, use the Cross Origin Opener Policy header instead.",re.Severity.INFO,ze.Directive.DISOWN_OPENER)),t}s(kme,"checkDeprecatedDirective");fe.checkDeprecatedDirective=kme;function Fme(e){let t=new RegExp("^'nonce-(.+)'$"),n=[];return na.applyCheckFunktionToDirectives(e,(r,a)=>{for(let o of a){let i=o.match(t);if(!i)continue;i[1].length<8&&n.push(new re.Finding(re.Type.NONCE_LENGTH,"Nonces shoul\ +d be at least 8 characters long.",re.Severity.MEDIUM,r,o)),wB.isNonce(o,!0)||n.push(new re.Finding(re.Type.NONCE_CHARSET,"Nonces should only use the base64 charset.",re.Severity.INFO,r,o))}}),n}s(Fme,"checkNonceLength");fe.checkNonceLength=Fme;function Rme(e){let t=[];return na.applyCheckFunktionToDirectives(e,(n,r)=>{for(let a of r){let o=n===ze.Directive.REPORT_URI?"Use HTTPS to send violation reports securely.":"Allow only resources downloaded over HTTPS.";a.startsWith("http://")&&t.push(new re.Finding(re.Type.SRC_HTTP,o,re.Severity.MEDIUM,n,a))}}),t}s(Rme,"checkSrcHttp");fe.checkSrcHttp=Rme;function Ime(e){return(e.directives[ze.Directive.REPORT_URI]||[]).length>0?[]:(e.directives[ze.Directive.REPORT_TO]||[]).length>0?[new re.Finding(re.Type.REPORT_TO_ONLY,"This CSP policy only provides a reporting destination via the 'report-to' directive. This directive is only supported in Chromium-based browsers so it is recommended to also use a 'report-uri' directive.",re.Severity.INFO,ze.Directive. +REPORT_TO)]:[new re.Finding(re.Type.REPORTING_DESTINATION_MISSING,"This CSP policy does not configure a reporting destination. This makes it difficult to maintain the CSP policy over time and monitor for any breakages.",re.Severity.INFO,ze.Directive.REPORT_URI)]}s(Ime,"checkHasConfiguredReporting");fe.checkHasConfiguredReporting=Ime});var kB=de(on=>{"use strict";d();var Ame=on&&on.__createBinding||(Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]}),_me=on&&on.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Mme=on&&on.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&Ame(t,e,n);return _me(t,e),t};Object.defineProperty(on,"__esModule",{value:!0});on.checkRequiresTrustedTypesForScripts=on.checkAllowlistFallback=on.checkUnsafeInlineFallback=on.checkStrictDynamicNotStandalone=on.checkStrictDynamic=void 0;var Ii=Mme(ea()),th=ea(),In=nc();function Nme(e){let t=e.getEffectiveDirective(Ii.Directive.SCRIPT_SRC),n=e.directives[t]||[];return n.some(a=>!a.startsWith("'"))&&!n.includes(th.Keyword.STRICT_DYNAMIC)?[new In.Finding(In. +Type.STRICT_DYNAMIC,"Host allowlists can frequently be bypassed. Consider using 'strict-dynamic' in combination with CSP nonces or hashes.",In.Severity.STRICT_CSP,t)]:[]}s(Nme,"checkStrictDynamic");on.checkStrictDynamic=Nme;function Ome(e){let t=e.getEffectiveDirective(Ii.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(th.Keyword.STRICT_DYNAMIC)&&!e.policyHasScriptNonces()&&!e.policyHasScriptHashes()?[new In.Finding(In.Type.STRICT_DYNAMIC_NOT_STANDALONE,"'strict-dynamic' without a CSP nonce/hash will block all scripts.",In.Severity.INFO,t)]:[]}s(Ome,"checkStrictDynamicNotStandalone");on.checkStrictDynamicNotStandalone=Ome;function Lme(e){if(!e.policyHasScriptNonces()&&!e.policyHasScriptHashes())return[];let t=e.getEffectiveDirective(Ii.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(th.Keyword.UNSAFE_INLINE)?[]:[new In.Finding(In.Type.UNSAFE_INLINE_FALLBACK,"Consider adding 'unsafe-inline' (ignored by browsers supporting nonces/hashes) to be backward compatible wi\ +th older browsers.",In.Severity.STRICT_CSP,t)]}s(Lme,"checkUnsafeInlineFallback");on.checkUnsafeInlineFallback=Lme;function Pme(e){let t=e.getEffectiveDirective(Ii.Directive.SCRIPT_SRC),n=e.directives[t]||[];return n.includes(th.Keyword.STRICT_DYNAMIC)?n.some(r=>["http:","https:","*"].includes(r)||r.includes("."))?[]:[new In.Finding(In.Type.ALLOWLIST_FALLBACK,"Consider adding https: and http: url schemes (ignored by browsers supporting 'strict-dynamic') to be backward compatible with older browsers.",In.Severity.STRICT_CSP,t)]:[]}s(Pme,"checkAllowlistFallback");on.checkAllowlistFallback=Pme;function Bme(e){let t=e.getEffectiveDirective(Ii.Directive.REQUIRE_TRUSTED_TYPES_FOR);return(e.directives[t]||[]).includes(Ii.TrustedTypesSink.SCRIPT)?[]:[new In.Finding(In.Type.REQUIRE_TRUSTED_TYPES_FOR_SCRIPTS,`Consider requiring Trusted Types for scripts to lock down DOM XSS injection sinks. You can do this by adding "require-trusted-types-for 'script'" to your policy.`,In.Severity.INFO,Ii.Directive. +REQUIRE_TRUSTED_TYPES_FOR)]}s(Bme,"checkRequiresTrustedTypesForScripts");on.checkRequiresTrustedTypesForScripts=Bme});var AB=de(Mo=>{"use strict";d();Object.defineProperty(Mo,"__esModule",{value:!0});Mo.evaluateForSyntaxErrors=Mo.evaluateForWarnings=Mo.evaluateForFailure=void 0;var $2=pB(),_o=CB(),Y2=kB(),FB=ea();function IB(e,t){return e.some(n=>n.equals(t))}s(IB,"arrayContains");function Ume(e){let t=[];if(e.length===0)return t;let n=e[0];for(let r of n)e.every(a=>IB(a,r))&&t.push(r);return t}s(Ume,"setIntersection");function jme(e){let t=[];for(let n of e)for(let r of n)IB(t,r)||t.push(r);return t}s(jme,"setUnion");function oc(e,t){let n=[];for(let r of e)n.push(t(r));return Ume(n)}s(oc,"atLeastOnePasses");function RB(e,t){let n=[];for(let r of e)n.push(t(r));return jme(n)}s(RB,"atLeastOneFails");function zme(e){let t=[...oc(e,_o.checkMissingScriptSrcDirective),...oc(e,_o.checkMissingObjectSrcDirective),..._o.checkMultipleMissingBaseUriDirective(e)],n=e.map(o=>o.getEffectiveCsp(FB.Version.CSP3)),r=n.filter(o=>{let i=o.getEffectiveDirective(FB.Directive.SCRIPT_SRC);return o.directives[i]}),a=[...oc( +r,Y2.checkStrictDynamic),...oc(r,_o.checkScriptUnsafeInline),...oc(n,_o.checkWildcards),...oc(n,_o.checkPlainUrlSchemes)];return[...t,...a]}s(zme,"evaluateForFailure");Mo.evaluateForFailure=zme;function qme(e){return[...RB(e,Y2.checkUnsafeInlineFallback),...RB(e,Y2.checkAllowlistFallback)]}s(qme,"evaluateForWarnings");Mo.evaluateForWarnings=qme;function Hme(e){let t=[];for(let n of e){let r=[..._o.checkNonceLength(n),...$2.checkUnknownDirective(n),..._o.checkDeprecatedDirective(n),...$2.checkMissingSemicolon(n),...$2.checkInvalidKeyword(n)];t.push(r)}return t}s(Hme,"evaluateForSyntaxErrors");Mo.evaluateForSyntaxErrors=Hme});var MB=de(cr=>{"use strict";d();var Wme=cr&&cr.__createBinding||(Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]}),Gme=cr&&cr.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vme=cr&&cr.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&Wme(t,e,n);return Gme(t,e),t};Object.defineProperty(cr,"__esModule",{value:!0});cr.TEST_ONLY=cr.CspParser=void 0;var Jd=Vme(ea()),K2=class{static{s(this,"CspParser")}constructor(t){this.csp=new Jd.Csp,this.parse(t)}parse(t){this.csp=new Jd.Csp;let n=t.split(";");for(let r=0;r<n.length;r++){let o=n[r].trim().match(/\S+/g);if(Array.isArray(o)){let i=o[0].toLowerCase();if(i in this.csp.directives)continue;Jd.isDirective(i);let c=[];for(let u,l=1;u=o[l];l++)u= +_B(u),c.includes(u)||c.push(u);this.csp.directives[i]=c}}return this.csp}};cr.CspParser=K2;function _B(e){e=e.trim();let t=e.toLowerCase();return Jd.isKeyword(t)||Jd.isUrlScheme(e)?t:e}s(_B,"normalizeDirectiveValue");cr.TEST_ONLY={normalizeDirectiveValue:_B}});function OB(e){let t=$me[e.type];return t?ds(t)?t:typeof t=="string"?En(t,{keyword:e.value||""}):(t=t[e.directive],t||(M.warn("CSP Evaluator",`No translation found for description: ${e.description}`),e.description)):(M.warn("CSP Evaluator",`No translation found for description: ${e.description}`),e.description)}function Yme(e){return new NB.CspParser(e).csp}function J2(e){let t=e.map(Yme),n=(0,ic.evaluateForFailure)(t),r=(0,ic.evaluateForWarnings)(t),a=(0,ic.evaluateForSyntaxErrors)(t);return{bypasses:n,warnings:r,syntax:a}}var ic,xn,NB,Ai,Gt,En,$me,LB=g(()=>{"use strict";d();ic=mn(AB(),1),xn=mn(nc(),1),NB=mn(MB(),1),Ai=mn(ea(),1);Oe();A();va();Gt={missingBaseUri:"Missing `base-uri` allows injected `<base>` tags to set the base URL for all relative URLs (e.g. scripts) to an attacker controlled domain. Consider setting `base-uri` to `'none'` or `'self'`.",missingScriptSrc:"`script-src` directive is missing. This can allow the execution of unsafe scripts.",missingObjectSrc:"Missing `obje\ ct-src` allows the injection of plugins that execute unsafe scripts. Consider setting `object-src` to `'none'` if you can.",strictDynamic:"Host allowlists can frequently be bypassed. Consider using CSP nonces or hashes instead, along with `'strict-dynamic'` if necessary.",unsafeInline:"`'unsafe-inline'` allows the execution of unsafe in-page scripts and event handlers. Consider using CSP nonces or hashes to allow scripts individually.",unsafeInlineFallback:"Consider adding `'unsafe-inline'` (ignored by browsers supporting nonces/hashes) to be backward compatible with older browsers.",allowlistFallback:"Consider adding https: and http: URL schemes (ignored by browsers supporting `'strict-dynamic'`) to be backward compatible with older browsers.",reportToOnly:"The reporting destination is only configured via the report-to directive. This directive is only supported in Chromium-based browsers so it is recommended to also use a `report-uri` directive.",reportingDestinationMissing:"No CSP c\ onfigures a reporting destination. This makes it difficult to maintain the CSP over time and monitor for any breakages.",nonceLength:"Nonces should be at least 8 characters long.",nonceCharset:"Nonces should use the base64 charset.",missingSemicolon:"Did you forget the semicolon? {keyword} seems to be a directive, not a keyword.",unknownDirective:"Unknown CSP directive.",unknownKeyword:"{keyword} seems to be an invalid keyword.",deprecatedReflectedXSS:"`reflected-xss` is deprecated since CSP2. Please, use the X-XSS-Protection header instead.",deprecatedReferrer:"`referrer` is deprecated since CSP2. Please, use the Referrer-Policy header instead.",deprecatedDisownOpener:"`disown-opener` is deprecated since CSP3. Please, use the Cross-Origin-Opener-Policy header instead.",plainWildcards:"Avoid using plain wildcards ({keyword}) in this directive. Plain wildcards allow scripts to be sourced from an unsafe domain.",plainUrlScheme:"Avoid using plain URL schemes ({keyword}) in this directive.\ - Plain URL schemes allow scripts to be sourced from an unsafe domain."},gr=D("core/lib/csp-evaluator.js",Ht),mce={[hr.Type.MISSING_SEMICOLON]:Ht.missingSemicolon,[hr.Type.UNKNOWN_DIRECTIVE]:gr(Ht.unknownDirective),[hr.Type.INVALID_KEYWORD]:Ht.unknownKeyword,[hr.Type.MISSING_DIRECTIVES]:{[Co.Directive.BASE_URI]:gr(Ht.missingBaseUri),[Co.Directive.SCRIPT_SRC]:gr(Ht.missingScriptSrc),[Co.Directive.OBJECT_SRC]:gr(Ht.missingObjectSrc)},[hr.Type.SCRIPT_UNSAFE_INLINE]:gr(Ht.unsafeInline),[hr.Type.PLAIN_WILDCARD]:Ht.plainWildcards,[hr.Type.PLAIN_URL_SCHEMES]:Ht.plainUrlScheme,[hr.Type.NONCE_LENGTH]:gr(Ht.nonceLength),[hr.Type.NONCE_CHARSET]:gr(Ht.nonceCharset),[hr.Type.DEPRECATED_DIRECTIVE]:{[Co.Directive.REFLECTED_XSS]:gr(Ht.deprecatedReflectedXSS),[Co.Directive.REFERRER]:gr(Ht.deprecatedReferrer),[Co.Directive.DISOWN_OPENER]:gr(Ht.deprecatedDisownOpener)},[hr.Type.STRICT_DYNAMIC]:gr(Ht.strictDynamic),[hr.Type.UNSAFE_INLINE_FALLBACK]:gr(Ht.unsafeInlineFallback),[hr.Type.ALLOWLIST_FALLBACK]:gr( -Ht.allowlistFallback),[hr.Type.REPORTING_DESTINATION_MISSING]:gr(Ht.reportingDestinationMissing),[hr.Type.REPORT_TO_ONLY]:gr(Ht.reportToOnly)};s(eU,"getTranslatedDescription");s(fce,"parseCsp");s(gS,"evaluateRawCspsForXss")});var rU={};x(rU,{UIStrings:()=>ki,default:()=>hce});var ki,rn,yS,hce,nU=g(()=>{"use strict";d();V();dr();R();tU();ki={title:"Ensure CSP is effective against XSS attacks",description:"A strong Content Security Policy (CSP) significantly reduces the risk of cross-site scripting (XSS) attacks. [Learn how to use a CSP to prevent XSS](https://developer.chrome.com/docs/lighthouse/best-practices/csp-xss/)",noCsp:"No CSP found in enforcement mode",metaTagMessage:"The page contains a CSP defined in a `<meta>` tag. Consider moving the CSP to an HTTP header or defining another strict CSP in an HTTP header.",columnDirective:"Directive",columnSeverity:"Severity",itemSeveritySyntax:"Syntax"},rn=D("core/audits/csp-xss.js",ki),yS=class extends v{static{s(this,"CspXss")}static get meta(){return{id:"csp-xss",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:rn(ki.title),description:rn(ki.description),requiredArtifacts:["devtoolsLogs","MetaElements","URL"]}}static async getRawCsps(t,r){let n=t.devtoolsLogs[v. -DEFAULT_PASS],i=await lt.request({devtoolsLog:n,URL:t.URL},r),a=t.MetaElements.filter(u=>u.httpEquiv&&u.httpEquiv.toLowerCase()==="content-security-policy").flatMap(u=>(u.content||"").split(",")).filter(u=>u.replace(/\s/g,""));return{cspHeaders:i.responseHeaders.filter(u=>u.name.toLowerCase()==="content-security-policy").flatMap(u=>u.value.split(",")).filter(u=>u.replace(/\s/g,"")),cspMetaTags:a}}static findingToTableItem(t,r){return{directive:t.directive,description:eU(t),severity:r}}static constructSyntaxResults(t,r){let n=[];for(let i=0;i<t.length;++i){let a=t[i].map(o=>this.findingToTableItem(o));a.length&&n.push({severity:rn(ki.itemSeveritySyntax),description:{type:"code",value:r[i]},subItems:{type:"subitems",items:a}})}return n}static constructResults(t,r){let n=[...t,...r];if(!n.length)return{score:0,results:[{severity:rn(F.itemSeverityHigh),description:rn(ki.noCsp),directive:void 0}]};let{bypasses:i,warnings:a,syntax:o}=gS(n),u=[...this.constructSyntaxResults(o,n),...i.map(p=>this. -findingToTableItem(p,rn(F.itemSeverityHigh))),...a.map(p=>this.findingToTableItem(p,rn(F.itemSeverityMedium)))],c=gS(t).bypasses.length>0||t.length===0;return r.length>0&&c&&u.push({severity:rn(F.itemSeverityMedium),description:rn(ki.metaTagMessage),directive:void 0}),{score:i.length?0:1,results:u}}static async audit(t,r){let{cspHeaders:n,cspMetaTags:i}=await this.getRawCsps(t,r),{score:a,results:o}=this.constructResults(n,i),u=[{key:"description",valueType:"text",subItemsHeading:{key:"description"},label:rn(F.columnDescription)},{key:"directive",valueType:"code",subItemsHeading:{key:"directive"},label:rn(ki.columnDirective)},{key:"severity",valueType:"text",subItemsHeading:{key:"severity"},label:rn(ki.columnSeverity)}],l=v.makeTableDetails(u,o);return{score:a,notApplicable:!o.length,details:l}}},hce=yS});var vS,iU,aU=g(()=>{"use strict";d();vS={AuthorizationCoveredByWildcard:"Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling.",CanRequestURLHTTPContainingNewline:"Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources.",ChromeLoadTimesConnectionInfo:"`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2.",ChromeLoadTimesFirstPaintAfterLoadTime:"`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing.",ChromeLoadTimesWasAlternateProtocolAvailable:"`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2.",CookieWithTruncatingChar:"Cookies containing a `(0|r|n)` character will be rejected instead of truncated.",CrossOriginAccessBasedOnDocumentDomain:"\ + Plain URL schemes allow scripts to be sourced from an unsafe domain."},En=D("core/lib/csp-evaluator.js",Gt),$me={[xn.Type.MISSING_SEMICOLON]:Gt.missingSemicolon,[xn.Type.UNKNOWN_DIRECTIVE]:En(Gt.unknownDirective),[xn.Type.INVALID_KEYWORD]:Gt.unknownKeyword,[xn.Type.MISSING_DIRECTIVES]:{[Ai.Directive.BASE_URI]:En(Gt.missingBaseUri),[Ai.Directive.SCRIPT_SRC]:En(Gt.missingScriptSrc),[Ai.Directive.OBJECT_SRC]:En(Gt.missingObjectSrc)},[xn.Type.SCRIPT_UNSAFE_INLINE]:En(Gt.unsafeInline),[xn.Type.PLAIN_WILDCARD]:Gt.plainWildcards,[xn.Type.PLAIN_URL_SCHEMES]:Gt.plainUrlScheme,[xn.Type.NONCE_LENGTH]:En(Gt.nonceLength),[xn.Type.NONCE_CHARSET]:En(Gt.nonceCharset),[xn.Type.DEPRECATED_DIRECTIVE]:{[Ai.Directive.REFLECTED_XSS]:En(Gt.deprecatedReflectedXSS),[Ai.Directive.REFERRER]:En(Gt.deprecatedReferrer),[Ai.Directive.DISOWN_OPENER]:En(Gt.deprecatedDisownOpener)},[xn.Type.STRICT_DYNAMIC]:En(Gt.strictDynamic),[xn.Type.UNSAFE_INLINE_FALLBACK]:En(Gt.unsafeInlineFallback),[xn.Type.ALLOWLIST_FALLBACK]:En( +Gt.allowlistFallback),[xn.Type.REPORTING_DESTINATION_MISSING]:En(Gt.reportingDestinationMissing),[xn.Type.REPORT_TO_ONLY]:En(Gt.reportToOnly)};s(OB,"getTranslatedDescription");s(Yme,"parseCsp");s(J2,"evaluateRawCspsForXss")});var PB={};T(PB,{UIStrings:()=>La,default:()=>Kme});var La,ur,X2,Kme,BB=g(()=>{"use strict";d();V();rn();A();LB();La={title:"Ensure CSP is effective against XSS attacks",description:"A strong Content Security Policy (CSP) significantly reduces the risk of cross-site scripting (XSS) attacks. [Learn how to use a CSP to prevent XSS](https://developer.chrome.com/docs/lighthouse/best-practices/csp-xss/)",noCsp:"No CSP found in enforcement mode",metaTagMessage:"The page contains a CSP defined in a `<meta>` tag. Consider moving the CSP to an HTTP header or defining another strict CSP in an HTTP header.",columnDirective:"Directive",columnSeverity:"Severity",itemSeveritySyntax:"Syntax"},ur=D("core/audits/csp-xss.js",La),X2=class extends b{static{s(this,"CspXss")}static get meta(){return{id:"csp-xss",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:ur(La.title),description:ur(La.description),requiredArtifacts:["devtoolsLogs","MetaElements","URL"]}}static async getRawCsps(t,n){let r=t.devtoolsLogs[b. +DEFAULT_PASS],a=await Qe.request({devtoolsLog:r,URL:t.URL},n),o=t.MetaElements.filter(c=>c.httpEquiv&&c.httpEquiv.toLowerCase()==="content-security-policy").flatMap(c=>(c.content||"").split(",")).filter(c=>c.replace(/\s/g,""));return{cspHeaders:a.responseHeaders.filter(c=>c.name.toLowerCase()==="content-security-policy").flatMap(c=>c.value.split(",")).filter(c=>c.replace(/\s/g,"")),cspMetaTags:o}}static findingToTableItem(t,n){return{directive:t.directive,description:OB(t),severity:n}}static constructSyntaxResults(t,n){let r=[];for(let a=0;a<t.length;++a){let o=t[a].map(i=>this.findingToTableItem(i));o.length&&r.push({severity:ur(La.itemSeveritySyntax),description:{type:"code",value:n[a]},subItems:{type:"subitems",items:o}})}return r}static constructResults(t,n){let r=[...t,...n];if(!r.length)return{score:0,results:[{severity:ur(F.itemSeverityHigh),description:ur(La.noCsp),directive:void 0}]};let{bypasses:a,warnings:o,syntax:i}=J2(r),c=[...this.constructSyntaxResults(i,r),...a.map(m=>this. +findingToTableItem(m,ur(F.itemSeverityHigh))),...o.map(m=>this.findingToTableItem(m,ur(F.itemSeverityMedium)))],l=J2(t).bypasses.length>0||t.length===0;return n.length>0&&l&&c.push({severity:ur(F.itemSeverityMedium),description:ur(La.metaTagMessage),directive:void 0}),{score:a.length?0:1,results:c}}static async audit(t,n){let{cspHeaders:r,cspMetaTags:a}=await this.getRawCsps(t,n),{score:o,results:i}=this.constructResults(r,a),c=[{key:"description",valueType:"text",subItemsHeading:{key:"description"},label:ur(F.columnDescription)},{key:"directive",valueType:"code",subItemsHeading:{key:"directive"},label:ur(La.columnDirective)},{key:"severity",valueType:"text",subItemsHeading:{key:"severity"},label:ur(La.columnSeverity)}],u=b.makeTableDetails(c,i);return{score:o,notApplicable:!i.length,details:u}}},Kme=X2});var Z2,UB,jB=g(()=>{"use strict";d();Z2={AuthorizationCoveredByWildcard:"Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling.",CanRequestURLHTTPContainingNewline:"Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources.",ChromeLoadTimesConnectionInfo:"`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2.",ChromeLoadTimesFirstPaintAfterLoadTime:"`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing.",ChromeLoadTimesWasAlternateProtocolAvailable:"`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2.",CookieWithTruncatingChar:"Cookies containing a `(0|r|n)` character will be rejected instead of truncated.",CrossOriginAccessBasedOnDocumentDomain:"\ Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`.",CrossOriginWindowAlert:"Triggering window.alert from cross origin iframes has been deprecated and will be removed in the future.",CrossOriginWindowConfirm:"Triggering window.confirm from cross origin iframes has been deprecated and will be removed in the future.",CSSSelectorInternalMediaControlsOverlayCastButton:"The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector.",DataUrlInSvgUse:"Support for data: URLs in SVG <use> element is deprecated and it will be removed in the future.",DocumentDomainSettingWithoutOriginAgentClusterHeader:"Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using th\ is feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details.",DOMMutationEvents:"DOM Mutation Events, including `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, and `DOMCharacterDataModified` are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use `MutationObserver` instead.",ExpectCTHeader:"The `Expect-CT` header is deprecated and will be removed. Chrome requires Certificate Transparency for all publicly trusted certificates issued after April 30, 2018.",GeolocationInsecureOrigin:"`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-i\ nsecure-origins for more details.",GeolocationInsecureOriginDeprecatedNotRemoved:"`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.",GetUserMediaInsecureOrigin:"`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.",HostCandidateAttributeGetter:"`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead.",IdentityInCanMakePaymentEvent:"The merchant origin and arbitrary data from the `canmakepayment` service worker event are deprecated and will be removed: `topOrigin`, `paymentRequestOrigin`, `methodData`, `modifiers`.",InsecurePrivateNetworkSubresourceRequest:"\ @@ -1654,134 +1933,139 @@ kitEnterFullScreen() is deprecated. Please use Element.requestFullscreen() instead.",PrefixedVideoEnterFullscreen:"HTMLVideoElement.webkitEnterFullscreen() is deprecated. Please use Element.requestFullscreen() instead.",PrefixedVideoExitFullScreen:"HTMLVideoElement.webkitExitFullScreen() is deprecated. Please use Document.exitFullscreen() instead.",PrefixedVideoExitFullscreen:"HTMLVideoElement.webkitExitFullscreen() is deprecated. Please use Document.exitFullscreen() instead.",PrefixedVideoSupportsFullscreen:"HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead.",PrivacySandboxExtensionsAPI:"We're deprecating the API `chrome.privacy.websites.privacySandboxEnabled`, though it will remain active for backward compatibility until release M113. Instead, please use `chrome.privacy.websites.topicsEnabled`, `chrome.privacy.websites.fledgeEnabled` and `chrome.privacy.websites.adMeasurementEnabled`. See https://developer.chrome.com/docs/extension\ s/reference/privacy/#property-websites-privacySandboxEnabled.",RangeExpand:"Range.expand() is deprecated. Please use Selection.modify() instead.",RequestedSubresourceWithEmbeddedCredentials:"Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked.",RTCConstraintEnableDtlsSrtpFalse:"The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead.",RTCConstraintEnableDtlsSrtpTrue:"The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness.",RTCPeerConnectionGetStatsLegacyNonCompliant:"The callback-based getStats() is deprecated and will be removed. Use the spec-compliant getStats() instead.",RtcpMuxPolicyNegotiate:"\ The `rtcpMuxPolicy` option is deprecated and will be removed.",SharedArrayBufferConstructedWithoutIsolation:"`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.",TextToSpeech_DisallowedByAutoplay:"`speechSynthesis.speak()` without user activation is deprecated and will be removed.",V8SharedArrayBufferConstructedInExtensionWithoutIsolation:"Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.",WebSQL:"Web SQL is deprecated. Please use SQLite WebAssembly or Indexed Database",WindowPlacementPermissionDescriptorUsed:"The permission descriptor `window-placement` is deprecated. Use `window-management` instead. For more help, check https://bit.ly/window-placement-rename.",WindowPlacementPermissionPolicyParsed:"The permission policy `window-placement` is deprecated. Use `window-management` in\ -stead. For more help, check https://bit.ly/window-placement-rename.",XHRJSONEncodingDetection:"UTF-16 is not supported by response json in `XMLHttpRequest`",XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload:"Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.",XRSupportsSession:"`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead."},iU={AuthorizationCoveredByWildcard:{milestone:97},CSSSelectorInternalMediaControlsOverlayCastButton:{chromeStatusFeature:5714245488476160},CanRequestURLHTTPContainingNewline:{chromeStatusFeature:5735596811091968},ChromeLoadTimesConnectionInfo:{chromeStatusFeature:5637885046816768},ChromeLoadTimesFirstPaintAfterLoadTime:{chromeStatusFeature:5637885046816768},ChromeLoadTimesWasAlternateProtocolAvailable:{chromeStatusFeature:5637885046816768},CookieWithTruncatingChar:{milestone:103}, +stead. For more help, check https://bit.ly/window-placement-rename.",XHRJSONEncodingDetection:"UTF-16 is not supported by response json in `XMLHttpRequest`",XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload:"Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.",XRSupportsSession:"`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead."},UB={AuthorizationCoveredByWildcard:{milestone:97},CSSSelectorInternalMediaControlsOverlayCastButton:{chromeStatusFeature:5714245488476160},CanRequestURLHTTPContainingNewline:{chromeStatusFeature:5735596811091968},ChromeLoadTimesConnectionInfo:{chromeStatusFeature:5637885046816768},ChromeLoadTimesFirstPaintAfterLoadTime:{chromeStatusFeature:5637885046816768},ChromeLoadTimesWasAlternateProtocolAvailable:{chromeStatusFeature:5637885046816768},CookieWithTruncatingChar:{milestone:103}, CrossOriginAccessBasedOnDocumentDomain:{milestone:115},DOMMutationEvents:{chromeStatusFeature:5083947249172480,milestone:127},DataUrlInSvgUse:{chromeStatusFeature:5128825141198848,milestone:119},DocumentDomainSettingWithoutOriginAgentClusterHeader:{milestone:115},ExpectCTHeader:{chromeStatusFeature:6244547273687040,milestone:107},IdentityInCanMakePaymentEvent:{chromeStatusFeature:5190978431352832},InsecurePrivateNetworkSubresourceRequest:{chromeStatusFeature:5436853517811712,milestone:92},LocalCSSFileExtensionRejected:{milestone:64},MediaSourceAbortRemove:{chromeStatusFeature:6107495151960064},MediaSourceDurationTruncatingBuffered:{chromeStatusFeature:6107495151960064},NoSysexWebMIDIWithoutPermission:{chromeStatusFeature:5138066234671104,milestone:82},NonStandardDeclarativeShadowDOM:{chromeStatusFeature:6239658726391808,milestone:119},NotificationPermissionRequestedIframe:{chromeStatusFeature:6451284559265792},ObsoleteCreateImageBitmapImageOrientationNone:{milestone:111},ObsoleteWebRtcCipherSuite:{ milestone:81},OverflowVisibleOnReplacedElement:{chromeStatusFeature:5137515594383360,milestone:108},PaymentInstruments:{chromeStatusFeature:5099285054488576},PaymentRequestCSPViolation:{chromeStatusFeature:6286595631087616},PersistentQuotaType:{chromeStatusFeature:5176235376246784,milestone:106},RTCConstraintEnableDtlsSrtpFalse:{milestone:97},RTCConstraintEnableDtlsSrtpTrue:{milestone:97},RTCPeerConnectionGetStatsLegacyNonCompliant:{chromeStatusFeature:4631626228695040,milestone:117},RequestedSubresourceWithEmbeddedCredentials:{chromeStatusFeature:5669008342777856},RtcpMuxPolicyNegotiate:{chromeStatusFeature:5654810086866944,milestone:62},SharedArrayBufferConstructedWithoutIsolation:{milestone:106},TextToSpeech_DisallowedByAutoplay:{chromeStatusFeature:5687444770914304,milestone:71},V8SharedArrayBufferConstructedInExtensionWithoutIsolation:{milestone:96},WebSQL:{chromeStatusFeature:5134293578285056,milestone:115},WindowPlacementPermissionDescriptorUsed:{chromeStatusFeature:5137018030391296, -milestone:112},WindowPlacementPermissionPolicyParsed:{chromeStatusFeature:5137018030391296,milestone:112},XHRJSONEncodingDetection:{milestone:93},XRSupportsSession:{milestone:80}}});function oU(e){let t,r=e.type,n=vS[r];n&&(t=gce(n));let i=[],a=iU[r],o=a?.chromeStatusFeature??0;o!==0&&i.push({link:`https://chromestatus.com/feature/${o}`,linkTitle:bS(Z1.feature)});let u=a?.milestone??0;return u!==0&&i.push({link:"https://chromiumdash.appspot.com/schedule",linkTitle:bS(Z1.milestone,{milestone:u})}),{substitutions:new Map([["PLACEHOLDER_title",bS(Z1.title)],["PLACEHOLDER_message",t]]),links:i,message:t}}var Z1,bS,gce,sU=g(()=>{"use strict";d();R();aU();Z1={feature:"Check the feature status page for more details.",milestone:"This change will go into effect with milestone {milestone}.",title:"Deprecated Feature Used"},bS=D("core/lib/deprecation-description.js",Z1),gce=D("core/lib/deprecation-description.js",vS);s(oU,"getIssueDetailDescription")});var uU={};x(uU,{UIStrings:()=>Fo,default:()=>yce});var Fo,ou,wS,yce,lU=g(()=>{"use strict";d();V();ha();R();sU();Fo={title:"Avoids deprecated APIs",failureTitle:"Uses deprecated APIs",description:"Deprecated APIs will eventually be removed from the browser. [Learn more about deprecated APIs](https://developer.chrome.com/docs/lighthouse/best-practices/deprecations/).",displayValue:`{itemCount, plural, +milestone:112},WindowPlacementPermissionPolicyParsed:{chromeStatusFeature:5137018030391296,milestone:112},XHRJSONEncodingDetection:{milestone:93},XRSupportsSession:{milestone:80}}});function zB(e){let t,n=e.type,r=Z2[n];r&&(t=Jme(r));let a=[],o=UB[n],i=o?.chromeStatusFeature??0;i!==0&&a.push({link:`https://chromestatus.com/feature/${i}`,linkTitle:Q2(nh.feature)});let c=o?.milestone??0;return c!==0&&a.push({link:"https://chromiumdash.appspot.com/schedule",linkTitle:Q2(nh.milestone,{milestone:c})}),{substitutions:new Map([["PLACEHOLDER_title",Q2(nh.title)],["PLACEHOLDER_message",t]]),links:a,message:t}}var nh,Q2,Jme,qB=g(()=>{"use strict";d();A();jB();nh={feature:"Check the feature status page for more details.",milestone:"This change will go into effect with milestone {milestone}.",title:"Deprecated Feature Used"},Q2=D("core/lib/deprecation-description.js",nh),Jme=D("core/lib/deprecation-description.js",Z2);s(zB,"getIssueDetailDescription")});var HB={};T(HB,{UIStrings:()=>_i,default:()=>Xme});var _i,sc,eS,Xme,WB=g(()=>{"use strict";d();V();ko();A();qB();_i={title:"Avoids deprecated APIs",failureTitle:"Uses deprecated APIs",description:"Deprecated APIs will eventually be removed from the browser. [Learn more about deprecated APIs](https://developer.chrome.com/docs/lighthouse/best-practices/deprecations/).",displayValue:`{itemCount, plural, =1 {1 warning found} other {# warnings found} - }`,columnDeprecate:"Deprecation / Warning",columnLine:"Line"},ou=D("core/audits/deprecations.js",Fo),wS=class extends v{static{s(this,"Deprecations")}static get meta(){return{id:"deprecations",title:ou(Fo.title),failureTitle:ou(Fo.failureTitle),description:ou(Fo.description),requiredArtifacts:["InspectorIssues","SourceMaps","Scripts"]}}static async audit(t,r){let n=await Ar.request(t,r),i=t.InspectorIssues.deprecationIssue.map(l=>{let{scriptId:c,url:p,lineNumber:m,columnNumber:f}=l.sourceCodeLocation,h=n.find(T=>T.script.scriptId===c),y=oU(l),b;y.links.length&&(b={type:"subitems",items:y.links.map(T=>({type:"link",url:T.link,text:T.linkTitle}))});let w=l.message;return{value:y.message||w||l.type,source:v.makeSourceLocation(p,m,f-1,h),subItems:b}}),a=[{key:"value",valueType:"text",label:ou(Fo.columnDeprecate)},{key:"source",valueType:"source-location",label:ou(F.columnSource)}],o=v.makeTableDetails(a,i),u;return i.length>0&&(u=ou(Fo.displayValue,{itemCount:i.length})),{score:+(i.length=== -0),displayValue:u,details:o}}},yce=wS});var cU={};x(cU,{default:()=>vce});var DS,vce,dU=g(()=>{"use strict";d();V();Eo();at();ho();dr();DS=class extends v{static{s(this,"Diagnostics")}static get meta(){return{id:"diagnostics",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Diagnostics",description:"Collection of useful page vitals.",supportedModes:["navigation"],requiredArtifacts:["URL","traces","devtoolsLogs"]}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=await Qr.request(n,r),o=await ie.request(i,r),u=await hn.request(i,r),l=await lt.request({devtoolsLog:i,URL:t.URL},r),c=a.filter(w=>!w.parent),p=l.transferSize,m=o.reduce((w,E)=>w+(E.transferSize||0),0),f=c.reduce((w,E)=>w+(E.duration||0),0),h=Math.max(...u.additionalRttByOrigin.values())+u.rtt,y=Math.max(...u.serverResponseTimeByOrigin.values());return{score:1,details:{type:"debugdata",items:[{numRequests:o.length,numScripts:o.filter(w=>w.resourceType==="Script").length,numStylesheets:o.filter(w=>w.resourceType==="Styleshee\ -t").length,numFonts:o.filter(w=>w.resourceType==="Font").length,numTasks:c.length,numTasksOver10ms:c.filter(w=>w.duration>10).length,numTasksOver25ms:c.filter(w=>w.duration>25).length,numTasksOver50ms:c.filter(w=>w.duration>50).length,numTasksOver100ms:c.filter(w=>w.duration>100).length,numTasksOver500ms:c.filter(w=>w.duration>500).length,rtt:u.rtt,throughput:u.throughput,maxRtt:h,maxServerLatency:y,totalByteWeight:m,totalTaskTime:f,mainDocumentTransferSize:p}]}}}},vce=DS});var fU={};x(fU,{CHARSET_HTML_REGEX:()=>mU,CHARSET_HTTP_REGEX:()=>TS,IANA_REGEX:()=>pU,UIStrings:()=>Yd,default:()=>wce});var Yd,ES,bce,pU,mU,TS,xS,wce,hU=g(()=>{"use strict";d();V();R();dr();Yd={title:"Properly defines charset",failureTitle:"Charset declaration is missing or occurs too late in the HTML",description:"A character encoding declaration is required. It can be done with a `<meta>` tag in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. [Learn more about declaring the character encoding](https://developer.chrome.com/docs/lighthouse/best-practices/charset/)."},ES=D("core/audits/dobetterweb/charset.js",Yd),bce="content-type",pU=/^[a-zA-Z0-9-_:.()]{2,}$/,mU=/<meta[^>]+charset[^<]+>/i,TS=/charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/i,xS=class extends v{static{s(this,"CharsetDefined")}static get meta(){return{id:"charset",title:ES(Yd.title),failureTitle:ES(Yd.failureTitle),description:ES(Yd.description),requiredArtifacts:["MainDocumentContent","URL","devtoolsL\ -ogs","MetaElements"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await lt.request({devtoolsLog:n,URL:t.URL},r),a=!1;if(i.responseHeaders){let u=i.responseHeaders.find(l=>l.name.toLowerCase()===bce);u&&(a=TS.test(u.value))}return a=a||t.MainDocumentContent.charCodeAt(0)===65279,mU.test(t.MainDocumentContent.slice(0,1024))&&(a=a||t.MetaElements.some(u=>u.charset&&pU.test(u.charset)||u.httpEquiv==="content-type"&&u.content&&TS.test(u.content))),{score:Number(a)}}},wce=xS});var gU={};x(gU,{UIStrings:()=>vn,default:()=>Dce});var vn,_i,SS,Dce,yU=g(()=>{"use strict";d();V();R();Bt();vn={title:"Page has the HTML doctype",failureTitle:"Page lacks the HTML doctype, thus triggering quirks-mode",description:"Specifying a doctype prevents the browser from switching to quirks-mode. [Learn more about the doctype declaration](https://developer.chrome.com/docs/lighthouse/best-practices/doctype/).",explanationNoDoctype:"Document must contain a doctype",explanationWrongDoctype:"Document contains a `doctype` that triggers `quirks-mode`",explanationLimitedQuirks:"Document contains a `doctype` that triggers `limited-quirks-mode`",explanationPublicId:"Expected publicId to be an empty string",explanationSystemId:"Expected systemId to be an empty string",explanationBadDoctype:"Doctype name must be the string `html`"},_i=D("core/audits/dobetterweb/doctype.js",vn),SS=class extends v{static{s(this,"Doctype")}static get meta(){return{id:"doctype",title:_i(vn.title),failureTitle:_i( -vn.failureTitle),description:_i(vn.description),requiredArtifacts:["Doctype"],__internalOptionalArtifacts:["InspectorIssues","traces"]}}static async audit(t,r){if(!t.Doctype)return{score:0,explanation:_i(vn.explanationNoDoctype)};let n=t.Doctype.name,i=t.Doctype.publicId,a=t.Doctype.systemId,o=t.Doctype.documentCompatMode,u=t.traces?.[v.DEFAULT_PASS],l=[];if(u&&t.InspectorIssues){let m=(await xe.request(u,r)).mainFrameInfo.frameId;l=t.InspectorIssues.quirksModeIssue.filter(f=>f.frameId===m)}let c=l.some(p=>p.isLimitedQuirksMode);return o==="CSS1Compat"&&!c?{score:1}:c?{score:0,explanation:_i(vn.explanationLimitedQuirks)}:i!==""?{score:0,explanation:_i(vn.explanationPublicId)}:a!==""?{score:0,explanation:_i(vn.explanationSystemId)}:n!=="html"?{score:0,explanation:_i(vn.explanationBadDoctype)}:{score:0,explanation:_i(vn.explanationWrongDoctype)}}},Dce=SS});var vU={};x(vU,{UIStrings:()=>bn,default:()=>Ece});var bn,Kn,CS,Ece,bU=g(()=>{"use strict";d();V();R();Rd();Pr();bn={title:"Avoids an excessive DOM size",failureTitle:"Avoid an excessive DOM size",description:"A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",columnStatistic:"Statistic",columnValue:"Value",displayValue:`{itemCount, plural, + }`,columnDeprecate:"Deprecation / Warning",columnLine:"Line"},sc=D("core/audits/deprecations.js",_i),eS=class extends b{static{s(this,"Deprecations")}static get meta(){return{id:"deprecations",title:sc(_i.title),failureTitle:sc(_i.failureTitle),description:sc(_i.description),requiredArtifacts:["InspectorIssues","SourceMaps","Scripts"]}}static async audit(t,n){let r=await Pn.request(t,n),a=t.InspectorIssues.deprecationIssue.map(u=>{let{scriptId:l,url:m,lineNumber:p,columnNumber:f}=u.sourceCodeLocation,h=r.find(E=>E.script.scriptId===l),y=zB(u),v;y.links.length&&(v={type:"subitems",items:y.links.map(E=>({type:"link",url:E.link,text:E.linkTitle}))});let w=u.message;return{value:y.message||w||u.type,source:b.makeSourceLocation(m,p,f-1,h),subItems:v}}),o=[{key:"value",valueType:"text",label:sc(_i.columnDeprecate)},{key:"source",valueType:"source-location",label:sc(F.columnSource)}],i=b.makeTableDetails(o,a),c;return a.length>0&&(c=sc(_i.displayValue,{itemCount:a.length})),{score:+(a.length=== +0),displayValue:c,details:i}}},Xme=eS});var GB={};T(GB,{default:()=>Zme});var tS,Zme,VB=g(()=>{"use strict";d();V();ki();ut();wi();rn();tS=class extends b{static{s(this,"Diagnostics")}static get meta(){return{id:"diagnostics",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Diagnostics",description:"Collection of useful page vitals.",supportedModes:["navigation"],requiredArtifacts:["URL","traces","devtoolsLogs"]}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=await ir.request(r,n),i=await oe.request(a,n),c=await Er.request(a,n),u=await Qe.request({devtoolsLog:a,URL:t.URL},n),l=o.filter(w=>!w.parent),m=u.transferSize,p=i.reduce((w,x)=>w+(x.transferSize||0),0),f=l.reduce((w,x)=>w+(x.duration||0),0),h=Math.max(...c.additionalRttByOrigin.values())+c.rtt,y=Math.max(...c.serverResponseTimeByOrigin.values());return{score:1,details:{type:"debugdata",items:[{numRequests:i.length,numScripts:i.filter(w=>w.resourceType==="Script").length,numStylesheets:i.filter(w=>w.resourceType==="Styleshee\ +t").length,numFonts:i.filter(w=>w.resourceType==="Font").length,numTasks:l.length,numTasksOver10ms:l.filter(w=>w.duration>10).length,numTasksOver25ms:l.filter(w=>w.duration>25).length,numTasksOver50ms:l.filter(w=>w.duration>50).length,numTasksOver100ms:l.filter(w=>w.duration>100).length,numTasksOver500ms:l.filter(w=>w.duration>500).length,rtt:c.rtt,throughput:c.throughput,maxRtt:h,maxServerLatency:y,totalByteWeight:p,totalTaskTime:f,mainDocumentTransferSize:m}]}}}},Zme=tS});var KB={};T(KB,{CHARSET_HTML_REGEX:()=>YB,CHARSET_HTTP_REGEX:()=>rS,IANA_REGEX:()=>$B,UIStrings:()=>Xd,default:()=>epe});var Xd,nS,Qme,$B,YB,rS,aS,epe,JB=g(()=>{"use strict";d();V();A();rn();Xd={title:"Properly defines charset",failureTitle:"Charset declaration is missing or occurs too late in the HTML",description:"A character encoding declaration is required. It can be done with a `<meta>` tag in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. [Learn more about declaring the character encoding](https://developer.chrome.com/docs/lighthouse/best-practices/charset/)."},nS=D("core/audits/dobetterweb/charset.js",Xd),Qme="content-type",$B=/^[a-zA-Z0-9-_:.()]{2,}$/,YB=/<meta[^>]+charset[^<]+>/i,rS=/charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/i,aS=class extends b{static{s(this,"CharsetDefined")}static get meta(){return{id:"charset",title:nS(Xd.title),failureTitle:nS(Xd.failureTitle),description:nS(Xd.description),requiredArtifacts:["MainDocumentContent","URL","devtoolsL\ +ogs","MetaElements"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await Qe.request({devtoolsLog:r,URL:t.URL},n),o=!1;if(a.responseHeaders){let c=a.responseHeaders.find(u=>u.name.toLowerCase()===Qme);c&&(o=rS.test(c.value))}return o=o||t.MainDocumentContent.charCodeAt(0)===65279,YB.test(t.MainDocumentContent.slice(0,1024))&&(o=o||t.MetaElements.some(c=>c.charset&&$B.test(c.charset)||c.httpEquiv==="content-type"&&c.content&&rS.test(c.content))),{score:Number(o)}}},epe=aS});var XB={};T(XB,{UIStrings:()=>Cr,default:()=>tpe});var Cr,Pa,oS,tpe,ZB=g(()=>{"use strict";d();V();A();Ut();Cr={title:"Page has the HTML doctype",failureTitle:"Page lacks the HTML doctype, thus triggering quirks-mode",description:"Specifying a doctype prevents the browser from switching to quirks-mode. [Learn more about the doctype declaration](https://developer.chrome.com/docs/lighthouse/best-practices/doctype/).",explanationNoDoctype:"Document must contain a doctype",explanationWrongDoctype:"Document contains a `doctype` that triggers `quirks-mode`",explanationLimitedQuirks:"Document contains a `doctype` that triggers `limited-quirks-mode`",explanationPublicId:"Expected publicId to be an empty string",explanationSystemId:"Expected systemId to be an empty string",explanationBadDoctype:"Doctype name must be the string `html`"},Pa=D("core/audits/dobetterweb/doctype.js",Cr),oS=class extends b{static{s(this,"Doctype")}static get meta(){return{id:"doctype",title:Pa(Cr.title),failureTitle:Pa( +Cr.failureTitle),description:Pa(Cr.description),requiredArtifacts:["Doctype"],__internalOptionalArtifacts:["InspectorIssues","traces"]}}static async audit(t,n){if(!t.Doctype)return{score:0,explanation:Pa(Cr.explanationNoDoctype)};let r=t.Doctype.name,a=t.Doctype.publicId,o=t.Doctype.systemId,i=t.Doctype.documentCompatMode,c=t.traces?.[b.DEFAULT_PASS],u=[];if(c&&t.InspectorIssues){let p=(await ke.request(c,n)).mainFrameInfo.frameId;u=t.InspectorIssues.quirksModeIssue.filter(f=>f.frameId===p)}let l=u.some(m=>m.isLimitedQuirksMode);return i==="CSS1Compat"&&!l?{score:1}:l?{score:0,explanation:Pa(Cr.explanationLimitedQuirks)}:a!==""?{score:0,explanation:Pa(Cr.explanationPublicId)}:o!==""?{score:0,explanation:Pa(Cr.explanationSystemId)}:r!=="html"?{score:0,explanation:Pa(Cr.explanationBadDoctype)}:{score:0,explanation:Pa(Cr.explanationWrongDoctype)}}},tpe=oS});var QB={};T(QB,{UIStrings:()=>kr,default:()=>npe});var kr,ra,iS,npe,eU=g(()=>{"use strict";d();V();A();Md();zn();kr={title:"Avoids an excessive DOM size",failureTitle:"Avoid an excessive DOM size",description:"A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",columnStatistic:"Statistic",columnValue:"Value",displayValue:`{itemCount, plural, =1 {1 element} other {# elements} - }`,statisticDOMElements:"Total DOM Elements",statisticDOMDepth:"Maximum DOM Depth",statisticDOMWidth:"Maximum Child Elements"},Kn=D("core/audits/dobetterweb/dom-size.js",bn),CS=class extends v{static{s(this,"DOMSize")}static get meta(){return{id:"dom-size",title:Kn(bn.title),failureTitle:Kn(bn.failureTitle),description:Kn(bn.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["DOMStats","URL","GatherContext"],__internalOptionalArtifacts:["traces","devtoolsLogs"]}}static get defaultOptions(){return{p10:818,median:1400}}static async computeTbtImpact(t,r){let n=0,{GatherContext:i,devtoolsLogs:a,traces:o}=t;if(i.gatherMode!=="navigation")return;if(!a?.[v.DEFAULT_PASS]||!o?.[v.DEFAULT_PASS])return 0;let u=v.makeMetricComputationDataInput(t,r);try{let l=await ma.request(u,r);for(let c of l)c.group.id==="styleLayout"&&(n+=c.selfTbtImpact)}catch{}return Math.round(n)}static async audit(t,r){let n=t.DOMStats,i=v.computeLogNormalScore({p10:r.options. -p10,median:r.options.median},n.totalBodyElements),a=[{key:"statistic",valueType:"text",label:Kn(bn.columnStatistic)},{key:"node",valueType:"node",label:Kn(F.columnElement)},{key:"value",valueType:"numeric",label:Kn(bn.columnValue)}],o=[{statistic:Kn(bn.statisticDOMElements),value:{type:"numeric",granularity:1,value:n.totalBodyElements}},{node:v.makeNodeItem(n.depth),statistic:Kn(bn.statisticDOMDepth),value:{type:"numeric",granularity:1,value:n.depth.max}},{node:v.makeNodeItem(n.width),statistic:Kn(bn.statisticDOMWidth),value:{type:"numeric",granularity:1,value:n.width.max}}],u=await this.computeTbtImpact(t,r);return{score:i,scoreDisplayMode:i>=Me.PASS_THRESHOLD?v.SCORING_MODES.INFORMATIVE:void 0,numericValue:n.totalBodyElements,numericUnit:"element",displayValue:Kn(bn.displayValue,{itemCount:n.totalBodyElements}),details:v.makeTableDetails(a,o),metricSavings:{TBT:u}}}},Ece=CS});var FS,Qt,Kd=g(()=>{"use strict";d();V();ha();FS=class extends v{static{s(this,"ViolationAudit")}static async getViolationResults(t,r,n){let i=await Ar.request(t,r);function a(u){return u!==void 0}s(a,"filterUndefined");let o=new Set;return t.ConsoleMessages.filter(u=>u.url&&u.source==="violation"&&n.test(u.text)).map(u=>{let l=i.find(c=>c.script.scriptId===u.scriptId);return v.makeSourceLocationFromConsoleMessage(u,l)}).filter(a).filter(u=>{let l=`${u.url}!${u.line}!${u.column}`;return o.has(l)?!1:(o.add(l),!0)}).map(u=>({source:u}))}},Qt=FS});var wU={};x(wU,{UIStrings:()=>Jd,default:()=>Tce});var Jd,X1,kS,Tce,DU=g(()=>{"use strict";d();Kd();R();Jd={title:"Avoids requesting the geolocation permission on page load",failureTitle:"Requests the geolocation permission on page load",description:"Users are mistrustful of or confused by sites that request their location without context. Consider tying the request to a user action instead. [Learn more about the geolocation permission](https://developer.chrome.com/docs/lighthouse/best-practices/geolocation-on-start/)."},X1=D("core/audits/dobetterweb/geolocation-on-start.js",Jd),kS=class extends Qt{static{s(this,"GeolocationOnStart")}static get meta(){return{id:"geolocation-on-start",title:X1(Jd.title),failureTitle:X1(Jd.failureTitle),description:X1(Jd.description),supportedModes:["navigation"],requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(t,r){let n=await Qt.getViolationResults(t,r,/geolocation/),i=[{key:"source",valueType:"source-location",label:X1( -F.columnSource)}],a=Qt.makeTableDetails(i,n);return{score:+(n.length===0),details:a}}},Tce=kS});var EU={};x(EU,{UIStrings:()=>Ea,default:()=>xce});var Ea,su,_S,xce,TU=g(()=>{"use strict";d();V();R();Ea={title:"No issues in the `Issues` panel in Chrome Devtools",failureTitle:"Issues were logged in the `Issues` panel in Chrome Devtools",description:"Issues logged to the `Issues` panel in Chrome Devtools indicate unresolved problems. They can come from network request failures, insufficient security controls, and other browser concerns. Open up the Issues panel in Chrome DevTools for more details on each issue.",columnIssueType:"Issue type",issueTypeBlockedByResponse:"Blocked by cross-origin policy",issueTypeHeavyAds:"Heavy resource usage by ads"},su=D("core/audits/dobetterweb/inspector-issues.js",Ea),_S=class extends v{static{s(this,"IssuesPanelEntries")}static get meta(){return{id:"inspector-issues",title:su(Ea.title),failureTitle:su(Ea.failureTitle),description:su(Ea.description),requiredArtifacts:["InspectorIssues"]}}static getMixedContentRow(t){let r=new Set;for(let n of t){let i=n. -request?.url||n.mainResourceURL;r.add(i)}return{issueType:"Mixed content",subItems:{type:"subitems",items:Array.from(r).map(n=>({url:n}))}}}static getCookieRow(t){let r=new Set;for(let n of t){let i=n.request?.url||n.cookieUrl;i&&r.add(i)}return{issueType:"Cookie",subItems:{type:"subitems",items:Array.from(r).map(n=>({url:n}))}}}static getBlockedByResponseRow(t){let r=new Set;for(let n of t){let i=n.request?.url;i&&r.add(i)}return{issueType:su(Ea.issueTypeBlockedByResponse),subItems:{type:"subitems",items:Array.from(r).map(n=>({url:n}))}}}static getContentSecurityPolicyRow(t){let r=new Set;for(let n of t){let i=n.blockedURL;i&&r.add(i)}return{issueType:"Content security policy",subItems:{type:"subitems",items:Array.from(r).map(n=>({url:n}))}}}static audit(t){let r=[{key:"issueType",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:su(Ea.columnIssueType)}],n=t.InspectorIssues,i=[];n.mixedContentIssue.length&&i.push(this.getMixedContentRow(n.mixedContentIssue)),n.cookieIssue. -length&&i.push(this.getCookieRow(n.cookieIssue)),n.blockedByResponseIssue.length&&i.push(this.getBlockedByResponseRow(n.blockedByResponseIssue)),n.heavyAdIssue.length&&i.push({issueType:su(Ea.issueTypeHeavyAds)});let a=n.contentSecurityPolicyIssue.filter(o=>o.contentSecurityPolicyViolationType!=="kTrustedTypesSinkViolation"&&o.contentSecurityPolicyViolationType!=="kTrustedTypesPolicyViolation");return a.length&&i.push(this.getContentSecurityPolicyRow(a)),{score:i.length>0?0:1,details:v.makeTableDetails(r,i)}}},xce=_S});var xU={};x(xU,{UIStrings:()=>Zd,default:()=>Sce});var Zd,Q1,RS,Sce,SU=g(()=>{"use strict";d();V();R();Zd={title:"Detected JavaScript libraries",description:"All front-end JavaScript libraries detected on the page. [Learn more about this JavaScript library detection diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/js-libraries/).",columnVersion:"Version"},Q1=D("core/audits/dobetterweb/js-libraries.js",Zd),RS=class extends v{static{s(this,"JsLibrariesAudit")}static get meta(){return{id:"js-libraries",title:Q1(Zd.title),scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,description:Q1(Zd.description),requiredArtifacts:["Stacks"]}}static audit(t){let r=t.Stacks.filter(o=>o.detector==="js").filter(o=>!o.id.endsWith("-fast")).map(o=>({name:o.name,version:o.version,npm:o.npm})),n=[{key:"name",valueType:"text",label:Q1(F.columnName)},{key:"version",valueType:"text",label:Q1(Zd.columnVersion)}],i=v.makeTableDetails(n,r),a={type:"debugdata",stacks:t.Stacks.map(o=>({id:o.id, -version:o.version}))};return r.length?{score:1,details:{...i,debugData:a}}:{score:null,notApplicable:!0}}},Sce=RS});var CU={};x(CU,{UIStrings:()=>Xd,default:()=>Cce});var Xd,eh,IS,Cce,FU=g(()=>{"use strict";d();Kd();R();Xd={title:"Avoids `document.write()`",failureTitle:"Avoid `document.write()`",description:"For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds. [Learn how to avoid document.write()](https://developer.chrome.com/docs/lighthouse/best-practices/no-document-write/)."},eh=D("core/audits/dobetterweb/no-document-write.js",Xd),IS=class extends Qt{static{s(this,"NoDocWriteAudit")}static get meta(){return{id:"no-document-write",title:eh(Xd.title),failureTitle:eh(Xd.failureTitle),description:eh(Xd.description),guidanceLevel:2,requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"],scoreDisplayMode:Qt.SCORING_MODES.METRIC_SAVINGS}}static async audit(t,r){let n=await Qt.getViolationResults(t,r,/document\.write/),i=[{key:"source",valueType:"source-location",label:eh(F.columnSource)}],a=Qt.makeTableDetails(i,n);return{ -score:+(n.length===0),details:a}}},Cce=IS});var kU={};x(kU,{UIStrings:()=>Qd,default:()=>Fce});var Qd,th,AS,Fce,_U=g(()=>{"use strict";d();Kd();R();Qd={title:"Avoids requesting the notification permission on page load",failureTitle:"Requests the notification permission on page load",description:"Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the request to user gestures instead. [Learn more about responsibly getting permission for notifications](https://developer.chrome.com/docs/lighthouse/best-practices/notification-on-start/)."},th=D("core/audits/dobetterweb/notification-on-start.js",Qd),AS=class extends Qt{static{s(this,"NotificationOnStart")}static get meta(){return{id:"notification-on-start",title:th(Qd.title),failureTitle:th(Qd.failureTitle),description:th(Qd.description),supportedModes:["navigation"],requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(t,r){let n=await Qt.getViolationResults(t,r,/notification permission/),i=[{key:"\ -source",valueType:"source-location",label:th(F.columnSource)}],a=Qt.makeTableDetails(i,n);return{score:+(n.length===0),details:a}}},Fce=AS});var RU={};x(RU,{UIStrings:()=>ep,default:()=>kce});var ep,rh,NS,kce,IU=g(()=>{"use strict";d();V();R();ep={title:"Allows users to paste into input fields",failureTitle:"Prevents users from pasting into input fields",description:"Preventing input pasting is a bad practice for the UX, and weakens security by blocking password managers.[Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/)."},rh=D("core/audits/dobetterweb/paste-preventing-inputs.js",ep),NS=class extends v{static{s(this,"PastePreventingInputsAudit")}static get meta(){return{id:"paste-preventing-inputs",title:rh(ep.title),failureTitle:rh(ep.failureTitle),description:rh(ep.description),requiredArtifacts:["Inputs"]}}static audit(t){let r=t.Inputs.inputs.filter(a=>a.preventsPaste),n=[];r.forEach(a=>{n.push({node:v.makeNodeItem(a.node),type:a.type})});let i=[{key:"node",valueType:"node",label:rh(F.columnFailingElem)}];return{score:+(r.length===0),details:v. -makeTableDetails(i,n)}}},kce=NS});var AU={};x(AU,{UIStrings:()=>_o,default:()=>Rce});var _o,ko,_ce,MS,Rce,NU=g(()=>{"use strict";d();V();Ci();ut();Ot();at();Bn();da();zn();R();_o={title:"Use HTTP/2",description:"HTTP/2 offers many benefits over HTTP/1.1, including binary headers and multiplexing. [Learn more about HTTP/2](https://developer.chrome.com/docs/lighthouse/best-practices/uses-http2/).",displayValue:`{itemCount, plural, + }`,statisticDOMElements:"Total DOM Elements",statisticDOMDepth:"Maximum DOM Depth",statisticDOMWidth:"Maximum Child Elements"},ra=D("core/audits/dobetterweb/dom-size.js",kr),iS=class extends b{static{s(this,"DOMSize")}static get meta(){return{id:"dom-size",title:ra(kr.title),failureTitle:ra(kr.failureTitle),description:ra(kr.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["DOMStats","URL","GatherContext"],__internalOptionalArtifacts:["traces","devtoolsLogs"]}}static get defaultOptions(){return{p10:818,median:1400}}static async computeTbtImpact(t,n){let r=0,{GatherContext:a,devtoolsLogs:o,traces:i}=t;if(a.gatherMode!=="navigation")return;if(!o?.[b.DEFAULT_PASS]||!i?.[b.DEFAULT_PASS])return 0;let c=b.makeMetricComputationDataInput(t,n);try{let u=await So.request(c,n);for(let l of u)l.group.id==="styleLayout"&&(r+=l.selfTbtImpact)}catch{}return Math.round(r)}static async audit(t,n){let r=t.DOMStats,a=b.computeLogNormalScore({p10:n.options. +p10,median:n.options.median},r.totalBodyElements),o=[{key:"statistic",valueType:"text",label:ra(kr.columnStatistic)},{key:"node",valueType:"node",label:ra(F.columnElement)},{key:"value",valueType:"numeric",label:ra(kr.columnValue)}],i=[{statistic:ra(kr.statisticDOMElements),value:{type:"numeric",granularity:1,value:r.totalBodyElements}},{node:b.makeNodeItem(r.depth),statistic:ra(kr.statisticDOMDepth),value:{type:"numeric",granularity:1,value:r.depth.max}},{node:b.makeNodeItem(r.width),statistic:ra(kr.statisticDOMWidth),value:{type:"numeric",granularity:1,value:r.width.max}}],c=await this.computeTbtImpact(t,n);return{score:a,scoreDisplayMode:a>=Le.PASS_THRESHOLD?b.SCORING_MODES.INFORMATIVE:void 0,numericValue:r.totalBodyElements,numericUnit:"element",displayValue:ra(kr.displayValue,{itemCount:r.totalBodyElements}),details:b.makeTableDetails(o,i),metricSavings:{TBT:c}}}},npe=iS});var sS,sn,Zd=g(()=>{"use strict";d();V();ko();sS=class extends b{static{s(this,"ViolationAudit")}static async getViolationResults(t,n,r){let a=await Pn.request(t,n);function o(c){return c!==void 0}s(o,"filterUndefined");let i=new Set;return t.ConsoleMessages.filter(c=>c.url&&c.source==="violation"&&r.test(c.text)).map(c=>{let u=a.find(l=>l.script.scriptId===c.scriptId);return b.makeSourceLocationFromConsoleMessage(c,u)}).filter(o).filter(c=>{let u=`${c.url}!${c.line}!${c.column}`;return i.has(u)?!1:(i.add(u),!0)}).map(c=>({source:c}))}},sn=sS});var tU={};T(tU,{UIStrings:()=>Qd,default:()=>rpe});var Qd,rh,cS,rpe,nU=g(()=>{"use strict";d();Zd();A();Qd={title:"Avoids requesting the geolocation permission on page load",failureTitle:"Requests the geolocation permission on page load",description:"Users are mistrustful of or confused by sites that request their location without context. Consider tying the request to a user action instead. [Learn more about the geolocation permission](https://developer.chrome.com/docs/lighthouse/best-practices/geolocation-on-start/)."},rh=D("core/audits/dobetterweb/geolocation-on-start.js",Qd),cS=class extends sn{static{s(this,"GeolocationOnStart")}static get meta(){return{id:"geolocation-on-start",title:rh(Qd.title),failureTitle:rh(Qd.failureTitle),description:rh(Qd.description),supportedModes:["navigation"],requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(t,n){let r=await sn.getViolationResults(t,n,/geolocation/),a=[{key:"source",valueType:"source-location",label:rh( +F.columnSource)}],o=sn.makeTableDetails(a,r);return{score:+(r.length===0),details:o}}},rpe=cS});var rU={};T(rU,{UIStrings:()=>No,default:()=>ape});var No,cc,uS,ape,aU=g(()=>{"use strict";d();V();A();No={title:"No issues in the `Issues` panel in Chrome Devtools",failureTitle:"Issues were logged in the `Issues` panel in Chrome Devtools",description:"Issues logged to the `Issues` panel in Chrome Devtools indicate unresolved problems. They can come from network request failures, insufficient security controls, and other browser concerns. Open up the Issues panel in Chrome DevTools for more details on each issue.",columnIssueType:"Issue type",issueTypeBlockedByResponse:"Blocked by cross-origin policy",issueTypeHeavyAds:"Heavy resource usage by ads"},cc=D("core/audits/dobetterweb/inspector-issues.js",No),uS=class extends b{static{s(this,"IssuesPanelEntries")}static get meta(){return{id:"inspector-issues",title:cc(No.title),failureTitle:cc(No.failureTitle),description:cc(No.description),requiredArtifacts:["InspectorIssues"]}}static getMixedContentRow(t){let n=new Set;for(let r of t){let a=r. +request?.url||r.mainResourceURL;n.add(a)}return{issueType:"Mixed content",subItems:{type:"subitems",items:Array.from(n).map(r=>({url:r}))}}}static getCookieRow(t){let n=new Set;for(let r of t){let a=r.request?.url||r.cookieUrl;a&&n.add(a)}return{issueType:"Cookie",subItems:{type:"subitems",items:Array.from(n).map(r=>({url:r}))}}}static getBlockedByResponseRow(t){let n=new Set;for(let r of t){let a=r.request?.url;a&&n.add(a)}return{issueType:cc(No.issueTypeBlockedByResponse),subItems:{type:"subitems",items:Array.from(n).map(r=>({url:r}))}}}static getContentSecurityPolicyRow(t){let n=new Set;for(let r of t){let a=r.blockedURL;a&&n.add(a)}return{issueType:"Content security policy",subItems:{type:"subitems",items:Array.from(n).map(r=>({url:r}))}}}static audit(t){let n=[{key:"issueType",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:cc(No.columnIssueType)}],r=t.InspectorIssues,a=[];r.mixedContentIssue.length&&a.push(this.getMixedContentRow(r.mixedContentIssue)),r.cookieIssue. +length&&a.push(this.getCookieRow(r.cookieIssue)),r.blockedByResponseIssue.length&&a.push(this.getBlockedByResponseRow(r.blockedByResponseIssue)),r.heavyAdIssue.length&&a.push({issueType:cc(No.issueTypeHeavyAds)});let o=r.contentSecurityPolicyIssue.filter(i=>i.contentSecurityPolicyViolationType!=="kTrustedTypesSinkViolation"&&i.contentSecurityPolicyViolationType!=="kTrustedTypesPolicyViolation");return o.length&&a.push(this.getContentSecurityPolicyRow(o)),{score:a.length>0?0:1,details:b.makeTableDetails(n,a)}}},ape=uS});var oU={};T(oU,{UIStrings:()=>em,default:()=>ope});var em,ah,lS,ope,iU=g(()=>{"use strict";d();V();A();em={title:"Detected JavaScript libraries",description:"All front-end JavaScript libraries detected on the page. [Learn more about this JavaScript library detection diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/js-libraries/).",columnVersion:"Version"},ah=D("core/audits/dobetterweb/js-libraries.js",em),lS=class extends b{static{s(this,"JsLibrariesAudit")}static get meta(){return{id:"js-libraries",title:ah(em.title),scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,description:ah(em.description),requiredArtifacts:["Stacks"]}}static audit(t){let n=t.Stacks.filter(i=>i.detector==="js").filter(i=>!i.id.endsWith("-fast")).map(i=>({name:i.name,version:i.version,npm:i.npm})),r=[{key:"name",valueType:"text",label:ah(F.columnName)},{key:"version",valueType:"text",label:ah(em.columnVersion)}],a=b.makeTableDetails(r,n),o={type:"debugdata",stacks:t.Stacks.map(i=>({id:i.id, +version:i.version}))};return n.length?{score:1,details:{...a,debugData:o}}:{score:null,notApplicable:!0}}},ope=lS});var sU={};T(sU,{UIStrings:()=>tm,default:()=>ipe});var tm,oh,dS,ipe,cU=g(()=>{"use strict";d();Zd();A();tm={title:"Avoids `document.write()`",failureTitle:"Avoid `document.write()`",description:"For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds. [Learn how to avoid document.write()](https://developer.chrome.com/docs/lighthouse/best-practices/no-document-write/)."},oh=D("core/audits/dobetterweb/no-document-write.js",tm),dS=class extends sn{static{s(this,"NoDocWriteAudit")}static get meta(){return{id:"no-document-write",title:oh(tm.title),failureTitle:oh(tm.failureTitle),description:oh(tm.description),guidanceLevel:2,requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"],scoreDisplayMode:sn.SCORING_MODES.METRIC_SAVINGS}}static async audit(t,n){let r=await sn.getViolationResults(t,n,/document\.write/),a=[{key:"source",valueType:"source-location",label:oh(F.columnSource)}],o=sn.makeTableDetails(a,r);return{ +score:+(r.length===0),details:o}}},ipe=dS});var uU={};T(uU,{UIStrings:()=>nm,default:()=>spe});var nm,ih,mS,spe,lU=g(()=>{"use strict";d();Zd();A();nm={title:"Avoids requesting the notification permission on page load",failureTitle:"Requests the notification permission on page load",description:"Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the request to user gestures instead. [Learn more about responsibly getting permission for notifications](https://developer.chrome.com/docs/lighthouse/best-practices/notification-on-start/)."},ih=D("core/audits/dobetterweb/notification-on-start.js",nm),mS=class extends sn{static{s(this,"NotificationOnStart")}static get meta(){return{id:"notification-on-start",title:ih(nm.title),failureTitle:ih(nm.failureTitle),description:ih(nm.description),supportedModes:["navigation"],requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(t,n){let r=await sn.getViolationResults(t,n,/notification permission/),a=[{key:"\ +source",valueType:"source-location",label:ih(F.columnSource)}],o=sn.makeTableDetails(a,r);return{score:+(r.length===0),details:o}}},spe=mS});var dU={};T(dU,{UIStrings:()=>rm,default:()=>cpe});var rm,sh,pS,cpe,mU=g(()=>{"use strict";d();V();A();rm={title:"Allows users to paste into input fields",failureTitle:"Prevents users from pasting into input fields",description:"Preventing input pasting is a bad practice for the UX, and weakens security by blocking password managers.[Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/)."},sh=D("core/audits/dobetterweb/paste-preventing-inputs.js",rm),pS=class extends b{static{s(this,"PastePreventingInputsAudit")}static get meta(){return{id:"paste-preventing-inputs",title:sh(rm.title),failureTitle:sh(rm.failureTitle),description:sh(rm.description),requiredArtifacts:["Inputs"]}}static audit(t){let n=t.Inputs.inputs.filter(o=>o.preventsPaste),r=[];n.forEach(o=>{r.push({node:b.makeNodeItem(o.node),type:o.type})});let a=[{key:"node",valueType:"node",label:sh(F.columnFailingElem)}];return{score:+(n.length===0),details:b. +makeTableDetails(a,r)}}},cpe=pS});var pU={};T(pU,{UIStrings:()=>Ni,default:()=>lpe});var Ni,Mi,upe,fS,lpe,fU=g(()=>{"use strict";d();V();Na();dt();Bt();ut();Vr();Eo();Jr();A();Ni={title:"Use HTTP/2",description:"HTTP/2 offers many benefits over HTTP/1.1, including binary headers and multiplexing. [Learn more about HTTP/2](https://developer.chrome.com/docs/lighthouse/best-practices/uses-http2/).",displayValue:`{itemCount, plural, =1 {1 request not served via HTTP/2} other {# requests not served via HTTP/2} - }`,columnProtocol:"Protocol"},ko=D("core/audits/dobetterweb/uses-http2.js",_o),_ce=new Set([K.TYPES.Document,K.TYPES.Font,K.TYPES.Image,K.TYPES.Stylesheet,K.TYPES.Script,K.TYPES.Media]),MS=class e extends v{static{s(this,"UsesHTTP2Audit")}static get meta(){return{id:"uses-http2",title:ko(_o.title),description:ko(_o.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,supportedModes:["timespan","navigation"],requiredArtifacts:["URL","devtoolsLogs","traces","GatherContext"]}}static computeWasteWithGraph(t,r,n,i){i=Object.assign({label:""},i);let a=`${this.meta.id}-${i.label}-before`,o=`${this.meta.id}-${i.label}-after`,u=new Set(t.map(f=>f.url)),l=n.simulate(r,{label:a}),c=new Map;r.traverse(f=>{f.type==="network"&&u.has(f.request.url)&&(c.set(f.request.requestId,f.request.protocol),f.request.protocol="h2")});let p=n.simulate(r,{label:o});r.traverse(f=>{if(f.type!=="network")return;let h=c.get(f.request.requestId);h!==void 0&&(f.request.protocol=h)});let m=l.timeInMs- -p.timeInMs;return{savings:Math.round(Math.max(m,0)/10)*10,simulationBefore:l,simulationAfter:p}}static isMultiplexableStaticAsset(t,r){if(!_ce.has(t.resourceType))return!1;if(t.resourceSize<100){let n=r.entityByUrl.get(t.url);if(n){if(r.firstParty?.name===n.name)return!0;if(!n.isUnrecognized)return!1}}return!0}static determineNonHttp2Resources(t,r){let n=[],i=new Set,a=new Map;for(let o of t){if(!e.isMultiplexableStaticAsset(o,r)||J.isLikeLocalhost(o.parsedURL.host))continue;let u=a.get(o.parsedURL.securityOrigin)||[];u.push(o),a.set(o.parsedURL.securityOrigin,u)}for(let o of t)i.has(o.url)||o.fetchedViaServiceWorker||!/HTTP\/[01][.\d]?/i.test(o.protocol)||(a.get(o.parsedURL.securityOrigin)||[]).length<6||(i.add(o.url),n.push({protocol:o.protocol,url:o.url}));return n}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=t.URL,a=await ie.request(n,r),o=await fr.request({URL:i,devtoolsLog:n},r),u=e.determineNonHttp2Resources(a,o),l;if(u.length>0&&(l=ko(_o.displayValue,{itemCount:u. -length})),t.GatherContext.gatherMode==="timespan"){let S=[{key:"url",valueType:"url",label:ko(F.columnURL)},{key:"protocol",valueType:"text",label:ko(_o.columnProtocol)}],C=v.makeTableDetails(S,u);return{displayValue:l,score:u.length?0:1,details:C}}let c=r?.settings||{},p={devtoolsLog:n,settings:c},m=await Jt.request(p,r),f=v.makeMetricComputationDataInput(t,r),{pessimisticGraph:h}=await Zt.request(f,r),{pessimisticGraph:y}=await Ir.request(f,r),b=e.computeWasteWithGraph(u,h,m,{label:"fcp"}),w=e.computeWasteWithGraph(u,y,m,{label:"lcp"}),E=[{key:"url",valueType:"url",label:ko(F.columnURL)},{key:"protocol",valueType:"text",label:ko(_o.columnProtocol)}],T=v.makeOpportunityDetails(E,u,{overallSavingsMs:w.savings});return{displayValue:l,numericValue:w.savings,numericUnit:"millisecond",score:u.length?0:1,details:T,metricSavings:{LCP:w.savings,FCP:b.savings}}}},Rce=MS});var MU={};x(MU,{UIStrings:()=>tp,default:()=>Ice});var tp,nh,LS,Ice,LU=g(()=>{"use strict";d();Kd();R();tp={title:"Uses passive listeners to improve scrolling performance",failureTitle:"Does not use passive listeners to improve scrolling performance",description:"Consider marking your touch and wheel event listeners as `passive` to improve your page's scroll performance. [Learn more about adopting passive event listeners](https://developer.chrome.com/docs/lighthouse/best-practices/uses-passive-event-listeners/)."},nh=D("core/audits/dobetterweb/uses-passive-event-listeners.js",tp),LS=class extends Qt{static{s(this,"PassiveEventsAudit")}static get meta(){return{id:"uses-passive-event-listeners",title:nh(tp.title),failureTitle:nh(tp.failureTitle),description:nh(tp.description),guidanceLevel:3,requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"],scoreDisplayMode:Qt.SCORING_MODES.METRIC_SAVINGS}}static async audit(t,r){let n=await Qt.getViolationResults(t,r,/passive event listener/), -i=[{key:"source",valueType:"source-location",label:nh(F.columnSource)}],a=Qt.makeTableDetails(i,n);return{score:+(n.length===0),details:a}}},Ice=LS});var PU={};x(PU,{UIStrings:()=>np,default:()=>Ace});var np,rp,PS,Ace,OU=g(()=>{"use strict";d();Ne();V();ha();R();np={title:"No browser errors logged to the console",failureTitle:"Browser errors were logged to the console",description:"Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. [Learn more about this errors in console diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/errors-in-console/)"},rp=D("core/audits/errors-in-console.js",np),PS=class e extends v{static{s(this,"ErrorLogs")}static get meta(){return{id:"errors-in-console",title:rp(np.title),failureTitle:rp(np.failureTitle),description:rp(np.description),requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static get defaultOptions(){return{ignoredPatterns:["ERR_BLOCKED_BY_CLIENT.Inspector"]}}static filterAccordingToOptions(t,r){let{ignoredPatterns:n,...i}=r,a=Object.keys(i);return a.length&&N.warn(this.meta.id, -"Unrecognized options",a),n?t.filter(({description:o})=>{if(!o)return!0;for(let u of n)if(u instanceof RegExp&&u.test(o)||typeof u=="string"&&o.includes(u))return!1;return!0}):t}static async audit(t,r){let n=r.options,i=await Ar.request(t,r),a=t.ConsoleMessages.filter(p=>p.level==="error").map(p=>{let m=i.find(f=>f.script.scriptId===p.scriptId);return{source:p.source,description:p.text,sourceLocation:v.makeSourceLocationFromConsoleMessage(p,m)}}),o=e.filterAccordingToOptions(a,n).sort((p,m)=>(p.description||"").localeCompare(m.description||"")),u=[{key:"sourceLocation",valueType:"source-location",label:rp(F.columnSource)},{key:"description",valueType:"code",label:rp(F.columnDescription)}],l=v.makeTableDetails(u,o);return{score:+(o.length===0),details:l}}},Ace=PS});var Nce,OS,BU,UU=g(()=>{"use strict";d();De();Nce="Screenshot",OS=class{static{s(this,"Screenshots")}static async compute_(t){return t.traceEvents.filter(r=>r.name===Nce).map(r=>({timestamp:r.ts,datauri:`data:image/jpeg;base64,${r.args.snapshot}`}))}},BU=G(OS,null)});var jU={};x(jU,{default:()=>Mce});var BS,Mce,qU=g(()=>{"use strict";d();V();zt();Bt();UU();BS=class extends v{static{s(this,"FinalScreenshot")}static get meta(){return{id:"final-screenshot",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Final Screenshot",description:"The last screenshot captured of the pageload.",requiredArtifacts:["traces","GatherContext"]}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=await xe.request(n,r),a=await BU.request(n,r),{timeOrigin:o}=i.timestamps,u=a[a.length-1];if(!u){if(t.GatherContext.gatherMode==="timespan")return{notApplicable:!0,score:1};throw new z(z.errors.NO_SCREENSHOTS)}return{score:1,details:{type:"screenshot",timing:Math.round((u.timestamp-o)/1e3),timestamp:u.timestamp,data:u.datauri}}}},Mce=BS});var HU={};x(HU,{UIStrings:()=>lu,default:()=>jS});var Lce,zU,Pce,lu,uu,US,jS,qS=g(()=>{"use strict";d();V();ut();R();Kr();at();Lce=/^(block|fallback|optional|swap)$/,zU=/url\((.*?)\)/,Pce=new RegExp(zU,"g"),lu={title:"All text remains visible during webfont loads",failureTitle:"Ensure text remains visible during webfont load",description:"Leverage the `font-display` CSS feature to ensure text is user-visible while webfonts are loading. [Learn more about `font-display`](https://developer.chrome.com/docs/lighthouse/performance/font-display/).",undeclaredFontOriginWarning:"{fontCountForOrigin, plural, =1 {Lighthouse was unable to automatically check the `font-display` value for the origin {fontOrigin}.} other {Lighthouse was unable to automatically check the `font-display` values for the origin {fontOrigin}.}}"},uu=D("core/audits/font-display.js",lu),US=class e extends v{static{s(this,"FontDisplay")}static get meta(){return{id:"font-display",title:uu(lu.title),failureTitle:uu(lu.failureTitle), -description:uu(lu.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["devtoolsLogs","Stylesheets","URL"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static findFontDisplayDeclarations(t,r){let n=new Set,i=new Set;for(let a of t.Stylesheets){let u=a.content.replace(/(\r|\n)+/g," ").match(/@font-face\s*{(.*?)}/g)||[];for(let l of u){let c=l.match(Pce);if(!c)continue;let m=l.match(/font-display\s*:\s*(\w+)\s*(;|\})/)?.[1]||"",h=r.test(m)?n:i,y=c.map(b=>b.match(zU)[1].trim()).map(b=>/^('|").*\1$/.test(b)?b.substr(1,b.length-2):b);for(let b of y)try{let w=J.isValid(a.header.sourceURL)?a.header.sourceURL:t.URL.finalDisplayedUrl,E=new URL(b,w);h.add(E.href)}catch(w){bt.captureException(w,{tags:{audit:this.meta.id}})}}}return{passingURLs:n,failingURLs:i}}static getWarningsForFontUrls(t){let r=new Map;for(let i of t){let a=J.getOrigin(i);if(!a)continue;let o=r.get(a)||0;r.set(a,o+1)}return[...r].map(([i,a])=>uu(lu.undeclaredFontOriginWarning,{fontCountForOrigin:a, -fontOrigin:i}))}static async audit(t,r){let n=t.devtoolsLogs[this.DEFAULT_PASS],i=await ie.request(n,r),{passingURLs:a,failingURLs:o}=e.findFontDisplayDeclarations(t,Lce),u=[],l=i.filter(m=>m.resourceType==="Font").filter(m=>!/^data:/.test(m.url)).filter(m=>!/^blob:/.test(m.url)).filter(m=>o.has(m.url)?!0:(a.has(m.url)||u.push(m.url),!1)).map(m=>{let f=Math.min(m.networkEndTime-m.networkRequestTime,3e3);return{url:m.url,wastedMs:f}}),c=[{key:"url",valueType:"url",label:uu(F.columnURL)},{key:"wastedMs",valueType:"ms",label:uu(F.columnWastedMs)}],p=v.makeTableDetails(c,l);return{score:+(l.length===0),details:p,warnings:e.getWarningsForFontUrls(u)}}},jS=US});var GU={};x(GU,{UIStrings:()=>Ro,default:()=>Oce});var Ro,cu,WU,zS,Oce,VU=g(()=>{"use strict";d();V();ut();R();Ro={title:"Displays images with correct aspect ratio",failureTitle:"Displays images with incorrect aspect ratio",description:"Image display dimensions should match natural aspect ratio. [Learn more about image aspect ratio](https://developer.chrome.com/docs/lighthouse/best-practices/image-aspect-ratio/).",columnDisplayed:"Aspect Ratio (Displayed)",columnActual:"Aspect Ratio (Actual)"},cu=D("core/audits/image-aspect-ratio.js",Ro),WU=2,zS=class e extends v{static{s(this,"ImageAspectRatio")}static get meta(){return{id:"image-aspect-ratio",title:cu(Ro.title),failureTitle:cu(Ro.failureTitle),description:cu(Ro.description),requiredArtifacts:["ImageElements"]}}static computeAspectRatios(t){let r=J.elideDataURI(t.src),n=t.naturalDimensions.width/t.naturalDimensions.height,i=t.displayedWidth/t.displayedHeight,a=t.displayedWidth/n,o=t.displayedHeight*n,u=a<o?Math.abs(a-t.displayedHeight)< -WU:Math.abs(o-t.displayedWidth)<WU;return{url:r,node:v.makeNodeItem(t.node),displayedAspectRatio:`${t.displayedWidth} x ${t.displayedHeight} - (${i.toFixed(2)})`,actualAspectRatio:`${t.naturalDimensions.width} x ${t.naturalDimensions.height} - (${n.toFixed(2)})`,doRatiosMatch:u}}static audit(t){let r=t.ImageElements,n=[];r.filter(a=>!a.isCss&&J.guessMimeType(a.src)!=="image/svg+xml"&&a.naturalDimensions&&a.naturalDimensions.height>5&&a.naturalDimensions.width>5&&a.displayedWidth&&a.displayedHeight&&a.computedStyles.objectFit==="fill").forEach(a=>{let o=a,u=e.computeAspectRatios(o);u.doRatiosMatch||n.push(u)});let i=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:cu(F.columnURL)},{key:"displayedAspectRatio",valueType:"text",label:cu(Ro.columnDisplayed)},{key:"actualAspectRatio",valueType:"text",label:cu(Ro.columnActual)}];return{score:+(n.length===0),details:v.makeTableDetails(i,n)}}},Oce=zS});var YU={};x(YU,{UIStrings:()=>Ta,default:()=>Jce});function jce(e,t){return(e.bottom-e.top)*(e.right-e.left)>0&&e.top<=t.innerHeight&&e.bottom>=0&&e.left<=t.innerWidth&&e.right>=0}function qce(e,t){return e.bottom-e.top<=t.innerHeight&&e.right-e.left<=t.innerWidth}function zce(e){let t=["pixelated","crisp-edges"],r=/ \d+(\.\d+)?x/;return!(e.displayedWidth<=1||e.displayedHeight<=1||!e.naturalDimensions||!e.naturalDimensions.width||!e.naturalDimensions.height||J.guessMimeType(e.src)==="image/svg+xml"||e.isCss||e.computedStyles.objectFit!=="fill"||t.includes(e.computedStyles.imageRendering)||r.test(e.srcset))}function Hce(e){return!!e.naturalDimensions}function Wce(e,t){let[r,n]=Vce(e.displayedWidth,e.displayedHeight,t);return e.naturalDimensions.width>=r&&e.naturalDimensions.height>=n}function Gce(e,t){let[r,n]=$ce(e.displayedWidth,e.displayedHeight,t);return{url:J.elideDataURI(e.src),node:v.makeNodeItem(e.node),displayedSize:`${e.displayedWidth} x ${e.displayedHeight}`,actualSize:`${e.naturalDimensions. -width} x ${e.naturalDimensions.height}`,actualPixels:e.naturalDimensions.width*e.naturalDimensions.height,expectedSize:`${r} x ${n}`,expectedPixels:r*n}}function Vce(e,t,r){let n=Bce;(e>$U||t>$U)&&(n=Uce);let i=WS(r),a=Math.ceil(n*i*e),o=Math.ceil(n*i*t);return[a,o]}function $ce(e,t,r){let n=Math.ceil(WS(r)*e),i=Math.ceil(WS(r)*t);return[n,i]}function Yce(e){e.sort((r,n)=>r.url===n.url?0:r.url<n.url?-1:1);let t=[];for(let r of e){let n=t[t.length-1];n&&n.url===r.url?n.expectedPixels<r.expectedPixels&&(t[t.length-1]=r):t.push(r)}return t}function Kce(e){return e.sort((t,r)=>r.expectedPixels-r.actualPixels-(t.expectedPixels-t.actualPixels))}function WS(e){return e>=2?2:e>=1.5?1.5:1}var Ta,Io,Bce,Uce,$U,HS,Jce,KU=g(()=>{"use strict";d();V();ut();R();Ta={title:"Serves images with appropriate resolution",failureTitle:"Serves images with low resolution",description:"Image natural dimensions should be proportional to the display size and the pixel ratio to maximize image clarity. [Learn how t\ -o provide responsive images](https://web.dev/articles/serve-responsive-images).",columnDisplayed:"Displayed size",columnActual:"Actual size",columnExpected:"Expected size"},Io=D("core/audits/image-size-responsive.js",Ta),Bce=1,Uce=.75,$U=64;s(jce,"isVisible");s(qce,"isSmallerThanViewport");s(zce,"isCandidate");s(Hce,"imageHasNaturalDimensions");s(Wce,"imageHasRightSize");s(Gce,"getResult");s(Vce,"allowedImageSize");s($ce,"expectedImageSize");s(Yce,"deduplicateResultsByUrl");s(Kce,"sortResultsBySizeDelta");HS=class extends v{static{s(this,"ImageSizeResponsive")}static get meta(){return{id:"image-size-responsive",title:Io(Ta.title),failureTitle:Io(Ta.failureTitle),description:Io(Ta.description),requiredArtifacts:["ImageElements","ViewportDimensions"]}}static audit(t){let r=t.ViewportDimensions.devicePixelRatio,n=Array.from(t.ImageElements).filter(zce).filter(Hce).filter(o=>!Wce(o,r)).filter(o=>jce(o.clientRect,t.ViewportDimensions)).filter(o=>qce(o.clientRect,t.ViewportDimensions)).map(o=>Gce( -o,r)),i=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Io(F.columnURL)},{key:"displayedSize",valueType:"text",label:Io(Ta.columnDisplayed)},{key:"actualSize",valueType:"text",label:Io(Ta.columnActual)},{key:"expectedSize",valueType:"text",label:Io(Ta.columnExpected)}],a=Kce(Yce(n));return{score:+(n.length===0),details:v.makeTableDetails(i,a)}}};s(WS,"quantizeDpr");Jce=HS});var ZU={};x(ZU,{UIStrings:()=>nn,default:()=>Zce});var nn,JU,xa,GS,Zce,XU=g(()=>{"use strict";d();V();ut();Ot();at();R();nn={title:"Uses HTTPS",failureTitle:"Does not use HTTPS",description:"All sites should be protected with HTTPS, even ones that don't handle sensitive data. This includes avoiding [mixed content](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content), where some resources are loaded over HTTP despite the initial request being served over HTTPS. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more about HTTPS](https://developer.chrome.com/docs/lighthouse/pwa/is-on-https/).",displayValue:`{itemCount, plural, + }`,columnProtocol:"Protocol"},Mi=D("core/audits/dobetterweb/uses-http2.js",Ni),upe=new Set([K.TYPES.Document,K.TYPES.Font,K.TYPES.Image,K.TYPES.Stylesheet,K.TYPES.Script,K.TYPES.Media]),fS=class e extends b{static{s(this,"UsesHTTP2Audit")}static get meta(){return{id:"uses-http2",title:Mi(Ni.title),description:Mi(Ni.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,supportedModes:["timespan","navigation"],requiredArtifacts:["URL","devtoolsLogs","traces","GatherContext"]}}static computeWasteWithGraph(t,n,r,a){a=Object.assign({label:""},a);let o=`${this.meta.id}-${a.label}-before`,i=`${this.meta.id}-${a.label}-after`,c=new Set(t.map(f=>f.url)),u=r.simulate(n,{label:o}),l=new Map;n.traverse(f=>{f.type==="network"&&c.has(f.request.url)&&(l.set(f.request.requestId,f.request.protocol),f.request.protocol="h2")});let m=r.simulate(n,{label:i});n.traverse(f=>{if(f.type!=="network")return;let h=l.get(f.request.requestId);h!==void 0&&(f.request.protocol=h)});let p=u.timeInMs- +m.timeInMs;return{savings:Math.round(Math.max(p,0)/10)*10,simulationBefore:u,simulationAfter:m}}static isMultiplexableStaticAsset(t,n){if(!upe.has(t.resourceType))return!1;if(t.resourceSize<100){let r=n.entityByUrl.get(t.url);if(r){if(n.firstParty?.name===r.name)return!0;if(!r.isUnrecognized)return!1}}return!0}static determineNonHttp2Resources(t,n){let r=[],a=new Set,o=new Map;for(let i of t){if(!e.isMultiplexableStaticAsset(i,n)||X.isLikeLocalhost(i.parsedURL.host))continue;let c=o.get(i.parsedURL.securityOrigin)||[];c.push(i),o.set(i.parsedURL.securityOrigin,c)}for(let i of t)a.has(i.url)||i.fetchedViaServiceWorker||!/HTTP\/[01][.\d]?/i.test(i.protocol)||(o.get(i.parsedURL.securityOrigin)||[]).length<6||(a.add(i.url),r.push({protocol:i.protocol,url:i.url}));return r}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=t.URL,o=await oe.request(r,n),i=await Dn.request({URL:a,devtoolsLog:r},n),c=e.determineNonHttp2Resources(o,i),u;if(c.length>0&&(u=Mi(Ni.displayValue,{itemCount:c. +length})),t.GatherContext.gatherMode==="timespan"){let S=[{key:"url",valueType:"url",label:Mi(F.columnURL)},{key:"protocol",valueType:"text",label:Mi(Ni.columnProtocol)}],k=b.makeTableDetails(S,c);return{displayValue:u,score:c.length?0:1,details:k}}let l=n?.settings||{},m={devtoolsLog:r,settings:l},p=await nn.request(m,n),f=b.makeMetricComputationDataInput(t,n),{pessimisticGraph:h}=await an.request(f,n),{pessimisticGraph:y}=await Ln.request(f,n),v=e.computeWasteWithGraph(c,h,p,{label:"fcp"}),w=e.computeWasteWithGraph(c,y,p,{label:"lcp"}),x=[{key:"url",valueType:"url",label:Mi(F.columnURL)},{key:"protocol",valueType:"text",label:Mi(Ni.columnProtocol)}],E=b.makeOpportunityDetails(x,c,{overallSavingsMs:w.savings});return{displayValue:u,numericValue:w.savings,numericUnit:"millisecond",score:c.length?0:1,details:E,metricSavings:{LCP:w.savings,FCP:v.savings}}}},lpe=fS});var hU={};T(hU,{UIStrings:()=>am,default:()=>dpe});var am,ch,hS,dpe,gU=g(()=>{"use strict";d();Zd();A();am={title:"Uses passive listeners to improve scrolling performance",failureTitle:"Does not use passive listeners to improve scrolling performance",description:"Consider marking your touch and wheel event listeners as `passive` to improve your page's scroll performance. [Learn more about adopting passive event listeners](https://developer.chrome.com/docs/lighthouse/best-practices/uses-passive-event-listeners/)."},ch=D("core/audits/dobetterweb/uses-passive-event-listeners.js",am),hS=class extends sn{static{s(this,"PassiveEventsAudit")}static get meta(){return{id:"uses-passive-event-listeners",title:ch(am.title),failureTitle:ch(am.failureTitle),description:ch(am.description),guidanceLevel:3,requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"],scoreDisplayMode:sn.SCORING_MODES.METRIC_SAVINGS}}static async audit(t,n){let r=await sn.getViolationResults(t,n,/passive event listener/), +a=[{key:"source",valueType:"source-location",label:ch(F.columnSource)}],o=sn.makeTableDetails(a,r);return{score:+(r.length===0),details:o}}},dpe=hS});var yU={};T(yU,{UIStrings:()=>im,default:()=>mpe});var im,om,gS,mpe,vU=g(()=>{"use strict";d();Oe();V();ko();A();im={title:"No browser errors logged to the console",failureTitle:"Browser errors were logged to the console",description:"Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. [Learn more about this errors in console diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/errors-in-console/)"},om=D("core/audits/errors-in-console.js",im),gS=class e extends b{static{s(this,"ErrorLogs")}static get meta(){return{id:"errors-in-console",title:om(im.title),failureTitle:om(im.failureTitle),description:om(im.description),requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static get defaultOptions(){return{ignoredPatterns:["ERR_BLOCKED_BY_CLIENT.Inspector"]}}static filterAccordingToOptions(t,n){let{ignoredPatterns:r,...a}=n,o=Object.keys(a);return o.length&&M.warn(this.meta.id, +"Unrecognized options",o),r?t.filter(({description:i})=>{if(!i)return!0;for(let c of r)if(c instanceof RegExp&&c.test(i)||typeof c=="string"&&i.includes(c))return!1;return!0}):t}static async audit(t,n){let r=n.options,a=await Pn.request(t,n),o=t.ConsoleMessages.filter(m=>m.level==="error").map(m=>{let p=a.find(f=>f.script.scriptId===m.scriptId);return{source:m.source,description:m.text,sourceLocation:b.makeSourceLocationFromConsoleMessage(m,p)}}),i=e.filterAccordingToOptions(o,r).sort((m,p)=>(m.description||"").localeCompare(p.description||"")),c=[{key:"sourceLocation",valueType:"source-location",label:om(F.columnSource)},{key:"description",valueType:"code",label:om(F.columnDescription)}],u=b.makeTableDetails(c,i);return{score:+(i.length===0),details:u}}},mpe=gS});var ppe,yS,bU,wU=g(()=>{"use strict";d();xe();ppe="Screenshot",yS=class{static{s(this,"Screenshots")}static async compute_(t){return t.traceEvents.filter(n=>n.name===ppe).map(n=>({timestamp:n.ts,datauri:`data:image/jpeg;base64,${n.args.snapshot}`}))}},bU=G(yS,null)});var DU={};T(DU,{default:()=>fpe});var vS,fpe,xU=g(()=>{"use strict";d();V();Wt();Ut();wU();vS=class extends b{static{s(this,"FinalScreenshot")}static get meta(){return{id:"final-screenshot",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Final Screenshot",description:"The last screenshot captured of the pageload.",requiredArtifacts:["traces","GatherContext"]}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=await ke.request(r,n),o=await bU.request(r,n),{timeOrigin:i}=a.timestamps,c=o[o.length-1];if(!c){if(t.GatherContext.gatherMode==="timespan")return{notApplicable:!0,score:1};throw new q(q.errors.NO_SCREENSHOTS)}return{score:1,details:{type:"screenshot",timing:Math.round((c.timestamp-i)/1e3),timestamp:c.timestamp,data:c.datauri}}}},fpe=vS});var TU={};T(TU,{UIStrings:()=>lc,default:()=>wS});var hpe,EU,gpe,lc,uc,bS,wS,DS=g(()=>{"use strict";d();V();dt();A();nr();ut();hpe=/^(block|fallback|optional|swap)$/,EU=/url\((.*?)\)/,gpe=new RegExp(EU,"g"),lc={title:"All text remains visible during webfont loads",failureTitle:"Ensure text remains visible during webfont load",description:"Leverage the `font-display` CSS feature to ensure text is user-visible while webfonts are loading. [Learn more about `font-display`](https://developer.chrome.com/docs/lighthouse/performance/font-display/).",undeclaredFontOriginWarning:"{fontCountForOrigin, plural, =1 {Lighthouse was unable to automatically check the `font-display` value for the origin {fontOrigin}.} other {Lighthouse was unable to automatically check the `font-display` values for the origin {fontOrigin}.}}"},uc=D("core/audits/font-display.js",lc),bS=class e extends b{static{s(this,"FontDisplay")}static get meta(){return{id:"font-display",title:uc(lc.title),failureTitle:uc(lc.failureTitle), +description:uc(lc.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["devtoolsLogs","Stylesheets","URL"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static findFontDisplayDeclarations(t,n){let r=new Set,a=new Set;for(let o of t.Stylesheets){let c=o.content.replace(/(\r|\n)+/g," ").match(/@font-face\s*{(.*?)}/g)||[];for(let u of c){let l=u.match(gpe);if(!l)continue;let p=u.match(/font-display\s*:\s*(\w+)\s*(;|\})/)?.[1]||"",h=n.test(p)?r:a,y=l.map(v=>v.match(EU)[1].trim()).map(v=>/^('|").*\1$/.test(v)?v.substr(1,v.length-2):v);for(let v of y)try{let w=X.isValid(o.header.sourceURL)?o.header.sourceURL:t.URL.finalDisplayedUrl,x=new URL(v,w);h.add(x.href)}catch(w){Dt.captureException(w,{tags:{audit:this.meta.id}})}}}return{passingURLs:r,failingURLs:a}}static getWarningsForFontUrls(t){let n=new Map;for(let a of t){let o=X.getOrigin(a);if(!o)continue;let i=n.get(o)||0;n.set(o,i+1)}return[...n].map(([a,o])=>uc(lc.undeclaredFontOriginWarning,{fontCountForOrigin:o, +fontOrigin:a}))}static async audit(t,n){let r=t.devtoolsLogs[this.DEFAULT_PASS],a=await oe.request(r,n),{passingURLs:o,failingURLs:i}=e.findFontDisplayDeclarations(t,hpe),c=[],u=a.filter(p=>p.resourceType==="Font").filter(p=>!/^data:/.test(p.url)).filter(p=>!/^blob:/.test(p.url)).filter(p=>i.has(p.url)?!0:(o.has(p.url)||c.push(p.url),!1)).map(p=>{let f=Math.min(p.networkEndTime-p.networkRequestTime,3e3);return{url:p.url,wastedMs:f}}),l=[{key:"url",valueType:"url",label:uc(F.columnURL)},{key:"wastedMs",valueType:"ms",label:uc(F.columnWastedMs)}],m=b.makeTableDetails(l,u);return{score:+(u.length===0),details:m,warnings:e.getWarningsForFontUrls(c)}}},wS=bS});var SU={};T(SU,{UIStrings:()=>lr,default:()=>ype});var lr,Vt,xS,ype,CU=g(()=>{"use strict";d();V();rn();A();lr={title:"Use a strong HSTS policy",description:"Deployment of the HSTS header significantly reduces the risk of downgrading HTTP connections and eavesdropping attacks. A rollout in stages, starting with a low max-age is recommended. [Learn more about using a strong HSTS policy.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)",noHsts:"No HSTS header found",noPreload:"No `preload` directive found",noSubdomain:"No `includeSubDomains` directive found",noMaxAge:"No `max-age` directive",lowMaxAge:"`max-age` is too low",invalidSyntax:"Invalid syntax",columnDirective:"Directive",columnSeverity:"Severity"},Vt=D("core/audits/has-hsts.js",lr),xS=class extends b{static{s(this,"HasHsts")}static get meta(){return{id:"has-hsts",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:Vt(lr.title),description:Vt(lr.description),requiredArtifacts:["devtoolsLogs","URL"],supportedModes:[ +"navigation"]}}static async getRawHsts(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],o=(await Qe.request({devtoolsLog:r,URL:t.URL},n)).responseHeaders.filter(i=>i.name.toLowerCase()==="strict-transport-security").flatMap(i=>i.value.split(";"));return o=o.map(i=>i.toLowerCase().replace(/\s/g,"")),o}static findingToTableItem(t,n,r){return{directive:t,description:n,severity:r}}static constructResults(t){let n=[...t],r=["max-age","includesubdomains","preload"],a=[],o=[],i=[];if(!n.length)return{score:0,results:[{severity:Vt(F.itemSeverityHigh),description:Vt(lr.noHsts),directive:void 0}]};t.toString().includes("max-age")||a.push({severity:Vt(F.itemSeverityHigh),description:Vt(lr.noMaxAge),directive:"max-age"}),t.toString().includes("includesubdomains")||o.push({severity:Vt(F.itemSeverityMedium),description:Vt(lr.noSubdomain),directive:"includeSubDomains"}),t.toString().includes("preload")||o.push({severity:Vt(F.itemSeverityMedium),description:Vt(lr.noPreload),directive:"preload"});for(let u of t) +u.includes("max-age")&&parseInt(u.split("=")[1],10)<31536e3&&a.push({severity:Vt(F.itemSeverityHigh),description:Vt(lr.lowMaxAge),directive:"max-age"}),!r.includes(u)&&!u.includes("max-age")&&i.push({severity:Vt(F.itemSeverityLow),description:Vt(lr.invalidSyntax),directive:u});let c=[...a.map(u=>this.findingToTableItem(u.directive,u.description,Vt(F.itemSeverityHigh))),...o.map(u=>this.findingToTableItem(u.directive,u.description,Vt(F.itemSeverityMedium))),...i.map(u=>this.findingToTableItem(u.directive,u.description,Vt(F.itemSeverityLow)))];return{score:a.length||i.length?0:1,results:c}}static async audit(t,n){let r=await this.getRawHsts(t,n),{score:a,results:o}=this.constructResults(r),i=[{key:"description",valueType:"text",subItemsHeading:{key:"description"},label:Vt(F.columnDescription)},{key:"directive",valueType:"code",subItemsHeading:{key:"directive"},label:Vt(lr.columnDirective)},{key:"severity",valueType:"text",subItemsHeading:{key:"severity"},label:Vt(lr.columnSeverity)}],c=b. +makeTableDetails(i,o);return{score:a,notApplicable:!o.length,details:c}}},ype=xS});var FU={};T(FU,{UIStrings:()=>Oi,default:()=>vpe});var Oi,dc,kU,ES,vpe,RU=g(()=>{"use strict";d();V();dt();A();Oi={title:"Displays images with correct aspect ratio",failureTitle:"Displays images with incorrect aspect ratio",description:"Image display dimensions should match natural aspect ratio. [Learn more about image aspect ratio](https://developer.chrome.com/docs/lighthouse/best-practices/image-aspect-ratio/).",columnDisplayed:"Aspect Ratio (Displayed)",columnActual:"Aspect Ratio (Actual)"},dc=D("core/audits/image-aspect-ratio.js",Oi),kU=2,ES=class e extends b{static{s(this,"ImageAspectRatio")}static get meta(){return{id:"image-aspect-ratio",title:dc(Oi.title),failureTitle:dc(Oi.failureTitle),description:dc(Oi.description),requiredArtifacts:["ImageElements"]}}static computeAspectRatios(t){let n=X.elideDataURI(t.src),r=t.naturalDimensions.width/t.naturalDimensions.height,a=t.displayedWidth/t.displayedHeight,o=t.displayedWidth/r,i=t.displayedHeight*r,c=o<i?Math.abs(o-t.displayedHeight)< +kU:Math.abs(i-t.displayedWidth)<kU;return{url:n,node:b.makeNodeItem(t.node),displayedAspectRatio:`${t.displayedWidth} x ${t.displayedHeight} + (${a.toFixed(2)})`,actualAspectRatio:`${t.naturalDimensions.width} x ${t.naturalDimensions.height} + (${r.toFixed(2)})`,doRatiosMatch:c}}static audit(t){let n=t.ImageElements,r=[];n.filter(o=>!o.isCss&&X.guessMimeType(o.src)!=="image/svg+xml"&&o.naturalDimensions&&o.naturalDimensions.height>5&&o.naturalDimensions.width>5&&o.displayedWidth&&o.displayedHeight&&o.computedStyles.objectFit==="fill").forEach(o=>{let i=o,c=e.computeAspectRatios(i);c.doRatiosMatch||r.push(c)});let a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:dc(F.columnURL)},{key:"displayedAspectRatio",valueType:"text",label:dc(Oi.columnDisplayed)},{key:"actualAspectRatio",valueType:"text",label:dc(Oi.columnActual)}];return{score:+(r.length===0),details:b.makeTableDetails(a,r)}}},vpe=ES});var AU={};T(AU,{UIStrings:()=>Oo,default:()=>Ape});function Dpe(e,t){return(e.bottom-e.top)*(e.right-e.left)>0&&e.top<=t.innerHeight&&e.bottom>=0&&e.left<=t.innerWidth&&e.right>=0}function xpe(e,t){return e.bottom-e.top<=t.innerHeight&&e.right-e.left<=t.innerWidth}function Epe(e){let t=["pixelated","crisp-edges"],n=/ \d+(\.\d+)?x/;return!(e.displayedWidth<=1||e.displayedHeight<=1||!e.naturalDimensions||!e.naturalDimensions.width||!e.naturalDimensions.height||X.guessMimeType(e.src)==="image/svg+xml"||e.isCss||e.computedStyles.objectFit!=="fill"||t.includes(e.computedStyles.imageRendering)||n.test(e.srcset))}function Tpe(e){return!!e.naturalDimensions}function Spe(e,t){let[n,r]=kpe(e.displayedWidth,e.displayedHeight,t);return e.naturalDimensions.width>=n&&e.naturalDimensions.height>=r}function Cpe(e,t){let[n,r]=Fpe(e.displayedWidth,e.displayedHeight,t);return{url:X.elideDataURI(e.src),node:b.makeNodeItem(e.node),displayedSize:`${e.displayedWidth} x ${e.displayedHeight}`,actualSize:`${e.naturalDimensions. +width} x ${e.naturalDimensions.height}`,actualPixels:e.naturalDimensions.width*e.naturalDimensions.height,expectedSize:`${n} x ${r}`,expectedPixels:n*r}}function kpe(e,t,n){let r=bpe;(e>IU||t>IU)&&(r=wpe);let a=SS(n),o=Math.ceil(r*a*e),i=Math.ceil(r*a*t);return[o,i]}function Fpe(e,t,n){let r=Math.ceil(SS(n)*e),a=Math.ceil(SS(n)*t);return[r,a]}function Rpe(e){e.sort((n,r)=>n.url===r.url?0:n.url<r.url?-1:1);let t=[];for(let n of e){let r=t[t.length-1];r&&r.url===n.url?r.expectedPixels<n.expectedPixels&&(t[t.length-1]=n):t.push(n)}return t}function Ipe(e){return e.sort((t,n)=>n.expectedPixels-n.actualPixels-(t.expectedPixels-t.actualPixels))}function SS(e){return e>=2?2:e>=1.5?1.5:1}var Oo,Li,bpe,wpe,IU,TS,Ape,_U=g(()=>{"use strict";d();V();dt();A();Oo={title:"Serves images with appropriate resolution",failureTitle:"Serves images with low resolution",description:"Image natural dimensions should be proportional to the display size and the pixel ratio to maximize image clarity. [Learn how t\ +o provide responsive images](https://web.dev/articles/serve-responsive-images).",columnDisplayed:"Displayed size",columnActual:"Actual size",columnExpected:"Expected size"},Li=D("core/audits/image-size-responsive.js",Oo),bpe=1,wpe=.75,IU=64;s(Dpe,"isVisible");s(xpe,"isSmallerThanViewport");s(Epe,"isCandidate");s(Tpe,"imageHasNaturalDimensions");s(Spe,"imageHasRightSize");s(Cpe,"getResult");s(kpe,"allowedImageSize");s(Fpe,"expectedImageSize");s(Rpe,"deduplicateResultsByUrl");s(Ipe,"sortResultsBySizeDelta");TS=class extends b{static{s(this,"ImageSizeResponsive")}static get meta(){return{id:"image-size-responsive",title:Li(Oo.title),failureTitle:Li(Oo.failureTitle),description:Li(Oo.description),requiredArtifacts:["ImageElements","ViewportDimensions"]}}static audit(t){let n=t.ViewportDimensions.devicePixelRatio,r=Array.from(t.ImageElements).filter(Epe).filter(Tpe).filter(i=>!Spe(i,n)).filter(i=>Dpe(i.clientRect,t.ViewportDimensions)).filter(i=>xpe(i.clientRect,t.ViewportDimensions)).map(i=>Cpe( +i,n)),a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Li(F.columnURL)},{key:"displayedSize",valueType:"text",label:Li(Oo.columnDisplayed)},{key:"actualSize",valueType:"text",label:Li(Oo.columnActual)},{key:"expectedSize",valueType:"text",label:Li(Oo.columnExpected)}],o=Ipe(Rpe(r));return{score:+(r.length===0),details:b.makeTableDetails(a,o)}}};s(SS,"quantizeDpr");Ape=TS});var NU={};T(NU,{UIStrings:()=>dr,default:()=>_pe});var dr,MU,Lo,CS,_pe,OU=g(()=>{"use strict";d();V();dt();Bt();ut();A();dr={title:"Uses HTTPS",failureTitle:"Does not use HTTPS",description:"All sites should be protected with HTTPS, even ones that don't handle sensitive data. This includes avoiding [mixed content](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content), where some resources are loaded over HTTP despite the initial request being served over HTTPS. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more about HTTPS](https://developer.chrome.com/docs/lighthouse/pwa/is-on-https/).",displayValue:`{itemCount, plural, =1 {1 insecure request found} other {# insecure requests found} - }`,columnInsecureURL:"Insecure URL",columnResolution:"Request Resolution",allowed:"Allowed",blocked:"Blocked",warning:"Allowed with warning",upgraded:"Automatically upgraded to HTTPS"},JU={MixedContentAutomaticallyUpgraded:nn.upgraded,MixedContentBlocked:nn.blocked,MixedContentWarning:nn.warning},xa=D("core/audits/is-on-https.js",nn),GS=class extends v{static{s(this,"HTTPS")}static get meta(){return{id:"is-on-https",title:xa(nn.title),failureTitle:xa(nn.failureTitle),description:xa(nn.description),requiredArtifacts:["devtoolsLogs","InspectorIssues"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],a=(await ie.request(n,r)).filter(c=>!K.isSecureRequest(c)).map(c=>J.elideDataURI(c.url)),o=Array.from(new Set(a)).map(c=>({url:c,resolution:void 0})),u=[{key:"url",valueType:"url",label:xa(nn.columnInsecureURL)},{key:"resolution",valueType:"text",label:xa(nn.columnResolution)}];for(let c of t.InspectorIssues.mixedContentIssue){let p=o.find(m=>m.url===c.insecureURL);p||(p={url:c. -insecureURL},o.push(p)),p.resolution=JU[c.resolutionStatus]?xa(JU[c.resolutionStatus]):c.resolutionStatus}for(let c of o)c.resolution||(c.resolution=xa(nn.allowed));let l;return o.length>0&&(l=xa(nn.displayValue,{itemCount:o.length})),{score:+(o.length===0),displayValue:l,details:v.makeTableDetails(u,o)}}},Zce=GS});var VS,Jn,du=g(()=>{"use strict";d();De();Ti();zt();da();VS=class extends At{static{s(this,"LargestContentfulPaint")}static computeSimulatedMetric(t,r){let n=At.getMetricComputationInput(t);return Ir.request(n,r)}static async computeObservedMetric(t){let{processedNavigation:r}=t;if(r.timings.largestContentfulPaint===void 0)throw new z(z.errors.NO_LCP);return{timing:r.timings.largestContentfulPaint,timestamp:r.timestamps.largestContentfulPaint}}},Jn=G(VS,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var QU={};x(QU,{UIStrings:()=>KS,default:()=>JS});var KS,$S,YS,JS,ZS=g(()=>{"use strict";d();V();R();du();KS={description:"Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)"},$S=D("core/audits/metrics/largest-contentful-paint.js",KS),YS=class extends v{static{s(this,"LargestContentfulPaint")}static get meta(){return{id:"largest-contentful-paint",title:$S(F.largestContentfulPaintMetric),description:$S(KS.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["HostUserAgent","traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:2500,median:4e3}},desktop:{scoring:{p10:1200,median:2400}}}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i, -gatherContext:a,settings:r.settings,URL:t.URL},u=await Jn.request(o,r),l=r.options[r.settings.formFactor];return{score:v.computeLogNormalScore(l.scoring,u.timing),scoringOptions:l.scoring,numericValue:u.timing,numericUnit:"millisecond",displayValue:$S(F.seconds,{timeInMs:u.timing})}}},JS=YS});var XS,ih,QS=g(()=>{"use strict";d();De();Ti();dr();ho();XS=class extends At{static{s(this,"TimeToFirstByte")}static async computeSimulatedMetric(t,r){let n=await lt.request(t,r),i=await hn.request(t.devtoolsLog,r),a=(await this.computeObservedMetric(t,r)).timing,o=i.serverResponseTimeByOrigin.get(n.parsedURL.securityOrigin);if(o===void 0)throw new Error("No response time for origin");let u=2;n.protocol.startsWith("h3")||(u+=1),n.parsedURL.scheme==="https"&&(u+=1);let l=t.settings.throttling.rttMs*u+o;return{timing:Math.max(a,l)}}static async computeObservedMetric(t,r){let n=await lt.request(t,r);if(!n.timing)throw new Error("missing timing for main resource");let{processedNavigation:i}=t,a=i.timestamps.timeOrigin,u=(n.timing.requestTime*1e3+n.timing.receiveHeadersStart)*1e3;return{timing:(u-a)/1e3,timestamp:u}}},ih=G(XS,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var e2,pu,ah=g(()=>{"use strict";d();De();zt();du();Ei();QS();Id();e2=class{static{s(this,"LCPBreakdown")}static async compute_(t,r){let n=await pr.request(t.trace,r),i=n.timings.largestContentfulPaint;if(i===void 0)throw new z(z.errors.NO_LCP);let a=n.timestamps.timeOrigin/1e3,{timing:o}=await ih.request(t,r),u=await fa.request(t,r);if(!u)return{ttfb:o};let{timing:l}=await Jn.request(t,r),c=l/i,p=(u.networkRequestTime-a)*c,m=Math.max(o,Math.min(p,l)),f=(u.networkEndTime-a)*c,h=Math.max(m,Math.min(f,l));return{ttfb:o,loadStart:m,loadEnd:h}}},pu=G(e2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var e7={};x(e7,{UIStrings:()=>Dn,default:()=>Xce});var Dn,wn,t2,Xce,t7=g(()=>{"use strict";d();Ne();V();R();du();ZS();ah();Kr();Dn={title:"Largest Contentful Paint element",description:"This is the largest contentful element painted within the viewport. [Learn more about the Largest Contentful Paint element](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",columnPhase:"Phase",columnPercentOfLCP:"% of LCP",columnTiming:"Timing",itemTTFB:"TTFB",itemLoadDelay:"Load Delay",itemLoadTime:"Load Time",itemRenderDelay:"Render Delay"},wn=D("core/audits/largest-contentful-paint-element.js",Dn),t2=class extends v{static{s(this,"LargestContentfulPaintElement")}static get meta(){return{id:"largest-contentful-paint-element",title:wn(Dn.title),description:wn(Dn.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,supportedModes:["navigation"],requiredArtifacts:["traces","TraceElements","devtoolsLogs","GatherContext","settings","URL"]}}static makeElementTable(t){ -let r=t.TraceElements.find(a=>a.traceEventType==="largest-contentful-paint");if(!r)return;let n=[{key:"node",valueType:"node",label:wn(F.columnElement)}],i=[{node:v.makeNodeItem(r.node)}];return v.makeTableDetails(n,i)}static async makePhaseTable(t,r,n){let{ttfb:i,loadStart:a,loadEnd:o}=await pu.request(r,n),u=0,l=0,c=t-i;a&&o&&(u=a-i,l=o-a,c=t-o);let p=[{phase:wn(Dn.itemTTFB),timing:i},{phase:wn(Dn.itemLoadDelay),timing:u},{phase:wn(Dn.itemLoadTime),timing:l},{phase:wn(Dn.itemRenderDelay),timing:c}].map(f=>{let y=`${(100*f.timing/t).toFixed(0)}%`;return{...f,percent:y}}),m=[{key:"phase",valueType:"text",label:wn(Dn.columnPhase)},{key:"percent",valueType:"text",label:wn(Dn.columnPercentOfLCP)},{key:"timing",valueType:"ms",label:wn(Dn.columnTiming)}];return v.makeTableDetails(m,p)}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings,URL:t.URL},u=this.makeElementTable(t);if(!u) -return{score:null,notApplicable:!0,metricSavings:{LCP:0}};let l=[u],c,p=0;try{p=(await Jn.request(o,r)).timing,c=wn(F.ms,{timeInMs:p});let b=await this.makePhaseTable(p,o,r);l.push(b)}catch(y){bt.captureException(y,{tags:{audit:this.meta.id},level:"error"}),N.error(this.meta.id,y.message)}let m=v.makeListDetails(l),f=JS.defaultOptions[r.settings.formFactor].scoring.p10,h=Math.max(0,p-f);return{score:h?0:1,scoreDisplayMode:h?void 0:v.SCORING_MODES.INFORMATIVE,displayValue:c,details:m,metricSavings:{LCP:h}}}},Xce=t2});var n7={};x(n7,{UIStrings:()=>n2,default:()=>i2});var n2,r7,r2,i2,a2=g(()=>{"use strict";d();V();Ps();R();n2={description:"Cumulative Layout Shift measures the movement of visible elements within the viewport. [Learn more about the Cumulative Layout Shift metric](https://web.dev/articles/cls)."},r7=D("core/audits/metrics/cumulative-layout-shift.js",n2),r2=class extends v{static{s(this,"CumulativeLayoutShift")}static get meta(){return{id:"cumulative-layout-shift",title:r7(F.cumulativeLayoutShiftMetric),description:r7(n2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:.1,median:.25}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],{cumulativeLayoutShift:i,impactByNodeId:a,...o}=await Un.request(n,r),u={type:"debugdata",items:[o]},l={p10:r.options.p10,median:r.options.median};return{score:v.computeLogNormalScore(l,i),scoringOptions:l,numericValue:i,numericUnit:"unitless",displayValue:i.toLocaleString(r.settings. -locale),details:u}}},i2=r2});var i7={};x(i7,{UIStrings:()=>Zn,default:()=>ede});var Qce,Zn,Ri,o2,ede,a7=g(()=>{"use strict";d();V();R();Ps();a2();FD();vo();Qce=15,Zn={title:"Avoid large layout shifts",description:"These are the largest layout shifts observed on the page. Each table item represents a single layout shift, and shows the element that shifted the most. Below each item are possible root causes that led to the layout shift. Some of these layout shifts may not be included in the CLS metric value due to [windowing](https://web.dev/articles/cls#what_is_cls). [Learn how to improve CLS](https://web.dev/articles/optimize-cls)",columnScore:"Layout shift score",rootCauseUnsizedMedia:"Media element lacking an explicit size",rootCauseFontChanges:"Web font loaded",rootCauseInjectedIframe:"Injected iframe",rootCauseRenderBlockingRequest:"A late network request adjusted the page layout",displayValueShiftsFound:"{shiftCount, plural, =1 {1 layout shift found} other {# layout shifts found}}"},Ri=D("core/audits/layout-sh\ -ifts.js",Zn),o2=class extends v{static{s(this,"LayoutShifts")}static get meta(){return{id:"layout-shifts",title:Ri(Zn.title),description:Ri(Zn.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["traces","RootCauses","TraceElements"]}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],a=(await Jr.request({trace:n},r)).data.LayoutShifts.clusters??[],{cumulativeLayoutShift:o,impactByNodeId:u}=await Un.request(n,r),l=t.TraceElements.filter(w=>w.traceEventType==="layout-shift"),c=[],p=a.flatMap(w=>w.events),m=p.sort((w,E)=>E.args.data.weighted_score_delta-w.args.data.weighted_score_delta).slice(0,Qce);for(let w of m){let E=CD.getBiggestImpactNodeForShiftEvent(w.args.data.impacted_nodes||[],u,w),T=l.find(L=>L.nodeId===E),S=p.indexOf(w),C=t.RootCauses.layoutShifts[S],_=[];if(C){for(let L of C.unsizedMedia){let M=t.TraceElements.find(H=>H.traceEventType==="layout-shift"&&H.nodeId===L.node.backendNodeId);_.push({extra:M?v.makeNodeItem(M.node):void 0, -cause:Ri(Zn.rootCauseUnsizedMedia)})}for(let L of C.fontChanges){let M=L.request.args.data.url;_.push({extra:{type:"url",value:M},cause:Ri(Zn.rootCauseFontChanges)})}for(let L of C.iframes){let M=t.TraceElements.find(H=>H.traceEventType==="layout-shift"&&H.nodeId===L.iframe.backendNodeId);_.push({extra:M?v.makeNodeItem(M.node):void 0,cause:Ri(Zn.rootCauseInjectedIframe)})}for(let L of C.renderBlockingRequests){let M=L.request.args.data.url;_.push({extra:{type:"url",value:M},cause:Ri(Zn.rootCauseRenderBlockingRequest)})}}c.push({node:T?v.makeNodeItem(T.node):void 0,score:w.args.data.weighted_score_delta,subItems:_.length?{type:"subitems",items:_}:void 0})}let f=[{key:"node",valueType:"node",subItemsHeading:{key:"extra"},label:Ri(F.columnElement)},{key:"score",valueType:"numeric",subItemsHeading:{key:"cause",valueType:"text"},granularity:.001,label:Ri(Zn.columnScore)}],h=v.makeTableDetails(f,c),y;c.length>0&&(y=Ri(Zn.displayValueShiftsFound,{shiftCount:c.length}));let b=o<=i2.defaultOptions. -p10;return{score:b?1:0,scoreDisplayMode:b?v.SCORING_MODES.INFORMATIVE:void 0,metricSavings:{CLS:o},notApplicable:h.items.length===0,displayValue:y,details:h}}},ede=o2});var o7={};x(o7,{UIStrings:()=>ip,default:()=>rde});var ip,oh,tde,s2,rde,s7=g(()=>{"use strict";d();V();R();ah();du();ip={title:"Largest Contentful Paint image was not lazily loaded",failureTitle:"Largest Contentful Paint image was lazily loaded",description:"Above-the-fold images that are lazily loaded render later in the page lifecycle, which can delay the largest contentful paint. [Learn more about optimal lazy loading](https://web.dev/articles/lcp-lazy-loading)."},oh=D("core/audits/lcp-lazy-loaded.js",ip),tde=.15,s2=class extends v{static{s(this,"LargestContentfulPaintLazyLoaded")}static get meta(){return{id:"lcp-lazy-loaded",title:oh(ip.title),failureTitle:oh(ip.failureTitle),description:oh(ip.description),supportedModes:["navigation"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["TraceElements","ViewportDimensions","ImageElements","traces","devtoolsLogs","GatherContext","URL"]}}static isImageInViewport(t,r){let n=t.clientRect.top,i=r.innerHeight; -return n<i}static async audit(t,r){let n=t.TraceElements.find(f=>f.traceEventType==="largest-contentful-paint"&&f.type==="image"),i=n?t.ImageElements.find(f=>f.node.devtoolsNodePath===n.node.devtoolsNodePath):void 0;if(!i||!this.isImageInViewport(i,t.ViewportDimensions))return{score:null,notApplicable:!0,metricSavings:{LCP:0}};let a=[{key:"node",valueType:"node",label:oh(F.columnElement)}],o=v.makeTableDetails(a,[{node:v.makeNodeItem(i.node)}]),u=i.loading==="lazy",l=v.makeMetricComputationDataInput(t,r),{timing:c}=await Jn.request(l,r),p=await pu.request(l,r),m=0;if(u&&p.loadStart!==void 0){let f=p.loadStart-p.ttfb;m=Math.min(c*tde,f)}return{score:u?0:1,metricSavings:{LCP:m},details:o}}},rde=s2});var u7={};x(u7,{UIStrings:()=>ap,default:()=>ode});function ade(e,t){let r=e.indexOf(t);return r>-1?r:e.push(t)-1}function u2(e){return Math.round(e*10)/10}var nde,ide,ap,mu,l2,ode,l7=g(()=>{"use strict";d();It();V();at();R();Eo();qs();Bn();Fd();Ws();nde={startTime:0,endTime:0,duration:0},ide=20,ap={title:"Avoid long main-thread tasks",description:"Lists the longest tasks on the main thread, useful for identifying worst contributors to input delay. [Learn how to avoid long main-thread tasks](https://web.dev/articles/optimize-long-tasks)",displayValue:`{itemCount, plural, + }`,columnInsecureURL:"Insecure URL",columnResolution:"Request Resolution",allowed:"Allowed",blocked:"Blocked",warning:"Allowed with warning",upgraded:"Automatically upgraded to HTTPS"},MU={MixedContentAutomaticallyUpgraded:dr.upgraded,MixedContentBlocked:dr.blocked,MixedContentWarning:dr.warning},Lo=D("core/audits/is-on-https.js",dr),CS=class extends b{static{s(this,"HTTPS")}static get meta(){return{id:"is-on-https",title:Lo(dr.title),failureTitle:Lo(dr.failureTitle),description:Lo(dr.description),requiredArtifacts:["devtoolsLogs","InspectorIssues"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],o=(await oe.request(r,n)).filter(l=>!K.isSecureRequest(l)).map(l=>X.elideDataURI(l.url)),i=Array.from(new Set(o)).map(l=>({url:l,resolution:void 0})),c=[{key:"url",valueType:"url",label:Lo(dr.columnInsecureURL)},{key:"resolution",valueType:"text",label:Lo(dr.columnResolution)}];for(let l of t.InspectorIssues.mixedContentIssue){let m=i.find(p=>p.url===l.insecureURL);m||(m={url:l. +insecureURL},i.push(m)),m.resolution=MU[l.resolutionStatus]?Lo(MU[l.resolutionStatus]):l.resolutionStatus}for(let l of i)l.resolution||(l.resolution=Lo(dr.allowed));let u;return i.length>0&&(u=Lo(dr.displayValue,{itemCount:i.length})),{score:+(i.length===0),displayValue:u,details:b.makeTableDetails(c,i)}}},_pe=CS});var kS,aa,mc=g(()=>{"use strict";d();xe();Aa();Wt();Eo();kS=class extends Nt{static{s(this,"LargestContentfulPaint")}static computeSimulatedMetric(t,n){let r=Nt.getMetricComputationInput(t);return Ln.request(r,n)}static async computeObservedMetric(t){let{processedNavigation:n}=t;if(n.timings.largestContentfulPaint===void 0)throw new q(q.errors.NO_LCP);return{timing:n.timings.largestContentfulPaint,timestamp:n.timestamps.largestContentfulPaint}}},aa=G(kS,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var LU={};T(LU,{UIStrings:()=>IS,default:()=>AS});var IS,FS,RS,AS,_S=g(()=>{"use strict";d();V();A();mc();IS={description:"Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)"},FS=D("core/audits/metrics/largest-contentful-paint.js",IS),RS=class extends b{static{s(this,"LargestContentfulPaint")}static get meta(){return{id:"largest-contentful-paint",title:FS(F.largestContentfulPaintMetric),description:FS(IS.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["HostUserAgent","traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:2500,median:4e3}},desktop:{scoring:{p10:1200,median:2400}}}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a, +gatherContext:o,settings:n.settings,URL:t.URL},c=await aa.request(i,n),u=n.options[n.settings.formFactor];return{score:b.computeLogNormalScore(u.scoring,c.timing),scoringOptions:u.scoring,numericValue:c.timing,numericUnit:"millisecond",displayValue:FS(F.seconds,{timeInMs:c.timing})}}},AS=RS});var MS,uh,NS=g(()=>{"use strict";d();xe();Aa();rn();wi();MS=class extends Nt{static{s(this,"TimeToFirstByte")}static async computeSimulatedMetric(t,n){let r=await Qe.request(t,n),a=await Er.request(t.devtoolsLog,n),o=(await this.computeObservedMetric(t,n)).timing,i=a.serverResponseTimeByOrigin.get(r.parsedURL.securityOrigin);if(i===void 0)throw new Error("No response time for origin");let c=2;r.protocol.startsWith("h3")||(c+=1),r.parsedURL.scheme==="https"&&(c+=1);let u=t.settings.throttling.rttMs*c+i;return{timing:Math.max(o,u)}}static async computeObservedMetric(t,n){let r=await Qe.request(t,n);if(!r.timing)throw new Error("missing timing for main resource");let{processedNavigation:a}=t,o=a.timestamps.timeOrigin,c=(r.timing.requestTime*1e3+r.timing.receiveHeadersStart)*1e3;return{timing:(c-o)/1e3,timestamp:c}}},uh=G(MS,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var OS,pc,lh=g(()=>{"use strict";d();xe();Wt();mc();Ia();NS();Nd();OS=class{static{s(this,"LCPBreakdown")}static async compute_(t,n){let r=await bn.request(t.trace,n),a=r.timings.largestContentfulPaint;if(a===void 0)throw new q(q.errors.NO_LCP);let o=r.timestamps.timeOrigin/1e3,{timing:i}=await uh.request(t,n),c=await Co.request(t,n);if(!c)return{ttfb:i};let{timing:u}=await aa.request(t,n),l=u/a,m=(c.networkRequestTime-o)*l,p=Math.max(i,Math.min(m,u)),f=(c.networkEndTime-o)*l,h=Math.max(p,Math.min(f,u));return{ttfb:i,loadStart:p,loadEnd:h}}},pc=G(OS,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var PU={};T(PU,{UIStrings:()=>Rr,default:()=>Mpe});var Rr,Fr,LS,Mpe,BU=g(()=>{"use strict";d();Oe();V();A();mc();_S();lh();nr();Rr={title:"Largest Contentful Paint element",description:"This is the largest contentful element painted within the viewport. [Learn more about the Largest Contentful Paint element](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",columnPhase:"Phase",columnPercentOfLCP:"% of LCP",columnTiming:"Timing",itemTTFB:"TTFB",itemLoadDelay:"Load Delay",itemLoadTime:"Load Time",itemRenderDelay:"Render Delay"},Fr=D("core/audits/largest-contentful-paint-element.js",Rr),LS=class extends b{static{s(this,"LargestContentfulPaintElement")}static get meta(){return{id:"largest-contentful-paint-element",title:Fr(Rr.title),description:Fr(Rr.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,supportedModes:["navigation"],requiredArtifacts:["traces","TraceElements","devtoolsLogs","GatherContext","settings","URL"]}}static makeElementTable(t){ +let n=t.TraceElements.find(o=>o.traceEventType==="largest-contentful-paint");if(!n)return;let r=[{key:"node",valueType:"node",label:Fr(F.columnElement)}],a=[{node:b.makeNodeItem(n.node)}];return b.makeTableDetails(r,a)}static async makePhaseTable(t,n,r){let{ttfb:a,loadStart:o,loadEnd:i}=await pc.request(n,r),c=0,u=0,l=t-a;o&&i&&(c=o-a,u=i-o,l=t-i);let m=[{phase:Fr(Rr.itemTTFB),timing:a},{phase:Fr(Rr.itemLoadDelay),timing:c},{phase:Fr(Rr.itemLoadTime),timing:u},{phase:Fr(Rr.itemRenderDelay),timing:l}].map(f=>{let y=`${(100*f.timing/t).toFixed(0)}%`;return{...f,percent:y}}),p=[{key:"phase",valueType:"text",label:Fr(Rr.columnPhase)},{key:"percent",valueType:"text",label:Fr(Rr.columnPercentOfLCP)},{key:"timing",valueType:"ms",label:Fr(Rr.columnTiming)}];return b.makeTableDetails(p,m)}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings,URL:t.URL},c=this.makeElementTable(t);if(!c) +return{score:null,notApplicable:!0,metricSavings:{LCP:0}};let u=[c],l,m=0;try{m=(await aa.request(i,n)).timing,l=Fr(F.ms,{timeInMs:m});let v=await this.makePhaseTable(m,i,n);u.push(v)}catch(y){Dt.captureException(y,{tags:{audit:this.meta.id},level:"error"}),M.error(this.meta.id,y.message)}let p=b.makeListDetails(u),f=AS.defaultOptions[n.settings.formFactor].scoring.p10,h=Math.max(0,m-f);return{score:h?0:1,scoreDisplayMode:h?void 0:b.SCORING_MODES.INFORMATIVE,displayValue:l,details:p,metricSavings:{LCP:h}}}},Mpe=LS});var jU={};T(jU,{UIStrings:()=>BS,default:()=>US});var BS,UU,PS,US,jS=g(()=>{"use strict";d();V();Ps();A();BS={description:"Cumulative Layout Shift measures the movement of visible elements within the viewport. [Learn more about the Cumulative Layout Shift metric](https://web.dev/articles/cls)."},UU=D("core/audits/metrics/cumulative-layout-shift.js",BS),PS=class extends b{static{s(this,"CumulativeLayoutShift")}static get meta(){return{id:"cumulative-layout-shift",title:UU(F.cumulativeLayoutShiftMetric),description:UU(BS.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:.1,median:.25}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],{cumulativeLayoutShift:a,impactByNodeId:o,...i}=await $r.request(r,n),c={type:"debugdata",items:[i]},u={p10:n.options.p10,median:n.options.median};return{score:b.computeLogNormalScore(u,a),scoringOptions:u,numericValue:a,numericUnit:"unitless",displayValue:a.toLocaleString(n.settings. +locale),details:c}}},US=PS});var zU={};T(zU,{UIStrings:()=>oa,default:()=>Ope});var Npe,oa,Ba,zS,Ope,qU=g(()=>{"use strict";d();V();A();Ps();jS();sx();Ei();Npe=15,oa={title:"Avoid large layout shifts",description:"These are the largest layout shifts observed on the page. Each table item represents a single layout shift, and shows the element that shifted the most. Below each item are possible root causes that led to the layout shift. Some of these layout shifts may not be included in the CLS metric value due to [windowing](https://web.dev/articles/cls#what_is_cls). [Learn how to improve CLS](https://web.dev/articles/optimize-cls)",columnScore:"Layout shift score",rootCauseUnsizedMedia:"Media element lacking an explicit size",rootCauseFontChanges:"Web font loaded",rootCauseInjectedIframe:"Injected iframe",rootCauseRenderBlockingRequest:"A late network request adjusted the page layout",displayValueShiftsFound:"{shiftCount, plural, =1 {1 layout shift found} other {# layout shifts found}}"},Ba=D("core/audits/layout-sh\ +ifts.js",oa),zS=class extends b{static{s(this,"LayoutShifts")}static get meta(){return{id:"layout-shifts",title:Ba(oa.title),description:Ba(oa.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:2,requiredArtifacts:["traces","RootCauses","TraceElements"]}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],o=(await rr.request({trace:r},n)).data.LayoutShifts.clusters??[],{cumulativeLayoutShift:i,impactByNodeId:c}=await $r.request(r,n),u=t.TraceElements.filter(w=>w.traceEventType==="layout-shift"),l=[],m=o.flatMap(w=>w.events),p=m.sort((w,x)=>x.args.data.weighted_score_delta-w.args.data.weighted_score_delta).slice(0,Npe);for(let w of p){let x=ix.getBiggestImpactNodeForShiftEvent(w.args.data.impacted_nodes||[],c,w),E=u.find(O=>O.nodeId===x),S=m.indexOf(w),k=t.RootCauses.layoutShifts[S],R=[];if(k){for(let O of k.unsizedMedia){let N=t.TraceElements.find(H=>H.traceEventType==="layout-shift"&&H.nodeId===O.node.backendNodeId);R.push({extra:N?b.makeNodeItem(N.node):void 0, +cause:Ba(oa.rootCauseUnsizedMedia)})}for(let O of k.fontChanges){let N=O.request.args.data.url;R.push({extra:{type:"url",value:N},cause:Ba(oa.rootCauseFontChanges)})}for(let O of k.iframes){let N=t.TraceElements.find(H=>H.traceEventType==="layout-shift"&&H.nodeId===O.iframe.backendNodeId);R.push({extra:N?b.makeNodeItem(N.node):void 0,cause:Ba(oa.rootCauseInjectedIframe)})}for(let O of k.renderBlockingRequests){let N=O.request.args.data.url;R.push({extra:{type:"url",value:N},cause:Ba(oa.rootCauseRenderBlockingRequest)})}}l.push({node:E?b.makeNodeItem(E.node):void 0,score:w.args.data.weighted_score_delta,subItems:R.length?{type:"subitems",items:R}:void 0})}let f=[{key:"node",valueType:"node",subItemsHeading:{key:"extra"},label:Ba(F.columnElement)},{key:"score",valueType:"numeric",subItemsHeading:{key:"cause",valueType:"text"},granularity:.001,label:Ba(oa.columnScore)}],h=b.makeTableDetails(f,l),y;l.length>0&&(y=Ba(oa.displayValueShiftsFound,{shiftCount:l.length}));let v=i<=US.defaultOptions. +p10;return{score:v?1:0,scoreDisplayMode:v?b.SCORING_MODES.INFORMATIVE:void 0,metricSavings:{CLS:i},notApplicable:h.items.length===0,displayValue:y,details:h}}},Ope=zS});var HU={};T(HU,{UIStrings:()=>sm,default:()=>Ppe});var sm,dh,Lpe,qS,Ppe,WU=g(()=>{"use strict";d();V();A();lh();mc();sm={title:"Largest Contentful Paint image was not lazily loaded",failureTitle:"Largest Contentful Paint image was lazily loaded",description:"Above-the-fold images that are lazily loaded render later in the page lifecycle, which can delay the largest contentful paint. [Learn more about optimal lazy loading](https://web.dev/articles/lcp-lazy-loading)."},dh=D("core/audits/lcp-lazy-loaded.js",sm),Lpe=.15,qS=class extends b{static{s(this,"LargestContentfulPaintLazyLoaded")}static get meta(){return{id:"lcp-lazy-loaded",title:dh(sm.title),failureTitle:dh(sm.failureTitle),description:dh(sm.description),supportedModes:["navigation"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:3,requiredArtifacts:["TraceElements","ViewportDimensions","ImageElements","traces","devtoolsLogs","GatherContext","URL"]}}static isImageInViewport(t,n){let r=t.clientRect.top,a=n.innerHeight; +return r<a}static async audit(t,n){let r=t.TraceElements.find(f=>f.traceEventType==="largest-contentful-paint"&&f.type==="image"),a=r?t.ImageElements.find(f=>f.node.devtoolsNodePath===r.node.devtoolsNodePath):void 0;if(!a||!this.isImageInViewport(a,t.ViewportDimensions))return{score:null,notApplicable:!0,metricSavings:{LCP:0}};let o=[{key:"node",valueType:"node",label:dh(F.columnElement)}],i=b.makeTableDetails(o,[{node:b.makeNodeItem(a.node)}]),c=a.loading==="lazy",u=b.makeMetricComputationDataInput(t,n),{timing:l}=await aa.request(u,n),m=await pc.request(u,n),p=0;if(c&&m.loadStart!==void 0){let f=m.loadStart-m.ttfb;p=Math.min(l*Lpe,f)}return{score:c?0:1,metricSavings:{LCP:p},details:i}}},Ppe=qS});var GU={};T(GU,{UIStrings:()=>cm,default:()=>zpe});function jpe(e,t){let n=e.indexOf(t);return n>-1?n:e.push(t)-1}function HS(e){return Math.round(e*10)/10}var Bpe,Upe,cm,fc,WS,zpe,VU=g(()=>{"use strict";d();Mt();V();ut();A();ki();qs();Vr();Id();Gs();Bpe={startTime:0,endTime:0,duration:0},Upe=20,cm={title:"Avoid long main-thread tasks",description:"Lists the longest tasks on the main thread, useful for identifying worst contributors to input delay. [Learn how to avoid long main-thread tasks](https://web.dev/articles/optimize-long-tasks)",displayValue:`{itemCount, plural, =1 {# long task found} other {# long tasks found} - }`},mu=D("core/audits/long-tasks.js",ap);s(ade,"insertUrl");s(u2,"roundTenths");l2=class e extends v{static{s(this,"LongTasks")}static get meta(){return{id:"long-tasks",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:mu(ap.title),description:mu(ap.description),requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"],guidanceLevel:1}}static getTimingBreakdown(t,r,n=new Map){let i=e.getTiming(t,r),a=0;if(i.duration>0)for(let l of t.children){let{duration:c}=e.getTimingBreakdown(l,r,n);a+=c}let o=i.duration-a,u=n.get(t.group.id)||0;return n.set(t.group.id,u+o),{startTime:i.startTime,duration:i.duration,timeByTaskGroup:n}}static makeDebugData(t,r,n){let i=[],a=[];for(let o of t){let u=Us(o,r),{startTime:l,duration:c,timeByTaskGroup:p}=e.getTimingBreakdown(o,n),m=[...p].map(([f,h])=>[f,u2(h)]).sort((f,h)=>f[0].localeCompare(h[0]));a.push({urlIndex:ade(i,u),startTime:u2(l),duration:u2(c),...Object.fromEntries(m)})}return{type:"debugdata",urls:i,tasks:a}}static getTiming(t,r){let n=t; -r&&(n=r.get(t.event)||nde);let{duration:i,startTime:a}=n;return{duration:i,startTime:a}}static async audit(t,r){let n=r.settings||{},i=t.URL,a=t.traces[v.DEFAULT_PASS],o=await Qr.request(a,r),u=t.devtoolsLogs[e.DEFAULT_PASS],l=await ie.request(u,r),c=v.makeMetricComputationDataInput(t,r),p=await Wn.request(c,r),m;if(n.throttlingMethod==="simulate"){m=new Map;let T={devtoolsLog:u,settings:r.settings},S=await yn.request({trace:a,devtoolsLog:u,URL:i},r),_=await(await Jt.request(T,r)).simulate(S,{label:"long-tasks-diagnostic"});for(let[L,M]of _.nodeTimings.entries())L.type==="cpu"&&m.set(L.event,M)}let f=Cd(l),h=o.map(T=>{let{duration:S}=e.getTiming(T,m);return{task:T,duration:S}}).filter(({task:T,duration:S})=>S>=50&&!T.unbounded&&!T.parent).sort((T,S)=>S.duration-T.duration).map(({task:T})=>T),y=h.map(T=>{let S=e.getTiming(T,m);return{url:Us(T,f),duration:S.duration,startTime:S.startTime}}).slice(0,ide),b=[{key:"url",valueType:"url",label:mu(F.columnURL)},{key:"startTime",valueType:"ms", -granularity:1,label:mu(F.columnStartTime)},{key:"duration",valueType:"ms",granularity:1,label:mu(F.columnDuration)}],w=v.makeTableDetails(b,y,{sortedBy:["duration"],skipSumming:["startTime"]});w.debugData=e.makeDebugData(h,f,m);let E;return y.length>0&&(E=mu(ap.displayValue,{itemCount:y.length})),{score:y.length===0?1:0,notApplicable:y.length===0,details:w,displayValue:E,metricSavings:{TBT:p.timing}}}},ode=l2});var c7={};x(c7,{default:()=>sde});var c2,sde,d7=g(()=>{"use strict";d();V();Eo();c2=class extends v{static{s(this,"MainThreadTasks")}static get meta(){return{id:"main-thread-tasks",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Tasks",description:"Lists the toplevel main thread tasks that executed during page load.",requiredArtifacts:["traces"]}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],a=(await Qr.request(n,r)).filter(l=>l.duration>5&&!l.parent).map(l=>({duration:l.duration,startTime:l.startTime})),o=[{key:"startTime",valueType:"ms",granularity:1,label:"Start Time"},{key:"duration",valueType:"ms",granularity:1,label:"End Time"}];return{score:1,details:v.makeTableDetails(o,a)}}},sde=c2});var p7={};x(p7,{UIStrings:()=>hu,default:()=>ude});var hu,fu,d2,ude,m7=g(()=>{"use strict";d();Ne();V();Sd();R();Eo();Ws();Kr();Pr();hu={title:"Minimizes main-thread work",failureTitle:"Minimize main-thread work",description:"Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to minimize main-thread work](https://developer.chrome.com/docs/lighthouse/performance/mainthread-work-breakdown/)",columnCategory:"Category"},fu=D("core/audits/mainthread-work-breakdown.js",hu),d2=class e extends v{static{s(this,"MainThreadWorkBreakdown")}static get meta(){return{id:"mainthread-work-breakdown",title:fu(hu.title),failureTitle:fu(hu.failureTitle),description:fu(hu.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"]}}static get defaultOptions(){return{p10:2017,median:4e3}}static getExecutionTimingsByGroup(t){let r=new Map; -for(let n of t){let i=r.get(n.group.id)||0;r.set(n.group.id,i+n.selfTime)}return r}static async audit(t,r){let n=r.settings||{},i=t.traces[e.DEFAULT_PASS],a=0;try{let b=v.makeMetricComputationDataInput(t,r);a=(await Wn.request(b,r)).timing}catch(b){bt.captureException(b,{tags:{audit:this.meta.id},level:"error"}),N.error(this.meta.id,b.message)}let o=await Qr.request(i,r),u=n.throttlingMethod==="simulate"?n.throttling.cpuSlowdownMultiplier:1,l=e.getExecutionTimingsByGroup(o),c=0,p={},m=Array.from(l).map(([b,w])=>{let E=w*u;c+=E;let T=p[b]||0;return p[b]=T+E,{group:b,groupLabel:Tr[b].label,duration:E}}),f=[{key:"groupLabel",valueType:"text",label:fu(hu.columnCategory)},{key:"duration",valueType:"ms",granularity:1,label:fu(F.columnTimeSpent)}];m.sort((b,w)=>p[w.group]-p[b.group]);let h=e.makeTableDetails(f,m,{sortedBy:["duration"]}),y=v.computeLogNormalScore({p10:r.options.p10,median:r.options.median},c);return{score:y,scoreDisplayMode:y>=Me.PASS_THRESHOLD?v.SCORING_MODES.INFORMATIVE:void 0, -numericValue:c,numericUnit:"millisecond",displayValue:fu(F.seconds,{timeInMs:c}),details:h,metricSavings:{TBT:a}}}},ude=d2});var f7=pe((oWe,sh)=>{d();var Ao=(ni(),Uq(hk));if(Ao&&Ao.default){sh.exports=Ao.default;for(let e in Ao)sh.exports[e]=Ao[e]}else Ao&&(sh.exports=Ao)});var y7=pe((uWe,uh)=>{d();var g7=g7||function(e){return Buffer.from(e).toString("base64")};function lde(e){var t=this,r=Math.round,n=Math.floor,i=new Array(64),a=new Array(64),o=new Array(64),u=new Array(64),l,c,p,m,f=new Array(65535),h=new Array(65535),y=new Array(64),b=new Array(64),w=[],E=0,T=7,S=new Array(64),C=new Array(64),_=new Array(64),L=new Array(256),M=new Array(2048),H,te=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],$=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],ae=[0,1,2,3,4,5,6,7,8,9,10,11],ye=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],se=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146, -147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],gt=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],ce=[0,1,2,3,4,5,6,7,8,9,10,11],ve=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],ct=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function rt(j){for(var le=[16,11,10,16,24,40,51,61,12, -12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],he=0;he<64;he++){var de=n((le[he]*j+50)/100);de<1?de=1:de>255&&(de=255),i[te[he]]=de}for(var ke=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],Re=0;Re<64;Re++){var Qe=n((ke[Re]*j+50)/100);Qe<1?Qe=1:Qe>255&&(Qe=255),a[te[Re]]=Qe}for(var et=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],kt=0,yt=0;yt<8;yt++)for(var W=0;W<8;W++)o[kt]=1/(i[te[kt]]*et[yt]*et[W]*8),u[kt]=1/(a[te[kt]]*et[yt]*et[W]*8),kt++}s(rt,"initQuantTables");function Be(j,le){for(var he=0,de=0,ke=new Array,Re=1;Re<=16;Re++){for(var Qe=1;Qe<=j[Re];Qe++)ke[le[de]]=[],ke[le[de]][0]=he,ke[le[de]][1]=Re,de++,he++;he*=2}return ke}s(Be,"computeHuffmanTbl");function Nt(){l=Be($,ae),c=Be( -gt,ce),p=Be(ye,se),m=Be(ve,ct)}s(Nt,"initHuffmanTbl");function Je(){for(var j=1,le=2,he=1;he<=15;he++){for(var de=j;de<le;de++)h[32767+de]=he,f[32767+de]=[],f[32767+de][1]=he,f[32767+de][0]=de;for(var ke=-(le-1);ke<=-j;ke++)h[32767+ke]=he,f[32767+ke]=[],f[32767+ke][1]=he,f[32767+ke][0]=le-1+ke;j<<=1,le<<=1}}s(Je,"initCategoryNumber");function He(){for(var j=0;j<256;j++)M[j]=19595*j,M[j+256>>0]=38470*j,M[j+512>>0]=7471*j+32768,M[j+768>>0]=-11059*j,M[j+1024>>0]=-21709*j,M[j+1280>>0]=32768*j+8421375,M[j+1536>>0]=-27439*j,M[j+1792>>0]=-5329*j}s(He,"initRGBYUVTable");function Se(j){for(var le=j[0],he=j[1]-1;he>=0;)le&1<<he&&(E|=1<<T),he--,T--,T<0&&(E==255?(O(255),O(0)):O(E),T=7,E=0)}s(Se,"writeBits");function O(j){w.push(j)}s(O,"writeByte");function ue(j){O(j>>8&255),O(j&255)}s(ue,"writeWord");function nt(j,le){var he,de,ke,Re,Qe,et,kt,yt,W=0,oe,Ee=8,xt=64;for(oe=0;oe<Ee;++oe){he=j[W],de=j[W+1],ke=j[W+2],Re=j[W+3],Qe=j[W+4],et=j[W+5],kt=j[W+6],yt=j[W+7];var Ie=he+yt,Ye=he-yt,ft=de+kt,be=de- -kt,ot=ke+et,er=ke-et,wt=Re+Qe,qr=Re-Qe,xn=Ie+wt,Na=Ie-wt,zo=ft+ot,Ho=ft-ot;j[W]=xn+zo,j[W+4]=xn-zo;var Bu=(Ho+Na)*.707106781;j[W+2]=Na+Bu,j[W+6]=Na-Bu,xn=qr+er,zo=er+be,Ho=be+Ye;var Uu=(xn-Ho)*.382683433,wp=.5411961*xn+Uu,ju=1.306562965*Ho+Uu,qu=zo*.707106781,zu=Ye+qu,Hu=Ye-qu;j[W+5]=Hu+wp,j[W+3]=Hu-wp,j[W+1]=zu+ju,j[W+7]=zu-ju,W+=8}for(W=0,oe=0;oe<Ee;++oe){he=j[W],de=j[W+8],ke=j[W+16],Re=j[W+24],Qe=j[W+32],et=j[W+40],kt=j[W+48],yt=j[W+56];var bF=he+yt,jh=he-yt,wF=de+kt,DF=de-kt,EF=ke+et,TF=ke-et,xF=Re+Qe,Nq=Re-Qe,Wu=bF+xF,qh=bF-xF,Dp=wF+EF,Ep=wF-EF;j[W]=Wu+Dp,j[W+32]=Wu-Dp;var SF=(Ep+qh)*.707106781;j[W+16]=qh+SF,j[W+48]=qh-SF,Wu=Nq+TF,Dp=TF+DF,Ep=DF+jh;var CF=(Wu-Ep)*.382683433,FF=.5411961*Wu+CF,kF=1.306562965*Ep+CF,_F=Dp*.707106781,RF=jh+_F,IF=jh-_F;j[W+40]=IF+FF,j[W+24]=IF-FF,j[W+8]=RF+kF,j[W+56]=RF-kF,W++}var Tp;for(oe=0;oe<xt;++oe)Tp=j[oe]*le[oe],y[oe]=Tp>0?Tp+.5|0:Tp-.5|0;return y}s(nt,"fDCTQuant");function _e(){ue(65504),ue(16),O(74),O(70),O(73),O(70),O(0),O(1),O(1),O(0),ue(1),ue( -1),O(0),O(0)}s(_e,"writeAPP0");function Ce(j){if(j){ue(65505),j[0]===69&&j[1]===120&&j[2]===105&&j[3]===102?ue(j.length+2):(ue(j.length+5+2),O(69),O(120),O(105),O(102),O(0));for(var le=0;le<j.length;le++)O(j[le])}}s(Ce,"writeAPP1");function We(j,le){ue(65472),ue(17),O(8),ue(le),ue(j),O(3),O(1),O(17),O(0),O(2),O(17),O(1),O(3),O(17),O(1)}s(We,"writeSOF0");function Fe(){ue(65499),ue(132),O(0);for(var j=0;j<64;j++)O(i[j]);O(1);for(var le=0;le<64;le++)O(a[le])}s(Fe,"writeDQT");function ee(){ue(65476),ue(418),O(0);for(var j=0;j<16;j++)O($[j+1]);for(var le=0;le<=11;le++)O(ae[le]);O(16);for(var he=0;he<16;he++)O(ye[he+1]);for(var de=0;de<=161;de++)O(se[de]);O(1);for(var ke=0;ke<16;ke++)O(gt[ke+1]);for(var Re=0;Re<=11;Re++)O(ce[Re]);O(17);for(var Qe=0;Qe<16;Qe++)O(ve[Qe+1]);for(var et=0;et<=161;et++)O(ct[et])}s(ee,"writeDHT");function Y(j){typeof j>"u"||j.constructor!==Array||j.forEach(le=>{if(typeof le=="string"){ue(65534);var he=le.length;ue(he+2);var de;for(de=0;de<he;de++)O(le.charCodeAt(de))}})} -s(Y,"writeCOM");function mt(){ue(65498),ue(12),O(3),O(1),O(0),O(2),O(17),O(3),O(17),O(0),O(63),O(0)}s(mt,"writeSOS");function we(j,le,he,de,ke){for(var Re=ke[0],Qe=ke[240],et,kt=16,yt=63,W=64,oe=nt(j,le),Ee=0;Ee<W;++Ee)b[te[Ee]]=oe[Ee];var xt=b[0]-he;he=b[0],xt==0?Se(de[0]):(et=32767+xt,Se(de[h[et]]),Se(f[et]));for(var Ie=63;Ie>0&&b[Ie]==0;Ie--);if(Ie==0)return Se(Re),he;for(var Ye=1,ft;Ye<=Ie;){for(var be=Ye;b[Ye]==0&&Ye<=Ie;++Ye);var ot=Ye-be;if(ot>=kt){ft=ot>>4;for(var er=1;er<=ft;++er)Se(Qe);ot=ot&15}et=32767+b[Ye],Se(ke[(ot<<4)+h[et]]),Se(f[et]),Ye++}return Ie!=yt&&Se(Re),he}s(we,"processDU");function Ue(){for(var j=String.fromCharCode,le=0;le<256;le++)L[le]=j(le)}s(Ue,"initCharLookupTable"),this.encode=function(j,le){var he=new Date().getTime();le&&jr(le),w=new Array,E=0,T=7,ue(65496),_e(),Y(j.comments),Ce(j.exifBuffer),Fe(),We(j.width,j.height),ee(),mt();var de=0,ke=0,Re=0;E=0,T=7,this.encode.displayName="_encode_";for(var Qe=j.data,et=j.width,kt=j.height,yt=et*4,W=et*3,oe,Ee=0, -xt,Ie,Ye,ft,be,ot,er,wt;Ee<kt;){for(oe=0;oe<yt;){for(ft=yt*Ee+oe,be=ft,ot=-1,er=0,wt=0;wt<64;wt++)er=wt>>3,ot=(wt&7)*4,be=ft+er*yt+ot,Ee+er>=kt&&(be-=yt*(Ee+1+er-kt)),oe+ot>=yt&&(be-=oe+ot-yt+4),xt=Qe[be++],Ie=Qe[be++],Ye=Qe[be++],S[wt]=(M[xt]+M[Ie+256>>0]+M[Ye+512>>0]>>16)-128,C[wt]=(M[xt+768>>0]+M[Ie+1024>>0]+M[Ye+1280>>0]>>16)-128,_[wt]=(M[xt+1280>>0]+M[Ie+1536>>0]+M[Ye+1792>>0]>>16)-128;de=we(S,o,de,l,p),ke=we(C,u,ke,c,m),Re=we(_,u,Re,c,m),oe+=32}Ee+=8}if(T>=0){var qr=[];qr[1]=T+1,qr[0]=(1<<T+1)-1,Se(qr)}if(ue(65497),typeof uh>"u")return new Uint8Array(w);return Buffer.from(w);var xn,Na};function jr(j){if(j<=0&&(j=1),j>100&&(j=100),H!=j){var le=0;j<50?le=Math.floor(5e3/j):le=Math.floor(200-j*2),rt(le),H=j}}s(jr,"setQuality");function ln(){var j=new Date().getTime();e||(e=50),Ue(),Nt(),Je(),He(),jr(e);var le=new Date().getTime()-j}s(ln,"init"),ln()}s(lde,"JPEGEncoder");typeof uh<"u"?uh.exports=h7:typeof window<"u"&&(window["jpeg-js"]=window["jpeg-js"]||{},window["jpeg-js"].encode=h7); -function h7(e,t){typeof t>"u"&&(t=50);var r=new lde(t),n=r.encode(e,t);return{data:n,width:e.width,height:e.height}}s(h7,"encode")});var b7=pe((dWe,m2)=>{d();var p2=s(function(){"use strict";var t=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),r=4017,n=799,i=3406,a=2276,o=1567,u=3784,l=5793,c=2896;function p(){}s(p,"constructor");function m(T,S){for(var C=0,_=[],L,M,H=16;H>0&&!T[H-1];)H--;_.push({children:[],index:0});var te=_[0],$;for(L=0;L<H;L++){for(M=0;M<T[L];M++){for(te=_.pop(),te.children[te.index]=S[C];te.index>0;){if(_.length===0)throw new Error("Could not recreate Huffman Table");te=_.pop()}for(te.index++,_.push(te);_.length<=L;)_.push($={children:[],index:0}),te.children[te.index]=$.children,te=$;C++}L+1<H&&(_.push($={children:[],index:0}),te.children[te.index]=$.children,te=$)}return _[0].children}s(m,"buildHuffmanTable");function f(T,S,C,_,L,M,H,te,$,ae){var ye=C.precision,se=C.samplesPerLine,gt=C.scanLines,ce=C.mcusPerLine,ve=C.progressive,ct=C.maxH,rt=C. -maxV,Be=S,Nt=0,Je=0;function He(){if(Je>0)return Je--,Nt>>Je&1;if(Nt=T[S++],Nt==255){var W=T[S++];if(W)throw new Error("unexpected marker: "+(Nt<<8|W).toString(16))}return Je=7,Nt>>>7}s(He,"readBit");function Se(W){for(var oe=W,Ee;(Ee=He())!==null;){if(oe=oe[Ee],typeof oe=="number")return oe;if(typeof oe!="object")throw new Error("invalid huffman sequence")}return null}s(Se,"decodeHuffman");function O(W){for(var oe=0;W>0;){var Ee=He();if(Ee===null)return;oe=oe<<1|Ee,W--}return oe}s(O,"receive");function ue(W){var oe=O(W);return oe>=1<<W-1?oe:oe+(-1<<W)+1}s(ue,"receiveAndExtend");function nt(W,oe){var Ee=Se(W.huffmanTableDC),xt=Ee===0?0:ue(Ee);oe[0]=W.pred+=xt;for(var Ie=1;Ie<64;){var Ye=Se(W.huffmanTableAC),ft=Ye&15,be=Ye>>4;if(ft===0){if(be<15)break;Ie+=16;continue}Ie+=be;var ot=t[Ie];oe[ot]=ue(ft),Ie++}}s(nt,"decodeBaseline");function _e(W,oe){var Ee=Se(W.huffmanTableDC),xt=Ee===0?0:ue(Ee)<<$;oe[0]=W.pred+=xt}s(_e,"decodeDCFirst");function Ce(W,oe){oe[0]|=He()<<$}s(Ce,"decodeDCSucces\ -sive");var We=0;function Fe(W,oe){if(We>0){We--;return}for(var Ee=M,xt=H;Ee<=xt;){var Ie=Se(W.huffmanTableAC),Ye=Ie&15,ft=Ie>>4;if(Ye===0){if(ft<15){We=O(ft)+(1<<ft)-1;break}Ee+=16;continue}Ee+=ft;var be=t[Ee];oe[be]=ue(Ye)*(1<<$),Ee++}}s(Fe,"decodeACFirst");var ee=0,Y;function mt(W,oe){for(var Ee=M,xt=H,Ie=0;Ee<=xt;){var Ye=t[Ee],ft=oe[Ye]<0?-1:1;switch(ee){case 0:var be=Se(W.huffmanTableAC),ot=be&15,Ie=be>>4;if(ot===0)Ie<15?(We=O(Ie)+(1<<Ie),ee=4):(Ie=16,ee=1);else{if(ot!==1)throw new Error("invalid ACn encoding");Y=ue(ot),ee=Ie?2:3}continue;case 1:case 2:oe[Ye]?oe[Ye]+=(He()<<$)*ft:(Ie--,Ie===0&&(ee=ee==2?3:0));break;case 3:oe[Ye]?oe[Ye]+=(He()<<$)*ft:(oe[Ye]=Y<<$,ee=0);break;case 4:oe[Ye]&&(oe[Ye]+=(He()<<$)*ft);break}Ee++}ee===4&&(We--,We===0&&(ee=0))}s(mt,"decodeACSuccessive");function we(W,oe,Ee,xt,Ie){var Ye=Ee/ce|0,ft=Ee%ce,be=Ye*W.v+xt,ot=ft*W.h+Ie;W.blocks[be]===void 0&&ae.tolerantDecoding||oe(W,W.blocks[be][ot])}s(we,"decodeMcu");function Ue(W,oe,Ee){var xt=Ee/W.blocksPerLine| -0,Ie=Ee%W.blocksPerLine;W.blocks[xt]===void 0&&ae.tolerantDecoding||oe(W,W.blocks[xt][Ie])}s(Ue,"decodeBlock");var jr=_.length,ln,j,le,he,de,ke;ve?M===0?ke=te===0?_e:Ce:ke=te===0?Fe:mt:ke=nt;var Re=0,Qe,et;jr==1?et=_[0].blocksPerLine*_[0].blocksPerColumn:et=ce*C.mcusPerColumn,L||(L=et);for(var kt,yt;Re<et;){for(j=0;j<jr;j++)_[j].pred=0;if(We=0,jr==1)for(ln=_[0],de=0;de<L;de++)Ue(ln,ke,Re),Re++;else for(de=0;de<L;de++){for(j=0;j<jr;j++)for(ln=_[j],kt=ln.h,yt=ln.v,le=0;le<yt;le++)for(he=0;he<kt;he++)we(ln,ke,Re,le,he);if(Re++,Re===et)break}if(Re===et)do{if(T[S]===255&&T[S+1]!==0)break;S+=1}while(S<T.length-2);if(Je=0,Qe=T[S]<<8|T[S+1],Qe<65280)throw new Error("marker was not found");if(Qe>=65488&&Qe<=65495)S+=2;else break}return S-Be}s(f,"decodeScan");function h(T,S){var C=[],_=S.blocksPerLine,L=S.blocksPerColumn,M=_<<3,H=new Int32Array(64),te=new Uint8Array(64);function $(Be,Nt,Je){var He=S.quantizationTable,Se,O,ue,nt,_e,Ce,We,Fe,ee,Y=Je,mt;for(mt=0;mt<64;mt++)Y[mt]=Be[mt]*He[mt];for(mt= -0;mt<8;++mt){var we=8*mt;if(Y[1+we]==0&&Y[2+we]==0&&Y[3+we]==0&&Y[4+we]==0&&Y[5+we]==0&&Y[6+we]==0&&Y[7+we]==0){ee=l*Y[0+we]+512>>10,Y[0+we]=ee,Y[1+we]=ee,Y[2+we]=ee,Y[3+we]=ee,Y[4+we]=ee,Y[5+we]=ee,Y[6+we]=ee,Y[7+we]=ee;continue}Se=l*Y[0+we]+128>>8,O=l*Y[4+we]+128>>8,ue=Y[2+we],nt=Y[6+we],_e=c*(Y[1+we]-Y[7+we])+128>>8,Fe=c*(Y[1+we]+Y[7+we])+128>>8,Ce=Y[3+we]<<4,We=Y[5+we]<<4,ee=Se-O+1>>1,Se=Se+O+1>>1,O=ee,ee=ue*u+nt*o+128>>8,ue=ue*o-nt*u+128>>8,nt=ee,ee=_e-We+1>>1,_e=_e+We+1>>1,We=ee,ee=Fe+Ce+1>>1,Ce=Fe-Ce+1>>1,Fe=ee,ee=Se-nt+1>>1,Se=Se+nt+1>>1,nt=ee,ee=O-ue+1>>1,O=O+ue+1>>1,ue=ee,ee=_e*a+Fe*i+2048>>12,_e=_e*i-Fe*a+2048>>12,Fe=ee,ee=Ce*n+We*r+2048>>12,Ce=Ce*r-We*n+2048>>12,We=ee,Y[0+we]=Se+Fe,Y[7+we]=Se-Fe,Y[1+we]=O+We,Y[6+we]=O-We,Y[2+we]=ue+Ce,Y[5+we]=ue-Ce,Y[3+we]=nt+_e,Y[4+we]=nt-_e}for(mt=0;mt<8;++mt){var Ue=mt;if(Y[8+Ue]==0&&Y[16+Ue]==0&&Y[24+Ue]==0&&Y[32+Ue]==0&&Y[40+Ue]==0&&Y[48+Ue]==0&&Y[56+Ue]==0){ee=l*Je[mt+0]+8192>>14,Y[0+Ue]=ee,Y[8+Ue]=ee,Y[16+Ue]=ee,Y[24+Ue]=ee,Y[32+Ue]= -ee,Y[40+Ue]=ee,Y[48+Ue]=ee,Y[56+Ue]=ee;continue}Se=l*Y[0+Ue]+2048>>12,O=l*Y[32+Ue]+2048>>12,ue=Y[16+Ue],nt=Y[48+Ue],_e=c*(Y[8+Ue]-Y[56+Ue])+2048>>12,Fe=c*(Y[8+Ue]+Y[56+Ue])+2048>>12,Ce=Y[24+Ue],We=Y[40+Ue],ee=Se-O+1>>1,Se=Se+O+1>>1,O=ee,ee=ue*u+nt*o+2048>>12,ue=ue*o-nt*u+2048>>12,nt=ee,ee=_e-We+1>>1,_e=_e+We+1>>1,We=ee,ee=Fe+Ce+1>>1,Ce=Fe-Ce+1>>1,Fe=ee,ee=Se-nt+1>>1,Se=Se+nt+1>>1,nt=ee,ee=O-ue+1>>1,O=O+ue+1>>1,ue=ee,ee=_e*a+Fe*i+2048>>12,_e=_e*i-Fe*a+2048>>12,Fe=ee,ee=Ce*n+We*r+2048>>12,Ce=Ce*r-We*n+2048>>12,We=ee,Y[0+Ue]=Se+Fe,Y[56+Ue]=Se-Fe,Y[8+Ue]=O+We,Y[48+Ue]=O-We,Y[16+Ue]=ue+Ce,Y[40+Ue]=ue-Ce,Y[24+Ue]=nt+_e,Y[32+Ue]=nt-_e}for(mt=0;mt<64;++mt){var jr=128+(Y[mt]+8>>4);Nt[mt]=jr<0?0:jr>255?255:jr}}s($,"quantizeAndInverse"),E(M*L*8);for(var ae,ye,se=0;se<L;se++){var gt=se<<3;for(ae=0;ae<8;ae++)C.push(new Uint8Array(M));for(var ce=0;ce<_;ce++){$(S.blocks[se][ce],te,H);var ve=0,ct=ce<<3;for(ye=0;ye<8;ye++){var rt=C[gt+ye];for(ae=0;ae<8;ae++)rt[ct+ae]=te[ve++]}}}return C}s(h,"buildCompo\ -nentData");function y(T){return T<0?0:T>255?255:T}s(y,"clampTo8bit"),p.prototype={load:s(function(S){var C=new XMLHttpRequest;C.open("GET",S,!0),C.responseType="arraybuffer",C.onload=function(){var _=new Uint8Array(C.response||C.mozResponseArrayBuffer);this.parse(_),this.onload&&this.onload()}.bind(this),C.send(null)},"load"),parse:s(function(S){var C=this.opts.maxResolutionInMP*1e3*1e3,_=0,L=S.length;function M(){var be=S[_]<<8|S[_+1];return _+=2,be}s(M,"readUint16");function H(){var be=M(),ot=S.subarray(_,_+be-2);return _+=ot.length,ot}s(H,"readDataBlock");function te(be){var ot=1,er=1,wt,qr;for(qr in be.components)be.components.hasOwnProperty(qr)&&(wt=be.components[qr],ot<wt.h&&(ot=wt.h),er<wt.v&&(er=wt.v));var xn=Math.ceil(be.samplesPerLine/8/ot),Na=Math.ceil(be.scanLines/8/er);for(qr in be.components)if(be.components.hasOwnProperty(qr)){wt=be.components[qr];var zo=Math.ceil(Math.ceil(be.samplesPerLine/8)*wt.h/ot),Ho=Math.ceil(Math.ceil(be.scanLines/8)*wt.v/er),Bu=xn*wt.h,Uu=Na*wt. -v,wp=Uu*Bu,ju=[];E(wp*256);for(var qu=0;qu<Uu;qu++){for(var zu=[],Hu=0;Hu<Bu;Hu++)zu.push(new Int32Array(64));ju.push(zu)}wt.blocksPerLine=zo,wt.blocksPerColumn=Ho,wt.blocks=ju}be.maxH=ot,be.maxV=er,be.mcusPerLine=xn,be.mcusPerColumn=Na}s(te,"prepareComponents");var $=null,ae=null,ye=null,se,gt,ce=[],ve=[],ct=[],rt=[],Be=M(),Nt=-1;if(this.comments=[],Be!=65496)throw new Error("SOI not found");for(Be=M();Be!=65497;){var Je,He,Se;switch(Be){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var O=H();if(Be===65534){var ue=String.fromCharCode.apply(null,O);this.comments.push(ue)}Be===65504&&O[0]===74&&O[1]===70&&O[2]===73&&O[3]===70&&O[4]===0&&($={version:{major:O[5],minor:O[6]},densityUnits:O[7],xDensity:O[8]<<8|O[9],yDensity:O[10]<<8|O[11],thumbWidth:O[12],thumbHeight:O[13],thumbData:O.subarray(14,14+3*O[12]*O[13])}),Be===65505&&O[0]=== -69&&O[1]===120&&O[2]===105&&O[3]===102&&O[4]===0&&(this.exifBuffer=O.subarray(5,O.length)),Be===65518&&O[0]===65&&O[1]===100&&O[2]===111&&O[3]===98&&O[4]===101&&O[5]===0&&(ae={version:O[6],flags0:O[7]<<8|O[8],flags1:O[9]<<8|O[10],transformCode:O[11]});break;case 65499:for(var nt=M(),_e=nt+_-2;_<_e;){var Ce=S[_++];E(256);var We=new Int32Array(64);if(Ce>>4)if(Ce>>4===1)for(He=0;He<64;He++){var Fe=t[He];We[Fe]=M()}else throw new Error("DQT: invalid table spec");else for(He=0;He<64;He++){var Fe=t[He];We[Fe]=S[_++]}ce[Ce&15]=We}break;case 65472:case 65473:case 65474:M(),se={},se.extended=Be===65473,se.progressive=Be===65474,se.precision=S[_++],se.scanLines=M(),se.samplesPerLine=M(),se.components={},se.componentsOrder=[];var ee=se.scanLines*se.samplesPerLine;if(ee>C){var Y=Math.ceil((ee-C)/1e6);throw new Error(`maxResolutionInMP limit exceeded by ${Y}MP`)}var mt=S[_++],we,Ue=0,jr=0;for(Je=0;Je<mt;Je++){we=S[_];var ln=S[_+1]>>4,j=S[_+1]&15,le=S[_+2];if(ln<=0||j<=0)throw new Error("Invalid sam\ -pling factor, expected values above 0");se.componentsOrder.push(we),se.components[we]={h:ln,v:j,quantizationIdx:le},_+=3}te(se),ve.push(se);break;case 65476:var he=M();for(Je=2;Je<he;){var de=S[_++],ke=new Uint8Array(16),Re=0;for(He=0;He<16;He++,_++)Re+=ke[He]=S[_];E(16+Re);var Qe=new Uint8Array(Re);for(He=0;He<Re;He++,_++)Qe[He]=S[_];Je+=17+Re,(de>>4?ct:rt)[de&15]=m(ke,Qe)}break;case 65501:M(),gt=M();break;case 65500:M(),M();break;case 65498:var et=M(),kt=S[_++],yt=[],W;for(Je=0;Je<kt;Je++){W=se.components[S[_++]];var oe=S[_++];W.huffmanTableDC=rt[oe>>4],W.huffmanTableAC=ct[oe&15],yt.push(W)}var Ee=S[_++],xt=S[_++],Ie=S[_++],Ye=f(S,_,se,yt,gt,Ee,xt,Ie>>4,Ie&15,this.opts);_+=Ye;break;case 65535:S[_]!==255&&_--;break;default:if(S[_-3]==255&&S[_-2]>=192&&S[_-2]<=254){_-=3;break}else if(Be===224||Be==225){if(Nt!==-1)throw new Error(`first unknown JPEG marker at offset ${Nt.toString(16)}, second unknown JPEG marker ${Be.toString(16)} at offset ${(_-1).toString(16)}`);Nt=_-1;let be=M();if(S[_+ -be-2]===255){_+=be-2;break}}throw new Error("unknown JPEG marker "+Be.toString(16))}Be=M()}if(ve.length!=1)throw new Error("only single frame JPEGs supported");for(var Je=0;Je<ve.length;Je++){var ft=ve[Je].components;for(var He in ft)ft[He].quantizationTable=ce[ft[He].quantizationIdx],delete ft[He].quantizationIdx}this.width=se.samplesPerLine,this.height=se.scanLines,this.jfif=$,this.adobe=ae,this.components=[];for(var Je=0;Je<se.componentsOrder.length;Je++){var W=se.components[se.componentsOrder[Je]];this.components.push({lines:h(se,W),scaleX:W.h/se.maxH,scaleY:W.v/se.maxV})}},"parse"),getData:s(function(S,C){var _=this.width/S,L=this.height/C,M,H,te,$,ae,ye,se,gt,ce,ve,ct=0,rt,Be,Nt,Je,He,Se,O,ue,nt,_e,Ce,We=S*C*this.components.length;E(We);var Fe=new Uint8Array(We);switch(this.components.length){case 1:for(M=this.components[0],ve=0;ve<C;ve++)for(ae=M.lines[0|ve*M.scaleY*L],ce=0;ce<S;ce++)rt=ae[0|ce*M.scaleX*_],Fe[ct++]=rt;break;case 2:for(M=this.components[0],H=this.components[1],ve= -0;ve<C;ve++)for(ae=M.lines[0|ve*M.scaleY*L],ye=H.lines[0|ve*H.scaleY*L],ce=0;ce<S;ce++)rt=ae[0|ce*M.scaleX*_],Fe[ct++]=rt,rt=ye[0|ce*H.scaleX*_],Fe[ct++]=rt;break;case 3:for(Ce=!0,this.adobe&&this.adobe.transformCode?Ce=!0:typeof this.opts.colorTransform<"u"&&(Ce=!!this.opts.colorTransform),M=this.components[0],H=this.components[1],te=this.components[2],ve=0;ve<C;ve++)for(ae=M.lines[0|ve*M.scaleY*L],ye=H.lines[0|ve*H.scaleY*L],se=te.lines[0|ve*te.scaleY*L],ce=0;ce<S;ce++)Ce?(rt=ae[0|ce*M.scaleX*_],Be=ye[0|ce*H.scaleX*_],Nt=se[0|ce*te.scaleX*_],ue=y(rt+1.402*(Nt-128)),nt=y(rt-.3441363*(Be-128)-.71413636*(Nt-128)),_e=y(rt+1.772*(Be-128))):(ue=ae[0|ce*M.scaleX*_],nt=ye[0|ce*H.scaleX*_],_e=se[0|ce*te.scaleX*_]),Fe[ct++]=ue,Fe[ct++]=nt,Fe[ct++]=_e;break;case 4:if(!this.adobe)throw new Error("Unsupported color mode (4 components)");for(Ce=!1,this.adobe&&this.adobe.transformCode?Ce=!0:typeof this.opts.colorTransform<"u"&&(Ce=!!this.opts.colorTransform),M=this.components[0],H=this.components[1], -te=this.components[2],$=this.components[3],ve=0;ve<C;ve++)for(ae=M.lines[0|ve*M.scaleY*L],ye=H.lines[0|ve*H.scaleY*L],se=te.lines[0|ve*te.scaleY*L],gt=$.lines[0|ve*$.scaleY*L],ce=0;ce<S;ce++)Ce?(rt=ae[0|ce*M.scaleX*_],Be=ye[0|ce*H.scaleX*_],Nt=se[0|ce*te.scaleX*_],Je=gt[0|ce*$.scaleX*_],He=255-y(rt+1.402*(Nt-128)),Se=255-y(rt-.3441363*(Be-128)-.71413636*(Nt-128)),O=255-y(rt+1.772*(Be-128))):(He=ae[0|ce*M.scaleX*_],Se=ye[0|ce*H.scaleX*_],O=se[0|ce*te.scaleX*_],Je=gt[0|ce*$.scaleX*_]),Fe[ct++]=255-He,Fe[ct++]=255-Se,Fe[ct++]=255-O,Fe[ct++]=255-Je;break;default:throw new Error("Unsupported color mode")}return Fe},"getData"),copyToImageData:s(function(S,C){var _=S.width,L=S.height,M=S.data,H=this.getData(_,L),te=0,$=0,ae,ye,se,gt,ce,ve,ct,rt,Be;switch(this.components.length){case 1:for(ye=0;ye<L;ye++)for(ae=0;ae<_;ae++)se=H[te++],M[$++]=se,M[$++]=se,M[$++]=se,C&&(M[$++]=255);break;case 3:for(ye=0;ye<L;ye++)for(ae=0;ae<_;ae++)ct=H[te++],rt=H[te++],Be=H[te++],M[$++]=ct,M[$++]=rt,M[$++]=Be,C&& -(M[$++]=255);break;case 4:for(ye=0;ye<L;ye++)for(ae=0;ae<_;ae++)ce=H[te++],ve=H[te++],se=H[te++],gt=H[te++],ct=255-y(ce*(1-gt/255)+gt),rt=255-y(ve*(1-gt/255)+gt),Be=255-y(se*(1-gt/255)+gt),M[$++]=ct,M[$++]=rt,M[$++]=Be,C&&(M[$++]=255);break;default:throw new Error("Unsupported color mode")}},"copyToImageData")};var b=0,w=0;function E(T=0){var S=b+T;if(S>w){var C=Math.ceil((S-w)/1024/1024);throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${C}MB`)}b=S}return s(E,"requestMemoryAllocation"),p.resetMaxMemoryUsage=function(T){b=0,w=T},p.getBytesAllocated=function(){return b},p.requestMemoryAllocation=E,p},"jpegImage")();typeof m2<"u"?m2.exports=v7:typeof window<"u"&&(window["jpeg-js"]=window["jpeg-js"]||{},window["jpeg-js"].decode=v7);function v7(e,t={}){var r={colorTransform:void 0,useTArray:!1,formatAsRGBA:!0,tolerantDecoding:!0,maxResolutionInMP:100,maxMemoryUsageInMB:512},n={...r,...t},i=new Uint8Array(e),a=new p2;a.opts=n,p2.resetMaxMemoryUsage(n.maxMemoryUsageInMB*1024*1024), -a.parse(i);var o=n.formatAsRGBA?4:3,u=a.width*a.height*o;try{p2.requestMemoryAllocation(u);var l={width:a.width,height:a.height,exifBuffer:a.exifBuffer,data:n.useTArray?new Uint8Array(u):Buffer.alloc(u)};a.comments.length>0&&(l.comments=a.comments)}catch(c){throw c instanceof RangeError?new Error("Could not allocate enough memory for the image. Required: "+u):c instanceof ReferenceError&&c.message==="Buffer is not defined"?new Error("Buffer is not globally defined in this environment. Consider setting useTArray to true"):c}return a.copyToImageData(l,n.formatAsRGBA),l}s(v7,"decode")});var f2=pe((fWe,w7)=>{d();var cde=y7(),dde=b7();w7.exports={encode:cde,decode:dde}});var E7=pe((gWe,D7)=>{"use strict";d();var pde=f7(),h2=f2();function lh(e,t,r,n,i){return i[(e+t*n)*4+r]}s(lh,"getPixel");function mde(e,t,r){return lh(e,t,0,r.width,r.data)>=249&&lh(e,t,1,r.width,r.data)>=249&&lh(e,t,2,r.width,r.data)>=249}s(mde,"isWhitePixel");function fde(e){let t=s(function(){let a=[];for(let o=0;o<256;o++)a[o]=0;return a},"createHistogramArray"),r=e.width,n=e.height,i=[t(),t(),t()];for(let a=0;a<n;a++)for(let o=0;o<r;o++)if(!mde(o,a,e))for(let u=0;u<i.length;u++){let l=lh(o,a,u,r,e.data);i[u][l]++}return i}s(fde,"convertPixelsToHistogram");function hde(e){let t=h2.decode(e[0].getImage()),r=t.width,n=t.height,i=Buffer.alloc(r*n*4),a=0;for(;a<i.length;)i[a++]=255,i[a++]=255,i[a++]=255,i[a++]=255;var o=h2.encode({data:i,width:r,height:n});return o.data}s(hde,"synthesizeWhiteFrame");var gde="disabled-by-default-devtools.screenshot";function yde(e,t){t=t||{};let r;e=typeof e=="string"?pde.readFileSync(e,"utf-8"):e;try{r=typeof e=="string"?JSON.parse(e):e}catch(m){throw new Error( -"Speedline: Invalid JSON"+m.message)}let n=r.traceEvents||r,i=Number.MAX_VALUE,a=-Number.MAX_VALUE;n.forEach(m=>{m.ts!==0&&(i=Math.min(i,m.ts),a=Math.max(a,m.ts))}),i=(t.timeOrigin||i)/1e3,a/=1e3;let o=null,u=n.filter(m=>m.cat.includes(gde)&&m.ts>=i*1e3);u.sort((m,f)=>m.ts-f.ts);let l=u.map(function(m){let f=m.args&&m.args.snapshot,h=m.ts/1e3;if(f===o)return null;o=f;let y=Buffer.from(f,"base64");return g2(y,h)}).filter(Boolean);if(l.length===0)return Promise.reject(new Error("No screenshots found in trace"));let c=g2(hde(l),i);l.unshift(c);let p={startTs:i,endTs:a,frames:l};return Promise.resolve(p)}s(yde,"extractFramesFromTimeline");function g2(e,t){let r=null,n=null,i=null,a=null,o=null,u=null;return{getHistogram:function(){if(r)return r;let l=this.getParsedImage();return r=fde(l),r},getTimeStamp:function(){return t},setProgress:function(l,c){n=l,i=!!c},setPerceptualProgress:function(l,c){a=l,o=!!c},getImage:function(){return e},getParsedImage:function(){return u||(u=h2.decode(e)),u}, -getProgress:function(){return n},isProgressInterpolated:function(){return i},getPerceptualProgress:function(){return a},isPerceptualProgressInterpolated:function(){return o}}}s(g2,"frame");D7.exports={extractFramesFromTimeline:yde,create:g2}});var x7=pe((bWe,T7)=>{d();var y2;(function(e){"use strict";(function(i){i[i.Grey=1]="Grey",i[i.GreyAlpha=2]="GreyAlpha",i[i.RGB=3]="RGB",i[i.RGBAlpha=4]="RGBAlpha"})(e.Channels||(e.Channels={}));var t=e.Channels;function r(i,a,o,u,l,c,p){if(o===void 0&&(o=8),u===void 0&&(u=.01),l===void 0&&(l=.03),c===void 0&&(c=!0),p===void 0&&(p=8),i.width!==a.width||i.height!==a.height)throw new Error("Images have different sizes!");var m=(1<<p)-1,f=Math.pow(u*m,2),h=Math.pow(l*m,2),y=0,b=0,w=0;function E(T,S,C,_){var L,M,H;L=M=H=0;for(var te=0;te<T.length;te++)M+=Math.pow(T[te]-C,2),H+=Math.pow(S[te]-_,2),L+=(T[te]-C)*(S[te]-_);var $=T.length-1;M/=$,H/=$,L/=$;var ae=(2*C*_+f)*(2*L+h),ye=(Math.pow(C,2)+Math.pow(_,2)+f)*(M+H+h);b+=ae/ye,w+=(2*L+h)/(M+H+h),y++}return s(E,"iteration"),n._iterate(i,a,o,c,E),{ssim:b/y,mcs:w/y}}s(r,"compare"),e.compare=r;var n;(function(i){function a(l,c,p,m,f){for(var h=l.width,y=l.height,b=0;b<y;b+=p)for(var w=0;w<h;w+=p){var E=Math.min(p,h-w),T=Math.min(p,y-b),S=o(l,w,b, -E,T,m),C=o(c,w,b,E,T,m),_=u(S),L=u(C);f(S,C,_,L)}}s(a,"_iterate"),i._iterate=a;function o(l,c,p,m,f,h){for(var y=l.data,b=new Float32Array(new ArrayBuffer(m*f*4)),w=0,E=p+f,T=p;T<E;T++){var S=T*l.width,C=(S+c)*l.channels,_=(S+c+m)*l.channels;switch(l.channels){case 1:for(;C<_;)b[w++]=y[C++];break;case 2:for(;C<_;)b[w++]=y[C++]*(y[C++]/255);break;case 3:if(h)for(;C<_;)b[w++]=y[C++]*.212655+y[C++]*.715158+y[C++]*.072187;else for(;C<_;)b[w++]=y[C++]+y[C++]+y[C++];break;case 4:if(h)for(;C<_;)b[w++]=(y[C++]*.212655+y[C++]*.715158+y[C++]*.072187)*(y[C++]/255);else for(;C<_;)b[w++]=(y[C++]+y[C++]+y[C++])*(y[C++]/255);break}}return b}s(o,"_lumaValuesForWindow");function u(l){for(var c=0,p=0;p<l.length;p++)c+=l[p];return c/l.length}s(u,"_averageLuma")})(n||(n={}))})(y2||(y2={}));T7.exports=y2});var k7=pe((EWe,F7)=>{"use strict";d();var vde=x7(),bde=5,wde=3,Dde=-1,b2=Dde,S7=bde-b2,Ede=Math.log((wde-b2)/S7);function C7(e){let t=e/1e3;return S7*Math.exp(Ede*t)+b2}s(C7,"calculateFastModeAllowableChange");function Tde(e,t,r){let n=0,i=0,a=e.getHistogram(),o=t.getHistogram(),u=r.getHistogram();for(let c=0;c<3;c++)for(let p=0;p<256;p++){let m=a[c][p],f=o[c][p],h=u[c][p],y=Math.abs(m-f),b=Math.abs(h-f);i+=Math.min(y,b),n+=b}let l;return i===0&&n===0?l=100:l=Math.floor(i/n*100),l}s(Tde,"calculateFrameProgress");function ch(e,t,r,n,i,a){if(!n){e.forEach(m=>a(m,i(m),!1));return}let o=e[t],u=e[r],l=u.getTimeStamp()-o.getTimeStamp(),c=i(o),p=i(u);if(a(o,c,!1),a(u,p,!1),Math.abs(c-p)<C7(l))for(let m=t+1;m<r;m++)a(e[m],c,!0);else if(r-t>1){let m=Math.floor((t+r)/2);ch(e,t,m,n,i,a),ch(e,m,r,n,i,a)}}s(ch,"calculateProgressBetweenFrames");function xde(e,t){let r=e[0],n=e[e.length-1];function i(o){return typeof o.getProgress()=="number"?o.getProgress():Tde(o,r,n)}s(i,"getProgress");function a(o,u,l){ -return o.setProgress(u,l)}return s(a,"setProgress"),ch(e,0,e.length-1,t&&t.fastMode,i,a),e}s(xde,"calculateVisualProgress");function v2(e,t){let r={channels:4},n=Object.assign(e.getParsedImage(),r),i=Object.assign(t.getParsedImage(),r);return vde.compare(n,i).ssim}s(v2,"calculateFrameSimilarity");function Sde(e,t){let r=e[0],n=e[e.length-1],i=v2(r,n);function a(u){if(typeof u.getPerceptualProgress()=="number")return u.getPerceptualProgress();let l=v2(u,n);return Math.max(100*(l-i)/(1-i),0)}s(a,"getProgress");function o(u,l,c){return u.setPerceptualProgress(l,c)}return s(o,"setProgress"),ch(e,0,e.length-1,t&&t.fastMode,a,o),e}s(Sde,"calculatePerceptualProgress");function Cde(e,t){let r=typeof e[0].getProgress()=="number",n=typeof e[0].getPerceptualProgress()=="number",i=r?"getProgress":"getPerceptualProgress",a=t.startTs,o,u;for(let h=0;h<e.length&&!u;h++)e[h][i]()>0&&(u=e[h].getTimeStamp());for(let h=0;h<e.length&&!o;h++)e[h][i]()>=100&&(o=e[h].getTimeStamp());let l=e[0].getTimeStamp(), -c=e[0].getProgress(),p=e[0].getPerceptualProgress(),m=u-a,f=u-a;return e.forEach(function(h){if(h.getTimeStamp()>u){let y=h.getTimeStamp()-l;m+=y*(1-c),f+=y*(1-p)}l=h.getTimeStamp(),c=h.getProgress()/100,p=h.getPerceptualProgress()/100}),m=r?m:void 0,f=n?f:void 0,{firstPaintTs:u,visuallyCompleteTs:o,speedIndex:m,perceptualSpeedIndex:f}}s(Cde,"calculateSpeedIndexes");F7.exports={calculateFastModeAllowableChange:C7,calculateFrameSimilarity:v2,calculateVisualProgress:xde,calculatePerceptualProgress:Sde,calculateSpeedIndexes:Cde}});var R7=pe((SWe,_7)=>{"use strict";d();var Fde=E7(),w2=k7();function kde(e,t){let r=w2.calculateSpeedIndexes(e,t),n=Math.floor(t.endTs-t.startTs),i=Math.floor(r.firstPaintTs-t.startTs),a=Math.floor(r.visuallyCompleteTs-t.startTs);return{beginning:t.startTs,end:t.endTs,frames:e,first:i,complete:a,duration:n,speedIndex:r.speedIndex,perceptualSpeedIndex:r.perceptualSpeedIndex}}s(kde,"calculateValues");var No={All:"all",pSI:"perceptualSpeedIndex",SI:"speedIndex"};_7.exports=function(e,t){let r=t&&t.include||No.All;if(!Object.keys(No).some(n=>No[n]===r))throw new Error(`Unrecognized include option: ${r}`);return Fde.extractFramesFromTimeline(e,t).then(function(n){let i=n.frames;return(r===No.All||r===No.SI)&&w2.calculateVisualProgress(i,t),(r===No.All||r===No.pSI)&&w2.calculatePerceptualProgress(i,t),kde(i,n)})}});var I7,D2,Sa,op=g(()=>{"use strict";d();I7=yr(R7(),1);De();zt();Bt();D2=class{static{s(this,"Speedline")}static async compute_(t,r){return xe.request(t,r).then(n=>{let i=t.traceEvents.slice(),a=n.timestamps.timeOrigin;return(0,I7.default)(i,{timeOrigin:a,fastMode:!0,include:"speedIndex"})}).catch(n=>{throw/No screenshots found in trace/.test(n.message)?new z(z.errors.NO_SCREENSHOTS):n}).then(n=>{if(n.frames.length===0)throw new z(z.errors.NO_SPEEDLINE_FRAMES);if(n.speedIndex===0)throw new z(z.errors.SPEEDINDEX_OF_ZERO);return n})}},Sa=G(D2,null)});var E2,A7,N7=g(()=>{"use strict";d();De();Ti();E2=class extends At{static{s(this,"FirstContentfulPaintAllFrames")}static computeSimulatedMetric(){throw new Error("FCP All Frames not implemented in lantern")}static async computeObservedMetric(t){let{processedNavigation:r}=t;return{timing:r.timings.firstContentfulPaintAllFrames,timestamp:r.timestamps.firstContentfulPaintAllFrames}}},A7=G(E2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var T2,M7,L7=g(()=>{"use strict";d();De();Ti();zt();T2=class extends At{static{s(this,"LargestContentfulPaintAllFrames")}static async computeSimulatedMetric(){throw new Error("LCP All Frames not implemented in lantern")}static async computeObservedMetric(t){let{processedNavigation:r}=t;if(r.timings.largestContentfulPaintAllFrames===void 0)throw new z(z.errors.NO_LCP_ALL_FRAMES);return{timing:r.timings.largestContentfulPaintAllFrames,timestamp:r.timestamps.largestContentfulPaintAllFrames}}},M7=G(T2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var x2,dh,S2=g(()=>{"use strict";d();It();De();To();op();zn();x2=class extends Rt.SpeedIndex{static{s(this,"LanternSpeedIndex")}static async computeMetricWithGraphs(t,r,n){let i=await en(t,r);return Promise.resolve(this.compute(i,n)).catch(qn)}static async compute_(t,r){let n=await Sa.request(t.trace,r),i=await Zt.request(t,r);return this.computeMetricWithGraphs(t,r,{observedSpeedIndex:n.speedIndex,fcpResult:i})}},dh=G(x2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var C2,ph,F2=g(()=>{"use strict";d();De();Ti();S2();op();C2=class extends At{static{s(this,"SpeedIndex")}static computeSimulatedMetric(t,r){let n=At.getMetricComputationInput(t);return dh.request(n,r)}static async computeObservedMetric(t,r){let n=await Sa.request(t.trace,r),i=Math.round(n.speedIndex),a=(i+n.beginning)*1e3;return Promise.resolve({timing:i,timestamp:a})}},ph=G(C2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var k2,P7,O7=g(()=>{"use strict";d();It();De();To();zn();k2=class extends Rt.MaxPotentialFID{static{s(this,"LanternMaxPotentialFID")}static async computeMetricWithGraphs(t,r,n){let i=await en(t,r);return Promise.resolve(this.compute(i,n)).catch(qn)}static async compute_(t,r){let n=await Zt.request(t,r);return this.computeMetricWithGraphs(t,r,{fcpResult:n})}},P7=G(k2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var _2,mh,R2=g(()=>{"use strict";d();De();Ti();O7();ri();_2=class extends At{static{s(this,"MaxPotentialFID")}static computeSimulatedMetric(t,r){let n=At.getMetricComputationInput(t);return P7.request(n,r)}static computeObservedMetric(t){let{firstContentfulPaint:r}=t.processedNavigation.timings,n=tr.getMainThreadTopLevelEvents(t.processedTrace,r).filter(i=>i.duration>=1);return Promise.resolve({timing:Math.max(...n.map(i=>i.duration),16)})}},mh=G(_2,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var I2,fh,A2=g(()=>{"use strict";d();Bt();Ei();op();kd();N7();du();L7();Hs();Ps();F2();R2();Ws();De();QS();ah();I2=class e{static{s(this,"TimingSummary")}static async summarize(t,r,n,i,a,o){let u={trace:t,devtoolsLog:r,gatherContext:n,settings:i,URL:a},l=s((ae,ye)=>ae.request(ye,o).catch(se=>{}),"requestOrUndefined"),c=await xe.request(t,o),p=await l(pr,t),m=await Sa.request(t,o),f=await l(ca,u),h=await l(A7,u),y=await l(Jn,u),b=await l(M7,u),w=await l(Hn,u),E=await l(Un,t),T=await l(mh,u),S=await l(ph,u),C=await l(Wn,u),_=await l(pu,u),L=await l(ih,u),{cumulativeLayoutShift:M,cumulativeLayoutShiftMainFrame:H}=E||{},te={firstContentfulPaint:f?.timing,firstContentfulPaintTs:f?.timestamp,firstContentfulPaintAllFrames:h?.timing,firstContentfulPaintAllFramesTs:h?.timestamp,largestContentfulPaint:y?.timing,largestContentfulPaintTs:y?.timestamp,largestContentfulPaintAllFrames:b?.timing,largestContentfulPaintAllFramesTs:b?.timestamp,interactive:w?.timing,interactiveTs:w?.timestamp,speedIndex:S?. -timing,speedIndexTs:S?.timestamp,totalBlockingTime:C?.timing,maxPotentialFID:T?.timing,cumulativeLayoutShift:M,cumulativeLayoutShiftMainFrame:H,lcpLoadStart:_?.loadStart,lcpLoadEnd:_?.loadEnd,timeToFirstByte:L?.timing,timeToFirstByteTs:L?.timestamp,observedTimeOrigin:c.timings.timeOrigin,observedTimeOriginTs:c.timestamps.timeOrigin,observedNavigationStart:p?.timings.timeOrigin,observedNavigationStartTs:p?.timestamps.timeOrigin,observedFirstPaint:p?.timings.firstPaint,observedFirstPaintTs:p?.timestamps.firstPaint,observedFirstContentfulPaint:p?.timings.firstContentfulPaint,observedFirstContentfulPaintTs:p?.timestamps.firstContentfulPaint,observedFirstContentfulPaintAllFrames:p?.timings.firstContentfulPaintAllFrames,observedFirstContentfulPaintAllFramesTs:p?.timestamps.firstContentfulPaintAllFrames,observedLargestContentfulPaint:p?.timings.largestContentfulPaint,observedLargestContentfulPaintTs:p?.timestamps.largestContentfulPaint,observedLargestContentfulPaintAllFrames:p?.timings.largestContentfulPaintAllFrames, -observedLargestContentfulPaintAllFramesTs:p?.timestamps.largestContentfulPaintAllFrames,observedTraceEnd:c.timings.traceEnd,observedTraceEndTs:c.timestamps.traceEnd,observedLoad:p?.timings.load,observedLoadTs:p?.timestamps.load,observedDomContentLoaded:p?.timings.domContentLoaded,observedDomContentLoadedTs:p?.timestamps.domContentLoaded,observedCumulativeLayoutShift:M,observedCumulativeLayoutShiftMainFrame:H,observedFirstVisualChange:m.first,observedFirstVisualChangeTs:(m.first+m.beginning)*1e3,observedLastVisualChange:m.complete,observedLastVisualChangeTs:(m.complete+m.beginning)*1e3,observedSpeedIndex:m.speedIndex,observedSpeedIndexTs:(m.speedIndex+m.beginning)*1e3},$={lcpInvalidated:!!p?.lcpInvalidated};return{metrics:te,debugInfo:$}}static async compute_(t,r){return e.summarize(t.trace,t.devtoolsLog,t.gatherContext,t.settings,t.URL,r)}},fh=G(I2,["devtoolsLog","gatherContext","settings","trace","URL"])});var B7={};x(B7,{default:()=>Rde});var _de,N2,Rde,U7=g(()=>{"use strict";d();V();A2();_de=new Set(["cumulativeLayoutShift","cumulativeLayoutShiftMainFrame","observedCumulativeLayoutShift","observedCumulativeLayoutShiftMainFrame"]),N2=class extends v{static{s(this,"Metrics")}static get meta(){return{id:"metrics",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Metrics",description:"Collects all available metrics.",supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(t,r){let n=t.GatherContext,i=t.traces[v.DEFAULT_PASS],a=t.devtoolsLogs[v.DEFAULT_PASS],o=t.URL,u=await fh.request({trace:i,devtoolsLog:a,gatherContext:n,settings:r.settings,URL:o},r),l=u.metrics,c=u.debugInfo;for(let[m,f]of Object.entries(l)){let h=m;typeof f=="number"&&!_de.has(h)&&(l[h]=Math.round(f))}let p={type:"debugdata",items:[l,c]};return{score:1,numericValue:l.interactive||0,numericUnit:"millisecond",details:p}}},Rde=N2});var j7={};x(j7,{UIStrings:()=>P2,default:()=>Ide});var P2,M2,L2,Ide,q7=g(()=>{"use strict";d();V();R();kd();P2={description:"First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/)."},M2=D("core/audits/metrics/first-contentful-paint.js",P2),L2=class extends v{static{s(this,"FirstContentfulPaint")}static get meta(){return{id:"first-contentful-paint",title:M2(F.firstContentfulPaintMetric),description:M2(P2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:1800,median:3e3}},desktop:{scoring:{p10:934,median:1600}}}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings, -URL:t.URL},u=await ca.request(o,r),l=r.options[r.settings.formFactor];return{score:v.computeLogNormalScore(l.scoring,u.timing),scoringOptions:l.scoring,numericValue:u.timing,numericUnit:"millisecond",displayValue:M2(F.seconds,{timeInMs:u.timing})}}},Ide=L2});var H7={};x(H7,{UIStrings:()=>B2,default:()=>Ade});var B2,z7,O2,Ade,W7=g(()=>{"use strict";d();V();R();B2={description:"First Meaningful Paint measures when the primary content of a page is visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/)."},z7=D("core/audits/metrics/first-meaningful-paint.js",B2),O2=class extends v{static{s(this,"FirstMeaningfulPaint")}static get meta(){return{id:"first-meaningful-paint",title:z7(F.firstMeaningfulPaintMetric),description:z7(B2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(){return{score:null,notApplicable:!0}}},Ade=O2});var G7={};x(G7,{UIStrings:()=>q2,default:()=>z2});var q2,U2,j2,z2,H2=g(()=>{"use strict";d();V();S1();R();q2={description:"Interaction to Next Paint measures page responsiveness, how long it takes the page to visibly respond to user input. [Learn more about the Interaction to Next Paint metric](https://web.dev/articles/inp)."},U2=D("core/audits/metrics/interaction-to-next-paint.js",q2),j2=class extends v{static{s(this,"InteractionToNextPaint")}static get meta(){return{id:"interaction-to-next-paint",title:U2(F.interactionToNextPaint),description:U2(q2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:200,median:500}}static async audit(t,r){let{settings:n}=r;if(n.throttlingMethod==="simulate")return{score:null,notApplicable:!0};let a={trace:t.traces[v.DEFAULT_PASS],settings:n},o=await Os.request(a,r);if(o===null)return{score:null,notApplicable:!0};let u=o.args.data.duration;return{score:v. -computeLogNormalScore({p10:r.options.p10,median:r.options.median},u),numericValue:u,numericUnit:"millisecond",displayValue:U2(F.ms,{timeInMs:u})}}},z2=j2});var V7={};x(V7,{UIStrings:()=>V2,default:()=>Nde});var V2,W2,G2,Nde,$7=g(()=>{"use strict";d();V();R();Hs();V2={description:"Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/)."},W2=D("core/audits/metrics/interactive.js",V2),G2=class extends v{static{s(this,"InteractiveMetric")}static get meta(){return{id:"interactive",title:W2(F.interactiveMetric),description:W2(V2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:3785,median:7300}},desktop:{scoring:{p10:2468,median:4500}}}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings,URL:t.URL},l=(await Hn.request(o, -r)).timing,c=r.options[r.settings.formFactor];return{score:v.computeLogNormalScore(c.scoring,l),numericValue:l,numericUnit:"millisecond",displayValue:W2(F.seconds,{timeInMs:l})}}},Nde=G2});var Y7={};x(Y7,{UIStrings:()=>K2,default:()=>Mde});var K2,$2,Y2,Mde,K7=g(()=>{"use strict";d();V();R2();Bt();Ei();R();K2={description:"The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/)."},$2=D("core/audits/metrics/max-potential-fid.js",K2),Y2=class e extends v{static{s(this,"MaxPotentialFID")}static get meta(){return{id:"max-potential-fid",title:$2(F.maxPotentialFIDMetric),description:$2(K2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{p10:130,median:250}}static getLongAnimationFrameDetails(t,r){let{firstContentfulPaint:n,timeOrigin:i}=r.timestamps,a=t.mainThreadEvents.filter(m=>m.name==="LongAnimationFrame"&&m.ph==="b");if(a.length===0)return; -let o=-1/0,u,l=-1/0,c,p=[];for(let m of a){let f=m.args?.data?.duration,h=m.args?.data?.blockingDuration;f===void 0||h===void 0||(p.push({startTime:(m.ts-i)/1e3,duration:f,blockingDuration:h}),!(m.ts<n)&&(f>o&&(o=f,u=m),h>l&&(l=h,c=m)))}return{type:"debugdata",observedMaxDurationLoaf:u,observedMaxBlockingLoaf:c,observedLoafs:p}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings,URL:t.URL},u=await mh.request(o,r),l=await xe.request(n,r),c=await pr.request(n,r),p=e.getLongAnimationFrameDetails(l,c);return{score:v.computeLogNormalScore({p10:r.options.p10,median:r.options.median},u.timing),numericValue:u.timing,numericUnit:"millisecond",displayValue:$2(F.ms,{timeInMs:u.timing}),details:p}}},Mde=Y2});var J7={};x(J7,{UIStrings:()=>X2,default:()=>Lde});var X2,J2,Z2,Lde,Z7=g(()=>{"use strict";d();V();R();F2();X2={description:"Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/)."},J2=D("core/audits/metrics/speed-index.js",X2),Z2=class extends v{static{s(this,"SpeedIndex")}static get meta(){return{id:"speed-index",title:J2(F.speedIndexMetric),description:J2(X2.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:3387,median:5800}},desktop:{scoring:{p10:1311,median:2300}}}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings,URL:t.URL},u=await ph.request(o,r),l=r.options[r.settings.formFactor]; -return{score:v.computeLogNormalScore(l.scoring,u.timing),scoringOptions:l.scoring,numericValue:u.timing,numericUnit:"millisecond",displayValue:J2(F.seconds,{timeInMs:u.timing})}}},Lde=Z2});var X7={};x(X7,{UIStrings:()=>tC,default:()=>Pde});var tC,Q2,eC,Pde,Q7=g(()=>{"use strict";d();V();Ws();R();tC={description:"Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/)."},Q2=D("core/audits/metrics/total-blocking-time.js",tC),eC=class extends v{static{s(this,"TotalBlockingTime")}static get meta(){return{id:"total-blocking-time",title:Q2(F.totalBlockingTimeMetric),description:Q2(tC.description),scoreDisplayMode:v.SCORING_MODES.NUMERIC,requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:200,median:600}},desktop:{scoring:{p10:150,median:350}}}}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=t.devtoolsLogs[v.DEFAULT_PASS],a=t.GatherContext,o={trace:n,devtoolsLog:i,gatherContext:a,settings:r.settings, -URL:t.URL};if(a.gatherMode==="timespan"&&r.settings.throttlingMethod==="simulate")return{score:1,notApplicable:!0};let u=await Wn.request(o,r),l=r.options[r.settings.formFactor];return{score:v.computeLogNormalScore(l.scoring,u.timing),scoringOptions:l.scoring,numericValue:u.timing,numericUnit:"millisecond",displayValue:Q2(F.ms,{timeInMs:u.timing})}}},Pde=eC});var e9={};x(e9,{default:()=>Ode});var rC,Ode,t9=g(()=>{"use strict";d();V();ut();at();dr();Ci();rC=class extends v{static{s(this,"NetworkRequests")}static get meta(){return{id:"network-requests",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Network Requests",description:"Lists the network requests that were made during page load.",requiredArtifacts:["devtoolsLogs","URL","GatherContext"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await ie.request(n,r),a=await fr.request({URL:t.URL,devtoolsLog:n},r),o=i.reduce((h,y)=>Math.min(h,y.rendererStartTime),1/0),u;t.GatherContext.gatherMode==="navigation"&&(u=(await lt.request({devtoolsLog:n,URL:t.URL},r)).frameId);let l=s(h=>h<o||!Number.isFinite(h)?void 0:h-o,"normalizeTime"),c=i.map(h=>{let y=h.lrStatistics?.endTimeDeltaMs,b=h.lrStatistics?.TCPMs,w=h.lrStatistics?.requestMs,E=h.lrStatistics?.responseMs,T=h.isLinkPreload||void 0,S=u&&h.frameId===u||void 0,C=a.entityByUrl.get(h.url);return{url:J.elideDataURI(h.url),sessionTargetType:h. -sessionTargetType,protocol:h.protocol,rendererStartTime:l(h.rendererStartTime),networkRequestTime:l(h.networkRequestTime),networkEndTime:l(h.networkEndTime),finished:h.finished,transferSize:h.transferSize,resourceSize:h.resourceSize,statusCode:h.statusCode,mimeType:h.mimeType,resourceType:h.resourceType,priority:h.priority,isLinkPreload:T,experimentalFromMainFrame:S,entity:C?.name,lrEndTimeDeltaMs:y,lrTCPMs:b,lrRequestMs:w,lrResponseMs:E}}),p=[{key:"url",valueType:"url",label:"URL"},{key:"protocol",valueType:"text",label:"Protocol"},{key:"networkRequestTime",valueType:"ms",granularity:1,label:"Network Request Time"},{key:"networkEndTime",valueType:"ms",granularity:1,label:"Network End Time"},{key:"transferSize",valueType:"bytes",displayUnit:"kb",granularity:1,label:"Transfer Size"},{key:"resourceSize",valueType:"bytes",displayUnit:"kb",granularity:1,label:"Resource Size"},{key:"statusCode",valueType:"text",label:"Status Code"},{key:"mimeType",valueType:"text",label:"MIME Type"},{key:"r\ -esourceType",valueType:"text",label:"Resource Type"}],m=v.makeTableDetails(p,c),f=Number.isFinite(o)?o*1e3:void 0;return m.debugData={type:"debugdata",networkStartTimeTs:f},{score:1,details:m}}},Ode=rC});var r9={};x(r9,{UIStrings:()=>hh,default:()=>Bde});var hh,sp,nC,Bde,n9=g(()=>{"use strict";d();V();R();at();ho();hh={title:"Network Round Trip Times",description:"Network round trip times (RTT) have a large impact on performance. If the RTT to an origin is high, it's an indication that servers closer to the user could improve performance. [Learn more about the Round Trip Time](https://hpbn.co/primer-on-latency-and-bandwidth/)."},sp=D("core/audits/network-rtt.js",hh),nC=class extends v{static{s(this,"NetworkRTT")}static get meta(){return{id:"network-rtt",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:sp(hh.title),description:sp(hh.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS];if(!(await ie.request(n,r)).length)return{score:1,notApplicable:!0};let a=await hn.request(n,r),o=0,u=a.rtt,l=[];for(let[m,f]of a.additionalRttByOrigin.entries()){if(!m.startsWith("http"))continue;let h=f+u;l.push({origin:m,rtt:h}),o=Number.isFinite( -h)?Math.max(h,o):o}l.sort((m,f)=>f.rtt-m.rtt);let c=[{key:"origin",valueType:"text",label:sp(F.columnURL)},{key:"rtt",valueType:"ms",granularity:1,label:sp(F.columnTimeSpent)}],p=v.makeTableDetails(c,l,{sortedBy:["rtt"]});return{score:1,numericValue:o,numericUnit:"millisecond",displayValue:sp(F.ms,{timeInMs:o}),details:p}}},Bde=nC});var i9={};x(i9,{UIStrings:()=>gh,default:()=>Ude});var gh,up,iC,Ude,a9=g(()=>{"use strict";d();V();R();at();ho();gh={title:"Server Backend Latencies",description:"Server latencies can impact web performance. If the server latency of an origin is high, it's an indication the server is overloaded or has poor backend performance. [Learn more about server response time](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."},up=D("core/audits/network-server-latency.js",gh),iC=class extends v{static{s(this,"NetworkServerLatency")}static get meta(){return{id:"network-server-latency",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:up(gh.title),description:up(gh.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS];if(!(await ie.request(n,r)).length)return{score:1,notApplicable:!0};let a=await hn.request(n,r),o=0,u=[];for(let[p,m]of a.serverResponseTimeByOrigin.entries())p.startsWith("http")&&(o=Math.max(m,o),u. -push({origin:p,serverResponseTime:m}));u.sort((p,m)=>m.serverResponseTime-p.serverResponseTime);let l=[{key:"origin",valueType:"text",label:up(F.columnURL)},{key:"serverResponseTime",valueType:"ms",granularity:1,label:up(F.columnTimeSpent)}],c=v.makeTableDetails(l,u,{sortedBy:["serverResponseTime"]});return{score:Math.max(1-o/500,0),numericValue:o,numericUnit:"millisecond",displayValue:up(F.ms,{timeInMs:o}),details:c}}},Ude=iC});var o9={};x(o9,{UIStrings:()=>an,default:()=>zde});function qde(e,t){return jde.filter(r=>e&r.flag).map(r=>r.text===an.unsupportedCSSProperty?Mo(r.text,{propertyCount:t.length,properties:t.join(", ")}):Mo(r.text))}var an,Mo,jde,aC,zde,s9=g(()=>{"use strict";d();V();R();an={title:"Avoid non-composited animations",description:"Animations which are not composited can be janky and increase CLS. [Learn how to avoid non-composited animations](https://developer.chrome.com/docs/lighthouse/performance/non-composited-animations/)",displayValue:`{itemCount, plural, + }`},fc=D("core/audits/long-tasks.js",cm);s(jpe,"insertUrl");s(HS,"roundTenths");WS=class e extends b{static{s(this,"LongTasks")}static get meta(){return{id:"long-tasks",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:fc(cm.title),description:fc(cm.description),requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"],guidanceLevel:1}}static getTimingBreakdown(t,n,r=new Map){let a=e.getTiming(t,n),o=0;if(a.duration>0)for(let u of t.children){let{duration:l}=e.getTimingBreakdown(u,n,r);o+=l}let i=a.duration-o,c=r.get(t.group.id)||0;return r.set(t.group.id,c+i),{startTime:a.startTime,duration:a.duration,timeByTaskGroup:r}}static makeDebugData(t,n,r){let a=[],o=[];for(let i of t){let c=js(i,n),{startTime:u,duration:l,timeByTaskGroup:m}=e.getTimingBreakdown(i,r),p=[...m].map(([f,h])=>[f,HS(h)]).sort((f,h)=>f[0].localeCompare(h[0]));o.push({urlIndex:jpe(a,c),startTime:HS(u),duration:HS(l),...Object.fromEntries(p)})}return{type:"debugdata",urls:a,tasks:o}}static getTiming(t,n){let r=t; +n&&(r=n.get(t.event)||Bpe);let{duration:a,startTime:o}=r;return{duration:a,startTime:o}}static async audit(t,n){let r=n.settings||{},a=t.URL,o=t.traces[b.DEFAULT_PASS],i=await ir.request(o,n),c=t.devtoolsLogs[e.DEFAULT_PASS],u=await oe.request(c,n),l=b.makeMetricComputationDataInput(t,n),m=await Zr.request(l,n),p;if(r.throttlingMethod==="simulate"){p=new Map;let E={devtoolsLog:c,settings:n.settings},S=await Sr.request({trace:o,devtoolsLog:c,URL:a},n),R=await(await nn.request(E,n)).simulate(S,{label:"long-tasks-diagnostic"});for(let[O,N]of R.nodeTimings.entries())O.type==="cpu"&&p.set(O.event,N)}let f=Rd(u),h=i.map(E=>{let{duration:S}=e.getTiming(E,p);return{task:E,duration:S}}).filter(({task:E,duration:S})=>S>=50&&!E.unbounded&&!E.parent).sort((E,S)=>S.duration-E.duration).map(({task:E})=>E),y=h.map(E=>{let S=e.getTiming(E,p);return{url:js(E,f),duration:S.duration,startTime:S.startTime}}).slice(0,Upe),v=[{key:"url",valueType:"url",label:fc(F.columnURL)},{key:"startTime",valueType:"ms", +granularity:1,label:fc(F.columnStartTime)},{key:"duration",valueType:"ms",granularity:1,label:fc(F.columnDuration)}],w=b.makeTableDetails(v,y,{sortedBy:["duration"],skipSumming:["startTime"]});w.debugData=e.makeDebugData(h,f,p);let x;return y.length>0&&(x=fc(cm.displayValue,{itemCount:y.length})),{score:y.length===0?1:0,notApplicable:y.length===0,details:w,displayValue:x,metricSavings:{TBT:m.timing}}}},zpe=WS});var $U={};T($U,{default:()=>qpe});var GS,qpe,YU=g(()=>{"use strict";d();V();ki();GS=class extends b{static{s(this,"MainThreadTasks")}static get meta(){return{id:"main-thread-tasks",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Tasks",description:"Lists the toplevel main thread tasks that executed during page load.",requiredArtifacts:["traces"]}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],o=(await ir.request(r,n)).filter(u=>u.duration>5&&!u.parent).map(u=>({duration:u.duration,startTime:u.startTime})),i=[{key:"startTime",valueType:"ms",granularity:1,label:"Start Time"},{key:"duration",valueType:"ms",granularity:1,label:"End Time"}];return{score:1,details:b.makeTableDetails(i,o)}}},qpe=GS});var KU={};T(KU,{UIStrings:()=>gc,default:()=>Hpe});var gc,hc,VS,Hpe,JU=g(()=>{"use strict";d();Oe();V();Fd();A();ki();Gs();nr();zn();gc={title:"Minimizes main-thread work",failureTitle:"Minimize main-thread work",description:"Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to minimize main-thread work](https://developer.chrome.com/docs/lighthouse/performance/mainthread-work-breakdown/)",columnCategory:"Category"},hc=D("core/audits/mainthread-work-breakdown.js",gc),VS=class e extends b{static{s(this,"MainThreadWorkBreakdown")}static get meta(){return{id:"mainthread-work-breakdown",title:hc(gc.title),failureTitle:hc(gc.failureTitle),description:hc(gc.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,guidanceLevel:1,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"]}}static get defaultOptions(){return{p10:2017,median:4e3}}static getExecutionTimingsByGroup(t){let n=new Map; +for(let r of t){let a=n.get(r.group.id)||0;n.set(r.group.id,a+r.selfTime)}return n}static async audit(t,n){let r=n.settings||{},a=t.traces[e.DEFAULT_PASS],o=0;try{let v=b.makeMetricComputationDataInput(t,n);o=(await Zr.request(v,n)).timing}catch(v){Dt.captureException(v,{tags:{audit:this.meta.id},level:"error"}),M.error(this.meta.id,v.message)}let i=await ir.request(a,n),c=r.throttlingMethod==="simulate"?r.throttling.cpuSlowdownMultiplier:1,u=e.getExecutionTimingsByGroup(i),l=0,m={},p=Array.from(u).map(([v,w])=>{let x=w*c;l+=x;let E=m[v]||0;return m[v]=E+x,{group:v,groupLabel:Fn[v].label,duration:x}}),f=[{key:"groupLabel",valueType:"text",label:hc(gc.columnCategory)},{key:"duration",valueType:"ms",granularity:1,label:hc(F.columnTimeSpent)}];p.sort((v,w)=>m[w.group]-m[v.group]);let h=e.makeTableDetails(f,p,{sortedBy:["duration"]}),y=b.computeLogNormalScore({p10:n.options.p10,median:n.options.median},l);return{score:y,scoreDisplayMode:y>=Le.PASS_THRESHOLD?b.SCORING_MODES.INFORMATIVE:void 0, +numericValue:l,numericUnit:"millisecond",displayValue:hc(F.seconds,{timeInMs:l}),details:h,metricSavings:{TBT:o}}}},Hpe=VS});var XU=de((F$e,mh)=>{d();var Pi=(da(),TH(XF));if(Pi&&Pi.default){mh.exports=Pi.default;for(let e in Pi)mh.exports[e]=Pi[e]}else Pi&&(mh.exports=Pi)});var ej=de((I$e,ph)=>{d();var QU=QU||function(e){return Buffer.from(e).toString("base64")};function Wpe(e){var t=this,n=Math.round,r=Math.floor,a=new Array(64),o=new Array(64),i=new Array(64),c=new Array(64),u,l,m,p,f=new Array(65535),h=new Array(65535),y=new Array(64),v=new Array(64),w=[],x=0,E=7,S=new Array(64),k=new Array(64),R=new Array(64),O=new Array(256),N=new Array(2048),H,ne=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],$=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],ie=[0,1,2,3,4,5,6,7,8,9,10,11],ye=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],ce=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146, +147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],vt=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],me=[0,1,2,3,4,5,6,7,8,9,10,11],ve=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],mt=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function ot(j){for(var le=[16,11,10,16,24,40,51,61,12, +12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],he=0;he<64;he++){var pe=r((le[he]*j+50)/100);pe<1?pe=1:pe>255&&(pe=255),a[ne[he]]=pe}for(var Ae=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],Me=0;Me<64;Me++){var nt=r((Ae[Me]*j+50)/100);nt<1?nt=1:nt>255&&(nt=255),o[ne[Me]]=nt}for(var rt=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],It=0,bt=0;bt<8;bt++)for(var W=0;W<8;W++)i[It]=1/(a[ne[It]]*rt[bt]*rt[W]*8),c[It]=1/(o[ne[It]]*rt[bt]*rt[W]*8),It++}s(ot,"initQuantTables");function Be(j,le){for(var he=0,pe=0,Ae=new Array,Me=1;Me<=16;Me++){for(var nt=1;nt<=j[Me];nt++)Ae[le[pe]]=[],Ae[le[pe]][0]=he,Ae[le[pe]][1]=Me,pe++,he++;he*=2}return Ae}s(Be,"computeHuffmanTbl");function Ot(){u=Be($,ie),l=Be( +vt,me),m=Be(ye,ce),p=Be(ve,mt)}s(Ot,"initHuffmanTbl");function Je(){for(var j=1,le=2,he=1;he<=15;he++){for(var pe=j;pe<le;pe++)h[32767+pe]=he,f[32767+pe]=[],f[32767+pe][1]=he,f[32767+pe][0]=pe;for(var Ae=-(le-1);Ae<=-j;Ae++)h[32767+Ae]=he,f[32767+Ae]=[],f[32767+Ae][1]=he,f[32767+Ae][0]=le-1+Ae;j<<=1,le<<=1}}s(Je,"initCategoryNumber");function qe(){for(var j=0;j<256;j++)N[j]=19595*j,N[j+256>>0]=38470*j,N[j+512>>0]=7471*j+32768,N[j+768>>0]=-11059*j,N[j+1024>>0]=-21709*j,N[j+1280>>0]=32768*j+8421375,N[j+1536>>0]=-27439*j,N[j+1792>>0]=-5329*j}s(qe,"initRGBYUVTable");function Fe(j){for(var le=j[0],he=j[1]-1;he>=0;)le&1<<he&&(x|=1<<E),he--,E--,E<0&&(x==255?(L(255),L(0)):L(x),E=7,x=0)}s(Fe,"writeBits");function L(j){w.push(j)}s(L,"writeByte");function ue(j){L(j>>8&255),L(j&255)}s(ue,"writeWord");function it(j,le){var he,pe,Ae,Me,nt,rt,It,bt,W=0,se,Ee=8,St=64;for(se=0;se<Ee;++se){he=j[W],pe=j[W+1],Ae=j[W+2],Me=j[W+3],nt=j[W+4],rt=j[W+5],It=j[W+6],bt=j[W+7];var Ne=he+bt,Ye=he-bt,gt=pe+It,be=pe- +It,lt=Ae+rt,cn=Ae-rt,xt=Me+nt,$n=Me-nt,Mr=Ne+xt,Vo=Ne-xt,$i=gt+lt,Yi=gt-lt;j[W]=Mr+$i,j[W+4]=Mr-$i;var Uc=(Yi+Vo)*.707106781;j[W+2]=Vo+Uc,j[W+6]=Vo-Uc,Mr=$n+cn,$i=cn+be,Yi=be+Ye;var jc=(Mr-Yi)*.382683433,Em=.5411961*Mr+jc,zc=1.306562965*Yi+jc,qc=$i*.707106781,Hc=Ye+qc,Wc=Ye-qc;j[W+5]=Wc+Em,j[W+3]=Wc-Em,j[W+1]=Hc+zc,j[W+7]=Hc-zc,W+=8}for(W=0,se=0;se<Ee;++se){he=j[W],pe=j[W+8],Ae=j[W+16],Me=j[W+24],nt=j[W+32],rt=j[W+40],It=j[W+48],bt=j[W+56];var tF=he+bt,Gh=he-bt,nF=pe+It,rF=pe-It,aF=Ae+rt,oF=Ae-rt,iF=Me+nt,vH=Me-nt,Gc=tF+iF,Vh=tF-iF,Tm=nF+aF,Sm=nF-aF;j[W]=Gc+Tm,j[W+32]=Gc-Tm;var sF=(Sm+Vh)*.707106781;j[W+16]=Vh+sF,j[W+48]=Vh-sF,Gc=vH+oF,Tm=oF+rF,Sm=rF+Gh;var cF=(Gc-Sm)*.382683433,uF=.5411961*Gc+cF,lF=1.306562965*Sm+cF,dF=Tm*.707106781,mF=Gh+dF,pF=Gh-dF;j[W+40]=pF+uF,j[W+24]=pF-uF,j[W+8]=mF+lF,j[W+56]=mF-lF,W++}var Cm;for(se=0;se<St;++se)Cm=j[se]*le[se],y[se]=Cm>0?Cm+.5|0:Cm-.5|0;return y}s(it,"fDCTQuant");function _e(){ue(65504),ue(16),L(74),L(70),L(73),L(70),L(0),L(1),L(1),L(0),ue(1),ue( +1),L(0),L(0)}s(_e,"writeAPP0");function Re(j){if(j){ue(65505),j[0]===69&&j[1]===120&&j[2]===105&&j[3]===102?ue(j.length+2):(ue(j.length+5+2),L(69),L(120),L(105),L(102),L(0));for(var le=0;le<j.length;le++)L(j[le])}}s(Re,"writeAPP1");function He(j,le){ue(65472),ue(17),L(8),ue(le),ue(j),L(3),L(1),L(17),L(0),L(2),L(17),L(1),L(3),L(17),L(1)}s(He,"writeSOF0");function Ie(){ue(65499),ue(132),L(0);for(var j=0;j<64;j++)L(a[j]);L(1);for(var le=0;le<64;le++)L(o[le])}s(Ie,"writeDQT");function te(){ue(65476),ue(418),L(0);for(var j=0;j<16;j++)L($[j+1]);for(var le=0;le<=11;le++)L(ie[le]);L(16);for(var he=0;he<16;he++)L(ye[he+1]);for(var pe=0;pe<=161;pe++)L(ce[pe]);L(1);for(var Ae=0;Ae<16;Ae++)L(vt[Ae+1]);for(var Me=0;Me<=11;Me++)L(me[Me]);L(17);for(var nt=0;nt<16;nt++)L(ve[nt+1]);for(var rt=0;rt<=161;rt++)L(mt[rt])}s(te,"writeDHT");function Y(j){typeof j>"u"||j.constructor!==Array||j.forEach(le=>{if(typeof le=="string"){ue(65534);var he=le.length;ue(he+2);var pe;for(pe=0;pe<he;pe++)L(le.charCodeAt(pe))}})} +s(Y,"writeCOM");function ht(){ue(65498),ue(12),L(3),L(1),L(0),L(2),L(17),L(3),L(17),L(0),L(63),L(0)}s(ht,"writeSOS");function we(j,le,he,pe,Ae){for(var Me=Ae[0],nt=Ae[240],rt,It=16,bt=63,W=64,se=it(j,le),Ee=0;Ee<W;++Ee)v[ne[Ee]]=se[Ee];var St=v[0]-he;he=v[0],St==0?Fe(pe[0]):(rt=32767+St,Fe(pe[h[rt]]),Fe(f[rt]));for(var Ne=63;Ne>0&&v[Ne]==0;Ne--);if(Ne==0)return Fe(Me),he;for(var Ye=1,gt;Ye<=Ne;){for(var be=Ye;v[Ye]==0&&Ye<=Ne;++Ye);var lt=Ye-be;if(lt>=It){gt=lt>>4;for(var cn=1;cn<=gt;++cn)Fe(nt);lt=lt&15}rt=32767+v[Ye],Fe(Ae[(lt<<4)+h[rt]]),Fe(f[rt]),Ye++}return Ne!=bt&&Fe(Me),he}s(we,"processDU");function Ue(){for(var j=String.fromCharCode,le=0;le<256;le++)O[le]=j(le)}s(Ue,"initCharLookupTable"),this.encode=function(j,le){var he=new Date().getTime();le&&Vn(le),w=new Array,x=0,E=7,ue(65496),_e(),Y(j.comments),Re(j.exifBuffer),Ie(),He(j.width,j.height),te(),ht();var pe=0,Ae=0,Me=0;x=0,E=7,this.encode.displayName="_encode_";for(var nt=j.data,rt=j.width,It=j.height,bt=rt*4,W=rt*3,se,Ee=0, +St,Ne,Ye,gt,be,lt,cn,xt;Ee<It;){for(se=0;se<bt;){for(gt=bt*Ee+se,be=gt,lt=-1,cn=0,xt=0;xt<64;xt++)cn=xt>>3,lt=(xt&7)*4,be=gt+cn*bt+lt,Ee+cn>=It&&(be-=bt*(Ee+1+cn-It)),se+lt>=bt&&(be-=se+lt-bt+4),St=nt[be++],Ne=nt[be++],Ye=nt[be++],S[xt]=(N[St]+N[Ne+256>>0]+N[Ye+512>>0]>>16)-128,k[xt]=(N[St+768>>0]+N[Ne+1024>>0]+N[Ye+1280>>0]>>16)-128,R[xt]=(N[St+1280>>0]+N[Ne+1536>>0]+N[Ye+1792>>0]>>16)-128;pe=we(S,i,pe,u,m),Ae=we(k,c,Ae,l,p),Me=we(R,c,Me,l,p),se+=32}Ee+=8}if(E>=0){var $n=[];$n[1]=E+1,$n[0]=(1<<E+1)-1,Fe($n)}if(ue(65497),typeof ph>"u")return new Uint8Array(w);return Buffer.from(w);var Mr,Vo};function Vn(j){if(j<=0&&(j=1),j>100&&(j=100),H!=j){var le=0;j<50?le=Math.floor(5e3/j):le=Math.floor(200-j*2),ot(le),H=j}}s(Vn,"setQuality");function gr(){var j=new Date().getTime();e||(e=50),Ue(),Ot(),Je(),qe(),Vn(e);var le=new Date().getTime()-j}s(gr,"init"),gr()}s(Wpe,"JPEGEncoder");typeof ph<"u"?ph.exports=ZU:typeof window<"u"&&(window["jpeg-js"]=window["jpeg-js"]||{},window["jpeg-js"].encode=ZU); +function ZU(e,t){typeof t>"u"&&(t=50);var n=new Wpe(t),r=n.encode(e,t);return{data:r,width:e.width,height:e.height}}s(ZU,"encode")});var nj=de((M$e,YS)=>{d();var $S=s(function(){"use strict";var t=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),n=4017,r=799,a=3406,o=2276,i=1567,c=3784,u=5793,l=2896;function m(){}s(m,"constructor");function p(E,S){for(var k=0,R=[],O,N,H=16;H>0&&!E[H-1];)H--;R.push({children:[],index:0});var ne=R[0],$;for(O=0;O<H;O++){for(N=0;N<E[O];N++){for(ne=R.pop(),ne.children[ne.index]=S[k];ne.index>0;){if(R.length===0)throw new Error("Could not recreate Huffman Table");ne=R.pop()}for(ne.index++,R.push(ne);R.length<=O;)R.push($={children:[],index:0}),ne.children[ne.index]=$.children,ne=$;k++}O+1<H&&(R.push($={children:[],index:0}),ne.children[ne.index]=$.children,ne=$)}return R[0].children}s(p,"buildHuffmanTable");function f(E,S,k,R,O,N,H,ne,$,ie){var ye=k.precision,ce=k.samplesPerLine,vt=k.scanLines,me=k.mcusPerLine,ve=k.progressive,mt=k.maxH,ot=k. +maxV,Be=S,Ot=0,Je=0;function qe(){if(Je>0)return Je--,Ot>>Je&1;if(Ot=E[S++],Ot==255){var W=E[S++];if(W)throw new Error("unexpected marker: "+(Ot<<8|W).toString(16))}return Je=7,Ot>>>7}s(qe,"readBit");function Fe(W){for(var se=W,Ee;(Ee=qe())!==null;){if(se=se[Ee],typeof se=="number")return se;if(typeof se!="object")throw new Error("invalid huffman sequence")}return null}s(Fe,"decodeHuffman");function L(W){for(var se=0;W>0;){var Ee=qe();if(Ee===null)return;se=se<<1|Ee,W--}return se}s(L,"receive");function ue(W){var se=L(W);return se>=1<<W-1?se:se+(-1<<W)+1}s(ue,"receiveAndExtend");function it(W,se){var Ee=Fe(W.huffmanTableDC),St=Ee===0?0:ue(Ee);se[0]=W.pred+=St;for(var Ne=1;Ne<64;){var Ye=Fe(W.huffmanTableAC),gt=Ye&15,be=Ye>>4;if(gt===0){if(be<15)break;Ne+=16;continue}Ne+=be;var lt=t[Ne];se[lt]=ue(gt),Ne++}}s(it,"decodeBaseline");function _e(W,se){var Ee=Fe(W.huffmanTableDC),St=Ee===0?0:ue(Ee)<<$;se[0]=W.pred+=St}s(_e,"decodeDCFirst");function Re(W,se){se[0]|=qe()<<$}s(Re,"decodeDCSucces\ +sive");var He=0;function Ie(W,se){if(He>0){He--;return}for(var Ee=N,St=H;Ee<=St;){var Ne=Fe(W.huffmanTableAC),Ye=Ne&15,gt=Ne>>4;if(Ye===0){if(gt<15){He=L(gt)+(1<<gt)-1;break}Ee+=16;continue}Ee+=gt;var be=t[Ee];se[be]=ue(Ye)*(1<<$),Ee++}}s(Ie,"decodeACFirst");var te=0,Y;function ht(W,se){for(var Ee=N,St=H,Ne=0;Ee<=St;){var Ye=t[Ee],gt=se[Ye]<0?-1:1;switch(te){case 0:var be=Fe(W.huffmanTableAC),lt=be&15,Ne=be>>4;if(lt===0)Ne<15?(He=L(Ne)+(1<<Ne),te=4):(Ne=16,te=1);else{if(lt!==1)throw new Error("invalid ACn encoding");Y=ue(lt),te=Ne?2:3}continue;case 1:case 2:se[Ye]?se[Ye]+=(qe()<<$)*gt:(Ne--,Ne===0&&(te=te==2?3:0));break;case 3:se[Ye]?se[Ye]+=(qe()<<$)*gt:(se[Ye]=Y<<$,te=0);break;case 4:se[Ye]&&(se[Ye]+=(qe()<<$)*gt);break}Ee++}te===4&&(He--,He===0&&(te=0))}s(ht,"decodeACSuccessive");function we(W,se,Ee,St,Ne){var Ye=Ee/me|0,gt=Ee%me,be=Ye*W.v+St,lt=gt*W.h+Ne;W.blocks[be]===void 0&&ie.tolerantDecoding||se(W,W.blocks[be][lt])}s(we,"decodeMcu");function Ue(W,se,Ee){var St=Ee/W.blocksPerLine| +0,Ne=Ee%W.blocksPerLine;W.blocks[St]===void 0&&ie.tolerantDecoding||se(W,W.blocks[St][Ne])}s(Ue,"decodeBlock");var Vn=R.length,gr,j,le,he,pe,Ae;ve?N===0?Ae=ne===0?_e:Re:Ae=ne===0?Ie:ht:Ae=it;var Me=0,nt,rt;Vn==1?rt=R[0].blocksPerLine*R[0].blocksPerColumn:rt=me*k.mcusPerColumn,O||(O=rt);for(var It,bt;Me<rt;){for(j=0;j<Vn;j++)R[j].pred=0;if(He=0,Vn==1)for(gr=R[0],pe=0;pe<O;pe++)Ue(gr,Ae,Me),Me++;else for(pe=0;pe<O;pe++){for(j=0;j<Vn;j++)for(gr=R[j],It=gr.h,bt=gr.v,le=0;le<bt;le++)for(he=0;he<It;he++)we(gr,Ae,Me,le,he);if(Me++,Me===rt)break}if(Me===rt)do{if(E[S]===255&&E[S+1]!==0)break;S+=1}while(S<E.length-2);if(Je=0,nt=E[S]<<8|E[S+1],nt<65280)throw new Error("marker was not found");if(nt>=65488&&nt<=65495)S+=2;else break}return S-Be}s(f,"decodeScan");function h(E,S){var k=[],R=S.blocksPerLine,O=S.blocksPerColumn,N=R<<3,H=new Int32Array(64),ne=new Uint8Array(64);function $(Be,Ot,Je){var qe=S.quantizationTable,Fe,L,ue,it,_e,Re,He,Ie,te,Y=Je,ht;for(ht=0;ht<64;ht++)Y[ht]=Be[ht]*qe[ht];for(ht= +0;ht<8;++ht){var we=8*ht;if(Y[1+we]==0&&Y[2+we]==0&&Y[3+we]==0&&Y[4+we]==0&&Y[5+we]==0&&Y[6+we]==0&&Y[7+we]==0){te=u*Y[0+we]+512>>10,Y[0+we]=te,Y[1+we]=te,Y[2+we]=te,Y[3+we]=te,Y[4+we]=te,Y[5+we]=te,Y[6+we]=te,Y[7+we]=te;continue}Fe=u*Y[0+we]+128>>8,L=u*Y[4+we]+128>>8,ue=Y[2+we],it=Y[6+we],_e=l*(Y[1+we]-Y[7+we])+128>>8,Ie=l*(Y[1+we]+Y[7+we])+128>>8,Re=Y[3+we]<<4,He=Y[5+we]<<4,te=Fe-L+1>>1,Fe=Fe+L+1>>1,L=te,te=ue*c+it*i+128>>8,ue=ue*i-it*c+128>>8,it=te,te=_e-He+1>>1,_e=_e+He+1>>1,He=te,te=Ie+Re+1>>1,Re=Ie-Re+1>>1,Ie=te,te=Fe-it+1>>1,Fe=Fe+it+1>>1,it=te,te=L-ue+1>>1,L=L+ue+1>>1,ue=te,te=_e*o+Ie*a+2048>>12,_e=_e*a-Ie*o+2048>>12,Ie=te,te=Re*r+He*n+2048>>12,Re=Re*n-He*r+2048>>12,He=te,Y[0+we]=Fe+Ie,Y[7+we]=Fe-Ie,Y[1+we]=L+He,Y[6+we]=L-He,Y[2+we]=ue+Re,Y[5+we]=ue-Re,Y[3+we]=it+_e,Y[4+we]=it-_e}for(ht=0;ht<8;++ht){var Ue=ht;if(Y[8+Ue]==0&&Y[16+Ue]==0&&Y[24+Ue]==0&&Y[32+Ue]==0&&Y[40+Ue]==0&&Y[48+Ue]==0&&Y[56+Ue]==0){te=u*Je[ht+0]+8192>>14,Y[0+Ue]=te,Y[8+Ue]=te,Y[16+Ue]=te,Y[24+Ue]=te,Y[32+Ue]= +te,Y[40+Ue]=te,Y[48+Ue]=te,Y[56+Ue]=te;continue}Fe=u*Y[0+Ue]+2048>>12,L=u*Y[32+Ue]+2048>>12,ue=Y[16+Ue],it=Y[48+Ue],_e=l*(Y[8+Ue]-Y[56+Ue])+2048>>12,Ie=l*(Y[8+Ue]+Y[56+Ue])+2048>>12,Re=Y[24+Ue],He=Y[40+Ue],te=Fe-L+1>>1,Fe=Fe+L+1>>1,L=te,te=ue*c+it*i+2048>>12,ue=ue*i-it*c+2048>>12,it=te,te=_e-He+1>>1,_e=_e+He+1>>1,He=te,te=Ie+Re+1>>1,Re=Ie-Re+1>>1,Ie=te,te=Fe-it+1>>1,Fe=Fe+it+1>>1,it=te,te=L-ue+1>>1,L=L+ue+1>>1,ue=te,te=_e*o+Ie*a+2048>>12,_e=_e*a-Ie*o+2048>>12,Ie=te,te=Re*r+He*n+2048>>12,Re=Re*n-He*r+2048>>12,He=te,Y[0+Ue]=Fe+Ie,Y[56+Ue]=Fe-Ie,Y[8+Ue]=L+He,Y[48+Ue]=L-He,Y[16+Ue]=ue+Re,Y[40+Ue]=ue-Re,Y[24+Ue]=it+_e,Y[32+Ue]=it-_e}for(ht=0;ht<64;++ht){var Vn=128+(Y[ht]+8>>4);Ot[ht]=Vn<0?0:Vn>255?255:Vn}}s($,"quantizeAndInverse"),x(N*O*8);for(var ie,ye,ce=0;ce<O;ce++){var vt=ce<<3;for(ie=0;ie<8;ie++)k.push(new Uint8Array(N));for(var me=0;me<R;me++){$(S.blocks[ce][me],ne,H);var ve=0,mt=me<<3;for(ye=0;ye<8;ye++){var ot=k[vt+ye];for(ie=0;ie<8;ie++)ot[mt+ie]=ne[ve++]}}}return k}s(h,"buildCompo\ +nentData");function y(E){return E<0?0:E>255?255:E}s(y,"clampTo8bit"),m.prototype={load:s(function(S){var k=new XMLHttpRequest;k.open("GET",S,!0),k.responseType="arraybuffer",k.onload=function(){var R=new Uint8Array(k.response||k.mozResponseArrayBuffer);this.parse(R),this.onload&&this.onload()}.bind(this),k.send(null)},"load"),parse:s(function(S){var k=this.opts.maxResolutionInMP*1e3*1e3,R=0,O=S.length;function N(){var be=S[R]<<8|S[R+1];return R+=2,be}s(N,"readUint16");function H(){var be=N(),lt=S.subarray(R,R+be-2);return R+=lt.length,lt}s(H,"readDataBlock");function ne(be){var lt=1,cn=1,xt,$n;for($n in be.components)be.components.hasOwnProperty($n)&&(xt=be.components[$n],lt<xt.h&&(lt=xt.h),cn<xt.v&&(cn=xt.v));var Mr=Math.ceil(be.samplesPerLine/8/lt),Vo=Math.ceil(be.scanLines/8/cn);for($n in be.components)if(be.components.hasOwnProperty($n)){xt=be.components[$n];var $i=Math.ceil(Math.ceil(be.samplesPerLine/8)*xt.h/lt),Yi=Math.ceil(Math.ceil(be.scanLines/8)*xt.v/cn),Uc=Mr*xt.h,jc=Vo*xt. +v,Em=jc*Uc,zc=[];x(Em*256);for(var qc=0;qc<jc;qc++){for(var Hc=[],Wc=0;Wc<Uc;Wc++)Hc.push(new Int32Array(64));zc.push(Hc)}xt.blocksPerLine=$i,xt.blocksPerColumn=Yi,xt.blocks=zc}be.maxH=lt,be.maxV=cn,be.mcusPerLine=Mr,be.mcusPerColumn=Vo}s(ne,"prepareComponents");var $=null,ie=null,ye=null,ce,vt,me=[],ve=[],mt=[],ot=[],Be=N(),Ot=-1;if(this.comments=[],Be!=65496)throw new Error("SOI not found");for(Be=N();Be!=65497;){var Je,qe,Fe;switch(Be){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var L=H();if(Be===65534){var ue=String.fromCharCode.apply(null,L);this.comments.push(ue)}Be===65504&&L[0]===74&&L[1]===70&&L[2]===73&&L[3]===70&&L[4]===0&&($={version:{major:L[5],minor:L[6]},densityUnits:L[7],xDensity:L[8]<<8|L[9],yDensity:L[10]<<8|L[11],thumbWidth:L[12],thumbHeight:L[13],thumbData:L.subarray(14,14+3*L[12]*L[13])}),Be===65505&&L[0]=== +69&&L[1]===120&&L[2]===105&&L[3]===102&&L[4]===0&&(this.exifBuffer=L.subarray(5,L.length)),Be===65518&&L[0]===65&&L[1]===100&&L[2]===111&&L[3]===98&&L[4]===101&&L[5]===0&&(ie={version:L[6],flags0:L[7]<<8|L[8],flags1:L[9]<<8|L[10],transformCode:L[11]});break;case 65499:for(var it=N(),_e=it+R-2;R<_e;){var Re=S[R++];x(256);var He=new Int32Array(64);if(Re>>4)if(Re>>4===1)for(qe=0;qe<64;qe++){var Ie=t[qe];He[Ie]=N()}else throw new Error("DQT: invalid table spec");else for(qe=0;qe<64;qe++){var Ie=t[qe];He[Ie]=S[R++]}me[Re&15]=He}break;case 65472:case 65473:case 65474:N(),ce={},ce.extended=Be===65473,ce.progressive=Be===65474,ce.precision=S[R++],ce.scanLines=N(),ce.samplesPerLine=N(),ce.components={},ce.componentsOrder=[];var te=ce.scanLines*ce.samplesPerLine;if(te>k){var Y=Math.ceil((te-k)/1e6);throw new Error(`maxResolutionInMP limit exceeded by ${Y}MP`)}var ht=S[R++],we,Ue=0,Vn=0;for(Je=0;Je<ht;Je++){we=S[R];var gr=S[R+1]>>4,j=S[R+1]&15,le=S[R+2];if(gr<=0||j<=0)throw new Error("Invalid sam\ +pling factor, expected values above 0");ce.componentsOrder.push(we),ce.components[we]={h:gr,v:j,quantizationIdx:le},R+=3}ne(ce),ve.push(ce);break;case 65476:var he=N();for(Je=2;Je<he;){var pe=S[R++],Ae=new Uint8Array(16),Me=0;for(qe=0;qe<16;qe++,R++)Me+=Ae[qe]=S[R];x(16+Me);var nt=new Uint8Array(Me);for(qe=0;qe<Me;qe++,R++)nt[qe]=S[R];Je+=17+Me,(pe>>4?mt:ot)[pe&15]=p(Ae,nt)}break;case 65501:N(),vt=N();break;case 65500:N(),N();break;case 65498:var rt=N(),It=S[R++],bt=[],W;for(Je=0;Je<It;Je++){W=ce.components[S[R++]];var se=S[R++];W.huffmanTableDC=ot[se>>4],W.huffmanTableAC=mt[se&15],bt.push(W)}var Ee=S[R++],St=S[R++],Ne=S[R++],Ye=f(S,R,ce,bt,vt,Ee,St,Ne>>4,Ne&15,this.opts);R+=Ye;break;case 65535:S[R]!==255&&R--;break;default:if(S[R-3]==255&&S[R-2]>=192&&S[R-2]<=254){R-=3;break}else if(Be===224||Be==225){if(Ot!==-1)throw new Error(`first unknown JPEG marker at offset ${Ot.toString(16)}, second unknown JPEG marker ${Be.toString(16)} at offset ${(R-1).toString(16)}`);Ot=R-1;let be=N();if(S[R+ +be-2]===255){R+=be-2;break}}throw new Error("unknown JPEG marker "+Be.toString(16))}Be=N()}if(ve.length!=1)throw new Error("only single frame JPEGs supported");for(var Je=0;Je<ve.length;Je++){var gt=ve[Je].components;for(var qe in gt)gt[qe].quantizationTable=me[gt[qe].quantizationIdx],delete gt[qe].quantizationIdx}this.width=ce.samplesPerLine,this.height=ce.scanLines,this.jfif=$,this.adobe=ie,this.components=[];for(var Je=0;Je<ce.componentsOrder.length;Je++){var W=ce.components[ce.componentsOrder[Je]];this.components.push({lines:h(ce,W),scaleX:W.h/ce.maxH,scaleY:W.v/ce.maxV})}},"parse"),getData:s(function(S,k){var R=this.width/S,O=this.height/k,N,H,ne,$,ie,ye,ce,vt,me,ve,mt=0,ot,Be,Ot,Je,qe,Fe,L,ue,it,_e,Re,He=S*k*this.components.length;x(He);var Ie=new Uint8Array(He);switch(this.components.length){case 1:for(N=this.components[0],ve=0;ve<k;ve++)for(ie=N.lines[0|ve*N.scaleY*O],me=0;me<S;me++)ot=ie[0|me*N.scaleX*R],Ie[mt++]=ot;break;case 2:for(N=this.components[0],H=this.components[1],ve= +0;ve<k;ve++)for(ie=N.lines[0|ve*N.scaleY*O],ye=H.lines[0|ve*H.scaleY*O],me=0;me<S;me++)ot=ie[0|me*N.scaleX*R],Ie[mt++]=ot,ot=ye[0|me*H.scaleX*R],Ie[mt++]=ot;break;case 3:for(Re=!0,this.adobe&&this.adobe.transformCode?Re=!0:typeof this.opts.colorTransform<"u"&&(Re=!!this.opts.colorTransform),N=this.components[0],H=this.components[1],ne=this.components[2],ve=0;ve<k;ve++)for(ie=N.lines[0|ve*N.scaleY*O],ye=H.lines[0|ve*H.scaleY*O],ce=ne.lines[0|ve*ne.scaleY*O],me=0;me<S;me++)Re?(ot=ie[0|me*N.scaleX*R],Be=ye[0|me*H.scaleX*R],Ot=ce[0|me*ne.scaleX*R],ue=y(ot+1.402*(Ot-128)),it=y(ot-.3441363*(Be-128)-.71413636*(Ot-128)),_e=y(ot+1.772*(Be-128))):(ue=ie[0|me*N.scaleX*R],it=ye[0|me*H.scaleX*R],_e=ce[0|me*ne.scaleX*R]),Ie[mt++]=ue,Ie[mt++]=it,Ie[mt++]=_e;break;case 4:if(!this.adobe)throw new Error("Unsupported color mode (4 components)");for(Re=!1,this.adobe&&this.adobe.transformCode?Re=!0:typeof this.opts.colorTransform<"u"&&(Re=!!this.opts.colorTransform),N=this.components[0],H=this.components[1], +ne=this.components[2],$=this.components[3],ve=0;ve<k;ve++)for(ie=N.lines[0|ve*N.scaleY*O],ye=H.lines[0|ve*H.scaleY*O],ce=ne.lines[0|ve*ne.scaleY*O],vt=$.lines[0|ve*$.scaleY*O],me=0;me<S;me++)Re?(ot=ie[0|me*N.scaleX*R],Be=ye[0|me*H.scaleX*R],Ot=ce[0|me*ne.scaleX*R],Je=vt[0|me*$.scaleX*R],qe=255-y(ot+1.402*(Ot-128)),Fe=255-y(ot-.3441363*(Be-128)-.71413636*(Ot-128)),L=255-y(ot+1.772*(Be-128))):(qe=ie[0|me*N.scaleX*R],Fe=ye[0|me*H.scaleX*R],L=ce[0|me*ne.scaleX*R],Je=vt[0|me*$.scaleX*R]),Ie[mt++]=255-qe,Ie[mt++]=255-Fe,Ie[mt++]=255-L,Ie[mt++]=255-Je;break;default:throw new Error("Unsupported color mode")}return Ie},"getData"),copyToImageData:s(function(S,k){var R=S.width,O=S.height,N=S.data,H=this.getData(R,O),ne=0,$=0,ie,ye,ce,vt,me,ve,mt,ot,Be;switch(this.components.length){case 1:for(ye=0;ye<O;ye++)for(ie=0;ie<R;ie++)ce=H[ne++],N[$++]=ce,N[$++]=ce,N[$++]=ce,k&&(N[$++]=255);break;case 3:for(ye=0;ye<O;ye++)for(ie=0;ie<R;ie++)mt=H[ne++],ot=H[ne++],Be=H[ne++],N[$++]=mt,N[$++]=ot,N[$++]=Be,k&& +(N[$++]=255);break;case 4:for(ye=0;ye<O;ye++)for(ie=0;ie<R;ie++)me=H[ne++],ve=H[ne++],ce=H[ne++],vt=H[ne++],mt=255-y(me*(1-vt/255)+vt),ot=255-y(ve*(1-vt/255)+vt),Be=255-y(ce*(1-vt/255)+vt),N[$++]=mt,N[$++]=ot,N[$++]=Be,k&&(N[$++]=255);break;default:throw new Error("Unsupported color mode")}},"copyToImageData")};var v=0,w=0;function x(E=0){var S=v+E;if(S>w){var k=Math.ceil((S-w)/1024/1024);throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${k}MB`)}v=S}return s(x,"requestMemoryAllocation"),m.resetMaxMemoryUsage=function(E){v=0,w=E},m.getBytesAllocated=function(){return v},m.requestMemoryAllocation=x,m},"jpegImage")();typeof YS<"u"?YS.exports=tj:typeof window<"u"&&(window["jpeg-js"]=window["jpeg-js"]||{},window["jpeg-js"].decode=tj);function tj(e,t={}){var n={colorTransform:void 0,useTArray:!1,formatAsRGBA:!0,tolerantDecoding:!0,maxResolutionInMP:100,maxMemoryUsageInMB:512},r={...n,...t},a=new Uint8Array(e),o=new $S;o.opts=r,$S.resetMaxMemoryUsage(r.maxMemoryUsageInMB*1024*1024), +o.parse(a);var i=r.formatAsRGBA?4:3,c=o.width*o.height*i;try{$S.requestMemoryAllocation(c);var u={width:o.width,height:o.height,exifBuffer:o.exifBuffer,data:r.useTArray?new Uint8Array(c):Buffer.alloc(c)};o.comments.length>0&&(u.comments=o.comments)}catch(l){throw l instanceof RangeError?new Error("Could not allocate enough memory for the image. Required: "+c):l instanceof ReferenceError&&l.message==="Buffer is not defined"?new Error("Buffer is not globally defined in this environment. Consider setting useTArray to true"):l}return o.copyToImageData(u,r.formatAsRGBA),u}s(tj,"decode")});var KS=de((L$e,rj)=>{d();var Gpe=ej(),Vpe=nj();rj.exports={encode:Gpe,decode:Vpe}});var oj=de((B$e,aj)=>{"use strict";d();var $pe=XU(),JS=KS();function fh(e,t,n,r,a){return a[(e+t*r)*4+n]}s(fh,"getPixel");function Ype(e,t,n){return fh(e,t,0,n.width,n.data)>=249&&fh(e,t,1,n.width,n.data)>=249&&fh(e,t,2,n.width,n.data)>=249}s(Ype,"isWhitePixel");function Kpe(e){let t=s(function(){let o=[];for(let i=0;i<256;i++)o[i]=0;return o},"createHistogramArray"),n=e.width,r=e.height,a=[t(),t(),t()];for(let o=0;o<r;o++)for(let i=0;i<n;i++)if(!Ype(i,o,e))for(let c=0;c<a.length;c++){let u=fh(i,o,c,n,e.data);a[c][u]++}return a}s(Kpe,"convertPixelsToHistogram");function Jpe(e){let t=JS.decode(e[0].getImage()),n=t.width,r=t.height,a=Buffer.alloc(n*r*4),o=0;for(;o<a.length;)a[o++]=255,a[o++]=255,a[o++]=255,a[o++]=255;var i=JS.encode({data:a,width:n,height:r});return i.data}s(Jpe,"synthesizeWhiteFrame");var Xpe="disabled-by-default-devtools.screenshot";function Zpe(e,t){t=t||{};let n;e=typeof e=="string"?$pe.readFileSync(e,"utf-8"):e;try{n=typeof e=="string"?JSON.parse(e):e}catch(p){throw new Error( +"Speedline: Invalid JSON"+p.message)}let r=n.traceEvents||n,a=Number.MAX_VALUE,o=-Number.MAX_VALUE;r.forEach(p=>{p.ts!==0&&(a=Math.min(a,p.ts),o=Math.max(o,p.ts))}),a=(t.timeOrigin||a)/1e3,o/=1e3;let i=null,c=r.filter(p=>p.cat.includes(Xpe)&&p.ts>=a*1e3);c.sort((p,f)=>p.ts-f.ts);let u=c.map(function(p){let f=p.args&&p.args.snapshot,h=p.ts/1e3;if(f===i)return null;i=f;let y=Buffer.from(f,"base64");return XS(y,h)}).filter(Boolean);if(u.length===0)return Promise.reject(new Error("No screenshots found in trace"));let l=XS(Jpe(u),a);u.unshift(l);let m={startTs:a,endTs:o,frames:u};return Promise.resolve(m)}s(Zpe,"extractFramesFromTimeline");function XS(e,t){let n=null,r=null,a=null,o=null,i=null,c=null;return{getHistogram:function(){if(n)return n;let u=this.getParsedImage();return n=Kpe(u),n},getTimeStamp:function(){return t},setProgress:function(u,l){r=u,a=!!l},setPerceptualProgress:function(u,l){o=u,i=!!l},getImage:function(){return e},getParsedImage:function(){return c||(c=JS.decode(e)),c}, +getProgress:function(){return r},isProgressInterpolated:function(){return a},getPerceptualProgress:function(){return o},isPerceptualProgressInterpolated:function(){return i}}}s(XS,"frame");aj.exports={extractFramesFromTimeline:Zpe,create:XS}});var sj=de((z$e,ij)=>{d();var ZS;(function(e){"use strict";(function(a){a[a.Grey=1]="Grey",a[a.GreyAlpha=2]="GreyAlpha",a[a.RGB=3]="RGB",a[a.RGBAlpha=4]="RGBAlpha"})(e.Channels||(e.Channels={}));var t=e.Channels;function n(a,o,i,c,u,l,m){if(i===void 0&&(i=8),c===void 0&&(c=.01),u===void 0&&(u=.03),l===void 0&&(l=!0),m===void 0&&(m=8),a.width!==o.width||a.height!==o.height)throw new Error("Images have different sizes!");var p=(1<<m)-1,f=Math.pow(c*p,2),h=Math.pow(u*p,2),y=0,v=0,w=0;function x(E,S,k,R){var O,N,H;O=N=H=0;for(var ne=0;ne<E.length;ne++)N+=Math.pow(E[ne]-k,2),H+=Math.pow(S[ne]-R,2),O+=(E[ne]-k)*(S[ne]-R);var $=E.length-1;N/=$,H/=$,O/=$;var ie=(2*k*R+f)*(2*O+h),ye=(Math.pow(k,2)+Math.pow(R,2)+f)*(N+H+h);v+=ie/ye,w+=(2*O+h)/(N+H+h),y++}return s(x,"iteration"),r._iterate(a,o,i,l,x),{ssim:v/y,mcs:w/y}}s(n,"compare"),e.compare=n;var r;(function(a){function o(u,l,m,p,f){for(var h=u.width,y=u.height,v=0;v<y;v+=m)for(var w=0;w<h;w+=m){var x=Math.min(m,h-w),E=Math.min(m,y-v),S=i(u,w,v, +x,E,p),k=i(l,w,v,x,E,p),R=c(S),O=c(k);f(S,k,R,O)}}s(o,"_iterate"),a._iterate=o;function i(u,l,m,p,f,h){for(var y=u.data,v=new Float32Array(new ArrayBuffer(p*f*4)),w=0,x=m+f,E=m;E<x;E++){var S=E*u.width,k=(S+l)*u.channels,R=(S+l+p)*u.channels;switch(u.channels){case 1:for(;k<R;)v[w++]=y[k++];break;case 2:for(;k<R;)v[w++]=y[k++]*(y[k++]/255);break;case 3:if(h)for(;k<R;)v[w++]=y[k++]*.212655+y[k++]*.715158+y[k++]*.072187;else for(;k<R;)v[w++]=y[k++]+y[k++]+y[k++];break;case 4:if(h)for(;k<R;)v[w++]=(y[k++]*.212655+y[k++]*.715158+y[k++]*.072187)*(y[k++]/255);else for(;k<R;)v[w++]=(y[k++]+y[k++]+y[k++])*(y[k++]/255);break}}return v}s(i,"_lumaValuesForWindow");function c(u){for(var l=0,m=0;m<u.length;m++)l+=u[m];return l/u.length}s(c,"_averageLuma")})(r||(r={}))})(ZS||(ZS={}));ij.exports=ZS});var dj=de((W$e,lj)=>{"use strict";d();var Qpe=sj(),efe=5,tfe=3,nfe=-1,eC=nfe,cj=efe-eC,rfe=Math.log((tfe-eC)/cj);function uj(e){let t=e/1e3;return cj*Math.exp(rfe*t)+eC}s(uj,"calculateFastModeAllowableChange");function afe(e,t,n){let r=0,a=0,o=e.getHistogram(),i=t.getHistogram(),c=n.getHistogram();for(let l=0;l<3;l++)for(let m=0;m<256;m++){let p=o[l][m],f=i[l][m],h=c[l][m],y=Math.abs(p-f),v=Math.abs(h-f);a+=Math.min(y,v),r+=v}let u;return a===0&&r===0?u=100:u=Math.floor(a/r*100),u}s(afe,"calculateFrameProgress");function hh(e,t,n,r,a,o){if(!r){e.forEach(p=>o(p,a(p),!1));return}let i=e[t],c=e[n],u=c.getTimeStamp()-i.getTimeStamp(),l=a(i),m=a(c);if(o(i,l,!1),o(c,m,!1),Math.abs(l-m)<uj(u))for(let p=t+1;p<n;p++)o(e[p],l,!0);else if(n-t>1){let p=Math.floor((t+n)/2);hh(e,t,p,r,a,o),hh(e,p,n,r,a,o)}}s(hh,"calculateProgressBetweenFrames");function ofe(e,t){let n=e[0],r=e[e.length-1];function a(i){return typeof i.getProgress()=="number"?i.getProgress():afe(i,n,r)}s(a,"getProgress");function o(i,c,u){ +return i.setProgress(c,u)}return s(o,"setProgress"),hh(e,0,e.length-1,t&&t.fastMode,a,o),e}s(ofe,"calculateVisualProgress");function QS(e,t){let n={channels:4},r=Object.assign(e.getParsedImage(),n),a=Object.assign(t.getParsedImage(),n);return Qpe.compare(r,a).ssim}s(QS,"calculateFrameSimilarity");function ife(e,t){let n=e[0],r=e[e.length-1],a=QS(n,r);function o(c){if(typeof c.getPerceptualProgress()=="number")return c.getPerceptualProgress();let u=QS(c,r);return Math.max(100*(u-a)/(1-a),0)}s(o,"getProgress");function i(c,u,l){return c.setPerceptualProgress(u,l)}return s(i,"setProgress"),hh(e,0,e.length-1,t&&t.fastMode,o,i),e}s(ife,"calculatePerceptualProgress");function sfe(e,t){let n=typeof e[0].getProgress()=="number",r=typeof e[0].getPerceptualProgress()=="number",a=n?"getProgress":"getPerceptualProgress",o=t.startTs,i,c;for(let h=0;h<e.length&&!c;h++)e[h][a]()>0&&(c=e[h].getTimeStamp());for(let h=0;h<e.length&&!i;h++)e[h][a]()>=100&&(i=e[h].getTimeStamp());let u=e[0].getTimeStamp(), +l=e[0].getProgress(),m=e[0].getPerceptualProgress(),p=c-o,f=c-o;return e.forEach(function(h){if(h.getTimeStamp()>c){let y=h.getTimeStamp()-u;p+=y*(1-l),f+=y*(1-m)}u=h.getTimeStamp(),l=h.getProgress()/100,m=h.getPerceptualProgress()/100}),p=n?p:void 0,f=r?f:void 0,{firstPaintTs:c,visuallyCompleteTs:i,speedIndex:p,perceptualSpeedIndex:f}}s(sfe,"calculateSpeedIndexes");lj.exports={calculateFastModeAllowableChange:uj,calculateFrameSimilarity:QS,calculateVisualProgress:ofe,calculatePerceptualProgress:ife,calculateSpeedIndexes:sfe}});var pj=de(($$e,mj)=>{"use strict";d();var cfe=oj(),tC=dj();function ufe(e,t){let n=tC.calculateSpeedIndexes(e,t),r=Math.floor(t.endTs-t.startTs),a=Math.floor(n.firstPaintTs-t.startTs),o=Math.floor(n.visuallyCompleteTs-t.startTs);return{beginning:t.startTs,end:t.endTs,frames:e,first:a,complete:o,duration:r,speedIndex:n.speedIndex,perceptualSpeedIndex:n.perceptualSpeedIndex}}s(ufe,"calculateValues");var Bi={All:"all",pSI:"perceptualSpeedIndex",SI:"speedIndex"};mj.exports=function(e,t){let n=t&&t.include||Bi.All;if(!Object.keys(Bi).some(r=>Bi[r]===n))throw new Error(`Unrecognized include option: ${n}`);return cfe.extractFramesFromTimeline(e,t).then(function(r){let a=r.frames;return(n===Bi.All||n===Bi.SI)&&tC.calculateVisualProgress(a,t),(n===Bi.All||n===Bi.pSI)&&tC.calculatePerceptualProgress(a,t),ufe(a,r)})}});var fj,nC,Po,um=g(()=>{"use strict";d();fj=mn(pj(),1);xe();Wt();Ut();nC=class{static{s(this,"Speedline")}static async compute_(t,n){return ke.request(t,n).then(r=>{let a=t.traceEvents.slice(),o=r.timestamps.timeOrigin;return(0,fj.default)(a,{timeOrigin:o,fastMode:!0,include:"speedIndex"})}).catch(r=>{throw/No screenshots found in trace/.test(r.message)?new q(q.errors.NO_SCREENSHOTS):r}).then(r=>{if(r.frames.length===0)throw new q(q.errors.NO_SPEEDLINE_FRAMES);if(r.speedIndex===0)throw new q(q.errors.SPEEDINDEX_OF_ZERO);return r})}},Po=G(nC,null)});var rC,hj,gj=g(()=>{"use strict";d();xe();Aa();rC=class extends Nt{static{s(this,"FirstContentfulPaintAllFrames")}static computeSimulatedMetric(){throw new Error("FCP All Frames not implemented in lantern")}static async computeObservedMetric(t){let{processedNavigation:n}=t;return{timing:n.timings.firstContentfulPaintAllFrames,timestamp:n.timestamps.firstContentfulPaintAllFrames}}},hj=G(rC,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var aC,yj,vj=g(()=>{"use strict";d();xe();Aa();Wt();aC=class extends Nt{static{s(this,"LargestContentfulPaintAllFrames")}static async computeSimulatedMetric(){throw new Error("LCP All Frames not implemented in lantern")}static async computeObservedMetric(t){let{processedNavigation:n}=t;if(n.timings.largestContentfulPaintAllFrames===void 0)throw new q(q.errors.NO_LCP_ALL_FRAMES);return{timing:n.timings.largestContentfulPaintAllFrames,timestamp:n.timestamps.largestContentfulPaintAllFrames}}},yj=G(aC,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var oC,gh,iC=g(()=>{"use strict";d();Mt();xe();Fi();um();Jr();oC=class extends _t.SpeedIndex{static{s(this,"LanternSpeedIndex")}static async computeMetricWithGraphs(t,n,r){let a=await sr(t,n);return Promise.resolve(this.compute(a,r)).catch(Kr)}static async compute_(t,n){let r=await Po.request(t.trace,n),a=await an.request(t,n);return this.computeMetricWithGraphs(t,n,{observedSpeedIndex:r.speedIndex,fcpResult:a})}},gh=G(oC,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var sC,yh,cC=g(()=>{"use strict";d();xe();Aa();iC();um();sC=class extends Nt{static{s(this,"SpeedIndex")}static computeSimulatedMetric(t,n){let r=Nt.getMetricComputationInput(t);return gh.request(r,n)}static async computeObservedMetric(t,n){let r=await Po.request(t.trace,n),a=Math.round(r.speedIndex),o=(a+r.beginning)*1e3;return Promise.resolve({timing:a,timestamp:o})}},yh=G(sC,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var uC,bj,wj=g(()=>{"use strict";d();Mt();xe();Fi();Jr();uC=class extends _t.MaxPotentialFID{static{s(this,"LanternMaxPotentialFID")}static async computeMetricWithGraphs(t,n,r){let a=await sr(t,n);return Promise.resolve(this.compute(a,r)).catch(Kr)}static async compute_(t,n){let r=await an.request(t,n);return this.computeMetricWithGraphs(t,n,{fcpResult:r})}},bj=G(uC,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var lC,vh,dC=g(()=>{"use strict";d();xe();Aa();wj();la();lC=class extends Nt{static{s(this,"MaxPotentialFID")}static computeSimulatedMetric(t,n){let r=Nt.getMetricComputationInput(t);return bj.request(r,n)}static computeObservedMetric(t){let{firstContentfulPaint:n}=t.processedNavigation.timings,r=un.getMainThreadTopLevelEvents(t.processedTrace,n).filter(a=>a.duration>=1);return Promise.resolve({timing:Math.max(...r.map(a=>a.duration),16)})}},vh=G(lC,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])});var mC,bh,pC=g(()=>{"use strict";d();Ut();Ia();um();Ad();gj();mc();vj();Ws();Ps();cC();dC();Gs();xe();NS();lh();mC=class e{static{s(this,"TimingSummary")}static async summarize(t,n,r,a,o,i){let c={trace:t,devtoolsLog:n,gatherContext:r,settings:a,URL:o},u=s((ie,ye)=>ie.request(ye,i).catch(ce=>{}),"requestOrUndefined"),l=await ke.request(t,i),m=await u(bn,t),p=await Po.request(t,i),f=await u(xo,c),h=await u(hj,c),y=await u(aa,c),v=await u(yj,c),w=await u(Xr,c),x=await u($r,t),E=await u(vh,c),S=await u(yh,c),k=await u(Zr,c),R=await u(pc,c),O=await u(uh,c),{cumulativeLayoutShift:N,cumulativeLayoutShiftMainFrame:H}=x||{},ne={firstContentfulPaint:f?.timing,firstContentfulPaintTs:f?.timestamp,firstContentfulPaintAllFrames:h?.timing,firstContentfulPaintAllFramesTs:h?.timestamp,largestContentfulPaint:y?.timing,largestContentfulPaintTs:y?.timestamp,largestContentfulPaintAllFrames:v?.timing,largestContentfulPaintAllFramesTs:v?.timestamp,interactive:w?.timing,interactiveTs:w?.timestamp,speedIndex:S?. +timing,speedIndexTs:S?.timestamp,totalBlockingTime:k?.timing,maxPotentialFID:E?.timing,cumulativeLayoutShift:N,cumulativeLayoutShiftMainFrame:H,lcpLoadStart:R?.loadStart,lcpLoadEnd:R?.loadEnd,timeToFirstByte:O?.timing,timeToFirstByteTs:O?.timestamp,observedTimeOrigin:l.timings.timeOrigin,observedTimeOriginTs:l.timestamps.timeOrigin,observedNavigationStart:m?.timings.timeOrigin,observedNavigationStartTs:m?.timestamps.timeOrigin,observedFirstPaint:m?.timings.firstPaint,observedFirstPaintTs:m?.timestamps.firstPaint,observedFirstContentfulPaint:m?.timings.firstContentfulPaint,observedFirstContentfulPaintTs:m?.timestamps.firstContentfulPaint,observedFirstContentfulPaintAllFrames:m?.timings.firstContentfulPaintAllFrames,observedFirstContentfulPaintAllFramesTs:m?.timestamps.firstContentfulPaintAllFrames,observedLargestContentfulPaint:m?.timings.largestContentfulPaint,observedLargestContentfulPaintTs:m?.timestamps.largestContentfulPaint,observedLargestContentfulPaintAllFrames:m?.timings.largestContentfulPaintAllFrames, +observedLargestContentfulPaintAllFramesTs:m?.timestamps.largestContentfulPaintAllFrames,observedTraceEnd:l.timings.traceEnd,observedTraceEndTs:l.timestamps.traceEnd,observedLoad:m?.timings.load,observedLoadTs:m?.timestamps.load,observedDomContentLoaded:m?.timings.domContentLoaded,observedDomContentLoadedTs:m?.timestamps.domContentLoaded,observedCumulativeLayoutShift:N,observedCumulativeLayoutShiftMainFrame:H,observedFirstVisualChange:p.first,observedFirstVisualChangeTs:(p.first+p.beginning)*1e3,observedLastVisualChange:p.complete,observedLastVisualChangeTs:(p.complete+p.beginning)*1e3,observedSpeedIndex:p.speedIndex,observedSpeedIndexTs:(p.speedIndex+p.beginning)*1e3},$={lcpInvalidated:!!m?.lcpInvalidated};return{metrics:ne,debugInfo:$}}static async compute_(t,n){return e.summarize(t.trace,t.devtoolsLog,t.gatherContext,t.settings,t.URL,n)}},bh=G(mC,["devtoolsLog","gatherContext","settings","trace","URL"])});var Dj={};T(Dj,{default:()=>dfe});var lfe,fC,dfe,xj=g(()=>{"use strict";d();V();pC();lfe=new Set(["cumulativeLayoutShift","cumulativeLayoutShiftMainFrame","observedCumulativeLayoutShift","observedCumulativeLayoutShiftMainFrame"]),fC=class extends b{static{s(this,"Metrics")}static get meta(){return{id:"metrics",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Metrics",description:"Collects all available metrics.",supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(t,n){let r=t.GatherContext,a=t.traces[b.DEFAULT_PASS],o=t.devtoolsLogs[b.DEFAULT_PASS],i=t.URL,c=await bh.request({trace:a,devtoolsLog:o,gatherContext:r,settings:n.settings,URL:i},n),u=c.metrics,l=c.debugInfo;for(let[p,f]of Object.entries(u)){let h=p;typeof f=="number"&&!lfe.has(h)&&(u[h]=Math.round(f))}let m={type:"debugdata",items:[u,l]};return{score:1,numericValue:u.interactive||0,numericUnit:"millisecond",details:m}}},dfe=fC});var Ej={};T(Ej,{UIStrings:()=>yC,default:()=>mfe});var yC,hC,gC,mfe,Tj=g(()=>{"use strict";d();V();A();Ad();yC={description:"First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/)."},hC=D("core/audits/metrics/first-contentful-paint.js",yC),gC=class extends b{static{s(this,"FirstContentfulPaint")}static get meta(){return{id:"first-contentful-paint",title:hC(F.firstContentfulPaintMetric),description:hC(yC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:1800,median:3e3}},desktop:{scoring:{p10:934,median:1600}}}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings, +URL:t.URL},c=await xo.request(i,n),u=n.options[n.settings.formFactor];return{score:b.computeLogNormalScore(u.scoring,c.timing),scoringOptions:u.scoring,numericValue:c.timing,numericUnit:"millisecond",displayValue:hC(F.seconds,{timeInMs:c.timing})}}},mfe=gC});var Cj={};T(Cj,{UIStrings:()=>bC,default:()=>pfe});var bC,Sj,vC,pfe,kj=g(()=>{"use strict";d();V();A();bC={description:"First Meaningful Paint measures when the primary content of a page is visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/)."},Sj=D("core/audits/metrics/first-meaningful-paint.js",bC),vC=class extends b{static{s(this,"FirstMeaningfulPaint")}static get meta(){return{id:"first-meaningful-paint",title:Sj(F.firstMeaningfulPaintMetric),description:Sj(bC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(){return{score:null,notApplicable:!0}}},pfe=vC});var Fj={};T(Fj,{UIStrings:()=>xC,default:()=>EC});var xC,wC,DC,EC,TC=g(()=>{"use strict";d();V();I1();A();xC={description:"Interaction to Next Paint measures page responsiveness, how long it takes the page to visibly respond to user input. [Learn more about the Interaction to Next Paint metric](https://web.dev/articles/inp)."},wC=D("core/audits/metrics/interaction-to-next-paint.js",xC),DC=class extends b{static{s(this,"InteractionToNextPaint")}static get meta(){return{id:"interaction-to-next-paint",title:wC(F.interactionToNextPaint),description:wC(xC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:200,median:500}}static async audit(t,n){let{settings:r}=n;if(r.throttlingMethod==="simulate")return{score:null,notApplicable:!0};let o={trace:t.traces[b.DEFAULT_PASS],settings:r},i=await Bs.request(o,n);if(i===null)return{score:null,notApplicable:!0};let c=i.args.data.duration;return{score:b. +computeLogNormalScore({p10:n.options.p10,median:n.options.median},c),numericValue:c,numericUnit:"millisecond",displayValue:wC(F.ms,{timeInMs:c})}}},EC=DC});var Rj={};T(Rj,{UIStrings:()=>kC,default:()=>ffe});var kC,SC,CC,ffe,Ij=g(()=>{"use strict";d();V();A();Ws();kC={description:"Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/)."},SC=D("core/audits/metrics/interactive.js",kC),CC=class extends b{static{s(this,"InteractiveMetric")}static get meta(){return{id:"interactive",title:SC(F.interactiveMetric),description:SC(kC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:3785,median:7300}},desktop:{scoring:{p10:2468,median:4500}}}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings,URL:t.URL},u=(await Xr.request(i, +n)).timing,l=n.options[n.settings.formFactor];return{score:b.computeLogNormalScore(l.scoring,u),numericValue:u,numericUnit:"millisecond",displayValue:SC(F.seconds,{timeInMs:u})}}},ffe=CC});var Aj={};T(Aj,{UIStrings:()=>IC,default:()=>hfe});var IC,FC,RC,hfe,_j=g(()=>{"use strict";d();V();dC();Ut();Ia();A();IC={description:"The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/)."},FC=D("core/audits/metrics/max-potential-fid.js",IC),RC=class e extends b{static{s(this,"MaxPotentialFID")}static get meta(){return{id:"max-potential-fid",title:FC(F.maxPotentialFIDMetric),description:FC(IC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{p10:130,median:250}}static getLongAnimationFrameDetails(t,n){let{firstContentfulPaint:r,timeOrigin:a}=n.timestamps,o=t.mainThreadEvents.filter(p=>p.name==="LongAnimationFrame"&&p.ph==="b");if(o.length===0)return; +let i=-1/0,c,u=-1/0,l,m=[];for(let p of o){let f=p.args?.data?.duration,h=p.args?.data?.blockingDuration;f===void 0||h===void 0||(m.push({startTime:(p.ts-a)/1e3,duration:f,blockingDuration:h}),!(p.ts<r)&&(f>i&&(i=f,c=p),h>u&&(u=h,l=p)))}return{type:"debugdata",observedMaxDurationLoaf:c,observedMaxBlockingLoaf:l,observedLoafs:m}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings,URL:t.URL},c=await vh.request(i,n),u=await ke.request(r,n),l=await bn.request(r,n),m=e.getLongAnimationFrameDetails(u,l);return{score:b.computeLogNormalScore({p10:n.options.p10,median:n.options.median},c.timing),numericValue:c.timing,numericUnit:"millisecond",displayValue:FC(F.ms,{timeInMs:c.timing}),details:m}}},hfe=RC});var Mj={};T(Mj,{UIStrings:()=>MC,default:()=>gfe});var MC,AC,_C,gfe,Nj=g(()=>{"use strict";d();V();A();cC();MC={description:"Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/)."},AC=D("core/audits/metrics/speed-index.js",MC),_C=class extends b{static{s(this,"SpeedIndex")}static get meta(){return{id:"speed-index",title:AC(F.speedIndexMetric),description:AC(MC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:3387,median:5800}},desktop:{scoring:{p10:1311,median:2300}}}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings,URL:t.URL},c=await yh.request(i,n),u=n.options[n.settings.formFactor]; +return{score:b.computeLogNormalScore(u.scoring,c.timing),scoringOptions:u.scoring,numericValue:c.timing,numericUnit:"millisecond",displayValue:AC(F.seconds,{timeInMs:c.timing})}}},gfe=_C});var Oj={};T(Oj,{UIStrings:()=>LC,default:()=>yfe});var LC,NC,OC,yfe,Lj=g(()=>{"use strict";d();V();Gs();A();LC={description:"Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/)."},NC=D("core/audits/metrics/total-blocking-time.js",LC),OC=class extends b{static{s(this,"TotalBlockingTime")}static get meta(){return{id:"total-blocking-time",title:NC(F.totalBlockingTimeMetric),description:NC(LC.description),scoreDisplayMode:b.SCORING_MODES.NUMERIC,requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:200,median:600}},desktop:{scoring:{p10:150,median:350}}}}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=t.devtoolsLogs[b.DEFAULT_PASS],o=t.GatherContext,i={trace:r,devtoolsLog:a,gatherContext:o,settings:n.settings, +URL:t.URL};if(o.gatherMode==="timespan"&&n.settings.throttlingMethod==="simulate")return{score:1,notApplicable:!0};let c=await Zr.request(i,n),u=n.options[n.settings.formFactor];return{score:b.computeLogNormalScore(u.scoring,c.timing),scoringOptions:u.scoring,numericValue:c.timing,numericUnit:"millisecond",displayValue:NC(F.ms,{timeInMs:c.timing})}}},yfe=OC});var Pj={};T(Pj,{default:()=>vfe});var PC,vfe,Bj=g(()=>{"use strict";d();V();dt();ut();rn();Na();PC=class extends b{static{s(this,"NetworkRequests")}static get meta(){return{id:"network-requests",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Network Requests",description:"Lists the network requests that were made during page load.",requiredArtifacts:["devtoolsLogs","URL","GatherContext"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await oe.request(r,n),o=await Dn.request({URL:t.URL,devtoolsLog:r},n),i=a.reduce((h,y)=>Math.min(h,y.rendererStartTime),1/0),c;t.GatherContext.gatherMode==="navigation"&&(c=(await Qe.request({devtoolsLog:r,URL:t.URL},n)).frameId);let u=s(h=>h<i||!Number.isFinite(h)?void 0:h-i,"normalizeTime"),l=a.map(h=>{let y=h.lrStatistics?.endTimeDeltaMs,v=h.lrStatistics?.TCPMs,w=h.lrStatistics?.requestMs,x=h.lrStatistics?.responseMs,E=h.isLinkPreload||void 0,S=c&&h.frameId===c||void 0,k=o.entityByUrl.get(h.url);return{url:X.elideDataURI(h.url),sessionTargetType:h. +sessionTargetType,protocol:h.protocol,rendererStartTime:u(h.rendererStartTime),networkRequestTime:u(h.networkRequestTime),networkEndTime:u(h.networkEndTime),finished:h.finished,transferSize:h.transferSize,resourceSize:h.resourceSize,statusCode:h.statusCode,mimeType:h.mimeType,resourceType:h.resourceType,priority:h.priority,isLinkPreload:E,experimentalFromMainFrame:S,entity:k?.name,lrEndTimeDeltaMs:y,lrTCPMs:v,lrRequestMs:w,lrResponseMs:x}}),m=[{key:"url",valueType:"url",label:"URL"},{key:"protocol",valueType:"text",label:"Protocol"},{key:"networkRequestTime",valueType:"ms",granularity:1,label:"Network Request Time"},{key:"networkEndTime",valueType:"ms",granularity:1,label:"Network End Time"},{key:"transferSize",valueType:"bytes",displayUnit:"kb",granularity:1,label:"Transfer Size"},{key:"resourceSize",valueType:"bytes",displayUnit:"kb",granularity:1,label:"Resource Size"},{key:"statusCode",valueType:"text",label:"Status Code"},{key:"mimeType",valueType:"text",label:"MIME Type"},{key:"r\ +esourceType",valueType:"text",label:"Resource Type"}],p=b.makeTableDetails(m,l),f=Number.isFinite(i)?i*1e3:void 0;return p.debugData={type:"debugdata",networkStartTimeTs:f},{score:1,details:p}}},vfe=PC});var Uj={};T(Uj,{UIStrings:()=>wh,default:()=>bfe});var wh,lm,BC,bfe,jj=g(()=>{"use strict";d();V();A();ut();wi();wh={title:"Network Round Trip Times",description:"Network round trip times (RTT) have a large impact on performance. If the RTT to an origin is high, it's an indication that servers closer to the user could improve performance. [Learn more about the Round Trip Time](https://hpbn.co/primer-on-latency-and-bandwidth/)."},lm=D("core/audits/network-rtt.js",wh),BC=class extends b{static{s(this,"NetworkRTT")}static get meta(){return{id:"network-rtt",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:lm(wh.title),description:lm(wh.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS];if(!(await oe.request(r,n)).length)return{score:1,notApplicable:!0};let o=await Er.request(r,n),i=0,c=o.rtt,u=[];for(let[p,f]of o.additionalRttByOrigin.entries()){if(!p.startsWith("http"))continue;let h=f+c;u.push({origin:p,rtt:h}),i=Number.isFinite( +h)?Math.max(h,i):i}u.sort((p,f)=>f.rtt-p.rtt);let l=[{key:"origin",valueType:"text",label:lm(F.columnURL)},{key:"rtt",valueType:"ms",granularity:1,label:lm(F.columnTimeSpent)}],m=b.makeTableDetails(l,u,{sortedBy:["rtt"]});return{score:1,numericValue:i,numericUnit:"millisecond",displayValue:lm(F.ms,{timeInMs:i}),details:m}}},bfe=BC});var zj={};T(zj,{UIStrings:()=>Dh,default:()=>wfe});var Dh,dm,UC,wfe,qj=g(()=>{"use strict";d();V();A();ut();wi();Dh={title:"Server Backend Latencies",description:"Server latencies can impact web performance. If the server latency of an origin is high, it's an indication the server is overloaded or has poor backend performance. [Learn more about server response time](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."},dm=D("core/audits/network-server-latency.js",Dh),UC=class extends b{static{s(this,"NetworkServerLatency")}static get meta(){return{id:"network-server-latency",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:dm(Dh.title),description:dm(Dh.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS];if(!(await oe.request(r,n)).length)return{score:1,notApplicable:!0};let o=await Er.request(r,n),i=0,c=[];for(let[m,p]of o.serverResponseTimeByOrigin.entries())m.startsWith("http")&&(i=Math.max(p,i),c. +push({origin:m,serverResponseTime:p}));c.sort((m,p)=>p.serverResponseTime-m.serverResponseTime);let u=[{key:"origin",valueType:"text",label:dm(F.columnURL)},{key:"serverResponseTime",valueType:"ms",granularity:1,label:dm(F.columnTimeSpent)}],l=b.makeTableDetails(u,c,{sortedBy:["serverResponseTime"]});return{score:Math.max(1-i/500,0),numericValue:i,numericUnit:"millisecond",displayValue:dm(F.ms,{timeInMs:i}),details:l}}},wfe=UC});var Hj={};T(Hj,{UIStrings:()=>mr,default:()=>Efe});function xfe(e,t){return Dfe.filter(n=>e&n.flag).map(n=>n.text===mr.unsupportedCSSProperty?Ui(n.text,{propertyCount:t.length,properties:t.join(", ")}):Ui(n.text))}var mr,Ui,Dfe,jC,Efe,Wj=g(()=>{"use strict";d();V();A();mr={title:"Avoid non-composited animations",description:"Animations which are not composited can be janky and increase CLS. [Learn how to avoid non-composited animations](https://developer.chrome.com/docs/lighthouse/performance/non-composited-animations/)",displayValue:`{itemCount, plural, =1 {# animated element found} other {# animated elements found} }`,unsupportedCSSProperty:`{propertyCount, plural, =1 {Unsupported CSS Property: {properties}} other {Unsupported CSS Properties: {properties}} - }`,transformDependsBoxSize:"Transform-related property depends on box size",filterMayMovePixels:"Filter-related property may move pixels",nonReplaceCompositeMode:'Effect has composite mode other than "replace"',incompatibleAnimations:"Target has another animation which is incompatible",unsupportedTimingParameters:"Effect has unsupported timing parameters"},Mo=D("core/audits/non-composited-animations.js",an),jde=[{flag:8192,text:an.unsupportedCSSProperty},{flag:2048,text:an.transformDependsBoxSize},{flag:4096,text:an.filterMayMovePixels},{flag:16,text:an.nonReplaceCompositeMode},{flag:64,text:an.incompatibleAnimations},{flag:8,text:an.unsupportedTimingParameters}];s(qde,"getActionableFailureReasons");aC=class extends v{static{s(this,"NonCompositedAnimations")}static get meta(){return{id:"non-composited-animations",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:Mo(an.title),description:Mo(an.description),guidanceLevel:2,requiredArtifacts:["TraceElements","HostUserAgent"]}}static async audit(t){ -let r=t.HostUserAgent.match(/Chrome\/(\d+)/);if(!r||Number(r[1])<86)return{score:1,notApplicable:!0,metricSavings:{CLS:0}};let n=[],i=!1;t.TraceElements.forEach(l=>{if(l.traceEventType!=="animation")return;let c=l.animations||[],p=new Map;for(let{name:f,failureReasonsMask:h,unsupportedProperties:y}of c){if(!h)continue;let b=qde(h,y||[]);for(let w of b){f&&(i=!0);let E=p.get(f)||new Set;E.add(w),p.set(f,E)}}if(!p.size)return;let m=[];for(let[f,h]of p)for(let y of h)m.push({failureReason:y,animation:f});n.push({node:v.makeNodeItem(l.node),subItems:{type:"subitems",items:m}})});let a=[{key:"node",valueType:"node",subItemsHeading:{key:"failureReason",valueType:"text"},label:Mo(F.columnElement)}];i&&a.push({key:null,valueType:"text",subItemsHeading:{key:"animation",valueType:"text"},label:Mo(F.columnName)});let o=v.makeTableDetails(a,n),u;return n.length>0&&(u=Mo(an.displayValue,{itemCount:n.length})),{score:n.length===0?1:0,notApplicable:n.length===0,metricSavings:{CLS:0},details:o,displayValue:u}}}, -zde=aC});var u9={};x(u9,{default:()=>Hde});var Hde,l9=g(()=>{"use strict";d();Hde={meta:{id:"oopif-iframe-test-audit",title:"IFrame Elements",failureTitle:"IFrame Elements",description:"Audit to force the inclusion of IFrameElements artifact",requiredArtifacts:["IFrameElements"]},audit:()=>({score:1})}});var c9={};x(c9,{default:()=>$de});var Wde,Gde,Vde,oC,$de,d9=g(()=>{"use strict";d();V();R();zn();_d();S2();da();A2();wi();Wde=3651,Gde=1e4,Vde=D("core/audits/predictive-perf.js",{}),oC=class extends v{static{s(this,"PredictivePerf")}static get meta(){return{id:"predictive-perf",title:"Predicted Performance (beta)",description:"Predicted performance evaluates how your site will perform under a cellular connection on a mobile device.",scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(t,r){let n=t.GatherContext,i=t.traces[v.DEFAULT_PASS],a=t.devtoolsLogs[v.DEFAULT_PASS],o=t.URL,u=JSON.parse(JSON.stringify(Yr)),l={trace:i,devtoolsLog:a,gatherContext:n,settings:u,URL:o},c=await Zt.request(l,r),p=await pa.request(l,r),m=await dh.request(l,r),f=await Ir.request(l,r),h=await fh.request(l,r),y={roughEstimateOfFCP:c.timing,optimisticFCP:c.optimisticEstimate.timeInMs,pessimisticFCP:c.pessimisticEstimate. -timeInMs,roughEstimateOfTTI:p.timing,optimisticTTI:p.optimisticEstimate.timeInMs,pessimisticTTI:p.pessimisticEstimate.timeInMs,roughEstimateOfSI:m.timing,optimisticSI:m.optimisticEstimate.timeInMs,pessimisticSI:m.pessimisticEstimate.timeInMs,roughEstimateOfLCP:f.timing,optimisticLCP:f.optimisticEstimate.timeInMs,pessimisticLCP:f.pessimisticEstimate.timeInMs,roughEstimateOfTTFB:h.metrics.timeToFirstByte,roughEstimateOfLCPLoadStart:h.metrics.lcpLoadStart,roughEstimateOfLCPLoadEnd:h.metrics.lcpLoadEnd};return{score:v.computeLogNormalScore({p10:Wde,median:Gde},y.roughEstimateOfTTI),numericValue:y.roughEstimateOfTTI,numericUnit:"millisecond",displayValue:Vde(F.ms,{timeInMs:y.roughEstimateOfTTI}),details:{type:"debugdata",items:[y]}}}},$de=oC});var p9={};x(p9,{UIStrings:()=>lp,default:()=>Kde});var Yde,lp,yh,sC,Kde,m9=g(()=>{"use strict";d();V();R();qS();at();Yde=/^(optional)$/,lp={title:"Fonts with `font-display: optional` are preloaded",failureTitle:"Fonts with `font-display: optional` are not preloaded",description:"Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)"},yh=D("core/audits/preload-fonts.js",lp),sC=class e extends v{static{s(this,"PreloadFontsAudit")}static get meta(){return{id:"preload-fonts",title:yh(lp.title),failureTitle:yh(lp.failureTitle),description:yh(lp.description),requiredArtifacts:["devtoolsLogs","URL","CSSUsage"]}}static getURLsAttemptedToPreload(t){let r=t.filter(n=>n.resourceType==="Font").filter(n=>n.isLinkPreload).map(n=>n.url);return new Set(r)}static async audit(t,r){let n=t.devtoolsLogs[this.DEFAULT_PASS],i=await ie.request(n,r),a=jS.findFontDisplayDeclarations(t,Yde).passingURLs,o=e.getURLsAttemptedToPreload( -i),u=Array.from(a).filter(c=>!o.has(c)).map(c=>({url:c})),l=[{key:"url",valueType:"url",label:yh(F.columnURL)}];return{score:u.length>0?0:1,details:v.makeTableDetails(l,u),notApplicable:a.size===0}}},Kde=sC});var f9={};x(f9,{UIStrings:()=>vh,default:()=>Jde});var vh,cp,uC,Jde,h9=g(()=>{"use strict";d();V();R();Ot();dr();da();Bn();Id();vh={title:"Preload Largest Contentful Paint image",description:"If the LCP element is dynamically added to the page, you should preload the image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/articles/optimize-lcp#optimize_when_the_resource_is_discovered)."},cp=D("core/audits/prioritize-lcp-image.js",vh),uC=class e extends v{static{s(this,"PrioritizeLcpImage")}static get meta(){return{id:"prioritize-lcp-image",title:cp(vh.title),description:cp(vh.description),supportedModes:["navigation"],guidanceLevel:4,requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL","TraceElements"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static shouldPreloadRequest(t,r,n){return t.isLinkPreload||K.isNonNetworkRequest(t)||n.length<=2?!1:t.frameId===r.frameId}static findLCPNode(t,r){for(let{node:n}of t.traverseGenerator())if(n.type=== -"network"&&n.request.requestId===r.requestId)return n}static getLcpInitiatorPath(t,r){let n=[],i=!1,a=t;for(;a;){i||=a.requestId===r.requestId;let o=a.initiator?.type??"other";if(a.initiatorRequest&&a.initiatorRequest===a.redirectSource&&(o="redirect"),!a.initiatorRequest&&!i&&(o="fallbackToMain"),n.push({url:a.url,initiatorType:o}),i)break;a=a.initiatorRequest||r}return n}static getLCPNodeToPreload(t,r,n){if(!n)return{};let i=e.findLCPNode(r,n),a=e.getLcpInitiatorPath(n,t);return i?{lcpNodeToPreload:e.shouldPreloadRequest(n,t,a)?i:void 0,initiatorPath:a}:{initiatorPath:a}}static computeWasteWithGraph(t,r,n,i){if(!r)return{wastedMs:0,results:[]};let a=n.cloneWithRelationships(),o=new Set;for(let w of r.getDependencies())o.add(w.id);let u=null,l=null;for(let{node:w}of a.traverseGenerator())w.type==="network"&&(w.isMainDocument()?l=w:w.id===r.id&&(u=w));if(!l)throw new Error("Could not find main document node");if(!u)throw new Error("Could not find the LCP node");u.removeAllDependencies(), -u.addDependency(l);let c=i.simulate(n),p=i.simulate(a),m=c.nodeTimings.get(r);if(!m)throw new Error("Impossible - node timings should never be undefined");let f=p.nodeTimings.get(u);if(!f)throw new Error("Impossible - node timings should never be undefined");let h=Array.from(p.nodeTimings.keys()).reduce((w,E)=>w.set(E.id,E),new Map),y=0;for(let w of Array.from(o)){let E=h.get(w);if(!E)throw new Error("Impossible - node should never be undefined");let S=p.nodeTimings.get(E)?.endTime||0;y=Math.max(y,S)}let b=m.endTime-Math.max(f.endTime,y);return{wastedMs:b,results:[{node:v.makeNodeItem(t.node),url:r.request.url,wastedMs:b}]}}static async audit(t,r){let n=t.GatherContext,i=t.traces[e.DEFAULT_PASS],a=t.devtoolsLogs[e.DEFAULT_PASS],o=t.URL,u=r.settings,l={trace:i,devtoolsLog:a,gatherContext:n,settings:u,URL:o},c=t.TraceElements.find(_=>_.traceEventType==="largest-contentful-paint");if(!c||c.type!=="image")return{score:null,notApplicable:!0,metricSavings:{LCP:0}};let p=await lt.request({devtoolsLog:a, -URL:o},r),m=await Ir.request(l,r),f=await Jt.request({devtoolsLog:a,settings:u},r),h=await fa.request({trace:i,devtoolsLog:a},r),y=m.pessimisticGraph,{lcpNodeToPreload:b,initiatorPath:w}=e.getLCPNodeToPreload(p,y,h),{results:E,wastedMs:T}=e.computeWasteWithGraph(c,b,y,f),S=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:cp(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:cp(F.columnWastedMs)}],C=v.makeOpportunityDetails(S,E,{overallSavingsMs:T,sortedBy:["wastedMs"]});return w&&(C.debugData={type:"debugdata",initiatorPath:w,pathLength:w.length}),{score:E.length?0:1,numericValue:T,numericUnit:"millisecond",displayValue:T?cp(F.displayValueMsSavings,{wastedMs:T}):"",details:C,metricSavings:{LCP:T}}}},Jde=uC});var g9={};x(g9,{UIStrings:()=>dp,default:()=>Zde});var dp,lC,cC,Zde,y9=g(()=>{"use strict";d();V();R();ut();dp={title:"Redirects HTTP traffic to HTTPS",failureTitle:"Does not redirect HTTP traffic to HTTPS",description:"Make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developer.chrome.com/docs/lighthouse/pwa/redirects-http/)."},lC=D("core/audits/redirects-http.js",dp),cC=class extends v{static{s(this,"RedirectsHTTP")}static get meta(){return{id:"redirects-http",title:lC(dp.title),failureTitle:lC(dp.failureTitle),description:lC(dp.description),requiredArtifacts:["URL"],supportedModes:["navigation"]}}static audit(t){if(!t.URL.requestedUrl)throw new Error("Missing requestedUrl");let r=new URL(t.URL.requestedUrl),n=new URL(t.URL.finalDisplayedUrl),i=r.protocol==="http:",a=J.isLikeLocalhost(n.hostname);if(!i||a)return{score:null,notApplicable:!0};let o=n.protocol==="https:";return{score:Number(o)}}},Zde=cC});var v9={};x(v9,{UIStrings:()=>bh,default:()=>Xde});var bh,pp,dC,Xde,b9=g(()=>{"use strict";d();V();R();Bt();at();_d();bh={title:"Avoid multiple page redirects",description:"Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/)."},pp=D("core/audits/redirects.js",bh),dC=class e extends v{static{s(this,"Redirects")}static get meta(){return{id:"redirects",title:pp(bh.title),description:pp(bh.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,supportedModes:["navigation"],guidanceLevel:2,requiredArtifacts:["URL","GatherContext","devtoolsLogs","traces"]}}static getDocumentRequestChain(t,r){let n=[];for(let i of r.processEvents){if(i.name!=="navigationStart")continue;let a=i.args.data||{};if(!a.documentLoaderURL||!a.isLoadingMainFrame)continue;let o=t.find(u=>u.requestId===a.navigationId);for(;o;)n.push(o),o=o.redirectDestination}if(!n.length)throw new Error("No na\ -vigation requests found");return n}static async audit(t,r){let n=r.settings,i=t.traces[v.DEFAULT_PASS],a=t.devtoolsLogs[v.DEFAULT_PASS],o=t.GatherContext,u=await xe.request(i,r),l=await ie.request(a,r),c=e.getDocumentRequestChain(l,u),p={trace:i,devtoolsLog:a,gatherContext:o,settings:n,URL:t.URL},m=await pa.request(p,r),f=new Map;for(let[E,T]of m.pessimisticEstimate.nodeTimings.entries())E.type==="network"&&f.set(E.request.requestId,T);let h=0,y=[];for(let E=0;E<c.length&&!(c.length<2);E++){let T=c[E],S=c[E+1]||T,C=f.get(T.requestId),_=f.get(S.requestId);if(!C||!_)throw new Error("Could not find redirects in graph");let L=_.startTime-C.startTime,M=S.networkRequestTime-T.networkRequestTime,H=n.throttlingMethod==="simulate"?L:M;h+=H,y.push({url:T.url,wastedMs:H})}let b=[{key:"url",valueType:"url",label:pp(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:pp(F.columnTimeSpent)}],w=v.makeOpportunityDetails(b,y,{overallSavingsMs:h});return{score:y.length?0:1,numericValue:h,numericUnit:"\ -millisecond",displayValue:h?pp(F.displayValueMsSavings,{wastedMs:h}):"",details:w,metricSavings:{LCP:h,FCP:h}}}},Xde=dC});var pC,w9,D9=g(()=>{"use strict";d();Ci();De();at();Ot();ut();pC=class e{static{s(this,"ResourceSummary")}static determineResourceType(t){return t.resourceType&&{Stylesheet:"stylesheet",Image:"image",Media:"media",Font:"font",Script:"script",Document:"document"}[t.resourceType]||"other"}static summarize(t,r,n){let i={stylesheet:{count:0,resourceSize:0,transferSize:0},image:{count:0,resourceSize:0,transferSize:0},media:{count:0,resourceSize:0,transferSize:0},font:{count:0,resourceSize:0,transferSize:0},script:{count:0,resourceSize:0,transferSize:0},document:{count:0,resourceSize:0,transferSize:0},other:{count:0,resourceSize:0,transferSize:0},total:{count:0,resourceSize:0,transferSize:0},"third-party":{count:0,resourceSize:0,transferSize:0}},a=n.firstParty?.domains.map(o=>`*.${o}`)||[`*.${J.getRootDomain(r.finalDisplayedUrl)}`];return t.filter(o=>!(this.determineResourceType(o)==="other"&&o.url.endsWith("/favicon.ico")||K.isNonNetworkRequest(o))).forEach(o=>{let u=this.determineResourceType( -o);i[u].count++,i[u].resourceSize+=o.resourceSize,i[u].transferSize+=o.transferSize,i.total.count++,i.total.resourceSize+=o.resourceSize,i.total.transferSize+=o.transferSize,a.some(c=>{let p=new URL(o.url);return c.startsWith("*.")?p.hostname.endsWith(c.slice(2)):p.hostname===c})||(i["third-party"].count++,i["third-party"].resourceSize+=o.resourceSize,i["third-party"].transferSize+=o.transferSize)}),i}static async compute_(t,r){let n=await ie.request(t.devtoolsLog,r),i=await fr.request({URL:t.URL,devtoolsLog:t.devtoolsLog},r);return e.summarize(n,t.URL,i)}},w9=G(pC,["URL","devtoolsLog"])});var E9={};x(E9,{default:()=>Qde});var on,mC,Qde,T9=g(()=>{"use strict";d();V();D9();R();on=D("core/audits/resource-summary.js"),mC=class extends v{static{s(this,"ResourceSummary")}static get meta(){return{id:"resource-summary",title:"Resources Summary",description:"Aggregates all network requests and groups them by type",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,requiredArtifacts:["devtoolsLogs","URL"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await w9.request({devtoolsLog:n,URL:t.URL},r),a=[{key:"label",valueType:"text",label:on(F.columnResourceType)},{key:"requestCount",valueType:"numeric",label:on(F.columnRequests)},{key:"transferSize",valueType:"bytes",label:on(F.columnTransferSize)}],o={total:on(F.totalResourceType),document:on(F.documentResourceType),script:on(F.scriptResourceType),stylesheet:on(F.stylesheetResourceType),image:on(F.imageResourceType),media:on(F.mediaResourceType),font:on(F.fontResourceType),other:on(F.otherResourceType),"third-party":on(F. -thirdPartyResourceType)},l=Object.keys(i).map(h=>({resourceType:h,label:o[h],requestCount:i[h].count,transferSize:i[h].transferSize})),c=l.find(h=>h.resourceType==="third-party")||[],m=l.filter(h=>h.resourceType!=="third-party").sort((h,y)=>y.transferSize-h.transferSize).concat(c);return{details:v.makeTableDetails(a,m),score:null}}},Qde=mC});var S9={};x(S9,{default:()=>tpe});var x9,epe,fC,tpe,C9=g(()=>{"use strict";d();x9=yr(f2(),1);V();zt();op();epe=8,fC=class e extends v{static{s(this,"ScreenshotThumbnails")}static get meta(){return{id:"screenshot-thumbnails",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Screenshot Thumbnails",description:"This is what the load of your site looked like.",requiredArtifacts:["traces","GatherContext"]}}static scaleImageToThumbnail(t,r){let n=t.width/r,i=Math.floor(t.height/n),a=new Uint8Array(r*i*4);for(let o=0;o<r;o++)for(let u=0;u<i;u++){let l=Math.floor(o*n),p=(Math.floor(u*n)*t.width+l)*4,m=(u*r+o)*4;a[m]=t.data[p],a[m+1]=t.data[p+1],a[m+2]=t.data[p+2],a[m+3]=t.data[p+3]}return{width:r,height:i,data:a}}static async _audit(t,r){let n=t.traces[v.DEFAULT_PASS],i=new Map,a=await Sa.request(n,r),o=r.options.minimumTimelineDuration||3e3,u=r.options.numberOfThumbnails||epe,l=r.options.thumbnailWidth||null,c=[],p=a.frames.filter(h=>!h.isProgressInterpolated()),m=a.complete||Math.max(...a. -frames.map(h=>h.getTimeStamp()-a.beginning)),f=Math.max(m,o);if(!p.length||!Number.isFinite(f))throw new z(z.errors.INVALID_SPEEDLINE);for(let h=1;h<=u;h++){let y=a.beginning+f*h/u,b=null;h===u?b=p[p.length-1]:p.forEach(T=>{T.getTimeStamp()<=y&&(b=T)});let w,E=i.get(b);if(E)w=E;else if(l!==null){let T=b.getParsedImage(),S=e.scaleImageToThumbnail(T,l);w=x9.default.encode(S,90).data.toString("base64"),i.set(b,w)}else w=b.getImage().toString("base64"),i.set(b,w);c.push({timing:Math.round(y-a.beginning),timestamp:y*1e3,data:`data:image/jpeg;base64,${w}`})}return{score:1,details:{type:"filmstrip",scale:f,items:c}}}static async audit(t,r){try{return await this._audit(t,r)}catch(n){if(new Set([z.errors.NO_SCREENSHOTS.code,z.errors.SPEEDINDEX_OF_ZERO.code,z.errors.NO_SPEEDLINE_FRAMES.code,z.errors.INVALID_SPEEDLINE.code]).has(n.code)&&t.GatherContext.gatherMode==="timespan")return{notApplicable:!0,score:1};throw n}}},tpe=fC});var F9={};x(F9,{default:()=>rpe});var hC,rpe,k9=g(()=>{"use strict";d();V();ha();$x();Cx();ga();hC=class e extends v{static{s(this,"ScriptTreemapDataAudit")}static get meta(){return{id:"script-treemap-data",scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,title:"Script Treemap Data",description:"Used for treemap app",requiredArtifacts:["traces","devtoolsLogs","SourceMaps","Scripts","JsUsage","URL"]}}static makeScriptNode(t,r,n){function i(c){return{name:c,resourceBytes:0}}s(i,"newNode");let a=i(r);function o(c,p){let m=a;a.resourceBytes+=p.resourceBytes,p.unusedBytes&&(a.unusedBytes=(a.unusedBytes||0)+p.unusedBytes);let f=c.replace(r,"").split(/\/+/);f.forEach((h,y)=>{if(h.length===0)return;let b=y===f.length-1,w=m.children&&m.children.find(E=>E.name===h);w||(w=i(h),m.children=m.children||[],m.children.push(w)),m=w,m.resourceBytes+=p.resourceBytes,p.unusedBytes&&(m.unusedBytes=(m.unusedBytes||0)+p.unusedBytes),b&&p.duplicatedNormalizedModuleName!==void 0&&(m.duplicatedNormalizedModuleName= -p.duplicatedNormalizedModuleName)})}s(o,"addAllNodesInSourcePath");for(let[c,p]of Object.entries(n))o(c,p);function u(c){for(;c.children&&c.children.length===1;)c.name+="/"+c.children[0].name,c.children=c.children[0].children;if(c.children)for(let p of c.children)u(p)}if(s(u,"collapseAll"),u(a),!a.name)return{...a,name:t,children:a.children};let l={...a};return l.name=t,l.children=[a],l}static async makeNodes(t,r){let n=[],i=new Map,a=await Ar.request(t,r),o=await Ad.request(t,r);for(let u of t.Scripts){if(u.scriptLanguage!=="JavaScript")continue;let l=u.url,c=a.find(h=>u.scriptId===h.script.scriptId),p=t.JsUsage[u.scriptId],m=p?await q1.request({scriptId:u.scriptId,scriptCoverage:p,bundle:c},r):void 0,f;if(c&&!("errorMessage"in c.sizes)){let h={};for(let y of Object.keys(c.sizes.files)){let b={resourceBytes:c.sizes.files[y]};m?.sourcesWastedBytes&&(b.unusedBytes=m.sourcesWastedBytes[y]);let w=y;c.rawMap.sourceRoot&&y.startsWith(c.rawMap.sourceRoot)&&(w=y.replace(c.rawMap.sourceRoot,"")); -let E=Ad.normalizeSource(w);o.has(E)&&(b.duplicatedNormalizedModuleName=E),h[y]=b}if(c.sizes.unmappedBytes){let y={resourceBytes:c.sizes.unmappedBytes};m?.sourcesWastedBytes&&(y.unusedBytes=m.sourcesWastedBytes["(unmapped)"]),h["(unmapped)"]=y}f=this.makeScriptNode(u.url,c.rawMap.sourceRoot||"",h)}else f={name:l,resourceBytes:m?.totalBytes??u.length??0,unusedBytes:m?.wastedBytes};if(k1(u)){let h=i.get(u.executionContextAuxData.frameId);h||(h={name:l,resourceBytes:0,unusedBytes:void 0,children:[]},i.set(u.executionContextAuxData.frameId,h),n.push(h)),h.resourceBytes+=f.resourceBytes,f.unusedBytes&&(h.unusedBytes=(h.unusedBytes||0)+f.unusedBytes),f.name=u.content?"(inline) "+u.content.trimStart().substring(0,15)+"…":"(inline)",h.children?.push(f)}else n.push(f)}return n}static async audit(t,r){return{score:1,details:{type:"treemap-data",nodes:await e.makeNodes(t,r)}}}},rpe=hC});var _9={};x(_9,{UIStrings:()=>Xn,default:()=>npe});var Xn,Ca,gC,npe,R9=g(()=>{"use strict";d();V();ut();dr();R();Xn={title:"Document has a valid `rel=canonical`",failureTitle:"Document does not have a valid `rel=canonical`",description:"Canonical links suggest which URL to show in search results. [Learn more about canonical links](https://developer.chrome.com/docs/lighthouse/seo/canonical/).",explanationConflict:"Multiple conflicting URLs ({urlList})",explanationInvalid:"Invalid URL ({url})",explanationRelative:"Is not an absolute URL ({url})",explanationPointsElsewhere:"Points to another `hreflang` location ({url})",explanationRoot:"Points to the domain's root URL (the homepage), instead of an equivalent page of content"},Ca=D("core/audits/seo/canonical.js",Xn),gC=class e extends v{static{s(this,"Canonical")}static get meta(){return{id:"canonical",title:Ca(Xn.title),failureTitle:Ca(Xn.failureTitle),description:Ca(Xn.description),supportedModes:["navigation"],requiredArtifacts:["LinkEl\ -ements","URL","devtoolsLogs"]}}static collectCanonicalURLs(t){let r=new Set,n=new Set,i,a;for(let o of t)if(o.source!=="body")if(o.rel==="canonical"){if(!o.hrefRaw)continue;o.href?J.isValid(o.hrefRaw)?r.add(o.href):a=o:i=o}else o.rel==="alternate"&&o.href&&o.hreflang&&n.add(o.href);return{uniqueCanonicalURLs:r,hreflangURLs:n,invalidCanonicalLink:i,relativeCanonicallink:a}}static findInvalidCanonicalURLReason(t){let{uniqueCanonicalURLs:r,invalidCanonicalLink:n,relativeCanonicallink:i}=t;if(n)return{score:0,explanation:Ca(Xn.explanationInvalid,{url:n.hrefRaw})};if(i)return{score:0,explanation:Ca(Xn.explanationRelative,{url:i.hrefRaw})};let a=Array.from(r);if(a.length===0)return{score:1,notApplicable:!0};if(a.length>1)return{score:0,explanation:Ca(Xn.explanationConflict,{urlList:a.join(", ")})}}static findCommonCanonicalURLMistakes(t,r,n){let{hreflangURLs:i}=t;if(i.has(n.href)&&i.has(r.href)&&n.href!==r.href)return{score:0,explanation:Ca(Xn.explanationPointsElsewhere,{url:n.href})};if(r.origin=== -n.origin&&r.pathname==="/"&&n.pathname!=="/")return{score:0,explanation:Ca(Xn.explanationRoot)}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await lt.request({devtoolsLog:n,URL:t.URL},r),a=new URL(i.url),o=e.collectCanonicalURLs(t.LinkElements),u=e.findInvalidCanonicalURLReason(o);if(u)return u;let l=new URL([...o.uniqueCanonicalURLs][0]),c=e.findCommonCanonicalURLMistakes(o,l,a);return c||{score:1}}},npe=gC});var I9={};x(I9,{UIStrings:()=>gu,default:()=>ipe});var gu,wh,yC,ipe,A9=g(()=>{"use strict";d();V();R();gu={title:"Links are crawlable",failureTitle:"Links are not crawlable",description:"Search engines may use `href` attributes on links to crawl websites. Ensure that the `href` attribute of anchor elements links to an appropriate destination, so more pages of the site can be discovered. [Learn how to make links crawlable](https://support.google.com/webmasters/answer/9112205)",columnFailingLink:"Uncrawlable Link"},wh=D("core/audits/seo/crawlable-anchors.js",gu),yC=class extends v{static{s(this,"CrawlableAnchors")}static get meta(){return{id:"crawlable-anchors",title:wh(gu.title),failureTitle:wh(gu.failureTitle),description:wh(gu.description),requiredArtifacts:["AnchorElements","URL"]}}static audit({AnchorElements:t,URL:r}){let n=t.filter(({rawHref:o,name:u="",role:l="",id:c,href:p})=>{if(o=o.replace(/\s/g,""),u=u.trim(),l=l.trim(),l.length>0||o.startsWith("mailto:")||o===""&&c)return;let m=/javascript:void(\(|)0(\)|)/; -if(o.startsWith("file:"))return!0;if(!(u.length>0)){if(p===""||m.test(o))return!0;try{new URL(o,r.finalDisplayedUrl)}catch{return!0}}}),i=[{key:"node",valueType:"node",label:wh(gu.columnFailingLink)}],a=n.map(o=>({node:v.makeNodeItem(o.node)}));return{score:+(n.length===0),details:v.makeTableDetails(i,a)}}},ipe=yC});var M9=pe(fp=>{d();fp.getRenderingDataFromViewport=function(e,t,r,n,i){var a=t/100,o=r/100,u=null,l=null,c=null,p=null,m=null,f=null,h=null,y=null,b=null,w=t,E=r,T="zoom",S="resizes-visual";if(e["maximum-scale"]!==void 0&&(u=Dh(e["maximum-scale"])),e["minimum-scale"]!==void 0&&(l=Dh(e["minimum-scale"])),e["initial-scale"]!==void 0&&(c=Dh(e["initial-scale"])),l!==null&&u===null&&(l=mp(n,Dh(e["minimum-scale"]))),e.width!==void 0&&(p="extend-to-zoom",f=N9(e.width,a,o)),e.height!==void 0&&(m="extend-to-zoom",h=N9(e.height,a,o)),e["user-scalable"]!==void 0)if(T=e["user-scalable"],typeof T=="number")T>=1||T<=-1?T="zoom":T="fixed";else switch(T){case"yes":case"device-width":case"device-height":T="zoom";break;case"no":default:T="fixed";break}if(e["interactive-widget"]!==void 0)switch(e["interactive-widget"]){case"overlays-content":case"resizes-content":case"resizes-visual":S=e["interactive-widget"];break;default:S="resizes-visual";break}c!==null&&(e.width===void 0||y===void 0)&&(e.height!==void 0? -(p=null,f=null):(p="extend-to-zoom",f="extend-to-zoom")),l!==null&&u!==null&&(u=yu(l,u)),c!==null&&(c=vC(c,l,u));var C=c===null&&u===null?null:mp(c,u),_,L;return C===null?(f==="extend-to-zoom"&&(f=null),h==="extend-to-zoom"&&(h=null),p==="extend-to-zoom"&&(p=f),m==="extend-to-zoom"&&(m=h)):(_=w/C,L=E/C,f==="extend-to-zoom"&&(f=_),h==="extend-to-zoom"&&(h=L),p==="extend-to-zoom"&&(p=yu(_,f)),m==="extend-to-zoom"&&(m=yu(L,h))),(p!==null||f!==null)&&(y=yu(p,mp(f,w))),(m!==null||h!==null)&&(b=yu(m,mp(h,E))),y===null&&(b===null?y=w:E!==0?y=Math.round(b*(w/E)):y=w),b===null&&(w!==0?b=Math.round(y*(E/w)):b=E),{zoom:c,width:y,height:b,userZoom:T,interactiveWidget:S}};function mp(e,t){return e===null?t:t===null?e:Math.min(e,t)}s(mp,"min");function yu(e,t){return e===null?t:t===null?e:Math.max(e,t)}s(yu,"max");function N9(e,t,r){return typeof e=="number"?e>=0?vC(e,1,1e4):void 0:e==="device-width"?100*t:e==="device-height"?100*r:1}s(N9,"translateLengthProperty");function Dh(e){if(typeof e=="numbe\ -r")return e>=0?vC(e,.1,10):void 0;if(e==="yes")return 1;if(e==="device-width"||e==="device-height")return 10;if(e==="no"||e===null)return .1}s(Dh,"translateZoomProperty");function vC(e,t,r){return yu(mp(e,r),t)}s(vC,"clamp");fp.parseMetaViewPortContent=function(e){for(var t={validProperties:{},unknownProperties:{},invalidValues:{}},r=1;r<=e.length;){for(;r<=e.length&&RegExp(` | -| |\0d|,|;|=`).test(e[r-1]);)r++;r<=e.length&&(r=ope(t,e,r))}return t};var ape=["width","height","initial-scale","minimum-scale","maximum-scale","user-scalable","shrink-to-fit","viewport-fit","interactive-widget"];function ope(e,t,r){for(var n=r;r<=t.length&&!RegExp(` | -| |\0d|,|;|=`).test(t[r-1]);)r++;if(r>t.length||RegExp(",|;").test(t[r-1]))return r;for(var i=t.slice(n-1,r-1);r<=t.length&&!RegExp(",|;|=").test(t[r-1]);)r++;if(r>t.length||RegExp(",|;").test(t[r-1]))return r;for(;r<=t.length&&RegExp(` | -| |\0d|=`).test(t[r-1]);)r++;if(r>t.length||RegExp(",|;").test(t[r-1]))return r;for(n=r;r<=t.length&&!RegExp(` | -| |\0d|,|;|=`).test(t[r-1]);)r++;var a=t.slice(n-1,r-1);return spe(e,i,a),r}s(ope,"parseProperty");function spe(e,t,r){if(ape.indexOf(t)>=0){var n=parseFloat(r);if(!isNaN(n)){e.validProperties[t]=n;return}var i=r.toLowerCase();if(i==="yes"||i==="no"||i==="device-width"||i==="device-height"||t.toLowerCase()==="viewport-fit"&&(i==="auto"||i==="cover")||t.toLowerCase()==="interactive-widget"&&fp.expectedValues["interactive-widget"].includes(i)){e.validProperties[t]=i;return}e.validProperties[t]=null,e.invalidValues[t]=r}else e.unknownProperties[t]=r}s(spe,"setProperty");fp.expectedValues={width:["device-width","device-height","a positive number"],height:["device-width","device-height","a positive number"],"initial-scale":["a positive number"],"minimum-scale":["a positive number"],"maximum-scale":["a positive number"],"user-scalable":["yes","no","0","1"],"shrink-to-fit":["yes","no"],"viewport-fit":["auto","cover"],"interactive-widget":["overlays-content","resizes-content","resizes-visual"]}});var L9,bC,Eh,wC=g(()=>{"use strict";d();L9=yr(M9(),1);De();bC=class{static{s(this,"ViewportMeta")}static async compute_(t){let r=t.find(c=>c.name==="viewport");if(!r)return{hasViewportTag:!1,isMobileOptimized:!1,parserWarnings:[],rawContentString:void 0};let n=[],i=r.content||"",a=L9.default.parseMetaViewPortContent(i);Object.keys(a.unknownProperties).length&&n.push(`Invalid properties found: ${JSON.stringify(a.unknownProperties)}`),Object.keys(a.invalidValues).length&&n.push(`Invalid values found: ${JSON.stringify(a.invalidValues)}`);let o=a.validProperties,u=Number(o["initial-scale"]);return!isNaN(u)&&u<1?{hasViewportTag:!0,isMobileOptimized:!1,parserWarnings:n,rawContentString:i}:{hasViewportTag:!0,isMobileOptimized:!!(o.width||u),parserWarnings:n,rawContentString:i}}},Eh=G(bC,null)});var P9={};x(P9,{UIStrings:()=>sn,default:()=>hpe});function lpe(e){let t=new Map;return e.forEach(r=>{let{nodeId:n,cssRule:i,fontSize:a,textLength:o,parentNode:u}=r,l=fpe(i,n),c=t.get(l);c?c.textLength+=o:t.set(l,{nodeId:n,parentNode:u,cssRule:i,fontSize:a,textLength:o})}),[...t.values()]}function cpe(e=[]){let t=new Map;for(let r=0;r<e.length;r+=2){let n=e[r],i=e[r+1];if(!n||!i)continue;let a=i.trim();a&&t.set(n.toLowerCase(),a)}return t}function dpe(e){let t=cpe(e.attributes);if(t.has("id"))return"#"+t.get("id");{let r=t.get("class");if(r)return"."+r.split(/\s+/).join(".")}return e.nodeName.toLowerCase()}function ppe(e){let r=(e.attributes||[]).map((n,i)=>i%2===0?` ${n}`:`="${n}"`).join("");return{type:"node",selector:e.parentNode?dpe(e.parentNode):"",snippet:`<${e.nodeName.toLowerCase()}${r}>`}}function mpe(e,t,r){if(!t||t.type==="Attributes"||t.type==="Inline")return{source:{type:"url",value:e},selector:ppe(r)};if(t.parentRule&&t.parentRule.origin==="user-agent")return{source:{type:"\ -code",value:"User Agent Stylesheet"},selector:t.parentRule.selectors.map(i=>i.text).join(", ")};let n="";if(t.parentRule&&(n=t.parentRule.selectors.map(a=>a.text).join(", ")),t.stylesheet&&!t.stylesheet.sourceURL)return{source:{type:"code",value:"dynamic"},selector:n};if(t.stylesheet&&t.range){let{range:i,stylesheet:a}=t,o=a.hasSourceURL?"comment":"network",u=i.startLine,l=i.startColumn;a.isInline&&o!=="comment"&&(u+=a.startLine,i.startLine===0&&(l+=a.startColumn));let p=v.makeSourceLocation(a.sourceURL,u,l);return p.urlProvider=o,{source:p,selector:n}}return{selector:n,source:{type:"code",value:"Unknown"}}}function fpe(e,t){if(e&&e.type==="Regular"){let r=e.range?e.range.startLine:0,n=e.range?e.range.startColumn:0;return`${e.styleSheetId}@${r}:${n}`}else return`node_${t}`}var upe,sn,En,DC,hpe,O9=g(()=>{"use strict";d();R();V();wC();upe=60,sn={title:"Document uses legible font sizes",failureTitle:"Document doesn't use legible font sizes",description:"Font sizes less than 12px are too s\ -mall to be legible and require mobile visitors to “pinch to zoom” in order to read. Strive to have >60% of page text ≥12px. [Learn more about legible font sizes](https://developer.chrome.com/docs/lighthouse/seo/font-size/).",displayValue:"{decimalProportion, number, extendedPercent} legible text",explanationViewport:"Text is illegible because there's no viewport meta tag optimized for mobile screens.",additionalIllegibleText:"Add'l illegible text",legibleText:"Legible text",columnSelector:"Selector",columnPercentPageText:"% of Page Text",columnFontSize:"Font Size"},En=D("core/audits/seo/font-size.js",sn);s(lpe,"getUniqueFailingRules");s(cpe,"getAttributeMap");s(dpe,"getSelector");s(ppe,"nodeToTableNode");s(mpe,"findStyleRuleSource");s(fpe,"getFontArtifactId");DC=class extends v{static{s(this,"FontSize")}static get meta(){return{id:"font-size",title:En(sn.title),failureTitle:En(sn.failureTitle),description:En(sn.description),requiredArtifacts:["FontSize","URL","MetaElements"]}}static async audit(t,r){ -if(r.settings.formFactor==="desktop")return{score:1,notApplicable:!0};if(!(await Eh.request(t.MetaElements,r)).isMobileOptimized)return{score:0,explanation:En(sn.explanationViewport)};let{analyzedFailingNodesData:i,analyzedFailingTextLength:a,failingTextLength:o,totalTextLength:u}=t.FontSize;if(u===0)return{score:1};let l=lpe(i),c=(u-o)/u*100,p=t.URL.finalDisplayedUrl,m=[{key:"source",valueType:"source-location",label:En(F.columnSource)},{key:"selector",valueType:"code",label:En(sn.columnSelector)},{key:"coverage",valueType:"text",label:En(sn.columnPercentPageText)},{key:"fontSize",valueType:"text",label:En(sn.columnFontSize)}],f=l.sort((E,T)=>T.textLength-E.textLength).map(({cssRule:E,textLength:T,fontSize:S,parentNode:C})=>{let _=T/u*100,L=mpe(p,E,C);return{source:L.source,selector:L.selector,coverage:`${_.toFixed(2)}%`,fontSize:`${S}px`}});if(a<o){let E=(o-a)/u*100;f.push({source:{type:"code",value:En(sn.additionalIllegibleText)},selector:"",coverage:`${E.toFixed(2)}%`,fontSize:"< 1\ -2px"})}c>0&&f.push({source:{type:"code",value:En(sn.legibleText)},selector:"",coverage:`${c.toFixed(2)}%`,fontSize:"≥ 12px"});let h=c/100,y=En(sn.displayValue,{decimalProportion:h}),b=v.makeTableDetails(m,f),w=c>=upe;return{score:Number(w),details:b,displayValue:y}}},hpe=DC});function B9(e){let t=gpe;for(;e.length<3;)e+="`";for(let r=0;r<=e.length-1;r++){let n=e.charCodeAt(r)-96;if(t=t[n],!t)return!1}return!0}var gpe,U9=g(()=>{"use strict";d();gpe=[,[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,,,,,1,1,1,1,,,1,1,1,,1,,1,,1,1],[1,1,1,,1,1,,1,1,1,,1,,,1,1,1,,,1,1,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,,,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1],[,1,,,,,,1,,1,,,,,1,,1,,,,1,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,,,1,,,,, + }`,transformDependsBoxSize:"Transform-related property depends on box size",filterMayMovePixels:"Filter-related property may move pixels",nonReplaceCompositeMode:'Effect has composite mode other than "replace"',incompatibleAnimations:"Target has another animation which is incompatible",unsupportedTimingParameters:"Effect has unsupported timing parameters"},Ui=D("core/audits/non-composited-animations.js",mr),Dfe=[{flag:8192,text:mr.unsupportedCSSProperty},{flag:2048,text:mr.transformDependsBoxSize},{flag:4096,text:mr.filterMayMovePixels},{flag:16,text:mr.nonReplaceCompositeMode},{flag:64,text:mr.incompatibleAnimations},{flag:8,text:mr.unsupportedTimingParameters}];s(xfe,"getActionableFailureReasons");jC=class extends b{static{s(this,"NonCompositedAnimations")}static get meta(){return{id:"non-composited-animations",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:Ui(mr.title),description:Ui(mr.description),guidanceLevel:2,requiredArtifacts:["TraceElements","HostUserAgent"]}}static async audit(t){ +let n=t.HostUserAgent.match(/Chrome\/(\d+)/);if(!n||Number(n[1])<86)return{score:1,notApplicable:!0,metricSavings:{CLS:0}};let r=[],a=!1;t.TraceElements.forEach(u=>{if(u.traceEventType!=="animation")return;let l=u.animations||[],m=new Map;for(let{name:f,failureReasonsMask:h,unsupportedProperties:y}of l){if(!h)continue;let v=xfe(h,y||[]);for(let w of v){f&&(a=!0);let x=m.get(f)||new Set;x.add(w),m.set(f,x)}}if(!m.size)return;let p=[];for(let[f,h]of m)for(let y of h)p.push({failureReason:y,animation:f});r.push({node:b.makeNodeItem(u.node),subItems:{type:"subitems",items:p}})});let o=[{key:"node",valueType:"node",subItemsHeading:{key:"failureReason",valueType:"text"},label:Ui(F.columnElement)}];a&&o.push({key:null,valueType:"text",subItemsHeading:{key:"animation",valueType:"text"},label:Ui(F.columnName)});let i=b.makeTableDetails(o,r),c;return r.length>0&&(c=Ui(mr.displayValue,{itemCount:r.length})),{score:r.length===0?1:0,notApplicable:r.length===0,metricSavings:{CLS:0},details:i,displayValue:c}}}, +Efe=jC});var Gj={};T(Gj,{default:()=>Tfe});var Tfe,Vj=g(()=>{"use strict";d();Tfe={meta:{id:"oopif-iframe-test-audit",title:"IFrame Elements",failureTitle:"IFrame Elements",description:"Audit to force the inclusion of IFrameElements artifact",requiredArtifacts:["IFrameElements"]},audit:()=>({score:1})}});var $j={};T($j,{UIStrings:()=>Bo,default:()=>Sfe});var Bo,Ir,zC,Sfe,Yj=g(()=>{"use strict";d();V();rn();A();Bo={title:"Ensure proper origin isolation with COOP",description:"The Cross-Origin-Opener-Policy (COOP) can be used to isolate the top-level window from other documents such as pop-ups. [Learn more about deploying the COOP header.](https://web.dev/articles/why-coop-coep#coop)",noCoop:"No COOP header found",invalidSyntax:"Invalid syntax",columnDirective:"Directive",columnSeverity:"Severity"},Ir=D("core/audits/origin-isolation.js",Bo),zC=class extends b{static{s(this,"OriginIsolation")}static get meta(){return{id:"origin-isolation",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:Ir(Bo.title),description:Ir(Bo.description),requiredArtifacts:["devtoolsLogs","URL"],supportedModes:["navigation"]}}static async getRawCoop(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],o=(await Qe.request({devtoolsLog:r,URL:t.URL},n)).responseHeaders.filter(i=>i.name.toLowerCase()==="cross-origin-opener-pol\ +icy").flatMap(i=>i.value);return o=o.map(i=>i.toLowerCase().replace(/\s/g,"")),o}static findingToTableItem(t,n,r){return{directive:t,description:n,severity:r}}static constructResults(t){let n=[...t],r=["unsafe-none","same-origin-allow-popups","same-origin","noopener-allow-popups"],a=[],o=[];n.length||a.push({severity:Ir(F.itemSeverityHigh),description:Ir(Bo.noCoop),directive:void 0});for(let c of t)r.includes(c)||o.push({severity:Ir(F.itemSeverityLow),description:Ir(Bo.invalidSyntax),directive:c});let i=[...a.map(c=>this.findingToTableItem(c.directive,c.description,Ir(F.itemSeverityHigh))),...o.map(c=>this.findingToTableItem(c.directive,c.description,Ir(F.itemSeverityLow)))];return{score:a.length||o.length?0:1,results:i}}static async audit(t,n){let r=await this.getRawCoop(t,n),{score:a,results:o}=this.constructResults(r),i=[{key:"description",valueType:"text",subItemsHeading:{key:"description"},label:Ir(F.columnDescription)},{key:"directive",valueType:"code",subItemsHeading:{key:"direc\ +tive"},label:Ir(Bo.columnDirective)},{key:"severity",valueType:"text",subItemsHeading:{key:"severity"},label:Ir(Bo.columnSeverity)}],c=b.makeTableDetails(i,o);return{score:a,notApplicable:!o.length,details:c}}},Sfe=zC});var Kj={};T(Kj,{default:()=>Rfe});var Cfe,kfe,Ffe,qC,Rfe,Jj=g(()=>{"use strict";d();V();A();Jr();_d();iC();Eo();pC();Fa();Cfe=3651,kfe=1e4,Ffe=D("core/audits/predictive-perf.js",{}),qC=class extends b{static{s(this,"PredictivePerf")}static get meta(){return{id:"predictive-perf",title:"Predicted Performance (beta)",description:"Predicted performance evaluates how your site will perform under a cellular connection on a mobile device.",scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(t,n){let r=t.GatherContext,a=t.traces[b.DEFAULT_PASS],o=t.devtoolsLogs[b.DEFAULT_PASS],i=t.URL,c=JSON.parse(JSON.stringify(tr)),u={trace:a,devtoolsLog:o,gatherContext:r,settings:c,URL:i},l=await an.request(u,n),m=await To.request(u,n),p=await gh.request(u,n),f=await Ln.request(u,n),h=await bh.request(u,n),y={roughEstimateOfFCP:l.timing,optimisticFCP:l.optimisticEstimate.timeInMs,pessimisticFCP:l.pessimisticEstimate. +timeInMs,roughEstimateOfTTI:m.timing,optimisticTTI:m.optimisticEstimate.timeInMs,pessimisticTTI:m.pessimisticEstimate.timeInMs,roughEstimateOfSI:p.timing,optimisticSI:p.optimisticEstimate.timeInMs,pessimisticSI:p.pessimisticEstimate.timeInMs,roughEstimateOfLCP:f.timing,optimisticLCP:f.optimisticEstimate.timeInMs,pessimisticLCP:f.pessimisticEstimate.timeInMs,roughEstimateOfTTFB:h.metrics.timeToFirstByte,roughEstimateOfLCPLoadStart:h.metrics.lcpLoadStart,roughEstimateOfLCPLoadEnd:h.metrics.lcpLoadEnd};return{score:b.computeLogNormalScore({p10:Cfe,median:kfe},y.roughEstimateOfTTI),numericValue:y.roughEstimateOfTTI,numericUnit:"millisecond",displayValue:Ffe(F.ms,{timeInMs:y.roughEstimateOfTTI}),details:{type:"debugdata",items:[y]}}}},Rfe=qC});var Xj={};T(Xj,{UIStrings:()=>mm,default:()=>Afe});var Ife,mm,xh,HC,Afe,Zj=g(()=>{"use strict";d();V();A();DS();ut();Ife=/^(optional)$/,mm={title:"Fonts with `font-display: optional` are preloaded",failureTitle:"Fonts with `font-display: optional` are not preloaded",description:"Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)"},xh=D("core/audits/preload-fonts.js",mm),HC=class e extends b{static{s(this,"PreloadFontsAudit")}static get meta(){return{id:"preload-fonts",title:xh(mm.title),failureTitle:xh(mm.failureTitle),description:xh(mm.description),requiredArtifacts:["devtoolsLogs","URL","CSSUsage"]}}static getURLsAttemptedToPreload(t){let n=t.filter(r=>r.resourceType==="Font").filter(r=>r.isLinkPreload).map(r=>r.url);return new Set(n)}static async audit(t,n){let r=t.devtoolsLogs[this.DEFAULT_PASS],a=await oe.request(r,n),o=wS.findFontDisplayDeclarations(t,Ife).passingURLs,i=e.getURLsAttemptedToPreload( +a),c=Array.from(o).filter(l=>!i.has(l)).map(l=>({url:l})),u=[{key:"url",valueType:"url",label:xh(F.columnURL)}];return{score:c.length>0?0:1,details:b.makeTableDetails(u,c),notApplicable:o.size===0}}},Afe=HC});var Qj={};T(Qj,{UIStrings:()=>Eh,default:()=>_fe});var Eh,pm,WC,_fe,ez=g(()=>{"use strict";d();V();A();Bt();rn();Eo();Vr();Nd();Eh={title:"Preload Largest Contentful Paint image",description:"If the LCP element is dynamically added to the page, you should preload the image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/articles/optimize-lcp#optimize_when_the_resource_is_discovered)."},pm=D("core/audits/prioritize-lcp-image.js",Eh),WC=class e extends b{static{s(this,"PrioritizeLcpImage")}static get meta(){return{id:"prioritize-lcp-image",title:pm(Eh.title),description:pm(Eh.description),supportedModes:["navigation"],guidanceLevel:4,requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL","TraceElements"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static shouldPreloadRequest(t,n,r){return t.isLinkPreload||K.isNonNetworkRequest(t)||r.length<=2?!1:t.frameId===n.frameId}static findLCPNode(t,n){for(let{node:r}of t.traverseGenerator())if(r.type=== +"network"&&r.request.requestId===n.requestId)return r}static getLcpInitiatorPath(t,n){let r=[],a=!1,o=t;for(;o;){a||=o.requestId===n.requestId;let i=o.initiator?.type??"other";if(o.initiatorRequest&&o.initiatorRequest===o.redirectSource&&(i="redirect"),!o.initiatorRequest&&!a&&(i="fallbackToMain"),r.push({url:o.url,initiatorType:i}),a)break;o=o.initiatorRequest||n}return r}static getLCPNodeToPreload(t,n,r){if(!r)return{};let a=e.findLCPNode(n,r),o=e.getLcpInitiatorPath(r,t);return a?{lcpNodeToPreload:e.shouldPreloadRequest(r,t,o)?a:void 0,initiatorPath:o}:{initiatorPath:o}}static computeWasteWithGraph(t,n,r,a){if(!n)return{wastedMs:0,results:[]};let o=r.cloneWithRelationships(),i=new Set;for(let w of n.getDependencies())i.add(w.id);let c=null,u=null;for(let{node:w}of o.traverseGenerator())w.type==="network"&&(w.isMainDocument()?u=w:w.id===n.id&&(c=w));if(!u)throw new Error("Could not find main document node");if(!c)throw new Error("Could not find the LCP node");c.removeAllDependencies(), +c.addDependency(u);let l=a.simulate(r),m=a.simulate(o),p=l.nodeTimings.get(n);if(!p)throw new Error("Impossible - node timings should never be undefined");let f=m.nodeTimings.get(c);if(!f)throw new Error("Impossible - node timings should never be undefined");let h=Array.from(m.nodeTimings.keys()).reduce((w,x)=>w.set(x.id,x),new Map),y=0;for(let w of Array.from(i)){let x=h.get(w);if(!x)throw new Error("Impossible - node should never be undefined");let S=m.nodeTimings.get(x)?.endTime||0;y=Math.max(y,S)}let v=p.endTime-Math.max(f.endTime,y);return{wastedMs:v,results:[{node:b.makeNodeItem(t.node),url:n.request.url,wastedMs:v}]}}static async audit(t,n){let r=t.GatherContext,a=t.traces[e.DEFAULT_PASS],o=t.devtoolsLogs[e.DEFAULT_PASS],i=t.URL,c=n.settings,u={trace:a,devtoolsLog:o,gatherContext:r,settings:c,URL:i},l=t.TraceElements.find(R=>R.traceEventType==="largest-contentful-paint");if(!l||l.type!=="image")return{score:null,notApplicable:!0,metricSavings:{LCP:0}};let m=await Qe.request({devtoolsLog:o, +URL:i},n),p=await Ln.request(u,n),f=await nn.request({devtoolsLog:o,settings:c},n),h=await Co.request({trace:a,devtoolsLog:o},n),y=p.pessimisticGraph,{lcpNodeToPreload:v,initiatorPath:w}=e.getLCPNodeToPreload(m,y,h),{results:x,wastedMs:E}=e.computeWasteWithGraph(l,v,y,f),S=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:pm(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:pm(F.columnWastedMs)}],k=b.makeOpportunityDetails(S,x,{overallSavingsMs:E,sortedBy:["wastedMs"]});return w&&(k.debugData={type:"debugdata",initiatorPath:w,pathLength:w.length}),{score:x.length?0:1,numericValue:E,numericUnit:"millisecond",displayValue:E?pm(F.displayValueMsSavings,{wastedMs:E}):"",details:k,metricSavings:{LCP:E}}}},_fe=WC});var tz={};T(tz,{UIStrings:()=>fm,default:()=>Mfe});var fm,GC,VC,Mfe,nz=g(()=>{"use strict";d();V();A();dt();fm={title:"Redirects HTTP traffic to HTTPS",failureTitle:"Does not redirect HTTP traffic to HTTPS",description:"Make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developer.chrome.com/docs/lighthouse/pwa/redirects-http/)."},GC=D("core/audits/redirects-http.js",fm),VC=class extends b{static{s(this,"RedirectsHTTP")}static get meta(){return{id:"redirects-http",title:GC(fm.title),failureTitle:GC(fm.failureTitle),description:GC(fm.description),requiredArtifacts:["URL"],supportedModes:["navigation"]}}static audit(t){if(!t.URL.requestedUrl)throw new Error("Missing requestedUrl");let n=new URL(t.URL.requestedUrl),r=new URL(t.URL.finalDisplayedUrl),a=n.protocol==="http:",o=X.isLikeLocalhost(r.hostname);if(!a||o)return{score:null,notApplicable:!0};let i=r.protocol==="https:";return{score:Number(i)}}},Mfe=VC});var rz={};T(rz,{UIStrings:()=>Th,default:()=>Nfe});var Th,hm,$C,Nfe,az=g(()=>{"use strict";d();V();A();Ut();ut();_d();Th={title:"Avoid multiple page redirects",description:"Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/)."},hm=D("core/audits/redirects.js",Th),$C=class e extends b{static{s(this,"Redirects")}static get meta(){return{id:"redirects",title:hm(Th.title),description:hm(Th.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,supportedModes:["navigation"],guidanceLevel:2,requiredArtifacts:["URL","GatherContext","devtoolsLogs","traces"]}}static getDocumentRequestChain(t,n){let r=[];for(let a of n.processEvents){if(a.name!=="navigationStart")continue;let o=a.args.data||{};if(!o.documentLoaderURL||!o.isLoadingMainFrame)continue;let i=t.find(c=>c.requestId===o.navigationId);for(;i;)r.push(i),i=i.redirectDestination}if(!r.length)throw new Error("No na\ +vigation requests found");return r}static async audit(t,n){let r=n.settings,a=t.traces[b.DEFAULT_PASS],o=t.devtoolsLogs[b.DEFAULT_PASS],i=t.GatherContext,c=await ke.request(a,n),u=await oe.request(o,n),l=e.getDocumentRequestChain(u,c),m={trace:a,devtoolsLog:o,gatherContext:i,settings:r,URL:t.URL},p=await To.request(m,n),f=new Map;for(let[x,E]of p.pessimisticEstimate.nodeTimings.entries())x.type==="network"&&f.set(x.request.requestId,E);let h=0,y=[];for(let x=0;x<l.length&&!(l.length<2);x++){let E=l[x],S=l[x+1]||E,k=f.get(E.requestId),R=f.get(S.requestId);if(!k||!R)throw new Error("Could not find redirects in graph");let O=R.startTime-k.startTime,N=S.networkRequestTime-E.networkRequestTime,H=r.throttlingMethod==="simulate"?O:N;h+=H,y.push({url:E.url,wastedMs:H})}let v=[{key:"url",valueType:"url",label:hm(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:hm(F.columnTimeSpent)}],w=b.makeOpportunityDetails(v,y,{overallSavingsMs:h});return{score:y.length?0:1,numericValue:h,numericUnit:"\ +millisecond",displayValue:h?hm(F.displayValueMsSavings,{wastedMs:h}):"",details:w,metricSavings:{LCP:h,FCP:h}}}},Nfe=$C});var YC,oz,iz=g(()=>{"use strict";d();Na();xe();ut();Bt();dt();YC=class e{static{s(this,"ResourceSummary")}static determineResourceType(t){return t.resourceType&&{Stylesheet:"stylesheet",Image:"image",Media:"media",Font:"font",Script:"script",Document:"document"}[t.resourceType]||"other"}static summarize(t,n,r){let a={stylesheet:{count:0,resourceSize:0,transferSize:0},image:{count:0,resourceSize:0,transferSize:0},media:{count:0,resourceSize:0,transferSize:0},font:{count:0,resourceSize:0,transferSize:0},script:{count:0,resourceSize:0,transferSize:0},document:{count:0,resourceSize:0,transferSize:0},other:{count:0,resourceSize:0,transferSize:0},total:{count:0,resourceSize:0,transferSize:0},"third-party":{count:0,resourceSize:0,transferSize:0}},o=r.firstParty?.domains.map(i=>`*.${i}`)||[`*.${X.getRootDomain(n.finalDisplayedUrl)}`];return t.filter(i=>!(this.determineResourceType(i)==="other"&&i.url.endsWith("/favicon.ico")||K.isNonNetworkRequest(i))).forEach(i=>{let c=this.determineResourceType( +i);a[c].count++,a[c].resourceSize+=i.resourceSize,a[c].transferSize+=i.transferSize,a.total.count++,a.total.resourceSize+=i.resourceSize,a.total.transferSize+=i.transferSize,o.some(l=>{let m=new URL(i.url);return l.startsWith("*.")?m.hostname.endsWith(l.slice(2)):m.hostname===l})||(a["third-party"].count++,a["third-party"].resourceSize+=i.resourceSize,a["third-party"].transferSize+=i.transferSize)}),a}static async compute_(t,n){let r=await oe.request(t.devtoolsLog,n),a=await Dn.request({URL:t.URL,devtoolsLog:t.devtoolsLog},n);return e.summarize(r,t.URL,a)}},oz=G(YC,["URL","devtoolsLog"])});var sz={};T(sz,{default:()=>Ofe});var pr,KC,Ofe,cz=g(()=>{"use strict";d();V();iz();A();pr=D("core/audits/resource-summary.js"),KC=class extends b{static{s(this,"ResourceSummary")}static get meta(){return{id:"resource-summary",title:"Resources Summary",description:"Aggregates all network requests and groups them by type",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,requiredArtifacts:["devtoolsLogs","URL"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await oz.request({devtoolsLog:r,URL:t.URL},n),o=[{key:"label",valueType:"text",label:pr(F.columnResourceType)},{key:"requestCount",valueType:"numeric",label:pr(F.columnRequests)},{key:"transferSize",valueType:"bytes",label:pr(F.columnTransferSize)}],i={total:pr(F.totalResourceType),document:pr(F.documentResourceType),script:pr(F.scriptResourceType),stylesheet:pr(F.stylesheetResourceType),image:pr(F.imageResourceType),media:pr(F.mediaResourceType),font:pr(F.fontResourceType),other:pr(F.otherResourceType),"third-party":pr(F. +thirdPartyResourceType)},u=Object.keys(a).map(h=>({resourceType:h,label:i[h],requestCount:a[h].count,transferSize:a[h].transferSize})),l=u.find(h=>h.resourceType==="third-party")||[],p=u.filter(h=>h.resourceType!=="third-party").sort((h,y)=>y.transferSize-h.transferSize).concat(l);return{details:b.makeTableDetails(o,p),score:null}}},Ofe=KC});var lz={};T(lz,{default:()=>Pfe});var uz,Lfe,JC,Pfe,dz=g(()=>{"use strict";d();uz=mn(KS(),1);V();Wt();um();Lfe=8,JC=class e extends b{static{s(this,"ScreenshotThumbnails")}static get meta(){return{id:"screenshot-thumbnails",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Screenshot Thumbnails",description:"This is what the load of your site looked like.",requiredArtifacts:["traces","GatherContext"]}}static scaleImageToThumbnail(t,n){let r=t.width/n,a=Math.floor(t.height/r),o=new Uint8Array(n*a*4);for(let i=0;i<n;i++)for(let c=0;c<a;c++){let u=Math.floor(i*r),m=(Math.floor(c*r)*t.width+u)*4,p=(c*n+i)*4;o[p]=t.data[m],o[p+1]=t.data[m+1],o[p+2]=t.data[m+2],o[p+3]=t.data[m+3]}return{width:n,height:a,data:o}}static async _audit(t,n){let r=t.traces[b.DEFAULT_PASS],a=new Map,o=await Po.request(r,n),i=n.options.minimumTimelineDuration||3e3,c=n.options.numberOfThumbnails||Lfe,u=n.options.thumbnailWidth||null,l=[],m=o.frames.filter(h=>!h.isProgressInterpolated()),p=o.complete||Math.max(...o. +frames.map(h=>h.getTimeStamp()-o.beginning)),f=Math.max(p,i);if(!m.length||!Number.isFinite(f))throw new q(q.errors.INVALID_SPEEDLINE);for(let h=1;h<=c;h++){let y=o.beginning+f*h/c,v=null;h===c?v=m[m.length-1]:m.forEach(E=>{E.getTimeStamp()<=y&&(v=E)});let w,x=a.get(v);if(x)w=x;else if(u!==null){let E=v.getParsedImage(),S=e.scaleImageToThumbnail(E,u);w=uz.default.encode(S,90).data.toString("base64"),a.set(v,w)}else w=v.getImage().toString("base64"),a.set(v,w);l.push({timing:Math.round(y-o.beginning),timestamp:y*1e3,data:`data:image/jpeg;base64,${w}`})}return{score:1,details:{type:"filmstrip",scale:f,items:l}}}static async audit(t,n){try{return await this._audit(t,n)}catch(r){if(new Set([q.errors.NO_SCREENSHOTS.code,q.errors.SPEEDINDEX_OF_ZERO.code,q.errors.NO_SPEEDLINE_FRAMES.code,q.errors.INVALID_SPEEDLINE.code]).has(r.code)&&t.GatherContext.gatherMode==="timespan")return{notApplicable:!0,score:1};throw r}}},Pfe=JC});var mz={};T(mz,{default:()=>Bfe});var XC,Bfe,pz=g(()=>{"use strict";d();V();ko();k2();i2();Fo();XC=class e extends b{static{s(this,"ScriptTreemapDataAudit")}static get meta(){return{id:"script-treemap-data",scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,title:"Script Treemap Data",description:"Used for treemap app",requiredArtifacts:["traces","devtoolsLogs","SourceMaps","Scripts","JsUsage","URL"]}}static makeScriptNode(t,n,r){function a(l){return{name:l,resourceBytes:0}}s(a,"newNode");let o=a(n);function i(l,m){let p=o;o.resourceBytes+=m.resourceBytes,m.unusedBytes&&(o.unusedBytes=(o.unusedBytes||0)+m.unusedBytes);let f=l.replace(n,"").split(/\/+/);f.forEach((h,y)=>{if(h.length===0)return;let v=y===f.length-1,w=p.children&&p.children.find(x=>x.name===h);w||(w=a(h),p.children=p.children||[],p.children.push(w)),p=w,p.resourceBytes+=m.resourceBytes,m.unusedBytes&&(p.unusedBytes=(p.unusedBytes||0)+m.unusedBytes),v&&m.duplicatedNormalizedModuleName!==void 0&&(p.duplicatedNormalizedModuleName= +m.duplicatedNormalizedModuleName)})}s(i,"addAllNodesInSourcePath");for(let[l,m]of Object.entries(r))i(l,m);function c(l){for(;l.children&&l.children.length===1;)l.name+="/"+l.children[0].name,l.children=l.children[0].children;if(l.children)for(let m of l.children)c(m)}if(s(c,"collapseAll"),c(o),!o.name)return{...o,name:t,children:o.children};let u={...o};return u.name=t,u.children=[o],u}static async makeNodes(t,n){let r=[],a=new Map,o=await Pn.request(t,n),i=await Od.request(t,n);for(let c of t.Scripts){if(c.scriptLanguage!=="JavaScript")continue;let u=c.url,l=o.find(h=>c.scriptId===h.script.scriptId),m=t.JsUsage[c.scriptId],p=m?await V1.request({scriptId:c.scriptId,scriptCoverage:m,bundle:l},n):void 0,f;if(l&&!("errorMessage"in l.sizes)){let h={};for(let y of Object.keys(l.sizes.files)){let v={resourceBytes:l.sizes.files[y]};p?.sourcesWastedBytes&&(v.unusedBytes=p.sourcesWastedBytes[y]);let w=y;l.rawMap.sourceRoot&&y.startsWith(l.rawMap.sourceRoot)&&(w=y.replace(l.rawMap.sourceRoot,"")); +let x=Od.normalizeSource(w);i.has(x)&&(v.duplicatedNormalizedModuleName=x),h[y]=v}if(l.sizes.unmappedBytes){let y={resourceBytes:l.sizes.unmappedBytes};p?.sourcesWastedBytes&&(y.unusedBytes=p.sourcesWastedBytes["(unmapped)"]),h["(unmapped)"]=y}f=this.makeScriptNode(c.url,l.rawMap.sourceRoot||"",h)}else f={name:u,resourceBytes:p?.totalBytes??c.length??0,unusedBytes:p?.wastedBytes};if(M1(c)){let h=a.get(c.executionContextAuxData.frameId);h||(h={name:u,resourceBytes:0,unusedBytes:void 0,children:[]},a.set(c.executionContextAuxData.frameId,h),r.push(h)),h.resourceBytes+=f.resourceBytes,f.unusedBytes&&(h.unusedBytes=(h.unusedBytes||0)+f.unusedBytes),f.name=c.content?"(inline) "+c.content.trimStart().substring(0,15)+"…":"(inline)",h.children?.push(f)}else r.push(f)}return r}static async audit(t,n){return{score:1,details:{type:"treemap-data",nodes:await e.makeNodes(t,n)}}}},Bfe=XC});var fz={};T(fz,{UIStrings:()=>ia,default:()=>Ufe});var ia,Uo,ZC,Ufe,hz=g(()=>{"use strict";d();V();dt();rn();A();ia={title:"Document has a valid `rel=canonical`",failureTitle:"Document does not have a valid `rel=canonical`",description:"Canonical links suggest which URL to show in search results. [Learn more about canonical links](https://developer.chrome.com/docs/lighthouse/seo/canonical/).",explanationConflict:"Multiple conflicting URLs ({urlList})",explanationInvalid:"Invalid URL ({url})",explanationRelative:"Is not an absolute URL ({url})",explanationPointsElsewhere:"Points to another `hreflang` location ({url})",explanationRoot:"Points to the domain's root URL (the homepage), instead of an equivalent page of content"},Uo=D("core/audits/seo/canonical.js",ia),ZC=class e extends b{static{s(this,"Canonical")}static get meta(){return{id:"canonical",title:Uo(ia.title),failureTitle:Uo(ia.failureTitle),description:Uo(ia.description),supportedModes:["navigation"],requiredArtifacts:["LinkEl\ +ements","URL","devtoolsLogs"]}}static collectCanonicalURLs(t){let n=new Set,r=new Set,a,o;for(let i of t)if(i.source!=="body")if(i.rel==="canonical"){if(!i.hrefRaw)continue;i.href?X.isValid(i.hrefRaw)?n.add(i.href):o=i:a=i}else i.rel==="alternate"&&i.href&&i.hreflang&&r.add(i.href);return{uniqueCanonicalURLs:n,hreflangURLs:r,invalidCanonicalLink:a,relativeCanonicallink:o}}static findInvalidCanonicalURLReason(t){let{uniqueCanonicalURLs:n,invalidCanonicalLink:r,relativeCanonicallink:a}=t;if(r)return{score:0,explanation:Uo(ia.explanationInvalid,{url:r.hrefRaw})};if(a)return{score:0,explanation:Uo(ia.explanationRelative,{url:a.hrefRaw})};let o=Array.from(n);if(o.length===0)return{score:1,notApplicable:!0};if(o.length>1)return{score:0,explanation:Uo(ia.explanationConflict,{urlList:o.join(", ")})}}static findCommonCanonicalURLMistakes(t,n,r){let{hreflangURLs:a}=t;if(a.has(r.href)&&a.has(n.href)&&r.href!==n.href)return{score:0,explanation:Uo(ia.explanationPointsElsewhere,{url:r.href})};if(n.origin=== +r.origin&&n.pathname==="/"&&r.pathname!=="/")return{score:0,explanation:Uo(ia.explanationRoot)}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await Qe.request({devtoolsLog:r,URL:t.URL},n),o=new URL(a.url),i=e.collectCanonicalURLs(t.LinkElements),c=e.findInvalidCanonicalURLReason(i);if(c)return c;let u=new URL([...i.uniqueCanonicalURLs][0]),l=e.findCommonCanonicalURLMistakes(i,u,o);return l||{score:1}}},Ufe=ZC});var gz={};T(gz,{UIStrings:()=>yc,default:()=>jfe});var yc,Sh,QC,jfe,yz=g(()=>{"use strict";d();V();A();yc={title:"Links are crawlable",failureTitle:"Links are not crawlable",description:"Search engines may use `href` attributes on links to crawl websites. Ensure that the `href` attribute of anchor elements links to an appropriate destination, so more pages of the site can be discovered. [Learn how to make links crawlable](https://support.google.com/webmasters/answer/9112205)",columnFailingLink:"Uncrawlable Link"},Sh=D("core/audits/seo/crawlable-anchors.js",yc),QC=class extends b{static{s(this,"CrawlableAnchors")}static get meta(){return{id:"crawlable-anchors",title:Sh(yc.title),failureTitle:Sh(yc.failureTitle),description:Sh(yc.description),requiredArtifacts:["AnchorElements","URL"]}}static audit({AnchorElements:t,URL:n}){let r=t.filter(({rawHref:i,name:c="",role:u="",id:l,href:m})=>{if(i=i.replace(/\s/g,""),c=c.trim(),u=u.trim(),u.length>0||i.startsWith("mailto:")||i===""&&l)return;let p=/javascript:void(\(|)0(\)|)/; +if(i.startsWith("file:"))return!0;if(!(c.length>0)){if(m===""||p.test(i))return!0;try{new URL(i,n.finalDisplayedUrl)}catch{return!0}}}),a=[{key:"node",valueType:"node",label:Sh(yc.columnFailingLink)}],o=r.map(i=>({node:b.makeNodeItem(i.node)}));return{score:+(r.length===0),details:b.makeTableDetails(a,o)}}},jfe=QC});var bz=de(ym=>{d();ym.getRenderingDataFromViewport=function(e,t,n,r,a){var o=t/100,i=n/100,c=null,u=null,l=null,m=null,p=null,f=null,h=null,y=null,v=null,w=t,x=n,E="zoom",S="resizes-visual";if(e["maximum-scale"]!==void 0&&(c=Ch(e["maximum-scale"])),e["minimum-scale"]!==void 0&&(u=Ch(e["minimum-scale"])),e["initial-scale"]!==void 0&&(l=Ch(e["initial-scale"])),u!==null&&c===null&&(u=gm(r,Ch(e["minimum-scale"]))),e.width!==void 0&&(m="extend-to-zoom",f=vz(e.width,o,i)),e.height!==void 0&&(p="extend-to-zoom",h=vz(e.height,o,i)),e["user-scalable"]!==void 0)if(E=e["user-scalable"],typeof E=="number")E>=1||E<=-1?E="zoom":E="fixed";else switch(E){case"yes":case"device-width":case"device-height":E="zoom";break;case"no":default:E="fixed";break}if(e["interactive-widget"]!==void 0)switch(e["interactive-widget"]){case"overlays-content":case"resizes-content":case"resizes-visual":S=e["interactive-widget"];break;default:S="resizes-visual";break}l!==null&&(e.width===void 0||y===void 0)&&(e.height!==void 0? +(m=null,f=null):(m="extend-to-zoom",f="extend-to-zoom")),u!==null&&c!==null&&(c=vc(u,c)),l!==null&&(l=ek(l,u,c));var k=l===null&&c===null?null:gm(l,c),R,O;return k===null?(f==="extend-to-zoom"&&(f=null),h==="extend-to-zoom"&&(h=null),m==="extend-to-zoom"&&(m=f),p==="extend-to-zoom"&&(p=h)):(R=w/k,O=x/k,f==="extend-to-zoom"&&(f=R),h==="extend-to-zoom"&&(h=O),m==="extend-to-zoom"&&(m=vc(R,f)),p==="extend-to-zoom"&&(p=vc(O,h))),(m!==null||f!==null)&&(y=vc(m,gm(f,w))),(p!==null||h!==null)&&(v=vc(p,gm(h,x))),y===null&&(v===null?y=w:x!==0?y=Math.round(v*(w/x)):y=w),v===null&&(w!==0?v=Math.round(y*(x/w)):v=x),{zoom:l,width:y,height:v,userZoom:E,interactiveWidget:S}};function gm(e,t){return e===null?t:t===null?e:Math.min(e,t)}s(gm,"min");function vc(e,t){return e===null?t:t===null?e:Math.max(e,t)}s(vc,"max");function vz(e,t,n){return typeof e=="number"?e>=0?ek(e,1,1e4):void 0:e==="device-width"?100*t:e==="device-height"?100*n:1}s(vz,"translateLengthProperty");function Ch(e){if(typeof e=="numbe\ +r")return e>=0?ek(e,.1,10):void 0;if(e==="yes")return 1;if(e==="device-width"||e==="device-height")return 10;if(e==="no"||e===null)return .1}s(Ch,"translateZoomProperty");function ek(e,t,n){return vc(gm(e,n),t)}s(ek,"clamp");ym.parseMetaViewPortContent=function(e){for(var t={validProperties:{},unknownProperties:{},invalidValues:{}},n=1;n<=e.length;){for(;n<=e.length&&RegExp(` | +| |\0d|,|;|=`).test(e[n-1]);)n++;n<=e.length&&(n=qfe(t,e,n))}return t};var zfe=["width","height","initial-scale","minimum-scale","maximum-scale","user-scalable","shrink-to-fit","viewport-fit","interactive-widget"];function qfe(e,t,n){for(var r=n;n<=t.length&&!RegExp(` | +| |\0d|,|;|=`).test(t[n-1]);)n++;if(n>t.length||RegExp(",|;").test(t[n-1]))return n;for(var a=t.slice(r-1,n-1);n<=t.length&&!RegExp(",|;|=").test(t[n-1]);)n++;if(n>t.length||RegExp(",|;").test(t[n-1]))return n;for(;n<=t.length&&RegExp(` | +| |\0d|=`).test(t[n-1]);)n++;if(n>t.length||RegExp(",|;").test(t[n-1]))return n;for(r=n;n<=t.length&&!RegExp(` | +| |\0d|,|;|=`).test(t[n-1]);)n++;var o=t.slice(r-1,n-1);return Hfe(e,a,o),n}s(qfe,"parseProperty");function Hfe(e,t,n){if(zfe.indexOf(t)>=0){var r=parseFloat(n);if(!isNaN(r)){e.validProperties[t]=r;return}var a=n.toLowerCase();if(a==="yes"||a==="no"||a==="device-width"||a==="device-height"||t.toLowerCase()==="viewport-fit"&&(a==="auto"||a==="cover")||t.toLowerCase()==="interactive-widget"&&ym.expectedValues["interactive-widget"].includes(a)){e.validProperties[t]=a;return}e.validProperties[t]=null,e.invalidValues[t]=n}else e.unknownProperties[t]=n}s(Hfe,"setProperty");ym.expectedValues={width:["device-width","device-height","a positive number"],height:["device-width","device-height","a positive number"],"initial-scale":["a positive number"],"minimum-scale":["a positive number"],"maximum-scale":["a positive number"],"user-scalable":["yes","no","0","1"],"shrink-to-fit":["yes","no"],"viewport-fit":["auto","cover"],"interactive-widget":["overlays-content","resizes-content","resizes-visual"]}});var wz,tk,kh,nk=g(()=>{"use strict";d();wz=mn(bz(),1);xe();tk=class{static{s(this,"ViewportMeta")}static async compute_(t){let n=t.find(l=>l.name==="viewport");if(!n)return{hasViewportTag:!1,isMobileOptimized:!1,parserWarnings:[],rawContentString:void 0};let r=[],a=n.content||"",o=wz.default.parseMetaViewPortContent(a);Object.keys(o.unknownProperties).length&&r.push(`Invalid properties found: ${JSON.stringify(o.unknownProperties)}`),Object.keys(o.invalidValues).length&&r.push(`Invalid values found: ${JSON.stringify(o.invalidValues)}`);let i=o.validProperties,c=Number(i["initial-scale"]);return!isNaN(c)&&c<1?{hasViewportTag:!0,isMobileOptimized:!1,parserWarnings:r,rawContentString:a}:{hasViewportTag:!0,isMobileOptimized:!!(i.width||c),parserWarnings:r,rawContentString:a}}},kh=G(tk,null)});var Dz={};T(Dz,{UIStrings:()=>fr,default:()=>Xfe});function Gfe(e){let t=new Map;return e.forEach(n=>{let{nodeId:r,cssRule:a,fontSize:o,textLength:i,parentNode:c}=n,u=Jfe(a,r),l=t.get(u);l?l.textLength+=i:t.set(u,{nodeId:r,parentNode:c,cssRule:a,fontSize:o,textLength:i})}),[...t.values()]}function Vfe(e=[]){let t=new Map;for(let n=0;n<e.length;n+=2){let r=e[n],a=e[n+1];if(!r||!a)continue;let o=a.trim();o&&t.set(r.toLowerCase(),o)}return t}function $fe(e){let t=Vfe(e.attributes);if(t.has("id"))return"#"+t.get("id");{let n=t.get("class");if(n)return"."+n.split(/\s+/).join(".")}return e.nodeName.toLowerCase()}function Yfe(e){let n=(e.attributes||[]).map((r,a)=>a%2===0?` ${r}`:`="${r}"`).join("");return{type:"node",selector:e.parentNode?$fe(e.parentNode):"",snippet:`<${e.nodeName.toLowerCase()}${n}>`}}function Kfe(e,t,n){if(!t||t.type==="Attributes"||t.type==="Inline")return{source:{type:"url",value:e},selector:Yfe(n)};if(t.parentRule&&t.parentRule.origin==="user-agent")return{source:{type:"\ +code",value:"User Agent Stylesheet"},selector:t.parentRule.selectors.map(a=>a.text).join(", ")};let r="";if(t.parentRule&&(r=t.parentRule.selectors.map(o=>o.text).join(", ")),t.stylesheet&&!t.stylesheet.sourceURL)return{source:{type:"code",value:"dynamic"},selector:r};if(t.stylesheet&&t.range){let{range:a,stylesheet:o}=t,i=o.hasSourceURL?"comment":"network",c=a.startLine,u=a.startColumn;o.isInline&&i!=="comment"&&(c+=o.startLine,a.startLine===0&&(u+=o.startColumn));let m=b.makeSourceLocation(o.sourceURL,c,u);return m.urlProvider=i,{source:m,selector:r}}return{selector:r,source:{type:"code",value:"Unknown"}}}function Jfe(e,t){if(e&&e.type==="Regular"){let n=e.range?e.range.startLine:0,r=e.range?e.range.startColumn:0;return`${e.styleSheetId}@${n}:${r}`}else return`node_${t}`}var Wfe,fr,Ar,rk,Xfe,xz=g(()=>{"use strict";d();A();V();nk();Wfe=60,fr={title:"Document uses legible font sizes",failureTitle:"Document doesn't use legible font sizes",description:"Font sizes less than 12px are too s\ +mall to be legible and require mobile visitors to “pinch to zoom” in order to read. Strive to have >60% of page text ≥12px. [Learn more about legible font sizes](https://developer.chrome.com/docs/lighthouse/seo/font-size/).",displayValue:"{decimalProportion, number, extendedPercent} legible text",explanationViewport:"Text is illegible because there's no viewport meta tag optimized for mobile screens.",additionalIllegibleText:"Add'l illegible text",legibleText:"Legible text",columnSelector:"Selector",columnPercentPageText:"% of Page Text",columnFontSize:"Font Size"},Ar=D("core/audits/seo/font-size.js",fr);s(Gfe,"getUniqueFailingRules");s(Vfe,"getAttributeMap");s($fe,"getSelector");s(Yfe,"nodeToTableNode");s(Kfe,"findStyleRuleSource");s(Jfe,"getFontArtifactId");rk=class extends b{static{s(this,"FontSize")}static get meta(){return{id:"font-size",title:Ar(fr.title),failureTitle:Ar(fr.failureTitle),description:Ar(fr.description),requiredArtifacts:["FontSize","URL","MetaElements"]}}static async audit(t,n){ +if(n.settings.formFactor==="desktop")return{score:1,notApplicable:!0};if(!(await kh.request(t.MetaElements,n)).isMobileOptimized)return{score:0,explanation:Ar(fr.explanationViewport)};let{analyzedFailingNodesData:a,analyzedFailingTextLength:o,failingTextLength:i,totalTextLength:c}=t.FontSize;if(c===0)return{score:1};let u=Gfe(a),l=(c-i)/c*100,m=t.URL.finalDisplayedUrl,p=[{key:"source",valueType:"source-location",label:Ar(F.columnSource)},{key:"selector",valueType:"code",label:Ar(fr.columnSelector)},{key:"coverage",valueType:"text",label:Ar(fr.columnPercentPageText)},{key:"fontSize",valueType:"text",label:Ar(fr.columnFontSize)}],f=u.sort((x,E)=>E.textLength-x.textLength).map(({cssRule:x,textLength:E,fontSize:S,parentNode:k})=>{let R=E/c*100,O=Kfe(m,x,k);return{source:O.source,selector:O.selector,coverage:`${R.toFixed(2)}%`,fontSize:`${S}px`}});if(o<i){let x=(i-o)/c*100;f.push({source:{type:"code",value:Ar(fr.additionalIllegibleText)},selector:"",coverage:`${x.toFixed(2)}%`,fontSize:"< 1\ +2px"})}l>0&&f.push({source:{type:"code",value:Ar(fr.legibleText)},selector:"",coverage:`${l.toFixed(2)}%`,fontSize:"≥ 12px"});let h=l/100,y=Ar(fr.displayValue,{decimalProportion:h}),v=b.makeTableDetails(p,f),w=l>=Wfe;return{score:Number(w),details:v,displayValue:y}}},Xfe=rk});function Ez(e){let t=Zfe;for(;e.length<3;)e+="`";for(let n=0;n<=e.length-1;n++){let r=e.charCodeAt(n)-96;if(t=t[r],!t)return!1}return!0}var Zfe,Tz=g(()=>{"use strict";d();Zfe=[,[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,,,,,1,1,1,1,,,1,1,1,,1,,1,,1,1],[1,1,1,,1,1,,1,1,1,,1,,,1,1,1,,,1,1,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,,,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1],[,1,,,,,,1,,1,,,,,1,,1,,,,1,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,,,1,,,,, 1,1,1,,1,,1,,1,,,,,,1],[1,,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,,1,,1,,,,,1,,1,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,,1,1,1,,1,,1,1,1,,,1,1,1,1,1,1,1,1],[,,1,,,1,,1,,,,1,1,1,,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1,1,1,1,1,,,1,1,1],[1,1,1,1,1,,,1,,,1,,,1,1,1,,,,,1,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1, 1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1],[,1,,1,1,1,,1,1,,1,,1,1,1,1,1,1,1, 1],[,1,,1,1,1,1,1,1,1,1,,,1,1,1,,,1,1,,,,,,1,1],[1,1,1,,,,,1,,,,1,1,,1,,,,,,1,,,,,1],[,1,,,1,,,1,,,,,,1],[,1,,1,,,,1,,,,1],[1,,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,,1,,,1,1,1,1],[,1,1,1,1,1,,,1,,,1,,1,1,,1,,1,,,,,1,,1],[,1,,,,1,,,1,1,,1,,1,1,1,1,,1,1,,,1,,,1],[,1,1,,,,,,1,,,,1,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,,1,1,1,,,1,1,1,1,1,1,,1,,,,,1,1,,1,,1],[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,1,1],[,1,1,1,,,,1,1,1,,1,1,,,1,1,,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,,1,,,,,1,1,1,,,1,,1,,,1,1],[,,,,1,,,,,,,,,,,,,,,,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,,1,1,1,,1,1,,,,1,1,1,1,1,,,1,1,1,,,,,1],[1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,1,,,,,,,1],[,1,1,,1,1,,1,,,,,,,,,,,,,1],,[1,1,1,,,,,,,,,,,,,1],[,,,,,,,,1,,,1,,,1,1,,,,,1]],[,[1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,,1],[,,,1,,,,,,,,,,,,,,,1],[,1,,,1,1,,1,,1,1,,,,1,1,,, @@ -1804,119 +2088,119 @@ ,,,,,,,1,1,,1,1,,1],,[,,,,,,,,,,,,,,,,,,1,,1],,[1,,,1,1,,1,1,,,,,1,,1,,,,,1,1,,1],,[,1,,,,,,,,1,1,1,1,1,,1,1,,,,1,1],[,,,,,,,,,,,,,,,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,1,1,1,1],[,,,,,,,,,,,1,,1,,,1],[1,,,,,,,,,,,,,,,,,,1,,1],,,[,1,,,,,,,,,,,,,,1,,,,1,1],[,,,,,,,,,1,,,1,,,,,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,1,1,,,,,,1],,[,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,1,1,,1,1,1,1,1,1,,,1,1,1,1,1,,1,1],[,1,,,,,,,,1],[,,,,1,,,1,,,1,1,,,,,,,,,,1,,,,1],[,1,,1,1,,,1,1,1,,,,1,1,1,1,,1,1,1,1,,1],[,,,,,,,1],[,1,1,,,,,1,,1,,,,,,1,,,,,,1,,1,,1],[,1,,,,,,1,,,,1,,,,,,,,,,1],[,,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1,1,1,1,,1],[,1,,,,,,,,1],[,1,1,,1,,,,,,,,1,,,,,,1,,,1,,1,,1],[,1,,1,,1,,1,1,1,,1,1,1,,1,,,1,1,,1,1,1,1,1],[,1,1,1,1,1,,,1,1,,,,1,1,1,,,,1,1,,,1,1],[,,1,1,1,1,,1,,1,,1,,1,1,1,1,,,,,1,,1,,1],[1,1,1,1,1,1,1,1,,1,,1,,1,1,1,,,1,1,,,,1,,1],[,,,1],,[,1,1,,1,,,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1],[,1,,,,,,1,,1,,1,,,,,,,1,1,,1,1],[,,,,,,1,,1,1,,1,,1,,,,,,, ,,,1],[,1,1,,1,,,,1,,,,1,1,1,,,,1,,1,1,1,,1,1],,[,1,1,,,,,,,,,,,,,1,,,1,,,,,1],[,1,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,1,,,,1,,,,,1,,,,,,,1]],[,[,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[,1,1,1,1,1,,1,,1,1,,,1,1,1,1,,1,,,,,1,1,1],[,,1,1,,1,,1,1,,,,1,1,1,1,,,1,,1,1,1,1,,1],[,1,,1,,,,,,,,1,,1,,1,,,,,,,,,,1],[,,1,,1,,,1,,,,,1,1,,,1,,1,1,1,1],[,1],[,1,1,,1,,1,1,,1,,,1,1,1,,,,1,,,1,,1],[1,1,,1,1,1,,,,,,,,,,,,,1,,1,1,1],[,1,1,,,,,,,1,,,1,,1,,1,,1,1,,,1,,,1],[,,1,,,,,,,,,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,,1,,,,,1,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,,1,,1,1,1,,,1,1,1,1,,,,1,1],[,,,1,1,,,1,,1,,1,,1,1,1,1,,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,,1,,1,,,,1,1,,,1,1,,1,1,,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1,,1,1,,,1],[,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,,1,,,1,,,1,,1,1,1,1,1,,1,,1,1],[,,,,,1,,,,1,,,,,1,1,,,,1], [,1,,1,1,1,,1,,,1,1,1,,,1,,,1,,1,,,1],[,,1,,,,,,,,,1,,1,,,,,1,,1],[,1,1,,,,,,,,1,1,1,,,,,,,,1,,,,,1],[,,,,,,,,1,,,,,1,,,1]],[,[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,,1,1,1,1,1,1,1,1,,,,,,,,,1,1],[,,,,,,,,1,,,,1,,1,,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,1,,1,,1,,,,1,1,,1,,1,,,,1,1,1,1,1,,,1],,[,1,,,,,,,,1,,,1,1,,,1,,1,1,,1,,1],[,1,,,1,,,,,,,,1,,,,,,,1],[1,1,,,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1],,[,1,,,,,,1,,1,,1,1,1,1,1,,,1,,1,1,,,,1],[,1,1,,,1,,1,,1,,,1,1,1,1,,,1,,,1,,,,1],[,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1],[,1,,,1,1,,1,1,,,1,1,,1,1,,1,,1,,1],[1,,1,,,,,1,,1,,1,1,1,1,,,,,1,1,,,,1,1],[,1,1,,,,,1,1,,,1,,1,1,1,1,,,,,,,,,,1],,[,1,1,,,1,,,,1,,1,1,1,1,1,,,,1,,,,1,,1],[,,,1,1,,,1,,,,,1,,1,1,1,,1,1,,,,,,1],[,1,,,,,,,,,,,1,,,,1,,,,,,,1,,1],[,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,1,,,,,1,,1,,,1,1,,1,1,,1],[,1,,,,,,1,,,,,1,1,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1,,,1,,,,,1],[,,,,,,,1,,,,1]],[,[1,1,1,1,1,1,1,1,1,1, -1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,,1,,,,,,,1,,,,,,,,1,,,1],[,1,,,,,,,1],[,,,,,,,,,,1],[,1,,,,,,1,1,,,,,,1],,[,1,1,,,,,,1,,,,,1,1,,,,1],[1,,1,,1,,,,,1,,,,,1,,,,,,,,,1,1],[,1,1,,,,,,,,,1,1,1,1,,,,1,,,,,1,,,1],,[,1,1,,1,,,1,1,,,1,,,1,1,1,,1,,1,1,1,,,,1],[,,,,,1,,,,,1,,,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,,,1,,,,,1,,,,,1,,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,1],[,1,,,,,,1,,,,,,,1,1,1,,,1],[,1,,,,,,,,,,1,1,1,,,,,1,,,1],[,,,,,1,,1,,,,,1,1,1,,1,1,,1,1,1,,,1,1],[1,1,,,,,,,1,,,,,1,1,,,,,,,,,,,1],,[,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,,1,,,,,1,,,1,,,,1,,1],[,1,,,,,,,,,1]]];s(B9,"isValidLang")});var j9={};x(j9,{UIStrings:()=>Lo,default:()=>wpe});function vpe(e){return e.startsWith("http:")||e.startsWith("https:")}function bpe(e){if(e.toLowerCase()===ype)return!0;let[t]=e.split("-");return B9(t.toLowerCase())}var ype,Lo,hp,EC,wpe,q9=g(()=>{"use strict";d();V();R();U9();ype="x-default",Lo={title:"Document has a valid `hreflang`",failureTitle:"Document doesn't have a valid `hreflang`",description:"hreflang links tell search engines what version of a page they should list in search results for a given language or region. [Learn more about `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/).",unexpectedLanguage:"Unexpected language code",notFullyQualified:"Relative href value"},hp=D("core/audits/seo/hreflang.js",Lo);s(vpe,"isFullyQualified");s(bpe,"isExpectedLanguageCode");EC=class extends v{static{s(this,"Hreflang")}static get meta(){return{id:"hreflang",title:hp(Lo.title),failureTitle:hp(Lo.failureTitle),description:hp(Lo.description),supportedModes:["navigati\ -on"],requiredArtifacts:["LinkElements","URL"]}}static audit({LinkElements:t}){let r=[],n=t.filter(o=>{let u=o.rel==="alternate",l=o.hreflang,c=o.source==="body";return u&&l&&!c});for(let o of n){let u=[],l;bpe(o.hreflang)||u.push(hp(Lo.unexpectedLanguage)),vpe(o.hrefRaw.toLowerCase())||u.push(hp(Lo.notFullyQualified)),o.source==="head"?o.node?l={...v.makeNodeItem(o.node),snippet:`<link rel="alternate" hreflang="${o.hreflang}" href="${o.hrefRaw}" />`}:l={type:"node",snippet:`<link rel="alternate" hreflang="${o.hreflang}" href="${o.hrefRaw}" />`}:o.source==="headers"&&(l=`Link: <${o.hrefRaw}>; rel="alternate"; hreflang="${o.hreflang}"`),!(!l||!u.length)&&r.push({source:l,subItems:{type:"subitems",items:u.map(c=>({reason:c}))}})}let i=[{key:"source",valueType:"code",subItemsHeading:{key:"reason",valueType:"text"},label:""}],a=v.makeTableDetails(i,r);return{score:+(r.length===0),details:a}}},wpe=EC});var z9={};x(z9,{UIStrings:()=>gp,default:()=>Tpe});var Dpe,Epe,gp,TC,xC,Tpe,H9=g(()=>{"use strict";d();V();R();dr();Dpe=400,Epe=599,gp={title:"Page has successful HTTP status code",failureTitle:"Page has unsuccessful HTTP status code",description:"Pages with unsuccessful HTTP status codes may not be indexed properly. [Learn more about HTTP status codes](https://developer.chrome.com/docs/lighthouse/seo/http-status-code/)."},TC=D("core/audits/seo/http-status-code.js",gp),xC=class extends v{static{s(this,"HTTPStatusCode")}static get meta(){return{id:"http-status-code",title:TC(gp.title),failureTitle:TC(gp.failureTitle),description:TC(gp.description),requiredArtifacts:["devtoolsLogs","URL","GatherContext"],supportedModes:["navigation"]}}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=t.URL,o=(await lt.request({devtoolsLog:n,URL:i},r)).statusCode;return o>=Dpe&&o<=Epe?{score:0,displayValue:`${o}`}:{score:1}}},Tpe=xC});var Y9=pe((fYe,$9)=>{d();function W9(e){return e?Array.isArray(e)?e.map(W9):String(e).trim():null}s(W9,"trimLine");function xpe(e){var t=e.indexOf("#");return t>-1?e.substr(0,t):e}s(xpe,"removeComments");function Spe(e){var t=String(e).indexOf(":");return!e||t<0?null:[e.slice(0,t),e.slice(t+1)]}s(Spe,"splitLine");function SC(e){var t=e.toLowerCase(),r=t.indexOf("/");return r>-1&&(t=t.substr(0,r)),t.trim()}s(SC,"formatUserAgent");function Cpe(e){try{return G9(encodeURI(e).replace(/%25/g,"%"))}catch{return e}}s(Cpe,"normaliseEncoding");function G9(e){return e.replace(/%[0-9a-fA-F]{2}/g,function(t){return t.toUpperCase()})}s(G9,"urlEncodeToUpper");function Fpe(e,t){var r=new Array(t.length+1),n=1;r[0]=0;for(var i=0;i<e.length;i++){if(e[i]==="$"&&i+1===e.length)return r[n-1]===t.length;if(e[i]=="*"){n=t.length-r[0]+1;for(var a=1;a<n;a++)r[a]=r[a-1]+1}else{for(var o=0,a=0;a<n;a++)r[a]<t.length&&t[r[a]]===e[i]&&(r[o++]=r[a]+1);if(o==0)return!1;n=o}}return!0}s(Fpe,"matches");function kpe(e,t){ -for(var r=/\r\n|\r|\n/,n=e.split(r).map(xpe).map(Spe).map(W9),i=[],a=!0,o=0;o<n.length;o++){var u=n[o];if(!(!u||!u[0])){switch(u[0].toLowerCase()){case"user-agent":a&&(i.length=0),u[1]&&i.push(SC(u[1]));break;case"disallow":t.addRule(i,u[1],!1,o+1);break;case"allow":t.addRule(i,u[1],!0,o+1);break;case"crawl-delay":t.setCrawlDelay(i,u[1]);break;case"sitemap":u[1]&&t.addSitemap(u[1]);break;case"host":u[1]&&t.setPreferredHost(u[1].toLowerCase());break}a=u[0].toLowerCase()!=="user-agent"}}}s(kpe,"parseRobots");function _pe(e,t){for(var r=null,n=0;n<t.length;n++){var i=t[n];Fpe(i.pattern,e)&&(!r||i.pattern.length>r.pattern.length||i.pattern.length==r.pattern.length&&i.allow&&!r.allow)&&(r=i)}return r}s(_pe,"findRule");function V9(e){try{var e=new URL(e,"http://robots-relative.samclarke.com/");return e.port||(e.port=e.protocol==="https:"?443:80),e}catch{return null}}s(V9,"parseUrl");function un(e,t){this._url=V9(e)||{},this._rules=Object.create(null),this._sitemaps=[],this._preferredHost=null, -kpe(t||"",this)}s(un,"Robots");un.prototype.addRule=function(e,t,r,n){var i=this._rules;e.forEach(function(a){i[a]=i[a]||[],t&&i[a].push({pattern:Cpe(t),allow:r,lineNumber:n})})};un.prototype.setCrawlDelay=function(e,t){var r=this._rules,n=Number(t);e.forEach(function(i){r[i]=r[i]||[],!isNaN(n)&&(r[i].crawlDelay=n)})};un.prototype.addSitemap=function(e){this._sitemaps.push(e)};un.prototype.setPreferredHost=function(e){this._preferredHost=e};un.prototype._getRule=function(e,t){var r=V9(e)||{},n=SC(t||"*");if(!(r.protocol!==this._url.protocol||r.hostname!==this._url.hostname||r.port!==this._url.port)){var i=this._rules[n]||this._rules["*"]||[],a=G9(r.pathname+r.search),o=_pe(a,i);return o}};un.prototype.isAllowed=function(e,t){var r=this._getRule(e,t);if(!(typeof r>"u"))return!r||r.allow};un.prototype.getMatchingLineNumber=function(e,t){var r=this._getRule(e,t);return r?r.lineNumber:-1};un.prototype.isDisallowed=function(e,t){return!this.isAllowed(e,t)};un.prototype.getCrawlDelay=function(e){ -var t=SC(e||"*");return(this._rules[t]||this._rules["*"]||{}).crawlDelay};un.prototype.getPreferredHost=function(){return this._preferredHost};un.prototype.getSitemaps=function(){return this._sitemaps.slice(0)};$9.exports=un});var J9=pe((yYe,K9)=>{d();var Rpe=Y9();K9.exports=function(e,t){return new Rpe(e,t)}});var tj={};x(tj,{UIStrings:()=>yp,default:()=>Lpe});function Npe(e){let t=e.split(":");if(t.length<=1||t[0]!==ej)return!1;let r=Date.parse(t.slice(1).join(":"));return!isNaN(r)&&r<Date.now()}function X9(e){return e.split(",").map(t=>t.toLowerCase().trim()).some(t=>Ipe.has(t)||Npe(t))}function Mpe(e){let t=e.match(/^([^,:]+):/);if(t&&t[1].toLowerCase()!==ej)return t[1]}var Q9,Z9,Ipe,Ape,ej,yp,CC,FC,Lpe,rj=g(()=>{"use strict";d();Q9=yr(J9(),1);V();dr();R();Z9=new Set([void 0,"Googlebot","bingbot","DuckDuckBot","archive.org_bot"]),Ipe=new Set(["noindex","none"]),Ape="x-robots-tag",ej="unavailable_after",yp={title:"Page isn’t blocked from indexing",failureTitle:"Page is blocked from indexing",description:"Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more about crawler directives](https://developer.chrome.com/docs/lighthouse/seo/is-crawlable/)."},CC=D("core/audits/seo/is-crawlable.js",yp);s(Npe,"isUnavailable");s(X9,"\ -hasBlockingDirective");s(Mpe,"getUserAgentFromHeaderDirectives");FC=class e extends v{static{s(this,"IsCrawlable")}static get meta(){return{id:"is-crawlable",title:CC(yp.title),failureTitle:CC(yp.failureTitle),description:CC(yp.description),supportedModes:["navigation"],requiredArtifacts:["MetaElements","RobotsTxt","URL","devtoolsLogs"]}}static handleMetaElement(t){let r=t.content||"";if(X9(r))return{source:{...v.makeNodeItem(t.node),snippet:`<meta name="${t.name}" content="${r}" />`}}}static determineIfCrawlableForUserAgent(t,r,n,i,a){let o=[],u;if(t&&(u=n.find(l=>l.name===t.toLowerCase())),u||(u=n.find(l=>l.name==="robots")),u){let l=e.handleMetaElement(u);l&&o.push(l)}for(let l of r.responseHeaders||[]){if(l.name.toLowerCase()!==Ape)continue;let c=Mpe(l.value);if(c!==t&&c!==void 0)continue;let p=l.value.trim();t&&l.value.startsWith(`${t}:`)&&(p=l.value.replace(`${t}:`,"")),X9(p)&&o.push({source:`${l.name}: ${l.value}`})}if(i&&!i.isAllowed(r.url,t)){let l=i.getMatchingLineNumber(r.url)|| -1;o.push({source:{type:"source-location",url:a.href,urlProvider:"network",line:l-1,column:0}})}return o}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await lt.request({devtoolsLog:n,URL:t.URL},r),a=new URL("/robots.txt",i.url),o=t.RobotsTxt.content?(0,Q9.default)(a.href,t.RobotsTxt.content):void 0,u=[],l=[];for(let h of Z9){let y=e.determineIfCrawlableForUserAgent(h,i,t.MetaElements,o,a);y.length>0&&u.push(h),h===void 0&&l.push(...y)}let c=u.length===Z9.size?0:1,p=[];if(c&&u.length>0){let h=u.filter(Boolean).join(", ");p.push(`The following bot user agents are blocked from crawling: ${h}. The audit is otherwise passing, because at least one bot was explicitly allowed.`)}let m=[{key:"source",valueType:"code",label:"Blocking Directive Source"}],f=v.makeTableDetails(m,c===0?l:[]);return{score:c,details:f,warnings:p}}},Lpe=FC});var nj={};x(nj,{UIStrings:()=>vu,default:()=>Ope});var Ppe,vu,Th,kC,Ope,ij=g(()=>{"use strict";d();V();ut();R();Ppe=new Set(["click here","click this","go","here","information","learn more","more","more info","more information","right here","read more","see more","start","this","ここをクリック","こちらをクリック","リンク","続きを読む","続く","全文表示","click aquí","click aqui","clicka aquí","clicka aqui","pincha aquí","pincha aqui","aquí","aqui","más","mas","más información","más informacion","mas información","mas informacion","este","enlace","este enlace","empezar","clique aqui","ir","mais informação","mais informações","mais","veja mais","여기","여기를 클릭","클릭","링크","자세히","자세히 보기","계속","이동","전체 보기","här","klicka här","läs mer","mer","mer info","mer information","அடுத்த பக்கம்","மறுபக்கம்","முந்தைய பக்கம்","முன்பக்கம்", -"மேலும் அறிக","மேலும் தகவலுக்கு","மேலும் தரவுகளுக்கு","தயவுசெய்து இங்கே அழுத்தவும்","இங்கே கிளிக் செய்யவும்","اطلاعات بیشتر","اطلاعات","این","اینجا بزنید","اینجا کلیک کنید","اینجا","برو","بیشتر بخوانید","بیشتر بدانید","بیشتر","شروع"]),vu={title:"Links have descriptive text",failureTitle:"Links do not have descriptive text",description:"Descriptive link text helps search engines understand your content. [Learn how to make links more accessible](https://developer.chrome.com/docs/lighthouse/seo/link-text/).",displayValue:`{itemCount, plural, +1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,,1,,,,,,,1,,,,,,,,1,,,1],[,1,,,,,,,1],[,,,,,,,,,,1],[,1,,,,,,1,1,,,,,,1],,[,1,1,,,,,,1,,,,,1,1,,,,1],[1,,1,,1,,,,,1,,,,,1,,,,,,,,,1,1],[,1,1,,,,,,,,,1,1,1,1,,,,1,,,,,1,,,1],,[,1,1,,1,,,1,1,,,1,,,1,1,1,,1,,1,1,1,,,,1],[,,,,,1,,,,,1,,,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,,,1,,,,,1,,,,,1,,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,1],[,1,,,,,,1,,,,,,,1,1,1,,,1],[,1,,,,,,,,,,1,1,1,,,,,1,,,1],[,,,,,1,,1,,,,,1,1,1,,1,1,,1,1,1,,,1,1],[1,1,,,,,,,1,,,,,1,1,,,,,,,,,,,1],,[,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,,1,,,,,1,,,1,,,,1,,1],[,1,,,,,,,,,1]]];s(Ez,"isValidLang")});var Sz={};T(Sz,{UIStrings:()=>ji,default:()=>n1e});function e1e(e){return e.startsWith("http:")||e.startsWith("https:")}function t1e(e){if(e.toLowerCase()===Qfe)return!0;let[t]=e.split("-");return Ez(t.toLowerCase())}var Qfe,ji,vm,ak,n1e,Cz=g(()=>{"use strict";d();V();A();Tz();Qfe="x-default",ji={title:"Document has a valid `hreflang`",failureTitle:"Document doesn't have a valid `hreflang`",description:"hreflang links tell search engines what version of a page they should list in search results for a given language or region. [Learn more about `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/).",unexpectedLanguage:"Unexpected language code",notFullyQualified:"Relative href value"},vm=D("core/audits/seo/hreflang.js",ji);s(e1e,"isFullyQualified");s(t1e,"isExpectedLanguageCode");ak=class extends b{static{s(this,"Hreflang")}static get meta(){return{id:"hreflang",title:vm(ji.title),failureTitle:vm(ji.failureTitle),description:vm(ji.description),supportedModes:["navigati\ +on"],requiredArtifacts:["LinkElements","URL"]}}static audit({LinkElements:t}){let n=[],r=t.filter(i=>{let c=i.rel==="alternate",u=i.hreflang,l=i.source==="body";return c&&u&&!l});for(let i of r){let c=[],u;t1e(i.hreflang)||c.push(vm(ji.unexpectedLanguage)),e1e(i.hrefRaw.toLowerCase())||c.push(vm(ji.notFullyQualified)),i.source==="head"?i.node?u={...b.makeNodeItem(i.node),snippet:`<link rel="alternate" hreflang="${i.hreflang}" href="${i.hrefRaw}" />`}:u={type:"node",snippet:`<link rel="alternate" hreflang="${i.hreflang}" href="${i.hrefRaw}" />`}:i.source==="headers"&&(u=`Link: <${i.hrefRaw}>; rel="alternate"; hreflang="${i.hreflang}"`),!(!u||!c.length)&&n.push({source:u,subItems:{type:"subitems",items:c.map(l=>({reason:l}))}})}let a=[{key:"source",valueType:"code",subItemsHeading:{key:"reason",valueType:"text"},label:""}],o=b.makeTableDetails(a,n);return{score:+(n.length===0),details:o}}},n1e=ak});var kz={};T(kz,{UIStrings:()=>bm,default:()=>o1e});var r1e,a1e,bm,ok,ik,o1e,Fz=g(()=>{"use strict";d();V();A();rn();r1e=400,a1e=599,bm={title:"Page has successful HTTP status code",failureTitle:"Page has unsuccessful HTTP status code",description:"Pages with unsuccessful HTTP status codes may not be indexed properly. [Learn more about HTTP status codes](https://developer.chrome.com/docs/lighthouse/seo/http-status-code/)."},ok=D("core/audits/seo/http-status-code.js",bm),ik=class extends b{static{s(this,"HTTPStatusCode")}static get meta(){return{id:"http-status-code",title:ok(bm.title),failureTitle:ok(bm.failureTitle),description:ok(bm.description),requiredArtifacts:["devtoolsLogs","URL","GatherContext"],supportedModes:["navigation"]}}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=t.URL,i=(await Qe.request({devtoolsLog:r,URL:a},n)).statusCode;return i>=r1e&&i<=a1e?{score:0,displayValue:`${i}`}:{score:1}}},o1e=ik});var Mz=de((jXe,_z)=>{d();function Rz(e){return e?Array.isArray(e)?e.map(Rz):String(e).trim():null}s(Rz,"trimLine");function i1e(e){var t=e.indexOf("#");return t>-1?e.substr(0,t):e}s(i1e,"removeComments");function s1e(e){var t=String(e).indexOf(":");return!e||t<0?null:[e.slice(0,t),e.slice(t+1)]}s(s1e,"splitLine");function sk(e){var t=e.toLowerCase(),n=t.indexOf("/");return n>-1&&(t=t.substr(0,n)),t.trim()}s(sk,"formatUserAgent");function c1e(e){try{return Iz(encodeURI(e).replace(/%25/g,"%"))}catch{return e}}s(c1e,"normaliseEncoding");function Iz(e){return e.replace(/%[0-9a-fA-F]{2}/g,function(t){return t.toUpperCase()})}s(Iz,"urlEncodeToUpper");function u1e(e,t){var n=new Array(t.length+1),r=1;n[0]=0;for(var a=0;a<e.length;a++){if(e[a]==="$"&&a+1===e.length)return n[r-1]===t.length;if(e[a]=="*"){r=t.length-n[0]+1;for(var o=1;o<r;o++)n[o]=n[o-1]+1}else{for(var i=0,o=0;o<r;o++)n[o]<t.length&&t[n[o]]===e[a]&&(n[i++]=n[o]+1);if(i==0)return!1;r=i}}return!0}s(u1e,"matches");function l1e(e,t){ +for(var n=/\r\n|\r|\n/,r=e.split(n).map(i1e).map(s1e).map(Rz),a=[],o=!0,i=0;i<r.length;i++){var c=r[i];if(!(!c||!c[0])){switch(c[0].toLowerCase()){case"user-agent":o&&(a.length=0),c[1]&&a.push(sk(c[1]));break;case"disallow":t.addRule(a,c[1],!1,i+1);break;case"allow":t.addRule(a,c[1],!0,i+1);break;case"crawl-delay":t.setCrawlDelay(a,c[1]);break;case"sitemap":c[1]&&t.addSitemap(c[1]);break;case"host":c[1]&&t.setPreferredHost(c[1].toLowerCase());break}o=c[0].toLowerCase()!=="user-agent"}}}s(l1e,"parseRobots");function d1e(e,t){for(var n=null,r=0;r<t.length;r++){var a=t[r];u1e(a.pattern,e)&&(!n||a.pattern.length>n.pattern.length||a.pattern.length==n.pattern.length&&a.allow&&!n.allow)&&(n=a)}return n}s(d1e,"findRule");function Az(e){try{var e=new URL(e,"http://robots-relative.samclarke.com/");return e.port||(e.port=e.protocol==="https:"?443:80),e}catch{return null}}s(Az,"parseUrl");function hr(e,t){this._url=Az(e)||{},this._rules=Object.create(null),this._sitemaps=[],this._preferredHost=null, +l1e(t||"",this)}s(hr,"Robots");hr.prototype.addRule=function(e,t,n,r){var a=this._rules;e.forEach(function(o){a[o]=a[o]||[],t&&a[o].push({pattern:c1e(t),allow:n,lineNumber:r})})};hr.prototype.setCrawlDelay=function(e,t){var n=this._rules,r=Number(t);e.forEach(function(a){n[a]=n[a]||[],!isNaN(r)&&(n[a].crawlDelay=r)})};hr.prototype.addSitemap=function(e){this._sitemaps.push(e)};hr.prototype.setPreferredHost=function(e){this._preferredHost=e};hr.prototype._getRule=function(e,t){var n=Az(e)||{},r=sk(t||"*");if(!(n.protocol!==this._url.protocol||n.hostname!==this._url.hostname||n.port!==this._url.port)){var a=this._rules[r]||this._rules["*"]||[],o=Iz(n.pathname+n.search),i=d1e(o,a);return i}};hr.prototype.isAllowed=function(e,t){var n=this._getRule(e,t);if(!(typeof n>"u"))return!n||n.allow};hr.prototype.getMatchingLineNumber=function(e,t){var n=this._getRule(e,t);return n?n.lineNumber:-1};hr.prototype.isDisallowed=function(e,t){return!this.isAllowed(e,t)};hr.prototype.getCrawlDelay=function(e){ +var t=sk(e||"*");return(this._rules[t]||this._rules["*"]||{}).crawlDelay};hr.prototype.getPreferredHost=function(){return this._preferredHost};hr.prototype.getSitemaps=function(){return this._sitemaps.slice(0)};_z.exports=hr});var Oz=de((HXe,Nz)=>{d();var m1e=Mz();Nz.exports=function(e,t){return new m1e(e,t)}});var jz={};T(jz,{UIStrings:()=>wm,default:()=>y1e});function h1e(e){let t=e.split(":");if(t.length<=1||t[0]!==Uz)return!1;let n=Date.parse(t.slice(1).join(":"));return!isNaN(n)&&n<Date.now()}function Pz(e){return e.split(",").map(t=>t.toLowerCase().trim()).some(t=>p1e.has(t)||h1e(t))}function g1e(e){let t=e.match(/^([^,:]+):/);if(t&&t[1].toLowerCase()!==Uz)return t[1]}var Bz,Lz,p1e,f1e,Uz,wm,ck,uk,y1e,zz=g(()=>{"use strict";d();Bz=mn(Oz(),1);V();rn();A();Lz=new Set([void 0,"Googlebot","bingbot","DuckDuckBot","archive.org_bot"]),p1e=new Set(["noindex","none"]),f1e="x-robots-tag",Uz="unavailable_after",wm={title:"Page isn’t blocked from indexing",failureTitle:"Page is blocked from indexing",description:"Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more about crawler directives](https://developer.chrome.com/docs/lighthouse/seo/is-crawlable/)."},ck=D("core/audits/seo/is-crawlable.js",wm);s(h1e,"isUnavailable");s(Pz,"\ +hasBlockingDirective");s(g1e,"getUserAgentFromHeaderDirectives");uk=class e extends b{static{s(this,"IsCrawlable")}static get meta(){return{id:"is-crawlable",title:ck(wm.title),failureTitle:ck(wm.failureTitle),description:ck(wm.description),supportedModes:["navigation"],requiredArtifacts:["MetaElements","RobotsTxt","URL","devtoolsLogs"]}}static handleMetaElement(t){let n=t.content||"";if(Pz(n))return{source:{...b.makeNodeItem(t.node),snippet:`<meta name="${t.name}" content="${n}" />`}}}static determineIfCrawlableForUserAgent(t,n,r,a,o){let i=[],c;if(t&&(c=r.find(u=>u.name===t.toLowerCase())),c||(c=r.find(u=>u.name==="robots")),c){let u=e.handleMetaElement(c);u&&i.push(u)}for(let u of n.responseHeaders||[]){if(u.name.toLowerCase()!==f1e)continue;let l=g1e(u.value);if(l!==t&&l!==void 0)continue;let m=u.value.trim();t&&u.value.startsWith(`${t}:`)&&(m=u.value.replace(`${t}:`,"")),Pz(m)&&i.push({source:`${u.name}: ${u.value}`})}if(a&&!a.isAllowed(n.url,t)){let u=a.getMatchingLineNumber(n.url)|| +1;i.push({source:{type:"source-location",url:o.href,urlProvider:"network",line:u-1,column:0}})}return i}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await Qe.request({devtoolsLog:r,URL:t.URL},n),o=new URL("/robots.txt",a.url),i=t.RobotsTxt.content?(0,Bz.default)(o.href,t.RobotsTxt.content):void 0,c=[],u=[];for(let h of Lz){let y=e.determineIfCrawlableForUserAgent(h,a,t.MetaElements,i,o);y.length>0&&c.push(h),h===void 0&&u.push(...y)}let l=c.length===Lz.size?0:1,m=[];if(l&&c.length>0){let h=c.filter(Boolean).join(", ");m.push(`The following bot user agents are blocked from crawling: ${h}. The audit is otherwise passing, because at least one bot was explicitly allowed.`)}let p=[{key:"source",valueType:"code",label:"Blocking Directive Source"}],f=b.makeTableDetails(p,l===0?u:[]);return{score:l,details:f,warnings:m}}},y1e=uk});var qz={};T(qz,{UIStrings:()=>bc,default:()=>b1e});var v1e,bc,Fh,lk,b1e,Hz=g(()=>{"use strict";d();V();dt();A();v1e=new Set(["click here","click this","go","here","information","learn more","more","more info","more information","right here","read more","see more","start","this","ここをクリック","こちらをクリック","リンク","続きを読む","続く","全文表示","click aquí","click aqui","clicka aquí","clicka aqui","pincha aquí","pincha aqui","aquí","aqui","más","mas","más información","más informacion","mas información","mas informacion","este","enlace","este enlace","empezar","clique aqui","ir","mais informação","mais informações","mais","veja mais","여기","여기를 클릭","클릭","링크","자세히","자세히 보기","계속","이동","전체 보기","här","klicka här","läs mer","mer","mer info","mer information","அடுத்த பக்கம்","மறுபக்கம்","முந்தைய பக்கம்","முன்பக்கம்", +"மேலும் அறிக","மேலும் தகவலுக்கு","மேலும் தரவுகளுக்கு","தயவுசெய்து இங்கே அழுத்தவும்","இங்கே கிளிக் செய்யவும்","اطلاعات بیشتر","اطلاعات","این","اینجا بزنید","اینجا کلیک کنید","اینجا","برو","بیشتر بخوانید","بیشتر بدانید","بیشتر","شروع"]),bc={title:"Links have descriptive text",failureTitle:"Links do not have descriptive text",description:"Descriptive link text helps search engines understand your content. [Learn how to make links more accessible](https://developer.chrome.com/docs/lighthouse/seo/link-text/).",displayValue:`{itemCount, plural, =1 {1 link found} other {# links found} - }`},Th=D("core/audits/seo/link-text.js",vu),kC=class extends v{static{s(this,"LinkText")}static get meta(){return{id:"link-text",title:Th(vu.title),failureTitle:Th(vu.failureTitle),description:Th(vu.description),requiredArtifacts:["URL","AnchorElements"]}}static audit(t){let r=t.AnchorElements.filter(o=>o.href&&!o.rel.includes("nofollow")).filter(o=>{let u=o.href.toLowerCase();return u.startsWith("javascript:")||u.startsWith("mailto:")||J.equalWithExcludedFragments(o.href,t.URL.finalDisplayedUrl)?!1:Ppe.has(o.text.trim().toLowerCase())}).map(o=>({href:o.href,text:o.text.trim()})),n=[{key:"href",valueType:"url",label:"Link destination"},{key:"text",valueType:"text",label:"Link Text"}],i=v.makeTableDetails(n,r),a;return r.length&&(a=Th(vu.displayValue,{itemCount:r.length})),{score:+(r.length===0),details:i,displayValue:a}}},Ope=kC});var oj={};x(oj,{UIStrings:()=>xh,default:()=>Bpe});var xh,aj,_C,Bpe,sj=g(()=>{"use strict";d();Zr();R();xh={description:"Run the [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/) and the [Structured Data Linter](http://linter.structured-data.org/) to validate structured data. [Learn more about Structured Data](https://developer.chrome.com/docs/lighthouse/seo/structured-data/).",title:"Structured data is valid"},aj=D("core/audits/seo/manual/structured-data.js",xh),_C=class extends Ut{static{s(this,"StructuredData")}static get meta(){return Object.assign({id:"structured-data",description:aj(xh.description),title:aj(xh.title)},super.partialMeta)}},Bpe=_C});var uj={};x(uj,{UIStrings:()=>bu,default:()=>Upe});var bu,Sh,RC,Upe,lj=g(()=>{"use strict";d();V();R();bu={title:"Document has a meta description",failureTitle:"Document does not have a meta description",description:"Meta descriptions may be included in search results to concisely summarize page content. [Learn more about the meta description](https://developer.chrome.com/docs/lighthouse/seo/meta-description/).",explanation:"Description text is empty."},Sh=D("core/audits/seo/meta-description.js",bu),RC=class extends v{static{s(this,"Description")}static get meta(){return{id:"meta-description",title:Sh(bu.title),failureTitle:Sh(bu.failureTitle),description:Sh(bu.description),requiredArtifacts:["MetaElements"]}}static audit(t){let r=t.MetaElements.find(i=>i.name==="description");return r?(r.content||"").trim().length===0?{score:0,explanation:Sh(bu.explanation)}:{score:1}:{score:0}}},Upe=RC});var dj={};x(dj,{UIStrings:()=>Fa,default:()=>Ype});function Gpe(e,t){if(!Hpe.has(e))throw new Error("Unknown directive");if(e===cj){let r;try{r=new URL(t)}catch{throw new Error("Invalid sitemap URL")}if(!Wpe.has(r.protocol))throw new Error("Invalid sitemap URL protocol")}if(e===AC&&!t)throw new Error("No user-agent specified");if(e===NC||e===MC){if(t!==""&&t[0]!=="/"&&t[0]!=="*")throw new Error('Pattern should either be empty, start with "/" or "*"');let r=t.indexOf("$");if(r!==-1&&r!==t.length-1)throw new Error('"$" should only be used at the end of the pattern')}}function Vpe(e){let t=e.indexOf("#");if(t!==-1&&(e=e.substr(0,t)),e=e.trim(),e.length===0)return null;let r=e.indexOf(":");if(r===-1)throw new Error("Syntax not understood");let n=e.slice(0,r).trim().toLowerCase(),i=e.slice(r+1).trim();return Gpe(n,i),{directive:n,value:i}}function $pe(e){let t=[],r=!1;return e.split(/\r\n|\r|\n/).forEach((n,i)=>{let a;try{a=Vpe(n)}catch(o){t.push({index:(i+1).toString(),line:n,message:o.message. -toString()})}a&&(a.directive===AC?r=!0:!r&&zpe.has(a.directive)&&t.push({index:(i+1).toString(),line:n,message:"No user-agent specified"}))}),t}var jpe,qpe,cj,AC,NC,MC,zpe,Hpe,Wpe,Fa,wu,IC,Ype,pj=g(()=>{"use strict";d();V();R();jpe=400,qpe=500,cj="sitemap",AC="user-agent",NC="allow",MC="disallow",zpe=new Set([NC,MC]),Hpe=new Set([AC,MC,NC,cj,"crawl-delay","clean-param","host","request-rate","visit-time","noindex"]),Wpe=new Set(["https:","http:","ftp:"]),Fa={title:"robots.txt is valid",failureTitle:"robots.txt is not valid",description:"If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. [Learn more about robots.txt](https://developer.chrome.com/docs/lighthouse/seo/invalid-robots-txt/).",displayValueHttpBadCode:"Request for robots.txt returned HTTP status: {statusCode}",displayValueValidationError:`{itemCount, plural, + }`},Fh=D("core/audits/seo/link-text.js",bc),lk=class extends b{static{s(this,"LinkText")}static get meta(){return{id:"link-text",title:Fh(bc.title),failureTitle:Fh(bc.failureTitle),description:Fh(bc.description),requiredArtifacts:["URL","AnchorElements"]}}static audit(t){let n=t.AnchorElements.filter(i=>i.href&&!i.rel.includes("nofollow")).filter(i=>{let c=i.href.toLowerCase();return c.startsWith("javascript:")||c.startsWith("mailto:")||X.equalWithExcludedFragments(i.href,t.URL.finalDisplayedUrl)?!1:v1e.has(i.text.trim().toLowerCase())}).map(i=>({href:i.href,text:i.text.trim()})),r=[{key:"href",valueType:"url",label:"Link destination"},{key:"text",valueType:"text",label:"Link Text"}],a=b.makeTableDetails(r,n),o;return n.length&&(o=Fh(bc.displayValue,{itemCount:n.length})),{score:+(n.length===0),details:a,displayValue:o}}},b1e=lk});var Gz={};T(Gz,{UIStrings:()=>Rh,default:()=>w1e});var Rh,Wz,dk,w1e,Vz=g(()=>{"use strict";d();ar();A();Rh={description:"Run the [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/) and the [Structured Data Linter](http://linter.structured-data.org/) to validate structured data. [Learn more about Structured Data](https://developer.chrome.com/docs/lighthouse/seo/structured-data/).",title:"Structured data is valid"},Wz=D("core/audits/seo/manual/structured-data.js",Rh),dk=class extends jt{static{s(this,"StructuredData")}static get meta(){return Object.assign({id:"structured-data",description:Wz(Rh.description),title:Wz(Rh.title)},super.partialMeta)}},w1e=dk});var $z={};T($z,{UIStrings:()=>wc,default:()=>D1e});var wc,Ih,mk,D1e,Yz=g(()=>{"use strict";d();V();A();wc={title:"Document has a meta description",failureTitle:"Document does not have a meta description",description:"Meta descriptions may be included in search results to concisely summarize page content. [Learn more about the meta description](https://developer.chrome.com/docs/lighthouse/seo/meta-description/).",explanation:"Description text is empty."},Ih=D("core/audits/seo/meta-description.js",wc),mk=class extends b{static{s(this,"Description")}static get meta(){return{id:"meta-description",title:Ih(wc.title),failureTitle:Ih(wc.failureTitle),description:Ih(wc.description),requiredArtifacts:["MetaElements"]}}static audit(t){let n=t.MetaElements.find(a=>a.name==="description");return n?(n.content||"").trim().length===0?{score:0,explanation:Ih(wc.explanation)}:{score:1}:{score:0}}},D1e=mk});var Jz={};T(Jz,{UIStrings:()=>jo,default:()=>I1e});function k1e(e,t){if(!S1e.has(e))throw new Error("Unknown directive");if(e===Kz){let n;try{n=new URL(t)}catch{throw new Error("Invalid sitemap URL")}if(!C1e.has(n.protocol))throw new Error("Invalid sitemap URL protocol")}if(e===fk&&!t)throw new Error("No user-agent specified");if(e===hk||e===gk){if(t!==""&&t[0]!=="/"&&t[0]!=="*")throw new Error('Pattern should either be empty, start with "/" or "*"');let n=t.indexOf("$");if(n!==-1&&n!==t.length-1)throw new Error('"$" should only be used at the end of the pattern')}}function F1e(e){let t=e.indexOf("#");if(t!==-1&&(e=e.substr(0,t)),e=e.trim(),e.length===0)return null;let n=e.indexOf(":");if(n===-1)throw new Error("Syntax not understood");let r=e.slice(0,n).trim().toLowerCase(),a=e.slice(n+1).trim();return k1e(r,a),{directive:r,value:a}}function R1e(e){let t=[],n=!1;return e.split(/\r\n|\r|\n/).forEach((r,a)=>{let o;try{o=F1e(r)}catch(i){t.push({index:(a+1).toString(),line:r,message:i.message. +toString()})}o&&(o.directive===fk?n=!0:!n&&T1e.has(o.directive)&&t.push({index:(a+1).toString(),line:r,message:"No user-agent specified"}))}),t}var x1e,E1e,Kz,fk,hk,gk,T1e,S1e,C1e,jo,Dc,pk,I1e,Xz=g(()=>{"use strict";d();V();A();x1e=400,E1e=500,Kz="sitemap",fk="user-agent",hk="allow",gk="disallow",T1e=new Set([hk,gk]),S1e=new Set([fk,gk,hk,Kz,"crawl-delay","clean-param","host","request-rate","visit-time","noindex"]),C1e=new Set(["https:","http:","ftp:"]),jo={title:"robots.txt is valid",failureTitle:"robots.txt is not valid",description:"If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. [Learn more about robots.txt](https://developer.chrome.com/docs/lighthouse/seo/invalid-robots-txt/).",displayValueHttpBadCode:"Request for robots.txt returned HTTP status: {statusCode}",displayValueValidationError:`{itemCount, plural, =1 {1 error found} other {# errors found} - }`,explanation:"Lighthouse was unable to download a robots.txt file"},wu=D("core/audits/seo/robots-txt.js",Fa);s(Gpe,"verifyDirective");s(Vpe,"parseLine");s($pe,"validateRobots");IC=class extends v{static{s(this,"RobotsTxt")}static get meta(){return{id:"robots-txt",title:wu(Fa.title),failureTitle:wu(Fa.failureTitle),description:wu(Fa.description),requiredArtifacts:["RobotsTxt"]}}static audit(t){let{status:r,content:n}=t.RobotsTxt;if(!r)return{score:0,explanation:wu(Fa.explanation)};if(r>=qpe)return{score:0,displayValue:wu(Fa.displayValueHttpBadCode,{statusCode:r})};if(r>=jpe||n==="")return{score:1,notApplicable:!0};if(n===null)throw new Error(`Status ${r} was valid, but content was null`);let i=$pe(n),a=[{key:"index",valueType:"text",label:"Line #"},{key:"line",valueType:"code",label:"Content"},{key:"message",valueType:"code",label:"Error"}],o=v.makeTableDetails(a,i),u;return i.length&&(u=wu(Fa.displayValueValidationError,{itemCount:i.length})),{score:+(i.length===0),details:o,displayValue:u}}}, -Ype=IC});var mj={};x(mj,{UIStrings:()=>Eu,default:()=>Zpe});var Eu,Du,Kpe,Jpe,LC,Zpe,fj=g(()=>{"use strict";d();V();R();dr();Eu={title:"Initial server response time was short",failureTitle:"Reduce initial server response time",description:"Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",displayValue:"Root document took {timeInMs, number, milliseconds} ms"},Du=D("core/audits/server-response-time.js",Eu),Kpe=600,Jpe=100,LC=class e extends v{static{s(this,"ServerResponseTime")}static get meta(){return{id:"server-response-time",title:Du(Eu.title),failureTitle:Du(Eu.failureTitle),description:Du(Eu.description),supportedModes:["navigation"],guidanceLevel:1,requiredArtifacts:["devtoolsLogs","URL","GatherContext"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static calculateResponseTime(t){return globalThis.isLightrider&& -t.lrStatistics?t.lrStatistics.requestMs:t.timing?t.timing.receiveHeadersStart-t.timing.sendEnd:null}static async audit(t,r){let n=t.devtoolsLogs[v.DEFAULT_PASS],i=await lt.request({devtoolsLog:n,URL:t.URL},r),a=e.calculateResponseTime(i);if(a===null)throw new Error("no timing found for main resource");let o=a<Kpe,u=Du(Eu.displayValue,{timeInMs:a}),l=[{key:"url",valueType:"url",label:Du(F.columnURL)},{key:"responseTime",valueType:"timespanMs",label:Du(F.columnTimeSpent)}],c=Math.max(a-Jpe,0),p=v.makeOpportunityDetails(l,[{url:i.url,responseTime:a}],{overallSavingsMs:c});return{numericValue:a,numericUnit:"millisecond",score:Number(o),scoreDisplayMode:o?v.SCORING_MODES.INFORMATIVE:void 0,displayValue:u,details:p,metricSavings:{FCP:c,LCP:c}}}},Zpe=LC});var hj={};x(hj,{UIStrings:()=>xu,default:()=>Xpe});var xu,Tu,PC,Xpe,gj=g(()=>{"use strict";d();V();R();xu={title:"Avoids third-party cookies",failureTitle:"Uses third-party cookies",description:"Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies. [Learn more about third-party cookies](https://developers.google.com/privacy-sandbox/cookies).",displayValue:`{itemCount, plural, + }`,explanation:"Lighthouse was unable to download a robots.txt file"},Dc=D("core/audits/seo/robots-txt.js",jo);s(k1e,"verifyDirective");s(F1e,"parseLine");s(R1e,"validateRobots");pk=class extends b{static{s(this,"RobotsTxt")}static get meta(){return{id:"robots-txt",title:Dc(jo.title),failureTitle:Dc(jo.failureTitle),description:Dc(jo.description),requiredArtifacts:["RobotsTxt"]}}static audit(t){let{status:n,content:r}=t.RobotsTxt;if(!n)return{score:0,explanation:Dc(jo.explanation)};if(n>=E1e)return{score:0,displayValue:Dc(jo.displayValueHttpBadCode,{statusCode:n})};if(n>=x1e||r==="")return{score:1,notApplicable:!0};if(r===null)throw new Error(`Status ${n} was valid, but content was null`);let a=R1e(r),o=[{key:"index",valueType:"text",label:"Line #"},{key:"line",valueType:"code",label:"Content"},{key:"message",valueType:"code",label:"Error"}],i=b.makeTableDetails(o,a),c;return a.length&&(c=Dc(jo.displayValueValidationError,{itemCount:a.length})),{score:+(a.length===0),details:i,displayValue:c}}}, +I1e=pk});var Zz={};T(Zz,{UIStrings:()=>Ec,default:()=>M1e});var Ec,xc,A1e,_1e,yk,M1e,Qz=g(()=>{"use strict";d();V();A();rn();Ec={title:"Initial server response time was short",failureTitle:"Reduce initial server response time",description:"Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",displayValue:"Root document took {timeInMs, number, milliseconds} ms"},xc=D("core/audits/server-response-time.js",Ec),A1e=600,_1e=100,yk=class e extends b{static{s(this,"ServerResponseTime")}static get meta(){return{id:"server-response-time",title:xc(Ec.title),failureTitle:xc(Ec.failureTitle),description:xc(Ec.description),supportedModes:["navigation"],guidanceLevel:1,requiredArtifacts:["devtoolsLogs","URL","GatherContext"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static calculateResponseTime(t){return globalThis.isLightrider&& +t.lrStatistics?t.lrStatistics.requestMs:t.timing?t.timing.receiveHeadersStart-t.timing.sendEnd:null}static async audit(t,n){let r=t.devtoolsLogs[b.DEFAULT_PASS],a=await Qe.request({devtoolsLog:r,URL:t.URL},n),o=e.calculateResponseTime(a);if(o===null)throw new Error("no timing found for main resource");let i=o<A1e,c=xc(Ec.displayValue,{timeInMs:o}),u=[{key:"url",valueType:"url",label:xc(F.columnURL)},{key:"responseTime",valueType:"timespanMs",label:xc(F.columnTimeSpent)}],l=Math.max(o-_1e,0),m=b.makeOpportunityDetails(u,[{url:a.url,responseTime:o}],{overallSavingsMs:l});return{numericValue:o,numericUnit:"millisecond",score:Number(i),scoreDisplayMode:i?b.SCORING_MODES.INFORMATIVE:void 0,displayValue:c,details:m,metricSavings:{FCP:l,LCP:l}}}},M1e=yk});var eq={};T(eq,{UIStrings:()=>Sc,default:()=>N1e});var Sc,Tc,vk,N1e,tq=g(()=>{"use strict";d();V();A();Sc={title:"Avoids third-party cookies",failureTitle:"Uses third-party cookies",description:"Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies. [Learn more about third-party cookies](https://developers.google.com/privacy-sandbox/cookies).",displayValue:`{itemCount, plural, =1 {1 cookie found} other {# cookies found} - }`},Tu=D("core/audits/third-party-cookies.js",xu),PC=class extends v{static{s(this,"ThirdPartyCookies")}static get meta(){return{id:"third-party-cookies",title:Tu(xu.title),failureTitle:Tu(xu.failureTitle),description:Tu(xu.description),requiredArtifacts:["InspectorIssues"]}}static getCookieId(t){if(!t.cookie)return t.rawCookieLine??"no-cookie-info";let{domain:r,path:n,name:i}=t.cookie;return`${r};${n};${i}`}static async audit(t){let r=new Set,n=[];for(let u of t.InspectorIssues.cookieIssue){let l=u.cookieWarningReasons.includes("WarnThirdPartyPhaseout"),c=u.cookieExclusionReasons.includes("ExcludeThirdPartyPhaseout");if(!l&&!c)continue;let p=u.cookie?.name||u.rawCookieLine;if(!p)continue;let m=this.getCookieId(u);r.has(m)||(r.add(m),n.push({name:p,url:u.cookieUrl}))}let i=[{key:"name",valueType:"text",label:Tu(F.columnName)},{key:"url",valueType:"url",label:Tu(F.columnURL)}],a=v.makeTableDetails(i,n),o;return n.length>0&&(o=Tu(xu.displayValue,{itemCount:n.length})),{score:n.length? -0:1,displayValue:o,details:a}}},Xpe=PC});var yj={};x(yj,{UIStrings:()=>Oo,default:()=>BC});var Oo,Po,Qpe,OC,BC,UC=g(()=>{"use strict";d();V();Ci();R();at();Fd();Rd();Oo={title:"Minimize third-party usage",failureTitle:"Reduce the impact of third-party code",description:"Third-party code can significantly impact load performance. Limit the number of redundant third-party providers and try to load third-party code after your page has primarily finished loading. [Learn how to minimize third-party impact](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/).",columnThirdParty:"Third-Party",displayValue:"Third-party code blocked the main thread for {timeInMs, number, milliseconds} ms"},Po=D("core/audits/third-party-summary.js",Oo),Qpe=250,OC=class e extends v{static{s(this,"ThirdPartySummary")}static get meta(){return{id:"third-party-summary",title:Po(Oo.title),failureTitle:Po(Oo.failureTitle),description:Po(Oo.description),guidanceLevel:1,scoreDisplayMode:v.SCORING_MODES. -METRIC_SAVINGS,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"]}}static getSummaries(t,r,n,i){let a=new Map,o=new Map,u={mainThreadTime:0,blockingTime:0,transferSize:0,tbtImpact:0};for(let p of t){let m=a.get(p.url)||{...u};m.transferSize+=p.transferSize,a.set(p.url,m)}let l=Cd(t);for(let p of r){let m=Us(p,l),f=a.get(m)||{...u},h=p.selfTime*n;f.mainThreadTime+=h,f.blockingTime+=p.selfBlockingTime,f.tbtImpact+=p.selfTbtImpact,a.set(m,f)}let c=new Map;for(let[p,m]of a.entries()){let f=i.entityByUrl.get(p);if(!f){a.delete(p);continue}let h=o.get(f)||{...u};h.transferSize+=m.transferSize,h.mainThreadTime+=m.mainThreadTime,h.blockingTime+=m.blockingTime,h.tbtImpact+=m.tbtImpact,o.set(f,h);let y=c.get(f)||[];y.push(p),c.set(f,y)}return{byURL:a,byEntity:o,urls:c}}static makeSubItems(t,r){return(r.urls.get(t)||[]).map(a=>({url:a,...r.byURL.get(a)})).sort((a,o)=>o.blockingTime-a.blockingTime||o.transferSize-a.transferSize)}static async audit(t,r){let n=r.settings||{},i=t.devtoolsLogs[v. -DEFAULT_PASS],a=await ie.request(i,r),o=await fr.request({URL:t.URL,devtoolsLog:i},r),u=o.firstParty,l=v.makeMetricComputationDataInput(t,r),c=await ma.request(l,r),p=n.throttlingMethod==="simulate"?n.throttling.cpuSlowdownMultiplier:1,m=e.getSummaries(a,c,p,o),f={wastedBytes:0,wastedMs:0,tbtImpact:0},h=Array.from(m.byEntity.entries()).filter(([E])=>!(u&&u===E)).map(([E,T])=>(f.wastedBytes+=T.transferSize,f.wastedMs+=T.blockingTime,f.tbtImpact+=T.tbtImpact,{...T,entity:E.name,subItems:{type:"subitems",items:e.makeSubItems(E,m)}})).sort((E,T)=>T.blockingTime-E.blockingTime||T.transferSize-E.transferSize),y=[{key:"entity",valueType:"text",label:Po(Oo.columnThirdParty),subItemsHeading:{key:"url",valueType:"url"}},{key:"transferSize",granularity:1,valueType:"bytes",label:Po(F.columnTransferSize),subItemsHeading:{key:"transferSize"}},{key:"blockingTime",granularity:1,valueType:"ms",label:Po(F.columnBlockingTime),subItemsHeading:{key:"blockingTime"}}];if(!h.length)return{score:1,notApplicable:!0, -metricSavings:{TBT:0}};let b=v.makeTableDetails(y,h,{...f,isEntityGrouped:!0}),w=f.wastedMs<=Qpe;return{score:Number(w),scoreDisplayMode:w?v.SCORING_MODES.INFORMATIVE:void 0,displayValue:Po(Oo.displayValue,{timeInMs:f.wastedMs}),details:b,metricSavings:{TBT:Math.round(f.tbtImpact)}}}},BC=OC});var vj={};x(vj,{UIStrings:()=>Tn,default:()=>tme});var Tn,Ii,eme,jC,tme,bj=g(()=>{"use strict";d();V();R();Ci();I1();at();UC();Rd();Tn={title:"Lazy load third-party resources with facades",failureTitle:"Some third-party resources can be lazy loaded with a facade",description:"Some third-party embeds can be lazy loaded. Consider replacing them with a facade until they are required. [Learn how to defer third-parties with a facade](https://developer.chrome.com/docs/lighthouse/performance/third-party-facades/).",displayValue:`{itemCount, plural, + }`},Tc=D("core/audits/third-party-cookies.js",Sc),vk=class extends b{static{s(this,"ThirdPartyCookies")}static get meta(){return{id:"third-party-cookies",title:Tc(Sc.title),failureTitle:Tc(Sc.failureTitle),description:Tc(Sc.description),requiredArtifacts:["InspectorIssues"]}}static getCookieId(t){if(!t.cookie)return t.rawCookieLine??"no-cookie-info";let{domain:n,path:r,name:a}=t.cookie;return`${n};${r};${a}`}static async audit(t){let n=new Set,r=[];for(let c of t.InspectorIssues.cookieIssue){let u=c.cookieWarningReasons.includes("WarnThirdPartyPhaseout"),l=c.cookieExclusionReasons.includes("ExcludeThirdPartyPhaseout");if(!u&&!l)continue;let m=c.cookie?.name||c.rawCookieLine;if(!m)continue;let p=this.getCookieId(c);n.has(p)||(n.add(p),r.push({name:m,url:c.cookieUrl}))}let a=[{key:"name",valueType:"text",label:Tc(F.columnName)},{key:"url",valueType:"url",label:Tc(F.columnURL)}],o=b.makeTableDetails(a,r),i;return r.length>0&&(i=Tc(Sc.displayValue,{itemCount:r.length})),{score:r.length? +0:1,displayValue:i,details:o}}},N1e=vk});var nq={};T(nq,{UIStrings:()=>qi,default:()=>wk});var qi,zi,O1e,bk,wk,Dk=g(()=>{"use strict";d();V();Na();A();ut();Id();Md();qi={title:"Minimize third-party usage",failureTitle:"Reduce the impact of third-party code",description:"Third-party code can significantly impact load performance. Limit the number of redundant third-party providers and try to load third-party code after your page has primarily finished loading. [Learn how to minimize third-party impact](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/).",columnThirdParty:"Third-Party",displayValue:"Third-party code blocked the main thread for {timeInMs, number, milliseconds} ms"},zi=D("core/audits/third-party-summary.js",qi),O1e=250,bk=class e extends b{static{s(this,"ThirdPartySummary")}static get meta(){return{id:"third-party-summary",title:zi(qi.title),failureTitle:zi(qi.failureTitle),description:zi(qi.description),guidanceLevel:1,scoreDisplayMode:b.SCORING_MODES. +METRIC_SAVINGS,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"]}}static getSummaries(t,n,r,a){let o=new Map,i=new Map,c={mainThreadTime:0,blockingTime:0,transferSize:0,tbtImpact:0};for(let m of t){let p=o.get(m.url)||{...c};p.transferSize+=m.transferSize,o.set(m.url,p)}let u=Rd(t);for(let m of n){let p=js(m,u),f=o.get(p)||{...c},h=m.selfTime*r;f.mainThreadTime+=h,f.blockingTime+=m.selfBlockingTime,f.tbtImpact+=m.selfTbtImpact,o.set(p,f)}let l=new Map;for(let[m,p]of o.entries()){let f=a.entityByUrl.get(m);if(!f){o.delete(m);continue}let h=i.get(f)||{...c};h.transferSize+=p.transferSize,h.mainThreadTime+=p.mainThreadTime,h.blockingTime+=p.blockingTime,h.tbtImpact+=p.tbtImpact,i.set(f,h);let y=l.get(f)||[];y.push(m),l.set(f,y)}return{byURL:o,byEntity:i,urls:l}}static makeSubItems(t,n){return(n.urls.get(t)||[]).map(o=>({url:o,...n.byURL.get(o)})).sort((o,i)=>i.blockingTime-o.blockingTime||i.transferSize-o.transferSize)}static async audit(t,n){let r=n.settings||{},a=t.devtoolsLogs[b. +DEFAULT_PASS],o=await oe.request(a,n),i=await Dn.request({URL:t.URL,devtoolsLog:a},n),c=i.firstParty,u=b.makeMetricComputationDataInput(t,n),l=await So.request(u,n),m=r.throttlingMethod==="simulate"?r.throttling.cpuSlowdownMultiplier:1,p=e.getSummaries(o,l,m,i),f={wastedBytes:0,wastedMs:0,tbtImpact:0},h=Array.from(p.byEntity.entries()).filter(([x])=>!(c&&c===x)).map(([x,E])=>(f.wastedBytes+=E.transferSize,f.wastedMs+=E.blockingTime,f.tbtImpact+=E.tbtImpact,{...E,entity:x.name,subItems:{type:"subitems",items:e.makeSubItems(x,p)}})).sort((x,E)=>E.blockingTime-x.blockingTime||E.transferSize-x.transferSize),y=[{key:"entity",valueType:"text",label:zi(qi.columnThirdParty),subItemsHeading:{key:"url",valueType:"url"}},{key:"transferSize",granularity:1,valueType:"bytes",label:zi(F.columnTransferSize),subItemsHeading:{key:"transferSize"}},{key:"blockingTime",granularity:1,valueType:"ms",label:zi(F.columnBlockingTime),subItemsHeading:{key:"blockingTime"}}];if(!h.length)return{score:1,notApplicable:!0, +metricSavings:{TBT:0}};let v=b.makeTableDetails(y,h,{...f,isEntityGrouped:!0}),w=f.wastedMs<=O1e;return{score:Number(w),scoreDisplayMode:w?b.SCORING_MODES.INFORMATIVE:void 0,displayValue:zi(qi.displayValue,{timeInMs:f.wastedMs}),details:v,metricSavings:{TBT:Math.round(f.tbtImpact)}}}},wk=bk});var rq={};T(rq,{UIStrings:()=>_r,default:()=>P1e});var _r,Ua,L1e,xk,P1e,aq=g(()=>{"use strict";d();V();A();Na();L1();ut();Dk();Md();_r={title:"Lazy load third-party resources with facades",failureTitle:"Some third-party resources can be lazy loaded with a facade",description:"Some third-party embeds can be lazy loaded. Consider replacing them with a facade until they are required. [Learn how to defer third-parties with a facade](https://developer.chrome.com/docs/lighthouse/performance/third-party-facades/).",displayValue:`{itemCount, plural, =1 {# facade alternative available} other {# facade alternatives available} - }`,columnProduct:"Product",categoryVideo:"{productName} (Video)",categoryCustomerSuccess:"{productName} (Customer Success)",categoryMarketing:"{productName} (Marketing)",categorySocial:"{productName} (Social)"},Ii=D("core/audits/third-party-facades.js",Tn),eme={video:Tn.categoryVideo,"customer-success":Tn.categoryCustomerSuccess,marketing:Tn.categoryMarketing,social:Tn.categorySocial},jC=class e extends v{static{s(this,"ThirdPartyFacades")}static get meta(){return{id:"third-party-facades",title:Ii(Tn.title),failureTitle:Ii(Tn.failureTitle),description:Ii(Tn.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static condenseItems(t){t.sort((a,o)=>o.transferSize-a.transferSize);let r=t.findIndex(a=>a.transferSize<1e3)||1;if((r===-1||r>5)&&(r=5),r>=t.length-1)return;let i=t.splice(r).reduce((a,o)=>(a.transferSize+=o.transferSize,a.blockingTime+=o.blockingTime,a));i.transferSize< -1e3||(i.url=Ii(F.otherResourcesLabel),t.push(i))}static getProductsWithFacade(t,r){let n=new Map;for(let i of t.keys()){let a=r.entityByUrl.get(i);if(!a||r.isFirstParty(i))continue;let o=ya.getProduct(i);!o||!o.facades||!o.facades.length||n.has(o.name)||n.set(o.name,{product:o,entity:a})}return Array.from(n.values())}static async audit(t,r){let n=r.settings,i=t.devtoolsLogs[v.DEFAULT_PASS],a=await ie.request(i,r),o=await fr.request({URL:t.URL,devtoolsLog:i},r),u=v.makeMetricComputationDataInput(t,r),l=await ma.request(u,r),c=n.throttlingMethod==="simulate"?n.throttling.cpuSlowdownMultiplier:1,p=BC.getSummaries(a,l,c,o),m=e.getProductsWithFacade(p.byURL,o),f=0,h=[];for(let{product:b,entity:w}of m){let E=eme[b.categories[0]],T;E?T=Ii(E,{productName:b.name}):T=b.name;let S=p.urls.get(w),C=p.byEntity.get(w);if(!S||!C)continue;f+=C.tbtImpact;let _=Array.from(S).map(L=>{let M=p.byURL.get(L);return{url:L,...M}});this.condenseItems(_),h.push({product:T,transferSize:C.transferSize,blockingTime:C. -blockingTime,subItems:{type:"subitems",items:_},entity:w.name})}if(!h.length)return{score:1,notApplicable:!0,metricSavings:{TBT:0}};let y=[{key:"product",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:Ii(Tn.columnProduct)},{key:"transferSize",valueType:"bytes",subItemsHeading:{key:"transferSize"},granularity:1,label:Ii(F.columnTransferSize)},{key:"blockingTime",valueType:"ms",subItemsHeading:{key:"blockingTime"},granularity:1,label:Ii(F.columnBlockingTime)}];return{score:0,displayValue:Ii(Tn.displayValue,{itemCount:h.length}),details:v.makeTableDetails(y,h),metricSavings:{TBT:Math.round(f)}}}},tme=jC});var wj={};x(wj,{UIStrings:()=>vp,default:()=>rme});var vp,Ch,qC,rme,Dj=g(()=>{"use strict";d();V();R();ut();vp={title:"Image elements have explicit `width` and `height`",failureTitle:"Image elements do not have explicit `width` and `height`",description:"Set an explicit width and height on image elements to reduce layout shifts and improve CLS. [Learn how to set image dimensions](https://web.dev/articles/optimize-cls#images_without_dimensions)"},Ch=D("core/audits/unsized-images.js",vp),qC=class e extends v{static{s(this,"UnsizedImages")}static get meta(){return{id:"unsized-images",title:Ch(vp.title),failureTitle:Ch(vp.failureTitle),description:Ch(vp.description),guidanceLevel:4,requiredArtifacts:["ImageElements"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static doesHtmlAttrProvideExplicitSize(t){return!t||t.startsWith("+")?!1:parseInt(t,10)>=0}static isCssPropExplicitlySet(t){return t?!["auto","initial","unset","inherit"].includes(t):!1}static isSizedImage(t){if(t.cssEffectiveRules=== -void 0)return!0;let r=t.attributeWidth,n=t.attributeHeight,i=t.cssEffectiveRules.width,a=t.cssEffectiveRules.height,o=t.cssEffectiveRules.aspectRatio,u=e.doesHtmlAttrProvideExplicitSize(r),l=e.isCssPropExplicitlySet(i),c=e.doesHtmlAttrProvideExplicitSize(n),p=e.isCssPropExplicitlySet(a),m=e.isCssPropExplicitlySet(o),f=u||l,h=c||p;return f&&h||f&&m||h&&m}static isNonNetworkSvg(t){let r=J.guessMimeType(t.src)==="image/svg+xml",n=t.src.slice(0,t.src.indexOf(":")),i=J.isNonNetworkProtocol(n);return r&&i}static async audit(t){let r=t.ImageElements.filter(a=>!a.isCss&&!a.isInShadowDOM),n=[];for(let a of r){if(a.computedStyles.position==="fixed"||a.computedStyles.position==="absolute"||e.isNonNetworkSvg(a)||e.isSizedImage(a))continue;let u=a.node.boundingRect;u.width===0&&u.height===0||n.push({url:J.elideDataURI(a.src),node:v.makeNodeItem(a.node)})}let i=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Ch(F.columnURL)}];return{score:n.length>0?0:1,details:v.makeTableDetails( -i,n),metricSavings:{CLS:0}}}},rme=qC});var zC,Ej,Tj=g(()=>{"use strict";d();De();Bt();zC=class{static{s(this,"UserTimings")}static async compute_(t,r){let n=await xe.request(t,r),i=[],a={};return n.processEvents.filter(o=>o.cat.includes("blink.user_timing")?o.name!=="requestStart"&&o.name!=="navigationStart"&&o.name!=="paintNonDefaultBackgroundColor"&&o.args.frame===void 0:!1).forEach(o=>{o.ph==="R"||o.ph.toUpperCase()==="I"?i.push({name:o.name,isMark:!0,args:o.args,startTime:o.ts}):o.ph.toLowerCase()==="b"?a[o.name]=o.ts:o.ph.toLowerCase()==="e"&&i.push({name:o.name,isMark:!1,args:o.args,startTime:a[o.name],endTime:o.ts,duration:o.ts-a[o.name]})}),i.forEach(o=>{o.startTime=(o.startTime-n.timeOriginEvt.ts)/1e3,o.isMark||(o.endTime=(o.endTime-n.timeOriginEvt.ts)/1e3,o.duration=o.duration/1e3)}),i}},Ej=G(zC,null)});var xj={};x(xj,{UIStrings:()=>Su,default:()=>nme});var Su,Bo,HC,nme,Sj=g(()=>{"use strict";d();V();R();Tj();Su={title:"User Timing marks and measures",description:"Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more about User Timing marks](https://developer.chrome.com/docs/lighthouse/performance/user-timings/).",displayValue:`{itemCount, plural, + }`,columnProduct:"Product",categoryVideo:"{productName} (Video)",categoryCustomerSuccess:"{productName} (Customer Success)",categoryMarketing:"{productName} (Marketing)",categorySocial:"{productName} (Social)"},Ua=D("core/audits/third-party-facades.js",_r),L1e={video:_r.categoryVideo,"customer-success":_r.categoryCustomerSuccess,marketing:_r.categoryMarketing,social:_r.categorySocial},xk=class e extends b{static{s(this,"ThirdPartyFacades")}static get meta(){return{id:"third-party-facades",title:Ua(_r.title),failureTitle:Ua(_r.failureTitle),description:Ua(_r.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["traces","devtoolsLogs","URL","GatherContext"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static condenseItems(t){t.sort((o,i)=>i.transferSize-o.transferSize);let n=t.findIndex(o=>o.transferSize<1e3)||1;if((n===-1||n>5)&&(n=5),n>=t.length-1)return;let a=t.splice(n).reduce((o,i)=>(o.transferSize+=i.transferSize,o.blockingTime+=i.blockingTime,o));a.transferSize< +1e3||(a.url=Ua(F.otherResourcesLabel),t.push(a))}static getProductsWithFacade(t,n){let r=new Map;for(let a of t.keys()){let o=n.entityByUrl.get(a);if(!o||n.isFirstParty(a))continue;let i=Ro.getProduct(a);!i||!i.facades||!i.facades.length||r.has(i.name)||r.set(i.name,{product:i,entity:o})}return Array.from(r.values())}static async audit(t,n){let r=n.settings,a=t.devtoolsLogs[b.DEFAULT_PASS],o=await oe.request(a,n),i=await Dn.request({URL:t.URL,devtoolsLog:a},n),c=b.makeMetricComputationDataInput(t,n),u=await So.request(c,n),l=r.throttlingMethod==="simulate"?r.throttling.cpuSlowdownMultiplier:1,m=wk.getSummaries(o,u,l,i),p=e.getProductsWithFacade(m.byURL,i),f=0,h=[];for(let{product:v,entity:w}of p){let x=L1e[v.categories[0]],E;x?E=Ua(x,{productName:v.name}):E=v.name;let S=m.urls.get(w),k=m.byEntity.get(w);if(!S||!k)continue;f+=k.tbtImpact;let R=Array.from(S).map(O=>{let N=m.byURL.get(O);return{url:O,...N}});this.condenseItems(R),h.push({product:E,transferSize:k.transferSize,blockingTime:k. +blockingTime,subItems:{type:"subitems",items:R},entity:w.name})}if(!h.length)return{score:1,notApplicable:!0,metricSavings:{TBT:0}};let y=[{key:"product",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:Ua(_r.columnProduct)},{key:"transferSize",valueType:"bytes",subItemsHeading:{key:"transferSize"},granularity:1,label:Ua(F.columnTransferSize)},{key:"blockingTime",valueType:"ms",subItemsHeading:{key:"blockingTime"},granularity:1,label:Ua(F.columnBlockingTime)}];return{score:0,displayValue:Ua(_r.displayValue,{itemCount:h.length}),details:b.makeTableDetails(y,h),metricSavings:{TBT:Math.round(f)}}}},P1e=xk});var oq={};T(oq,{UIStrings:()=>Dm,default:()=>B1e});var Dm,Ah,Ek,B1e,iq=g(()=>{"use strict";d();V();A();dt();Dm={title:"Image elements have explicit `width` and `height`",failureTitle:"Image elements do not have explicit `width` and `height`",description:"Set an explicit width and height on image elements to reduce layout shifts and improve CLS. [Learn how to set image dimensions](https://web.dev/articles/optimize-cls#images_without_dimensions)"},Ah=D("core/audits/unsized-images.js",Dm),Ek=class e extends b{static{s(this,"UnsizedImages")}static get meta(){return{id:"unsized-images",title:Ah(Dm.title),failureTitle:Ah(Dm.failureTitle),description:Ah(Dm.description),guidanceLevel:4,requiredArtifacts:["ImageElements"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static doesHtmlAttrProvideExplicitSize(t){return!t||t.startsWith("+")?!1:parseInt(t,10)>=0}static isCssPropExplicitlySet(t){return t?!["auto","initial","unset","inherit"].includes(t):!1}static isSizedImage(t){if(t.cssEffectiveRules=== +void 0)return!0;let n=t.attributeWidth,r=t.attributeHeight,a=t.cssEffectiveRules.width,o=t.cssEffectiveRules.height,i=t.cssEffectiveRules.aspectRatio,c=e.doesHtmlAttrProvideExplicitSize(n),u=e.isCssPropExplicitlySet(a),l=e.doesHtmlAttrProvideExplicitSize(r),m=e.isCssPropExplicitlySet(o),p=e.isCssPropExplicitlySet(i),f=c||u,h=l||m;return f&&h||f&&p||h&&p}static isNonNetworkSvg(t){let n=X.guessMimeType(t.src)==="image/svg+xml",r=t.src.slice(0,t.src.indexOf(":")),a=X.isNonNetworkProtocol(r);return n&&a}static async audit(t){let n=t.ImageElements.filter(o=>!o.isCss&&!o.isInShadowDOM),r=[];for(let o of n){if(o.computedStyles.position==="fixed"||o.computedStyles.position==="absolute"||e.isNonNetworkSvg(o)||e.isSizedImage(o))continue;let c=o.node.boundingRect;c.width===0&&c.height===0||r.push({url:X.elideDataURI(o.src),node:b.makeNodeItem(o.node)})}let a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Ah(F.columnURL)}];return{score:r.length>0?0:1,details:b.makeTableDetails( +a,r),metricSavings:{CLS:0}}}},B1e=Ek});var Tk,sq,cq=g(()=>{"use strict";d();xe();Ut();Tk=class{static{s(this,"UserTimings")}static async compute_(t,n){let r=await ke.request(t,n),a=[],o={};return r.processEvents.filter(i=>i.cat.includes("blink.user_timing")?i.name!=="requestStart"&&i.name!=="navigationStart"&&i.name!=="paintNonDefaultBackgroundColor"&&i.args.frame===void 0:!1).forEach(i=>{i.ph==="R"||i.ph.toUpperCase()==="I"?a.push({name:i.name,isMark:!0,args:i.args,startTime:i.ts}):i.ph.toLowerCase()==="b"?o[i.name]=i.ts:i.ph.toLowerCase()==="e"&&a.push({name:i.name,isMark:!1,args:i.args,startTime:o[i.name],endTime:i.ts,duration:i.ts-o[i.name]})}),a.forEach(i=>{i.startTime=(i.startTime-r.timeOriginEvt.ts)/1e3,i.isMark||(i.endTime=(i.endTime-r.timeOriginEvt.ts)/1e3,i.duration=i.duration/1e3)}),a}},sq=G(Tk,null)});var uq={};T(uq,{UIStrings:()=>Cc,default:()=>U1e});var Cc,Hi,Sk,U1e,lq=g(()=>{"use strict";d();V();A();cq();Cc={title:"User Timing marks and measures",description:"Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more about User Timing marks](https://developer.chrome.com/docs/lighthouse/performance/user-timings/).",displayValue:`{itemCount, plural, =1 {1 user timing} other {# user timings} - }`,columnType:"Type"},Bo=D("core/audits/user-timings.js",Su),HC=class e extends v{static{s(this,"UserTimings")}static get meta(){return{id:"user-timings",title:Bo(Su.title),description:Bo(Su.description),scoreDisplayMode:v.SCORING_MODES.INFORMATIVE,guidanceLevel:2,requiredArtifacts:["traces"]}}static get excludedPrefixes(){return["goog_"]}static excludeEvent(t){return e.excludedPrefixes.every(r=>!t.name.startsWith(r))}static async audit(t,r){let n=t.traces[v.DEFAULT_PASS],a=(await Ej.request(n,r)).filter(e.excludeEvent),o=a.map(p=>({name:p.name,startTime:p.startTime,duration:p.isMark?void 0:p.duration,timingType:p.isMark?"Mark":"Measure"})).sort((p,m)=>p.timingType===m.timingType?p.startTime-m.startTime:p.timingType==="Measure"?-1:1),u=[{key:"name",valueType:"text",label:Bo(F.columnName)},{key:"timingType",valueType:"text",label:Bo(Su.columnType)},{key:"startTime",valueType:"ms",granularity:.01,label:Bo(F.columnStartTime)},{key:"duration",valueType:"ms",granularity:.01,label:Bo(F.columnDuration)}], -l=v.makeTableDetails(u,o),c;return a.length&&(c=Bo(Su.displayValue,{itemCount:a.length})),{score:+(a.length===0),notApplicable:a.length===0,displayValue:c,details:l}}},nme=HC});var Cj={};x(Cj,{UIStrings:()=>Uo,default:()=>ome});var ime,ame,Uo,ka,WC,ome,Fj=g(()=>{"use strict";d();V();ut();R();at();dr();Bn();Ei();qs();da();zn();ime=15e3,ame=50,Uo={title:"Preconnect to required origins",description:"Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",unusedWarning:'A `<link rel=preconnect>` was found for "{securityOrigin}" but was not used by the browser. Only use `preconnect` for important origins that the page will certainly request.',crossoriginWarning:'A `<link rel=preconnect>` was found for "{securityOrigin}" but was not used by the browser. Check that you are using the `crossorigin` attribute properly.',tooManyPreconnectLinksWarning:"More than 2 `<link rel=preconnect>` connections were found. These should be used sparingly and only to the most important orig\ -ins."},ka=D("core/audits/uses-rel-preconnect.js",Uo),WC=class e extends v{static{s(this,"UsesRelPreconnectAudit")}static get meta(){return{id:"uses-rel-preconnect",title:ka(Uo.title),description:ka(Uo.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["traces","devtoolsLogs","URL","LinkElements"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static hasValidTiming(t){return!!t.timing&&t.timing.connectEnd>=0&&t.timing.connectStart>=0}static hasAlreadyConnectedToOrigin(t){return t.timing?t.timing.dnsStart===-1&&t.timing.dnsEnd===-1&&t.timing.connectStart===-1&&t.timing.connectEnd===-1||t.timing.dnsEnd-t.timing.dnsStart===0&&t.timing.connectEnd-t.timing.connectStart===0:!1}static socketStartTimeIsBelowThreshold(t,r){return Math.max(0,t.networkRequestTime-r.networkEndTime)<ime}static async audit(t,r){let n=t.traces[e.DEFAULT_PASS],i=t.devtoolsLogs[e.DEFAULT_PASS],a=r.settings,o=0,u=0,l=[],[c,p,m,f,h]=await Promise.all([ie.request(i,r),lt.request({devtoolsLog:i, -URL:t.URL},r),Jt.request({devtoolsLog:i,settings:a},r),pr.request(n,r),yn.request({trace:n,devtoolsLog:i,URL:t.URL},r)]),{rtt:y,additionalRttByOrigin:b}=m.getOptions(),w=await Ir.getPessimisticGraph(h,f),E=new Set;w.traverse($=>{$.type==="network"&&E.add($.request.url)});let T=await Zt.getPessimisticGraph(h,f),S=new Set;T.traverse($=>{$.type==="network"&&S.add($.request.url)});let C=new Map;c.forEach($=>{if(!e.hasValidTiming($)||$.initiator.url===p.url||!$.parsedURL||!$.parsedURL.securityOrigin||p.parsedURL.securityOrigin===$.parsedURL.securityOrigin||!E.has($.url)||e.hasAlreadyConnectedToOrigin($)||!e.socketStartTimeIsBelowThreshold($,p))return;let ae=$.parsedURL.securityOrigin,ye=C.get(ae)||[];ye.push($),C.set(ae,ye)});let _=t.LinkElements.filter($=>$.rel==="preconnect"),L=new Set(_.map($=>J.getOrigin($.href||""))),M=[];C.forEach($=>{let ae=$.reduce((ct,rt)=>rt.networkRequestTime<ct.networkRequestTime?rt:ct);if(!ae.timing)return;let ye=ae.parsedURL.securityOrigin,se=b.get(ye)||0,gt=y+ -se;ae.parsedURL.scheme==="https"&&(gt=gt*2);let ce=ae.networkRequestTime-p.networkEndTime+ae.timing.dnsStart,ve=Math.min(gt,ce);if(!(ve<ame)){if(L.has(ye)){l.push(ka(Uo.crossoriginWarning,{securityOrigin:ye}));return}o=Math.max(ve,o),S.has(ae.url)&&(u=Math.max(ve,o)),M.push({url:ye,wastedMs:ve})}}),M=M.sort(($,ae)=>ae.wastedMs-$.wastedMs);for(let $ of L)$&&(c.some(ae=>$===ae.parsedURL.securityOrigin)||l.push(ka(Uo.unusedWarning,{securityOrigin:$})));if(_.length>=2)return{score:1,warnings:_.length>=3?[...l,ka(Uo.tooManyPreconnectLinksWarning)]:l,metricSavings:{LCP:o,FCP:u}};let H=[{key:"url",valueType:"url",label:ka(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:ka(F.columnWastedMs)}],te=v.makeOpportunityDetails(H,M,{overallSavingsMs:o,sortedBy:["wastedMs"]});return{score:M.length?0:1,numericValue:o,numericUnit:"millisecond",displayValue:o?ka(F.displayValueMsSavings,{wastedMs:o}):"",warnings:l,details:te,metricSavings:{LCP:o,FCP:u}}}},ome=WC});var kj={};x(kj,{UIStrings:()=>bp,default:()=>ume});var bp,Cu,sme,GC,ume,_j=g(()=>{"use strict";d();It();ut();Ot();V();aS();R();dr();qs();Bn();bp={title:"Preload key requests",description:"Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn how to preload key requests](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preload/).",crossoriginWarning:'A preload `<link>` was found for "{preloadURL}" but was not used by the browser. Check that you are using the `crossorigin` attribute properly.'},Cu=D("core/audits/uses-rel-preload.js",bp),sme=100,GC=class e extends v{static{s(this,"UsesRelPreloadAudit")}static get meta(){return{id:"uses-rel-preload",title:Cu(bp.title),description:Cu(bp.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["devtoolsLogs","traces","URL"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static getURLsToPreload(t,r){let n=new Set;return r.traverse((i,a)=>{ -if(i.type!=="network")return;let o=a.slice(1).filter(u=>u.type==="network");e.shouldPreloadRequest(i.request,t,o)&&n.add(i.request.url)}),n}static getURLsFailedToPreload(t){let r=[];t.traverse(o=>o.type==="network"&&r.push(o.rawRequest));let n=r.filter(o=>o.isLinkPreload),i=new Map;for(let o of n){let u=i.get(o.frameId)||new Set;u.add(o.url),i.set(o.frameId,u)}let a=r.filter(o=>{let u=i.get(o.frameId);return!u||!u.has(o.url)?!1:!(o.fromDiskCache||o.fromMemoryCache||o.fromPrefetchCache)&&!o.isLinkPreload});return new Set(a.map(o=>o.url))}static shouldPreloadRequest(t,r,n){let i=r.redirects?r.redirects.length:0;return t.isLinkPreload||!G1.isCritical(t,r)||K.isNonNetworkRequest(t)||n.length!==i+2||t.frameId!==r.frameId?!1:J.rootDomainsMatch(t.url,r.url)}static computeWasteWithGraph(t,r,n){if(!t.size)return{wastedMs:0,results:[]};let i=n.simulate(r),a=r.cloneWithRelationships(),o=[],u=null;if(a.traverse(m=>{m.type==="network"&&(m.isMainDocument()?u=m:m.request&&t.has(m.request.url)&&o.push( -m))}),!u)throw new Error("Could not find main document node");for(let m of o)m.removeAllDependencies(),m.addDependency(u);let l=n.simulate(a),c=Array.from(i.nodeTimings.keys()).reduce((m,f)=>m.set(f.request,f),new Map),p=[];for(let m of o){let f=c.get(m.request),h=l.nodeTimings.get(m),y=i.nodeTimings.get(f);if(!y||!h)throw new Error("Missing preload node");let b=Math.round(y.endTime-h.endTime);b<sme||p.push({url:m.request.url,wastedMs:b})}return p.length?{wastedMs:Math.max(...p.map(m=>m.wastedMs)),results:p}:{wastedMs:0,results:p}}static async audit(t,r){let n=t.traces[e.DEFAULT_PASS],i=t.devtoolsLogs[e.DEFAULT_PASS],a=t.URL,o={devtoolsLog:i,settings:r.settings},[u,l,c]=await Promise.all([lt.request({devtoolsLog:i,URL:a},r),yn.request({trace:n,devtoolsLog:i,URL:a},r),Jt.request(o,r)]),p=e.getURLsToPreload(u,l),{results:m,wastedMs:f}=e.computeWasteWithGraph(p,l,c);m.sort((E,T)=>T.wastedMs-E.wastedMs);let h,y=e.getURLsFailedToPreload(l);y.size&&(h=Array.from(y).map(E=>Cu(bp.crossoriginWarning, -{preloadURL:E})));let b=[{key:"url",valueType:"url",label:Cu(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:Cu(F.columnWastedMs)}],w=v.makeOpportunityDetails(b,m,{overallSavingsMs:f,sortedBy:["wastedMs"]});return{score:m.length?0:1,numericValue:f,numericUnit:"millisecond",displayValue:f?Cu(F.displayValueMsSavings,{wastedMs:f}):"",details:w,warnings:h}}},ume=GC});var Rj={};x(Rj,{UIStrings:()=>_a,default:()=>cme});var _a,jo,lme,VC,cme,Ij=g(()=>{"use strict";d();V();Ci();R();Pr();ut();_a={title:"Page has valid source maps",failureTitle:"Missing source maps for large first-party JavaScript",description:"Source maps translate minified code to the original source code. This helps developers debug in production. In addition, Lighthouse is able to provide further insights. Consider deploying source maps to take advantage of these benefits. [Learn more about source maps](https://developer.chrome.com/docs/devtools/javascript/source-maps/).",columnMapURL:"Map URL",missingSourceMapErrorMessage:"Large JavaScript file is missing a source map",missingSourceMapItemsWarningMesssage:"{missingItems, plural,\n =1 {Warning: missing 1 item in `.sourcesContent`}\n other {Warning: missing # items in `.sourcesContent`}\n }"},jo=D("core/audits/valid-source-maps.js",_a),lme=500*1024,VC=class extends v{static{s(this,"ValidSourceMaps")}static get meta(){return{id:"\ -valid-source-maps",title:jo(_a.title),failureTitle:jo(_a.failureTitle),description:jo(_a.description),requiredArtifacts:["Scripts","SourceMaps","URL","devtoolsLogs"]}}static isLargeFirstPartyJS(t,r){let n=t.url;if(!t.length||!n||!J.isValid(n)||!Me.createOrReturnURL(n).protocol.startsWith("http"))return!1;let i=t.length>=lme;return r.isFirstParty(n)&&i}static async audit(t,r){let{SourceMaps:n}=t,i=t.devtoolsLogs[v.DEFAULT_PASS],a=await fr.request({URL:t.URL,devtoolsLog:i},r),o=new Set,u=!1,l=[];for(let p of t.Scripts){let m=n.find(y=>y.scriptId===p.scriptId),f=[];if(this.isLargeFirstPartyJS(p,a)&&(!m||!m.map)&&(u=!0,o.add(p.url),f.push({error:jo(_a.missingSourceMapErrorMessage)})),m&&!m.map&&f.push({error:m.errorMessage}),m?.map){let y=m.map.sourcesContent||[],b=0;for(let w=0;w<m.map.sources.length;w++)(y.length<w||!y[w])&&(b+=1);b>0&&f.push({error:jo(_a.missingSourceMapItemsWarningMesssage,{missingItems:b})})}(m||f.length)&&l.push({scriptUrl:p.url,sourceMapUrl:m?.sourceMapUrl,subItems:{ -type:"subitems",items:f}})}let c=[{key:"scriptUrl",valueType:"url",subItemsHeading:{key:"error"},label:jo(F.columnURL)},{key:"sourceMapUrl",valueType:"url",label:jo(_a.columnMapURL)}];return l.sort((p,m)=>{let f=o.has(p.scriptUrl),h=o.has(m.scriptUrl);return f&&!h?-1:!f&&h?1:p.subItems.items.length&&!m.subItems.items.length?-1:!p.subItems.items.length&&m.subItems.items.length?1:m.scriptUrl.localeCompare(p.scriptUrl)}),{score:u?0:1,details:v.makeTableDetails(c,l)}}},cme=VC});var Aj={};x(Aj,{UIStrings:()=>Fu,default:()=>dme});var Fu,Fh,$C,dme,Nj=g(()=>{"use strict";d();V();wC();R();Fu={title:'Has a `<meta name="viewport">` tag with `width` or `initial-scale`',failureTitle:'Does not have a `<meta name="viewport">` tag with `width` or `initial-scale`',description:'A `<meta name="viewport">` not only optimizes your app for mobile screen sizes, but also prevents [a 300 millisecond delay to user input](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/). [Learn more about using the viewport meta tag](https://developer.chrome.com/docs/lighthouse/pwa/viewport/).',explanationNoTag:'No `<meta name="viewport">` tag found'},Fh=D("core/audits/viewport.js",Fu),$C=class extends v{static{s(this,"Viewport")}static get meta(){return{id:"viewport",title:Fh(Fu.title),failureTitle:Fh(Fu.failureTitle),description:Fh(Fu.description),guidanceLevel:3,requiredArtifacts:["MetaElements"],scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS}}static async audit(t,r){let n=await Eh. -request(t.MetaElements,r),i=300;if(!n.hasViewportTag)return{score:0,explanation:Fh(Fu.explanationNoTag),metricSavings:{INP:i}};n.isMobileOptimized&&(i=0);let a;return n.rawContentString!==void 0&&(a={type:"debugdata",viewportContent:n.rawContentString}),{score:Number(n.isMobileOptimized),metricSavings:{INP:i},warnings:n.parserWarnings,details:a}}},dme=$C});var Mj={};x(Mj,{UIStrings:()=>Ra,default:()=>mme});var pme,Ra,ku,YC,mme,Lj=g(()=>{"use strict";d();V();S1();Bt();R();at();ux();Sd();ri();Fd();H2();pme=1,Ra={title:"Minimizes work during key interaction",failureTitle:"Minimize work during key interaction",description:"This is the thread-blocking work occurring during the Interaction to Next Paint measurement. [Learn more about the Interaction to Next Paint metric](https://web.dev/articles/inp).",inputDelay:"Input delay",processingDuration:"Processing duration",presentationDelay:"Presentation delay",displayValue:"{timeInMs, number, milliseconds} ms spent on event '{interactionType}'",eventTarget:"Event target"},ku=D("core/audits/work-during-interaction.js",Ra),YC=class e extends v{static{s(this,"WorkDuringInteraction")}static get meta(){return{id:"work-during-interaction",title:ku(Ra.title),failureTitle:ku(Ra.failureTitle),description:ku(Ra.description),scoreDisplayMode:v.SCORING_MODES.METRIC_SAVINGS,supportedModes:["timespan"],guidanceLevel:1, -requiredArtifacts:["traces","devtoolsLogs","TraceElements"]}}static recursivelyClipTasks(t,r,n,i){let a=t.event.ts,o=t.endEvent?.ts??t.event.ts+Number(t.event.dur||0);t.startTime=Math.max(n,Math.min(i,a))/1e3,t.endTime=Math.max(n,Math.min(i,o))/1e3,t.duration=t.endTime-t.startTime;let u=t.children.map(l=>e.recursivelyClipTasks(l,t,n,i)).reduce((l,c)=>l+c,0);return t.selfTime=t.duration-u,t.duration}static clipTasksByTs(t,r,n){for(let i of t)i.parent||e.recursivelyClipTasks(i,void 0,r,n)}static getPhaseTimes(t){let r=t.args.data,n=t.ts,i=n-r.timeStamp*1e3,a=i+r.processingStart*1e3,o=i+r.processingEnd*1e3,u=n+r.duration*1e3;return{inputDelay:{startTs:n,endTs:a},processingDuration:{startTs:a,endTs:o},presentationDelay:{startTs:o,endTs:u}}}static getThreadBreakdownTable(t,r,n,i){let a=tr.filteredTraceSort(r.traceEvents,f=>f.pid===t.pid&&f.tid===t.tid),o=a.reduce((f,h)=>Math.max(h.ts+(h.dur||0),f),0),{frames:u}=n,l=Bs.getMainThreadTasks(a,u,o),c=e.getPhaseTimes(t),p=[];for(let[f,h]of Object. -entries(c)){e.clipTasksByTs(l,h.startTs,h.endTs);let y=C1(l,i),b=[];for(let[E,T]of y){let S=Object.values(T).reduce((M,H)=>M+H),C=T[Tr.scriptEvaluation.id]||0,_=T[Tr.styleLayout.id]||0,L=T[Tr.paintCompositeRender.id]||0;b.push({url:E,total:S,scripting:C,layout:_,render:L})}let w=b.filter(E=>E.total>pme).sort((E,T)=>T.total-E.total);p.push({phase:ku(Ra[f]),total:(h.endTs-h.startTs)/1e3,subItems:{type:"subitems",items:w}})}let m=[{key:"phase",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:"Phase"},{key:"total",valueType:"ms",subItemsHeading:{key:"total",granularity:1,valueType:"ms"},granularity:1,label:"Total time"},{key:null,valueType:"ms",subItemsHeading:{key:"scripting",granularity:1,valueType:"ms"},label:"Script evaluation"},{key:null,valueType:"ms",subItemsHeading:{key:"layout",granularity:1,valueType:"ms"},label:Tr.styleLayout.label},{key:null,valueType:"ms",subItemsHeading:{key:"render",granularity:1,valueType:"ms"},label:Tr.paintCompositeRender.label}];return{ -table:v.makeTableDetails(m,p,{sortedBy:["total"]}),phases:c}}static getTraceElementTable(t){let r=t.find(a=>a.traceEventType==="responsiveness");if(!r)return;let n=[{key:"node",valueType:"node",label:ku(Ra.eventTarget)}],i=[{node:v.makeNodeItem(r.node)}];return v.makeTableDetails(n,i)}static async audit(t,r){let{settings:n}=r;if(n.throttlingMethod==="simulate")return{score:null,notApplicable:!0,metricSavings:{INP:0}};let i=t.traces[e.DEFAULT_PASS],a={trace:i,settings:n},o=await Os.request(a,r);if(o===null)return{score:null,notApplicable:!0,metricSavings:{INP:0}};let u=[],l=e.getTraceElementTable(t.TraceElements);l&&u.push(l);let c=t.devtoolsLogs[e.DEFAULT_PASS],p=await ie.request(c,r),m=await xe.request(i,r),{table:f,phases:h}=e.getThreadBreakdownTable(o,i,m,p);u.push(f);let y=o.args.data.type;u.push({type:"debugdata",interactionType:y,phases:h});let b=o.args.data.duration,w=ku(Ra.displayValue,{timeInMs:b,interactionType:y}),E=b<z2.defaultOptions.p10;return{score:E?1:0,scoreDisplayMode:E? -v.SCORING_MODES.INFORMATIVE:void 0,displayValue:w,details:{type:"list",items:u},metricSavings:{INP:b}}}},mme=YC});var Pj={};x(Pj,{default:()=>fme});var fme,Oj=g(()=>{d();fme={audits:[{path:"lighthouse-plugin-soft-navigation/audits/soft-nav-fcp"},{path:"lighthouse-plugin-soft-navigation/audits/soft-nav-lcp"}],groups:{metrics:{title:"Metrics associated with a soft navigation"}},category:{title:"Soft Navigation",supportedModes:["timespan"],auditRefs:[{id:"soft-nav-fcp",weight:1,group:"metrics"},{id:"soft-nav-lcp",weight:1,group:"metrics"}]}}});function kh(e){let t,r,n,i;for(let u of e)switch(u.name){case"SoftNavigationHeuristics::UserInitiatedClick":r||(t=u);break;case"SoftNavigationHeuristics_SoftNavigationDetected":if(r)throw new Error("Multiple soft navigations detected");r=u;break;case"largestContentfulPaint::Candidate":t&&(n=u);break;case"firstContentfulPaint":t&&(i=u);break}if(!t)return{};let a=t.ts,o=s(u=>{if(u)return(u.ts-a)/1e3},"getTiming");return{lcpTiming:o(n),fcpTiming:o(i)}}var KC=g(()=>{d();s(kh,"computeMetricTimings")});var Bj={};x(Bj,{default:()=>hme});var JC,hme,Uj=g(()=>{d();_h();Bt();KC();JC=class extends v{static{s(this,"SoftNavFCP")}static get meta(){return{id:"soft-nav-fcp",title:"Soft Navigation First Contentful Paint",description:"First Contentful Paint of a soft navigation.",scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["Trace"]}}static async audit(t,r){let n=t.Trace,i=await xe.request(n,r),{fcpTiming:a}=kh(i.mainThreadEvents);return a?{numericValue:a,numericUnit:"millisecond",displayValue:`${a} ms`,score:v.computeLogNormalScore({p10:1800,median:3e3},a)}:{notApplicable:!0,score:1}}},hme=JC});var jj={};x(jj,{default:()=>gme});var ZC,gme,qj=g(()=>{d();_h();Bt();KC();ZC=class extends v{static{s(this,"SoftNavLCP")}static get meta(){return{id:"soft-nav-lcp",title:"Soft Navigation Largest Contentful Paint",description:"Largest Contentful Paint of a soft navigation.",scoreDisplayMode:v.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["Trace"]}}static async audit(t,r){let n=t.Trace,i=await xe.request(n,r),{lcpTiming:a}=kh(i.mainThreadEvents);return a?{numericValue:a,numericUnit:"millisecond",displayValue:`${a} ms`,score:v.computeLogNormalScore({p10:2500,median:4e3},a)}:{notApplicable:!0,score:1}}},gme=ZC});function XC(){if(globalThis.isDevtools||globalThis.isLightrider)return!0;try{return _u.resolve("lighthouse-logger"),!1}catch{return!0}}function Wj(e,t,r=!1){if(typeof e>"u"||e===null)return t;if(typeof t>"u")return e;if(Array.isArray(t)){if(r)return t;if(!Array.isArray(e))throw new TypeError(`Expected array but got ${typeof e}`);let n=e.slice();return t.forEach(i=>{n.some(a=>kn(a,i))||n.push(i)}),n}else if(typeof t=="object"){if(typeof e!="object")throw new TypeError(`Expected object but got ${typeof e}`);if(Array.isArray(e))throw new TypeError("Expected object but got Array");return Object.keys(t).forEach(n=>{let i=r||n==="settings"&&typeof e[n]=="object";e[n]=Wj(e[n],t[n],i)}),e}return t}function Gj(e,t,r){let n=new Map,i=e||[];for(let a=0;a<i.length;a++){let o=i[a];n.set(r(o),{index:a,item:o})}for(let a of t||[]){let o=n.get(r(a));if(o){let u=o.item,l=typeof a=="object"&&typeof u=="object"?qo(u,a,!0):a;i[o.index]=l}else i.push(a)}return i}function vme(e){if(typeof e=="string")return{ -path:e};if("implementation"in e||"instance"in e)return e;if("path"in e){if(typeof e.path!="string")throw new Error("Invalid Gatherer type "+JSON.stringify(e));return e}else{if(typeof e=="function")return{implementation:e};if(e&&typeof e.getArtifact=="function")return{instance:e};throw new Error("Invalid Gatherer type "+JSON.stringify(e))}}function bme(e){if(typeof e=="string")return{path:e,options:{}};if("implementation"in e&&typeof e.implementation.audit=="function")return e;if("path"in e&&typeof e.path=="string")return e;if("audit"in e&&typeof e.audit=="function")return{implementation:e,options:{}};throw new Error("Invalid Audit type "+JSON.stringify(e))}async function QC(e){St.isAbsolute(e)&&(e=Ga.pathToFileURL(e).href);let t;if(zj.has(e)?t=await zj.get(e):e.match(/\.(js|mjs|cjs)$/)?t=await import(e):(e+=".js",t=await import(e)),t.default)return t.default;let r=new Set(["meta"]),n=Object.keys(t).filter(i=>t[i]&&t[i]instanceof Object?Object.getOwnPropertyNames(t[i]).some(a=>r.has(a)): -!1);if(n.length===1)return n[0];throw n.length>1?new Error(`module '${e}' has too many possible exports`):new Error(`module '${e}' missing default export`)}async function wme(e,t,r){let n=t.find(o=>o===`${e}.js`),i=`../gather/gatherers/${e}`;n||(i=eF(e,r,"gatherer"));let a=await QC(i);return{instance:new a,implementation:a,path:e}}function Dme(e,t,r){let n=`${e}.js`,i=t.find(o=>o===n),a=`../audits/${e}`;if(!i)if(XC())a=e;else{let o=eF(e,r,"audit");XC()?a=St.relative("",o):a=o}return QC(a)}function Eme(e={}){let t={};for(let r of Object.keys(e))r in Yr&&(t[r]=e[r]);return t}function Vj(e={},t=void 0){let r=vm(t?.locale||e.locale),{defaultSettings:n}=oa,i=qo(tF(n),e,!0),a=qo(i,Eme(t),!0);return a.locale=r,a.emulatedUserAgent===!0&&(a.emulatedUserAgent=aa[a.formFactor]),pw(a),a}async function $j(e,t,r){let n=e.plugins||[],i=r?.plugins||[],a=new Set([...n,...i]);for(let o of a){RP(e,o);let u=XC()?o:eF(o,t,"plugin"),l=await QC(u),c=UP.parsePlugin(l,o);e=qo(e,c)}return e}async function Yj(e,t,r){ -let n=vme(e);if(n.instance)return{instance:n.instance,implementation:n.implementation,path:n.path};if(n.implementation){let i=n.implementation;return{instance:new i,implementation:n.implementation,path:n.path}}else if(n.path){let i=n.path;return wme(i,t,r)}else throw new Error("Invalid expanded Gatherer: "+JSON.stringify(n))}async function Kj(e,t){if(!e)return null;let r=nr.getAuditList(),n=e.map(async o=>{let u=bme(o),l;return"implementation"in u?l=u.implementation:l=await Dme(u.path,r,t),{implementation:l,path:u.path,options:u.options||{}}}),i=await Promise.all(n),a=yme(i);return a.forEach(o=>dw(o)),a}function eF(e,t,r){try{return _u.resolve(e)}catch{}try{return _u.resolve(e,{paths:[process.cwd()]})}catch{}let n=St.resolve(process.cwd(),e);try{return _u.resolve(n)}catch{}let i="Unable to locate "+(r?`${r}: `:"")+`\`${e}\`. + }`,columnType:"Type"},Hi=D("core/audits/user-timings.js",Cc),Sk=class e extends b{static{s(this,"UserTimings")}static get meta(){return{id:"user-timings",title:Hi(Cc.title),description:Hi(Cc.description),scoreDisplayMode:b.SCORING_MODES.INFORMATIVE,guidanceLevel:2,requiredArtifacts:["traces"]}}static get excludedPrefixes(){return["goog_"]}static excludeEvent(t){return e.excludedPrefixes.every(n=>!t.name.startsWith(n))}static async audit(t,n){let r=t.traces[b.DEFAULT_PASS],o=(await sq.request(r,n)).filter(e.excludeEvent),i=o.map(m=>({name:m.name,startTime:m.startTime,duration:m.isMark?void 0:m.duration,timingType:m.isMark?"Mark":"Measure"})).sort((m,p)=>m.timingType===p.timingType?m.startTime-p.startTime:m.timingType==="Measure"?-1:1),c=[{key:"name",valueType:"text",label:Hi(F.columnName)},{key:"timingType",valueType:"text",label:Hi(Cc.columnType)},{key:"startTime",valueType:"ms",granularity:.01,label:Hi(F.columnStartTime)},{key:"duration",valueType:"ms",granularity:.01,label:Hi(F.columnDuration)}], +u=b.makeTableDetails(c,i),l;return o.length&&(l=Hi(Cc.displayValue,{itemCount:o.length})),{score:+(o.length===0),notApplicable:o.length===0,displayValue:l,details:u}}},U1e=Sk});var dq={};T(dq,{UIStrings:()=>Wi,default:()=>q1e});var j1e,z1e,Wi,zo,Ck,q1e,mq=g(()=>{"use strict";d();V();dt();A();ut();rn();Vr();Ia();qs();Eo();Jr();j1e=15e3,z1e=50,Wi={title:"Preconnect to required origins",description:"Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",unusedWarning:'A `<link rel=preconnect>` was found for "{securityOrigin}" but was not used by the browser. Only use `preconnect` for important origins that the page will certainly request.',crossoriginWarning:'A `<link rel=preconnect>` was found for "{securityOrigin}" but was not used by the browser. Check that you are using the `crossorigin` attribute properly.',tooManyPreconnectLinksWarning:"More than 2 `<link rel=preconnect>` connections were found. These should be used sparingly and only to the most important orig\ +ins."},zo=D("core/audits/uses-rel-preconnect.js",Wi),Ck=class e extends b{static{s(this,"UsesRelPreconnectAudit")}static get meta(){return{id:"uses-rel-preconnect",title:zo(Wi.title),description:zo(Wi.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["traces","devtoolsLogs","URL","LinkElements"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static hasValidTiming(t){return!!t.timing&&t.timing.connectEnd>=0&&t.timing.connectStart>=0}static hasAlreadyConnectedToOrigin(t){return t.timing?t.timing.dnsStart===-1&&t.timing.dnsEnd===-1&&t.timing.connectStart===-1&&t.timing.connectEnd===-1||t.timing.dnsEnd-t.timing.dnsStart===0&&t.timing.connectEnd-t.timing.connectStart===0:!1}static socketStartTimeIsBelowThreshold(t,n){return Math.max(0,t.networkRequestTime-n.networkEndTime)<j1e}static async audit(t,n){let r=t.traces[e.DEFAULT_PASS],a=t.devtoolsLogs[e.DEFAULT_PASS],o=n.settings,i=0,c=0,u=[],[l,m,p,f,h]=await Promise.all([oe.request(a,n),Qe.request({devtoolsLog:a, +URL:t.URL},n),nn.request({devtoolsLog:a,settings:o},n),bn.request(r,n),Sr.request({trace:r,devtoolsLog:a,URL:t.URL},n)]),{rtt:y,additionalRttByOrigin:v}=p.getOptions(),w=await Ln.getPessimisticGraph(h,f),x=new Set;w.traverse($=>{$.type==="network"&&x.add($.request.url)});let E=await an.getPessimisticGraph(h,f),S=new Set;E.traverse($=>{$.type==="network"&&S.add($.request.url)});let k=new Map;l.forEach($=>{if(!e.hasValidTiming($)||$.initiator.url===m.url||!$.parsedURL||!$.parsedURL.securityOrigin||m.parsedURL.securityOrigin===$.parsedURL.securityOrigin||!x.has($.url)||e.hasAlreadyConnectedToOrigin($)||!e.socketStartTimeIsBelowThreshold($,m))return;let ie=$.parsedURL.securityOrigin,ye=k.get(ie)||[];ye.push($),k.set(ie,ye)});let R=t.LinkElements.filter($=>$.rel==="preconnect"),O=new Set(R.map($=>X.getOrigin($.href||""))),N=[];k.forEach($=>{let ie=$.reduce((mt,ot)=>ot.networkRequestTime<mt.networkRequestTime?ot:mt);if(!ie.timing)return;let ye=ie.parsedURL.securityOrigin,ce=v.get(ye)||0,vt=y+ +ce;ie.parsedURL.scheme==="https"&&(vt=vt*2);let me=ie.networkRequestTime-m.networkEndTime+ie.timing.dnsStart,ve=Math.min(vt,me);if(!(ve<z1e)){if(O.has(ye)){u.push(zo(Wi.crossoriginWarning,{securityOrigin:ye}));return}i=Math.max(ve,i),S.has(ie.url)&&(c=Math.max(ve,i)),N.push({url:ye,wastedMs:ve})}}),N=N.sort(($,ie)=>ie.wastedMs-$.wastedMs);for(let $ of O)$&&(l.some(ie=>$===ie.parsedURL.securityOrigin)||u.push(zo(Wi.unusedWarning,{securityOrigin:$})));if(R.length>=2)return{score:1,warnings:R.length>=3?[...u,zo(Wi.tooManyPreconnectLinksWarning)]:u,metricSavings:{LCP:i,FCP:c}};let H=[{key:"url",valueType:"url",label:zo(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:zo(F.columnWastedMs)}],ne=b.makeOpportunityDetails(H,N,{overallSavingsMs:i,sortedBy:["wastedMs"]});return{score:N.length?0:1,numericValue:i,numericUnit:"millisecond",displayValue:i?zo(F.displayValueMsSavings,{wastedMs:i}):"",warnings:u,details:ne,metricSavings:{LCP:i,FCP:c}}}},q1e=Ck});var pq={};T(pq,{UIStrings:()=>xm,default:()=>W1e});var xm,kc,H1e,kk,W1e,fq=g(()=>{"use strict";d();Mt();dt();Bt();V();U2();A();rn();qs();Vr();xm={title:"Preload key requests",description:"Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn how to preload key requests](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preload/).",crossoriginWarning:'A preload `<link>` was found for "{preloadURL}" but was not used by the browser. Check that you are using the `crossorigin` attribute properly.'},kc=D("core/audits/uses-rel-preload.js",xm),H1e=100,kk=class e extends b{static{s(this,"UsesRelPreloadAudit")}static get meta(){return{id:"uses-rel-preload",title:kc(xm.title),description:kc(xm.description),supportedModes:["navigation"],guidanceLevel:3,requiredArtifacts:["devtoolsLogs","traces","URL"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static getURLsToPreload(t,n){let r=new Set;return n.traverse((a,o)=>{ +if(a.type!=="network")return;let i=o.slice(1).filter(c=>c.type==="network");e.shouldPreloadRequest(a.request,t,i)&&r.add(a.request.url)}),r}static getURLsFailedToPreload(t){let n=[];t.traverse(i=>i.type==="network"&&n.push(i.rawRequest));let r=n.filter(i=>i.isLinkPreload),a=new Map;for(let i of r){let c=a.get(i.frameId)||new Set;c.add(i.url),a.set(i.frameId,c)}let o=n.filter(i=>{let c=a.get(i.frameId);return!c||!c.has(i.url)?!1:!(i.fromDiskCache||i.fromMemoryCache||i.fromPrefetchCache)&&!i.isLinkPreload});return new Set(o.map(i=>i.url))}static shouldPreloadRequest(t,n,r){let a=n.redirects?n.redirects.length:0;return t.isLinkPreload||!J1.isCritical(t,n)||K.isNonNetworkRequest(t)||r.length!==a+2||t.frameId!==n.frameId?!1:X.rootDomainsMatch(t.url,n.url)}static computeWasteWithGraph(t,n,r){if(!t.size)return{wastedMs:0,results:[]};let a=r.simulate(n),o=n.cloneWithRelationships(),i=[],c=null;if(o.traverse(p=>{p.type==="network"&&(p.isMainDocument()?c=p:p.request&&t.has(p.request.url)&&i.push( +p))}),!c)throw new Error("Could not find main document node");for(let p of i)p.removeAllDependencies(),p.addDependency(c);let u=r.simulate(o),l=Array.from(a.nodeTimings.keys()).reduce((p,f)=>p.set(f.request,f),new Map),m=[];for(let p of i){let f=l.get(p.request),h=u.nodeTimings.get(p),y=a.nodeTimings.get(f);if(!y||!h)throw new Error("Missing preload node");let v=Math.round(y.endTime-h.endTime);v<H1e||m.push({url:p.request.url,wastedMs:v})}return m.length?{wastedMs:Math.max(...m.map(p=>p.wastedMs)),results:m}:{wastedMs:0,results:m}}static async audit(t,n){let r=t.traces[e.DEFAULT_PASS],a=t.devtoolsLogs[e.DEFAULT_PASS],o=t.URL,i={devtoolsLog:a,settings:n.settings},[c,u,l]=await Promise.all([Qe.request({devtoolsLog:a,URL:o},n),Sr.request({trace:r,devtoolsLog:a,URL:o},n),nn.request(i,n)]),m=e.getURLsToPreload(c,u),{results:p,wastedMs:f}=e.computeWasteWithGraph(m,u,l);p.sort((x,E)=>E.wastedMs-x.wastedMs);let h,y=e.getURLsFailedToPreload(u);y.size&&(h=Array.from(y).map(x=>kc(xm.crossoriginWarning, +{preloadURL:x})));let v=[{key:"url",valueType:"url",label:kc(F.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:kc(F.columnWastedMs)}],w=b.makeOpportunityDetails(v,p,{overallSavingsMs:f,sortedBy:["wastedMs"]});return{score:p.length?0:1,numericValue:f,numericUnit:"millisecond",displayValue:f?kc(F.displayValueMsSavings,{wastedMs:f}):"",details:w,warnings:h}}},W1e=kk});var hq={};T(hq,{UIStrings:()=>qo,default:()=>V1e});var qo,Gi,G1e,Fk,V1e,gq=g(()=>{"use strict";d();V();Na();A();zn();dt();qo={title:"Page has valid source maps",failureTitle:"Missing source maps for large first-party JavaScript",description:"Source maps translate minified code to the original source code. This helps developers debug in production. In addition, Lighthouse is able to provide further insights. Consider deploying source maps to take advantage of these benefits. [Learn more about source maps](https://developer.chrome.com/docs/devtools/javascript/source-maps/).",columnMapURL:"Map URL",missingSourceMapErrorMessage:"Large JavaScript file is missing a source map",missingSourceMapItemsWarningMesssage:"{missingItems, plural,\n =1 {Warning: missing 1 item in `.sourcesContent`}\n other {Warning: missing # items in `.sourcesContent`}\n }"},Gi=D("core/audits/valid-source-maps.js",qo),G1e=500*1024,Fk=class extends b{static{s(this,"ValidSourceMaps")}static get meta(){return{id:"\ +valid-source-maps",title:Gi(qo.title),failureTitle:Gi(qo.failureTitle),description:Gi(qo.description),requiredArtifacts:["Scripts","SourceMaps","URL","devtoolsLogs"]}}static isLargeFirstPartyJS(t,n){let r=t.url;if(!t.length||!r||!X.isValid(r)||!Le.createOrReturnURL(r).protocol.startsWith("http"))return!1;let a=t.length>=G1e;return n.isFirstParty(r)&&a}static async audit(t,n){let{SourceMaps:r}=t,a=t.devtoolsLogs[b.DEFAULT_PASS],o=await Dn.request({URL:t.URL,devtoolsLog:a},n),i=new Set,c=!1,u=[];for(let m of t.Scripts){let p=r.find(y=>y.scriptId===m.scriptId),f=[];if(this.isLargeFirstPartyJS(m,o)&&(!p||!p.map)&&(c=!0,i.add(m.url),f.push({error:Gi(qo.missingSourceMapErrorMessage)})),p&&!p.map&&f.push({error:p.errorMessage}),p?.map){let y=p.map.sourcesContent||[],v=0;for(let w=0;w<p.map.sources.length;w++)(y.length<w||!y[w])&&(v+=1);v>0&&f.push({error:Gi(qo.missingSourceMapItemsWarningMesssage,{missingItems:v})})}(p||f.length)&&u.push({scriptUrl:m.url,sourceMapUrl:p?.sourceMapUrl,subItems:{ +type:"subitems",items:f}})}let l=[{key:"scriptUrl",valueType:"url",subItemsHeading:{key:"error"},label:Gi(F.columnURL)},{key:"sourceMapUrl",valueType:"url",label:Gi(qo.columnMapURL)}];return u.sort((m,p)=>{let f=i.has(m.scriptUrl),h=i.has(p.scriptUrl);return f&&!h?-1:!f&&h?1:m.subItems.items.length&&!p.subItems.items.length?-1:!m.subItems.items.length&&p.subItems.items.length?1:p.scriptUrl.localeCompare(m.scriptUrl)}),{score:c?0:1,details:b.makeTableDetails(l,u)}}},V1e=Fk});var yq={};T(yq,{UIStrings:()=>Fc,default:()=>$1e});var Fc,_h,Rk,$1e,vq=g(()=>{"use strict";d();V();nk();A();Fc={title:'Has a `<meta name="viewport">` tag with `width` or `initial-scale`',failureTitle:'Does not have a `<meta name="viewport">` tag with `width` or `initial-scale`',description:'A `<meta name="viewport">` not only optimizes your app for mobile screen sizes, but also prevents [a 300 millisecond delay to user input](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/). [Learn more about using the viewport meta tag](https://developer.chrome.com/docs/lighthouse/pwa/viewport/).',explanationNoTag:'No `<meta name="viewport">` tag found'},_h=D("core/audits/viewport.js",Fc),Rk=class extends b{static{s(this,"Viewport")}static get meta(){return{id:"viewport",title:_h(Fc.title),failureTitle:_h(Fc.failureTitle),description:_h(Fc.description),guidanceLevel:3,requiredArtifacts:["MetaElements"],scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS}}static async audit(t,n){let r=await kh. +request(t.MetaElements,n),a=300;if(!r.hasViewportTag)return{score:0,explanation:_h(Fc.explanationNoTag),metricSavings:{INP:a}};r.isMobileOptimized&&(a=0);let o;return r.rawContentString!==void 0&&(o={type:"debugdata",viewportContent:r.rawContentString}),{score:Number(r.isMobileOptimized),metricSavings:{INP:a},warnings:r.parserWarnings,details:o}}},$1e=Rk});var bq={};T(bq,{UIStrings:()=>Ho,default:()=>K1e});var Y1e,Ho,Rc,Ik,K1e,wq=g(()=>{"use strict";d();V();I1();Ut();A();ut();qT();Fd();la();Id();TC();Y1e=1,Ho={title:"Minimizes work during key interaction",failureTitle:"Minimize work during key interaction",description:"This is the thread-blocking work occurring during the Interaction to Next Paint measurement. [Learn more about the Interaction to Next Paint metric](https://web.dev/articles/inp).",inputDelay:"Input delay",processingDuration:"Processing duration",presentationDelay:"Presentation delay",displayValue:"{timeInMs, number, milliseconds} ms spent on event '{interactionType}'",eventTarget:"Event target"},Rc=D("core/audits/work-during-interaction.js",Ho),Ik=class e extends b{static{s(this,"WorkDuringInteraction")}static get meta(){return{id:"work-during-interaction",title:Rc(Ho.title),failureTitle:Rc(Ho.failureTitle),description:Rc(Ho.description),scoreDisplayMode:b.SCORING_MODES.METRIC_SAVINGS,supportedModes:["timespan"],guidanceLevel:1, +requiredArtifacts:["traces","devtoolsLogs","TraceElements"]}}static recursivelyClipTasks(t,n,r,a){let o=t.event.ts,i=t.endEvent?.ts??t.event.ts+Number(t.event.dur||0);t.startTime=Math.max(r,Math.min(a,o))/1e3,t.endTime=Math.max(r,Math.min(a,i))/1e3,t.duration=t.endTime-t.startTime;let c=t.children.map(u=>e.recursivelyClipTasks(u,t,r,a)).reduce((u,l)=>u+l,0);return t.selfTime=t.duration-c,t.duration}static clipTasksByTs(t,n,r){for(let a of t)a.parent||e.recursivelyClipTasks(a,void 0,n,r)}static getPhaseTimes(t){let n=t.args.data,r=t.ts,a=r-n.timeStamp*1e3,o=a+n.processingStart*1e3,i=a+n.processingEnd*1e3,c=r+n.duration*1e3;return{inputDelay:{startTs:r,endTs:o},processingDuration:{startTs:o,endTs:i},presentationDelay:{startTs:i,endTs:c}}}static getThreadBreakdownTable(t,n,r,a){let o=un.filteredTraceSort(n.traceEvents,f=>f.pid===t.pid&&f.tid===t.tid),i=o.reduce((f,h)=>Math.max(h.ts+(h.dur||0),f),0),{frames:c}=r,u=Us.getMainThreadTasks(o,c,i),l=e.getPhaseTimes(t),m=[];for(let[f,h]of Object. +entries(l)){e.clipTasksByTs(u,h.startTs,h.endTs);let y=A1(u,a),v=[];for(let[x,E]of y){let S=Object.values(E).reduce((N,H)=>N+H),k=E[Fn.scriptEvaluation.id]||0,R=E[Fn.styleLayout.id]||0,O=E[Fn.paintCompositeRender.id]||0;v.push({url:x,total:S,scripting:k,layout:R,render:O})}let w=v.filter(x=>x.total>Y1e).sort((x,E)=>E.total-x.total);m.push({phase:Rc(Ho[f]),total:(h.endTs-h.startTs)/1e3,subItems:{type:"subitems",items:w}})}let p=[{key:"phase",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:"Phase"},{key:"total",valueType:"ms",subItemsHeading:{key:"total",granularity:1,valueType:"ms"},granularity:1,label:"Total time"},{key:null,valueType:"ms",subItemsHeading:{key:"scripting",granularity:1,valueType:"ms"},label:"Script evaluation"},{key:null,valueType:"ms",subItemsHeading:{key:"layout",granularity:1,valueType:"ms"},label:Fn.styleLayout.label},{key:null,valueType:"ms",subItemsHeading:{key:"render",granularity:1,valueType:"ms"},label:Fn.paintCompositeRender.label}];return{ +table:b.makeTableDetails(p,m,{sortedBy:["total"]}),phases:l}}static getTraceElementTable(t){let n=t.find(o=>o.traceEventType==="responsiveness");if(!n)return;let r=[{key:"node",valueType:"node",label:Rc(Ho.eventTarget)}],a=[{node:b.makeNodeItem(n.node)}];return b.makeTableDetails(r,a)}static async audit(t,n){let{settings:r}=n;if(r.throttlingMethod==="simulate")return{score:null,notApplicable:!0,metricSavings:{INP:0}};let a=t.traces[e.DEFAULT_PASS],o={trace:a,settings:r},i=await Bs.request(o,n);if(i===null)return{score:null,notApplicable:!0,metricSavings:{INP:0}};let c=[],u=e.getTraceElementTable(t.TraceElements);u&&c.push(u);let l=t.devtoolsLogs[e.DEFAULT_PASS],m=await oe.request(l,n),p=await ke.request(a,n),{table:f,phases:h}=e.getThreadBreakdownTable(i,a,p,m);c.push(f);let y=i.args.data.type;c.push({type:"debugdata",interactionType:y,phases:h});let v=i.args.data.duration,w=Rc(Ho.displayValue,{timeInMs:v,interactionType:y}),x=v<EC.defaultOptions.p10;return{score:x?1:0,scoreDisplayMode:x? +b.SCORING_MODES.INFORMATIVE:void 0,displayValue:w,details:{type:"list",items:c},metricSavings:{INP:v}}}},K1e=Ik});var Dq={};T(Dq,{default:()=>J1e});var J1e,xq=g(()=>{d();J1e={audits:[{path:"lighthouse-plugin-soft-navigation/audits/soft-nav-fcp"},{path:"lighthouse-plugin-soft-navigation/audits/soft-nav-lcp"}],groups:{metrics:{title:"Metrics associated with a soft navigation"}},category:{title:"Soft Navigation",supportedModes:["timespan"],auditRefs:[{id:"soft-nav-fcp",weight:1,group:"metrics"},{id:"soft-nav-lcp",weight:1,group:"metrics"}]}}});function Mh(e){let t,n,r,a;for(let c of e)switch(c.name){case"SoftNavigationHeuristics::UserInitiatedClick":n||(t=c);break;case"SoftNavigationHeuristics_SoftNavigationDetected":if(n)throw new Error("Multiple soft navigations detected");n=c;break;case"largestContentfulPaint::Candidate":t&&(r=c);break;case"firstContentfulPaint":t&&(a=c);break}if(!t)return{};let o=t.ts,i=s(c=>{if(c)return(c.ts-o)/1e3},"getTiming");return{lcpTiming:i(r),fcpTiming:i(a)}}var Ak=g(()=>{d();s(Mh,"computeMetricTimings")});var Eq={};T(Eq,{default:()=>X1e});var _k,X1e,Tq=g(()=>{d();Nh();Ut();Ak();_k=class extends b{static{s(this,"SoftNavFCP")}static get meta(){return{id:"soft-nav-fcp",title:"Soft Navigation First Contentful Paint",description:"First Contentful Paint of a soft navigation.",scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["Trace"]}}static async audit(t,n){let r=t.Trace,a=await ke.request(r,n),{fcpTiming:o}=Mh(a.mainThreadEvents);return o?{numericValue:o,numericUnit:"millisecond",displayValue:`${o} ms`,score:b.computeLogNormalScore({p10:1800,median:3e3},o)}:{notApplicable:!0,score:1}}},X1e=_k});var Sq={};T(Sq,{default:()=>Z1e});var Mk,Z1e,Cq=g(()=>{d();Nh();Ut();Ak();Mk=class extends b{static{s(this,"SoftNavLCP")}static get meta(){return{id:"soft-nav-lcp",title:"Soft Navigation Largest Contentful Paint",description:"Largest Contentful Paint of a soft navigation.",scoreDisplayMode:b.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["Trace"]}}static async audit(t,n){let r=t.Trace,a=await ke.request(r,n),{lcpTiming:o}=Mh(a.mainThreadEvents);return o?{numericValue:o,numericUnit:"millisecond",displayValue:`${o} ms`,score:b.computeLogNormalScore({p10:2500,median:4e3},o)}:{notApplicable:!0,score:1}}},Z1e=Mk});function Nk(){if(globalThis.isDevtools||globalThis.isLightrider)return!0;try{return Ic.resolve("lighthouse-logger"),!1}catch{return!0}}function Rq(e,t,n=!1){if(typeof e>"u"||e===null)return t;if(typeof t>"u")return e;if(Array.isArray(t)){if(n)return t;if(!Array.isArray(e))throw new TypeError(`Expected array but got ${typeof e}`);let r=e.slice();return t.forEach(a=>{r.some(o=>Pr(o,a))||r.push(a)}),r}else if(typeof t=="object"){if(typeof e!="object")throw new TypeError(`Expected object but got ${typeof e}`);if(Array.isArray(e))throw new TypeError("Expected object but got Array");return Object.keys(t).forEach(r=>{let a=n||r==="settings"&&typeof e[r]=="object";e[r]=Rq(e[r],t[r],a)}),e}return t}function Iq(e,t,n){let r=new Map,a=e||[];for(let o=0;o<a.length;o++){let i=a[o];r.set(n(i),{index:o,item:i})}for(let o of t||[]){let i=r.get(n(o));if(i){let c=i.item,u=typeof o=="object"&&typeof c=="object"?Vi(c,o,!0):o;a[i.index]=u}else a.push(o)}return a}function ehe(e){if(typeof e=="string")return{ +path:e};if("implementation"in e||"instance"in e)return e;if("path"in e){if(typeof e.path!="string")throw new Error("Invalid Gatherer type "+JSON.stringify(e));return e}else{if(typeof e=="function")return{implementation:e};if(e&&typeof e.getArtifact=="function")return{instance:e};throw new Error("Invalid Gatherer type "+JSON.stringify(e))}}function the(e){if(typeof e=="string")return{path:e,options:{}};if("implementation"in e&&typeof e.implementation.audit=="function")return e;if("path"in e&&typeof e.path=="string")return e;if("audit"in e&&typeof e.audit=="function")return{implementation:e,options:{}};throw new Error("Invalid Audit type "+JSON.stringify(e))}async function Ok(e){Ct.isAbsolute(e)&&(e=ai.pathToFileURL(e).href);let t;if(kq.has(e)?t=await kq.get(e):e.match(/\.(js|mjs|cjs)$/)?t=await import(e):(e+=".js",t=await import(e)),t.default)return t.default;let n=new Set(["meta"]),r=Object.keys(t).filter(a=>t[a]&&t[a]instanceof Object?Object.getOwnPropertyNames(t[a]).some(o=>n.has(o)): +!1);if(r.length===1)return r[0];throw r.length>1?new Error(`module '${e}' has too many possible exports`):new Error(`module '${e}' missing default export`)}async function nhe(e,t,n){let r=t.find(i=>i===`${e}.js`),a=`../gather/gatherers/${e}`;r||(a=Lk(e,n,"gatherer"));let o=await Ok(a);return{instance:new o,implementation:o,path:e}}function rhe(e,t,n){let r=`${e}.js`,a=t.find(i=>i===r),o=`../audits/${e}`;if(!a)if(Nk())o=e;else{let i=Lk(e,n,"audit");Nk()?o=Ct.relative("",i):o=i}return Ok(o)}function ahe(e={}){let t={};for(let n of Object.keys(e))n in tr&&(t[n]=e[n]);return t}function Aq(e={},t=void 0){let n=Dp(t?.locale||e.locale),{defaultSettings:r}=vo,a=Vi(Pk(r),e,!0),o=Vi(a,ahe(t),!0);return o.locale=n,o.emulatedUserAgent===!0&&(o.emulatedUserAgent=yo[o.formFactor]),Vw(o),o}async function _q(e,t,n){let r=e.plugins||[],a=n?.plugins||[],o=new Set([...r,...a]);for(let i of o){dL(e,i);let c=Nk()?i:Lk(i,t,"plugin"),u=await Ok(c),l=wL.parsePlugin(u,i);e=Vi(e,l)}return e}async function Mq(e,t,n){ +let r=ehe(e);if(r.instance)return{instance:r.instance,implementation:r.implementation,path:r.path};if(r.implementation){let a=r.implementation;return{instance:new a,implementation:r.implementation,path:r.path}}else if(r.path){let a=r.path;return nhe(a,t,n)}else throw new Error("Invalid expanded Gatherer: "+JSON.stringify(r))}async function Nq(e,t){if(!e)return null;let n=dn.getAuditList(),r=e.map(async i=>{let c=the(i),u;return"implementation"in c?u=c.implementation:u=await rhe(c.path,n,t),{implementation:u,path:c.path,options:c.options||{}}}),a=await Promise.all(r),o=Q1e(a);return o.forEach(i=>Gw(i)),o}function Lk(e,t,n){try{return Ic.resolve(e)}catch{}try{return Ic.resolve(e,{paths:[process.cwd()]})}catch{}let r=Ct.resolve(process.cwd(),e);try{return Ic.resolve(r)}catch{}let a="Unable to locate "+(n?`${n}: `:"")+`\`${e}\`. Tried to resolve the module from these locations: - ${n}`;if(!t)throw new Error(i);let a=St.resolve(t,e);try{return _u.resolve(a)}catch{}try{return _u.resolve(e,{paths:[t]})}catch{}throw new Error(i+` - ${a}`)}function Hj(e){return typeof e=="object"?Object.assign(Object.create(Object.getPrototypeOf(e)),e):e}function tF(e){return JSON.parse(JSON.stringify(e))}function rF(e){let t=tF(e);return Array.isArray(e.audits)&&(t.audits=e.audits.map(r=>Hj(r))),Array.isArray(e.artifacts)&&(t.artifacts=e.artifacts.map(r=>({...r,gatherer:Hj(r.gatherer)}))),t}var _u,yme,qo,zj,nF=g(()=>{"use strict";d();Ui();is();ll();nl();wi();jP();Ia();R();fw();Va();_u=Wa("core/config/config-helpers.js");s(XC,"isBundledEnvironment");yme=s(function(e){let t=[];for(let r of e){let n=r.path&&t.find(i=>i.path===r.path);if(!n){t.push(r);continue}n.options=Object.assign({},n.options,r.options)}return t},"mergeOptionsOfItems");s(Wj,"_mergeConfigFragment");qo=Wj;s(Gj,"mergeConfigFragmentArrayByKey");s(vme,"expandGathererShorthand");s(bme,"expandAuditShorthand");zj=new Map([["../gather/gatherers/accessibility",Promise.resolve().then(()=>(VP(),GP))],["../gather/gatherers/anchor-elements",Promise.resolve().then(()=>(ZP(),JP))], -["../gather/gatherers/bf-cache-failures",Promise.resolve().then(()=>(n8(),r8))],["../gather/gatherers/cache-contents",Promise.resolve().then(()=>(a8(),i8))],["../gather/gatherers/console-messages",Promise.resolve().then(()=>(s8(),o8))],["../gather/gatherers/css-usage",Promise.resolve().then(()=>(l8(),u8))],["../gather/gatherers/devtools-log-compat",Promise.resolve().then(()=>(d8(),c8))],["../gather/gatherers/devtools-log",Promise.resolve().then(()=>(gn(),t8))],["../gather/gatherers/dobetterweb/doctype",Promise.resolve().then(()=>(m8(),p8))],["../gather/gatherers/dobetterweb/domstats",Promise.resolve().then(()=>(h8(),f8))],["../gather/gatherers/dobetterweb/optimized-images",Promise.resolve().then(()=>(y8(),g8))],["../gather/gatherers/dobetterweb/response-compression",Promise.resolve().then(()=>(b8(),v8))],["../gather/gatherers/full-page-screenshot",Promise.resolve().then(()=>(C8(),S8))],["../gather/gatherers/iframe-elements",Promise.resolve().then(()=>(k8(),F8))],["../gather/gatherers/i\ -mage-elements",Promise.resolve().then(()=>(M8(),N8))],["../gather/gatherers/inputs",Promise.resolve().then(()=>(P8(),L8))],["../gather/gatherers/inspector-issues",Promise.resolve().then(()=>(B8(),O8))],["../gather/gatherers/js-usage",Promise.resolve().then(()=>(j8(),U8))],["../gather/gatherers/link-elements",Promise.resolve().then(()=>($8(),V8))],["../gather/gatherers/main-document-content",Promise.resolve().then(()=>(K8(),Y8))],["../gather/gatherers/meta-elements",Promise.resolve().then(()=>(Z8(),J8))],["../gather/gatherers/network-user-agent",Promise.resolve().then(()=>(Q8(),X8))],["../gather/gatherers/root-causes",Promise.resolve().then(()=>(dD(),a5))],["../gather/gatherers/scripts",Promise.resolve().then(()=>(fD(),o5))],["../gather/gatherers/seo/font-size",Promise.resolve().then(()=>(qw(),jw))],["../gather/gatherers/seo/robots-txt",Promise.resolve().then(()=>(u5(),s5))],["../gather/gatherers/source-maps",Promise.resolve().then(()=>(T5(),E5))],["../gather/gatherers/stacks",Promise.resolve().then(()=>(S5(),x5))], -["../gather/gatherers/stylesheets",Promise.resolve().then(()=>(F5(),C5))],["../gather/gatherers/trace-compat",Promise.resolve().then(()=>(_5(),k5))],["../gather/gatherers/trace-elements",Promise.resolve().then(()=>(FD(),I5))],["../gather/gatherers/trace",Promise.resolve().then(()=>(Ba(),fk))],["../gather/gatherers/viewport-dimensions",Promise.resolve().then(()=>(N5(),A5))],["../audits/accessibility/accesskeys",Promise.resolve().then(()=>(P5(),L5))],["../audits/accessibility/aria-allowed-attr",Promise.resolve().then(()=>(B5(),O5))],["../audits/accessibility/aria-allowed-role",Promise.resolve().then(()=>(j5(),U5))],["../audits/accessibility/aria-command-name",Promise.resolve().then(()=>(z5(),q5))],["../audits/accessibility/aria-conditional-attr",Promise.resolve().then(()=>(W5(),H5))],["../audits/accessibility/aria-deprecated-role",Promise.resolve().then(()=>(V5(),G5))],["../audits/accessibility/aria-dialog-name",Promise.resolve().then(()=>(Y5(),$5))],["../audits/accessibility/aria-hidden\ --body",Promise.resolve().then(()=>(J5(),K5))],["../audits/accessibility/aria-hidden-focus",Promise.resolve().then(()=>(X5(),Z5))],["../audits/accessibility/aria-input-field-name",Promise.resolve().then(()=>(eO(),Q5))],["../audits/accessibility/aria-meter-name",Promise.resolve().then(()=>(rO(),tO))],["../audits/accessibility/aria-progressbar-name",Promise.resolve().then(()=>(iO(),nO))],["../audits/accessibility/aria-prohibited-attr",Promise.resolve().then(()=>(oO(),aO))],["../audits/accessibility/aria-required-attr",Promise.resolve().then(()=>(uO(),sO))],["../audits/accessibility/aria-required-children",Promise.resolve().then(()=>(cO(),lO))],["../audits/accessibility/aria-required-parent",Promise.resolve().then(()=>(pO(),dO))],["../audits/accessibility/aria-roles",Promise.resolve().then(()=>(fO(),mO))],["../audits/accessibility/aria-text",Promise.resolve().then(()=>(gO(),hO))],["../audits/accessibility/aria-toggle-field-name",Promise.resolve().then(()=>(vO(),yO))],["../audits/accessibil\ -ity/aria-tooltip-name",Promise.resolve().then(()=>(wO(),bO))],["../audits/accessibility/aria-treeitem-name",Promise.resolve().then(()=>(EO(),DO))],["../audits/accessibility/aria-valid-attr-value",Promise.resolve().then(()=>(xO(),TO))],["../audits/accessibility/aria-valid-attr",Promise.resolve().then(()=>(CO(),SO))],["../audits/accessibility/button-name",Promise.resolve().then(()=>(kO(),FO))],["../audits/accessibility/bypass",Promise.resolve().then(()=>(RO(),_O))],["../audits/accessibility/color-contrast",Promise.resolve().then(()=>(AO(),IO))],["../audits/accessibility/definition-list",Promise.resolve().then(()=>(MO(),NO))],["../audits/accessibility/dlitem",Promise.resolve().then(()=>(PO(),LO))],["../audits/accessibility/document-title",Promise.resolve().then(()=>(BO(),OO))],["../audits/accessibility/duplicate-id-aria",Promise.resolve().then(()=>(jO(),UO))],["../audits/accessibility/empty-heading",Promise.resolve().then(()=>(zO(),qO))],["../audits/accessibility/form-field-multiple-label\ -s",Promise.resolve().then(()=>(WO(),HO))],["../audits/accessibility/frame-title",Promise.resolve().then(()=>(VO(),GO))],["../audits/accessibility/heading-order",Promise.resolve().then(()=>(YO(),$O))],["../audits/accessibility/html-has-lang",Promise.resolve().then(()=>(JO(),KO))],["../audits/accessibility/html-lang-valid",Promise.resolve().then(()=>(XO(),ZO))],["../audits/accessibility/html-xml-lang-mismatch",Promise.resolve().then(()=>(e6(),QO))],["../audits/accessibility/identical-links-same-purpose",Promise.resolve().then(()=>(r6(),t6))],["../audits/accessibility/image-alt",Promise.resolve().then(()=>(i6(),n6))],["../audits/accessibility/image-redundant-alt",Promise.resolve().then(()=>(o6(),a6))],["../audits/accessibility/input-button-name",Promise.resolve().then(()=>(u6(),s6))],["../audits/accessibility/input-image-alt",Promise.resolve().then(()=>(c6(),l6))],["../audits/accessibility/label-content-name-mismatch",Promise.resolve().then(()=>(p6(),d6))],["../audits/accessibility/label", -Promise.resolve().then(()=>(f6(),m6))],["../audits/accessibility/landmark-one-main",Promise.resolve().then(()=>(g6(),h6))],["../audits/accessibility/link-in-text-block",Promise.resolve().then(()=>(v6(),y6))],["../audits/accessibility/link-name",Promise.resolve().then(()=>(w6(),b6))],["../audits/accessibility/list",Promise.resolve().then(()=>(E6(),D6))],["../audits/accessibility/listitem",Promise.resolve().then(()=>(x6(),T6))],["../audits/accessibility/manual/custom-controls-labels",Promise.resolve().then(()=>(C6(),S6))],["../audits/accessibility/manual/custom-controls-roles",Promise.resolve().then(()=>(k6(),F6))],["../audits/accessibility/manual/focus-traps",Promise.resolve().then(()=>(R6(),_6))],["../audits/accessibility/manual/focusable-controls",Promise.resolve().then(()=>(A6(),I6))],["../audits/accessibility/manual/interactive-element-affordance",Promise.resolve().then(()=>(M6(),N6))],["../audits/accessibility/manual/logical-tab-order",Promise.resolve().then(()=>(P6(),L6))],["../au\ -dits/accessibility/manual/managed-focus",Promise.resolve().then(()=>(B6(),O6))],["../audits/accessibility/manual/offscreen-content-hidden",Promise.resolve().then(()=>(j6(),U6))],["../audits/accessibility/manual/use-landmarks",Promise.resolve().then(()=>(z6(),q6))],["../audits/accessibility/manual/visual-order-follows-dom",Promise.resolve().then(()=>(W6(),H6))],["../audits/accessibility/meta-refresh",Promise.resolve().then(()=>(V6(),G6))],["../audits/accessibility/meta-viewport",Promise.resolve().then(()=>(Y6(),$6))],["../audits/accessibility/object-alt",Promise.resolve().then(()=>(J6(),K6))],["../audits/accessibility/select-name",Promise.resolve().then(()=>(X6(),Z6))],["../audits/accessibility/skip-link",Promise.resolve().then(()=>(e4(),Q6))],["../audits/accessibility/tabindex",Promise.resolve().then(()=>(r4(),t4))],["../audits/accessibility/table-duplicate-name",Promise.resolve().then(()=>(i4(),n4))],["../audits/accessibility/table-fake-caption",Promise.resolve().then(()=>(o4(),a4))], -["../audits/accessibility/target-size",Promise.resolve().then(()=>(u4(),s4))],["../audits/accessibility/td-has-header",Promise.resolve().then(()=>(c4(),l4))],["../audits/accessibility/td-headers-attr",Promise.resolve().then(()=>(p4(),d4))],["../audits/accessibility/th-has-data-cells",Promise.resolve().then(()=>(f4(),m4))],["../audits/accessibility/valid-lang",Promise.resolve().then(()=>(g4(),h4))],["../audits/accessibility/video-caption",Promise.resolve().then(()=>(v4(),y4))],["../audits/autocomplete",Promise.resolve().then(()=>(D4(),w4))],["../audits/bf-cache",Promise.resolve().then(()=>(S4(),x4))],["../audits/bootup-time",Promise.resolve().then(()=>(R4(),_4))],["../audits/byte-efficiency/duplicated-javascript",Promise.resolve().then(()=>(L4(),M4))],["../audits/byte-efficiency/efficient-animated-content",Promise.resolve().then(()=>(O4(),P4))],["../audits/byte-efficiency/legacy-javascript",Promise.resolve().then(()=>(H4(),z4))],["../audits/byte-efficiency/modern-image-formats",Promise.resolve().then(()=>(G4(),W4))], -["../audits/byte-efficiency/offscreen-images",Promise.resolve().then(()=>(J4(),K4))],["../audits/byte-efficiency/render-blocking-resources",Promise.resolve().then(()=>(tB(),eB))],["../audits/byte-efficiency/total-byte-weight",Promise.resolve().then(()=>(nB(),rB))],["../audits/byte-efficiency/unminified-css",Promise.resolve().then(()=>(uB(),sB))],["../audits/byte-efficiency/unminified-javascript",Promise.resolve().then(()=>(cB(),lB))],["../audits/byte-efficiency/unused-css-rules",Promise.resolve().then(()=>(pB(),dB))],["../audits/byte-efficiency/unused-javascript",Promise.resolve().then(()=>(fB(),mB))],["../audits/byte-efficiency/uses-long-cache-ttl",Promise.resolve().then(()=>(bB(),vB))],["../audits/byte-efficiency/uses-optimized-images",Promise.resolve().then(()=>(DB(),wB))],["../audits/byte-efficiency/uses-responsive-images-snapshot",Promise.resolve().then(()=>(SB(),xB))],["../audits/byte-efficiency/uses-responsive-images",Promise.resolve().then(()=>(tS(),eS))],["../audits/byte-effic\ -iency/uses-text-compression",Promise.resolve().then(()=>(FB(),CB))],["../audits/critical-request-chains",Promise.resolve().then(()=>(_B(),kB))],["../audits/csp-xss",Promise.resolve().then(()=>(nU(),rU))],["../audits/deprecations",Promise.resolve().then(()=>(lU(),uU))],["../audits/diagnostics",Promise.resolve().then(()=>(dU(),cU))],["../audits/dobetterweb/charset",Promise.resolve().then(()=>(hU(),fU))],["../audits/dobetterweb/doctype",Promise.resolve().then(()=>(yU(),gU))],["../audits/dobetterweb/dom-size",Promise.resolve().then(()=>(bU(),vU))],["../audits/dobetterweb/geolocation-on-start",Promise.resolve().then(()=>(DU(),wU))],["../audits/dobetterweb/inspector-issues",Promise.resolve().then(()=>(TU(),EU))],["../audits/dobetterweb/js-libraries",Promise.resolve().then(()=>(SU(),xU))],["../audits/dobetterweb/no-document-write",Promise.resolve().then(()=>(FU(),CU))],["../audits/dobetterweb/notification-on-start",Promise.resolve().then(()=>(_U(),kU))],["../audits/dobetterweb/paste-preventin\ -g-inputs",Promise.resolve().then(()=>(IU(),RU))],["../audits/dobetterweb/uses-http2",Promise.resolve().then(()=>(NU(),AU))],["../audits/dobetterweb/uses-passive-event-listeners",Promise.resolve().then(()=>(LU(),MU))],["../audits/errors-in-console",Promise.resolve().then(()=>(OU(),PU))],["../audits/final-screenshot",Promise.resolve().then(()=>(qU(),jU))],["../audits/font-display",Promise.resolve().then(()=>(qS(),HU))],["../audits/image-aspect-ratio",Promise.resolve().then(()=>(VU(),GU))],["../audits/image-size-responsive",Promise.resolve().then(()=>(KU(),YU))],["../audits/is-on-https",Promise.resolve().then(()=>(XU(),ZU))],["../audits/largest-contentful-paint-element",Promise.resolve().then(()=>(t7(),e7))],["../audits/layout-shifts",Promise.resolve().then(()=>(a7(),i7))],["../audits/lcp-lazy-loaded",Promise.resolve().then(()=>(s7(),o7))],["../audits/long-tasks",Promise.resolve().then(()=>(l7(),u7))],["../audits/main-thread-tasks",Promise.resolve().then(()=>(d7(),c7))],["../audits/mainth\ -read-work-breakdown",Promise.resolve().then(()=>(m7(),p7))],["../audits/metrics",Promise.resolve().then(()=>(U7(),B7))],["../audits/metrics/cumulative-layout-shift",Promise.resolve().then(()=>(a2(),n7))],["../audits/metrics/first-contentful-paint",Promise.resolve().then(()=>(q7(),j7))],["../audits/metrics/first-meaningful-paint",Promise.resolve().then(()=>(W7(),H7))],["../audits/metrics/interaction-to-next-paint",Promise.resolve().then(()=>(H2(),G7))],["../audits/metrics/interactive",Promise.resolve().then(()=>($7(),V7))],["../audits/metrics/largest-contentful-paint",Promise.resolve().then(()=>(ZS(),QU))],["../audits/metrics/max-potential-fid",Promise.resolve().then(()=>(K7(),Y7))],["../audits/metrics/speed-index",Promise.resolve().then(()=>(Z7(),J7))],["../audits/metrics/total-blocking-time",Promise.resolve().then(()=>(Q7(),X7))],["../audits/network-requests",Promise.resolve().then(()=>(t9(),e9))],["../audits/network-rtt",Promise.resolve().then(()=>(n9(),r9))],["../audits/network-serv\ -er-latency",Promise.resolve().then(()=>(a9(),i9))],["../audits/non-composited-animations",Promise.resolve().then(()=>(s9(),o9))],["../audits/oopif-iframe-test-audit",Promise.resolve().then(()=>(l9(),u9))],["../audits/predictive-perf",Promise.resolve().then(()=>(d9(),c9))],["../audits/preload-fonts",Promise.resolve().then(()=>(m9(),p9))],["../audits/prioritize-lcp-image",Promise.resolve().then(()=>(h9(),f9))],["../audits/redirects-http",Promise.resolve().then(()=>(y9(),g9))],["../audits/redirects",Promise.resolve().then(()=>(b9(),v9))],["../audits/resource-summary",Promise.resolve().then(()=>(T9(),E9))],["../audits/screenshot-thumbnails",Promise.resolve().then(()=>(C9(),S9))],["../audits/script-treemap-data",Promise.resolve().then(()=>(k9(),F9))],["../audits/seo/canonical",Promise.resolve().then(()=>(R9(),_9))],["../audits/seo/crawlable-anchors",Promise.resolve().then(()=>(A9(),I9))],["../audits/seo/font-size",Promise.resolve().then(()=>(O9(),P9))],["../audits/seo/hreflang",Promise.resolve().then(()=>(q9(),j9))], -["../audits/seo/http-status-code",Promise.resolve().then(()=>(H9(),z9))],["../audits/seo/is-crawlable",Promise.resolve().then(()=>(rj(),tj))],["../audits/seo/link-text",Promise.resolve().then(()=>(ij(),nj))],["../audits/seo/manual/structured-data",Promise.resolve().then(()=>(sj(),oj))],["../audits/seo/meta-description",Promise.resolve().then(()=>(lj(),uj))],["../audits/seo/robots-txt",Promise.resolve().then(()=>(pj(),dj))],["../audits/server-response-time",Promise.resolve().then(()=>(fj(),mj))],["../audits/third-party-cookies",Promise.resolve().then(()=>(gj(),hj))],["../audits/third-party-facades",Promise.resolve().then(()=>(bj(),vj))],["../audits/third-party-summary",Promise.resolve().then(()=>(UC(),yj))],["../audits/unsized-images",Promise.resolve().then(()=>(Dj(),wj))],["../audits/user-timings",Promise.resolve().then(()=>(Sj(),xj))],["../audits/uses-rel-preconnect",Promise.resolve().then(()=>(Fj(),Cj))],["../audits/uses-rel-preload",Promise.resolve().then(()=>(_j(),kj))],["../audits\ -/valid-source-maps",Promise.resolve().then(()=>(Ij(),Rj))],["../audits/viewport",Promise.resolve().then(()=>(Nj(),Aj))],["../audits/work-during-interaction",Promise.resolve().then(()=>(Lj(),Mj))],["lighthouse-plugin-soft-navigation",Promise.resolve().then(()=>(Oj(),Pj))],["lighthouse-plugin-soft-navigation/audits/soft-nav-fcp",Promise.resolve().then(()=>(Uj(),Bj))],["lighthouse-plugin-soft-navigation/audits/soft-nav-lcp",Promise.resolve().then(()=>(qj(),jj))]]);s(QC,"requireWrapper");s(wme,"requireGatherer");s(Dme,"requireAudit");s(Eme,"cleanFlagsForSettings");s(Vj,"resolveSettings");s($j,"mergePlugins");s(Yj,"resolveGathererToDefn");s(Kj,"resolveAuditsToDefns");s(eF,"resolveModulePath");s(Hj,"shallowClone");s(tF,"deepClone");s(rF,"deepCloneConfigJson")});function xme(e,t){let{configPath:r}=t;if(r&&!St.isAbsolute(r))throw new Error("configPath must be an absolute path");e||(e=c1,r=Tme);let n=r?St.dirname(r):void 0;return{configWorkingCopy:rF(e),configPath:r,configDir:n}}function Sme(e){if(!e.extends)return e;if(e.extends!=="lighthouse:default")throw new Error("`lighthouse:default` is the only valid extension method.");let{artifacts:t,...r}=e,n=rF(c1),i=qo(n,r);return i.artifacts=Gj(n.artifacts,t,a=>a.id),i}function Cme(e,t,r){if(!("dependencies"in t.instance.meta))return;let n=Object.entries(t.instance.meta.dependencies).map(([i,a])=>{let o=r.get(a);return o||mw(e.id,i),_P(t,o.gatherer)||AP(e.id,i),[i,{id:o.id}]});return Object.fromEntries(n)}async function Fme(e,t){if(!e)return null;let r={msg:"Resolve artifact definitions",id:"lh:config:resolveArtifactsToDefns"};N.time(r,"verbose");let n=[...e];n.sort((u,l)=>{let c=Jj[u.id]||0,p=Jj[l.id]||0;return c-p});let i=new Map,a=nr.getGathererList(),o=[];for(let u of n){let l=u.gatherer,c=await Yj( -l,a,t),p={id:u.id,gatherer:c,dependencies:Cme(u,c,i)},m=p.gatherer.instance.meta.symbol;m&&i.set(m,p),o.push(p)}return N.timeEnd(r),o}function kme(e,t){t==="timespan"&&e.throttlingMethod==="simulate"&&(e.throttlingMethod="devtools")}function _me(e){e.throttlingMethod!=="simulate"&&(e.cpuQuietThresholdMs=Math.max(e.cpuQuietThresholdMs||0,Ms.cpuQuietThresholdMs),e.networkQuietThresholdMs=Math.max(e.networkQuietThresholdMs||0,Ms.networkQuietThresholdMs),e.pauseAfterFcpMs=Math.max(e.pauseAfterFcpMs||0,Ms.pauseAfterFcpMs),e.pauseAfterLoadMs=Math.max(e.pauseAfterLoadMs||0,Ms.pauseAfterLoadMs))}async function Ai(e,t,r={}){let n={msg:"Initialize config",id:"lh:config"};N.time(n,"verbose");let{configWorkingCopy:i,configDir:a}=xme(t,r);i=Sme(i),i=await $j(i,a,r);let o=Vj(i.settings||{},r);kme(o,e),_me(o);let l={artifacts:await Fme(i.artifacts,a),audits:await Kj(i.audits,a),categories:i.categories||null,groups:i.groups||null,settings:o};return IP(l),l=LP(l,e),l=PP(l,o),N.timeEnd(n),{resolvedConfig:l}} -var Tme,Jj,Ru=g(()=>{"use strict";d();Ui();Ne();Ia();cw();wi();fw();OP();nF();Va();ci();Tme=St.join("","../../config/default-config.js"),Jj={FullPageScreenshot:1,BFCacheFailures:1};s(xme,"resolveWorkingCopy");s(Sme,"resolveExtensions");s(Cme,"resolveArtifactDependencies");s(Fme,"resolveArtifactsToDefns");s(kme,"overrideSettingsForGatherMode");s(_me,"overrideThrottlingWindows");s(Ai,"initializeConfig")});var Zj={};x(Zj,{default:()=>Rme});var Rme,Xj=g(()=>{d();Rme={}});async function Nme(e){if(e.flags.enableErrorReporting&&Iu._shouldSample())try{let t=await Promise.resolve().then(()=>(Xj(),Zj));t.init({...e.environmentData,dsn:Ime});let r=e.flags;try{let{resolvedConfig:o}=await Ai("navigation",e.config,e.flags);r=o.settings}catch{}let n={channel:r.channel,formFactor:r.formFactor,throttlingMethod:r.throttlingMethod};t.setTags(n);let i={...r.throttling,url:e.url};t.setExtras(i),Iu.captureMessage=(...o)=>t.captureMessage(...o),Iu.captureBreadcrumb=(...o)=>t.addBreadcrumb(...o),Iu.getContext=()=>i;let a=new Map;Iu.captureException=async(o,u={})=>{if(!o||o.expected)return;let l=u.tags||{};if(l.audit){let c=`audit-${l.audit}-${o.message}`;if(a.has(c))return;a.set(c,!0)}if(l.gatherer){let c=`gatherer-${l.gatherer}-${o.message}`;if(a.has(c))return;a.set(c,!0)}o.protocolMethod&&(u.fingerprint=["{{ default }}",o.protocolMethod,o.protocolError],u.tags=u.tags||{},u.tags.protocolMethod=o.protocolMethod),t.withScope(c=>{u.level&&c.setLevel(u.level),u.tags&&c.setTags( -u.tags);let p;u.extra&&(p={...u.extra}),o.extra&&(p={...p,...o.extra}),p&&c.setExtras(p),t.captureException(o)})}}catch{N.warn("sentry","Could not load Sentry, errors will not be reported.")}}var Ime,Ame,iF,Iu,bt,Kr=g(()=>{"use strict";d();Ne();Ru();Ime="https://a6bb0da87ee048cc9ae2a345fc09ab2e:63a7029f46f74265981b7e005e0f69f8@sentry.io/174697",Ame=.01,iF=s(()=>{},"noop"),Iu={init:Nme,captureMessage:iF,captureBreadcrumb:iF,getContext:iF,captureException:async()=>{},_shouldSample(){return Ame>=Math.random()}};s(Nme,"init");bt=Iu});var Au,Qj=g(()=>{d();Au={}});var Nu,Rh=g(()=>{"use strict";d();Qj();Nu=class e{static{s(this,"ReportGenerator")}static replaceStrings(t,r){if(r.length===0)return t;let n=r[0],i=r.slice(1);return t.split(n.search).map(a=>e.replaceStrings(a,i)).join(n.replacement)}static sanitizeJson(t){return JSON.stringify(t).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}static generateReportHtml(t){let r=e.sanitizeJson(t),n=Au.REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return e.replaceStrings(Au.REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_JSON%%",replacement:r},{search:"%%LIGHTHOUSE_JAVASCRIPT%%",replacement:n}])}static generateFlowReportHtml(t){let r=e.sanitizeJson(t),n=Au.FLOW_REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return e.replaceStrings(Au.FLOW_REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_FLOW_JSON%%",replacement:r},{search:"%%LIGHTHOUSE_FLOW_JAVASCRIPT%%",replacement:n},{search:"/*%%LIGHTHOUSE_FLOW_CSS%%*/",replacement:Au.FLOW_REPORT_CSS}])}static generateReportCSV(t){let r=`\r -`,n=",",i=s(l=>`"${l.replace(/"/g,'""')}"`,"escape"),a=s(l=>l.map(c=>c===null?"null":c.toString()).map(i),"rowFormatter"),o=[],u=["requestedUrl","finalDisplayedUrl","fetchTime","gatherMode"];o.push(a(u)),o.push(a(u.map(l=>t[l]??null))),o.push([]),o.push(["category","score"]);for(let l of Object.values(t.categories))o.push(a([l.id,l.score]));o.push([]),o.push(["category","audit","score","displayValue","description"]);for(let l of Object.values(t.categories))for(let c of l.auditRefs){let p=t.audits[c.id];p&&o.push(a([l.id,c.id,p.score,p.displayValue||"",p.description]))}return o.map(l=>l.join(n)).join(r)}static isFlowResult(t){return"steps"in t}static generateReport(t,r){let n=Array.isArray(r);typeof r=="string"&&(r=[r]);let i=r.map(a=>{if(a==="html")return e.isFlowResult(t)?e.generateFlowReportHtml(t):e.generateReportHtml(t);if(a==="csv"){if(e.isFlowResult(t))throw new Error("CSV output is not support for user flows");return e.generateReportCSV(t)}if(a==="json")return JSON.stringify(t,null, -2);throw new Error("Invalid output mode: "+a)});return n?i:i[0]}}});var nr,Ia=g(()=>{"use strict";d();ni();Ui();Ne();nl();aI();V();ci();jA();FP();Kr();Rh();zt();cl();Va();Ci();ut();nr=class e{static{s(this,"Runner")}static async audit(t,r){let{resolvedConfig:n,computedCache:i}=r,a=n.settings;try{let o={msg:"Audit phase",id:"lh:runner:audit"};N.time(o,"verbose");let u=[];if(a.gatherMode&&!a.auditMode)return;if(!n.audits)throw new Error("No audits to evaluate.");let l=await e._runAudits(a,n.audits,t,u,i),c={msg:"Generating results...",id:"lh:runner:generate"};N.time(c),t.LighthouseRunWarnings&&u.push(...t.LighthouseRunWarnings);let m={"axe-core":t.Accessibility?.version},f={};n.categories&&(f=im.scoreAllCategories(n.categories,l)),N.timeEnd(c),N.timeEnd(o);let h=t.FullPageScreenshot;(n.settings.disableFullPageScreenshot||h instanceof Error)&&(h=void 0);let y={lighthouseVersion:PA,requestedUrl:t.URL.requestedUrl,mainDocumentUrl:t.URL.mainDocumentUrl,finalDisplayedUrl:t.URL.finalDisplayedUrl,finalUrl:t.URL.mainDocumentUrl,fetchTime:t.fetchTime,gatherMode:t. -GatherContext.gatherMode,runtimeError:e.getArtifactRuntimeError(t),runWarnings:u,userAgent:t.HostUserAgent,environment:{networkUserAgent:t.NetworkUserAgent,hostUserAgent:t.HostUserAgent,benchmarkIndex:t.BenchmarkIndex,credits:m},audits:l,configSettings:a,categories:f,categoryGroups:n.groups||void 0,stackPacks:UA(t.Stacks),entities:await e.getEntityClassification(t,{computedCache:i}),fullPageScreenshot:h,timing:this._getTiming(t),i18n:{rendererFormattedStrings:ZI(a.locale),icuMessagePaths:{}}};y.i18n.icuMessagePaths=Hg(y,a.locale);let b=y;if(a.auditMode){let E=e._getDataSavePath(a);SP(b,E)}let w=Nu.generateReport(b,a.output);return{lhr:b,artifacts:t,report:w}}catch(o){throw e.createRunnerError(o,a)}}static async getEntityClassification(t,r){let n=t.devtoolsLogs?.[v.DEFAULT_PASS];if(!n)return;let i=await fr.request({URL:t.URL,devtoolsLog:n},r),a=[];for(let[o,u]of i.urlsByEntity){let l=new Set;for(let p of u){let m=J.getOrigin(p);m&&l.add(m)}let c={name:o.name,homepage:o.homepage,origins:[ -...l]};o===i.firstParty&&(c.isFirstParty=!0),o.isUnrecognized&&(c.isUnrecognized=!0),o.category&&(c.category=o.category),a.push(c)}return a}static async gather(t,r){let n=r.resolvedConfig.settings;try{let i=bt.getContext();if(bt.captureBreadcrumb({message:"Run started",category:"lifecycle",data:i}),n.auditMode&&!n.gatherMode){let u=this._getDataSavePath(n);return TP(u)}let a={msg:"Gather phase",id:"lh:runner:gather"};N.time(a,"verbose");let o=await t({resolvedConfig:r.resolvedConfig});if(N.timeEnd(a),o.Timing=N.takeTimeEntries(),n.gatherMode){let u=this._getDataSavePath(n);await xP(o,u)}return o}catch(i){throw e.createRunnerError(i,n)}}static createRunnerError(t,r){return t.friendlyMessage&&(t.friendlyMessage=$a(t.friendlyMessage,r.locale)),bt.captureException(t,{level:"fatal"}),t}static _getTiming(t){let r=t.Timing||[],n=N.takeTimeEntries(),i=[...r,...n].map(p=>[`${p.startTime}-${p.name}-${p.duration}`,p]),a=Array.from(new Map(i).values()).map(p=>({startTime:parseFloat(p.startTime.toFixed( -2)),name:p.name,duration:parseFloat(p.duration.toFixed(2)),entryType:p.entryType})).sort((p,m)=>p.startTime-m.startTime),o=a.find(p=>p.name==="lh:runner:gather"),u=a.find(p=>p.name==="lh:runner:audit"),l=o?.duration||0,c=u?.duration||0;return{entries:a,total:l+c}}static async _runAudits(t,r,n,i,a){let o={msg:"Analyzing and running audits...",id:"lh:runner:auditing"};if(N.time(o),n.settings){let c={locale:void 0,gatherMode:void 0,auditMode:void 0,output:void 0,channel:void 0},p=Object.assign({},n.settings,c),m=Object.assign({},t,c),f=new Set([...Object.keys(p),...Object.keys(m)]);for(let h of f)if(!kn(p[h],m[h]))throw new Error(`Cannot change settings between gathering and auditing… + ${r}`;if(!t)throw new Error(a);let o=Ct.resolve(t,e);try{return Ic.resolve(o)}catch{}try{return Ic.resolve(e,{paths:[t]})}catch{}throw new Error(a+` + ${o}`)}function Fq(e){return typeof e=="object"?Object.assign(Object.create(Object.getPrototypeOf(e)),e):e}function Pk(e){return JSON.parse(JSON.stringify(e))}function Bk(e){let t=Pk(e);return Array.isArray(e.audits)&&(t.audits=e.audits.map(n=>Fq(n))),Array.isArray(e.artifacts)&&(t.artifacts=e.artifacts.map(n=>({...n,gatherer:Fq(n.gatherer)}))),t}var Ic,Q1e,Vi,kq,Uk=g(()=>{"use strict";d();$a();us();lu();au();Fa();DL();Wo();A();Yw();oi();Ic=ri("core/config/config-helpers.js");s(Nk,"isBundledEnvironment");Q1e=s(function(e){let t=[];for(let n of e){let r=n.path&&t.find(a=>a.path===n.path);if(!r){t.push(n);continue}r.options=Object.assign({},r.options,n.options)}return t},"mergeOptionsOfItems");s(Rq,"_mergeConfigFragment");Vi=Rq;s(Iq,"mergeConfigFragmentArrayByKey");s(ehe,"expandGathererShorthand");s(the,"expandAuditShorthand");kq=new Map([["../gather/gatherers/accessibility",Promise.resolve().then(()=>(kL(),CL))],["../gather/gatherers/anchor-elements",Promise.resolve().then(()=>(_L(),AL))], +["../gather/gatherers/bf-cache-failures",Promise.resolve().then(()=>(BL(),PL))],["../gather/gatherers/cache-contents",Promise.resolve().then(()=>(jL(),UL))],["../gather/gatherers/console-messages",Promise.resolve().then(()=>(qL(),zL))],["../gather/gatherers/css-usage",Promise.resolve().then(()=>(WL(),HL))],["../gather/gatherers/devtools-log-compat",Promise.resolve().then(()=>(VL(),GL))],["../gather/gatherers/devtools-log",Promise.resolve().then(()=>(Tr(),LL))],["../gather/gatherers/dobetterweb/doctype",Promise.resolve().then(()=>(YL(),$L))],["../gather/gatherers/dobetterweb/domstats",Promise.resolve().then(()=>(JL(),KL))],["../gather/gatherers/dobetterweb/optimized-images",Promise.resolve().then(()=>(ZL(),XL))],["../gather/gatherers/dobetterweb/response-compression",Promise.resolve().then(()=>(eP(),QL))],["../gather/gatherers/full-page-screenshot",Promise.resolve().then(()=>(sP(),iP))],["../gather/gatherers/iframe-elements",Promise.resolve().then(()=>(uP(),cP))],["../gather/gatherers/i\ +mage-elements",Promise.resolve().then(()=>(hP(),fP))],["../gather/gatherers/inputs",Promise.resolve().then(()=>(yP(),gP))],["../gather/gatherers/inspector-issues",Promise.resolve().then(()=>(bP(),vP))],["../gather/gatherers/js-usage",Promise.resolve().then(()=>(DP(),wP))],["../gather/gatherers/link-elements",Promise.resolve().then(()=>(FP(),kP))],["../gather/gatherers/main-document-content",Promise.resolve().then(()=>(IP(),RP))],["../gather/gatherers/meta-elements",Promise.resolve().then(()=>(_P(),AP))],["../gather/gatherers/network-user-agent",Promise.resolve().then(()=>(NP(),MP))],["../gather/gatherers/root-causes",Promise.resolve().then(()=>(GD(),jP))],["../gather/gatherers/scripts",Promise.resolve().then(()=>(YD(),zP))],["../gather/gatherers/seo/font-size",Promise.resolve().then(()=>(DD(),wD))],["../gather/gatherers/seo/robots-txt",Promise.resolve().then(()=>(HP(),qP))],["../gather/gatherers/source-maps",Promise.resolve().then(()=>(a4(),r4))],["../gather/gatherers/stacks",Promise.resolve().then(()=>(i4(),o4))], +["../gather/gatherers/stylesheets",Promise.resolve().then(()=>(c4(),s4))],["../gather/gatherers/trace-compat",Promise.resolve().then(()=>(l4(),u4))],["../gather/gatherers/trace-elements",Promise.resolve().then(()=>(sx(),m4))],["../gather/gatherers/trace",Promise.resolve().then(()=>(Xo(),JF))],["../gather/gatherers/viewport-dimensions",Promise.resolve().then(()=>(f4(),p4))],["../audits/accessibility/accesskeys",Promise.resolve().then(()=>(y4(),g4))],["../audits/accessibility/aria-allowed-attr",Promise.resolve().then(()=>(b4(),v4))],["../audits/accessibility/aria-allowed-role",Promise.resolve().then(()=>(D4(),w4))],["../audits/accessibility/aria-command-name",Promise.resolve().then(()=>(E4(),x4))],["../audits/accessibility/aria-conditional-attr",Promise.resolve().then(()=>(S4(),T4))],["../audits/accessibility/aria-deprecated-role",Promise.resolve().then(()=>(k4(),C4))],["../audits/accessibility/aria-dialog-name",Promise.resolve().then(()=>(R4(),F4))],["../audits/accessibility/aria-hidden\ +-body",Promise.resolve().then(()=>(A4(),I4))],["../audits/accessibility/aria-hidden-focus",Promise.resolve().then(()=>(M4(),_4))],["../audits/accessibility/aria-input-field-name",Promise.resolve().then(()=>(O4(),N4))],["../audits/accessibility/aria-meter-name",Promise.resolve().then(()=>(P4(),L4))],["../audits/accessibility/aria-progressbar-name",Promise.resolve().then(()=>(U4(),B4))],["../audits/accessibility/aria-prohibited-attr",Promise.resolve().then(()=>(z4(),j4))],["../audits/accessibility/aria-required-attr",Promise.resolve().then(()=>(H4(),q4))],["../audits/accessibility/aria-required-children",Promise.resolve().then(()=>(G4(),W4))],["../audits/accessibility/aria-required-parent",Promise.resolve().then(()=>($4(),V4))],["../audits/accessibility/aria-roles",Promise.resolve().then(()=>(K4(),Y4))],["../audits/accessibility/aria-text",Promise.resolve().then(()=>(X4(),J4))],["../audits/accessibility/aria-toggle-field-name",Promise.resolve().then(()=>(Q4(),Z4))],["../audits/accessibil\ +ity/aria-tooltip-name",Promise.resolve().then(()=>(t6(),e6))],["../audits/accessibility/aria-treeitem-name",Promise.resolve().then(()=>(r6(),n6))],["../audits/accessibility/aria-valid-attr-value",Promise.resolve().then(()=>(o6(),a6))],["../audits/accessibility/aria-valid-attr",Promise.resolve().then(()=>(s6(),i6))],["../audits/accessibility/button-name",Promise.resolve().then(()=>(u6(),c6))],["../audits/accessibility/bypass",Promise.resolve().then(()=>(d6(),l6))],["../audits/accessibility/color-contrast",Promise.resolve().then(()=>(p6(),m6))],["../audits/accessibility/definition-list",Promise.resolve().then(()=>(h6(),f6))],["../audits/accessibility/dlitem",Promise.resolve().then(()=>(y6(),g6))],["../audits/accessibility/document-title",Promise.resolve().then(()=>(b6(),v6))],["../audits/accessibility/duplicate-id-aria",Promise.resolve().then(()=>(D6(),w6))],["../audits/accessibility/empty-heading",Promise.resolve().then(()=>(E6(),x6))],["../audits/accessibility/form-field-multiple-label\ +s",Promise.resolve().then(()=>(S6(),T6))],["../audits/accessibility/frame-title",Promise.resolve().then(()=>(k6(),C6))],["../audits/accessibility/heading-order",Promise.resolve().then(()=>(R6(),F6))],["../audits/accessibility/html-has-lang",Promise.resolve().then(()=>(A6(),I6))],["../audits/accessibility/html-lang-valid",Promise.resolve().then(()=>(M6(),_6))],["../audits/accessibility/html-xml-lang-mismatch",Promise.resolve().then(()=>(O6(),N6))],["../audits/accessibility/identical-links-same-purpose",Promise.resolve().then(()=>(P6(),L6))],["../audits/accessibility/image-alt",Promise.resolve().then(()=>(U6(),B6))],["../audits/accessibility/image-redundant-alt",Promise.resolve().then(()=>(z6(),j6))],["../audits/accessibility/input-button-name",Promise.resolve().then(()=>(H6(),q6))],["../audits/accessibility/input-image-alt",Promise.resolve().then(()=>(G6(),W6))],["../audits/accessibility/label-content-name-mismatch",Promise.resolve().then(()=>($6(),V6))],["../audits/accessibility/label", +Promise.resolve().then(()=>(K6(),Y6))],["../audits/accessibility/landmark-one-main",Promise.resolve().then(()=>(X6(),J6))],["../audits/accessibility/link-in-text-block",Promise.resolve().then(()=>(Q6(),Z6))],["../audits/accessibility/link-name",Promise.resolve().then(()=>(t7(),e7))],["../audits/accessibility/list",Promise.resolve().then(()=>(r7(),n7))],["../audits/accessibility/listitem",Promise.resolve().then(()=>(o7(),a7))],["../audits/accessibility/manual/custom-controls-labels",Promise.resolve().then(()=>(s7(),i7))],["../audits/accessibility/manual/custom-controls-roles",Promise.resolve().then(()=>(u7(),c7))],["../audits/accessibility/manual/focus-traps",Promise.resolve().then(()=>(d7(),l7))],["../audits/accessibility/manual/focusable-controls",Promise.resolve().then(()=>(p7(),m7))],["../audits/accessibility/manual/interactive-element-affordance",Promise.resolve().then(()=>(h7(),f7))],["../audits/accessibility/manual/logical-tab-order",Promise.resolve().then(()=>(y7(),g7))],["../au\ +dits/accessibility/manual/managed-focus",Promise.resolve().then(()=>(b7(),v7))],["../audits/accessibility/manual/offscreen-content-hidden",Promise.resolve().then(()=>(D7(),w7))],["../audits/accessibility/manual/use-landmarks",Promise.resolve().then(()=>(E7(),x7))],["../audits/accessibility/manual/visual-order-follows-dom",Promise.resolve().then(()=>(S7(),T7))],["../audits/accessibility/meta-refresh",Promise.resolve().then(()=>(k7(),C7))],["../audits/accessibility/meta-viewport",Promise.resolve().then(()=>(R7(),F7))],["../audits/accessibility/object-alt",Promise.resolve().then(()=>(A7(),I7))],["../audits/accessibility/select-name",Promise.resolve().then(()=>(M7(),_7))],["../audits/accessibility/skip-link",Promise.resolve().then(()=>(O7(),N7))],["../audits/accessibility/tabindex",Promise.resolve().then(()=>(P7(),L7))],["../audits/accessibility/table-duplicate-name",Promise.resolve().then(()=>(U7(),B7))],["../audits/accessibility/table-fake-caption",Promise.resolve().then(()=>(z7(),j7))], +["../audits/accessibility/target-size",Promise.resolve().then(()=>(H7(),q7))],["../audits/accessibility/td-has-header",Promise.resolve().then(()=>(G7(),W7))],["../audits/accessibility/td-headers-attr",Promise.resolve().then(()=>($7(),V7))],["../audits/accessibility/th-has-data-cells",Promise.resolve().then(()=>(K7(),Y7))],["../audits/accessibility/valid-lang",Promise.resolve().then(()=>(X7(),J7))],["../audits/accessibility/video-caption",Promise.resolve().then(()=>(Q7(),Z7))],["../audits/autocomplete",Promise.resolve().then(()=>(n9(),t9))],["../audits/bf-cache",Promise.resolve().then(()=>(i9(),o9))],["../audits/bootup-time",Promise.resolve().then(()=>(d9(),l9))],["../audits/byte-efficiency/duplicated-javascript",Promise.resolve().then(()=>(g9(),h9))],["../audits/byte-efficiency/efficient-animated-content",Promise.resolve().then(()=>(v9(),y9))],["../audits/byte-efficiency/legacy-javascript",Promise.resolve().then(()=>(T9(),E9))],["../audits/byte-efficiency/modern-image-formats",Promise.resolve().then(()=>(C9(),S9))], +["../audits/byte-efficiency/offscreen-images",Promise.resolve().then(()=>(A9(),I9))],["../audits/byte-efficiency/render-blocking-resources",Promise.resolve().then(()=>(L9(),O9))],["../audits/byte-efficiency/total-byte-weight",Promise.resolve().then(()=>(B9(),P9))],["../audits/byte-efficiency/unminified-css",Promise.resolve().then(()=>(H9(),q9))],["../audits/byte-efficiency/unminified-javascript",Promise.resolve().then(()=>(G9(),W9))],["../audits/byte-efficiency/unused-css-rules",Promise.resolve().then(()=>($9(),V9))],["../audits/byte-efficiency/unused-javascript",Promise.resolve().then(()=>(K9(),Y9))],["../audits/byte-efficiency/uses-long-cache-ttl",Promise.resolve().then(()=>(eB(),Q9))],["../audits/byte-efficiency/uses-optimized-images",Promise.resolve().then(()=>(nB(),tB))],["../audits/byte-efficiency/uses-responsive-images-snapshot",Promise.resolve().then(()=>(iB(),oB))],["../audits/byte-efficiency/uses-responsive-images",Promise.resolve().then(()=>(O2(),N2))],["../audits/byte-effic\ +iency/uses-text-compression",Promise.resolve().then(()=>(cB(),sB))],["../audits/critical-request-chains",Promise.resolve().then(()=>(lB(),uB))],["../audits/csp-xss",Promise.resolve().then(()=>(BB(),PB))],["../audits/deprecations",Promise.resolve().then(()=>(WB(),HB))],["../audits/diagnostics",Promise.resolve().then(()=>(VB(),GB))],["../audits/dobetterweb/charset",Promise.resolve().then(()=>(JB(),KB))],["../audits/dobetterweb/doctype",Promise.resolve().then(()=>(ZB(),XB))],["../audits/dobetterweb/dom-size",Promise.resolve().then(()=>(eU(),QB))],["../audits/dobetterweb/geolocation-on-start",Promise.resolve().then(()=>(nU(),tU))],["../audits/dobetterweb/inspector-issues",Promise.resolve().then(()=>(aU(),rU))],["../audits/dobetterweb/js-libraries",Promise.resolve().then(()=>(iU(),oU))],["../audits/dobetterweb/no-document-write",Promise.resolve().then(()=>(cU(),sU))],["../audits/dobetterweb/notification-on-start",Promise.resolve().then(()=>(lU(),uU))],["../audits/dobetterweb/paste-preventin\ +g-inputs",Promise.resolve().then(()=>(mU(),dU))],["../audits/dobetterweb/uses-http2",Promise.resolve().then(()=>(fU(),pU))],["../audits/dobetterweb/uses-passive-event-listeners",Promise.resolve().then(()=>(gU(),hU))],["../audits/errors-in-console",Promise.resolve().then(()=>(vU(),yU))],["../audits/final-screenshot",Promise.resolve().then(()=>(xU(),DU))],["../audits/font-display",Promise.resolve().then(()=>(DS(),TU))],["../audits/has-hsts",Promise.resolve().then(()=>(CU(),SU))],["../audits/image-aspect-ratio",Promise.resolve().then(()=>(RU(),FU))],["../audits/image-size-responsive",Promise.resolve().then(()=>(_U(),AU))],["../audits/is-on-https",Promise.resolve().then(()=>(OU(),NU))],["../audits/largest-contentful-paint-element",Promise.resolve().then(()=>(BU(),PU))],["../audits/layout-shifts",Promise.resolve().then(()=>(qU(),zU))],["../audits/lcp-lazy-loaded",Promise.resolve().then(()=>(WU(),HU))],["../audits/long-tasks",Promise.resolve().then(()=>(VU(),GU))],["../audits/main-thread-tas\ +ks",Promise.resolve().then(()=>(YU(),$U))],["../audits/mainthread-work-breakdown",Promise.resolve().then(()=>(JU(),KU))],["../audits/metrics",Promise.resolve().then(()=>(xj(),Dj))],["../audits/metrics/cumulative-layout-shift",Promise.resolve().then(()=>(jS(),jU))],["../audits/metrics/first-contentful-paint",Promise.resolve().then(()=>(Tj(),Ej))],["../audits/metrics/first-meaningful-paint",Promise.resolve().then(()=>(kj(),Cj))],["../audits/metrics/interaction-to-next-paint",Promise.resolve().then(()=>(TC(),Fj))],["../audits/metrics/interactive",Promise.resolve().then(()=>(Ij(),Rj))],["../audits/metrics/largest-contentful-paint",Promise.resolve().then(()=>(_S(),LU))],["../audits/metrics/max-potential-fid",Promise.resolve().then(()=>(_j(),Aj))],["../audits/metrics/speed-index",Promise.resolve().then(()=>(Nj(),Mj))],["../audits/metrics/total-blocking-time",Promise.resolve().then(()=>(Lj(),Oj))],["../audits/network-requests",Promise.resolve().then(()=>(Bj(),Pj))],["../audits/network-rtt",Promise.resolve().then(()=>(jj(),Uj))], +["../audits/network-server-latency",Promise.resolve().then(()=>(qj(),zj))],["../audits/non-composited-animations",Promise.resolve().then(()=>(Wj(),Hj))],["../audits/oopif-iframe-test-audit",Promise.resolve().then(()=>(Vj(),Gj))],["../audits/origin-isolation",Promise.resolve().then(()=>(Yj(),$j))],["../audits/predictive-perf",Promise.resolve().then(()=>(Jj(),Kj))],["../audits/preload-fonts",Promise.resolve().then(()=>(Zj(),Xj))],["../audits/prioritize-lcp-image",Promise.resolve().then(()=>(ez(),Qj))],["../audits/redirects-http",Promise.resolve().then(()=>(nz(),tz))],["../audits/redirects",Promise.resolve().then(()=>(az(),rz))],["../audits/resource-summary",Promise.resolve().then(()=>(cz(),sz))],["../audits/screenshot-thumbnails",Promise.resolve().then(()=>(dz(),lz))],["../audits/script-treemap-data",Promise.resolve().then(()=>(pz(),mz))],["../audits/seo/canonical",Promise.resolve().then(()=>(hz(),fz))],["../audits/seo/crawlable-anchors",Promise.resolve().then(()=>(yz(),gz))],["../audits\ +/seo/font-size",Promise.resolve().then(()=>(xz(),Dz))],["../audits/seo/hreflang",Promise.resolve().then(()=>(Cz(),Sz))],["../audits/seo/http-status-code",Promise.resolve().then(()=>(Fz(),kz))],["../audits/seo/is-crawlable",Promise.resolve().then(()=>(zz(),jz))],["../audits/seo/link-text",Promise.resolve().then(()=>(Hz(),qz))],["../audits/seo/manual/structured-data",Promise.resolve().then(()=>(Vz(),Gz))],["../audits/seo/meta-description",Promise.resolve().then(()=>(Yz(),$z))],["../audits/seo/robots-txt",Promise.resolve().then(()=>(Xz(),Jz))],["../audits/server-response-time",Promise.resolve().then(()=>(Qz(),Zz))],["../audits/third-party-cookies",Promise.resolve().then(()=>(tq(),eq))],["../audits/third-party-facades",Promise.resolve().then(()=>(aq(),rq))],["../audits/third-party-summary",Promise.resolve().then(()=>(Dk(),nq))],["../audits/unsized-images",Promise.resolve().then(()=>(iq(),oq))],["../audits/user-timings",Promise.resolve().then(()=>(lq(),uq))],["../audits/uses-rel-preconnect", +Promise.resolve().then(()=>(mq(),dq))],["../audits/uses-rel-preload",Promise.resolve().then(()=>(fq(),pq))],["../audits/valid-source-maps",Promise.resolve().then(()=>(gq(),hq))],["../audits/viewport",Promise.resolve().then(()=>(vq(),yq))],["../audits/work-during-interaction",Promise.resolve().then(()=>(wq(),bq))],["lighthouse-plugin-soft-navigation",Promise.resolve().then(()=>(xq(),Dq))],["lighthouse-plugin-soft-navigation/audits/soft-nav-fcp",Promise.resolve().then(()=>(Tq(),Eq))],["lighthouse-plugin-soft-navigation/audits/soft-nav-lcp",Promise.resolve().then(()=>(Cq(),Sq))]]);s(Ok,"requireWrapper");s(nhe,"requireGatherer");s(rhe,"requireAudit");s(ahe,"cleanFlagsForSettings");s(Aq,"resolveSettings");s(_q,"mergePlugins");s(Mq,"resolveGathererToDefn");s(Nq,"resolveAuditsToDefns");s(Lk,"resolveModulePath");s(Fq,"shallowClone");s(Pk,"deepClone");s(Bk,"deepCloneConfigJson")});function ihe(e,t){let{configPath:n}=t;if(n&&!Ct.isAbsolute(n))throw new Error("configPath must be an absolute path");e||(e=h1,n=ohe);let r=n?Ct.dirname(n):void 0;return{configWorkingCopy:Bk(e),configPath:n,configDir:r}}function she(e){if(!e.extends)return e;if(e.extends!=="lighthouse:default")throw new Error("`lighthouse:default` is the only valid extension method.");let{artifacts:t,...n}=e,r=Bk(h1),a=Vi(r,n);return a.artifacts=Iq(r.artifacts,t,o=>o.id),a}function che(e,t,n){if(!("dependencies"in t.instance.meta))return;let r=Object.entries(t.instance.meta.dependencies).map(([a,o])=>{let i=n.get(o);return i||$w(e.id,a),lL(t,i.gatherer)||pL(e.id,a),[a,{id:i.id}]});return Object.fromEntries(r)}async function uhe(e,t){if(!e)return null;let n={msg:"Resolve artifact definitions",id:"lh:config:resolveArtifactsToDefns"};M.time(n,"verbose");let r=[...e];r.sort((c,u)=>{let l=Oq[c.id]||0,m=Oq[u.id]||0;return l-m});let a=new Map,o=dn.getGathererList(),i=[];for(let c of r){let u=c.gatherer,l=await Mq( +u,o,t),m={id:c.id,gatherer:l,dependencies:che(c,l,a)},p=m.gatherer.instance.meta.symbol;p&&a.set(p,m),i.push(m)}return M.timeEnd(n),i}function lhe(e,t){t==="timespan"&&e.throttlingMethod==="simulate"&&(e.throttlingMethod="devtools")}function dhe(e){e.throttlingMethod!=="simulate"&&(e.cpuQuietThresholdMs=Math.max(e.cpuQuietThresholdMs||0,Os.cpuQuietThresholdMs),e.networkQuietThresholdMs=Math.max(e.networkQuietThresholdMs||0,Os.networkQuietThresholdMs),e.pauseAfterFcpMs=Math.max(e.pauseAfterFcpMs||0,Os.pauseAfterFcpMs),e.pauseAfterLoadMs=Math.max(e.pauseAfterLoadMs||0,Os.pauseAfterLoadMs))}async function ja(e,t,n={}){let r={msg:"Initialize config",id:"lh:config"};M.time(r,"verbose");let{configWorkingCopy:a,configDir:o}=ihe(t,n);a=she(a),a=await _q(a,o,n);let i=Aq(a.settings||{},n);lhe(i,e),dhe(i);let u={artifacts:await uhe(a.artifacts,o),audits:await Nq(a.audits,o),categories:a.categories||null,groups:a.groups||null,settings:i};return mL(u),u=gL(u,e),u=yL(u,i),M.timeEnd(r),{resolvedConfig:u}} +var ohe,Oq,Ac=g(()=>{"use strict";d();$a();Oe();Wo();Ww();Fa();Yw();vL();Uk();oi();va();ohe=Ct.join("","../../config/default-config.js"),Oq={FullPageScreenshot:1,BFCacheFailures:1};s(ihe,"resolveWorkingCopy");s(she,"resolveExtensions");s(che,"resolveArtifactDependencies");s(uhe,"resolveArtifactsToDefns");s(lhe,"overrideSettingsForGatherMode");s(dhe,"overrideThrottlingWindows");s(ja,"initializeConfig")});var Lq={};T(Lq,{default:()=>mhe});var mhe,Pq=g(()=>{d();mhe={}});async function hhe(e){if(e.flags.enableErrorReporting&&_c._shouldSample())try{let t=await Promise.resolve().then(()=>(Pq(),Lq));t.init({...e.environmentData,dsn:phe});let n=e.flags;try{let{resolvedConfig:i}=await ja("navigation",e.config,e.flags);n=i.settings}catch{}let r={channel:n.channel,formFactor:n.formFactor,throttlingMethod:n.throttlingMethod};t.setTags(r);let a={...n.throttling,url:e.url};t.setExtras(a),_c.captureMessage=(...i)=>t.captureMessage(...i),_c.captureBreadcrumb=(...i)=>t.addBreadcrumb(...i),_c.getContext=()=>a;let o=new Map;_c.captureException=async(i,c={})=>{if(!i||i.expected)return;let u=c.tags||{};if(u.audit){let l=`audit-${u.audit}-${i.message}`;if(o.has(l))return;o.set(l,!0)}if(u.gatherer){let l=`gatherer-${u.gatherer}-${i.message}`;if(o.has(l))return;o.set(l,!0)}i.protocolMethod&&(c.fingerprint=["{{ default }}",i.protocolMethod,i.protocolError],c.tags=c.tags||{},c.tags.protocolMethod=i.protocolMethod),t.withScope(l=>{c.level&&l.setLevel(c.level),c.tags&&l.setTags( +c.tags);let m;c.extra&&(m={...c.extra}),i.extra&&(m={...m,...i.extra}),m&&l.setExtras(m),t.captureException(i)})}}catch{M.warn("sentry","Could not load Sentry, errors will not be reported.")}}var phe,fhe,jk,_c,Dt,nr=g(()=>{"use strict";d();Oe();Ac();phe="https://a6bb0da87ee048cc9ae2a345fc09ab2e:63a7029f46f74265981b7e005e0f69f8@sentry.io/174697",fhe=.01,jk=s(()=>{},"noop"),_c={init:hhe,captureMessage:jk,captureBreadcrumb:jk,getContext:jk,captureException:async()=>{},_shouldSample(){return fhe>=Math.random()}};s(hhe,"init");Dt=_c});var Mc,Bq=g(()=>{d();Mc={}});var Nc,Oh=g(()=>{"use strict";d();Bq();Nc=class e{static{s(this,"ReportGenerator")}static replaceStrings(t,n){if(n.length===0)return t;let r=n[0],a=n.slice(1);return t.split(r.search).map(o=>e.replaceStrings(o,a)).join(r.replacement)}static sanitizeJson(t){return JSON.stringify(t).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}static generateReportHtml(t){let n=e.sanitizeJson(t),r=Mc.REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return e.replaceStrings(Mc.REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_JSON%%",replacement:n},{search:"%%LIGHTHOUSE_JAVASCRIPT%%",replacement:r}])}static generateFlowReportHtml(t){let n=e.sanitizeJson(t),r=Mc.FLOW_REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return e.replaceStrings(Mc.FLOW_REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_FLOW_JSON%%",replacement:n},{search:"%%LIGHTHOUSE_FLOW_JAVASCRIPT%%",replacement:r},{search:"/*%%LIGHTHOUSE_FLOW_CSS%%*/",replacement:Mc.FLOW_REPORT_CSS}])}static generateReportCSV(t){let n=`\r +`,r=",",a=s(u=>`"${u.replace(/"/g,'""')}"`,"escape"),o=s(u=>u.map(l=>l===null?"null":l.toString()).map(a),"rowFormatter"),i=[],c=["requestedUrl","finalDisplayedUrl","fetchTime","gatherMode"];i.push(o(c)),i.push(o(c.map(u=>t[u]??null))),i.push([]),i.push(["category","score"]);for(let u of Object.values(t.categories))i.push(o([u.id,u.score]));i.push([]),i.push(["category","audit","score","displayValue","description"]);for(let u of Object.values(t.categories))for(let l of u.auditRefs){let m=t.audits[l.id];m&&i.push(o([u.id,l.id,m.score,m.displayValue||"",m.description]))}return i.map(u=>u.join(r)).join(n)}static isFlowResult(t){return"steps"in t}static generateReport(t,n){let r=Array.isArray(n);typeof n=="string"&&(n=[n]);let a=n.map(o=>{if(o==="html")return e.isFlowResult(t)?e.generateFlowReportHtml(t):e.generateReportHtml(t);if(o==="csv"){if(e.isFlowResult(t))throw new Error("CSV output is not support for user flows");return e.generateReportCSV(t)}if(o==="json")return JSON.stringify(t,null, +2);throw new Error("Invalid output mode: "+o)});return r?a:a[0]}}});var dn,Wo=g(()=>{"use strict";d();da();$a();Oe();au();zA();V();va();x3();cL();nr();Oh();Wt();du();oi();Na();dt();dn=class e{static{s(this,"Runner")}static async audit(t,n){let{resolvedConfig:r,computedCache:a}=n,o=r.settings;try{let i={msg:"Audit phase",id:"lh:runner:audit"};M.time(i,"verbose");let c=[];if(o.gatherMode&&!o.auditMode)return;if(!r.audits)throw new Error("No audits to evaluate.");let u=await e._runAudits(o,r.audits,t,c,a),l={msg:"Generating results...",id:"lh:runner:generate"};M.time(l),t.LighthouseRunWarnings&&c.push(...t.LighthouseRunWarnings);let p={"axe-core":t.Accessibility?.version},f={};r.categories&&(f=sp.scoreAllCategories(r.categories,u)),M.timeEnd(l),M.timeEnd(i);let h=t.FullPageScreenshot;(r.settings.disableFullPageScreenshot||h instanceof Error)&&(h=void 0);let y={lighthouseVersion:v3,requestedUrl:t.URL.requestedUrl,mainDocumentUrl:t.URL.mainDocumentUrl,finalDisplayedUrl:t.URL.finalDisplayedUrl,finalUrl:t.URL.mainDocumentUrl,fetchTime:t.fetchTime,gatherMode:t. +GatherContext.gatherMode,runtimeError:e.getArtifactRuntimeError(t),runWarnings:c,userAgent:t.HostUserAgent,environment:{networkUserAgent:t.NetworkUserAgent,hostUserAgent:t.HostUserAgent,benchmarkIndex:t.BenchmarkIndex,credits:p},audits:u,configSettings:o,categories:f,categoryGroups:r.groups||void 0,stackPacks:D3(t.Stacks),entities:await e.getEntityClassification(t,{computedCache:a}),fullPageScreenshot:h,timing:this._getTiming(t),i18n:{rendererFormattedStrings:M_(o.locale),icuMessagePaths:{}}};y.i18n.icuMessagePaths=Yg(y,o.locale);let v=y;if(o.auditMode){let x=e._getDataSavePath(o);iL(v,x)}let w=Nc.generateReport(v,o.output);return{lhr:v,artifacts:t,report:w}}catch(i){throw e.createRunnerError(i,o)}}static async getEntityClassification(t,n){let r=t.devtoolsLogs?.[b.DEFAULT_PASS];if(!r)return;let a=await Dn.request({URL:t.URL,devtoolsLog:r},n),o=[];for(let[i,c]of a.urlsByEntity){let u=new Set;for(let m of c){let p=X.getOrigin(m);p&&u.add(p)}let l={name:i.name,homepage:i.homepage,origins:[ +...u]};i===a.firstParty&&(l.isFirstParty=!0),i.isUnrecognized&&(l.isUnrecognized=!0),i.category&&(l.category=i.category),o.push(l)}return o}static async gather(t,n){let r=n.resolvedConfig.settings;try{let a=Dt.getContext();if(Dt.captureBreadcrumb({message:"Run started",category:"lifecycle",data:a}),r.auditMode&&!r.gatherMode){let c=this._getDataSavePath(r);return aL(c)}let o={msg:"Gather phase",id:"lh:runner:gather"};M.time(o,"verbose");let i=await t({resolvedConfig:n.resolvedConfig});if(M.timeEnd(o),i.Timing=M.takeTimeEntries(),r.gatherMode){let c=this._getDataSavePath(r);await oL(i,c)}return i}catch(a){throw e.createRunnerError(a,r)}}static createRunnerError(t,n){return t.friendlyMessage&&(t.friendlyMessage=ii(t.friendlyMessage,n.locale)),Dt.captureException(t,{level:"fatal"}),t}static _getTiming(t){let n=t.Timing||[],r=M.takeTimeEntries(),a=[...n,...r].map(m=>[`${m.startTime}-${m.name}-${m.duration}`,m]),o=Array.from(new Map(a).values()).map(m=>({startTime:parseFloat(m.startTime.toFixed( +2)),name:m.name,duration:parseFloat(m.duration.toFixed(2)),entryType:m.entryType})).sort((m,p)=>m.startTime-p.startTime),i=o.find(m=>m.name==="lh:runner:gather"),c=o.find(m=>m.name==="lh:runner:audit"),u=i?.duration||0,l=c?.duration||0;return{entries:o,total:u+l}}static async _runAudits(t,n,r,a,o){let i={msg:"Analyzing and running audits...",id:"lh:runner:auditing"};if(M.time(i),r.settings){let l={locale:void 0,gatherMode:void 0,auditMode:void 0,output:void 0,channel:void 0},m=Object.assign({},r.settings,l),p=Object.assign({},t,l),f=new Set([...Object.keys(m),...Object.keys(p)]);for(let h of f)if(!Pr(m[h],p[h]))throw new Error(`Cannot change settings between gathering and auditing… Difference found at: \`${h}\` - ${p[h]} + ${m[h]} vs - ${m[h]}`);if(!kn(p,m))throw new Error("Cannot change settings between gathering and auditing")}let u={settings:t,computedCache:a},l={};for(let c of r){let p=c.implementation.meta.id,m=await e._runAudit(c,n,u,i);l[p]=m}return N.timeEnd(o),l}static async _runAudit(t,r,n,i){let a=t.implementation,o={msg:`Auditing: ${$a(a.meta.title,"en-US")}`,id:`lh:audit:${a.meta.id}`};N.time(o);let u;try{if(r.PageLoadError)throw r.PageLoadError;for(let h of a.meta.requiredArtifacts){let y=r[h]===void 0,b=h==="traces"&&!r.traces?.[v.DEFAULT_PASS],w=h==="devtoolsLogs"&&!r.devtoolsLogs?.[v.DEFAULT_PASS];if(y||b||w)throw N.warn("Runner",`${h} gatherer, required by audit ${a.meta.id}, did not run.`),new z(z.errors.MISSING_REQUIRED_ARTIFACT,{artifactName:h});if(r[h]instanceof Error){let E=r[h];N.warn("Runner",`${h} gatherer, required by audit ${a.meta.id}, encountered an error: ${E.message}`);let T=new z(z.errors.ERRORED_REQUIRED_ARTIFACT,{artifactName:h,errorMessage:E.message},{cause:E});throw T.expected= -!0,T}}let c={options:Object.assign({},a.defaultOptions,t.options),...n},m=a.meta.requiredArtifacts.concat(a.meta.__internalOptionalArtifacts||[]).reduce((h,y)=>{let b=r[y];return h[y]=b,h},{}),f=await a.audit(m,c);i.push(...f.runWarnings||[]),u=v.generateAuditResult(a,f)}catch(l){l.code!=="MISSING_REQUIRED_ARTIFACT"&&l.code!=="ERRORED_REQUIRED_ARTIFACT"&&N.warn(a.meta.id,`Caught exception: ${l.message}`),bt.captureException(l,{tags:{audit:a.meta.id},level:"error"});let c=l.friendlyMessage?l.friendlyMessage:l.message,p=l.cause?.stack??l.stack;u=v.generateErrorAuditResult(a,c,p)}return N.timeEnd(o),u}static getArtifactRuntimeError(t){let r=[t.PageLoadError,...Object.values(t)];for(let n of r)if(n instanceof z&&n.lhrRuntimeError){let a=n.friendlyMessage||n.message;return{code:n.code,message:a}}}static getAuditList(){let t=["audit.js","violation-audit.js","accessibility/axe-audit.js","multi-check-audit.js","byte-efficiency/byte-efficiency-audit.js","manual/manual-audit.js"];return["accessi\ -bility","audit.js","autocomplete.js","bf-cache.js","bootup-time.js","byte-efficiency","critical-request-chains.js","csp-xss.js","deprecations.js","diagnostics.js","dobetterweb","errors-in-console.js","final-screenshot.js","font-display.js","image-aspect-ratio.js","image-size-responsive.js","is-on-https.js","largest-contentful-paint-element.js","layout-shifts.js","lcp-lazy-loaded.js","long-tasks.js","main-thread-tasks.js","mainthread-work-breakdown.js","manual","metrics","metrics.js","network-requests.js","network-rtt.js","network-server-latency.js","non-composited-animations.js","oopif-iframe-test-audit.js","predictive-perf.js","preload-fonts.js","prioritize-lcp-image.js","redirects-http.js","redirects.js","resource-summary.js","screenshot-thumbnails.js","script-treemap-data.js","seo","server-response-time.js","third-party-cookies.js","third-party-facades.js","third-party-summary.js","unsized-images.js","user-timings.js","uses-rel-preconnect.js","uses-rel-preload.js","valid-source-maps\ -.js","viewport.js","violation-audit.js","work-during-interaction.js",...["charset.js","doctype.js","dom-size.js","geolocation-on-start.js","inspector-issues.js","js-libraries.js","no-document-write.js","notification-on-start.js","paste-preventing-inputs.js","uses-http2.js","uses-passive-event-listeners.js"].map(n=>`dobetterweb/${n}`),...["cumulative-layout-shift.js","first-contentful-paint.js","first-meaningful-paint.js","interaction-to-next-paint.js","interactive.js","largest-contentful-paint.js","max-potential-fid.js","speed-index.js","total-blocking-time.js"].map(n=>`metrics/${n}`),...["canonical.js","crawlable-anchors.js","font-size.js","hreflang.js","http-status-code.js","is-crawlable.js","link-text.js","manual","meta-description.js","robots-txt.js"].map(n=>`seo/${n}`),...["structured-data.js"].map(n=>`seo/manual/${n}`),...["accesskeys.js","aria-allowed-attr.js","aria-allowed-role.js","aria-command-name.js","aria-conditional-attr.js","aria-deprecated-role.js","aria-dialog-name.js", -"aria-hidden-body.js","aria-hidden-focus.js","aria-input-field-name.js","aria-meter-name.js","aria-progressbar-name.js","aria-prohibited-attr.js","aria-required-attr.js","aria-required-children.js","aria-required-parent.js","aria-roles.js","aria-text.js","aria-toggle-field-name.js","aria-tooltip-name.js","aria-treeitem-name.js","aria-valid-attr-value.js","aria-valid-attr.js","axe-audit.js","button-name.js","bypass.js","color-contrast.js","definition-list.js","dlitem.js","document-title.js","duplicate-id-aria.js","empty-heading.js","form-field-multiple-labels.js","frame-title.js","heading-order.js","html-has-lang.js","html-lang-valid.js","html-xml-lang-mismatch.js","identical-links-same-purpose.js","image-alt.js","image-redundant-alt.js","input-button-name.js","input-image-alt.js","label-content-name-mismatch.js","label.js","landmark-one-main.js","link-in-text-block.js","link-name.js","list.js","listitem.js","manual","meta-refresh.js","meta-viewport.js","object-alt.js","select-name.js", -"skip-link.js","tabindex.js","table-duplicate-name.js","table-fake-caption.js","target-size.js","td-has-header.js","td-headers-attr.js","th-has-data-cells.js","valid-lang.js","video-caption.js"].map(n=>`accessibility/${n}`),...["custom-controls-labels.js","custom-controls-roles.js","focus-traps.js","focusable-controls.js","interactive-element-affordance.js","logical-tab-order.js","managed-focus.js","offscreen-content-hidden.js","use-landmarks.js","visual-order-follows-dom.js"].map(n=>`accessibility/manual/${n}`),...["byte-efficiency-audit.js","duplicated-javascript.js","efficient-animated-content.js","legacy-javascript.js","modern-image-formats.js","offscreen-images.js","polyfill-graph-data.json","render-blocking-resources.js","total-byte-weight.js","unminified-css.js","unminified-javascript.js","unused-css-rules.js","unused-javascript.js","uses-long-cache-ttl.js","uses-optimized-images.js","uses-responsive-images-snapshot.js","uses-responsive-images.js","uses-text-compression.js"].map( -n=>`byte-efficiency/${n}`),...["manual-audit.js"].map(n=>`manual/${n}`)].filter(n=>/\.js$/.test(n)&&!t.includes(n)).sort()}static getGathererList(){return["accessibility.js","anchor-elements.js","bf-cache-failures.js","cache-contents.js","console-messages.js","css-usage.js","devtools-log-compat.js","devtools-log.js","dobetterweb","full-page-screenshot.js","iframe-elements.js","image-elements.js","inputs.js","inspector-issues.js","js-usage.js","link-elements.js","main-document-content.js","meta-elements.js","network-user-agent.js","root-causes.js","scripts.js","seo","source-maps.js","stacks.js","stylesheets.js","trace-compat.js","trace-elements.js","trace.js","viewport-dimensions.js",...["font-size.js","robots-txt.js"].map(r=>`seo/${r}`),...["doctype.js","domstats.js","optimized-images.js","response-compression.js"].map(r=>`dobetterweb/${r}`)].filter(r=>/\.js$/.test(r)&&r!=="gatherer.js").sort()}static _getDataSavePath(t){let{auditMode:r,gatherMode:n}=t;return typeof r=="string"?St.resolve( -process.cwd(),r):typeof n=="string"?St.resolve(process.cwd(),n):St.join(process.cwd(),"latest-run")}}});var Mme,tq,eq,Lme,Ih,rq=g(()=>{"use strict";d();ti();Ne();zt();Mme=3e4,tq=50,eq=2147483647-tq,Lme=Hr,Ih=class extends Lme{static{s(this,"ProtocolSession")}constructor(t){super(),this._cdpSession=t,this._targetInfo=void 0,this._nextProtocolTimeout=void 0,this._handleProtocolEvent=this._handleProtocolEvent.bind(this),this._cdpSession.on("*",this._handleProtocolEvent);let r=s(n=>{},"rej");this._targetCrashedPromise=new Promise((n,i)=>r=i),this.on("Inspector.targetCrashed",async()=>{N.error("TargetManager","Inspector.targetCrashed"),this.dispose(),r(new z(z.errors.TARGET_CRASHED))})}id(){return this._cdpSession.id()}_handleProtocolEvent(t,...r){this.emit(t,...r)}setTargetInfo(t){this._targetInfo=t}hasNextProtocolTimeout(){return this._nextProtocolTimeout!==void 0}getNextProtocolTimeout(){return this._nextProtocolTimeout||Mme}setNextProtocolTimeout(t){t>eq&&(t=eq),this._nextProtocolTimeout=t}sendCommand(t,...r){let n=this.getNextProtocolTimeout();this._nextProtocolTimeout=void 0;let i,a=new Promise( -(l,c)=>{i=setTimeout(c,n,new z(z.errors.PROTOCOL_TIMEOUT,{protocolMethod:t}))}),o=this._cdpSession.send(t,...r,{timeout:n+tq}).catch(l=>{throw N.formatProtocol("method <= browser ERR",{method:t},"error"),z.fromProtocolMessage(t,l)});return Promise.race([o,a,this._targetCrashedPromise]).finally(()=>{i&&clearTimeout(i)})}sendCommandAndIgnore(t,...r){return this.sendCommand(t,...r).catch(n=>N.verbose("session",t,n.message)).then(n=>{})}async dispose(){this._cdpSession.off("*",this._handleProtocolEvent),await this._cdpSession.detach().catch(t=>N.verbose("session","detach failed",t.message))}onCrashPromise(){return this._targetCrashedPromise}}});var Pme,Ah,nq=g(()=>{"use strict";d();ti();Ne();rq();Pme=Hr,Ah=class extends Pme{static{s(this,"TargetManager")}constructor(t){super(),this._enabled=!1,this._rootCdpSession=t,this._mainFrameId="",this._targetIdToTargets=new Map,this._executionContextIdToDescriptions=new Map,this._onSessionAttached=this._onSessionAttached.bind(this),this._onFrameNavigated=this._onFrameNavigated.bind(this),this._onExecutionContextCreated=this._onExecutionContextCreated.bind(this),this._onExecutionContextDestroyed=this._onExecutionContextDestroyed.bind(this),this._onExecutionContextsCleared=this._onExecutionContextsCleared.bind(this)}async _onFrameNavigated(t){if(!t.frame.parentId&&this._enabled)try{await this._rootCdpSession.send("Target.setAutoAttach",{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0})}catch(r){if(this._enabled)throw r}}_findSession(t){for(let{session:r,cdpSession:n}of this._targetIdToTargets.values())if(n.id()===t)return r;throw new Error(`session ${t} not found`)}_isAcceptedTargetType(t){ -return t==="page"||t==="iframe"||t==="worker"}rootSession(){let t=this._rootCdpSession.id();return this._findSession(t)}mainFrameExecutionContexts(){return[...this._executionContextIdToDescriptions.values()].filter(t=>t.auxData.frameId===this._mainFrameId)}async _onSessionAttached(t){let r=new Ih(t),n;try{let{targetInfo:i}=await r.sendCommand("Target.getTargetInfo");if(n=i.type,!this._isAcceptedTargetType(n))return;let a=i.targetId;if(this._targetIdToTargets.has(a))return;r.setTargetInfo(i);let o=i.url||i.targetId;N.verbose("target-manager",`target ${o} attached`);let l=this._getProtocolEventListener(n,r.id());t.on("*",l),t.on("sessionattached",this._onSessionAttached);let c={target:i,cdpSession:t,session:r,protocolListener:l};this._targetIdToTargets.set(a,c),await r.sendCommand("Network.enable"),await r.sendCommand("Target.setAutoAttach",{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0})}catch(i){if(/Target closed/.test(i.message)||/'Target.getTargetInfo' wasn't found/.test(i))return; -if(n==="worker"){N.warn("target-manager",`Issue attaching to worker target: ${i}`);return}throw i}finally{await r.sendCommandAndIgnore("Runtime.runIfWaitingForDebugger")}}_onExecutionContextCreated(t){t.context.name.match(/^__puppeteer_utility_world__/)||t.context.name!=="lighthouse_isolated_context"&&this._executionContextIdToDescriptions.set(t.context.uniqueId,t.context)}_onExecutionContextDestroyed(t){this._executionContextIdToDescriptions.delete(t.executionContextUniqueId)}_onExecutionContextsCleared(){this._executionContextIdToDescriptions.clear()}_getProtocolEventListener(t,r){return s((i,a)=>{let o={method:i,params:a,targetType:t,sessionId:r};this.emit("protocolevent",o)},"onProtocolEvent")}async enable(){this._enabled||(this._enabled=!0,this._targetIdToTargets=new Map,this._executionContextIdToDescriptions=new Map,this._rootCdpSession.on("Page.frameNavigated",this._onFrameNavigated),this._rootCdpSession.on("Runtime.executionContextCreated",this._onExecutionContextCreated),this. -_rootCdpSession.on("Runtime.executionContextDestroyed",this._onExecutionContextDestroyed),this._rootCdpSession.on("Runtime.executionContextsCleared",this._onExecutionContextsCleared),await this._rootCdpSession.send("Page.enable"),await this._rootCdpSession.send("Runtime.enable"),this._mainFrameId=(await this._rootCdpSession.send("Page.getFrameTree")).frameTree.frame.id,await this._onSessionAttached(this._rootCdpSession))}async disable(){this._rootCdpSession.off("Page.frameNavigated",this._onFrameNavigated),this._rootCdpSession.off("Runtime.executionContextCreated",this._onExecutionContextCreated),this._rootCdpSession.off("Runtime.executionContextDestroyed",this._onExecutionContextDestroyed),this._rootCdpSession.off("Runtime.executionContextsCleared",this._onExecutionContextsCleared);for(let{cdpSession:t,protocolListener:r}of this._targetIdToTargets.values())t.off("*",r),t.off("sessionattached",this._onSessionAttached);await this._rootCdpSession.send("Page.disable").catch(t=>{}),await this. -_rootCdpSession.send("Runtime.disable").catch(t=>{}),this._enabled=!1,this._targetIdToTargets=new Map,this._executionContextIdToDescriptions=new Map,this._mainFrameId=""}}});var Nh,iq=g(()=>{"use strict";d();or();Nh=class{static{s(this,"Fetcher")}constructor(t){this.session=t}async fetchResource(t,r={timeout:2e3}){return globalThis.isLightrider?this._wrapWithTimeout(this._fetchWithFetchApi(t),r.timeout):this._fetchResourceOverProtocol(t,r)}async _fetchWithFetchApi(t){let r=await fetch(t),n=null;try{n=await r.text()}catch{}return{content:n,status:r.status}}async _readIOStream(t,r={timeout:2e3}){let n=Date.now(),i,a="";for(;!i||!i.eof;){if(Date.now()-n>r.timeout)throw new Error("Waiting for the end of the IO stream exceeded the allotted time.");i=await this.session.sendCommand("IO.read",{handle:t});let u=i.base64Encoded?Buffer.from(i.data,"base64").toString("utf-8"):i.data;a=a.concat(u)}return a}async _loadNetworkResource(t){let r=await this.session.sendCommand("Page.getFrameTree"),n=await this.session.sendCommand("Network.loadNetworkResource",{frameId:r.frameTree.frame.id,url:t,options:{disableCache:!0,includeCredentials:!0}});return{stream:n.resource.success&& -n.resource.stream||null,status:n.resource.httpStatusCode||null}}async _fetchResourceOverProtocol(t,r){let n=Date.now(),i=await this._wrapWithTimeout(this._loadNetworkResource(t),r.timeout),a=i.status&&i.status>=200&&i.status<=299;if(!i.stream||!a)return{status:i.status,content:null};let o=r.timeout-(Date.now()-n),u=await this._readIOStream(i.stream,{timeout:o});return{status:i.status,content:u}}async _wrapWithTimeout(t,r){let n,i=new Promise((o,u)=>{n=setTimeout(u,r,new Error("Timed out fetching resource"))});return await Promise.race([t,i]).finally(()=>clearTimeout(n))}}});var Cr,aF,Aa,Mh=g(()=>{"use strict";d();Ne();f1();nq();iq();yx();Cr=s(()=>{throw new Error("Session not connected")},"throwNotConnectedFn"),aF={setTargetInfo:Cr,hasNextProtocolTimeout:Cr,getNextProtocolTimeout:Cr,setNextProtocolTimeout:Cr,on:Cr,once:Cr,off:Cr,sendCommand:Cr,sendCommandAndIgnore:Cr,dispose:Cr,onCrashPromise:Cr},Aa=class{static{s(this,"Driver")}constructor(t){this._page=t,this._targetManager=void 0,this._networkMonitor=void 0,this._executionContext=void 0,this._fetcher=void 0,this.defaultSession=aF}get executionContext(){return this._executionContext?this._executionContext:Cr()}get fetcher(){return this._fetcher?this._fetcher:Cr()}get targetManager(){return this._targetManager?this._targetManager:Cr()}get networkMonitor(){return this._networkMonitor?this._networkMonitor:Cr()}async url(){return this._page.url()}async connect(){if(this.defaultSession!==aF)return;let t={msg:"Connecting to browser",id:"lh:driver:connect"};N.time(t);let r=await this._page.target().createCDPSession(); -this._targetManager=new Ah(r),await this._targetManager.enable(),this._networkMonitor=new zs(this._targetManager),await this._networkMonitor.enable(),this.defaultSession=this._targetManager.rootSession(),this._executionContext=new ua(this.defaultSession),this._fetcher=new Nh(this.defaultSession),N.timeEnd(t)}async disconnect(){this.defaultSession!==aF&&(await this._targetManager?.disable(),await this._networkMonitor?.disable(),await this.defaultSession.dispose())}}});function aq(e,t){let r=new Error(`Dependency "${e.id}" failed with exception: ${t.message}`);return r.expected=!0,r}function Mu(){return{startInstrumentation:{},startSensitiveInstrumentation:{},stopSensitiveInstrumentation:{},stopInstrumentation:{},getArtifact:{}}}async function Mr(e){let{driver:t,page:r,artifactDefinitions:n,artifactState:i,baseArtifacts:a,phase:o,gatherMode:u,computedCache:l,settings:c}=e,p=Ome[o],m=p&&i[p]||{},f=o==="getArtifact";for(let h of n){N.verbose(`artifacts:${o}`,h.id);let y=h.gatherer.instance,w=(m[h.id]||Promise.resolve()).then(async()=>{let E=f?await Bme(h,i.getArtifact):{},T={msg:`Getting artifact: ${h.id}`,id:`lh:gather:getArtifact:${h.id}`};f&&N.time(T);let S=await y[o]({gatherMode:u,driver:t,page:r,baseArtifacts:a,dependencies:E,computedCache:l,settings:c});return f&&N.timeEnd(T),S});await w.catch(E=>{bt.captureException(E,{tags:{gatherer:h.id,phase:o},level:"error"}),N.error(h.id,E.message)}),i[o][h.id]=w}}async function Bme(e,t){if(!e.dependencies) -return{};let r=Object.entries(e.dependencies).map(async([n,i])=>{let a=t[i.id];if(a===void 0)throw new Error(`"${i.id}" did not run`);if(a instanceof Error)throw aq(i,a);let o=Promise.resolve().then(()=>a).catch(u=>Promise.reject(aq(i,u)));return[n,await o]});return Object.fromEntries(await Promise.all(r))}async function Lu(e){let t={};for(let[r,n]of Object.entries(e.getArtifact)){let i=await n.catch(a=>a);i!==void 0&&(t[r]=i)}return t}var Ome,Lh=g(()=>{"use strict";d();Ne();Kr();s(aq,"createDependencyError");s(Mu,"getEmptyArtifactState");Ome={startInstrumentation:void 0,startSensitiveInstrumentation:"startInstrumentation",stopSensitiveInstrumentation:"startSensitiveInstrumentation",stopInstrumentation:"stopSensitiveInstrumentation",getArtifact:"stopInstrumentation"};s(Mr,"collectPhaseArtifacts");s(Bme,"collectArtifactDependencies");s(Lu,"awaitArtifacts")});async function sq(e){let t={msg:"Getting browser version",id:"lh:gather:getVersion"};N.time(t,"verbose");let r=await e.sendCommand("Browser.getVersion"),n=r.product.match(/\/(\d+)/),i=n?parseInt(n[1]):0;return N.timeEnd(t),Object.assign(r,{milestone:i})}async function uq(e){let t={msg:"Benchmarking machine",id:"lh:gather:getBenchmarkIndex"};N.time(t);let r=await e.evaluate(qe.computeBenchmarkIndex,{args:[]});return N.timeEnd(t),r}function qme(e){let{settings:t,baseArtifacts:r}=e,{throttling:n,throttlingMethod:i}=t,a=Yr.throttling;if(t.channel!=="cli")return;let o=i==="simulate"||i==="devtools",u=n.cpuSlowdownMultiplier===a.cpuSlowdownMultiplier;if(!(!o||!u)&&!(r.BenchmarkIndex>Ume))return jme(oq.warningSlowHostCpu)}function lq(e){return[qme(e)].filter(t=>!!t)}var oq,Ume,jme,cq=g(()=>{"use strict";d();Ne();wi();Rr();R();oq={warningSlowHostCpu:"The tested device appears to have a slower CPU than Lighthouse expects. This can negatively affect your performance score. Learn more about [cal\ -ibrating an appropriate CPU slowdown multiplier](https://github.com/GoogleChrome/lighthouse/blob/main/docs/throttling.md#cpu-throttling)."},Ume=1e3,jme=D("core/gather/driver/environment.js",oq);s(sq,"getBrowserVersion");s(uq,"getBenchmarkIndex");s(qme,"getSlowHostCpuWarning");s(lq,"getEnvironmentWarnings")});async function Pu(e,t,r){let n=await uq(t.executionContext),{userAgent:i,product:a}=await sq(t.defaultSession);return{fetchTime:new Date().toJSON(),Timing:[],LighthouseRunWarnings:[],settings:e.settings,BenchmarkIndex:n,HostUserAgent:i,HostFormFactor:i.includes("Android")||i.includes("Mobile")?"mobile":"desktop",HostProduct:a,URL:{finalDisplayedUrl:""},PageLoadError:null,GatherContext:r}}function zme(e){let t=[];for(let r of e)t.some(n=>kn(r,n))||t.push(r);return t}function Ou(e,t){e.LighthouseRunWarnings.push(...lq({settings:e.settings,baseArtifacts:e}));let r={...e,...t};if(r.Timing=N.getTimeEntries(),r.LighthouseRunWarnings=zme(e.LighthouseRunWarnings),r.PageLoadError&&!r.URL.finalDisplayedUrl&&(r.URL.finalDisplayedUrl=r.URL.requestedUrl||""),!r.URL.finalDisplayedUrl)throw new Error("Runner did not set finalDisplayedUrl");return r}var Ph=g(()=>{"use strict";d();Ne();nl();cq();s(Pu,"getBaseArtifacts");s(zme,"deduplicateWarnings");s(Ou,"finalizeArtifacts")});async function oF(e,t={}){let{flags:r={},config:n}=t;N.setLevel(r.logLevel||"error");let{resolvedConfig:i}=await Ai("snapshot",n,r),a=new Aa(e);await a.connect();let o=new Map,u=await a.url(),l={resolvedConfig:i,computedCache:o},c=s(async()=>{let m=await Pu(i,a,{gatherMode:"snapshot"});m.URL={finalDisplayedUrl:u};let f=i.artifacts||[],h=Mu();await Mr({phase:"getArtifact",gatherMode:"snapshot",driver:a,page:e,baseArtifacts:m,artifactDefinitions:f,artifactState:h,computedCache:o,settings:i.settings}),await a.disconnect();let y=await Lu(h);return Ou(m,y)},"gatherFn");return{artifacts:await nr.gather(c,l),runnerOptions:l}}var sF=g(()=>{"use strict";d();Ne();Mh();Ia();Lh();Ru();Ph();s(oF,"snapshotGather")});async function Bh(e,t,r){let n={msg:"Cleaning origin data",id:"lh:storage:clearDataForOrigin"};N.time(n);let i=[],a=new URL(t).origin,o=r.join(",");e.setNextProtocolTimeout(5e3);try{await e.sendCommand("Storage.clearDataForOrigin",{origin:a,storageTypes:o})}catch(u){if(u.code==="PROTOCOL_TIMEOUT")N.warn("Driver","clearDataForOrigin timed out"),i.push(uF(Oh.warningOriginDataTimeout));else throw u}finally{N.timeEnd(n)}return i}async function dq(e,t){let r=await e.sendCommand("Storage.getUsageAndQuota",{origin:t}),n={local_storage:"Local Storage",indexeddb:"IndexedDB",websql:"Web SQL"},i=r.usageBreakdown.filter(a=>a.usage).map(a=>n[a.storageType]||"").filter(Boolean);if(i.length)return uF(Oh.warningData,{locations:i.join(", "),locationCount:i.length})}async function pq(e){let t={msg:"Cleaning browser cache",id:"lh:storage:clearBrowserCaches"};N.time(t);let r=[];try{await e.sendCommand("Network.clearBrowserCache"),await e.sendCommand("Network.setCacheDisabled",{cacheDisabled:!0}),await e.sendCommand( -"Network.setCacheDisabled",{cacheDisabled:!1})}catch(n){if(n.code==="PROTOCOL_TIMEOUT")N.warn("Driver","clearBrowserCaches timed out"),r.push(uF(Oh.warningCacheTimeout));else throw n}finally{N.timeEnd(t)}return r}var Oh,uF,lF=g(()=>{"use strict";d();Ne();R();Oh={warningData:`{locationCount, plural, + ${p[h]}`);if(!Pr(m,p))throw new Error("Cannot change settings between gathering and auditing")}let c={settings:t,computedCache:o},u={};for(let l of n){let m=l.implementation.meta.id,p=await e._runAudit(l,r,c,a);u[m]=p}return M.timeEnd(i),u}static async _runAudit(t,n,r,a){let o=t.implementation,i={msg:`Auditing: ${ii(o.meta.title,"en-US")}`,id:`lh:audit:${o.meta.id}`};M.time(i);let c;try{if(n.PageLoadError)throw n.PageLoadError;for(let h of o.meta.requiredArtifacts){let y=n[h]===void 0,v=h==="traces"&&!n.traces?.[b.DEFAULT_PASS],w=h==="devtoolsLogs"&&!n.devtoolsLogs?.[b.DEFAULT_PASS];if(y||v||w)throw M.warn("Runner",`${h} gatherer, required by audit ${o.meta.id}, did not run.`),new q(q.errors.MISSING_REQUIRED_ARTIFACT,{artifactName:h});if(n[h]instanceof Error){let x=n[h];M.warn("Runner",`${h} gatherer, required by audit ${o.meta.id}, encountered an error: ${x.message}`);let E=new q(q.errors.ERRORED_REQUIRED_ARTIFACT,{artifactName:h,errorMessage:x.message},{cause:x});throw E.expected= +!0,E}}let l={options:Object.assign({},o.defaultOptions,t.options),...r},p=o.meta.requiredArtifacts.concat(o.meta.__internalOptionalArtifacts||[]).reduce((h,y)=>{let v=n[y];return h[y]=v,h},{}),f=await o.audit(p,l);a.push(...f.runWarnings||[]),c=b.generateAuditResult(o,f)}catch(u){u.code!=="MISSING_REQUIRED_ARTIFACT"&&u.code!=="ERRORED_REQUIRED_ARTIFACT"&&M.warn(o.meta.id,`Caught exception: ${u.message}`),Dt.captureException(u,{tags:{audit:o.meta.id},level:"error"});let l=u.friendlyMessage?u.friendlyMessage:u.message,m=u.cause?.stack??u.stack;c=b.generateErrorAuditResult(o,l,m)}return M.timeEnd(i),c}static getArtifactRuntimeError(t){let n=[t.PageLoadError,...Object.values(t)];for(let r of n)if(r instanceof q&&r.lhrRuntimeError){let o=r.friendlyMessage||r.message;return{code:r.code,message:o}}}static getAuditList(){let t=["audit.js","violation-audit.js","accessibility/axe-audit.js","multi-check-audit.js","byte-efficiency/byte-efficiency-audit.js","manual/manual-audit.js"];return["accessi\ +bility","audit.js","autocomplete.js","bf-cache.js","bootup-time.js","byte-efficiency","critical-request-chains.js","csp-xss.js","deprecations.js","diagnostics.js","dobetterweb","errors-in-console.js","final-screenshot.js","font-display.js","has-hsts.js","image-aspect-ratio.js","image-size-responsive.js","is-on-https.js","largest-contentful-paint-element.js","layout-shifts.js","lcp-lazy-loaded.js","long-tasks.js","main-thread-tasks.js","mainthread-work-breakdown.js","manual","metrics","metrics.js","network-requests.js","network-rtt.js","network-server-latency.js","non-composited-animations.js","oopif-iframe-test-audit.js","origin-isolation.js","predictive-perf.js","preload-fonts.js","prioritize-lcp-image.js","redirects-http.js","redirects.js","resource-summary.js","screenshot-thumbnails.js","script-treemap-data.js","seo","server-response-time.js","third-party-cookies.js","third-party-facades.js","third-party-summary.js","unsized-images.js","user-timings.js","uses-rel-preconnect.js","use\ +s-rel-preload.js","valid-source-maps.js","viewport.js","violation-audit.js","work-during-interaction.js",...["charset.js","doctype.js","dom-size.js","geolocation-on-start.js","inspector-issues.js","js-libraries.js","no-document-write.js","notification-on-start.js","paste-preventing-inputs.js","uses-http2.js","uses-passive-event-listeners.js"].map(r=>`dobetterweb/${r}`),...["cumulative-layout-shift.js","first-contentful-paint.js","first-meaningful-paint.js","interaction-to-next-paint.js","interactive.js","largest-contentful-paint.js","max-potential-fid.js","speed-index.js","total-blocking-time.js"].map(r=>`metrics/${r}`),...["canonical.js","crawlable-anchors.js","font-size.js","hreflang.js","http-status-code.js","is-crawlable.js","link-text.js","manual","meta-description.js","robots-txt.js"].map(r=>`seo/${r}`),...["structured-data.js"].map(r=>`seo/manual/${r}`),...["accesskeys.js","aria-allowed-attr.js","aria-allowed-role.js","aria-command-name.js","aria-conditional-attr.js","aria-depre\ +cated-role.js","aria-dialog-name.js","aria-hidden-body.js","aria-hidden-focus.js","aria-input-field-name.js","aria-meter-name.js","aria-progressbar-name.js","aria-prohibited-attr.js","aria-required-attr.js","aria-required-children.js","aria-required-parent.js","aria-roles.js","aria-text.js","aria-toggle-field-name.js","aria-tooltip-name.js","aria-treeitem-name.js","aria-valid-attr-value.js","aria-valid-attr.js","axe-audit.js","button-name.js","bypass.js","color-contrast.js","definition-list.js","dlitem.js","document-title.js","duplicate-id-aria.js","empty-heading.js","form-field-multiple-labels.js","frame-title.js","heading-order.js","html-has-lang.js","html-lang-valid.js","html-xml-lang-mismatch.js","identical-links-same-purpose.js","image-alt.js","image-redundant-alt.js","input-button-name.js","input-image-alt.js","label-content-name-mismatch.js","label.js","landmark-one-main.js","link-in-text-block.js","link-name.js","list.js","listitem.js","manual","meta-refresh.js","meta-viewport.\ +js","object-alt.js","select-name.js","skip-link.js","tabindex.js","table-duplicate-name.js","table-fake-caption.js","target-size.js","td-has-header.js","td-headers-attr.js","th-has-data-cells.js","valid-lang.js","video-caption.js"].map(r=>`accessibility/${r}`),...["custom-controls-labels.js","custom-controls-roles.js","focus-traps.js","focusable-controls.js","interactive-element-affordance.js","logical-tab-order.js","managed-focus.js","offscreen-content-hidden.js","use-landmarks.js","visual-order-follows-dom.js"].map(r=>`accessibility/manual/${r}`),...["byte-efficiency-audit.js","duplicated-javascript.js","efficient-animated-content.js","legacy-javascript.js","modern-image-formats.js","offscreen-images.js","polyfill-graph-data.json","render-blocking-resources.js","total-byte-weight.js","unminified-css.js","unminified-javascript.js","unused-css-rules.js","unused-javascript.js","uses-long-cache-ttl.js","uses-optimized-images.js","uses-responsive-images-snapshot.js","uses-responsive-image\ +s.js","uses-text-compression.js"].map(r=>`byte-efficiency/${r}`),...["manual-audit.js"].map(r=>`manual/${r}`)].filter(r=>/\.js$/.test(r)&&!t.includes(r)).sort()}static getGathererList(){return["accessibility.js","anchor-elements.js","bf-cache-failures.js","cache-contents.js","console-messages.js","css-usage.js","devtools-log-compat.js","devtools-log.js","dobetterweb","full-page-screenshot.js","iframe-elements.js","image-elements.js","inputs.js","inspector-issues.js","js-usage.js","link-elements.js","main-document-content.js","meta-elements.js","network-user-agent.js","root-causes.js","scripts.js","seo","source-maps.js","stacks.js","stylesheets.js","trace-compat.js","trace-elements.js","trace.js","viewport-dimensions.js",...["font-size.js","robots-txt.js"].map(n=>`seo/${n}`),...["doctype.js","domstats.js","optimized-images.js","response-compression.js"].map(n=>`dobetterweb/${n}`)].filter(n=>/\.js$/.test(n)&&n!=="gatherer.js").sort()}static _getDataSavePath(t){let{auditMode:n,gatherMode:r}=t; +return typeof n=="string"?Ct.resolve(process.cwd(),n):typeof r=="string"?Ct.resolve(process.cwd(),r):Ct.join(process.cwd(),"latest-run")}}});var ghe,jq,Uq,yhe,Lh,zq=g(()=>{"use strict";d();ua();Oe();Wt();ghe=3e4,jq=50,Uq=2147483647-jq,yhe=Kn,Lh=class extends yhe{static{s(this,"ProtocolSession")}constructor(t){super(),this._cdpSession=t,this._targetInfo=void 0,this._nextProtocolTimeout=void 0,this._handleProtocolEvent=this._handleProtocolEvent.bind(this),this._cdpSession.on("*",this._handleProtocolEvent);let n=s(r=>{},"rej");this._targetCrashedPromise=new Promise((r,a)=>n=a),this.on("Inspector.targetCrashed",async()=>{M.error("TargetManager","Inspector.targetCrashed"),this.dispose(),n(new q(q.errors.TARGET_CRASHED))})}id(){return this._cdpSession.id()}_handleProtocolEvent(t,...n){this.emit(t,...n)}setTargetInfo(t){this._targetInfo=t}hasNextProtocolTimeout(){return this._nextProtocolTimeout!==void 0}getNextProtocolTimeout(){return this._nextProtocolTimeout||ghe}setNextProtocolTimeout(t){t>Uq&&(t=Uq),this._nextProtocolTimeout=t}sendCommand(t,...n){let r=this.getNextProtocolTimeout();this._nextProtocolTimeout=void 0;let a,o=new Promise( +(u,l)=>{a=setTimeout(l,r,new q(q.errors.PROTOCOL_TIMEOUT,{protocolMethod:t}))}),i=this._cdpSession.send(t,...n,{timeout:r+jq}).catch(u=>{throw M.formatProtocol("method <= browser ERR",{method:t},"error"),q.fromProtocolMessage(t,u)});return Promise.race([i,o,this._targetCrashedPromise]).finally(()=>{a&&clearTimeout(a)})}sendCommandAndIgnore(t,...n){return this.sendCommand(t,...n).catch(r=>M.verbose("session",t,r.message)).then(r=>{})}async dispose(){this._cdpSession.off("*",this._handleProtocolEvent),await this._cdpSession.detach().catch(t=>M.verbose("session","detach failed",t.message))}onCrashPromise(){return this._targetCrashedPromise}}});var vhe,Ph,qq=g(()=>{"use strict";d();ua();Oe();zq();vhe=Kn,Ph=class extends vhe{static{s(this,"TargetManager")}constructor(t){super(),this._enabled=!1,this._rootCdpSession=t,this._mainFrameId="",this._targetIdToTargets=new Map,this._executionContextIdToDescriptions=new Map,this._onSessionAttached=this._onSessionAttached.bind(this),this._onFrameNavigated=this._onFrameNavigated.bind(this),this._onExecutionContextCreated=this._onExecutionContextCreated.bind(this),this._onExecutionContextDestroyed=this._onExecutionContextDestroyed.bind(this),this._onExecutionContextsCleared=this._onExecutionContextsCleared.bind(this)}async _onFrameNavigated(t){if(!t.frame.parentId&&this._enabled)try{await this._rootCdpSession.send("Target.setAutoAttach",{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0})}catch(n){if(this._enabled)throw n}}_findSession(t){for(let{session:n,cdpSession:r}of this._targetIdToTargets.values())if(r.id()===t)return n;throw new Error(`session ${t} not found`)}_isAcceptedTargetType(t){ +return t==="page"||t==="iframe"||t==="worker"}rootSession(){let t=this._rootCdpSession.id();return this._findSession(t)}mainFrameExecutionContexts(){return[...this._executionContextIdToDescriptions.values()].filter(t=>t.auxData.frameId===this._mainFrameId)}async _onSessionAttached(t){let n=new Lh(t),r;try{let{targetInfo:a}=await n.sendCommand("Target.getTargetInfo");if(r=a.type,!this._isAcceptedTargetType(r))return;let o=a.targetId;if(this._targetIdToTargets.has(o))return;n.setTargetInfo(a);let i=a.url||a.targetId;M.verbose("target-manager",`target ${i} attached`);let u=this._getProtocolEventListener(r,n.id());t.on("*",u),t.on("sessionattached",this._onSessionAttached);let l={target:a,cdpSession:t,session:n,protocolListener:u};this._targetIdToTargets.set(o,l),await n.sendCommand("Network.enable"),await n.sendCommand("Target.setAutoAttach",{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0})}catch(a){if(/Target closed/.test(a.message)||/'Target.getTargetInfo' wasn't found/.test(a))return; +if(r==="worker"){M.warn("target-manager",`Issue attaching to worker target: ${a}`);return}throw a}finally{await n.sendCommandAndIgnore("Runtime.runIfWaitingForDebugger")}}_onExecutionContextCreated(t){t.context.name.match(/^__puppeteer_utility_world__/)||t.context.name!=="lighthouse_isolated_context"&&this._executionContextIdToDescriptions.set(t.context.uniqueId,t.context)}_onExecutionContextDestroyed(t){this._executionContextIdToDescriptions.delete(t.executionContextUniqueId)}_onExecutionContextsCleared(){this._executionContextIdToDescriptions.clear()}_getProtocolEventListener(t,n){return s((a,o)=>{let i={method:a,params:o,targetType:t,sessionId:n};this.emit("protocolevent",i)},"onProtocolEvent")}async enable(){this._enabled||(this._enabled=!0,this._targetIdToTargets=new Map,this._executionContextIdToDescriptions=new Map,this._rootCdpSession.on("Page.frameNavigated",this._onFrameNavigated),this._rootCdpSession.on("Runtime.executionContextCreated",this._onExecutionContextCreated),this. +_rootCdpSession.on("Runtime.executionContextDestroyed",this._onExecutionContextDestroyed),this._rootCdpSession.on("Runtime.executionContextsCleared",this._onExecutionContextsCleared),await this._rootCdpSession.send("Page.enable"),await this._rootCdpSession.send("Runtime.enable"),this._mainFrameId=(await this._rootCdpSession.send("Page.getFrameTree")).frameTree.frame.id,await this._onSessionAttached(this._rootCdpSession))}async disable(){this._rootCdpSession.off("Page.frameNavigated",this._onFrameNavigated),this._rootCdpSession.off("Runtime.executionContextCreated",this._onExecutionContextCreated),this._rootCdpSession.off("Runtime.executionContextDestroyed",this._onExecutionContextDestroyed),this._rootCdpSession.off("Runtime.executionContextsCleared",this._onExecutionContextsCleared);for(let{cdpSession:t,protocolListener:n}of this._targetIdToTargets.values())t.off("*",n),t.off("sessionattached",this._onSessionAttached);await this._rootCdpSession.send("Page.disable").catch(t=>{}),await this. +_rootCdpSession.send("Runtime.disable").catch(t=>{}),this._enabled=!1,this._targetIdToTargets=new Map,this._executionContextIdToDescriptions=new Map,this._mainFrameId=""}}});var Bh,Hq=g(()=>{"use strict";d();hn();Bh=class{static{s(this,"Fetcher")}constructor(t){this.session=t}async fetchResource(t,n={timeout:2e3}){return globalThis.isLightrider?this._wrapWithTimeout(this._fetchWithFetchApi(t),n.timeout):this._fetchResourceOverProtocol(t,n)}async _fetchWithFetchApi(t){let n=await fetch(t),r=null;try{r=await n.text()}catch{}return{content:r,status:n.status}}async _readIOStream(t,n={timeout:2e3}){let r=Date.now(),a,o="";for(;!a||!a.eof;){if(Date.now()-r>n.timeout)throw new Error("Waiting for the end of the IO stream exceeded the allotted time.");a=await this.session.sendCommand("IO.read",{handle:t});let c=a.base64Encoded?Buffer.from(a.data,"base64").toString("utf-8"):a.data;o=o.concat(c)}return o}async _loadNetworkResource(t){let n=await this.session.sendCommand("Page.getFrameTree"),r=await this.session.sendCommand("Network.loadNetworkResource",{frameId:n.frameTree.frame.id,url:t,options:{disableCache:!0,includeCredentials:!0}});return{stream:r.resource.success&& +r.resource.stream||null,status:r.resource.httpStatusCode||null}}async _fetchResourceOverProtocol(t,n){let r=Date.now(),a=await this._wrapWithTimeout(this._loadNetworkResource(t),n.timeout),o=a.status&&a.status>=200&&a.status<=299;if(!a.stream||!o)return{status:a.status,content:null};let i=n.timeout-(Date.now()-r),c=await this._readIOStream(a.stream,{timeout:i});return{status:a.status,content:c}}async _wrapWithTimeout(t,n){let r,a=new Promise((i,c)=>{r=setTimeout(c,n,new Error("Timed out fetching resource"))});return await Promise.race([t,a]).finally(()=>clearTimeout(r))}}});var An,zk,Go,Uh=g(()=>{"use strict";d();Oe();b1();qq();Hq();XT();An=s(()=>{throw new Error("Session not connected")},"throwNotConnectedFn"),zk={setTargetInfo:An,hasNextProtocolTimeout:An,getNextProtocolTimeout:An,setNextProtocolTimeout:An,on:An,once:An,off:An,sendCommand:An,sendCommandAndIgnore:An,dispose:An,onCrashPromise:An},Go=class{static{s(this,"Driver")}constructor(t){this._page=t,this._targetManager=void 0,this._networkMonitor=void 0,this._executionContext=void 0,this._fetcher=void 0,this.defaultSession=zk}get executionContext(){return this._executionContext?this._executionContext:An()}get fetcher(){return this._fetcher?this._fetcher:An()}get targetManager(){return this._targetManager?this._targetManager:An()}get networkMonitor(){return this._networkMonitor?this._networkMonitor:An()}async url(){return this._page.url()}async connect(){if(this.defaultSession!==zk)return;let t={msg:"Connecting to browser",id:"lh:driver:connect"};M.time(t);let n=await this._page.target().createCDPSession(); +this._targetManager=new Ph(n),await this._targetManager.enable(),this._networkMonitor=new Hs(this._targetManager),await this._networkMonitor.enable(),this.defaultSession=this._targetManager.rootSession(),this._executionContext=new wo(this.defaultSession),this._fetcher=new Bh(this.defaultSession),M.timeEnd(t)}async disconnect(){this.defaultSession!==zk&&(await this._targetManager?.disable(),await this._networkMonitor?.disable(),await this.defaultSession.dispose())}}});function Wq(e,t){let n=new Error(`Dependency "${e.id}" failed with exception: ${t.message}`);return n.expected=!0,n}function Oc(){return{startInstrumentation:{},startSensitiveInstrumentation:{},stopSensitiveInstrumentation:{},stopInstrumentation:{},getArtifact:{}}}async function Un(e){let{driver:t,page:n,artifactDefinitions:r,artifactState:a,baseArtifacts:o,phase:i,gatherMode:c,computedCache:u,settings:l}=e,m=bhe[i],p=m&&a[m]||{},f=i==="getArtifact";for(let h of r){M.verbose(`artifacts:${i}`,h.id);let y=h.gatherer.instance,w=(p[h.id]||Promise.resolve()).then(async()=>{let x=f?await whe(h,a.getArtifact):{},E={msg:`Getting artifact: ${h.id}`,id:`lh:gather:getArtifact:${h.id}`};f&&M.time(E);let S=await y[i]({gatherMode:c,driver:t,page:n,baseArtifacts:o,dependencies:x,computedCache:u,settings:l});return f&&M.timeEnd(E),S});await w.catch(x=>{Dt.captureException(x,{tags:{gatherer:h.id,phase:i},level:"error"}),M.error(h.id,x.message)}),a[i][h.id]=w}}async function whe(e,t){if(!e.dependencies) +return{};let n=Object.entries(e.dependencies).map(async([r,a])=>{let o=t[a.id];if(o===void 0)throw new Error(`"${a.id}" did not run`);if(o instanceof Error)throw Wq(a,o);let i=Promise.resolve().then(()=>o).catch(c=>Promise.reject(Wq(a,c)));return[r,await i]});return Object.fromEntries(await Promise.all(n))}async function Lc(e){let t={};for(let[n,r]of Object.entries(e.getArtifact)){let a=await r.catch(o=>o);a!==void 0&&(t[n]=a)}return t}var bhe,jh=g(()=>{"use strict";d();Oe();nr();s(Wq,"createDependencyError");s(Oc,"getEmptyArtifactState");bhe={startInstrumentation:void 0,startSensitiveInstrumentation:"startInstrumentation",stopSensitiveInstrumentation:"startSensitiveInstrumentation",stopInstrumentation:"stopSensitiveInstrumentation",getArtifact:"stopInstrumentation"};s(Un,"collectPhaseArtifacts");s(whe,"collectArtifactDependencies");s(Lc,"awaitArtifacts")});async function Vq(e){let t={msg:"Getting browser version",id:"lh:gather:getVersion"};M.time(t,"verbose");let n=await e.sendCommand("Browser.getVersion"),r=n.product.match(/\/(\d+)/),a=r?parseInt(r[1]):0;return M.timeEnd(t),Object.assign(n,{milestone:a})}async function $q(e){let t={msg:"Benchmarking machine",id:"lh:gather:getBenchmarkIndex"};M.time(t);let n=await e.evaluate(je.computeBenchmarkIndex,{args:[]});return M.timeEnd(t),n}function Ehe(e){let{settings:t,baseArtifacts:n}=e,{throttling:r,throttlingMethod:a}=t,o=tr.throttling;if(t.channel!=="cli")return;let i=a==="simulate"||a==="devtools",c=r.cpuSlowdownMultiplier===o.cpuSlowdownMultiplier;if(!(!i||!c)&&!(n.BenchmarkIndex>Dhe))return xhe(Gq.warningSlowHostCpu)}function Yq(e){return[Ehe(e)].filter(t=>!!t)}var Gq,Dhe,xhe,Kq=g(()=>{"use strict";d();Oe();Fa();On();A();Gq={warningSlowHostCpu:"The tested device appears to have a slower CPU than Lighthouse expects. This can negatively affect your performance score. Learn more about [cal\ +ibrating an appropriate CPU slowdown multiplier](https://github.com/GoogleChrome/lighthouse/blob/main/docs/throttling.md#cpu-throttling)."},Dhe=1e3,xhe=D("core/gather/driver/environment.js",Gq);s(Vq,"getBrowserVersion");s($q,"getBenchmarkIndex");s(Ehe,"getSlowHostCpuWarning");s(Yq,"getEnvironmentWarnings")});async function Pc(e,t,n){let r=await $q(t.executionContext),{userAgent:a,product:o}=await Vq(t.defaultSession);return{fetchTime:new Date().toJSON(),Timing:[],LighthouseRunWarnings:[],settings:e.settings,BenchmarkIndex:r,HostUserAgent:a,HostFormFactor:a.includes("Android")||a.includes("Mobile")?"mobile":"desktop",HostProduct:o,URL:{finalDisplayedUrl:""},PageLoadError:null,GatherContext:n}}function The(e){let t=[];for(let n of e)t.some(r=>Pr(n,r))||t.push(n);return t}function Bc(e,t){e.LighthouseRunWarnings.push(...Yq({settings:e.settings,baseArtifacts:e}));let n={...e,...t};if(n.Timing=M.getTimeEntries(),n.LighthouseRunWarnings=The(e.LighthouseRunWarnings),n.PageLoadError&&!n.URL.finalDisplayedUrl&&(n.URL.finalDisplayedUrl=n.URL.requestedUrl||""),!n.URL.finalDisplayedUrl)throw new Error("Runner did not set finalDisplayedUrl");return n}var zh=g(()=>{"use strict";d();Oe();au();Kq();s(Pc,"getBaseArtifacts");s(The,"deduplicateWarnings");s(Bc,"finalizeArtifacts")});async function qk(e,t={}){let{flags:n={},config:r}=t;M.setLevel(n.logLevel||"error");let{resolvedConfig:a}=await ja("snapshot",r,n),o=new Go(e);await o.connect();let i=new Map,c=await o.url(),u={resolvedConfig:a,computedCache:i},l=s(async()=>{let p=await Pc(a,o,{gatherMode:"snapshot"});p.URL={finalDisplayedUrl:c};let f=a.artifacts||[],h=Oc();await Un({phase:"getArtifact",gatherMode:"snapshot",driver:o,page:e,baseArtifacts:p,artifactDefinitions:f,artifactState:h,computedCache:i,settings:a.settings}),await o.disconnect();let y=await Lc(h);return Bc(p,y)},"gatherFn");return{artifacts:await dn.gather(l,u),runnerOptions:u}}var Hk=g(()=>{"use strict";d();Oe();Uh();Wo();jh();Ac();zh();s(qk,"snapshotGather")});async function Hh(e,t,n){let r={msg:"Cleaning origin data",id:"lh:storage:clearDataForOrigin"};M.time(r);let a=[],o=new URL(t).origin,i=n.join(",");e.setNextProtocolTimeout(5e3);try{await e.sendCommand("Storage.clearDataForOrigin",{origin:o,storageTypes:i})}catch(c){if(c.code==="PROTOCOL_TIMEOUT")M.warn("Driver","clearDataForOrigin timed out"),a.push(Wk(qh.warningOriginDataTimeout));else throw c}finally{M.timeEnd(r)}return a}async function Jq(e,t){let n=await e.sendCommand("Storage.getUsageAndQuota",{origin:t}),r={local_storage:"Local Storage",indexeddb:"IndexedDB",websql:"Web SQL"},a=n.usageBreakdown.filter(o=>o.usage).map(o=>r[o.storageType]||"").filter(Boolean);if(a.length)return Wk(qh.warningData,{locations:a.join(", "),locationCount:a.length})}async function Xq(e){let t={msg:"Cleaning browser cache",id:"lh:storage:clearBrowserCaches"};M.time(t);let n=[];try{await e.sendCommand("Network.clearBrowserCache"),await e.sendCommand("Network.setCacheDisabled",{cacheDisabled:!0}),await e.sendCommand( +"Network.setCacheDisabled",{cacheDisabled:!1})}catch(r){if(r.code==="PROTOCOL_TIMEOUT")M.warn("Driver","clearBrowserCaches timed out"),n.push(Wk(qh.warningCacheTimeout));else throw r}finally{M.timeEnd(t)}return n}var qh,Wk,Gk=g(()=>{"use strict";d();Oe();A();qh={warningData:`{locationCount, plural, =1 {There may be stored data affecting loading performance in this location: {locations}. Audit this page in an incognito window to prevent those resources from affecting your scores.} other {There may be stored data affecting loading performance in these locations: {locations}. Audit this page in an incognito window to prevent those resources from affecting your scores.} - }`,warningCacheTimeout:"Clearing the browser cache timed out. Try auditing this page again and file a bug if the issue persists.",warningOriginDataTimeout:"Clearing the origin data timed out. Try auditing this page again and file a bug if the issue persists."},uF=D("core/gather/driver/storage.js",Oh);s(Bh,"clearDataForOrigin");s(dq,"getImportantStorageWarning");s(pq,"clearBrowserCaches")});async function Uh(e){let t=s(async()=>{await e.sendCommand("Debugger.enable"),await e.sendCommand("Debugger.setSkipAllPauses",{skip:!0}),await e.sendCommand("Debugger.setAsyncCallStackDepth",{maxDepth:8})},"enable");function r(){e.sendCommand("Debugger.resume")}s(r,"onDebuggerPaused");function n(i){i.frame.parentId||t().catch(a=>N.error("Driver",a))}return s(n,"onFrameNavigated"),e.on("Debugger.paused",r),e.on("Page.frameNavigated",n),await t(),async()=>{await e.sendCommandAndIgnore("Debugger.disable"),e.off("Debugger.paused",r),e.off("Page.frameNavigated",n)}}async function Hme(e,t){await e.executionContext.evaluateOnNewDocument(qe.wrapRequestIdleCallback,{args:[t.throttling.cpuSlowdownMultiplier]})}async function Wme(e){e.on("Page.javascriptDialogOpening",t=>{N.warn("Driver",`${t.type} dialog opened by the page automatically suppressed.`),e.sendCommand("Page.handleJavaScriptDialog",{accept:!0,promptText:"Lighthouse prompt response"}).catch(r=>N.warn("Driver",r))}),await e.sendCommand( -"Page.enable")}async function Gme(e,t,r){let n=[],i=await Bh(e,t,r);n.push(...i);let a=await pq(e);n.push(...a);let o=await dq(e,t);return o&&n.push(o),{warnings:n}}async function fq(e,t){let r={msg:"Preparing network conditions",id:"lh:gather:prepareThrottlingAndNetwork"};N.time(r),await w8(e,t);let n=t.blockedUrlPatterns||[];await e.sendCommand("Network.setBlockedURLs",{urls:n});let i=t.extraHeaders;i&&await e.sendCommand("Network.setExtraHTTPHeaders",{headers:i}),N.timeEnd(r)}async function hq(e,t){await e.defaultSession.sendCommand("Network.enable"),await b1(e.defaultSession,t)}async function gq(e,t){let r={msg:"Preparing target for timespan mode",id:"lh:prepare:timespanMode"};N.time(r),await hq(e,t),await fq(e.defaultSession,t),await yq(e),N.timeEnd(r)}async function yq(e){await e.executionContext.evaluate(qe.truncate,{args:["aaa",2]})}async function vq(e,t,r){let n={msg:"Preparing target for navigation mode",id:"lh:prepare:navigationMode"};N.time(n);let i=[];if(await hq(e,t),await Wme( -e.defaultSession),await e.executionContext.cacheNativesOnNewDocument(),t.throttlingMethod==="simulate"&&await Hme(e,t),await yq(e),!t.disableStorageReset&&typeof r=="string"){let{warnings:o}=await Gme(e.defaultSession,r,t.clearStorageTypes);i.push(...o)}return await fq(e.defaultSession,t),N.timeEnd(n),{warnings:i}}var cF=g(()=>{"use strict";d();Ne();lF();w1();Rr();s(Uh,"enableAsyncStacks");s(Hme,"shimRequestIdleCallbackOnNewDocument");s(Wme,"dismissJavaScriptDialogs");s(Gme,"resetStorageForUrl");s(fq,"prepareThrottlingAndNetwork");s(hq,"prepareDeviceEmulation");s(gq,"prepareTargetForTimespanMode");s(yq,"warmUpIntlSegmenter");s(vq,"prepareTargetForNavigationMode")});async function dF(e,t={}){let{flags:r={},config:n}=t;N.setLevel(r.logLevel||"error");let{resolvedConfig:i}=await Ai("timespan",n,r),a=new Aa(e);await a.connect();let o=new Map,u=i.artifacts||[],l=await Pu(i,a,{gatherMode:"timespan"}),c=Mu(),p={driver:a,page:e,artifactDefinitions:u,artifactState:c,baseArtifacts:l,computedCache:o,gatherMode:"timespan",settings:i.settings};await gq(a,i.settings);let m=!1;function f(){m=!0}s(f,"onFrameNavigated"),a.defaultSession.on("Page.frameNavigated",f);let h=await Uh(a.defaultSession);return await Mr({phase:"startInstrumentation",...p}),await Mr({phase:"startSensitiveInstrumentation",...p}),{async endTimespanGather(){let y=await a.url(),b={resolvedConfig:i,computedCache:o},w=s(async()=>{l.URL={finalDisplayedUrl:y},await Mr({phase:"stopSensitiveInstrumentation",...p}),await Mr({phase:"stopInstrumentation",...p}),await h(),a.defaultSession.off("Page.frameNavigated",f),m&&l.LighthouseRunWarnings.push($me(bq.warningNavigationDetected)),await Mr({phase:"ge\ -tArtifact",...p}),await a.disconnect();let T=await Lu(c);return Ou(l,T)},"gatherFn");return{artifacts:await nr.gather(w,b),runnerOptions:b}}}}var bq,$me,pF=g(()=>{"use strict";d();Ne();Mh();Ia();Lh();cF();Ru();Ph();R();bq={warningNavigationDetected:"A page navigation was detected during the run. Using timespan mode to audit page navigations is not recommended. Use navigation mode to audit page navigations for better third-party attribution and main thread detection."},$me=D("core/gather/timespan-runner.js",bq);s(dF,"startTimespanGather")});var wq,Dq=g(()=>{d();wq={}});function Xme(e){let{pauseAfterFcpMs:t,pauseAfterLoadMs:r,networkQuietThresholdMs:n,cpuQuietThresholdMs:i}=e,a=e.maxWaitForLoad,o=e.maxWaitForFcp;return typeof t!="number"&&(t=Yme),typeof r!="number"&&(r=Kme),typeof n!="number"&&(n=Jme),typeof i!="number"&&(i=Zme),typeof a!="number"&&(a=Yr.maxWaitForLoad),typeof o!="number"&&(o=Yr.maxWaitForFcp),e.waitUntil.includes("fcp")||(o=void 0),{pauseAfterFcpMs:t,pauseAfterLoadMs:r,networkQuietThresholdMs:n,cpuQuietThresholdMs:i,maxWaitForLoadedMs:a,maxWaitForFcpMs:o}}async function fF(e,t,r){let n=typeof t=="string"?{msg:`Navigating to ${t}`,id:"lh:driver:navigate"}:{msg:"Navigating using a user defined function",id:"lh:driver:navigate"};N.time(n);let i=e.defaultSession,a=e.networkMonitor;await i.sendCommand("Page.enable"),await i.sendCommand("Page.setLifecycleEventsEnabled",{enabled:!0});let o;typeof t=="string"?(i.setNextProtocolTimeout(1/0),o=i.sendCommand("Page.navigate",{url:t})):o=t();let u=r.waitUntil.includes("navigated"),l=r.waitUntil.includes( -"load"),c=r.waitUntil.includes("fcp"),p=[];if(u){let w=h1(i).promise;p.push(w.then(()=>({timedOut:!1})))}if(l){let w=Xme(r);p.push(QP(i,a,w))}else if(c)throw new Error("Cannot wait for FCP without waiting for page load");let f=(await Promise.race([i.onCrashPromise(),Promise.all(p)])).some(w=>w.timedOut),h=await a.getNavigationUrls(),y=h.requestedUrl;if(typeof t=="string"&&(y&&!J.equalWithExcludedFragments(t,y)&&N.error("Navigation",`Provided URL (${t}) did not match initial navigation URL (${y})`),y=t),!y)throw Error("No navigations detected when running user defined requestor.");let b=h.mainDocumentUrl||y;return await o,r.debugNavigation&&await e8(e),N.timeEnd(n),{requestedUrl:y,mainDocumentUrl:b,warnings:Qme({timedOut:f,mainDocumentUrl:b,requestedUrl:y})}}function Qme(e){let{requestedUrl:t,mainDocumentUrl:r}=e,n=[];return e.timedOut&&n.push(Eq(mF.warningTimeout)),J.equalWithExcludedFragments(t,r)||n.push(Eq(mF.warningRedirected,{requested:t,final:r})),n}var mF,Eq,Yme,Kme,Jme,Zme,Tq=g( -()=>{"use strict";d();Ne();g1();wi();R();ut();mF={warningRedirected:"The page may not be loading as expected because your test URL ({requested}) was redirected to {final}. Try testing the second URL directly.",warningTimeout:"The page loaded too slowly to finish within the time limit. Results may be incomplete."},Eq=D("core/gather/driver/navigation.js",mF),Yme=0,Kme=0,Jme=5e3,Zme=0;s(Xme,"resolveWaitForFullyLoadedOptions");s(fF,"gotoURL");s(Qme,"getNavigationWarnings")});function tfe(e,t){if(e){if(e.failed){let r=e.localizedFailDescription;return r==="net::ERR_NAME_NOT_RESOLVED"||r==="net::ERR_NAME_RESOLUTION_FAILED"||r.startsWith("net::ERR_DNS_")?new z(z.errors.DNS_FAILURE):new z(z.errors.FAILED_DOCUMENT_REQUEST,{errorDetails:r})}else if(e.hasErrorStatusCode())if(t.ignoreStatusCode)t.warnings.push(xq(hF.warningStatusCode,{errorCode:e.statusCode}));else return new z(z.errors.ERRORED_DOCUMENT_REQUEST,{statusCode:`${e.statusCode}`})}else return new z(z.errors.NO_DOCUMENT_REQUEST)}function rfe(e,t){if(!(!e||!t.find(n=>n.documentURL.startsWith("chrome-error://")))&&e.failed)return e.localizedFailDescription.startsWith("net::ERR_CERT")?new z(z.errors.INSECURE_DOCUMENT_REQUEST,{securityMessages:e.localizedFailDescription}):new z(z.errors.CHROME_INTERSTITIAL_ERROR)}function nfe(e){if(e&&!(!e.mimeType||e.statusCode===-1)&&e.mimeType!==efe&&e.mimeType!==Sq)return new z(z.errors.NOT_HTML,{mimeType:e.mimeType})}function Cq(e,t){let{url:r,networkRecords:n}=t,i=st. -NetworkAnalyzer.findResourceForUrl(n,r);if(!i){let c=n.filter(p=>p.resourceType===K.TYPES.Document);c.length&&(i=c.reduce((p,m)=>m.networkRequestTime<p.networkRequestTime?m:p))}let a;if(i)a=st.NetworkAnalyzer.resolveRedirects(i);else return e;a?.mimeType===Sq&&t.warnings.push(xq(hF.warningXhtml));let o=tfe(i,t),u=rfe(i,n),l=nfe(a);return u||o||l||e}var hF,xq,efe,Sq,Fq=g(()=>{"use strict";d();It();zt();Ot();R();hF={warningXhtml:"The page MIME type is XHTML: Lighthouse does not explicitly support this document type",warningStatusCode:"Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Status code: {errorCode})"},xq=D("core/lib/navigation-error.js",hF),efe="text/html",Sq="application/xhtml+xml";s(tfe,"getNetworkError");s(rfe,"getInterstitialError");s(nfe,"getNonHtmlError");s(Cq,"getPageLoadError")});async function ofe({driver:e,resolvedConfig:t,requestor:r}){await e.connect(),typeof r=="string"&&!t.settings.skipAboutBlank&&(await e._networkMonitor?.disable(),await fF(e,t.settings.blankPage,{waitUntil:["navigated"]}),await e._networkMonitor?.enable());let n=await Pu(t,e,{gatherMode:"navigation"}),{warnings:i}=await vq(e,t.settings,r);return n.LighthouseRunWarnings.push(...i),{baseArtifacts:n}}async function sfe({driver:e}){await D8(e.defaultSession)}async function ufe(e){let{driver:t,resolvedConfig:r,requestor:n}=e;try{let{requestedUrl:i,mainDocumentUrl:a,warnings:o}=await fF(t,n,{...r.settings,waitUntil:r.settings.pauseAfterFcpMs?["fcp","load"]:["load"]});return e.baseArtifacts.LighthouseRunWarnings.push(...o),{requestedUrl:i,mainDocumentUrl:a,navigationError:void 0}}catch(i){if(!(i instanceof z)||i.code!=="NO_FCP"&&i.code!=="PAGE_HUNG"&&i.code!=="TARGET_CRASHED"||typeof n!="string")throw i;return{requestedUrl:n,mainDocumentUrl:n,navigationError:i}}}async function lfe(e,t){let r,n; -for(let a of t.artifactDefinitions){let{instance:o}=a.gatherer;o instanceof Gt?r=o.getDebugData():o instanceof cn&&(n=o.getDebugData())}let i=r&&await ie.request(r,e);return{devtoolsLog:r,records:i,trace:n}}async function cfe(e,t,r){let{navigationError:n,requestedUrl:i,mainDocumentUrl:a}=r,o=await lfe(e,t),u=o.records?Cq(n,{url:a,ignoreStatusCode:e.resolvedConfig.settings.ignoreStatusCode,networkRecords:o.records,warnings:e.baseArtifacts.LighthouseRunWarnings}):n;if(u){let l=e.resolvedConfig.settings.locale,c=$a(u.friendlyMessage,l);N.error("NavigationRunner",c,i);let p={},m="pageLoadError-defaultPass";return o.devtoolsLog&&(p.DevtoolsLogError=o.devtoolsLog,p.devtoolsLogs={[m]:o.devtoolsLog}),o.trace&&(p.TraceError=o.trace,p.traces={[m]:o.trace}),e.baseArtifacts.LighthouseRunWarnings.push(u.friendlyMessage),e.baseArtifacts.PageLoadError=u,p}else return await Mr({phase:"getArtifact",...t}),await Lu(t.artifactState)}async function dfe(e){if(!e.resolvedConfig.artifacts)throw new Error("No\ - artifacts were defined on the config");let t=Mu(),r={url:await e.driver.url(),gatherMode:"navigation",driver:e.driver,page:e.page,computedCache:e.computedCache,artifactDefinitions:e.resolvedConfig.artifacts,artifactState:t,baseArtifacts:e.baseArtifacts,settings:e.resolvedConfig.settings},n=await Uh(e.driver.defaultSession);await Mr({phase:"startInstrumentation",...r}),await Mr({phase:"startSensitiveInstrumentation",...r});let i=await ufe(e);return Object.values(r.baseArtifacts.URL).every(Boolean)||(r.baseArtifacts.URL={requestedUrl:i.requestedUrl,mainDocumentUrl:i.mainDocumentUrl,finalDisplayedUrl:await e.driver.url()}),r.url=i.mainDocumentUrl,await Mr({phase:"stopSensitiveInstrumentation",...r}),await Mr({phase:"stopInstrumentation",...r}),await n(),await sfe(e),cfe(e,r,i)}async function pfe({requestedUrl:e,driver:t,resolvedConfig:r,lhBrowser:n,lhPage:i}){!r.settings.disableStorageReset&&e&&await Bh(t.defaultSession,e,r.settings.clearStorageTypes),await t.disconnect(),await i?.close(), -await n?.disconnect()}async function gF(e,t,r={}){let{flags:n={},config:i}=r;N.setLevel(n.logLevel||"error");let{resolvedConfig:a}=await Ai("navigation",i,n),o=new Map,u=typeof t=="function",l={resolvedConfig:a,computedCache:o},c=s(async()=>{let m=u?t:J.normalizeUrl(t),f,h;if(!e){let{hostname:T=ife,port:S=afe}=n;f=await wq.connect({browserURL:`http://${T}:${S}`,defaultViewport:null}),h=await f.newPage(),e=h}let b={driver:new Aa(e),lhBrowser:f,lhPage:h,page:e,resolvedConfig:a,requestor:m,computedCache:o},{baseArtifacts:w}=await ofe(b),E=await dfe({...b,baseArtifacts:w});return await pfe(b),Ou(w,E)},"gatherFn");return{artifacts:await nr.gather(c,l),runnerOptions:l}}var ife,afe,yF=g(()=>{"use strict";d();Dq();Ne();Mh();Ia();Lh();cF();Tq();lF();w1();Ru();Ph();ci();zt();ut();Fq();Ba();gn();at();ife="127.0.0.1",afe=9222;s(ofe,"_setup");s(sfe,"_cleanupNavigation");s(ufe,"_navigate");s(lfe,"_collectDebugData");s(cfe,"_computeNavigationResult");s(dfe,"_navigation");s(pfe,"_cleanup");s(gF,"navig\ -ationGather")});var mfe,gQe,kq=g(()=>{"use strict";d();Rh();sF();pF();yF();Ia();Ru();ci();nF();R();or();mfe={defaultFlowName:"User flow ({url})",defaultNavigationName:"Navigation report ({url})",defaultTimespanName:"Timespan report ({url})",defaultSnapshotName:"Snapshot report ({url})"},gQe=D("core/user-flow.js",mfe)});var DQe,_q=g(()=>{"use strict";d();or();wi();DQe={extends:"lighthouse:default",settings:{formFactor:"desktop",throttling:Ns.desktopDense4G,screenEmulation:l1.desktop,emulatedUserAgent:aa.desktop}}});async function ffe(e,t={},r,n){return vF(n,e,{config:r,flags:t})}async function vF(e,t,r){let n=await gF(e,t,r);return nr.audit(n.artifacts,n.runnerOptions)}async function Rq(e,t){let r=await oF(e,t);return nr.audit(r.artifacts,r.runnerOptions)}async function Iq(e,t){let{endTimespanGather:r}=await dF(e,t);return{endTimespan:s(async()=>{let i=await r();return nr.audit(i.artifacts,i.runnerOptions)},"endTimespan")}}var LQe,Aq,_h=g(()=>{"use strict";d();Ba();Ia();kq();Rh();pF();sF();yF();or();V();Ke();at();cw();_q();or();s(ffe,"lighthouse");s(vF,"navigation");s(Rq,"snapshot");s(Iq,"startTimespan");LQe=cn.getDefaultTraceCategories(),Aq=ffe});d();Vo();Ne();_h();R();ci();wi();I1();globalThis.Buffer=q;function hfe(e,t){let r={onlyCategories:e,screenEmulation:{disabled:!0},ignoreStatusCode:!0};return t==="desktop"&&(r.throttling=Ns.desktopDense4G,r.emulatedUserAgent=aa.desktop,r.formFactor="desktop"),{extends:"lighthouse:default",settings:r}}s(hfe,"createConfig");function gfe(e){N.events.addListener("status",e),N.events.addListener("warning",e)}s(gfe,"listenForStatus");function yfe(e){return vm(e,QI())}s(yfe,"lookupCanonicalLocale");typeof self<"u"?(globalThis.isDevtools=!0,self.navigation=vF,self.startTimespan=Iq,self.snapshot=Rq,self.createConfig=hfe,self.listenForStatus=gfe,self.registerLocaleData=tA,self.lookupLocale=yfe,self.thirdPartyWeb=ya):(globalThis.runBundledLighthouse=Aq,globalThis.thirdPartyWeb=ya);})(); + }`,warningCacheTimeout:"Clearing the browser cache timed out. Try auditing this page again and file a bug if the issue persists.",warningOriginDataTimeout:"Clearing the origin data timed out. Try auditing this page again and file a bug if the issue persists."},Wk=D("core/gather/driver/storage.js",qh);s(Hh,"clearDataForOrigin");s(Jq,"getImportantStorageWarning");s(Xq,"clearBrowserCaches")});async function Wh(e){let t=s(async()=>{await e.sendCommand("Debugger.enable"),await e.sendCommand("Debugger.setSkipAllPauses",{skip:!0}),await e.sendCommand("Debugger.setAsyncCallStackDepth",{maxDepth:8})},"enable");function n(){e.sendCommand("Debugger.resume")}s(n,"onDebuggerPaused");function r(a){a.frame.parentId||t().catch(o=>M.error("Driver",o))}return s(r,"onFrameNavigated"),e.on("Debugger.paused",n),e.on("Page.frameNavigated",r),await t(),async()=>{await e.sendCommandAndIgnore("Debugger.disable"),e.off("Debugger.paused",n),e.off("Page.frameNavigated",r)}}async function She(e,t){await e.executionContext.evaluateOnNewDocument(je.wrapRequestIdleCallback,{args:[t.throttling.cpuSlowdownMultiplier]})}async function Che(e){e.on("Page.javascriptDialogOpening",t=>{M.warn("Driver",`${t.type} dialog opened by the page automatically suppressed.`),e.sendCommand("Page.handleJavaScriptDialog",{accept:!0,promptText:"Lighthouse prompt response"}).catch(n=>M.warn("Driver",n))}),await e.sendCommand( +"Page.enable")}async function khe(e,t,n){let r=[],a=await Hh(e,t,n);r.push(...a);let o=await Xq(e);r.push(...o);let i=await Jq(e,t);return i&&r.push(i),{warnings:r}}async function Qq(e,t){let n={msg:"Preparing network conditions",id:"lh:gather:prepareThrottlingAndNetwork"};M.time(n),await tP(e,t);let r=t.blockedUrlPatterns||[];await e.sendCommand("Network.setBlockedURLs",{urls:r});let a=t.extraHeaders;a&&await e.sendCommand("Network.setExtraHTTPHeaders",{headers:a}),M.timeEnd(n)}async function eH(e,t){await e.defaultSession.sendCommand("Network.enable"),await T1(e.defaultSession,t)}async function tH(e,t){let n={msg:"Preparing target for timespan mode",id:"lh:prepare:timespanMode"};M.time(n),await eH(e,t),await Qq(e.defaultSession,t),await nH(e),M.timeEnd(n)}async function nH(e){await e.executionContext.evaluate(je.truncate,{args:["aaa",2]})}async function rH(e,t,n){let r={msg:"Preparing target for navigation mode",id:"lh:prepare:navigationMode"};M.time(r);let a=[];if(await eH(e,t),await Che( +e.defaultSession),await e.executionContext.cacheNativesOnNewDocument(),t.throttlingMethod==="simulate"&&await She(e,t),await nH(e),!t.disableStorageReset&&typeof n=="string"){let{warnings:i}=await khe(e.defaultSession,n,t.clearStorageTypes);a.push(...i)}return await Qq(e.defaultSession,t),M.timeEnd(r),{warnings:a}}var Vk=g(()=>{"use strict";d();Oe();Gk();S1();On();s(Wh,"enableAsyncStacks");s(She,"shimRequestIdleCallbackOnNewDocument");s(Che,"dismissJavaScriptDialogs");s(khe,"resetStorageForUrl");s(Qq,"prepareThrottlingAndNetwork");s(eH,"prepareDeviceEmulation");s(tH,"prepareTargetForTimespanMode");s(nH,"warmUpIntlSegmenter");s(rH,"prepareTargetForNavigationMode")});async function $k(e,t={}){let{flags:n={},config:r}=t;M.setLevel(n.logLevel||"error");let{resolvedConfig:a}=await ja("timespan",r,n),o=new Go(e);await o.connect();let i=new Map,c=a.artifacts||[],u=await Pc(a,o,{gatherMode:"timespan"}),l=Oc(),m={driver:o,page:e,artifactDefinitions:c,artifactState:l,baseArtifacts:u,computedCache:i,gatherMode:"timespan",settings:a.settings};await tH(o,a.settings);let p=!1;function f(){p=!0}s(f,"onFrameNavigated"),o.defaultSession.on("Page.frameNavigated",f);let h=await Wh(o.defaultSession);return await Un({phase:"startInstrumentation",...m}),await Un({phase:"startSensitiveInstrumentation",...m}),{async endTimespanGather(){let y=await o.url(),v={resolvedConfig:a,computedCache:i},w=s(async()=>{u.URL={finalDisplayedUrl:y},await Un({phase:"stopSensitiveInstrumentation",...m}),await Un({phase:"stopInstrumentation",...m}),await h(),o.defaultSession.off("Page.frameNavigated",f),p&&u.LighthouseRunWarnings.push(Rhe(aH.warningNavigationDetected)),await Un({phase:"ge\ +tArtifact",...m}),await o.disconnect();let E=await Lc(l);return Bc(u,E)},"gatherFn");return{artifacts:await dn.gather(w,v),runnerOptions:v}}}}var aH,Rhe,Yk=g(()=>{"use strict";d();Oe();Uh();Wo();jh();Vk();Ac();zh();A();aH={warningNavigationDetected:"A page navigation was detected during the run. Using timespan mode to audit page navigations is not recommended. Use navigation mode to audit page navigations for better third-party attribution and main thread detection."},Rhe=D("core/gather/timespan-runner.js",aH);s($k,"startTimespanGather")});var oH,iH=g(()=>{d();oH={}});function Nhe(e){let{pauseAfterFcpMs:t,pauseAfterLoadMs:n,networkQuietThresholdMs:r,cpuQuietThresholdMs:a}=e,o=e.maxWaitForLoad,i=e.maxWaitForFcp;return typeof t!="number"&&(t=Ihe),typeof n!="number"&&(n=Ahe),typeof r!="number"&&(r=_he),typeof a!="number"&&(a=Mhe),typeof o!="number"&&(o=tr.maxWaitForLoad),typeof i!="number"&&(i=tr.maxWaitForFcp),e.waitUntil.includes("fcp")||(i=void 0),{pauseAfterFcpMs:t,pauseAfterLoadMs:n,networkQuietThresholdMs:r,cpuQuietThresholdMs:a,maxWaitForLoadedMs:o,maxWaitForFcpMs:i}}async function Jk(e,t,n){let r=typeof t=="string"?{msg:`Navigating to ${t}`,id:"lh:driver:navigate"}:{msg:"Navigating using a user defined function",id:"lh:driver:navigate"};M.time(r);let a=e.defaultSession,o=e.networkMonitor;await a.sendCommand("Page.enable"),await a.sendCommand("Page.setLifecycleEventsEnabled",{enabled:!0});let i;typeof t=="string"?(a.setNextProtocolTimeout(1/0),i=a.sendCommand("Page.navigate",{url:t})):i=t();let c=n.waitUntil.includes("navigated"),u=n.waitUntil.includes( +"load"),l=n.waitUntil.includes("fcp"),m=[];if(c){let w=w1(a).promise;m.push(w.then(()=>({timedOut:!1})))}if(u){let w=Nhe(n);m.push(NL(a,o,w))}else if(l)throw new Error("Cannot wait for FCP without waiting for page load");let f=(await Promise.race([a.onCrashPromise(),Promise.all(m)])).some(w=>w.timedOut),h=await o.getNavigationUrls(),y=h.requestedUrl;if(typeof t=="string"&&(y&&!X.equalWithExcludedFragments(t,y)&&M.error("Navigation",`Provided URL (${t}) did not match initial navigation URL (${y})`),y=t),!y)throw Error("No navigations detected when running user defined requestor.");let v=h.mainDocumentUrl||y;return await i,n.debugNavigation&&await OL(e),M.timeEnd(r),{requestedUrl:y,mainDocumentUrl:v,warnings:Ohe({timedOut:f,mainDocumentUrl:v,requestedUrl:y})}}function Ohe(e){let{requestedUrl:t,mainDocumentUrl:n}=e,r=[];return e.timedOut&&r.push(sH(Kk.warningTimeout)),X.equalWithExcludedFragments(t,n)||r.push(sH(Kk.warningRedirected,{requested:t,final:n})),r}var Kk,sH,Ihe,Ahe,_he,Mhe,cH=g( +()=>{"use strict";d();Oe();D1();Fa();A();dt();Kk={warningRedirected:"The page may not be loading as expected because your test URL ({requested}) was redirected to {final}. Try testing the second URL directly.",warningTimeout:"The page loaded too slowly to finish within the time limit. Results may be incomplete."},sH=D("core/gather/driver/navigation.js",Kk),Ihe=0,Ahe=0,_he=5e3,Mhe=0;s(Nhe,"resolveWaitForFullyLoadedOptions");s(Jk,"gotoURL");s(Ohe,"getNavigationWarnings")});function Phe(e,t){if(e){if(e.failed){let n=e.localizedFailDescription;return n==="net::ERR_NAME_NOT_RESOLVED"||n==="net::ERR_NAME_RESOLUTION_FAILED"||n.startsWith("net::ERR_DNS_")?new q(q.errors.DNS_FAILURE):new q(q.errors.FAILED_DOCUMENT_REQUEST,{errorDetails:n})}else if(e.hasErrorStatusCode())if(t.ignoreStatusCode)t.warnings.push(uH(Xk.warningStatusCode,{errorCode:e.statusCode}));else return new q(q.errors.ERRORED_DOCUMENT_REQUEST,{statusCode:`${e.statusCode}`})}else return new q(q.errors.NO_DOCUMENT_REQUEST)}function Bhe(e,t){if(!(!e||!t.find(r=>r.documentURL.startsWith("chrome-error://")))&&e.failed)return e.localizedFailDescription.startsWith("net::ERR_CERT")?new q(q.errors.INSECURE_DOCUMENT_REQUEST,{securityMessages:e.localizedFailDescription}):new q(q.errors.CHROME_INTERSTITIAL_ERROR)}function Uhe(e){if(e&&!(!e.mimeType||e.statusCode===-1)&&e.mimeType!==Lhe&&e.mimeType!==lH)return new q(q.errors.NOT_HTML,{mimeType:e.mimeType})}function dH(e,t){let{url:n,networkRecords:r}=t,a=ct. +NetworkAnalyzer.findResourceForUrl(r,n);if(!a){let l=r.filter(m=>m.resourceType===K.TYPES.Document);l.length&&(a=l.reduce((m,p)=>p.networkRequestTime<m.networkRequestTime?p:m))}let o;if(a)o=ct.NetworkAnalyzer.resolveRedirects(a);else return e;o?.mimeType===lH&&t.warnings.push(uH(Xk.warningXhtml));let i=Phe(a,t),c=Bhe(a,r),u=Uhe(o);return c||i||u||e}var Xk,uH,Lhe,lH,mH=g(()=>{"use strict";d();Mt();Wt();Bt();A();Xk={warningXhtml:"The page MIME type is XHTML: Lighthouse does not explicitly support this document type",warningStatusCode:"Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Status code: {errorCode})"},uH=D("core/lib/navigation-error.js",Xk),Lhe="text/html",lH="application/xhtml+xml";s(Phe,"getNetworkError");s(Bhe,"getInterstitialError");s(Uhe,"getNonHtmlError");s(dH,"getPageLoadError")});async function qhe({driver:e,resolvedConfig:t,requestor:n}){await e.connect(),typeof n=="string"&&!t.settings.skipAboutBlank&&(await e._networkMonitor?.disable(),await Jk(e,t.settings.blankPage,{waitUntil:["navigated"]}),await e._networkMonitor?.enable());let r=await Pc(t,e,{gatherMode:"navigation"}),{warnings:a}=await rH(e,t.settings,n);return r.LighthouseRunWarnings.push(...a),{baseArtifacts:r}}async function Hhe({driver:e}){await nP(e.defaultSession)}async function Whe(e){let{driver:t,resolvedConfig:n,requestor:r}=e;try{let{requestedUrl:a,mainDocumentUrl:o,warnings:i}=await Jk(t,r,{...n.settings,waitUntil:n.settings.pauseAfterFcpMs?["fcp","load"]:["load"]});return e.baseArtifacts.LighthouseRunWarnings.push(...i),{requestedUrl:a,mainDocumentUrl:o,navigationError:void 0}}catch(a){if(!(a instanceof q)||a.code!=="NO_FCP"&&a.code!=="PAGE_HUNG"&&a.code!=="TARGET_CRASHED"||typeof r!="string")throw a;return{requestedUrl:r,mainDocumentUrl:r,navigationError:a}}}async function Ghe(e,t){let n,r; +for(let o of t.artifactDefinitions){let{instance:i}=o.gatherer;i instanceof Kt?n=i.getDebugData():i instanceof yr&&(r=i.getDebugData())}let a=n&&await oe.request(n,e);return{devtoolsLog:n,records:a,trace:r}}async function Vhe(e,t,n){let{navigationError:r,requestedUrl:a,mainDocumentUrl:o}=n,i=await Ghe(e,t),c=i.records?dH(r,{url:o,ignoreStatusCode:e.resolvedConfig.settings.ignoreStatusCode,networkRecords:i.records,warnings:e.baseArtifacts.LighthouseRunWarnings}):r;if(c){let u=e.resolvedConfig.settings.locale,l=ii(c.friendlyMessage,u);M.error("NavigationRunner",l,a);let m={},p="pageLoadError-defaultPass";return i.devtoolsLog&&(m.DevtoolsLogError=i.devtoolsLog,m.devtoolsLogs={[p]:i.devtoolsLog}),i.trace&&(m.TraceError=i.trace,m.traces={[p]:i.trace}),e.baseArtifacts.LighthouseRunWarnings.push(c.friendlyMessage),e.baseArtifacts.PageLoadError=c,m}else return await Un({phase:"getArtifact",...t}),await Lc(t.artifactState)}async function $he(e){if(!e.resolvedConfig.artifacts)throw new Error("No\ + artifacts were defined on the config");let t=Oc(),n={url:await e.driver.url(),gatherMode:"navigation",driver:e.driver,page:e.page,computedCache:e.computedCache,artifactDefinitions:e.resolvedConfig.artifacts,artifactState:t,baseArtifacts:e.baseArtifacts,settings:e.resolvedConfig.settings},r=await Wh(e.driver.defaultSession);await Un({phase:"startInstrumentation",...n}),await Un({phase:"startSensitiveInstrumentation",...n});let a=await Whe(e);return Object.values(n.baseArtifacts.URL).every(Boolean)||(n.baseArtifacts.URL={requestedUrl:a.requestedUrl,mainDocumentUrl:a.mainDocumentUrl,finalDisplayedUrl:await e.driver.url()}),n.url=a.mainDocumentUrl,await Un({phase:"stopSensitiveInstrumentation",...n}),await Un({phase:"stopInstrumentation",...n}),await r(),await Hhe(e),Vhe(e,n,a)}async function Yhe({requestedUrl:e,driver:t,resolvedConfig:n,lhBrowser:r,lhPage:a}){!n.settings.disableStorageReset&&e&&await Hh(t.defaultSession,e,n.settings.clearStorageTypes),await t.disconnect(),await a?.close(), +await r?.disconnect()}async function Zk(e,t,n={}){let{flags:r={},config:a}=n;M.setLevel(r.logLevel||"error");let{resolvedConfig:o}=await ja("navigation",a,r),i=new Map,c=typeof t=="function",u={resolvedConfig:o,computedCache:i},l=s(async()=>{let p=c?t:X.normalizeUrl(t),f,h;if(!e){let{hostname:E=jhe,port:S=zhe}=r;f=await oH.connect({browserURL:`http://${E}:${S}`,defaultViewport:null}),h=await f.newPage(),e=h}let v={driver:new Go(e),lhBrowser:f,lhPage:h,page:e,resolvedConfig:o,requestor:p,computedCache:i},{baseArtifacts:w}=await qhe(v),x=await $he({...v,baseArtifacts:w});return await Yhe(v),Bc(w,x)},"gatherFn");return{artifacts:await dn.gather(l,u),runnerOptions:u}}var jhe,zhe,Qk=g(()=>{"use strict";d();iH();Oe();Uh();Wo();jh();Vk();cH();Gk();S1();Ac();zh();va();Wt();dt();mH();Xo();Tr();ut();jhe="127.0.0.1",zhe=9222;s(qhe,"_setup");s(Hhe,"_cleanupNavigation");s(Whe,"_navigate");s(Ghe,"_collectDebugData");s(Vhe,"_computeNavigationResult");s($he,"_navigation");s(Yhe,"_cleanup");s(Zk,"navig\ +ationGather")});var Khe,Wnt,pH=g(()=>{"use strict";d();Oh();Hk();Yk();Qk();Wo();Ac();va();Uk();A();hn();Khe={defaultFlowName:"User flow ({url})",defaultNavigationName:"Navigation report ({url})",defaultTimespanName:"Timespan report ({url})",defaultSnapshotName:"Snapshot report ({url})"},Wnt=D("core/user-flow.js",Khe)});var Knt,fH=g(()=>{"use strict";d();hn();Fa();Knt={extends:"lighthouse:default",settings:{formFactor:"desktop",throttling:Ns.desktopDense4G,screenEmulation:f1.desktop,emulatedUserAgent:yo.desktop}}});async function Jhe(e,t={},n,r){return eF(r,e,{config:n,flags:t})}async function eF(e,t,n){let r=await Zk(e,t,n);return dn.audit(r.artifacts,r.runnerOptions)}async function hH(e,t){let n=await qk(e,t);return dn.audit(n.artifacts,n.runnerOptions)}async function gH(e,t){let{endTimespanGather:n}=await $k(e,t);return{endTimespan:s(async()=>{let a=await n();return dn.audit(a.artifacts,a.runnerOptions)},"endTimespan")}}var urt,yH,Nh=g(()=>{"use strict";d();Xo();Wo();pH();Oh();Yk();Hk();Qk();hn();V();Ke();ut();Ww();fH();hn();s(Jhe,"lighthouse");s(eF,"navigation");s(hH,"snapshot");s(gH,"startTimespan");urt=yr.getDefaultTraceCategories(),yH=Jhe});d();Xi();Oe();Nh();A();va();Fa();L1();globalThis.Buffer=z;function Xhe(e,t){let n={onlyCategories:e,screenEmulation:{disabled:!0},ignoreStatusCode:!0};return t==="desktop"&&(n.throttling=Ns.desktopDense4G,n.emulatedUserAgent=yo.desktop,n.formFactor="desktop"),{extends:"lighthouse:default",settings:n}}s(Xhe,"createConfig");function Zhe(e){M.events.addListener("status",e),M.events.addListener("warning",e)}s(Zhe,"listenForStatus");function Qhe(e){return Dp(e,O_())}s(Qhe,"lookupCanonicalLocale");typeof self<"u"?(globalThis.isDevtools=!0,self.navigation=eF,self.startTimespan=gH,self.snapshot=hH,self.createConfig=Xhe,self.listenForStatus=Zhe,self.registerLocaleData=P_,self.lookupLocale=Qhe,self.thirdPartyWeb=Ro):(globalThis.runBundledLighthouse=yH,globalThis.thirdPartyWeb=Ro);})(); /*! * The buffer module from node.js, for the browser. *
diff --git a/front_end/third_party/lighthouse/locales/ar-XB.json b/front_end/third_party/lighthouse/locales/ar-XB.json index cd28f42..232b827 100644 --- a/front_end/third_party/lighthouse/locales/ar-XB.json +++ b/front_end/third_party/lighthouse/locales/ar-XB.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse User Flow Report" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "تحدث تغييرات التصميم عندما تتحرك العناصر بدون أي تدخُّل من المستخدم. [تحقَّق من أسباب تغييرات التصميم](https://web.dev/articles/optimize-cls)، مثل إضافة عناصر أو إزالتها أو تغيير خطوطها أثناء تحميل الصفحة." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "أسباب تغييرات التصميم" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "وقت الاستجابة لطلب المستند" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "يمكنك ضبط [font-display](https://developer.chrome.com/blog/font-display) على swap أو optional لضمان ظهور النص بشكل ثابت. ويمكن تحسين swap بشكل أكبر للتخفيف من تغييرات التصميم باستخدام [إجراءات تجاوز مقاييس الخطوط](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "عرض الخط" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "ابدأ بالتحقيق في المرحلة الأطول. [يمكن تقليل التأخيرات](https://web.dev/articles/optimize-inp#optimize_interactions). ولتقليل مدة المعالجة، [حسِّن تكاليف سلسلة التعليمات الرئيسية](https://web.dev/articles/optimize-long-tasks)، والتي تكون في الغالب بيانات JavaScript." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "مدى استجابة الصفحة لتفاعلات المستخدم (INP) حسب المرحلة" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "يمكنك تحسين مقياس سرعة عرض أكبر محتوى مرئي (LCP) من خلال جعل صورة مقياس LCP [قابلة للاكتشاف](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) من HTML على الفور، و[تجنُّب التحميل الكسول](https://web.dev/articles/lcp-lazy-loading)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "الاطّلاع على طلبات LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "لكل [مرحلة استراتيجيات تحسين محدَّدة](https://web.dev/articles/optimize-lcp#lcp-breakdown). ومن الأفضل أن يتم قضاء معظم وقت سرعة عرض أكبر محتوى مرئي (LCP) في تحميل الموارد، وليس في التأخيرات." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "سرعة عرض أكبر محتوى مرئي (LCP) حسب المرحلة" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "تؤدي الطلبات إلى حظر العرض الأوّلي للصفحة، ما قد يُبطئ سرعة عرض أكبر محتوى مرئي (LCP). ويمكن [تأجيل هذه الطلبات](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) أو تضمينها لإخراجها من المسار الحرج." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "طلبات حظر العرض" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "إذا ظلت تكاليف ميزة \"إعادة احتساب النمط\" مرتفعة، يمكن أن يؤدي تحسين أداة الاختيار إلى خفضها. يمكنك [تحسين أدوات الاختيار](https://developer.chrome.com/docs/devtools/performance/selector-stats) من خلال زيادة الوقت المنقضي وزيادة النسبة المئوية للمسار البطيء. وسيؤدي استخدام أدوات الاختيار الأبسط وعدد أدوات الاختيار الأقل ونموذج DOM الأصغر ونموذج DOM الأقل تعقيدًا إلى تقليل تكاليف المطابقة." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "تكاليف أداة اختيار لغة CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "يمكن أن يؤثر الرمز البرمجي التابع لجهة خارجية بشكل كبير في أداء التحميل. [يمكنك تقليل تحميل الرموز البرمجية التابعة لجهات خارجية وتأجيله](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)، ومنح الأولوية لمحتوى صفحتك." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "الجهات الخارجية" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "إنّ إطار عرض الصفحة غير محسّن للأجهزة الجوّالة، لذا قد يتم [تأخير التفاعلات التي تتم من خلال النقر بمقدار 300 ملي ثانية على الأكثر](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "إطار العرض غير محسَّن للأجهزة الجوّالة" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage when the content is offscreen." },
diff --git a/front_end/third_party/lighthouse/locales/ar.json b/front_end/third_party/lighthouse/locales/ar.json index ab350b0..c782d2b 100644 --- a/front_end/third_party/lighthouse/locales/ar.json +++ b/front_end/third_party/lighthouse/locales/ar.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "تقرير تدفق المستخدمين في أداة Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "تحدث تغييرات التصميم عندما تتحرك العناصر بدون أي تدخُّل من المستخدم. [تحقَّق من أسباب تغييرات التصميم](https://web.dev/articles/optimize-cls)، مثل إضافة عناصر أو إزالتها أو تغيير خطوطها أثناء تحميل الصفحة." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "أسباب تغييرات التصميم" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "وقت الاستجابة لطلب المستند" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "يمكنك ضبط [font-display](https://developer.chrome.com/blog/font-display) على swap أو optional لضمان ظهور النص بشكل ثابت. ويمكن تحسين swap بشكل أكبر للتخفيف من تغييرات التصميم باستخدام [إجراءات تجاوز مقاييس الخطوط](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "عرض الخط" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "ابدأ بالتحقيق في المرحلة الأطول. [يمكن تقليل التأخيرات](https://web.dev/articles/optimize-inp#optimize_interactions). ولتقليل مدة المعالجة، [حسِّن تكاليف سلسلة التعليمات الرئيسية](https://web.dev/articles/optimize-long-tasks)، والتي تكون في الغالب بيانات JavaScript." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "مدى استجابة الصفحة لتفاعلات المستخدم (INP) حسب المرحلة" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "يمكنك تحسين مقياس سرعة عرض أكبر محتوى مرئي (LCP) من خلال جعل صورة مقياس LCP [قابلة للاكتشاف](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) من HTML على الفور، و[تجنُّب التحميل الكسول](https://web.dev/articles/lcp-lazy-loading)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "الاطّلاع على طلبات LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "لكل [مرحلة استراتيجيات تحسين محدَّدة](https://web.dev/articles/optimize-lcp#lcp-breakdown). ومن الأفضل أن يتم قضاء معظم وقت سرعة عرض أكبر محتوى مرئي (LCP) في تحميل الموارد، وليس في التأخيرات." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "سرعة عرض أكبر محتوى مرئي (LCP) حسب المرحلة" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "تؤدي الطلبات إلى حظر العرض الأوّلي للصفحة، ما قد يُبطئ سرعة عرض أكبر محتوى مرئي (LCP). ويمكن [تأجيل هذه الطلبات](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) أو تضمينها لإخراجها من المسار الحرج." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "طلبات حظر العرض" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "إذا ظلت تكاليف ميزة \"إعادة احتساب النمط\" مرتفعة، يمكن أن يؤدي تحسين أداة الاختيار إلى خفضها. يمكنك [تحسين أدوات الاختيار](https://developer.chrome.com/docs/devtools/performance/selector-stats) من خلال زيادة الوقت المنقضي وزيادة النسبة المئوية للمسار البطيء. وسيؤدي استخدام أدوات الاختيار الأبسط وعدد أدوات الاختيار الأقل ونموذج DOM الأصغر ونموذج DOM الأقل تعقيدًا إلى تقليل تكاليف المطابقة." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "تكاليف أداة اختيار لغة CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "يمكن أن يؤثر الرمز البرمجي التابع لجهة خارجية بشكل كبير في أداء التحميل. [يمكنك تقليل تحميل الرموز البرمجية التابعة لجهات خارجية وتأجيله](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)، ومنح الأولوية لمحتوى صفحتك." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "الجهات الخارجية" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "إنّ إطار عرض الصفحة غير محسّن للأجهزة الجوّالة، لذا قد يتم [تأخير التفاعلات التي تتم من خلال النقر بمقدار 300 ملي ثانية على الأكثر](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "إطار العرض غير محسَّن للأجهزة الجوّالة" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "بالنسبة إلى المحتوى الذي يتضمن صورًا متحركة، يمكنك استخدام [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) لتقليل استخدام وحدة المعالجة المركزية (CPU) عندما يكون المحتوى خارج الشاشة." },
diff --git a/front_end/third_party/lighthouse/locales/bg.json b/front_end/third_party/lighthouse/locales/bg.json index a38357e..e21675a 100644 --- a/front_end/third_party/lighthouse/locales/bg.json +++ b/front_end/third_party/lighthouse/locales/bg.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Отчет на Lighthouse за потребителската навигация" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Структурни промени настъпват, когато елементите се преместват без взаимодействие от страна на потребителя. [Проучете причините за структурните промени](https://web.dev/articles/optimize-cls), като например добавяне или премахване на елементи или промяна на шрифтовете им при зареждане на страницата." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Причинители на структурни промени" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Първата мрежова заявка е най-важна. Намалете забавянето ѝ, като избягвате пренасочвания, осигурявате бърз отговор от сървъра и активирате компресирането на текста." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Забавяне на заявката за документ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Добре е да зададете swap или optional за [font-display](https://developer.chrome.com/blog/font-display), така че текстът да е постоянно видим. swap може да се оптимизира допълнително чрез [замяна на метриките на шрифта](https://developer.chrome.com/blog/font-fallbacks), за да се намалят разместванията в оформлението." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Показване на шрифта" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Започнете проверката от най-продължителната фаза. [Забавянията могат да бъдат сведени до минимум](https://web.dev/articles/optimize-inp#optimize_interactions). За да ускорите обработката, [оптимизирайте работата на основната нишка](https://web.dev/articles/optimize-long-tasks), която често е JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP по фаза" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Оптимизирайте LCP, като направите изображението, представляващо LCP, незабавно [откриваемо](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) в HTML кода и [избягвате забавеното зареждане](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Откриване на заявките за LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "За всяка [фаза има конкретни стратегии за подобряване](https://web.dev/articles/optimize-lcp#lcp-breakdown). В идеалния случай по-голямата част от времето за LCP трябва да премине в зареждане на ресурсите, а не да е свързана със забавяния." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP по фаза" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Заявки блокират първоначалното рендериране на страницата, което може да забави LCP. Тези заявки могат да бъдат преместени извън критичния път чрез [отлагане или вграждане](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Заявки за блокиране на рендерирането" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ако преизчисляването на стиловете продължава да отнема дълго време, оптимизирането на селекторите може да намали забавянето. [Оптимизирайте селекторите](https://developer.chrome.com/docs/devtools/performance/selector-stats), които отнемат повече време и имат по-голям процент несъответствия с бавен път. Опростяването на селекторите и намаляването на броя им, както и намаляването на размера и дълбочината на DOM ще ускорят намирането на съответствия." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Бавни CSS селектори" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Кодът от трети страни може сериозно да повлияе върху скоростта на зареждане. [Намалете и отложете зареждането на кода от трети страни](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), за да приоритизирате съдържанието на страницата си." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Трети страни" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Прозоречният изглед на страницата не е оптимизиран за мобилни устройства, така че при взаимодействията с докосване може да има [забавяне до 300 мсек](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Прозоречният изглед не е оптимизиран за мобилни устройства" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "При анимирано съдържание използвайте маркера [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), за да намалите използването на процесора, когато съдържанието е извън екрана." }, @@ -2658,55 +2718,55 @@ "message": "За да управлявате граничните точки за изображенията, бихте могли да използвате инструмента `BreakpointObserver` в Component Dev Kit (CDK). [Научете повече](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Добре е да качите своя `GIF` в услуга, която ще даде възможност да бъде вграден като видеоклип с HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Можете да конфигурирате на сайта си [графичните формати WebP със стил за ограничаване на възможността за преобразуване](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Добре е да конфигурирате метода за забавено зареждане на изображенията в `Drupal`. Инструментите за форматиране на полетата за изображения трябва да поддържат `lazy` или `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Ако най-големият елемент се добавя динамично към страницата, трябва да оптимизирате изображението, за да подобрите LCP. [Научете повече](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Пренасочванията водят до допълнително забавяне на зареждането на страницата. Ако модулът за [пренасочване](https://www.drupal.org/project/redirect) е инсталиран, проверете дали ненужните пренасочвания могат да бъдат премахнати. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Добре е да използвате [модул](https://www.drupal.org/project/critical_css) за вграждане на важния CSS и JavaScript код и да отложите зареждането на второстепенните елементи на CSS или JavaScript чрез атрибута defer." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Прехвърлете трафик с помощта на един или повече модули за кеширане на `Drupal`, като например `Internal Page Cache`, `Internal Dynamic Page Cache` и `BigPipe`. Комбинирайте ги със CDN, за да подобрите още повече времето за отговор. Сървърите ви за хостинг трябва да използват PHP OPcache. Бихте могли да използвате кеширане в паметта чрез решения като Redis или Memcached, за да се намали времето за изпълнение на заявките към базата от данни. И накрая, използвайте ефективни теми, модули и по-бързи сървъри, за да намалите времето за отговор на сървъра." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Бихте могли да използвате [стилове за адаптивни изображения](https://www.drupal.org/documentation/modules/responsive_image), за да намалите размера на графичните файлове, зареждани на страницата ви. Ако си служите с `Views`, за да показвате няколко елемента със съдържание на една страница, можете да внедрите функция за страниране, за да ограничите броя елементи, които да се извеждат на страница." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Трябва да активирате опцията Aggregate CSS files на страницата Administration » Configuration » Development." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Трябва да активирате опцията Aggregate JavaScript files на страницата Administration » Configuration » Development." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Бихте могли да премахнете неизползваните правила на CSS и да добавите само необходимите библиотеки на `Drupal` към съответната страница или компонент в нея. За подробности вижте [документацията на `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). За да откриете включените библиотеки, които добавят ненужен CSS код, стартирайте инструмента за [обхват на кода](https://developer.chrome.com/docs/devtools/coverage) в Chrome DevTools. Можете да намерите проблемните тема или модул в URL адреса на стиловия лист, когато агрегирането на CSS е деактивирано в сайта ви на `Drupal`. Търсете теми/модули с много стилови листове в списъка, за които преобладава червеният цвят в диаграмата на инструмента. Тема или модул трябва да прикачват библиотека със стилови листове само ако тя действително се използва на страницата." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Бихте могли да премахнете неизползваните активи на JavaScript и да добавите само необходимите библиотеки на `Drupal` към съответната страница или компонент в нея. За подробности вижте [документацията на Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). За да откриете включените библиотеки, които добавят ненужен JavaScript код, стартирайте инструмента за [обхват на кода](https://developer.chrome.com/docs/devtools/coverage) в Chrome DevTools. Можете да намерите проблемните тема или модул в URL адреса на скрипта, когато агрегирането на JavaScript е деактивирано в сайта ви на `Drupal`. Търсете теми/модули с много скриптове в списъка, за които преобладава червеният цвят в диаграмата на инструмента. Тема или модул трябва да прикачват библиотека със скриптове само ако тя действително се използва на страницата." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Задайте опцията Browser and proxy cache maximum age на страницата Administration » Configuration » Development. Прочетете за [кеша в `Drupal` и оптимизирането с цел повишаване на ефективността](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Бихте могли да използвате [модул](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), който автоматично оптимизира и намалява размера на качваните чрез сайта изображения, като същевременно запазва качеството им. Също така трябва да използвате стандартните [стилове за адаптивни изображения](https://www.drupal.org/documentation/modules/responsive_image), предоставени от `Drupal`, за всички графични файлове, рендерирани на сайта." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Можете да добавите подсказки за ресурси `Preconnect` или `dns-prefetch`, като инсталирате и конфигурирате [модул](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), който дава възможност за използване на такива подсказки за потребителски агенти." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Трябва да използвате стандартните [стилове за адаптивни изображения](https://www.drupal.org/documentation/modules/responsive_image), предоставени от `Drupal`. Прилагайте тези стилове при рендериране на графични полета посредством режими на преглед, изгледи или изображения, качени чрез WYSIWYG редактора." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "При показването на текстови ресурси трябва да се използва компресиране (gzip, deflate или brotli), за да се намали общият пренос на данни. Бихте могли да използвате CDN, която поддържа това по подразбиране, или да конфигурирате уеб сървъра така, че да изпълнява тази операция. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Използвайте [Ezoic Leap](https://pubdash.ezoic.com/speed) и активирайте `Optimize Fonts`, за да се възползвате автоматично от функцията `font-display` на CSS, така че текстът да е видим за потребителите, докато уеб шрифтовете се зареждат." @@ -3036,7 +3096,7 @@ "message": "Има различни приставки за WordPress, с чиято помощ можете [да вградите важни активи](https://wordpress.org/plugins/search/critical+css/) или [да отложите зареждането на не толкова важни ресурси](https://wordpress.org/plugins/search/defer+css+javascript/). Имайте предвид, че оптимизациите, извършвани чрез тези приставки, може да възпрепятстват работата на функциите на темата ви или други приставки, така че вероятно ще се наложи да промените кода." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Изберете олекотена тема (в идеалния случай такава с блокове) и внедрете пълно кеширане на страницата или решение за статичен сайт. Деактивирайте ненужните приставки, за да намалите използваните от сървъра ресурси. Добре е да надстроите услугата си за хостинг си до управлявана или специализирана." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Обмислете възможността да показвате извадки в списъците си с публикации (напр. чрез маркера more), да намалите броя на публикациите, извеждани на дадена страница, да разделите дългите публикации на няколко страници или да използвате приставка, която да забави зареждането на коментарите."
diff --git a/front_end/third_party/lighthouse/locales/ca.json b/front_end/third_party/lighthouse/locales/ca.json index c98b5bd..2a2f098 100644 --- a/front_end/third_party/lighthouse/locales/ca.json +++ b/front_end/third_party/lighthouse/locales/ca.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Informe del flux d'usuaris de Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Els canvis de disseny es produeixen quan es mouen elements sense que l'usuari hi interaccioni. [Investiga les causes dels canvis de disseny](https://web.dev/articles/optimize-cls), com ara que s'afegeixin elements, se'n suprimeixin o se'n canviï la font a mesura que es carrega la pàgina." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Causants del canvi de disseny" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "La primera sol·licitud de xarxa és la més important. Per reduir-ne la latència, evita les redireccions, assegura't que el servidor respongui amb rapidesa i activa la compressió de text." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latència de la sol·licitud del document" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Prova d'establir [font-display](https://developer.chrome.com/blog/font-display) en swap o optional per assegurar-te que el text es vegi de manera coherent. swap es pot optimitzar encara més per mitigar els canvis de disseny amb [anul·lacions de mètriques de fonts](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Visualització de la font" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Comença a investigar amb la fase més llarga. [Els retards es poden minimitzar](https://web.dev/articles/optimize-inp#optimize_interactions). Per reduir la durada del processament, [optimitza els costos del fil principal](https://web.dev/articles/optimize-long-tasks), sovint JavaScript." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP per fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimitza l'LCP fent que la imatge LCP sigui [detectable](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) immediatament des de l'HTML i [evitant la càrrega lenta](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Detecció de sol·licituds d'LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Cada [fase té estratègies de millora específiques](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealment, la majoria del temps de l'LCP s'hauria de dedicar a carregar els recursos, i no hauria de consistir en retards." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP per fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Les sol·licituds estan bloquejant la renderització inicial de la pàgina, cosa que pot retardar l'LCP. [Ajornar o inserir](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) pot treure aquestes sol·licituds de xarxa del camí crític." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Sol·licituds de bloqueig de la renderització" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Si els costos de Torna a calcular l'estil continuen sent alts, es poden reduir optimitzant els selectors. [Optimitza els selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats) en què el temps transcorregut i el percentatge de camí lent siguin elevats. Els costos de coincidència es poden reduir utilitzant selectors més senzills, un menor nombre de selectors, un DOM més petit i un DOM més superficial." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Costos del selector CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "El codi de tercers pot afectar significativament el rendiment de la càrrega. [Redueix i ajorna la càrrega de codi de tercers](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) per prioritzar el contingut de la pàgina." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Tercers" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "La finestra gràfica de la pàgina no està optimitzada per a mòbils, de manera que les interaccions amb tocs poden [retardar-se fins a 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "La finestra gràfica no està optimitzada per a mòbils" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "En el cas de contingut animat, fes servir [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) per minimitzar l'ús de la CPU quan el contingut és fora de la pantalla." }, @@ -2658,55 +2718,55 @@ "message": "Pots optar per fer servir la utilitat `BreakpointObserver` del Component Dev Kit (CDK) per gestionar els punts de ruptura de la imatge. [Obtén més informació](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Pots penjar el `GIF` en un servei que permeti inserir-lo com un vídeo HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Planteja't la possibilitat de configurar [formats d'imatge WebP amb un estil d'imatge Convert](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) al teu lloc web." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Pots configurar la càrrega lenta d'imatges a `Drupal`. Els formatejadors de camps per a imatges admeten la càrrega `lazy` o `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Si l'element LCP s'afegeix dinàmicament a la pàgina, has d'optimitzar la imatge per poder millorar l'LCP. [Obtén més informació](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "La mètrica Redireccions introdueix retards addicionals abans de poder carregar la pàgina. Si el mòdul [Redirecció](https://www.drupal.org/project/redirect) està instal·lat, revisa si es poden suprimir les redireccions innecessàries. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Pots utilitzar [un mòdul](https://www.drupal.org/project/critical_css) per inserir fitxers JavaScript i CSS essencials. Fes servir l'atribut d'ajornament per a fitxers JavaScript o CSS que no siguin essencials." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Redueix el trànsit amb un o més mòduls de memòria cau de `Drupal`, com ara `Internal Page Cache`, `Internal Dynamic Page Cache` i `BigPipe`. Combina'ls amb una CDN per millorar encara més el temps de resposta. Els servidors d'allotjament han d'utilitzar PHP OPcache. Prova de fer servir la memòria cau, com ara Redis o Memcached, per reduir els temps de consulta de la base de dades. Finalment, utilitza temes, mòduls i servidors més ràpids d'alt rendiment per reduir el temps de resposta del servidor." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Pots utilitzar [estils d'imatges responsives](https://www.drupal.org/documentation/modules/responsive_image) per reduir la mida de les imatges que carregues a la pàgina. Si utilitzes `Views` per mostrar diversos elements de contingut en una pàgina, pots implementar paginació per limitar el nombre d'elements de contingut que es mostren en una pàgina determinada." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Comprova que hagis activat Aggregate CSS files (Fitxers CSS agregats) a la pàgina Administration » Configuration » Development (Administració » Configuració » Desenvolupament)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Comprova que hagis activat Aggregate JavaScript files (Fitxers JavaScript agregats) a la pàgina Administration » Configuration » Development (Administració » Configuració » Desenvolupament)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Pots suprimir les regles de CSS no utilitzades i adjuntar només les biblioteques de `Drupal` necessàries a la pàgina o al component rellevants d'una pàgina. Per obtenir més informació, consulta la [documentació de `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Per identificar les biblioteques adjuntes que afegeixen fitxers CSS externs, prova d'executar la [cobertura del codi](https://developer.chrome.com/docs/devtools/coverage) a Chrome DevTools. Pots identificar el tema o el mòdul responsables a partir de l'URL del full d'estil quan l'agregació de CSS estigui desactivada al teu lloc web de `Drupal`. Posa atenció als temes o mòduls que tinguin molts fulls d'estil a la llista amb molt de vermell a la cobertura del codi. Un tema o mòdul només hauria d'adjuntar una biblioteca de fulls d'estil si es fa servir a la pàgina." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Pots suprimir els recursos de JavaScript no utilitzats i adjuntar només les biblioteques de `Drupal` necessàries a la pàgina o al component rellevants d'una pàgina. Per obtenir més informació, consulta la [documentació de Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Per identificar les biblioteques adjuntes que afegeixen fitxers JavaScript externs, prova d'executar la [cobertura del codi](https://developer.chrome.com/docs/devtools/coverage) a Chrome DevTools. Pots identificar el tema o el mòdul responsables a partir de l'URL de l'script quan l'agregació de JavaScript estigui desactivada al teu lloc web de `Drupal`. Posa atenció als temes o mòduls que tinguin molts scripts a la llista amb molt de vermell a la cobertura del codi. Un tema o mòdul només hauria d'adjuntar una biblioteca de scripts si es fa servir a la pàgina." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Defineix l'opció Browser and proxy cache maximum age (Antiguitat màxima de la memòria cau del navegador i del servidor intermediari) a la pàgina Administration » Configuration » Development (Administració » Configuració » Desenvolupament). Obtén informació sobre [l'optimització per a un bon rendiment i la memòria cau de `Drupal`](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Pots utilitzar [un mòdul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) que optimitzi i redueixi automàticament la mida de les imatges penjades a través del lloc web sense perdre qualitat. A més, comprova que estiguis utilitzant els [estils d'imatges responsives](https://www.drupal.org/documentation/modules/responsive_image) natius proporcionats per `Drupal` en totes les imatges renderitzades al lloc web." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Es poden afegir suggeriments de recursos amb `Preconnect` o `dns-prefetch` instal·lant i configurant [un mòdul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) que proporcioni elements per als suggeriments dels recursos d'agent d'usuari." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Comprova que estiguis utilitzant els [estils d'imatges responsives](https://www.drupal.org/documentation/modules/responsive_image) natius proporcionats per `Drupal`. Utilitza els estils d'imatges responsives per renderitzar camps d'imatge mitjançant modes de visualització, visualitzacions o imatges penjades amb l'editor WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Els recursos basats en text s'han de publicar comprimits (gzip, deflate o brotli) per minimitzar el total de bytes a la xarxa. Pots utilitzar una CDN que admeti aquesta funció de manera nativa o configurar el servidor web perquè dugui a terme aquesta operació. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Utilitza [Ezoic Leap](https://pubdash.ezoic.com/speed) i activa `Optimize Fonts` per aprofitar automàticament la funció CSS `font-display` per assegurar-te que els usuaris poden veure el text mentre els tipus de lletra per a llocs web es carreguen." @@ -3036,7 +3096,7 @@ "message": "Hi ha diversos connectors de WordPress que et poden ajudar a [inserir recursos essencials](https://wordpress.org/plugins/search/critical+css/) o a [ajornar els recursos menys importants](https://wordpress.org/plugins/search/defer+css+javascript/). Tingues en compte que les optimitzacions que proporcionen aquests connectors poden afectar les funcions del tema o dels connectors, de manera que és possible que hagis de fer canvis al codi." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Tria un tema lleuger (si pot ser, un tema de blocs) i implementa la memòria cau de pàgines completes o una solució de llocs webs estàtics. Desactiva els connectors innecessaris per minimitzar el temps de càrrega del servidor. Pots actualitzar l'allotjament a un servei gestionat o dedicat." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Pots mostrar extractes a les llistes de publicacions (per exemple, amb l'etiqueta més), reduir el nombre de publicacions que es mostren en una pàgina concreta, tallar les publicacions llargues en diverses pàgines o fer servir un connector per als comentaris de càrrega diferida."
diff --git a/front_end/third_party/lighthouse/locales/cs.json b/front_end/third_party/lighthouse/locales/cs.json index a163f8d..8b6fff8 100644 --- a/front_end/third_party/lighthouse/locales/cs.json +++ b/front_end/third_party/lighthouse/locales/cs.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Přehled toku uživatelů služby Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Ke změnám rozvržení dochází, když se prvky přesouvají bez interakce uživatele. [Prozkoumejte příčiny změn rozvržení](https://web.dev/articles/optimize-cls), jako jsou přidávání a odebírání prvků nebo změny písem během načítání stránky." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Viníci změny rozvržení" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "První síťový požadavek je nejdůležitější. Snižte jeho latenci tím, že nebudete používat přesměrování, zajistíte rychlou odezvu serveru a zapnete kompresi textu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latence žádosti o dokument" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Zvažte nastavení [font-display](https://developer.chrome.com/blog/font-display) na swap nebo optional, aby byl text konzistentně viditelný. Deskriptor swap lze k omezení změn rozvržení dále optimalizovat [pomocí přepisů metrik písem](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Zobrazení písma" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Začněte zkoumat nejdelší fází. [Zpoždění lze minimalizovat](https://web.dev/articles/optimize-inp#optimize_interactions). Dobu zpracování můžete zkrátit [optimalizací nákladů na hlavní vlákno](https://web.dev/articles/optimize-long-tasks) (často jím bývá JavaScript)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP podle fáze" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimalizujte LCP tím, že zajistíte, aby byl obrázek s LCP okamžitě [objevitelný](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) z HTML, a [nebudete používat líné načítání](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Zjištění požadavku LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Každá [fáze má specifické strategie zlepšení](https://web.dev/articles/optimize-lcp#lcp-breakdown). V ideálním případě by většina času LCP měla být vynaložena na načítání zdrojů, nikoli na prodlevy." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP podle fáze" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Počáteční vykreslení stránky blokují požadavky, což může zpozdit LCP. [Odložením nebo vložením](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) lze tyto síťové požadavky přesunout mimo kritickou cestu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Požadavky blokující vykreslování" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Pokud náklady na přepočítání stylu zůstanou vysoké, může je snížit optimalizace selektorů. [Optimalizujte selektory](https://developer.chrome.com/docs/devtools/performance/selector-stats) s vysokým uplynulým časem a vysokým procentem pomalé cesty. Náklady na nalezení shod lze snížit použitím jednodušších selektorů, méně selektorů, menšího modelu DOM a mělčího modelu DOM." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Náklady selektorů CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kód třetích stran může mít významný dopad na rychlost načítání. [Omezte a odložte načítání kódu třetích stran](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), aby se mohl přednostně načíst obsah stránky." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Třetí strany" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Zobrazená oblast stránky není optimalizována pro mobily. Interakce klepnutím proto mohou být [zpožděny až o 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Zobrazovaná oblast není optimalizovaná pro mobilní zařízení" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Pro animovaný obsah použijte prvek [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), abyste minimalizovali využití procesoru, když příslušný obsah není na obrazovce." }, @@ -2658,55 +2718,55 @@ "message": "Zvažte použití nástroje `BreakpointObserver` v sadě Component Dev Kit (CDK) ke správě dělicích bodů obrázků. [Další informace](https://material.angular.io/cdk/layout/overview)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Zvažte nahrání souboru `GIF` do služby, pomocí které ho bude možné vložit jako video HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Zvažte možnost nakonfigurovat na webu [formáty obrázků WebP se stylem obrázků Convert](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Zvažte nakonfigurování líného načítání obrázků na platformě `Drupal`. Formátovače polí pro obrázky podporují načítání `lazy` a `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Pokud je na stránce dynamicky přidán prvek LCP, měli byste obrázek optimalizovat, abyste dosáhli lepší hodnoty LCP. [Další informace](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Přesměrování způsobují další prodlevy před načtením stránky. Pokud je nainstalován modul [Redirect](https://www.drupal.org/project/redirect), zkontrolujte, zda není možné odstranit zbytečná přesměrování. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/redirects)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Zvažte použití [modulu](https://www.drupal.org/project/critical_css) k vložení kritických stylů CSS a JavaScriptu přímo do kódu a pro nekritické styly CSS a JavaScript použijte atribut defer." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Snižte provoz pomocí jednoho nebo více modulů `Drupal` pro ukládání do mezipaměti, jako jsou `Internal Page Cache`, `Internal Dynamic Page Cache` a `BigPipe`. Dobu odezvy můžete dále zlepšit propojením se sítí CDN. Vaše hostingové servery by měly využívat PHP OPcache. Zvažte použití ukládání do mezipaměti, jako je Redis nebo Memcached, abyste zkrátili dobu dotazování databází. Nakonec použijte výkonné motivy, moduly a rychlejší servery, abyste zkrátili dobu odezvy serveru." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Zvažte použití [responzivních stylů obrázků](https://www.drupal.org/documentation/modules/responsive_image) ke snížení velikosti obrázků načítaných stránkou. Pokud používáte funkci `Views` k zobrazování více obsahových položek na stránce, zvažte implementaci stránkování za účelem omezení počtu obsahových položek na jedné stránce." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Na stránce Administrace » Konfigurace » Vývoj aktivujte funkci Agregovat soubory CSS." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Na stránce Administrace » Konfigurace » Vývoj aktivujte funkci Agregovat javascriptové soubory." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Zvažte odstranění nepoužívaných pravidel CSS a k odpovídající stránce nebo komponentě stránky připojte pouze nezbytné knihovny `Drupal`. Podrobnosti naleznete v [dokumentaci systému `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Připojené knihovny, které přidávají nadbytečný kód CSS, můžete vyhledat spuštěním analýzy [využití kódu](https://developer.chrome.com/docs/devtools/coverage) v Nástrojích pro vývojáře Chrome. Odpovědný motiv či modul můžete identifikovat podle adresy URL šablony stylů, když je na vašem webu `Drupal` deaktivována agregace CSS. Hledejte motivy či moduly, které v seznamu mají mnoho šablon stylů, u nichž je při analýze využití kódu velké množství kódu označeno červeně. Motiv či modul by měl knihovnu šablon stylů připojit jen v případě, že se na stránce opravdu používá." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Zvažte odstranění nepoužívaných javascriptových zdrojů a k odpovídající stránce nebo komponentě stránky připojte jen nezbytné knihovny `Drupal`. Podrobnosti najdete v [dokumentaci systému Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Připojené knihovny, které přidávají nadbytečný javascriptový kód, můžete vyhledat spuštěním analýzy [využití kódu](https://developer.chrome.com/docs/devtools/coverage) v Nástrojích pro vývojáře Chrome. Odpovědný motiv či modul můžete identifikovat podle adresy URL skriptu, když je na vašem webu `Drupal` deaktivována agregace JavaScriptu. Hledejte motivy či moduly, které v seznamu mají mnoho skriptů, u nichž je při analýze využití kódu velké množství kódu označeno červeně. Motiv či modul by měl knihovnu skriptu připojit jen v případě, že se na stránce opravdu používá." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Na stránce Administrace » Konfigurace » Vývoj nastavte možnost Maximální věk pro mezipaměť a proxy server. Přečtěte si o [mezipaměti systému `Drupal` a optimalizaci pro vyšší výkon](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Zvažte použití [modulu](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), který automaticky optimalizuje obrázky nahrávané přes web a snižuje jejich velikost, aniž by snižoval kvalitu. Zajistěte také použití nativních [responzivních stylů obrázků](https://www.drupal.org/documentation/modules/responsive_image) ze systému `Drupal` pro všechny obrázky vykreslované na webu." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Pokyny k předběžnému připojení nebo načtení zdrojů (`Preconnect` nebo `dns-prefetch`) lze přidat nainstalováním a nakonfigurováním [modulu](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), který zprostředkuje hintingové instrukce pro zdroje user-agent." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Zajistěte použití nativních [responzivních stylů obrázků](https://www.drupal.org/documentation/modules/responsive_image) ze systému `Drupal`. Použijte responzivní styly obrázků při vykreslování polí obrázků prostřednictvím režimů zobrazení, zobrazení nebo u obrázků nahraných prostřednictvím editoru WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Textové zdroje by se měly odesílat komprimované (gzip, deflate nebo brotli), aby se minimalizovalo množství přenášených dat. Zvažte použití sítě CDN, která to nativně podporuje, nebo nakonfigurujte webový server tak, aby tuto operaci prováděl. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Použijte [Ezoic Leap](https://pubdash.ezoic.com/speed) a zapněte možnost `Optimize Fonts`, aby se automaticky využila funkce CSS `font-display` a text tak byl během načítání webových písem viditelný pro uživatele." @@ -3036,7 +3096,7 @@ "message": "K dispozici je celá řada pluginů služby WordPress, které vám pomohou [vložit kritické podklady přímo do kódu](https://wordpress.org/plugins/search/critical+css/) nebo [odložit načítání méně důležitých zdrojů](https://wordpress.org/plugins/search/defer+css+javascript/). Upozorňujeme, že optimalizace pomocí těchto pluginů může narušit funkčnost vašeho motivu nebo pluginů. V kódu proto pravděpodobně budete muset provést změny." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Zvolte jednoduchý motiv (ideálně založený na blocích) a implementujte ukládání celé stránky do mezipaměti nebo řešení statického webu. Deaktivujte nepotřebné pluginy, abyste minimalizovali režii serveru. Zvažte upgrade hostingu na spravovanou nebo vyhrazenou službu." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Zvažte zobrazování ukázek v seznamech příspěvků (např. prostřednictvím značky k načtení dalšího obsahu), snížení počtu příspěvků zobrazených na jedné stránce, rozdělení dlouhých příspěvků na několik stránek nebo použití pluginu k línému načítání komentářů."
diff --git a/front_end/third_party/lighthouse/locales/da.json b/front_end/third_party/lighthouse/locales/da.json index 1175f9d..25212e6 100644 --- a/front_end/third_party/lighthouse/locales/da.json +++ b/front_end/third_party/lighthouse/locales/da.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Rapport over brugerflow i Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Layoutændringer opstår, når elementer bevæger sig uden brugerinteraktion. [Undersøg årsagerne til layoutændringer](https://web.dev/articles/optimize-cls), f.eks. elementer, der tilføjes eller fjernes eller ændrer skrifttyper, mens siden indlæses." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Årsager til layoutskift" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Din første netværksanmodning er den vigtigste. Reducer forsinkelsen ved at undgå omdirigeringer, sikre en hurtig serversvartid og aktivere tekstkomprimering." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Forsinkelse for dokumentanmodning" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Overvej at angive [font-display](https://developer.chrome.com/blog/font-display) som swap eller optional for at sikre, at teksten er synlig hele tiden. swap kan optimeres yderligere for at mindske layoutskift med [tilsidesættelse af skriftmetrics](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Skrifttypevisning" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Start med at undersøge den længste fase. [Forsinkelser kan minimeres](https://web.dev/articles/optimize-inp#optimize_interactions). Hvis du vil reducere behandlingsvarigheden, skal du [optimere omkostningerne for hovedtråden](https://web.dev/articles/optimize-long-tasks) (typisk JS)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP efter fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimer LCP ved at gøre LCP-billedet [synligt](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) i HTML med det samme, og [undgå lazy loading](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Registrering af LCP-anmodning" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Hver [fase har specifikke forbedringsstrategier](https://web.dev/articles/optimize-lcp#lcp-breakdown). Det meste af LCP-tiden bør ideelt set bruges på at indlæse ressourcerne og ikke på forsinkelser." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP efter fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Anmodninger blokerer for sidens oprindelige gengivelse, hvilket kan forsinke LCP. [Udsættelse eller indlejring](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) kan flytte disse netværksanmodninger væk fra den kritiske sti." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Anmodninger, der blokerer gengivelse" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Hvis omkostningerne for Genberegn typografi forbliver høje, kan vælgeroptimering reducere dem. [Optimer vælgere](https://developer.chrome.com/docs/devtools/performance/selector-stats), der både har lang forløbstid og langsom vej en stor procentdel af tiden. Enklere vælgere, færre vælgere, en mindre DOM og en mindre omfattende DOM er med til at reducere omkostningerne ved matching." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Omkostninger for CSS-vælger" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kode fra tredjeparter kan have en væsentlig indvirkning på indlæsningen. [Reducer og udskyd indlæsningen af tredjepartskoden](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) for at prioritere din sides indhold." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Tredjeparter" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Sidens viewport er ikke optimeret til brug på mobil, så trykinteraktioner kan blive [forsinket med op til 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Viewport er ikke optimeret til mobil" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Ved animeret indhold bør du bruge [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) til at minimere brugen af CPU, når indholdet er uden for skærmen." }, @@ -2658,55 +2718,55 @@ "message": "Du kan også vælge at bruge værktøjet `BreakpointObserver` i Component Dev Kit (CDK) til at administrere skillepunkter for billeder. [Få flere oplysninger](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Overvej at uploade din `GIF` til en tjeneste, hvor den kan indlejres som en HTML5-video." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Overvej at konfigurere [WebP-billedformater med en Convert-billedstilart](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) på dit website." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Overvej at konfigurere lazy load-billeder i `Drupal`. Feltformateringerne for billeder understøtter `lazy` eller `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Hvis LCP-elementet føjes til siden dynamisk, skal du optimere billedet for at forbedre LCP. [Få flere oplysninger](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Omdirigeringer medfører yderligere forsinkelser, inden siden kan indlæses. Hvis modulet [Omdirigering](https://www.drupal.org/project/redirect) er installeret, skal du tjekke, om unødvendige omdirigeringer kan fjernes. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Overvej at bruge [et modul](https://www.drupal.org/project/critical_css) til at indlejre vigtig CSS og JavaScript, og brug attributten defer til ikke-kritisk CSS eller JavaScript." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Overfør trafik med ét eller flere `Drupal`-cachemoduler, f.eks. `Internal Page Cache`, `Internal Dynamic Page Cache` og `BigPipe`. Par disse med et CDN for at forbedre responstiden yderligere. Dine hostingservere skal anvende PHP OPcache. Overvej at bruge hukommelsescachelagring, f.eks. Redis eller Memcached, til at reducere forespørgselstider i databaser. Brug til sidst effektive temaer, moduler og hurtigere servere for at reducere serversvartiden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Overvej at bruge [responsive billedformater](https://www.drupal.org/documentation/modules/responsive_image) til at reducere størrelsen på de billeder, der indlæses på din side. Hvis du bruger `Views` til at vise flere indholdselementer på en side, kan du overveje at implementere sideinddeling for at begrænse mængden af indholdselementer, der vises på en bestemt side." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Sørg for, at du har aktiveret \"Sammenlæg CSS-filer\" på siden \"Administration » Konfiguration » Udvikling\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Sørg for, at du har aktiveret \"Sammenlæg JavaScript-filer\" på siden \"Administration » Konfiguration » Udvikling\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Overvej at fjerne ubrugte CSS-regler og kun vedhæfte de nødvendige `Drupal`-biblioteker til den relevante side eller komponent på en side. Du kan få flere oplysninger i [`Drupal`-dokumentationen](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Hvis du vil identificere vedhæftede biblioteker, der tilføjer irrelevant CSS, kan du prøve at køre [kodedækning](https://developer.chrome.com/docs/devtools/coverage) i Chrome Udviklerværktøjer. Du kan identificere det problematiske tema/modul via webadressen for typografiarket, når CSS-aggregering er deaktiveret på dit `Drupal`-website. Hold øje med temaer/moduler med mange typografiark på listen, som indeholder meget rødt i kodedækningen. Et tema/modul bør kun vedhæfte et bibliotek til typografiark, hvis det rent faktisk anvendes på siden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Overvej at fjerne ubrugte JavaScript-aktiver og kun vedhæfte de nødvendige `Drupal`-biblioteker til den relevante side eller komponent på en side. Du kan få flere oplysninger via linket til [Drupal-dokumentationen](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Hvis du vil identificere vedhæftede biblioteker, der tilføjer irrelevant JavaScript, kan du prøve at køre [kodedækning](https://developer.chrome.com/docs/devtools/coverage) i Chrome Udviklerværktøjer. Du kan identificere det ansvarlige tema/modul via webadressen for scriptet, når JavaScript-aggregeringen er deaktiveret på dit `Drupal`-website. Hold øje med temaer/moduler med mange scripts på listen, som indeholder meget rødt i kodedækningen. Et tema/modul bør kun vedhæfte et scriptbibliotek, hvis det rent faktisk anvendes på siden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Angiv \"Maks. alder for browser- og proxycachelagring\" på siden \"Administration » Konfiguration » Udvikling\". Læs om [`Drupal`-cache og optimering for bedre ydeevne](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Overvej at bruge [et modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), der automatisk optimerer og reducerer størrelsen på billeder, der uploades gennem websitet, mens kvaliteten bevares. Sørg også for at bruge de indbyggede [responsive billedformater](https://www.drupal.org/documentation/modules/responsive_image) fra `Drupal` til alle billeder, der gengives på dette website." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Ressourcehints til `Preconnect` eller `dns-prefetch` kan tilføjes ved at installere og konfigurere [et modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), der leverer faciliteter til ressourcehints for brugeragenter." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Sørg for at bruge de indbyggede [responsive billedformater](https://www.drupal.org/documentation/modules/responsive_image) fra `Drupal`. Brug de responsive billedformater, når du gengiver billedfelter gennem visningstilstande, visninger eller billeder, der uploades via WYSIWYG-redigeringsværktøjet." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstbaserede ressourcer bør vises i komprimeret format (gzip, Deflate eller Brotli), så netværkets samlede antal bytes formindskes. Overvej at bruge et CDN, der understøtter dette, eller konfigurere webserveren til at udføre denne handling. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Brug [Ezoic Leap](https://pubdash.ezoic.com/speed), og aktivér `Optimize Fonts` for automatisk at benytte funktionen for prissammenligningstjenesten (CSS) (`font-display`-funktionen), der sikrer, at tekst vises til brugerne, mens der indlæses webfonts." @@ -3036,7 +3096,7 @@ "message": "Der er en række WordPress-plugins, som kan hjælpe dig med at [indlejre vigtige aktiver](https://wordpress.org/plugins/search/critical+css/) eller [udskyde mindre vigtige ressourcer](https://wordpress.org/plugins/search/defer+css+javascript/). Vær opmærksom på, at optimeringer via disse plugins kan ødelægge funktioner i dine temaer og plugins. Du bliver derfor sandsynligvis nødt til at foretage kodeændringer." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Vælg et simpelt tema (helst et bloktema), og implementer fuld sidecachelagring eller en statisk websiteløsning. Deaktiver unødvendige plugins for at minimere serverbelastningen. Overvej at opgradere din hosting til en administreret eller dedikeret tjeneste." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Overvej at vise uddrag på dine opslagslister (f.eks. via tagget Mere), reducere antallet af viste opslag på en given side, opdele dine lange opslag i flere sider eller bruge et plugin til at indlæse kommentarer langsomt."
diff --git a/front_end/third_party/lighthouse/locales/de.json b/front_end/third_party/lighthouse/locales/de.json index 45a2fab..0369ebc 100644 --- a/front_end/third_party/lighthouse/locales/de.json +++ b/front_end/third_party/lighthouse/locales/de.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse-Bericht zur Aufrufabfolge" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Layout Shifts treten auf, wenn sich Elemente ohne Nutzerinteraktion bewegen. [Untersuche die Ursachen von Layout Shifts](https://web.dev/articles/optimize-cls), beispielsweise Elemente, die hinzugefügt oder entfernt werden oder deren Schriftart sich beim Laden der Seite ändert." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Verursacher von Layout Shifts" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Deine erste Netzwerkanfrage ist die wichtigste. Verringere die Latenz, indem du Weiterleitungen vermeidest, eine schnelle Serverantwort sicherstellst und die Textkomprimierung aktivierst." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latenz der Dokumentanfrage" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Du kannst [font-display](https://developer.chrome.com/blog/font-display) auf „swap“ oder „optional“ setzen, damit der Text immer sichtbar ist. „swap“ kann weiter optimiert werden, um Layout Shifts durch [Überschreibungen von Messwerten zur Schriftart](https://developer.chrome.com/blog/font-fallbacks) zu reduzieren." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Schriftart-Anzeige" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Sieh dir zuerst die längste Phase an. [Verzögerungen können minimiert werden.](https://web.dev/articles/optimize-inp#optimize_interactions) Damit sich die Verarbeitungsdauer verringert, [musst du die Kosten des Hauptthreads](https://web.dev/articles/optimize-long-tasks), meist JS, optimieren." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP nach Phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimiere den LCP, indem du das LCP-Bild im HTML-Code direkt [sichtbar](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) machst und [Lazy Loading vermeidest](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP-Anfrageerkennung" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Für jede [Phase gibt es spezifische Verbesserungsstrategien](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealerweise sollte der Großteil der LCP-Zeit für das Laden der Ressourcen und nicht für Verzögerungen aufgewendet werden." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP nach Phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Anfragen blockieren das erste Rendering der Seite, was den LCP verzögern kann. [Durch das Verschieben oder Einfügen](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) können diese Netzwerkanfragen aus dem kritischen Pfad entfernt werden." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Anfragen zum Blockieren des Renderings" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Wenn die Kosten für die Stilneuberechnung hoch bleiben, kann eine Selector-Optimierung diese senken. [Optimiere die Selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats), bei denen sowohl die verstrichene Zeit als auch der Prozentsatz der langsamen Pfade hoch ist. Einfachere Selectors, weniger Selectors, ein kleineres DOM sowie ein flacheres DOM reduzieren die Kosten für den Abgleich." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Kosten für CSS-Selektor" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Code von Drittanbietern kann die Ladegeschwindigkeit erheblich beeinträchtigen. [Reduziere Drittanbietercode und stelle den Ladevorgang zurück](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), um die Inhalte deiner Seite zu priorisieren." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Drittanbieter" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Der Darstellungsbereich der Seite ist nicht für Mobilgeräte optimiert. Daher kann es bei Interaktionen durch Tippen zu einer [Verzögerung von bis zu 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) kommen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Darstellungsbereich nicht für Mobilgeräte optimiert" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Verwende [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) für animierte Inhalte, um die CPU-Last auf ein Mindestmaß zu reduzieren, wenn die Inhalte nicht zu sehen sind." }, @@ -2658,55 +2718,55 @@ "message": "Du kannst das Dienstprogramm `BreakpointObserver` im Component Dev Kit (CDK) verwenden, um Haltepunkte in Bildern zu verwalten. [Weitere Informationen.](https://material.angular.io/cdk/layout/overview)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Du hast die Möglichkeit, dein `GIF` bei einem Dienst hochzuladen, der dafür sorgt, dass es als HTML5-Video eingebettet werden kann." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Du hast die Möglichkeit, [WebP-Bildformate mit einem Convert-Bildstil](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) auf deiner Website zu verwenden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Du kannst Lazy Loading für Bilder in `Drupal` einstellen. Die Feldformatierer für Bilder unterstützen `lazy` oder `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Wenn der Seite das LCP‑Element dynamisch hinzugefügt wird, solltest du das Bild optimieren, um den LCP zu verbessern. [Weitere Informationen](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Weiterleitungen führen zu zusätzlichen Verzögerungen, bevor die Seite geladen werden kann. Wenn das [Weiterleitungsmodul](https://www.drupal.org/project/redirect) installiert ist, prüfe, ob unnötige Weiterleitungen entfernt werden können. [Weitere Informationen](https://developers.google.com/web/tools/lighthouse/audits/redirects)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Du hast die Möglichkeit, [ein Modul](https://www.drupal.org/project/critical_css) zu verwenden, um wichtige CSS- und JavaScript-Elemente inline einzubetten, und das Attribut „defer“ für nicht kritische CSS- oder JavaScript-Elemente zu verwenden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Mit einem oder mehreren `Drupal`-Caching-Modulen wie `Internal Page Cache`, `Internal Dynamic Page Cache` und `BigPipe` lässt sich die Belastung durch Zugriffe reduzieren. Diese können mit einem CDN kombiniert werden, um die Antwortzeit weiter zu verbessern. Deine Hostingserver sollten PHP OPcache nutzen. Auch können Speicher-Caching-Lösungen wie Redis oder Memcached verwendet werden, um Datenbank-Abfragezeiten zu reduzieren. Außerdem lassen sich leistungsstarke Designs, Module und schnellere Server nutzen, um die Serverantwortzeit zu verringern." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Du hast die Möglichkeit, [responsive Bildstile (Responsive Image Styles)](https://www.drupal.org/documentation/modules/responsive_image) zu verwenden, um die Größe der auf deiner Seite geladenen Bilder zu reduzieren. Wenn du `Views` verwendest, um mehrere Inhaltselemente auf einer Seite anzuzeigen, kannst du mithilfe von Paginierung die Anzahl der auf einer bestimmten Seite eingeblendeten Inhaltselemente begrenzen." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Achte darauf, dass die Option „Aggregate CSS files“ (CSS-Dateien aggregieren) unter „Administration > Configuration > Development“ (Verwaltung > Konfiguration > Entwicklung) aktiviert ist." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Achte darauf, dass die Option „Aggregate JavaScript files“ (JavaScript-Dateien aggregieren) unter „Administration > Configuration > Development“ (Verwaltung > Konfiguration > Entwicklung) aktiviert ist." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Du hast die Möglichkeit, ungenutzte CSS‑Regeln zu entfernen und nur die benötigten `Drupal`-Bibliotheken zu relevanten Seiten oder Seitenkomponenten hinzuzufügen. Weitere Informationen findest du in der [`Drupal`-Dokumentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Wenn du die angehängten Bibliotheken finden möchtest, über die überflüssiges CSS hinzugefügt wird, kannst du das Prüftool zur [Codeabdeckung](https://developer.chrome.com/docs/devtools/coverage) in den Chrome-Entwicklertools verwenden. Das entsprechende Design/Modul kannst du anhand der URL des Stylesheets erkennen, wenn die CSS-Aggregation auf deiner `Drupal`-Website deaktiviert ist. Suche in der Liste nach Designs/Modulen mit vielen Stylesheets, bei denen im Prüftool zur Codeabdeckung viel nicht verwendeter Code (markiert in Rot) angezeigt wird. Eine Stylesheet-Bibliothek sollte nur dann in ein Design/Modul aufgenommen werden, wenn sie auch tatsächlich auf der Seite verwendet wird." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Du hast die Möglichkeit, ungenutzte JavaScript-Assets zu entfernen und nur die benötigten `Drupal`-Bibliotheken zu relevanten Seiten oder Seitenkomponenten hinzuzufügen. Weitere Informationen findest du in der [Drupal-Dokumentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Wenn du die angehängten Bibliotheken finden möchtest, über die überflüssiges JavaScript hinzugefügt wird, kannst du das Prüftool zur [Codeabdeckung](https://developer.chrome.com/docs/devtools/coverage) in den Chrome-Entwicklertools verwenden. Das entsprechende Design/Modul kannst du anhand der URL des Scripts erkennen, wenn die JavaScript-Aggregation auf deiner `Drupal`-Website deaktiviert ist. Suche in der Liste nach Designs/Modulen mit vielen Scripts, bei denen im Prüftool zur Codeabdeckung viel nicht verwendeter Code (markiert in Rot) angezeigt wird. Eine Scriptbibliothek sollte nur dann in ein Design/Modul aufgenommen werden, wenn sie auch tatsächlich auf der Seite verwendet wird." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Konfiguriere die Option „Browser and proxy cache maximum age“ (Maximale Lebensdauer für Browser- und Proxy-Cache) unter „Administration“ > „Configuration“ > „Development“ (Verwaltung > Konfiguration > Entwicklung). [Weitere Informationen zum `Drupal`-Cache und zur Leistungsoptimierung](https://www.drupal.org/docs/8/api/cache-api/cache-api)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Du hast die Möglichkeit, [ein Modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) zu verwenden, das automatisch und ohne Qualitätsverlust die Größe von Bildern, die über die Website hochgeladen werden, optimiert und reduziert. Achte außerdem darauf, dass du für alle auf deiner Website gerenderten Bilder die von `Drupal` bereitgestellten [responsiven Bildstile (Responsive Image Styles)](https://www.drupal.org/documentation/modules/responsive_image) verwendest." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Du kannst Hinweise auf Ressourcen für den User-Agent als „`Preconnect`“ oder „`dns-prefetch`“ hinzufügen, indem du [ein Modul installierst oder konfigurierst](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), das die entsprechende Funktionalität bietet." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Achte darauf, dass du die von `Drupal` bereitgestellten [responsiven Bildstile (Responsive Image Styles)](https://www.drupal.org/documentation/modules/responsive_image) verwendest. Verwende die responsiven Bildstile für Bildfelder, die über Anzeigemodi gerendert werden, sowie für Bilder, die über den WYSIWYG-Editor hochgeladen wurden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Textbasierte Ressourcen sollten komprimiert bereitgestellt werden (gzip, Deflate oder Brotli), um die Menge der im Netzwerk übertragenen Daten insgesamt zu minimieren. Du kannst ein CDN verwenden, das dies nativ unterstützt, oder den Webserver so konfigurieren, dass er eine Komprimierung vornimmt. [Weitere Informationen](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Verwende [Ezoic Leap](https://pubdash.ezoic.com/speed) und aktiviere „`Optimize Fonts`“, um automatisch die CSS-Funktion „`font-display`“ zu nutzen. So können Nutzer Text lesen, während Webfonts geladen werden." @@ -3036,7 +3096,7 @@ "message": "Es gibt eine Reihe von WordPress-Plug-ins, mit denen du [wichtige Assets einbetten](https://wordpress.org/plugins/search/critical+css/) oder [weniger wichtige Ressourcen aufschieben](https://wordpress.org/plugins/search/defer+css+javascript/) kannst. Beachte, dass über diese Plug-ins bereitgestellte Optimierungen dazu führen können, dass deine Designs oder Plug-ins nicht funktionieren. Daher musst du wahrscheinlich Änderungen am Code vornehmen." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Leg ein einfaches Design fest (idealerweise ein Blockdesign) und implementiere ein Caching der gesamten Seite oder eine Lösung für eine statische Website. Deaktiviere unnötige Plug-ins, um den Berechnungsaufwand für den Server zu minimieren. Prüfe ein Upgrade deiner Hostinglösung auf einen verwalteten oder dedizierten Dienst." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Du hast die Möglichkeit, Auszüge in deiner Beitragsliste einzublenden (z. B. über das Tag \"Mehr\"), die Anzahl der Beiträge auf einer Seite zu verringern, lange Beiträge auf mehrere Seiten aufzuteilen oder ein Plug-in für das Lazy Loading von Kommentaren zu verwenden."
diff --git a/front_end/third_party/lighthouse/locales/el.json b/front_end/third_party/lighthouse/locales/el.json index 50bdcbc..fd0a076 100644 --- a/front_end/third_party/lighthouse/locales/el.json +++ b/front_end/third_party/lighthouse/locales/el.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Αναφορά ροής χρήστη Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Οι μετατοπίσεις διάταξης προκύπτουν, όταν τα στοιχεία μετακινούνται χωρίς αλληλεπίδραση με τον χρήστη. [Διερευνήστε τις αιτίες των μετατοπίσεων διάταξης](https://web.dev/articles/optimize-cls), όπως είναι η προσθήκη και η κατάργηση στοιχείων ή η αλλαγή των γραμματοσειρών τους κατά τη φόρτωση της σελίδας." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Αιτίες για τη μετατόπιση διάταξης" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Το πρώτο αίτημα δικτύου είναι το πιο σημαντικό. Μειώστε τον λανθάνοντα χρόνο αποφεύγοντας τις ανακατευθύνσεις, προκειμένου να διασφαλίσετε μια γρήγορη απόκριση διακομιστή, και ενεργοποιώντας τη συμπίεση κειμένου." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Λανθάνων χρόνος αιτήματος εγγράφου" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Μπορείτε να ορίσετε το [font-display](https://developer.chrome.com/blog/font-display) σε swap ή optional, για να διασφαλίσετε ότι το κείμενο θα είναι πάντα ορατό. Το swap μπορεί να βελτιστοποιηθεί περαιτέρω, για να περιοριστούν οι μετατοπίσεις διάταξης με [παρακάμψεις μετρήσεων γραμματοσειράς](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Προβολή γραμματοσειράς" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Ξεκινήστε την έρευνα με τη μεγαλύτερη φάση. [Οι καθυστερήσεις μπορούν να ελαχιστοποιηθούν](https://web.dev/articles/optimize-inp#optimize_interactions). Για να μειώσετε τη διάρκεια επεξεργασίας, [βελτιστοποιήστε τα κόστη κύριου νήματος](https://web.dev/articles/optimize-long-tasks), συχνά σε JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP κατά φάση" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Βελτιστοποιήστε το LCP κάνοντας την εικόνα LCP [ανακαλύψιμη](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) απευθείας από το HTML και [αποφεύγοντας την αργή φόρτωση](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Ανακάλυψη αιτήματος LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Κάθε [φάση έχει συγκεκριμένες στρατηγικές βελτίωσης](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ιδανικά, το μεγαλύτερο μέρος του χρόνου LCP θα πρέπει να δαπανάται για τη φόρτωση των πόρων, όχι σε καθυστερήσεις." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP κατά φάση" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Τα αιτήματα αποκλείουν την αρχική απόδοση της σελίδας, κάτι που μπορεί να οδηγήσει σε καθυστέρηση της μέτρησης LCP. Η [αναβολή ή η ενσωμάτωση](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) μπορεί να μετακινήσει αυτά τα αιτήματα δικτύου εκτός της κρίσιμης διαδρομής." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Αιτήματα αποκλεισμού απόδοσης" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Αν τα κόστη του εκ νέου υπολογισμού στιλ παραμένουν υψηλά, η βελτιστοποίηση επιλογέα μπορεί να τα μειώσει. [Βελτιστοποιήστε τους επιλογείς](https://developer.chrome.com/docs/devtools/performance/selector-stats) με υψηλό χρόνο που έχει παρέλθει και υψηλό ποσοστό slow-path. Το κόστος αντιστοίχισης μπορεί να μειωθεί με τη χρήση λιγότερων και απλούστερων επιλογέων και DOM μικρότερου μεγέθους και βάθους." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Κόστος επιλογέων CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Ο κώδικας τρίτου μέρους μπορεί να επηρεάσει σημαντικά την απόδοση φόρτωσης. [Μειώστε και αναβάλετε τη φόρτωση κώδικα τρίτου μέρους](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), για να δώσετε προτεραιότητα στο περιεχόμενο της σελίδας σας." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Τρίτα μέρη" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Η θύρα προβολής της σελίδας δεν είναι βελτιστοποιημένη για κινητά, επομένως οι αλληλεπιδράσεις με πάτημα μπορεί να [καθυστερούν έως και 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Η θύρα προβολής δεν είναι βελτιστοποιημένη για κινητά" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Για περιεχόμενο κινούμενης εικόνας, χρησιμοποιήστε το [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) για να ελαχιστοποιήσετε τη χρήση CPU όταν το περιεχόμενο είναι εκτός οθόνης." }, @@ -2658,55 +2718,55 @@ "message": "Μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα `BreakpointObserver` στο Component Dev Kit (CDK) για να διαχειρίζεστε τα σημεία διακοπής εικόνας. [Μάθετε περισσότερα](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Εξετάστε το ενδεχόμενο μεταφόρτωσης του `GIF` σε μια υπηρεσία η οποία θα το διαθέσει για ενσωμάτωση ως βίντεο HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Εξετάστε το ενδεχόμενο διαμόρφωσης των [μορφών εικόνας WebP με ένα στιλ Μετατροπή εικόνας](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) στον ιστότοπό σας." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Εξετάστε το ενδεχόμενο διαμόρφωσης των εικόνων αργής φόρτωσης στο `Drupal`. Οι μορφοποιητές πεδίων για εικόνες υποστηρίζουν `lazy` ή `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Αν το στοιχείο LCP προστίθεται δυναμικά στη σελίδα, θα πρέπει να βελτιστοποιήσετε την εικόνα, ώστε να βελτιωθεί το LCP. [Μάθετε περισσότερα](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Οι ανακατευθύνσεις προκαλούν πρόσθετες καθυστερήσεις στη φόρτωση της σελίδας. Αν η λειτουργική μονάδα [Redirect](https://www.drupal.org/project/redirect) είναι εγκατεστημένη, ελέγξτε αν μπορούν να καταργηθούν οι περιττές ανακατευθύνσεις. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Εξετάστε το ενδεχόμενο χρήσης μιας [λειτουργικής μονάδας](https://www.drupal.org/project/critical_css) για ενσωμάτωση σημαντικών στοιχείων CSS και JavaScript και χρησιμοποιήστε το χαρακτηριστικό αναβολής για μη σημαντικά στοιχεία CSS ή JavaScript." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Μειώστε τον φόρτο της επισκεψιμότητας με μία ή περισσότερες λειτουργικές μονάδες αποθήκευσης στην κρυφή μνήμη `Drupal`, όπως `Internal Page Cache`, `Internal Dynamic Page Cache` και `BigPipe`. Συνδυάστε τες με ένα ΔΠΠ, για να βελτιώσετε ακόμα περισσότερο τον χρόνο απόκρισης. Οι διακομιστές φιλοξενίας θα πρέπει να χρησιμοποιούν το PHP OPcache. Εξετάστε το ενδεχόμενο χρήσης συστημάτων αποθήκευσης στην κρυφή μνήμη συσκευής, όπως το Redis ή το Memcached, για να μειώσετε τους χρόνους ερωτημάτων της βάσης δεδομένων. Τέλος, χρησιμοποιήστε αποδοτικά θέματα, λειτουργικές μονάδες και ταχύτερους διακομιστές, για να μειώσετε τον χρόνο απόκρισης του διακομιστή." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Εξετάστε το ενδεχόμενο χρήσης [Στιλ αποκριτικών εικόνων](https://www.drupal.org/documentation/modules/responsive_image), για να μειώσετε το μέγεθος των εικόνων που φορτώνονται στη σελίδα σας. Εάν χρησιμοποιείτε το `Views` για την εμφάνιση πολλαπλών στοιχείων περιεχομένου σε μια σελίδα, εξετάστε το ενδεχόμενο χρήσης της σελιδοποίησης προκειμένου να περιορίσετε τον αριθμό των στοιχειών περιεχομένου σε μια συγκεκριμένη σελίδα." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Βεβαιωθείτε ότι έχετε ενεργοποιήσει τη Συγκέντρωση αρχείων CSS στη σελίδα Διαχείριση » Διαμόρφωση » Ανάπτυξη." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Βεβαιωθείτε ότι έχετε ενεργοποιήσει τη \"Συγκέντρωση αρχείων JavaScript\" στη σελίδα Διαχείριση » Διαμόρφωση » Ανάπτυξη." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Εξετάστε το ενδεχόμενο κατάργησης των κανόνων CSS που δεν χρησιμοποιούνται και σύνδεσης μόνο των αναγκαίων βιβλιοθηκών `Drupal` στη σχετική σελίδα ή στο σχετικό στοιχείο σε μια σελίδα. Για λεπτομέρειες, ανατρέξτε στην [τεκμηρίωση του `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Για να προσδιορίσετε τις συνδεδεμένες βιβλιοθήκες που προσθέτουν περιττό κώδικα CSS, δοκιμάστε να εκτελέσετε [κάλυψη κώδικα](https://developer.chrome.com/docs/devtools/coverage) στα Εργαλεία για προγραμματιστές Chrome. Μπορείτε να προσδιορίσετε το θέμα/τη λειτουργική μονάδα που ευθύνεται μέσω του URL του φύλλου στιλ όταν η συγκέντρωση CSS είναι απενεργοποιημένη στον ιστότοπό σας στο `Drupal`. Αναζητήστε θέματα/λειτουργικές μονάδες που διαθέτουν πολλά φύλλα στιλ στη λίστα, στα οποία ένα μεγάλο μέρος της κάλυψης κώδικα έχει κόκκινο χρώμα. Ένα θέμα/μια λειτουργική μονάδα θα πρέπει να συνδέσει ένα φύλλο στιλ μόνο αν χρησιμοποιείται πραγματικά στη σελίδα." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Εξετάστε το ενδεχόμενο κατάργησης των στοιχείων JavaScipt που δεν χρησιμοποιούνται και σύνδεσης μόνο των αναγκαίων βιβλιοθηκών `Drupal` στη σχετική σελίδα ή στο σχετικό στοιχείο σε μια σελίδα. Για λεπτομέρειες, ανατρέξτε στην [τεκμηρίωση του Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Για να προσδιορίσετε τις συνδεδεμένες βιβλιοθήκες που προσθέτουν περιττό κώδικα JavaScript, δοκιμάστε να εκτελέσετε [κάλυψη κώδικα](https://developer.chrome.com/docs/devtools/coverage) στα Εργαλεία για προγραμματιστές Chrome. Μπορείτε να προσδιορίσετε το θέμα/τη λειτουργική μονάδα που ευθύνεται μέσω του URL του σεναρίου, όταν η συγκέντρωση JavaScript είναι απενεργοποιημένη στον ιστότοπό σας στο `Drupal`. Αναζητήστε θέματα/λειτουργικές μονάδες που διαθέτουν πολλά σενάρια στη λίστα, στα οποία ένα μεγάλο μέρος της κάλυψης κώδικα έχει κόκκινο χρώμα. Ένα θέμα/μια λειτουργική μονάδα θα πρέπει να συνδέσει μια βιβλιοθήκη σεναρίων μόνο αν χρησιμοποιείται πραγματικά στη σελίδα." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Ορίστε τη \"Μέγιστη ηλικία κρυφής μνήμης προγράμματος περιήγησης και διακομιστή μεσολάβησης\" στη σελίδα Διαχείριση » Διαμόρφωση » Ανάπτυξη. Διαβάστε σχετικά με την [κρυφή μνήμη `Drupal` και τη βελτιστοποίηση για μεγαλύτερη απόδοση](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Εξετάστε το ενδεχόμενο χρήσης [μιας λειτουργικής μονάδας](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) η οποία βελτιστοποιεί αυτόματα και μειώνει το μέγεθος των εικόνων που ανεβαίνουν μέσω του ιστοτόπου, διατηρώντας την ποιότητα. Επιπλέον, βεβαιωθείτε ότι χρησιμοποιείτε τα εγγενή [Στιλ αποκριτικών εικόνων](https://www.drupal.org/documentation/modules/responsive_image) που παρέχονται από το `Drupal` για όλες τις εικόνες που αποδίδονται στον ιστότοπο." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Μπορούν να προστεθούν υποδείξεις πόρων `Preconnect` ή `dns-prefetch` μέσω της εγκατάστασης και της διαμόρφωσης [μιας λειτουργικής μονάδας](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) που παρέχει λειτουργίες για υποδείξεις πόρων παράγοντα χρήστη." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Βεβαιωθείτε ότι χρησιμοποιείτε τα εγγενή [Στιλ αποκριτικών εικόνων](https://www.drupal.org/documentation/modules/responsive_image) που παρέχονται από το `Drupal`. Χρησιμοποιήστε Στιλ αποκριτικών εικόνων κατά την απόδοση πεδίων εικόνων μέσω λειτουργιών προβολής, προβολών ή εικόνων που ανέβηκαν μέσω του εργαλείου επεξεργασίας WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Η προβολή των πόρων που βασίζονται σε κείμενο πρέπει να γίνεται με συμπίεση (gzip, deflate ή brotli), ώστε να ελαχιστοποιείται ο συνολικός όγκος byte δικτύου. Εξετάστε το ενδεχόμενο χρήσης ενός ΔΠΠ που υποστηρίζει εγγενώς αυτή τη λειτουργία ή διαμορφώστε τον διακομιστή ιστού, έτσι ώστε να εκτελέσει αυτή την ενέργεια. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Χρησιμοποιήστε το [Ezoic Leap](https://pubdash.ezoic.com/speed) και ενεργοποιήστε το `Optimize Fonts` για την αυτόματη αξιοποίηση της λειτουργίας `font-display` CSS, προκειμένου να είστε σίγουροι ότι το κείμενο θα είναι ορατό στους χρήστες όσο φορτώνουν οι γραμματοσειρές ιστοτόπου." @@ -3036,7 +3096,7 @@ "message": "Υπάρχουν διάφορες προσθήκες WordPress που μπορούν να σας βοηθήσουν στην [ενσωμάτωση των σημαντικών στοιχείων](https://wordpress.org/plugins/search/critical+css/) ή στην [καθυστέρηση των λιγότερο σημαντικών πόρων](https://wordpress.org/plugins/search/defer+css+javascript/). Λάβετε υπόψη ότι οι βελτιστοποιήσεις που παρέχονται από αυτές τις προσθήκες ενδέχεται να προκαλέσουν προβλήματα στις λειτουργίες των θεμάτων ή των προσθηκών σας. Ως εκ τούτου, είναι πιθανό να χρειαστεί να κάνετε αλλαγές στον κώδικα." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Επιλέξτε ένα ελαφρύ θέμα (ιδανικά ένα θέμα μπλοκ) και χρησιμοποιήστε τη δυνατότητα αποθήκευσης πλήρους σελίδας στην κρυφή μνήμη ή μια λύση στατικού ιστοτόπου. Απενεργοποιήστε τις περιττές προσθήκες, για να ελαχιστοποιήσετε την επιβάρυνση του διακομιστή. Εξετάστε το ενδεχόμενο αναβάθμισης της φιλοξενίας σας σε διαχειριζόμενη ή αποκλειστική υπηρεσία." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Εξετάστε το ενδεχόμενο εμφάνισης αποσπασμάτων στις λίστες αναρτήσεών σας (π.χ. μέσω της ετικέτας \"περισσότερες\"), μειώνοντας τον αριθμό των αναρτήσεων που εμφανίζονται σε μια συγκεκριμένη σελίδα, χωρίζοντας τις μεγάλες αναρτήσεις σε πολλές σελίδες ή χρησιμοποιώντας μια προσθήκη για φόρτωση με καθυστέρηση των σχολίων."
diff --git a/front_end/third_party/lighthouse/locales/en-GB.json b/front_end/third_party/lighthouse/locales/en-GB.json index 47f729c..ebf80cd 100644 --- a/front_end/third_party/lighthouse/locales/en-GB.json +++ b/front_end/third_party/lighthouse/locales/en-GB.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse user flow report" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Layout shifts occur when elements move absent any user interaction. [Investigate the causes of layout shifts](https://web.dev/articles/optimize-cls), such as elements being added, removed or their fonts changing as the page loads." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Layout shift culprits" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response and enabling text compression." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Document request latency" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Consider setting [font-display](https://developer.chrome.com/blog/font-display) to swap or optional to ensure that text is consistently visible. swap can be further optimised to mitigate layout shifts with [font metric overrides](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Font display" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Start investigating with the longest phase. [Delays can be minimised](https://web.dev/articles/optimize-inp#optimize_interactions). To reduce processing duration, [optimise the main-thread costs](https://web.dev/articles/optimize-long-tasks), often JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP by phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimise LCP by making the LCP image [discoverable](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) from the HTML immediately and [avoiding lazy loading](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP request discovery" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Each [phase has specific improvement strategies](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideally, most of the LCP time should be spent on loading the resources, not within delays." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP by phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) can move these network requests out of the critical path." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Render blocking requests" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "If Recalculate Style costs remain high, selector optimisation can reduce them. [Optimise the selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats) with both a high elapsed time and high slow-path %. Simpler selectors, fewer selectors, a smaller DOM and a shallower DOM will all reduce matching costs." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS selector costs" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Third-party code can significantly impact load performance. [Reduce and defer loading of third-party code](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) to prioritise your page's content." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Third parties" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "The page's viewport is not mobile-optimised, so tap interactions may be [delayed by up to 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Viewport not optimised for mobile" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimise CPU usage when the content is offscreen." }, @@ -2667,7 +2727,7 @@ "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "If the LCP element is dynamically added to the page, you should optimise the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." @@ -2676,16 +2736,16 @@ "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache` and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules and faster servers to lower server response time." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Consider using [responsive image styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Ensure you have enabled 'Aggregate CSS files' in the 'Administration » Configuration » Development' page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Ensure that you have enabled 'Aggregate JavaScript files' in the 'Administration » Configuration » Development' page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." @@ -2694,19 +2754,19 @@ "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Set the 'Browser and proxy cache maximum age' in the 'Administration » Configuration » Development' page. Read about [`Drupal` cache and optimising for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimises and reduces the size of images uploaded through the site while retaining quality. Also, ensure that you are using the native [responsive image styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Ensure that you are using the native [responsive image styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the responsive image styles when rendering image fields through view modes, views or images uploaded through the WYSIWYG editor." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimise total network bytes. Consider using a CDN that natively supports this or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Use [Ezoic Leap](https://pubdash.ezoic.com/speed) and enable `Optimize Fonts` to automatically leverage the `font-display` CSS feature to ensure that text is user-visible while webfonts are loading." @@ -3036,7 +3096,7 @@ "message": "There are a number of WordPress plug-ins that can help you [inline critical assets](https://wordpress.org/plugins/search/critical+css/) or [defer less important resources](https://wordpress.org/plugins/search/defer+css+javascript/). Beware that optimisations provided by these plug-ins may break features of your theme or plug-ins, so you will likely need to make code changes." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plug-ins to minimise server overhead. Consider upgrading your hosting to managed or dedicated service." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Consider showing excerpts in your post lists (e.g. via the more tag), reducing the number of posts shown on a given page, breaking your long posts into multiple pages, or using a plug-in to lazy-load comments."
diff --git a/front_end/third_party/lighthouse/locales/en-US.json b/front_end/third_party/lighthouse/locales/en-US.json index 2c72b68..66ad619 100644 --- a/front_end/third_party/lighthouse/locales/en-US.json +++ b/front_end/third_party/lighthouse/locales/en-US.json
@@ -977,6 +977,36 @@ "core/audits/font-display.js | undeclaredFontOriginWarning": { "message": "{fontCountForOrigin, plural, =1 {Lighthouse was unable to automatically check the `font-display` value for the origin {fontOrigin}.} other {Lighthouse was unable to automatically check the `font-display` values for the origin {fontOrigin}.}}" }, + "core/audits/has-hsts.js | columnDirective": { + "message": "Directive" + }, + "core/audits/has-hsts.js | columnSeverity": { + "message": "Severity" + }, + "core/audits/has-hsts.js | description": { + "message": "Deployment of the HSTS header significantly reduces the risk of downgrading HTTP connections and eavesdropping attacks. A rollout in stages, starting with a low max-age is recommended. [Learn more about using a strong HSTS policy.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)" + }, + "core/audits/has-hsts.js | invalidSyntax": { + "message": "Invalid syntax" + }, + "core/audits/has-hsts.js | lowMaxAge": { + "message": "`max-age` is too low" + }, + "core/audits/has-hsts.js | noHsts": { + "message": "No HSTS header found" + }, + "core/audits/has-hsts.js | noMaxAge": { + "message": "No `max-age` directive" + }, + "core/audits/has-hsts.js | noPreload": { + "message": "No `preload` directive found" + }, + "core/audits/has-hsts.js | noSubdomain": { + "message": "No `includeSubDomains` directive found" + }, + "core/audits/has-hsts.js | title": { + "message": "Use a strong HSTS policy" + }, "core/audits/image-aspect-ratio.js | columnActual": { "message": "Aspect Ratio (Actual)" }, @@ -1187,6 +1217,24 @@ "core/audits/non-composited-animations.js | unsupportedTimingParameters": { "message": "Effect has unsupported timing parameters" }, + "core/audits/origin-isolation.js | columnDirective": { + "message": "Directive" + }, + "core/audits/origin-isolation.js | columnSeverity": { + "message": "Severity" + }, + "core/audits/origin-isolation.js | description": { + "message": "The Cross-Origin-Opener-Policy (COOP) can be used to isolate the top-level window from other documents such as pop-ups. [Learn more about deploying the COOP header.](https://web.dev/articles/why-coop-coep#coop)" + }, + "core/audits/origin-isolation.js | invalidSyntax": { + "message": "Invalid syntax" + }, + "core/audits/origin-isolation.js | noCoop": { + "message": "No COOP header found" + }, + "core/audits/origin-isolation.js | title": { + "message": "Ensure proper origin isolation with COOP" + }, "core/audits/preload-fonts.js | description": { "message": "Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/articles/preload-optional-fonts)" }, @@ -1676,6 +1724,15 @@ "core/gather/timespan-runner.js | warningNavigationDetected": { "message": "A page navigation was detected during the run. Using timespan mode to audit page navigations is not recommended. Use navigation mode to audit page navigations for better third-party attribution and main thread detection." }, + "core/lib/bf-cache-strings.js | HTTPMethodNotGET": { + "message": "Only pages loaded via a GET request are eligible for back/forward cache." + }, + "core/lib/bf-cache-strings.js | HTTPStatusNotOK": { + "message": "Only pages with a status code of 2XX can be cached." + }, + "core/lib/bf-cache-strings.js | JavaScriptExecution": { + "message": "Chrome detected an attempt to execute JavaScript while in the cache." + }, "core/lib/bf-cache-strings.js | appBanner": { "message": "Pages that requested an AppBanner are not currently eligible for back/forward cache." }, @@ -1775,12 +1832,12 @@ "core/lib/bf-cache-strings.js | embedderExtensionMessagingForOpenPort": { "message": "Extensions with long-lived connection should close the connection before entering back/forward cache." }, - "core/lib/bf-cache-strings.js | embedderExtensions": { - "message": "Back/forward cache is disabled due to extensions." - }, "core/lib/bf-cache-strings.js | embedderExtensionSentMessageToCachedFrame": { "message": "Extensions with long-lived connection attempted to send messages to frames in back/forward cache." }, + "core/lib/bf-cache-strings.js | embedderExtensions": { + "message": "Back/forward cache is disabled due to extensions." + }, "core/lib/bf-cache-strings.js | embedderModalDialog": { "message": "Modal dialog such as form resubmission or http password dialog was shown for the page upon navigating away." }, @@ -1820,12 +1877,6 @@ "core/lib/bf-cache-strings.js | haveInnerContents": { "message": "Pages that use portals are not currently eligible for back/forward cache." }, - "core/lib/bf-cache-strings.js | HTTPMethodNotGET": { - "message": "Only pages loaded via a GET request are eligible for back/forward cache." - }, - "core/lib/bf-cache-strings.js | HTTPStatusNotOK": { - "message": "Only pages with a status code of 2XX can be cached." - }, "core/lib/bf-cache-strings.js | idleManager": { "message": "Pages that use IdleManager are not currently eligible for back/forward cache." }, @@ -1847,9 +1898,6 @@ "core/lib/bf-cache-strings.js | internalError": { "message": "Internal error." }, - "core/lib/bf-cache-strings.js | JavaScriptExecution": { - "message": "Chrome detected an attempt to execute JavaScript while in the cache." - }, "core/lib/bf-cache-strings.js | keepaliveRequest": { "message": "Back/forward cache is disabled due to a keepalive request." }, @@ -2063,12 +2111,12 @@ "core/lib/csp-evaluator.js | plainWildcards": { "message": "Avoid using plain wildcards ({keyword}) in this directive. Plain wildcards allow scripts to be sourced from an unsafe domain." }, - "core/lib/csp-evaluator.js | reportingDestinationMissing": { - "message": "No CSP configures a reporting destination. This makes it difficult to maintain the CSP over time and monitor for any breakages." - }, "core/lib/csp-evaluator.js | reportToOnly": { "message": "The reporting destination is only configured via the report-to directive. This directive is only supported in Chromium-based browsers so it is recommended to also use a `report-uri` directive." }, + "core/lib/csp-evaluator.js | reportingDestinationMissing": { + "message": "No CSP configures a reporting destination. This makes it difficult to maintain the CSP over time and monitor for any breakages." + }, "core/lib/csp-evaluator.js | strictDynamic": { "message": "Host allowlists can frequently be bypassed. Consider using CSP nonces or hashes instead, along with `'strict-dynamic'` if necessary." }, @@ -2096,6 +2144,9 @@ "core/lib/deprecations-strings.js | AuthorizationCoveredByWildcard": { "message": "Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling." }, + "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": { + "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector." + }, "core/lib/deprecations-strings.js | CanRequestURLHTTPContainingNewline": { "message": "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources." }, @@ -2120,8 +2171,8 @@ "core/lib/deprecations-strings.js | CrossOriginWindowConfirm": { "message": "Triggering window.confirm from cross origin iframes has been deprecated and will be removed in the future." }, - "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": { - "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector." + "core/lib/deprecations-strings.js | DOMMutationEvents": { + "message": "DOM Mutation Events, including `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, and `DOMCharacterDataModified` are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use `MutationObserver` instead." }, "core/lib/deprecations-strings.js | DataUrlInSvgUse": { "message": "Support for data: URLs in SVG <use> element is deprecated and it will be removed in the future." @@ -2129,9 +2180,6 @@ "core/lib/deprecations-strings.js | DocumentDomainSettingWithoutOriginAgentClusterHeader": { "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details." }, - "core/lib/deprecations-strings.js | DOMMutationEvents": { - "message": "DOM Mutation Events, including `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, and `DOMCharacterDataModified` are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use `MutationObserver` instead." - }, "core/lib/deprecations-strings.js | ExpectCTHeader": { "message": "The `Expect-CT` header is deprecated and will be removed. Chrome requires Certificate Transparency for all publicly trusted certificates issued after April 30, 2018." }, @@ -2165,12 +2213,12 @@ "core/lib/deprecations-strings.js | MediaSourceDurationTruncatingBuffered": { "message": "Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`." }, - "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": { - "message": "The older, non-standardized `shadowroot` attribute is deprecated, and will *no longer function* in M119. Please use the new, standardized `shadowrootmode` attribute instead." - }, "core/lib/deprecations-strings.js | NoSysexWebMIDIWithoutPermission": { "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`." }, + "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": { + "message": "The older, non-standardized `shadowroot` attribute is deprecated, and will *no longer function* in M119. Please use the new, standardized `shadowrootmode` attribute instead." + }, "core/lib/deprecations-strings.js | NotificationInsecureOrigin": { "message": "The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." }, @@ -2207,30 +2255,24 @@ "core/lib/deprecations-strings.js | PrefixedVideoDisplayingFullscreen": { "message": "HTMLVideoElement.webkitDisplayingFullscreen is deprecated. Please use Document.fullscreenElement instead." }, - "core/lib/deprecations-strings.js | PrefixedVideoEnterFullscreen": { - "message": "HTMLVideoElement.webkitEnterFullscreen() is deprecated. Please use Element.requestFullscreen() instead." - }, "core/lib/deprecations-strings.js | PrefixedVideoEnterFullScreen": { "message": "HTMLVideoElement.webkitEnterFullScreen() is deprecated. Please use Element.requestFullscreen() instead." }, - "core/lib/deprecations-strings.js | PrefixedVideoExitFullscreen": { - "message": "HTMLVideoElement.webkitExitFullscreen() is deprecated. Please use Document.exitFullscreen() instead." + "core/lib/deprecations-strings.js | PrefixedVideoEnterFullscreen": { + "message": "HTMLVideoElement.webkitEnterFullscreen() is deprecated. Please use Element.requestFullscreen() instead." }, "core/lib/deprecations-strings.js | PrefixedVideoExitFullScreen": { "message": "HTMLVideoElement.webkitExitFullScreen() is deprecated. Please use Document.exitFullscreen() instead." }, + "core/lib/deprecations-strings.js | PrefixedVideoExitFullscreen": { + "message": "HTMLVideoElement.webkitExitFullscreen() is deprecated. Please use Document.exitFullscreen() instead." + }, "core/lib/deprecations-strings.js | PrefixedVideoSupportsFullscreen": { "message": "HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead." }, "core/lib/deprecations-strings.js | PrivacySandboxExtensionsAPI": { "message": "We're deprecating the API `chrome.privacy.websites.privacySandboxEnabled`, though it will remain active for backward compatibility until release M113. Instead, please use `chrome.privacy.websites.topicsEnabled`, `chrome.privacy.websites.fledgeEnabled` and `chrome.privacy.websites.adMeasurementEnabled`. See https://developer.chrome.com/docs/extensions/reference/privacy/#property-websites-privacySandboxEnabled." }, - "core/lib/deprecations-strings.js | RangeExpand": { - "message": "Range.expand() is deprecated. Please use Selection.modify() instead." - }, - "core/lib/deprecations-strings.js | RequestedSubresourceWithEmbeddedCredentials": { - "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked." - }, "core/lib/deprecations-strings.js | RTCConstraintEnableDtlsSrtpFalse": { "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead." }, @@ -2240,6 +2282,12 @@ "core/lib/deprecations-strings.js | RTCPeerConnectionGetStatsLegacyNonCompliant": { "message": "The callback-based getStats() is deprecated and will be removed. Use the spec-compliant getStats() instead." }, + "core/lib/deprecations-strings.js | RangeExpand": { + "message": "Range.expand() is deprecated. Please use Selection.modify() instead." + }, + "core/lib/deprecations-strings.js | RequestedSubresourceWithEmbeddedCredentials": { + "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked." + }, "core/lib/deprecations-strings.js | RtcpMuxPolicyNegotiate": { "message": "The `rtcpMuxPolicy` option is deprecated and will be removed." }, @@ -2381,12 +2429,12 @@ "core/lib/i18n/i18n.js | ms": { "message": "{timeInMs, number, milliseconds} ms" }, - "core/lib/i18n/i18n.js | otherResourcesLabel": { - "message": "Other resources" - }, "core/lib/i18n/i18n.js | otherResourceType": { "message": "Other" }, + "core/lib/i18n/i18n.js | otherResourcesLabel": { + "message": "Other resources" + }, "core/lib/i18n/i18n.js | scriptResourceType": { "message": "Script" }, @@ -2621,6 +2669,72 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse User Flow Report" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Layout shifts occur when elements move absent any user interaction. [Investigate the causes of layout shifts](https://web.dev/articles/optimize-cls), such as elements being added, removed, or their fonts changing as the page loads." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Layout shift culprits" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response, and enabling text compression." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Document request latency" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Consider setting [font-display](https://developer.chrome.com/blog/font-display) to swap or optional to ensure text is consistently visible. swap can be further optimized to mitigate layout shifts with [font metric overrides](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Font display" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": { + "message": "Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": { + "message": "Improve image delivery" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Start investigating with the longest phase. [Delays can be minimized](https://web.dev/articles/optimize-inp#optimize_interactions). To reduce processing duration, [optimize the main-thread costs](https://web.dev/articles/optimize-long-tasks), often JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP by phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimize LCP by making the LCP image [discoverable](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) from the HTML immediately, and [avoiding lazy-loading](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP request discovery" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Each [phase has specific improvement strategies](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideally, most of the LCP time should be spent on loading the resources, not within delays." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP by phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) can move these network requests out of the critical path." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Render blocking requests" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "If Recalculate Style costs remain high, selector optimization can reduce them. [Optimize the selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats) with both high elapsed time and high slow-path %. Simpler selectors, fewer selectors, a smaller DOM, and a shallower DOM will all reduce matching costs." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS Selector costs" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Third party code can significantly impact load performance. [Reduce and defer loading of third party code](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) to prioritize your page's content." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Third parties" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "The page's viewport is not mobile-optimized, so tap interactions may be [delayed by up to 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Viewport not optimized for mobile" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "For animated content, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage when the content is offscreen." }, @@ -3128,12 +3242,12 @@ "report/renderer/report-utils.js | dropdownSaveJSON": { "message": "Save as JSON" }, - "report/renderer/report-utils.js | dropdownViewer": { - "message": "Open in Viewer" - }, "report/renderer/report-utils.js | dropdownViewUnthrottledTrace": { "message": "View Unthrottled Trace" }, + "report/renderer/report-utils.js | dropdownViewer": { + "message": "Open in Viewer" + }, "report/renderer/report-utils.js | errorLabel": { "message": "Error!" },
diff --git a/front_end/third_party/lighthouse/locales/en-XL.json b/front_end/third_party/lighthouse/locales/en-XL.json index 48cea84..af4ad07 100644 --- a/front_end/third_party/lighthouse/locales/en-XL.json +++ b/front_end/third_party/lighthouse/locales/en-XL.json
@@ -977,6 +977,36 @@ "core/audits/font-display.js | undeclaredFontOriginWarning": { "message": "{fontCountForOrigin, plural, =1 {L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô áût́ôḿât́îćâĺl̂ý ĉh́êćk̂ t́ĥé `font-display` v̂ál̂úê f́ôŕ t̂h́ê ór̂íĝín̂ {fontOrigin}.} other {Ĺîǵĥt́ĥóûśê ẃâś ûńâb́l̂é t̂ó âút̂óm̂át̂íĉál̂ĺŷ ćĥéĉḱ t̂h́ê `font-display` v́âĺûéŝ f́ôŕ t̂h́ê ór̂íĝín̂ {fontOrigin}.}}" }, + "core/audits/has-hsts.js | columnDirective": { + "message": "D̂ír̂éĉt́îv́ê" + }, + "core/audits/has-hsts.js | columnSeverity": { + "message": "Ŝév̂ér̂ít̂ý" + }, + "core/audits/has-hsts.js | description": { + "message": "D̂ép̂ĺôým̂én̂t́ ôf́ t̂h́ê H́ŜT́Ŝ h́êád̂ér̂ śîǵn̂íf̂íĉán̂t́l̂ý r̂éd̂úĉéŝ t́ĥé r̂íŝḱ ôf́ d̂óŵńĝŕâd́îńĝ H́T̂T́P̂ ćôńn̂éĉt́îón̂ś âńd̂ éâv́êśd̂ŕôṕp̂ín̂ǵ ât́t̂áĉḱŝ. Á r̂ól̂ĺôút̂ ín̂ śt̂áĝéŝ, śt̂ár̂t́îńĝ ẃît́ĥ á l̂óŵ ḿâx́-âǵê íŝ ŕêćôḿm̂én̂d́êd́. [L̂éâŕn̂ ḿôŕê áb̂óût́ ûśîńĝ á ŝt́r̂ón̂ǵ ĤŚT̂Ś p̂ól̂íĉý.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)" + }, + "core/audits/has-hsts.js | invalidSyntax": { + "message": "Îńv̂ál̂íd̂ śŷńt̂áx̂" + }, + "core/audits/has-hsts.js | lowMaxAge": { + "message": "`max-age` îś t̂óô ĺôẃ" + }, + "core/audits/has-hsts.js | noHsts": { + "message": "N̂ó ĤŚT̂Ś ĥéâd́êŕ f̂óûńd̂" + }, + "core/audits/has-hsts.js | noMaxAge": { + "message": "N̂ó `max-age` d̂ír̂éĉt́îv́ê" + }, + "core/audits/has-hsts.js | noPreload": { + "message": "N̂ó `preload` d̂ír̂éĉt́îv́ê f́ôún̂d́" + }, + "core/audits/has-hsts.js | noSubdomain": { + "message": "N̂ó `includeSubDomains` d̂ír̂éĉt́îv́ê f́ôún̂d́" + }, + "core/audits/has-hsts.js | title": { + "message": "Ûśê á ŝt́r̂ón̂ǵ ĤŚT̂Ś p̂ól̂íĉý" + }, "core/audits/image-aspect-ratio.js | columnActual": { "message": "Âśp̂éĉt́ R̂át̂íô (Áĉt́ûál̂)" }, @@ -1187,6 +1217,24 @@ "core/audits/non-composited-animations.js | unsupportedTimingParameters": { "message": "Êf́f̂éĉt́ ĥáŝ ún̂śûṕp̂ór̂t́êd́ t̂ím̂ín̂ǵ p̂ár̂ám̂ét̂ér̂ś" }, + "core/audits/origin-isolation.js | columnDirective": { + "message": "D̂ír̂éĉt́îv́ê" + }, + "core/audits/origin-isolation.js | columnSeverity": { + "message": "Ŝév̂ér̂ít̂ý" + }, + "core/audits/origin-isolation.js | description": { + "message": "T̂h́ê Ćr̂óŝś-Ôŕîǵîń-Ôṕêńêŕ-P̂ól̂íĉý (ĈÓÔṔ) ĉán̂ b́ê úŝéd̂ t́ô íŝól̂át̂é t̂h́ê t́ôṕ-l̂év̂él̂ ẃîńd̂óŵ f́r̂óm̂ ót̂h́êŕ d̂óĉúm̂én̂t́ŝ śûćĥ áŝ ṕôṕ-ûṕŝ. [Ĺêár̂ń m̂ór̂é âb́ôút̂ d́êṕl̂óŷín̂ǵ t̂h́ê ĆÔÓP̂ h́êád̂ér̂.](https://web.dev/articles/why-coop-coep#coop)" + }, + "core/audits/origin-isolation.js | invalidSyntax": { + "message": "Îńv̂ál̂íd̂ śŷńt̂áx̂" + }, + "core/audits/origin-isolation.js | noCoop": { + "message": "N̂ó ĈÓÔṔ ĥéâd́êŕ f̂óûńd̂" + }, + "core/audits/origin-isolation.js | title": { + "message": "Êńŝúr̂é p̂ŕôṕêŕ ôŕîǵîń îśôĺât́îón̂ ẃît́ĥ ĆÔÓP̂" + }, "core/audits/preload-fonts.js | description": { "message": "P̂ŕêĺôád̂ `optional` f́ôńt̂ś ŝó f̂ír̂śt̂-t́îḿê v́îśît́ôŕŝ ḿâý ûśê t́ĥém̂. [Ĺêár̂ń m̂ór̂é âb́ôút̂ ṕr̂él̂óâd́îńĝ f́ôńt̂ś](https://web.dev/articles/preload-optional-fonts)" }, @@ -1676,6 +1724,15 @@ "core/gather/timespan-runner.js | warningNavigationDetected": { "message": "Â ṕâǵê ńâv́îǵât́îón̂ ẃâś d̂ét̂éĉt́êd́ d̂úr̂ín̂ǵ t̂h́ê ŕûń. Ûśîńĝ t́îḿêśp̂án̂ ḿôd́ê t́ô áûd́ît́ p̂áĝé n̂áv̂íĝát̂íôńŝ íŝ ńôt́ r̂éĉóm̂ḿêńd̂éd̂. Úŝé n̂áv̂íĝát̂íôń m̂ód̂é t̂ó âúd̂ít̂ ṕâǵê ńâv́îǵât́îón̂ś f̂ór̂ b́êt́t̂ér̂ t́ĥír̂d́-p̂ár̂t́ŷ át̂t́r̂íb̂út̂íôń âńd̂ ḿâín̂ t́ĥŕêád̂ d́êt́êćt̂íôń." }, + "core/lib/bf-cache-strings.js | HTTPMethodNotGET": { + "message": "Ôńl̂ý p̂áĝéŝ ĺôád̂éd̂ v́îá â ǴÊT́ r̂éq̂úêśt̂ ár̂é êĺîǵîb́l̂é f̂ór̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê." + }, + "core/lib/bf-cache-strings.js | HTTPStatusNotOK": { + "message": "Ôńl̂ý p̂áĝéŝ ẃît́ĥ á ŝt́ât́ûś ĉód̂é ôf́ 2X̂X́ ĉán̂ b́ê ćâćĥéd̂." + }, + "core/lib/bf-cache-strings.js | JavaScriptExecution": { + "message": "Ĉh́r̂óm̂é d̂ét̂éĉt́êd́ âń ât́t̂ém̂ṕt̂ t́ô éx̂éĉút̂é Ĵáv̂áŜćr̂íp̂t́ ŵh́îĺê ín̂ t́ĥé ĉáĉh́ê." + }, "core/lib/bf-cache-strings.js | appBanner": { "message": "P̂áĝéŝ t́ĥát̂ ŕêq́ûéŝt́êd́ âń Âṕp̂B́âńn̂ér̂ ár̂é n̂ót̂ ćûŕr̂én̂t́l̂ý êĺîǵîb́l̂é f̂ór̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê." }, @@ -1775,12 +1832,12 @@ "core/lib/bf-cache-strings.js | embedderExtensionMessagingForOpenPort": { "message": "Êx́t̂én̂śîón̂ś ŵít̂h́ l̂ón̂ǵ-l̂ív̂éd̂ ćôńn̂éĉt́îón̂ śĥóûĺd̂ ćl̂óŝé t̂h́ê ćôńn̂éĉt́îón̂ b́êf́ôŕê én̂t́êŕîńĝ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê." }, - "core/lib/bf-cache-strings.js | embedderExtensions": { - "message": "B̂áĉḱ/f̂ór̂ẃâŕd̂ ćâćĥé îś d̂íŝáb̂ĺêd́ d̂úê t́ô éx̂t́êńŝíôńŝ." - }, "core/lib/bf-cache-strings.js | embedderExtensionSentMessageToCachedFrame": { "message": "Êx́t̂én̂śîón̂ś ŵít̂h́ l̂ón̂ǵ-l̂ív̂éd̂ ćôńn̂éĉt́îón̂ át̂t́êḿp̂t́êd́ t̂ó ŝén̂d́ m̂éŝśâǵêś t̂ó f̂ŕâḿêś îń b̂áĉḱ/f̂ór̂ẃâŕd̂ ćâćĥé." }, + "core/lib/bf-cache-strings.js | embedderExtensions": { + "message": "B̂áĉḱ/f̂ór̂ẃâŕd̂ ćâćĥé îś d̂íŝáb̂ĺêd́ d̂úê t́ô éx̂t́êńŝíôńŝ." + }, "core/lib/bf-cache-strings.js | embedderModalDialog": { "message": "M̂ód̂ál̂ d́îál̂óĝ śûćĥ áŝ f́ôŕm̂ ŕêśûb́m̂íŝśîón̂ ór̂ h́t̂t́p̂ ṕâśŝẃôŕd̂ d́îál̂óĝ ẃâś ŝh́ôẃn̂ f́ôŕ t̂h́ê ṕâǵê úp̂ón̂ ńâv́îǵât́îńĝ áŵáŷ." }, @@ -1820,12 +1877,6 @@ "core/lib/bf-cache-strings.js | haveInnerContents": { "message": "P̂áĝéŝ t́ĥát̂ úŝé p̂ór̂t́âĺŝ ár̂é n̂ót̂ ćûŕr̂én̂t́l̂ý êĺîǵîb́l̂é f̂ór̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê." }, - "core/lib/bf-cache-strings.js | HTTPMethodNotGET": { - "message": "Ôńl̂ý p̂áĝéŝ ĺôád̂éd̂ v́îá â ǴÊT́ r̂éq̂úêśt̂ ár̂é êĺîǵîb́l̂é f̂ór̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê." - }, - "core/lib/bf-cache-strings.js | HTTPStatusNotOK": { - "message": "Ôńl̂ý p̂áĝéŝ ẃît́ĥ á ŝt́ât́ûś ĉód̂é ôf́ 2X̂X́ ĉán̂ b́ê ćâćĥéd̂." - }, "core/lib/bf-cache-strings.js | idleManager": { "message": "P̂áĝéŝ t́ĥát̂ úŝé Îd́l̂éM̂án̂áĝér̂ ár̂é n̂ót̂ ćûŕr̂én̂t́l̂ý êĺîǵîb́l̂é f̂ór̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê." }, @@ -1847,9 +1898,6 @@ "core/lib/bf-cache-strings.js | internalError": { "message": "Îńt̂ér̂ńâĺ êŕr̂ór̂." }, - "core/lib/bf-cache-strings.js | JavaScriptExecution": { - "message": "Ĉh́r̂óm̂é d̂ét̂éĉt́êd́ âń ât́t̂ém̂ṕt̂ t́ô éx̂éĉút̂é Ĵáv̂áŜćr̂íp̂t́ ŵh́îĺê ín̂ t́ĥé ĉáĉh́ê." - }, "core/lib/bf-cache-strings.js | keepaliveRequest": { "message": "B̂áĉḱ/f̂ór̂ẃâŕd̂ ćâćĥé îś d̂íŝáb̂ĺêd́ d̂úê t́ô á k̂éêṕâĺîv́ê ŕêq́ûéŝt́." }, @@ -2063,12 +2111,12 @@ "core/lib/csp-evaluator.js | plainWildcards": { "message": "Âv́ôíd̂ úŝín̂ǵ p̂ĺâín̂ ẃîĺd̂ćâŕd̂ś ({keyword}) îń t̂h́îś d̂ír̂éĉt́îv́ê. Ṕl̂áîń ŵíl̂d́ĉár̂d́ŝ ál̂ĺôẃ ŝćr̂íp̂t́ŝ t́ô b́ê śôúr̂ćêd́ f̂ŕôḿ âń ûńŝáf̂é d̂óm̂áîń." }, - "core/lib/csp-evaluator.js | reportingDestinationMissing": { - "message": "N̂ó ĈŚP̂ ćôńf̂íĝúr̂éŝ á r̂ép̂ór̂t́îńĝ d́êśt̂ín̂át̂íôń. T̂h́îś m̂ák̂éŝ ít̂ d́îf́f̂íĉúl̂t́ t̂ó m̂áîńt̂áîń t̂h́ê ĆŜṔ ôv́êŕ t̂ím̂é âńd̂ ḿôńît́ôŕ f̂ór̂ án̂ý b̂ŕêák̂áĝéŝ." - }, "core/lib/csp-evaluator.js | reportToOnly": { "message": "T̂h́ê ŕêṕôŕt̂ín̂ǵ d̂éŝt́îńât́îón̂ íŝ ón̂ĺŷ ćôńf̂íĝúr̂éd̂ v́îá t̂h́ê ŕêṕôŕt̂-t́ô d́îŕêćt̂ív̂é. T̂h́îś d̂ír̂éĉt́îv́ê íŝ ón̂ĺŷ śûṕp̂ór̂t́êd́ îń Ĉh́r̂óm̂íûḿ-b̂áŝéd̂ b́r̂óŵśêŕŝ śô ít̂ íŝ ŕêćôḿm̂én̂d́êd́ t̂ó âĺŝó ûśê á `report-uri` d̂ír̂éĉt́îv́ê." }, + "core/lib/csp-evaluator.js | reportingDestinationMissing": { + "message": "N̂ó ĈŚP̂ ćôńf̂íĝúr̂éŝ á r̂ép̂ór̂t́îńĝ d́êśt̂ín̂át̂íôń. T̂h́îś m̂ák̂éŝ ít̂ d́îf́f̂íĉúl̂t́ t̂ó m̂áîńt̂áîń t̂h́ê ĆŜṔ ôv́êŕ t̂ím̂é âńd̂ ḿôńît́ôŕ f̂ór̂ án̂ý b̂ŕêák̂áĝéŝ." + }, "core/lib/csp-evaluator.js | strictDynamic": { "message": "Ĥóŝt́ âĺl̂óŵĺîśt̂ś ĉán̂ f́r̂éq̂úêńt̂ĺŷ b́ê b́ŷṕâśŝéd̂. Ćôńŝíd̂ér̂ úŝín̂ǵ ĈŚP̂ ńôńĉéŝ ór̂ h́âśĥéŝ ín̂śt̂éâd́, âĺôńĝ ẃît́ĥ `'strict-dynamic'` íf̂ ńêćêśŝár̂ý." }, @@ -2096,6 +2144,9 @@ "core/lib/deprecations-strings.js | AuthorizationCoveredByWildcard": { "message": "Âút̂h́ôŕîźât́îón̂ ẃîĺl̂ ńôt́ b̂é ĉóv̂ér̂éd̂ b́ŷ t́ĥé ŵíl̂d́ĉár̂d́ ŝým̂b́ôĺ (*) îń ĈÓR̂Ś `Access-Control-Allow-Headers` ĥán̂d́l̂ín̂ǵ." }, + "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": { + "message": "T̂h́ê `disableRemotePlayback` át̂t́r̂íb̂út̂é ŝh́ôúl̂d́ b̂é ûśêd́ îń ôŕd̂ér̂ t́ô d́îśâb́l̂é t̂h́ê d́êf́âúl̂t́ Ĉáŝt́ îńt̂éĝŕât́îón̂ ín̂śt̂éâd́ ôf́ ûśîńĝ `-internal-media-controls-overlay-cast-button` śêĺêćt̂ór̂." + }, "core/lib/deprecations-strings.js | CanRequestURLHTTPContainingNewline": { "message": "R̂éŝóûŕĉé r̂éq̂úêśt̂ś ŵh́ôśê ÚR̂Ĺŝ ćôńt̂áîńêd́ b̂ót̂h́ r̂ém̂óv̂éd̂ ẃĥít̂éŝṕâćê `(n|r|t)` ćĥár̂áĉt́êŕŝ án̂d́ l̂éŝś-t̂h́âń ĉh́âŕâćt̂ér̂ś (`<`) âŕê b́l̂óĉḱêd́. P̂ĺêáŝé r̂ém̂óv̂é n̂éŵĺîńêś âńd̂ én̂ćôd́ê ĺêśŝ-t́ĥán̂ ćĥár̂áĉt́êŕŝ f́r̂óm̂ ṕl̂áĉéŝ ĺîḱê él̂ém̂én̂t́ ât́t̂ŕîb́ût́ê v́âĺûéŝ ín̂ ór̂d́êŕ t̂ó l̂óâd́ t̂h́êśê ŕêśôúr̂ćêś." }, @@ -2120,8 +2171,8 @@ "core/lib/deprecations-strings.js | CrossOriginWindowConfirm": { "message": "T̂ŕîǵĝér̂ín̂ǵ ŵín̂d́ôẃ.ĉón̂f́îŕm̂ f́r̂óm̂ ćr̂óŝś ôŕîǵîń îf́r̂ám̂éŝ h́âś b̂éêń d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́ îń t̂h́ê f́ût́ûŕê." }, - "core/lib/deprecations-strings.js | CSSSelectorInternalMediaControlsOverlayCastButton": { - "message": "T̂h́ê `disableRemotePlayback` át̂t́r̂íb̂út̂é ŝh́ôúl̂d́ b̂é ûśêd́ îń ôŕd̂ér̂ t́ô d́îśâb́l̂é t̂h́ê d́êf́âúl̂t́ Ĉáŝt́ îńt̂éĝŕât́îón̂ ín̂śt̂éâd́ ôf́ ûśîńĝ `-internal-media-controls-overlay-cast-button` śêĺêćt̂ór̂." + "core/lib/deprecations-strings.js | DOMMutationEvents": { + "message": "D̂ÓM̂ Ḿût́ât́îón̂ Év̂én̂t́ŝ, ín̂ćl̂úd̂ín̂ǵ `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, âńd̂ `DOMCharacterDataModified` ár̂é d̂ép̂ŕêćât́êd́ (ĥt́t̂ṕŝ://ẃ3ĉ.ǵît́ĥúb̂.íô/úîév̂én̂t́ŝ/#ĺêǵâćŷ-év̂én̂t́-t̂ýp̂éŝ) án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê úŝé `MutationObserver` îńŝt́êád̂." }, "core/lib/deprecations-strings.js | DataUrlInSvgUse": { "message": "Ŝúp̂ṕôŕt̂ f́ôŕ d̂át̂á: ÛŔL̂ś îń ŜV́Ĝ <úŝé> êĺêḿêńt̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ît́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." @@ -2129,9 +2180,6 @@ "core/lib/deprecations-strings.js | DocumentDomainSettingWithoutOriginAgentClusterHeader": { "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂ó ĉón̂t́îńûé ûśîńĝ t́ĥíŝ f́êát̂úr̂é, p̂ĺêáŝé ôṕt̂-óût́ ôf́ ôŕîǵîń-k̂éŷéd̂ áĝén̂t́ ĉĺûśt̂ér̂ś b̂ý ŝén̂d́îńĝ án̂ `Origin-Agent-Cluster: ?0` h́êád̂ér̂ ál̂ón̂ǵ ŵít̂h́ t̂h́ê H́T̂T́P̂ ŕêśp̂ón̂śê f́ôŕ t̂h́ê d́ôćûḿêńt̂ án̂d́ f̂ŕâḿêś. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/b̂ĺôǵ/îḿm̂út̂áb̂ĺê-d́ôćûḿêńt̂-d́ôḿâín̂/ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." }, - "core/lib/deprecations-strings.js | DOMMutationEvents": { - "message": "D̂ÓM̂ Ḿût́ât́îón̂ Év̂én̂t́ŝ, ín̂ćl̂úd̂ín̂ǵ `DOMSubtreeModified`, `DOMNodeInserted`, `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, `DOMNodeInsertedIntoDocument`, âńd̂ `DOMCharacterDataModified` ár̂é d̂ép̂ŕêćât́êd́ (ĥt́t̂ṕŝ://ẃ3ĉ.ǵît́ĥúb̂.íô/úîév̂én̂t́ŝ/#ĺêǵâćŷ-év̂én̂t́-t̂ýp̂éŝ) án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê úŝé `MutationObserver` îńŝt́êád̂." - }, "core/lib/deprecations-strings.js | ExpectCTHeader": { "message": "T̂h́ê `Expect-CT` h́êád̂ér̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂. Ćĥŕôḿê ŕêq́ûír̂éŝ Ćêŕt̂íf̂íĉát̂é T̂ŕâńŝṕâŕêńĉý f̂ór̂ ál̂ĺ p̂úb̂ĺîćl̂ý t̂ŕûśt̂éd̂ ćêŕt̂íf̂íĉát̂éŝ íŝśûéd̂ áf̂t́êŕ Âṕr̂íl̂ 30, 2018." }, @@ -2165,12 +2213,12 @@ "core/lib/deprecations-strings.js | MediaSourceDurationTruncatingBuffered": { "message": "Ŝét̂t́îńĝ `MediaSource.duration` b́êĺôẃ t̂h́ê h́îǵĥéŝt́ p̂ŕêśêńt̂át̂íôń t̂ím̂éŝt́âḿp̂ óf̂ án̂ý b̂úf̂f́êŕêd́ ĉód̂éd̂ f́r̂ám̂éŝ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ f̂ór̂ ím̂ṕl̂íĉít̂ ŕêḿôv́âĺ ôf́ t̂ŕûńĉát̂éd̂ b́ûf́f̂ér̂éd̂ ḿêd́îá ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ p̂ér̂f́ôŕm̂ éx̂ṕl̂íĉít̂ `remove(newDuration, oldDuration)` ón̂ ál̂ĺ `sourceBuffers`, ŵh́êŕê `newDuration < oldDuration`." }, - "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": { - "message": "T̂h́ê ól̂d́êŕ, n̂ón̂-śt̂án̂d́âŕd̂íẑéd̂ `shadowroot` át̂t́r̂íb̂út̂é îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ *ńô ĺôńĝér̂ f́ûńĉt́îón̂* ín̂ Ḿ119. P̂ĺêáŝé ûśê t́ĥé n̂éŵ, śt̂án̂d́âŕd̂íẑéd̂ `shadowrootmode` át̂t́r̂íb̂út̂é îńŝt́êád̂." - }, "core/lib/deprecations-strings.js | NoSysexWebMIDIWithoutPermission": { "message": "Ŵéb̂ ḾÎD́Î ẃîĺl̂ áŝḱ â ṕêŕm̂íŝśîón̂ t́ô úŝé êv́êń îf́ t̂h́ê śŷśêx́ îś n̂ót̂ śp̂éĉíf̂íêd́ îń t̂h́ê `MIDIOptions`." }, + "core/lib/deprecations-strings.js | NonStandardDeclarativeShadowDOM": { + "message": "T̂h́ê ól̂d́êŕ, n̂ón̂-śt̂án̂d́âŕd̂íẑéd̂ `shadowroot` át̂t́r̂íb̂út̂é îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ *ńô ĺôńĝér̂ f́ûńĉt́îón̂* ín̂ Ḿ119. P̂ĺêáŝé ûśê t́ĥé n̂éŵ, śt̂án̂d́âŕd̂íẑéd̂ `shadowrootmode` át̂t́r̂íb̂út̂é îńŝt́êád̂." + }, "core/lib/deprecations-strings.js | NotificationInsecureOrigin": { "message": "T̂h́ê Ńôt́îf́îćât́îón̂ ÁP̂Í m̂áŷ ńô ĺôńĝér̂ b́ê úŝéd̂ f́r̂óm̂ ín̂śêćûŕê ór̂íĝín̂ś. Ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." }, @@ -2207,30 +2255,24 @@ "core/lib/deprecations-strings.js | PrefixedVideoDisplayingFullscreen": { "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́D̂íŝṕl̂áŷín̂ǵF̂úl̂ĺŝćr̂éêń îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê D́ôćûḿêńt̂.f́ûĺl̂śĉŕêén̂Él̂ém̂én̂t́ îńŝt́êád̂." }, - "core/lib/deprecations-strings.js | PrefixedVideoEnterFullscreen": { - "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Êńt̂ér̂F́ûĺl̂śĉŕêén̂() íŝ d́êṕr̂éĉát̂éd̂. Ṕl̂éâśê úŝé Êĺêḿêńt̂.ŕêq́ûéŝt́F̂úl̂ĺŝćr̂éêń() îńŝt́êád̂." - }, "core/lib/deprecations-strings.js | PrefixedVideoEnterFullScreen": { "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Êńt̂ér̂F́ûĺl̂Śĉŕêén̂() íŝ d́êṕr̂éĉát̂éd̂. Ṕl̂éâśê úŝé Êĺêḿêńt̂.ŕêq́ûéŝt́F̂úl̂ĺŝćr̂éêń() îńŝt́êád̂." }, - "core/lib/deprecations-strings.js | PrefixedVideoExitFullscreen": { - "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Êx́ît́F̂úl̂ĺŝćr̂éêń() îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê D́ôćûḿêńt̂.éx̂ít̂F́ûĺl̂śĉŕêén̂() ín̂śt̂éâd́." + "core/lib/deprecations-strings.js | PrefixedVideoEnterFullscreen": { + "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Êńt̂ér̂F́ûĺl̂śĉŕêén̂() íŝ d́êṕr̂éĉát̂éd̂. Ṕl̂éâśê úŝé Êĺêḿêńt̂.ŕêq́ûéŝt́F̂úl̂ĺŝćr̂éêń() îńŝt́êád̂." }, "core/lib/deprecations-strings.js | PrefixedVideoExitFullScreen": { "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Êx́ît́F̂úl̂ĺŜćr̂éêń() îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê D́ôćûḿêńt̂.éx̂ít̂F́ûĺl̂śĉŕêén̂() ín̂śt̂éâd́." }, + "core/lib/deprecations-strings.js | PrefixedVideoExitFullscreen": { + "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Êx́ît́F̂úl̂ĺŝćr̂éêń() îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê D́ôćûḿêńt̂.éx̂ít̂F́ûĺl̂śĉŕêén̂() ín̂śt̂éâd́." + }, "core/lib/deprecations-strings.js | PrefixedVideoSupportsFullscreen": { "message": "ĤT́M̂ĹV̂íd̂éôÉl̂ém̂én̂t́.ŵéb̂ḱît́Ŝúp̂ṕôŕt̂śF̂úl̂ĺŝćr̂éêń îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê D́ôćûḿêńt̂.f́ûĺl̂śĉŕêén̂Én̂áb̂ĺêd́ îńŝt́êád̂." }, "core/lib/deprecations-strings.js | PrivacySandboxExtensionsAPI": { "message": "Ŵé'r̂é d̂ép̂ŕêćât́îńĝ t́ĥé ÂṔÎ `chrome.privacy.websites.privacySandboxEnabled`, t́ĥóûǵĥ ít̂ ẃîĺl̂ ŕêḿâín̂ áĉt́îv́ê f́ôŕ b̂áĉḱŵár̂d́ ĉóm̂ṕât́îb́îĺît́ŷ ún̂t́îĺ r̂él̂éâśê Ḿ113. Îńŝt́êád̂, ṕl̂éâśê úŝé `chrome.privacy.websites.topicsEnabled`, `chrome.privacy.websites.fledgeEnabled` âńd̂ `chrome.privacy.websites.adMeasurementEnabled`. Śêé ĥt́t̂ṕŝ://d́êv́êĺôṕêŕ.ĉh́r̂óm̂é.ĉóm̂/d́ôćŝ/éx̂t́êńŝíôńŝ/ŕêf́êŕêńĉé/p̂ŕîv́âćŷ/#ṕr̂óp̂ér̂t́ŷ-ẃêb́ŝít̂éŝ-ṕr̂ív̂áĉýŜán̂d́b̂óx̂Én̂áb̂ĺêd́." }, - "core/lib/deprecations-strings.js | RangeExpand": { - "message": "R̂án̂ǵê.éx̂ṕâńd̂() íŝ d́êṕr̂éĉát̂éd̂. Ṕl̂éâśê úŝé Ŝél̂éĉt́îón̂.ḿôd́îf́ŷ() ín̂śt̂éâd́." - }, - "core/lib/deprecations-strings.js | RequestedSubresourceWithEmbeddedCredentials": { - "message": "Ŝúb̂ŕêśôúr̂ćê ŕêq́ûéŝt́ŝ ẃĥóŝé ÛŔL̂ś ĉón̂t́âín̂ ém̂b́êd́d̂éd̂ ćr̂éd̂én̂t́îál̂ś (ê.ǵ. `https://user:pass@host/`) âŕê b́l̂óĉḱêd́." - }, "core/lib/deprecations-strings.js | RTCConstraintEnableDtlsSrtpFalse": { "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `false` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ îś îńt̂ér̂ṕr̂ét̂éd̂ áŝ án̂ át̂t́êḿp̂t́ t̂ó ûśê t́ĥé r̂ém̂óv̂éd̂ `SDES key negotiation` ḿêt́ĥód̂. T́ĥíŝ f́ûńĉt́îón̂ál̂ít̂ý îś r̂ém̂óv̂éd̂; úŝé â śêŕv̂íĉé t̂h́ât́ ŝúp̂ṕôŕt̂ś `DTLS key negotiation` îńŝt́êád̂." }, @@ -2240,6 +2282,12 @@ "core/lib/deprecations-strings.js | RTCPeerConnectionGetStatsLegacyNonCompliant": { "message": "T̂h́ê ćâĺl̂b́âćk̂-b́âśêd́ ĝét̂Śt̂át̂ś() îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́. Ûśê t́ĥé ŝṕêć-ĉóm̂ṕl̂íâńt̂ ǵêt́Ŝt́ât́ŝ() ín̂śt̂éâd́." }, + "core/lib/deprecations-strings.js | RangeExpand": { + "message": "R̂án̂ǵê.éx̂ṕâńd̂() íŝ d́êṕr̂éĉát̂éd̂. Ṕl̂éâśê úŝé Ŝél̂éĉt́îón̂.ḿôd́îf́ŷ() ín̂śt̂éâd́." + }, + "core/lib/deprecations-strings.js | RequestedSubresourceWithEmbeddedCredentials": { + "message": "Ŝúb̂ŕêśôúr̂ćê ŕêq́ûéŝt́ŝ ẃĥóŝé ÛŔL̂ś ĉón̂t́âín̂ ém̂b́êd́d̂éd̂ ćr̂éd̂én̂t́îál̂ś (ê.ǵ. `https://user:pass@host/`) âŕê b́l̂óĉḱêd́." + }, "core/lib/deprecations-strings.js | RtcpMuxPolicyNegotiate": { "message": "T̂h́ê `rtcpMuxPolicy` óp̂t́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." }, @@ -2381,12 +2429,12 @@ "core/lib/i18n/i18n.js | ms": { "message": "{timeInMs, number, milliseconds} m̂ś" }, - "core/lib/i18n/i18n.js | otherResourcesLabel": { - "message": "Ôt́ĥér̂ ŕêśôúr̂ćêś" - }, "core/lib/i18n/i18n.js | otherResourceType": { "message": "Ôt́ĥér̂" }, + "core/lib/i18n/i18n.js | otherResourcesLabel": { + "message": "Ôt́ĥér̂ ŕêśôúr̂ćêś" + }, "core/lib/i18n/i18n.js | scriptResourceType": { "message": "Ŝćr̂íp̂t́" }, @@ -2621,6 +2669,72 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "L̂íĝh́t̂h́ôúŝé Ûśêŕ F̂ĺôẃ R̂ép̂ór̂t́" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "L̂áŷóût́ ŝh́îf́t̂ś ôćĉúr̂ ẃĥén̂ él̂ém̂én̂t́ŝ ḿôv́ê áb̂śêńt̂ án̂ý ûśêŕ îńt̂ér̂áĉt́îón̂. [Ín̂v́êśt̂íĝát̂é t̂h́ê ćâúŝéŝ óf̂ ĺâýôút̂ śĥíf̂t́ŝ](https://web.dev/articles/optimize-cls), śûćĥ áŝ él̂ém̂én̂t́ŝ b́êín̂ǵ âd́d̂éd̂, ŕêḿôv́êd́, ôŕ t̂h́êír̂ f́ôńt̂ś ĉh́âńĝín̂ǵ âś t̂h́ê ṕâǵê ĺôád̂ś." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "L̂áŷóût́ ŝh́îf́t̂ ćûĺp̂ŕît́ŝ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Ŷóûŕ f̂ír̂śt̂ ńêt́ŵór̂ḱ r̂éq̂úêśt̂ íŝ t́ĥé m̂óŝt́ îḿp̂ór̂t́âńt̂. Ŕêd́ûćê ít̂ś l̂át̂én̂ćŷ b́ŷ áv̂óîd́îńĝ ŕêd́îŕêćt̂ś, êńŝúr̂ín̂ǵ â f́âśt̂ śêŕv̂ér̂ ŕêśp̂ón̂śê, án̂d́ êńâb́l̂ín̂ǵ t̂éx̂t́ ĉóm̂ṕr̂éŝśîón̂." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "D̂óĉúm̂én̂t́ r̂éq̂úêśt̂ ĺât́êńĉý" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Ĉón̂śîd́êŕ ŝét̂t́îńĝ [font-display](https://developer.chrome.com/blog/font-display) t́ô swap ór̂ optional t́ô én̂śûŕê t́êx́t̂ íŝ ćôńŝíŝt́êńt̂ĺŷ v́îśîb́l̂é. swap ĉán̂ b́ê f́ûŕt̂h́êŕ ôṕt̂ím̂íẑéd̂ t́ô ḿît́îǵât́ê ĺâýôút̂ śĥíf̂t́ŝ ẃît́ĥ [f́ôńt̂ ḿêt́r̂íĉ óv̂ér̂ŕîd́êś](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "F̂ón̂t́ d̂íŝṕl̂áŷ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": { + "message": "R̂éd̂úĉín̂ǵ t̂h́ê d́ôẃn̂ĺôád̂ t́îḿê óf̂ ím̂áĝéŝ ćâń îḿp̂ŕôv́ê t́ĥé p̂ér̂ćêív̂éd̂ ĺôád̂ t́îḿê óf̂ t́ĥé p̂áĝé âńd̂ ĹĈṔ. [L̂éâŕn̂ ḿôŕê áb̂óût́ ôṕt̂ím̂íẑín̂ǵ îḿâǵê śîźê](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": { + "message": "Îḿp̂ŕôv́ê ím̂áĝé d̂él̂ív̂ér̂ý" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Ŝt́âŕt̂ ín̂v́êśt̂íĝát̂ín̂ǵ ŵít̂h́ t̂h́ê ĺôńĝéŝt́ p̂h́âśê. [D́êĺâýŝ ćâń b̂é m̂ín̂ím̂íẑéd̂](https://web.dev/articles/optimize-inp#optimize_interactions). T́ô ŕêd́ûćê ṕr̂óĉéŝśîńĝ d́ûŕât́îón̂, [óp̂t́îḿîźê t́ĥé m̂áîń-t̂h́r̂éâd́ ĉóŝt́ŝ](https://web.dev/articles/optimize-long-tasks), óf̂t́êń ĴŚ." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "ÎŃP̂ b́ŷ ṕĥáŝé" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Ôṕt̂ím̂íẑé L̂ĆP̂ b́ŷ ḿâḱîńĝ t́ĥé L̂ĆP̂ ím̂áĝé [d̂íŝćôv́êŕâb́l̂é](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) f̂ŕôḿ t̂h́ê H́T̂ḾL̂ ím̂ḿêd́îát̂él̂ý, âńd̂ [áv̂óîd́îńĝ ĺâźŷ-ĺôád̂ín̂ǵ](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "L̂ĆP̂ ŕêq́ûéŝt́ d̂íŝćôv́êŕŷ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Êáĉh́ [p̂h́âśê h́âś ŝṕêćîf́îć îḿp̂ŕôv́êḿêńt̂ śt̂ŕât́êǵîéŝ](https://web.dev/articles/optimize-lcp#lcp-breakdown). Íd̂éâĺl̂ý, m̂óŝt́ ôf́ t̂h́ê ĹĈṔ t̂ím̂é ŝh́ôúl̂d́ b̂é ŝṕêńt̂ ón̂ ĺôád̂ín̂ǵ t̂h́ê ŕêśôúr̂ćêś, n̂ót̂ ẃît́ĥín̂ d́êĺâýŝ." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "L̂ĆP̂ b́ŷ ṕĥáŝé" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "R̂éq̂úêśt̂ś âŕê b́l̂óĉḱîńĝ t́ĥé p̂áĝé'ŝ ín̂ít̂íâĺ r̂én̂d́êŕ, ŵh́îćĥ ḿâý d̂él̂áŷ ĹĈṔ. [D̂éf̂ér̂ŕîńĝ ór̂ ín̂ĺîńîńĝ](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) ćâń m̂óv̂é t̂h́êśê ńêt́ŵór̂ḱ r̂éq̂úêśt̂ś ôút̂ óf̂ t́ĥé ĉŕît́îćâĺ p̂át̂h́." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "R̂én̂d́êŕ b̂ĺôćk̂ín̂ǵ r̂éq̂úêśt̂ś" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Îf́ R̂éĉál̂ćûĺât́ê Śt̂ýl̂é ĉóŝt́ŝ ŕêḿâín̂ h́îǵĥ, śêĺêćt̂ór̂ óp̂t́îḿîźât́îón̂ ćâń r̂éd̂úĉé t̂h́êḿ. [Ôṕt̂ím̂íẑé t̂h́ê śêĺêćt̂ór̂ś](https://developer.chrome.com/docs/devtools/performance/selector-stats) ŵít̂h́ b̂ót̂h́ ĥíĝh́ êĺâṕŝéd̂ t́îḿê án̂d́ ĥíĝh́ ŝĺôẃ-p̂át̂h́ %. Ŝím̂ṕl̂ér̂ śêĺêćt̂ór̂ś, f̂éŵér̂ śêĺêćt̂ór̂ś, â śm̂ál̂ĺêŕ D̂ÓM̂, án̂d́ â śĥál̂ĺôẃêŕ D̂ÓM̂ ẃîĺl̂ ál̂ĺ r̂éd̂úĉé m̂át̂ćĥín̂ǵ ĉóŝt́ŝ." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "ĈŚŜ Śêĺêćt̂ór̂ ćôśt̂ś" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "T̂h́îŕd̂ ṕâŕt̂ý ĉód̂é ĉán̂ śîǵn̂íf̂íĉán̂t́l̂ý îḿp̂áĉt́ l̂óâd́ p̂ér̂f́ôŕm̂án̂ćê. [Ŕêd́ûćê án̂d́ d̂éf̂ér̂ ĺôád̂ín̂ǵ ôf́ t̂h́îŕd̂ ṕâŕt̂ý ĉód̂é](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) t̂ó p̂ŕîór̂ít̂íẑé ŷóûŕ p̂áĝé'ŝ ćôńt̂én̂t́." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "T̂h́îŕd̂ ṕâŕt̂íêś" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "T̂h́ê ṕâǵê'ś v̂íêẃp̂ór̂t́ îś n̂ót̂ ḿôb́îĺê-óp̂t́îḿîźêd́, ŝó t̂áp̂ ín̂t́êŕâćt̂íôńŝ ḿâý b̂é [d̂él̂áŷéd̂ b́ŷ úp̂ t́ô 300 ḿŝ](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "V̂íêẃp̂ór̂t́ n̂ót̂ óp̂t́îḿîźêd́ f̂ór̂ ḿôb́îĺê" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "F̂ór̂ án̂ím̂át̂éd̂ ćôńt̂én̂t́, ûśê [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) t́ô ḿîńîḿîźê ĆP̂Ú ûśâǵê ẃĥén̂ t́ĥé ĉón̂t́êńt̂ íŝ óf̂f́ŝćr̂éêń." }, @@ -3128,12 +3242,12 @@ "report/renderer/report-utils.js | dropdownSaveJSON": { "message": "Ŝáv̂é âś ĴŚÔŃ" }, - "report/renderer/report-utils.js | dropdownViewer": { - "message": "Ôṕêń îń V̂íêẃêŕ" - }, "report/renderer/report-utils.js | dropdownViewUnthrottledTrace": { "message": "V̂íêẃ Ûńt̂h́r̂ót̂t́l̂éd̂ T́r̂áĉé" }, + "report/renderer/report-utils.js | dropdownViewer": { + "message": "Ôṕêń îń V̂íêẃêŕ" + }, "report/renderer/report-utils.js | errorLabel": { "message": "Êŕr̂ór̂!" },
diff --git a/front_end/third_party/lighthouse/locales/es-419.json b/front_end/third_party/lighthouse/locales/es-419.json index db91a13..dca9561 100644 --- a/front_end/third_party/lighthouse/locales/es-419.json +++ b/front_end/third_party/lighthouse/locales/es-419.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Informe del flujo de usuarios de Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Los cambios de diseño ocurren cuando los elementos se mueven sin interacción del usuario. [Investiga las causas de los cambios de diseño](https://web.dev/articles/optimize-cls), como elementos que se agregan o quitan, o bien cambios en sus fuentes a medida que se carga la página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Causantes del cambio de diseño" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Tu primera solicitud de red es la más importante. Para reducir la latencia, evita las redirecciones, garantiza una respuesta rápida del servidor y habilita la compresión de texto." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latencia de solicitud de documentos" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Te recomendamos establecer [font-display](https://developer.chrome.com/blog/font-display) en swap o optional para garantizar que el texto aparezca de forma coherente. swap se puede optimizar aún más para mitigar los cambios de diseño con [anulaciones de métricas de fuentes](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Visualización de la fuente" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Comienza a investigar con la fase más larga. [Los retrasos se pueden minimizar](https://web.dev/articles/optimize-inp#optimize_interactions). Para reducir la duración del procesamiento, [optimiza los costos del subproceso principal](https://web.dev/articles/optimize-long-tasks), a menudo JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Para optimizar el LCP, haz que la imagen del LCP sea [detectable](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) desde el HTML de inmediato y [evita la carga diferida](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Descubrimiento de solicitudes de LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Cada [fase tiene estrategias de mejora específicas](https://web.dev/articles/optimize-lcp#lcp-breakdown). Lo ideal es que la mayor parte del tiempo de LCP se dedique a cargar los recursos, no a los retrasos." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Las solicitudes bloquean la renderización inicial de la página, lo que puede retrasar el LCP. [La aparición diferida o intercalada](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) puede mover estas solicitudes de red fuera de la ruta crítica." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Solicitudes de bloqueo de renderización" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Si los costos de recalcular el estilo siguen siendo altos, la optimización del selector puede reducirlos. [Optimiza los selectores](https://developer.chrome.com/docs/devtools/performance/selector-stats) con un tiempo transcurrido alto y un alto porcentaje de rutas lentas. Los selectores más simples, una cantidad menor de selectores, un DOM más pequeño y un DOM más superficial reducirán los costos de coincidencia." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Costos del selector CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "El código de terceros puede reducir en gran medida el rendimiento de carga. [Reduce y aplaza la carga de código de terceros](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) para priorizar el contenido de tu página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Terceros" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "El viewport no está optimizado para dispositivos móviles, por lo que las interacciones de toque pueden [retrasarse hasta 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "El viewport no está optimizado para dispositivos móviles" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "En el caso de contenido animado, utiliza [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) para minimizar el uso de CPU mientras el contenido no aparezca en pantalla." }, @@ -2658,55 +2718,55 @@ "message": "Se recomienda usar la utilidad de `BreakpointObserver` en el kit de desarrollo de componentes (CDK) para administrar las interrupciones de imágenes. [Obtén más información](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Puedes subir tu `GIF` a un servicio que permita incorporarlo como un video HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Puedes configurar [formatos de imagen WebP con un estilo conversor de imágenes ](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) en tu sitio." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Recomendamos configurar la carga diferida de imágenes en `Drupal`. Los formateadores de campo para imágenes admiten `lazy` o `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Si se agrega el elemento LCP de forma dinámica a la página, debes optimizar la imagen para mejorar LCP. [Obtén más información](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Las redirecciones provocan retrasos adicionales antes de que la página se cargue. Si se instaló el módulo [Redirect](https://www.drupal.org/project/redirect), revisa si se pueden quitar las redirecciones innecesarias. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Se recomienda usar [un módulo](https://www.drupal.org/project/critical_css) para intercalar instancias críticas de CSS y JavaScript, y usar el atributo de aplazamiento para CSS o JavaScript no críticos." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Reduce el tráfico con uno o más módulos de almacenamiento en caché de `Drupal`, como `Internal Page Cache`, `Internal Dynamic Page Cache` y `BigPipe`. Combínalos con una CDN para mejorar aún más el tiempo de respuesta. Los servidores de hosting deben usar PHP OPcache. Recomendamos usar la caché de la memoria, como Redis o Memcached, para reducir los tiempos de búsqueda en la base de datos. Por último, usa temas con buen rendimiento, módulos y servidores más veloces para reducir el tiempo de respuesta del servidor." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Se recomienda usar [estilos de imágenes responsivas](https://www.drupal.org/documentation/modules/responsive_image) para reducir el tamaño de las imágenes que se cargan en la página. Si usas `Views` para mostrar elementos de contenido múltiple en una página, puedes implementar la paginación para limitar el número de elementos de contenido que se muestran en una página en particular." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Asegúrate de habilitar \"Aggregate CSS files\" en la página \"Administration » Configuration » Development\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Asegúrate de habilitar \"Aggregate JavaScript files\" en la página \"Administration » Configuration » Development\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Se recomienda quitar las reglas de CSS no utilizadas y solo adjuntar las bibliotecas de `Drupal` necesarias al componente o a la página correspondientes. Consulta la [`Drupal`documentación](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) para obtener información detallada. Para identificar las bibliotecas adjuntas que agregan instancias innecesarias de CSS, prueba ejecutar la [cobertura de código](https://developer.chrome.com/docs/devtools/coverage) en Herramientas para desarrolladores de Chrome. Puedes identificar el tema o el módulo responsable en la URL de la hoja de estilo cuando está inhabilitada la agregación de CSS en tu sitio de `Drupal`. Presta atención a los temas o módulos que tengan varias hojas de estilo en la lista con muchos elementos en rojo en la cobertura de código. Los temas o módulos solo deben adjuntar una biblioteca de hojas de estilo que se use en la página." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Se recomienda quitar los recursos de JavaScript no utilizados y solo adjuntar las bibliotecas de `Drupal` necesarias al componente o a la página pertinentes. Para obtener información detallada, consulta la [documentación de Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Para identificar las bibliotecas adjuntas que agregan instancias innecesarias de JavaScript, prueba ejecutar la [cobertura de código](https://developer.chrome.com/docs/devtools/coverage) en Herramientas para desarrolladores de Chrome. Puedes identificar el tema o el módulo responsable en la URL de la secuencia de comandos cuando está inhabilitada la agregación de JavaScript en tu sitio de `Drupal`. Presta atención a los temas o módulos que tengan varias secuencias de comandos en la lista con muchos elementos en rojo en la cobertura de código. Los temas o módulos solo deben adjuntar una biblioteca de secuencias de comandos que se use en la página." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Establece \"Browser and proxy cache maximum age\" en la página \"Administration » Configuration » Development\". Obtén más información sobre [la caché de `Drupal` y cómo mejorar el rendimiento](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Se recomienda usar [un módulo](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) que optimice y reduzca de forma automática el tamaño de las imágenes que se cargan en el sitio y que conserve su calidad. Además, asegúrate de usar los [estilos de imágenes responsivas](https://www.drupal.org/documentation/modules/responsive_image) que proporciona `Drupal` para todas las imágenes renderizadas en el sitio." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Para agregar las sugerencias de recursos `Preconnect` o `dns-prefetch`, instala y configura [un módulo](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) que proporcione elementos para las sugerencias de recursos del usuario-agente." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Asegúrate de usar los [estilos de imágenes responsivas](https://www.drupal.org/documentation/modules/responsive_image) que proporciona `Drupal`. Utiliza los estilos de imágenes responsivas cuando renderizas campos de imágenes a través de modos de lectura, vistas o imágenes subidas a través del editor WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Los recursos basados en texto se deben publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. Recomendamos usar una CDN que lo admita de forma nativa, o configurar el servidor web para realizar esta operación. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Utiliza [Ezoic Leap](https://pubdash.ezoic.com/speed) y habilita `Optimize Fonts` para que se aplique de forma automática la función de CSS `font-display`. De esta manera, te aseguras de que el texto sea visible para los usuarios mientras se cargan las fuentes para sitios web." @@ -3036,7 +3096,7 @@ "message": "Existen varios complementos de WordPress que pueden ayudarte a [insertar elementos fundamentales](https://wordpress.org/plugins/search/critical+css/) o a [postergar recursos menos importantes](https://wordpress.org/plugins/search/defer+css+javascript/). Ten en cuenta que las optimizaciones que ofrecen estos complementos pueden interferir con funciones de tu tema o complementos, por lo que seguramente tengas que hacer cambios en el código." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Elige un tema liviano (idealmente, un tema de bloques) y, luego, implementa el almacenamiento en caché de la página completa o una solución de sitio estático. Inhabilita los complementos innecesarios para minimizar la sobrecarga del servidor. Recomendamos actualizar tu hosting a un servicio administrado o dedicado." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Puedes mostrar fragmentos en tus listas de entradas (por ejemplo, mediante la etiqueta \"<more>\"), reducir la cantidad de entradas que se muestran en cada página, dividir tus entradas más largas en múltiples páginas o usar un complemento para postergar la carga de los comentarios."
diff --git a/front_end/third_party/lighthouse/locales/es.json b/front_end/third_party/lighthouse/locales/es.json index 7ab0d29..d742f83 100644 --- a/front_end/third_party/lighthouse/locales/es.json +++ b/front_end/third_party/lighthouse/locales/es.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Informe de flujo de usuarios de Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Los cambios de diseño se producen cuando los elementos se mueven sin que el usuario interactúe con ellos. [Investiga las causas de los cambios de diseño](https://web.dev/articles/optimize-cls), como la adición o eliminación de elementos o el cambio de fuentes a medida que se carga la página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Causantes de los cambios de diseño" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "La primera solicitud de red es la más importante. Reduce la latencia evitando las redirecciones, asegurándote de que el servidor responda rápido y habilitando la compresión de texto." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latencia de solicitud del documento" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Te recomendamos asignar el valor swap o optional a [font-display](https://developer.chrome.com/blog/font-display) para asegurarte de que el texto se vea de forma coherente. swap se puede optimizar aún más para mitigar los cambios de diseño con [anulaciones de métricas de fuente](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Visualización de fuentes" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Empieza a investigar por la fase más larga. [Se pueden minimizar los retrasos](https://web.dev/articles/optimize-inp#optimize_interactions). Para reducir el tiempo de procesamiento, [optimiza los costes del hilo principal](https://web.dev/articles/optimize-long-tasks), que suelen ser de JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimiza el LCP haciendo [descubrible](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) la imagen de LCP desde el HTML directamente y [evita la carga en diferido](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Descubrimiento de solicitudes de LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Cada [fase tiene estrategias de mejora específicas](https://web.dev/articles/optimize-lcp#lcp-breakdown). Lo ideal es que la mayor parte del tiempo de LCP se dedique a cargar los recursos, no a los retrasos." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Las solicitudes están bloqueando el renderizado inicial de la página, lo que puede retrasar el LCP. [Si se posponen o se insertan](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/), estas solicitudes de red pueden salir de la ruta crítica." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Solicitudes que bloquean el renderizado" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Si los costes de Recalcular estilo siguen siendo altos, la optimización del selector puede reducirlos. [Optimiza los selectores](https://developer.chrome.com/docs/devtools/performance/selector-stats) con alto tiempo transcurrido y alto porcentaje de ruta lenta. Selectores más simples, menos selectores, un DOM más pequeño y un DOM más superficial reducirán los costes de coincidencia." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Costes del selector de CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "El código de terceros puede afectar mucho a la velocidad de carga. [Reduce y aplaza la carga del código de terceros](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) para priorizar el contenido de tu página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Terceros" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "El viewport de la página no está optimizado para móviles, así que las interacciones de toque pueden [retrasarse hasta 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Viewport no optimizado para móviles" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "En el caso del contenido animado, usa [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) para reducir el uso de la CPU mientras el contenido no aparece en pantalla." },
diff --git a/front_end/third_party/lighthouse/locales/fi.json b/front_end/third_party/lighthouse/locales/fi.json index 83df013..e32f882 100644 --- a/front_end/third_party/lighthouse/locales/fi.json +++ b/front_end/third_party/lighthouse/locales/fi.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthousen käyttökulkuraportti" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Asettelun muutoksia tapahtuu, kun elementit liikkuvat ilman käyttäjän interaktioita. [Tutki asettelun muutosten syitä](https://web.dev/articles/optimize-cls), kuten elementtien lisäämistä, poistamista tai fonttien vaihtumista sivun latauksen aikana." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Asettelun muutoksen aiheuttajat" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Ensimmäinen verkkopyyntö on tärkein. Vähennä viivettä välttämällä uudelleenohjauksia, varmistamalla nopea palvelimen vaste ja ottamalla tekstin pakkaus käyttöön." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Dokumentin pyynnön viive" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Harkitse asettavasi [font-display](https://developer.chrome.com/blog/font-display) arvoon swap tai optional, niin varmistat, että teksti on aina näkyvissä. Optimointia (swap) voidaan lisätä, jotta asettelumuutoksia voidaan vähentää [fonttimittarin ohitusarvojen](https://developer.chrome.com/blog/font-fallbacks) avulla." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Fontin näyttö" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Aloita tutkinta pisimmästä vaiheesta. [Viiveet voidaan minimoida](https://web.dev/articles/optimize-inp#optimize_interactions). Voit lyhentää käsittelyaikaa [optimoimalla pääsäikeen kustannukset](https://web.dev/articles/optimize-long-tasks), usein JS:n." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP vaiheittain" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimoi LCP tekemällä LCP-kuvasta [löydettävä](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) HTML:stä heti ja [välttämällä laiskaa latautumista](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP-pyynnön löytäminen" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Kullakin [vaiheella on omat parantamisen strategiat](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ihanteellisesti suurin osa LCP-ajasta pitäisi käyttää resurssien lataamiseen, ei viivästyksiin." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP vaiheittain" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Pyynnöt estävät sivun ensimmäisen renderöinnin, joten LCP:ssä voi olla viiveitä. [Siirtäminen myöhemmäksi tai sisällyttäminen](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) voi poistaa nämä verkkopyynnöt kriittiseltä polulta." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Renderöinnin estopyyntö" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Jos \"Laske tyyli uudelleen\" ‑kustannukset ovat edelleen korkeita, valitsimen optimointi voi alentaa niitä. [Optimoi valitsimet](https://developer.chrome.com/docs/devtools/performance/selector-stats), kun sekä kulunut aika että hidas polku ovat korkeita. Yksinkertaiset valitsimet, vähemmän valitsimia, pienempi DOM ja matalampi DOM vähentävät vastaavuuskustannuksia." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS-valitsimen kustannukset" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kolmannen osapuolen koodi voi vaikuttaa lataustehokkuuteen merkittävästi. [Vähennä ja lykkää kolmannen osapuolen koodin lataamista](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) sivun sisällön priorisoimiseksi." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Kolmannet osapuolet" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Sivun näkymää ei ole optimoitu mobiililaitteille, joten napautusinteraktiot voivat [viivästyä jopa 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Näkymää ei ole optimoitu mobiililaitteille" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Käytä animoidun sisällön kanssa [`amp-anim`](https://amp.dev/documentation/components/amp-anim/)-ominaisuutta, joka minimoi suoritinkäytön, kun sisältö ei ole näytöllä." },
diff --git a/front_end/third_party/lighthouse/locales/fil.json b/front_end/third_party/lighthouse/locales/fil.json index 5f491b7..7d1ea56 100644 --- a/front_end/third_party/lighthouse/locales/fil.json +++ b/front_end/third_party/lighthouse/locales/fil.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Ulat ng Daloy ng User ng Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Nangyayari ang mga pagbabago sa layout kapag gumagalaw ang mga element nang walang anumang interaction ng user. [Siyasatin ang mga dahilan ng pagbabago sa layout](https://web.dev/articles/optimize-cls), tulad ng mga pagdaragdag ng mga element, pag-alis, o pagbabago ng mga font nito kapag naglo-load ang page." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Mga dahilan ng pagbabago sa layout" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Pinakamahalaga ang iyong unang request sa network. Bawasan ang latency nito sa pamamagitan ng pag-iwas sa mga pag-redirect, na tumitiyak sa mabilis na pagtugon ng server, at nagbibigay-daan sa pag-compress ng text." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latency ng pag-request ng dokumento" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Pag-isipang itakda ang [font-display](https://developer.chrome.com/blog/font-display) sa swap o optional para tiyaking patuloy na makikita ang text. Puwede pang i-optimize ang swap para mabawasan ang mga pagbabago sa layout gamit ang [mga override sa sukatan ng font](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Font display" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Simulan ang pagsisiyasat sa pinakamahabang phase. [Puwedeng mabawasan ang mga pagkaantala](https://web.dev/articles/optimize-inp#optimize_interactions). Para pabilisin ang pagpoproseso, [i-optimize ang mga gastos sa pangunahing thread](https://web.dev/articles/optimize-long-tasks), na madalas na JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP ayon sa phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Gawing [nahahanap](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) kaagad ang larawan para sa LCP mula sa HTML para ma-optimize ang LCP, at [maiwasan ang mabagal na pag-load](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Pagtuklas sa request ng LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Ang bawat [phase ay may mga partikular na strategy sa pagpapahusay](https://web.dev/articles/optimize-lcp#lcp-breakdown). Mainam kung gugugulin sa pag-load ng mga resource ang malaking bahagi ng tagal ng LCP, hindi sa mga pagkaantala." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP ayon sa bahagi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Bina-block ng mga request ang unang pag-render ng page, na posibleng makaantala sa LCP. Puwedeng alisin ng [pagpapaliban o pag-inline](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) ang mga request sa network na ito sa critical path." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Mag-render ng mga request sa pag-block" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Kung mananatiling mataas ang mga gastos sa Kalkulahin Ulit ang Istilo, mapapababa ito ng pag-optimize ng selector. [I-optimize ang mga selector](https://developer.chrome.com/docs/devtools/performance/selector-stats) gamit ang matagal na lumipas na oras at mataas na % ng slow-path. Mapapaliit ng mga mas simpleng selector, mga mas kaunting selector, mas maliit na DOM, at mas mababaw na DOM ang mga tumutugmang gastos." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Mga gastos sa CSS Selector" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Puwedeng lubos na makaapekto ang code ng third party sa performance ng pag-load. [Bawasan at ipagpaliban ang pag-load ng code ng third party](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) para isapriyoridad ang content ng iyong page." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Mga third party" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Hindi na-optimize sa mobile ang viewport ng page, kaya posibleng [maantala nang hanggang 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) ang mga interaction sa pag-tap." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Hindi na-optimize ang viewport para sa mobile" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Para sa animated na content, gamitin ang [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) para mabawasan ang paggamit ng CPU kapag offscreen ang content." },
diff --git a/front_end/third_party/lighthouse/locales/fr.json b/front_end/third_party/lighthouse/locales/fr.json index 7954b10..00af5bc 100644 --- a/front_end/third_party/lighthouse/locales/fr.json +++ b/front_end/third_party/lighthouse/locales/fr.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Rapport sur le flux d'utilisateurs Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Les décalages de mise en page se produisent lorsque des éléments se déplacent sans aucune interaction de l'utilisateur. [Étudiez les causes des décalages de mise en page](https://web.dev/articles/optimize-cls), comme l'ajout ou la suppression d'éléments, ou le changement de polices lors du chargement de la page." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Causes des décalages de mise en page" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Votre première requête réseau est la plus importante. Réduisez sa latence en évitant les redirections, en assurant une réponse rapide du serveur et en activant la compression de texte." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latence de la demande de document" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Envisagez de définir [font-display](https://developer.chrome.com/blog/font-display) sur swap ou optional pour vous assurer que le texte est toujours visible. swap peut être encore optimisé pour atténuer les décalages de mise en page avec des [remplacements de métriques de police](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Affichage de la police" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Commencez par étudier la phase la plus longue. [Les délais peuvent être réduits au maximum.](https://web.dev/articles/optimize-inp#optimize_interactions) Pour réduire la durée de traitement, [optimisez les coûts du thread principal](https://web.dev/articles/optimize-long-tasks), souvent JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP par phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimisez le LCP en rendant l'image LCP [visible](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) immédiatement à partir du code HTML et en [évitant le chargement différé](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Détection de la requête LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Chaque [phase comporte des stratégies d'amélioration spécifiques](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idéalement, la plupart du temps LCP devrait être consacré au chargement des ressources et non aux délais." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP par phase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Les requêtes bloquent le rendu initial de la page, ce qui peut causer un retard LCP. [Le report ou l'intégration](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) de ces requêtes réseau peut les écarter du chemin critique." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Requêtes de blocage de l'affichage" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Si les coûts de recalcul du style restent élevés, vous pouvez les réduire en [optimisant les sélecteurs](https://developer.chrome.com/docs/devtools/performance/selector-stats) pour lesquels le temps écoulé et le pourcentage à chemin lent sont élevés. Des sélecteurs plus simples et moins nombreux, ainsi qu'un DOM plus petit et superficiel réduiront tous les coûts de mise en correspondance." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Coûts des sélecteurs CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Le code tiers peut affecter considérablement les performances de chargement. [Réduisez et différez le chargement du code tiers](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) pour donner la priorité au contenu de votre page." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Tiers" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "La fenêtre d'affichage de la page n'est pas optimisée pour les mobiles. Les interactions tactiles peuvent donc être [retardées jusqu'à 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Fenêtre d'affichage non optimisée pour les mobiles" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Pour le contenu animé, utilisez [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) afin que le processeur soit sollicité le moins possible lorsque le contenu se situe hors écran." }, @@ -2658,55 +2718,55 @@ "message": "Envisagez d'utiliser l'outil `BreakpointObserver` du kit de développement de composants pour gérer les points d'arrêt de l'image. [En savoir plus](https://material.angular.io/cdk/layout/overview)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Envisagez d'importer votre `GIF` dans un service qui permettra de l'intégrer en tant que vidéo HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Envisagez de configurer les [formats d'image WebP avec un style de conversion d'image](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) sur votre site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Envisagez de configurer le chargement différé des images dans `Drupal`. Les outils de mise en forme de champ pour les images acceptent `lazy` ou `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Si l'élément LCP est ajouté de façon dynamique à la page, optimisez l'image pour améliorer le LCP. [En savoir plus](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Les redirections entraînent des retards supplémentaires avant que la page ne puisse être chargée. Si le module [Redirect](https://www.drupal.org/project/redirect) est installé, vérifiez si vous pouvez supprimer des redirections inutiles. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/redirects)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Envisagez d'utiliser un [module](https://www.drupal.org/project/critical_css) pour intégrer le code CSS et JavaScript critique, et utilisez l'attribut \"defer\" pour le code CSS ou JavaScript non critique." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Déchargez le trafic avec un ou plusieurs modules de mise en cache `Drupal` tels que `Internal Page Cache`, `Internal Dynamic Page Cache` et `BigPipe`. Associez-les à un CDN pour améliorer le délai de réponse. Vos serveurs d'hébergement doivent exploiter PHP OPcache. Envisagez d'utiliser la mise en cache de la mémoire (avec Redis ou Memcached, par exemple) pour réduire les temps d'interrogation des bases de données. Enfin, utilisez des thèmes et des modules performants, ainsi que des serveurs plus rapides, pour réduire le temps de réponse du serveur." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Vous pouvez également envisager d'utiliser [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) pour réduire la taille des images chargées sur votre page. Si vous utilisez `Views` pour afficher plusieurs éléments de contenu sur une même page, envisagez d'implémenter la pagination pour limiter le nombre d'éléments de contenu affichés sur une page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Assurez-vous que vous avez activé l'option \"Regrouper les fichiers CSS\" sur la page Administration > Configuration > Développement." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Assurez-vous que vous avez activé l'option \"Regrouper les fichiers JavaScript\" sur la page Administration > Configuration > Développement." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Envisagez de supprimer les règles CSS inutilisées et d'associer uniquement les bibliothèques `Drupal` nécessaires à la page ou au composant de page concernés. Pour en savoir plus, consultez la [documentation`Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Pour déterminer quelles bibliothèques associées ajoutent des CSS superflus, essayez d'exécuter la [couverture de code](https://developer.chrome.com/docs/devtools/coverage) dans les outils pour les développeurs Chrome. Lorsque le regroupement de CSS est désactivé sur votre site `Drupal`, vous pouvez identifier le thème ou le module qui en est responsable à partir de l'URL de la feuille de style. Recherchez les thèmes ou les modules pour lesquels un grand nombre de feuilles de style présentent beaucoup d'éléments en rouge dans la couverture de code. Un thème ou un module ne doit associer une bibliothèque de feuilles de style que si elle est effectivement utilisée sur la page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Envisagez de supprimer les éléments JavaScript inutilisés et d'associer uniquement les bibliothèques `Drupal` nécessaires à la page ou au composant de page concernés. Pour en savoir plus, consultez la [documentation Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Pour déterminer quelles bibliothèques associées ajoutent des scripts JavaScript superflus, exécutez une [couverture de code](https://developer.chrome.com/docs/devtools/coverage) dans les outils pour les développeurs Chrome. Lorsque l'agrégation JavaScript est désactivée sur votre site `Drupal`, vous pouvez identifier le thème ou le module responsable à partir de l'URL du script. Recherchez les thèmes ou les modules pour lesquels un grand nombre de scripts présentent beaucoup d'éléments en rouge dans la couverture de code. Un thème ou un module ne doit associer une bibliothèque de scripts que si elle est effectivement utilisée sur la page." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Définissez le paramètre \"Âge maximum du navigateur et du proxy cache\" sur la page Administration > Configuration > Développement. En savoir plus sur le [cache `Drupal` et l'optimisation des performances](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Vous pouvez envisager d'utiliser [un module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) qui optimise et réduit automatiquement la taille des images importées sur le site sans perdre en qualité. Assurez-vous également que vous utilisez le module natif [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) fourni par `Drupal` pour toutes les images affichées sur le site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Il est possible d'ajouter des indices de ressources `Preconnect` ou `dns-prefetch` en installant et en configurant un [module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) qui fournit une fonction pour les indices de ressources user-agent." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Assurez-vous que vous utilisez le module natif [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) fourni par `Drupal`. Utilisez Responsive Image Styles lors de l'affichage des champs d'image par l'intermédiaire des modes Vue, des vues ou des images importés via l'éditeur WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Les ressources textuelles doivent être diffusées compressées (Gzip, Deflate ou Brotli) pour réduire le nombre total d'octets du réseau. Envisagez d'utiliser un CDN qui prend en charge cette fonctionnalité de manière native ou de configurer le serveur Web pour effectuer cette opération. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Utilisez [Ezoic Leap](https://pubdash.ezoic.com/speed) et activez `Optimize Fonts` pour utiliser automatiquement la fonction CSS `font-display` afin que le texte soit visible par les utilisateurs pendant le chargement des polices Web." @@ -3036,7 +3096,7 @@ "message": "Divers plug-ins WordPress peuvent vous aider à [aligner des éléments critiques](https://wordpress.org/plugins/search/critical+css/) ou à [différer le chargement des ressources moins importantes](https://wordpress.org/plugins/search/defer+css+javascript/). Gardez en tête qu'à cause des optimisations fournies par ces plug-ins, certaines fonctionnalités de votre thème ou de vos plug-ins peuvent cesser de fonctionner. Vous devrez donc probablement modifier le code." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Choisissez un thème léger (idéalement un thème basé sur des blocs) et implémentez la mise en cache de la page entière ou une solution de site statique. Désactivez les plug-ins inutiles pour réduire les frais généraux de serveur. Envisagez de passer à un service d'hébergement géré ou dédié." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Vous pouvez envisager d'afficher des extraits dans vos listes d'articles (par exemple en utilisant la balise \"more\"), de réduire le nombre d'articles affichés dans une page donnée, de répartir vos articles longs sur plusieurs pages ou d'utiliser un plug-in qui charge de façon différée les commentaires."
diff --git a/front_end/third_party/lighthouse/locales/he.json b/front_end/third_party/lighthouse/locales/he.json index 8bde918..277d68f 100644 --- a/front_end/third_party/lighthouse/locales/he.json +++ b/front_end/third_party/lighthouse/locales/he.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "דוח Lighthouse על מסלולי משתמשים בדף" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "שינויים בפריסה מתרחשים כשרכיבים נעים ללא פעולה של המשתמש. [צריך לבדוק את הסיבות לשינויים בפריסה](https://web.dev/articles/optimize-cls), כמו רכיבים שנוספו או הוסרו, או גופנים שהשתנו בזמן טעינת הדף." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "הגורמים לשינוי הפריסה" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "בקשת הרשת הראשונה היא החשובה ביותר. אפשר להפחית את זמן האחזור של הבקשה על ידי הימנעות מהפניות לכתובות URL אחרות, וכך להבטיח תגובה מהירה של השרת ולהפעיל דחיסת טקסט." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "זמן האחזור של בקשת מסמך" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "כדאי לשקול להגדיר את [font-display](https://developer.chrome.com/blog/font-display) לערך swap או optional כדי לוודא שהטקסט גלוי באופן עקבי. אפשר להמשיך לשפר את האופטימיזציה של swap כדי לצמצם את השינויים בפריסה באמצעות [שינויים של מדדי הגופן מברירות המחדל](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "תצוגת גופן" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "כדאי להתחיל בחקירת השלב הארוך ביותר. [אפשר לקצר את משך הזמן שלוקח לשלוח את הבקשה](https://web.dev/articles/optimize-inp#optimize_interactions). כדי לקצר את משך הזמן של העיבוד, מומלץ [לבצע אופטימיזציה בעלויות של ה-Thread הראשי](https://web.dev/articles/optimize-long-tasks), לרוב JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP לפי שלב" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "כדי לייעל את ה-LCP, צריך להפוך את תמונת ה-LCP ל[גלויה](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) ב-HTML באופן מיידי, ו[להימנע מטעינה מדורגת](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "גילוי בקשות LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "[לכל שלב יש אסטרטגיות שיפור ספציפיות](https://web.dev/articles/optimize-lcp#lcp-breakdown). באופן אידיאלי, רוב זמן ה-LCP צריך להיות מוקדש לטעינה של המשאבים, ולא לעיכובים." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP לפי שלב" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "יש בקשות שחוסמות את העיבוד הראשוני של הדף, מה שעלול לגרום לעיכוב של ה-LCP. [דחייה או שילוב בקוד](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) יכולים להוציא את בקשות הרשת האלה מהנתיב הקריטי." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "עיבוד של בקשות חסימה" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "אם העלויות של 'חישוב מחדש של הסגנון' עדיין גבוהות, אפשר להפחית אותן באמצעות אופטימיזציה של הסלקטור. כדאי לבצע [אופטימיזציה לסלקטורים](https://developer.chrome.com/docs/devtools/performance/selector-stats) עם זמן חולף ואחוז של נתיב איטי (slow-path) גבוהים. שימוש בסלקטורים פשוטים יותר, בפחות סלקטורים, ב-DOM קטן יותר וב-DOM נמוך יותר יפחית את עלויות ההתאמה." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "עלויות של סלקטור ב-CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "קוד של צד שלישי עשוי להשפיע בצורה משמעותית על ביצועי הטעינה. כדי לתעדף את תוכן הדף שלך, צריך [לצמצם ולדחות טעינת קוד של צד שלישי](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "צדדים שלישיים" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "אזור התצוגה של הדף לא מותאם לניידים. יכול להיות שאינטראקציות של הקשה [יעוכבו בעד 300 אלפיות השנייה](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "אזור התצוגה לא מותאם לנייד" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "להצגת תוכן באנימציה, כשהתוכן לא מוצג במסך כדאי להשתמש ב-[`amp-anim`](https://amp.dev/documentation/components/amp-anim/) כדי לצמצם את השימוש ביחידת העיבוד המרכזית (CPU)." }, @@ -2658,55 +2718,55 @@ "message": "כדאי לשקול להשתמש בכלי העזר `BreakpointObserver` ב-Component Dev Kit (CDK) כדי לנהל נקודות מעבר בין תמונות. [מידע נוסף](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "כדאי להעלות את ה-`GIF` לשירות שיאפשר להטמיע אותו כסרטון HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "כדאי לשקול להגדיר [פורמטים של תמונות WebP באמצעות סגנון המרת תמונות ](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) באתר." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "כדאי להגדיר טעינה מדורגת של תמונות ב-`Drupal`. כלי עיצוב השדות לתמונות תומכים ב-`lazy` או ב-`eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "אם רכיב ה-LCP נוסף באופן דינמי לדף, צריך לבצע אופטימיזציה של התמונה כדי לשפר את ה-LCP. [למידע נוסף](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "הפניות אוטומטיות מעכבות את טעינת הדף. אם המודול [הפנייה אוטומטית](https://www.drupal.org/project/redirect) מותקן, צריך לבדוק אם אפשר להסיר הפניות אוטומטיות מיותרות. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "אם קטע קוד של CSS או JavaScript הוא קריטי, מומלץ להטביע אותו באמצעות [מודול](https://www.drupal.org/project/critical_css). בקטעי קוד לא קריטיים כדאי להשתמש במאפיין refer, כי פחות דחוף לרנדר אותם." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "כדי להפחית את העומס, אפשר להעביר את תנועת הגולשים באמצעות מודול שמירה במטמון אחד או יותר של `Drupal`, כמו `Internal Page Cache`, `Internal Dynamic Page Cache` ו-`BigPipe`. כדי לשפר עוד יותר את זמן התגובה, אפשר לשלב את האפשרויות האלה עם CDN. שרתי האירוח שלך צריכים להשתמש ב-PHP OPcache. מומלץ להשתמש בשמירה במטמון הזיכרון, כמו Redis או Memcached, כדי לצמצם את זמני השאילתות של מסדי נתונים. לבסוף, כדי שזמן התגובה של השרת יהיה מהיר יותר, מומלץ להשתמש בעיצובים ובמודולים עם ביצועים טובים ובשרתים מהירים יותר." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "כדאי להשתמש ב[סגנונות התמונות הרספונסיביות](https://www.drupal.org/documentation/modules/responsive_image) כדי לצמצם את הגודל של התמונות שטענת לדף. אם השתמשת ב-`Views` להצגת פריטי תוכן מרובים בדף, כדאי לחלק לדפים כדי להגביל את מספר פריטי התוכן שמופיעים בכל דף נתון." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "צריך לוודא שהאפשרות Aggregate CSS files (קובצי ה-CSS המצטברים) מופעלת בדף Administration (ניהול) » Configuration (הגדרות אישיות) » Development (פיתוח)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "צריך לוודא שהאפשרות Aggregate JavaScript files (קובצי ה-JavaScript המצטברים) מופעלת בדף Administration (ניהול) » Configuration (הגדרות אישיות) » Development (פיתוח)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "כדאי להסיר כללי CSS שלא בשימוש, ולצרף לדף הרלוונטי או לרכיב בדף רק את ספריות ה-`Drupal` הנדרשות. לקבלת פרטים, אפשר לעיין ב[`Drupal`מסמכים](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). כדי לזהות ספריות מצורפות שמוסיפות תוכן CSS מיותר, כדאי להפעיל את האפשרות [רמת הכיסוי של הקוד](https://developer.chrome.com/docs/devtools/coverage) בכלי הפיתוח ל-Chrome. לאחר ההשבתה של צבירת CSS באתר ה-`Drupal` שלך, ניתן יהיה לזהות את העיצוב או המודול שאחראים להוספת גיליון הסגנונות לפי כתובת ה-URL. העיצובים או המודולים הבעייתיים הם אלה שברשימת גיליונות הסגנונות שלהם יש הרבה גיליונות סגנונות באדום ברמת הכיסוי של הקוד. עיצוב או מודול צריכים לצרף ספריית גיליון סגנונות רק אם נעשה בה שימוש בפועל בדף." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "כדאי להסיר של נכסי JavaScript שלא בשימוש, ולצרף לדף הרלוונטי או לרכיב בדף רק את ספריות ה-`Drupal` הנדרשות. לפרטים נוספים, אפשר לעיין ב[תיעוד של Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). כדי לזהות ספריות מצורפות שמוסיפות תוכן JavaScript מיותר, כדאי להפעיל את האפשרות [רמת הכיסוי של הקוד](https://developer.chrome.com/docs/devtools/coverage) בכלי הפיתוח ל-Chrome. לאחר ההשבתה של צבירת JavaScript באתר ה-`Drupal` שלך, ניתן יהיה לזהות את העיצוב או המודול שאחראים להוספת הסקריפט לפי כתובת ה-URL. העיצובים או המודולים הבעייתיים הם אלה שברשימת הסקריפטים שלהם יש הרבה סקריפטים באדום ברמת הכיסוי של הקוד. עיצוב או מודול צריכים לצרף ספריית סקריפטים רק אם נעשה בה שימוש בפועל בדף." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "בדף \"Administration (ניהול) » Configuration (הגדרה) » Development (פיתוח)\" צריך להגדיר \"Browser and proxy cache maximum age (גיל מרבי של דפדפן ומטמון של שרת proxy)\". [למידע על מטמון `Drupal` ואופטימיזציה של ביצועים](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "כדאי להשתמש ב[מודול](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) שמבצע אופטימיזציה ומצמצם את גודל התמונות שמועלות לאתר באופן אוטומטי, בלי לפגוע באיכות שלהן. צריך גם לוודא שנעשה שימוש ב[סגנונות המותאמים של התמונות הרספונסיביות](https://www.drupal.org/documentation/modules/responsive_image) שסופקו על ידי `Drupal` לכל התמונות שמוצגות באתר." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "ניתן להוסיף רמזים של משאב `Preconnect` או `dns-prefetch` באמצעות התקנה והגדרה של [מודול](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) שמוסיף מתקנים לרמזים של משאב סוכן משתמש." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "צריך לוודא שנעשה שימוש ב[סגנונות המותאמים לתמונות הרספונסיביות](https://www.drupal.org/documentation/modules/responsive_image) שסופקו על ידי `Drupal`. ניתן להשתמש בסגנונות התמונות הרספונסיביות כשמתבצע רינדור של שדות תמונה במצב תצוגה, בתצוגות, או בתמונות שהועלו באמצעות עורך WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "הצגת משאבים שמבוססים על טקסט צריכה להתבצע בעזרת דחיסת נתונים (gzip, deflate או brotli) כדי לצמצם את כמות הבייטים שמועברים ברשת. כדאי להשתמש ב-CDN שתומך בכך במקור, או להגדיר את שרת האינטרנט לבצע את הפעולה הזו. [למידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "שימוש ב-[Ezoic Leap](https://pubdash.ezoic.com/speed) והפעלת `Optimize Fonts` כדי להשתמש באופן אוטומטי בתכונת ה-CSS של `font-display` ולוודא שהטקסט גלוי למשתמש במהלך הטעינה של פונטים מסוג webfont." @@ -3036,7 +3096,7 @@ "message": "יש כמה יישומי פלאגין של WordPress שיכולים לעזור לך [להטביע נכסים קריטיים](https://wordpress.org/plugins/search/critical+css/) או [לדחות טעינה של משאבים פחות חשובים](https://wordpress.org/plugins/search/defer+css+javascript/). חשוב: ייתכן שהאופטימיזציות המבוצעות על ידי יישומי הפלאגין האלה יגרמו לתקלות בתכונות של העיצוב או יישומי הפלאגין האחרים, ולכן כנראה שיהיה צורך לבצע שינויים בקוד." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "כדאי לבחור עיצוב פשוט (כמו עיצוב בבלוקים) ולהטמיע שמירה במטמון של כל הדף או פתרון של אתר סטטי. צריך להשבית פלאגינים מיותרים כדי לצמצם את העומס על השרת. כדאי לשקול שדרוג של האירוח לשירות מנוהל או ייעודי." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "אפשר להציג קטעים ברשימות הפוסטים (למשל, עם תג 'עוד'), לצמצם את מספר הפוסטים המוצגים בדף נתון, לחלק פוסטים ארוכים למספר דפים או להשתמש בפלאגין כדי לטעון תגובות בצורה מדורגת."
diff --git a/front_end/third_party/lighthouse/locales/hi.json b/front_end/third_party/lighthouse/locales/hi.json index 8eb2626..df86ef7 100644 --- a/front_end/third_party/lighthouse/locales/hi.json +++ b/front_end/third_party/lighthouse/locales/hi.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse की यूज़र फ़्लो रिपोर्ट" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "लेआउट शिफ़्ट तब होते हैं, जब उपयोगकर्ता के इंटरैक्शन के बिना एलिमेंट मूव होते हैं. [लेआउट शिफ़्ट की वजहों की जांच करें](https://web.dev/articles/optimize-cls). जैसे, पेज लोड होने के दौरान एलिमेंट जोड़े या हटाए जाते हैं या उनके फ़ॉन्ट बदले जाते हैं." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "लेआउट शिफ़्ट की वजहें" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "नेटवर्क पर किया जाने वाला पहला अनुरोध सबसे ज़्यादा अहम है. इसके इंतज़ार का समय कम करने के लिए, रीडायरेक्ट से बचें और पक्का करें कि सर्वर तेज़ी से जवाब दे. साथ ही, टेक्स्ट कंप्रेस करने की सुविधा चालू करें." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "दस्तावेज़ को डाउनलोड करने में लगने वाला समय" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "[font-display](https://developer.chrome.com/blog/font-display) को swap या optional पर सेट करें, ताकि यह पक्का किया जा सके कि टेक्स्ट हमेशा दिखता रहे. [फ़ॉन्ट मेट्रिक ओवरराइड](https://developer.chrome.com/blog/font-fallbacks) की मदद से, लेआउट शिफ़्ट कम करने के लिए, swap को और ऑप्टिमाइज़ किया जा सकता है." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "फ़ॉन्ट डिसप्ले" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "सबसे लंबे फ़ेज़ से जांच करना शुरू करें. [देरी को कम किया जा सकता है](https://web.dev/articles/optimize-inp#optimize_interactions). प्रोसेस करने में लगने वाला समय कम करने के लिए, [मुख्य थ्रेड की लागत को ऑप्टिमाइज़ करें](https://web.dev/articles/optimize-long-tasks). आम तौर पर, यह JS होती है." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "फ़ेज़ के हिसाब से आईएनपी" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "एलसीपी इमेज को एचटीएमएल से तुरंत [खोजे जाने लायक](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) बनाकर और [लेज़ी-लोडिंग से बचकर](https://web.dev/articles/lcp-lazy-loading), एलसीपी को ऑप्टिमाइज़ करें" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "एलसीपी के लिए रिक्वेस्ट डिस्कवरी" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "हर [फ़ेज़ के लिए, बेहतर बनाने की खास रणनीतियां होती हैं](https://web.dev/articles/optimize-lcp#lcp-breakdown). एलसीपी का ज़्यादातर समय संसाधनों को लोड करने में लगना चाहिए, न कि देरी में." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "फ़ेज़ के हिसाब से एलसीपी" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "अनुरोधों की वजह से, पेज की शुरुआती रेंडरिंग ब्लॉक की जा रही है. इस वजह से, पेज की एलसीपी वैल्यू खराब हो सकती है. [कुछ समय के लिए टालकर या इनलाइन करके](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/), नेटवर्क के इन अनुरोधों को क्रिटिकल पाथ से बाहर ले जाया जा सकता है." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "रेंडर होने से रोकने का अनुरोध" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "अगर स्टाइल को फिर से कैलकुलेट करने में ज़्यादा समय लग रहा है, तो सेलेक्टर ऑप्टिमाइज़ेशन से इसे कम किया जा सकता है. [सेलेक्टर ऑप्टिमाइज़ करें](https://developer.chrome.com/docs/devtools/performance/selector-stats) ऐसे सेलेक्टर ऑप्टिमाइज़ करें जिनका स्लो-पाथ प्रतिशत के साथ-साथ प्रोसेस शुरू करने और उसे पूरा करने में लगने वाले समय का प्रतिशत ज़्यादा है. सेलेक्टर मैच करने में लगने वाले समय को कम करने के लिए, आसान सेलेक्टर, कम सेलेक्टर, कम साइज़ वाले डीओएम, और कम एलिमेंट वाले डीओएम इस्तेमाल किए जाते हैं." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "सीएसएस सिलेक्टर की लागत" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "तीसरे पक्ष के कोड, आपके पेज के लोड होने की परफ़ॉर्मेंस पर गहरा असर डाल सकते हैं. पेज के कॉन्टेंट को प्राथमिकता देने के लिए, [तीसरे पक्ष के कोड वाले कॉन्टेंट को कम करें और उसे धीरे लोड करें](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "तीसरे पक्ष का कोड" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "पेज का व्यूपोर्ट, मोबाइल के लिए सही नहीं है. इसलिए, टैप इंटरैक्शन में [300 मि॰से॰ तक की देरी](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) हो सकती है." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "व्यूपोर्ट, मोबाइल के लिए ऑप्टिमाइज़ नहीं किया गया है" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "ऐनिमेशन वाले कॉन्टेंट के लिए, [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) का इस्तेमाल करें. इससे, कॉन्टेंट के ऑफ़स्क्रीन होने पर सीपीयू का इस्तेमाल कम होगा." }, @@ -2658,55 +2718,55 @@ "message": "इमेज ब्रेकपॉइंट प्रबंधित करने के लिए, कॉम्पोनेंट डेवलपमेंट किट (सीडीके) में `BreakpointObserver` सुविधा का इस्तेमाल करें. [ज़्यादा जानें](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "किसी ऐसी सेवा में अपना `GIF` अपलोड करें जो उसे HTML5 वीडियो में जोड़ने के लिए तैयार रख सके." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "अपनी साइट पर, [कन्वर्ट इमेज स्टाइल का इस्तेमाल करके WebP इमेज फ़ॉर्मैट](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) को कॉन्फ़िगर करें." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "`Drupal` में, इमेज की लेज़ी लोडिंग को कॉन्फ़िगर करें. इमेज के लिए फ़ील्ड फ़ॉर्मैटर, `lazy` या `eager` के साथ काम करते हैं." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "अगर पेज में एलसीपी एलिमेंट को डाइनैमिक तरीके से जोड़ा गया है, तो एलसीपी को बेहतर बनाने के लिए इमेज को ऑप्टिमाइज़ कर लेना चाहिए. [ज़्यादा जानें](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "रीडायरेक्ट की वजह से, पेज के लोड होने में लगने वाला समय और बढ़ जाता है. अगर [रीडायरेक्ट](https://www.drupal.org/project/redirect) मॉड्यूल इंस्टॉल किया गया है, तो देखें कि क्या ग़ैर-ज़रूरी रीडायरेक्ट हटाए जा सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "ज़रूरी सीएसएस और JavaScript को इनलाइन करने के लिए, [किसी मॉड्यूल](https://www.drupal.org/project/critical_css) का इस्तेमाल करें. साथ ही, ग़ैर-ज़रूरी सीएसएस या JavaScript के लिए, डेफ़र एट्रिब्यूट का इस्तेमाल करें." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "`Internal Page Cache`, `Internal Dynamic Page Cache`, और `BigPipe` जैसे एक या उससे ज़्यादा `Drupal` कैशिंग मॉड्यूल की मदद से ट्रैफ़िक को ऑफ़लोड करें. रिस्पॉन्स टाइम में और सुधार करने के लिए, इन्हें सीडीएन के साथ इस्तेमाल करें. आपके होस्टिंग सर्वर को PHP OPcache का इस्तेमाल करना चाहिए. डेटाबेस क्वेरी में लगने वाले समय को कम करने के लिए, Redis या Memcached जैसे मेमोरी-कैशिंग का इस्तेमाल करें. आखिर में, सर्वर से जवाब मिलने के समय को कम करने के लिए, परफ़ॉर्मेंस वाली थीम, मॉड्यूल, और तेज़ सर्वर का इस्तेमाल करें." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "अपने पेज पर लोड की गई सभी इमेज का साइज़ कम करने के लिए, [रिस्पॉन्सिव इमेज स्टाइल](https://www.drupal.org/documentation/modules/responsive_image) का इस्तेमाल करें. अगर किसी पेज पर कई कॉन्टेंट आइटम को दिखाने के लिए, `Views` का इस्तेमाल किया जा रहा है, तो उस पेज पर दिखने वाले कॉन्टेंट आइटम को कम करने के लिए, पेज पर नंबर डालने की सुविधा लागू की जा सकती है." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "पक्का करें कि आपने \"Administration » Configuration » Development\" पेज में \"Aggregate CSS files\" को चालू किया है." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "पक्का करें कि आपने \"Administration » Configuration » Development\" पेज में, \"Aggregate JavaScript files\" को चालू किया है." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "इस्तेमाल नहीं किए गए सीएसएस नियमों को हटाएं. साथ ही, सही पेज या पेज के कॉम्पोनेंट में सिर्फ़ ज़रूरी `Drupal` लाइब्रेरी अटैच करें. ज़्यादा जानकारी के लिए, [`Drupal` के दस्तावेज़](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) देखें. Chrome DevTools में [कोड कवरेज](https://developer.chrome.com/docs/devtools/coverage) चलाकर, अटैच की गई उन लाइब्रेरी की पहचान करें जो आपके पेज में बाहरी सीएसएस को जोड़ रही हैं. जब आपकी `Drupal` साइट में सीएसएस के एक साथ दिखने की सुविधा बंद हो जाती है, तो स्टाइलशीट के यूआरएल से यह पहचाना जा सकता है कि ऐसा किस थीम/मॉड्यूल की वजह से हुआ है. ऐसी थीम/मॉड्यूल खोजें जिनके पास कोड कवरेज वाली सूची में लाल निशान के साथ कई स्टाइलशीट मौजूद हों. किसी थीम/मॉड्यूल को स्टाइलशीट लाइब्रेरी तभी अटैच करना चाहिए, जब पेज पर वाकई उसका इस्तेमाल किया गया हो." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "इस्तेमाल नहीं की गई सभी JavaScript ऐसेट को हटाएं. साथ ही, सही पेज या पेज के कॉम्पोनेंट में, सिर्फ़ ज़रूरी `Drupal` लाइब्रेरी अटैच करें. ज़्यादा जानकारी के लिए, [Drupal के दस्तावेज़](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) देखें. Chrome DevTools में [कोड कवरेज](https://developer.chrome.com/docs/devtools/coverage) चलाकर, अटैच की गई उन लाइब्रेरी की पहचान करें जो आपके पेज में बाहरी JavaScript जोड़ रही हैं. जब आपकी `Drupal` साइट में JavaScript के एक साथ दिखने की सुविधा बंद हो जाती है, तो स्क्रिप्ट के यूआरएल से यह पहचान की जा सकती है कि ऐसा किस थीम/मॉड्यूल की वजह से हुआ है. ऐसी थीम/मॉड्यूल खोजें जिनके पास कोड कवरेज वाली सूची में लाल निशान के साथ कई स्क्रिप्ट मौजूद हों. किसी ऐसी थीम/मॉड्यूल को स्क्रिप्ट लाइब्रेरी तभी अटैच करना चाहिए, जब पेज पर वाकई उसका इस्तेमाल किया गया हो." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "\"Administration » Configuration » Development\" पेज में, \"ब्राउज़र और प्रॉक्सी कैश मेमोरी के लिए ज़्यादा से ज़्यादा समय\" सेट करें. [`Drupal` कैश मेमोरी और परफ़ॉर्मेंस ऑप्टिमाइज़ करने](https://www.drupal.org/docs/8/api/cache-api/cache-api) के बारे में पढ़ें." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "किसी [ऐसे मॉड्यूल](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) का इस्तेमाल करें जो साइट पर अपलोड की गई इमेज की क्वालिटी को बरकरार रखते हुए, उन्हें अपने-आप ऑप्टिमाइज़ करे और उसका साइज़ कम कर सके. यह भी पक्का करें कि साइट पर रेंडर की गई सभी इमेज के लिए, `Drupal` की नेटिव [रिस्पॉन्सिव इमेज स्टाइल](https://www.drupal.org/documentation/modules/responsive_image) इस्तेमाल की जा रही हो." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "`Preconnect` या `dns-prefetch` रिसॉर्स हिंट को, किसी [ऐसे मॉड्यूल](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) को इंस्टॉल और कॉन्फ़िगर करके जोड़ा जा सकता है जो उपयोगकर्ता एजेंट के रिसॉर्स हिंट के लिए सुविधाएं उपलब्ध कराता हो." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "पक्का करें कि `Drupal` की नेटिव [रिस्पॉन्सिव इमेज स्टाइल](https://www.drupal.org/documentation/modules/responsive_image) का इस्तेमाल किया जा रहा है. इमेज फ़ील्ड को व्यू मोड, WYSIWYG एडिटर से अपलोड की गई इमेज, या व्यू की मदद से रेंडर करने के दौरान, रिस्पॉन्सिव इमेज स्टाइल का इस्तेमाल करें." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "नेटवर्क में बाइट को कम से कम खर्च करने के लिए, टेक्स्ट वाले संसाधनों को कंप्रेशन (gzip, deflate या brotli) के साथ ऑफ़र किया जाना चाहिए. ऐसे सीडीएन का इस्तेमाल करें जो इस सुविधा को नेटिव तौर पर सपोर्ट करता हो. इसके अलावा, इस ऑपरेशन को करने के लिए वेब सर्वर को कॉन्फ़िगर करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "[Ezoic Leap](https://pubdash.ezoic.com/speed) का इस्तेमाल करें और `Optimize Fonts` को चालू करें, ताकि`font-display` सीएसएस की सुविधा का फ़ायदा अपने-आप मिले. इससे, यह पक्का किया जा सकेगा कि वेबफ़ॉन्ट लोड होने के दौरान, उपयोगकर्ता को टेक्स्ट दिखता है." @@ -3036,7 +3096,7 @@ "message": "ऐसे कई WordPress प्लग इन हैं जो [क्रिटिकल एसेट इनलाइन करने ](https://wordpress.org/plugins/search/critical+css/) या [कम ज़रूरी संसाधनों को डेफ़र करने](https://wordpress.org/plugins/search/defer+css+javascript/) में आपकी मदद कर सकते हैं. ध्यान रखें कि ऐसी प्लग इन से मिलने वाले ऑप्टिमाइज़ेशन आपकी थीम या प्लग इन की सुविधाएं बिगाड़ सकते हैं. इसलिए, आपको कोड में बदलावों को करने की ज़रुरत हो सकती है." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "हल्की थीम (आम तौर पर ब्लॉक थीम) चुनें और पूरे पेज को कैश मेमोरी में सेव करें या स्टैटिक साइट सलूशन को लागू करें. सर्वर ओवरहेड को कम करने के लिए, ग़ैर-ज़रूरी प्लगिन बंद करें. होस्टिंग की सेवा को, 'मैनेज की जा रही' या डेडिकेटेड सेवा पर अपग्रेड करें." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "अपनी पोस्ट सूचियों में खास हिस्से दिखाने पर विचार करें (जैसे 'ज़्यादा' टैग से), किसी पेज पर दिखाई गई पोस्ट की संख्या घटाने, अपनी लंबी पोस्ट को कई पेज में बाँटने या फिर टिप्पणियों को धीरे-धीरे लोड करने वाले प्लगइन का इस्तेमाल करने पर विचार करें."
diff --git a/front_end/third_party/lighthouse/locales/hr.json b/front_end/third_party/lighthouse/locales/hr.json index ccb7850..fe536c9 100644 --- a/front_end/third_party/lighthouse/locales/hr.json +++ b/front_end/third_party/lighthouse/locales/hr.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouseovo izvješće o putovima korisnika" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Do pomaka izgleda dolazi kada se elementi pomiču bez korisničke interakcije. [Istražite uzroke pomaka izgleda](https://web.dev/articles/optimize-cls), kao što su dodavanje i uklanjanje elemenata ili promjena njihovih fontova tijekom učitavanja stranice." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Uzroci pomaka izgleda" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Vaš je prvi zahtjev za mrežu najvažniji. Smanjite latenciju izbjegavanjem preusmjeravanja, osiguravanjem brzog odgovora poslužitelja i omogućavanjem kompresije teksta." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latencija zahtjeva za dokument" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Savjetujemo vam da [font-display](https://developer.chrome.com/blog/font-display) postavite na swap ili optional kako biste osigurali dosljednu vidljivost teksta. swap može se dodatno optimizirati kako bi se ublažili pomaci izgleda pomoću [prevladavanja mjernih podataka o fontu](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Prikaz fonta" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Započnite s najdužim razdobljem. [Kašnjenja se mogu svesti na najmanju moguću mjeru](https://web.dev/articles/optimize-inp#optimize_interactions). Da biste skratili trajanje obrade, [optimizirajte troškove glavne niti](https://web.dev/articles/optimize-long-tasks), koji su često JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "Vrijeme između interakcija (INP) po fazi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimizirajte LCP tako da odmah [otkrijete](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) sliku LCP-a iz HTML-a i [izbjegnete odgođeno učitavanje](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Otkrivanje zahtjeva za vrijeme učitavanja punog sadržaja (LCP)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Svaka [faza ima određene strategije poboljšanja](https://web.dev/articles/optimize-lcp#lcp-breakdown). U idealnom slučaju većina vremena LCP-a trebala bi se potrošiti na učitavanje resursa, a ne na kašnjenja." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "Vrijeme učitavanja punog sadržaja (LCP) po fazi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Zahtjevi blokiraju početno renderiranje stranice zbog čega učitavanje punog sadržaja (LCP) može kasniti. [Odgađanjem ili ugrađivanjem](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) ti se mrežni zahtjevi mogu premjestiti s kritične putanje." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Zahtjevi koji su blokirali renderiranje" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ako troškovi za ponovo izračunaj stil ostanu visoki, optimizacija alata za odabir može ih smanjiti. [Optimizirajte selektore](https://developer.chrome.com/docs/devtools/performance/selector-stats) s visokim proteklim vremenom i visokim postotkom sporog puta. Jednostavniji selektori, manji broj selektora, manji DOM i plići DOM smanjit će troškove uparivanja." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Troškovi selektora CSS-a" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kôd treće strane može znatno utjecati na izvedbu učitavanja. [Smanjite i odgodite učitavanje koda treće strane](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) da biste prioritet dali sadržaju svoje stranice." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Treće strane" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Vidljivi dio stranice nije optimiziran za mobilne uređaje, pa interakcije dodirom mogu [kasniti do 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Vidljivi dio nije optimiziran za mobilne uređaje" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Za animirani sadržaj upotrijebite [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) da biste smanjili upotrebu procesora kad sadržaj nije na zaslonu." },
diff --git a/front_end/third_party/lighthouse/locales/hu.json b/front_end/third_party/lighthouse/locales/hu.json index db73f89..9fc0e71 100644 --- a/front_end/third_party/lighthouse/locales/hu.json +++ b/front_end/third_party/lighthouse/locales/hu.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse felhasználóimunkafolyamat-jelentés" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Az elrendezésmozgások akkor fordulnak elő, amikor az elemek bárminemű felhasználói interakció nélkül mozognak. [Vizsgálja meg a elrendezésmozgás okait](https://web.dev/articles/optimize-cls), például az elemeket hozzáadását, eltávolítását vagy az elrendezés betűtípusának változását az oldal betöltődésekor." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Az elrendezésmozgás okozói" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Az első hálózati kérelem a legfontosabb. Csökkentse a várakozási idejét az átirányítások elkerülésével, gyors szerverválasz biztosításával és a szövegtömörítés engedélyezésével." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Dokumentumkérés várakozási ideje" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "A szöveg következetes láthatóságának biztosítása érdekében fontolja meg a [font-display](https://developer.chrome.com/blog/font-display) beállítását a következők egyikére: swap vagy optional. A swap tovább optimalizálható az elrendezésmozgások mérséklése érdekében a [betűméretmutató-felülbírálásokkal](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Betűtípus megjelenítése" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "A leghosszabb fázissal kezdje a vizsgálatot. [A késések minimalizálhatók](https://web.dev/articles/optimize-inp#optimize_interactions). A feldolgozási idő csökkentése érdekében [optimalizálja a fő szál költségeit](https://web.dev/articles/optimize-long-tasks), gyakran a JS-t." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP szakaszonként" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimalizálja az LCP-t úgy, hogy az LCP-képet azonnal [felfedezhetővé](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) teszi a HTML-ben, és [elkerüli a késleltetett betöltést](https://web.dev/articles/lcp-lazy-loading)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP-kérelem felfedezése" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Minden [fázisnak megvannak a maga specifikus javítási stratégiái](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideális esetben az LCP-idő nagy részét az erőforrások betöltésére kell fordítani, nem pedig késésekre." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP szakaszonként" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Kérelmek blokkolják az oldal kezdeti megjelenítését, ami késleltetheti az LCP-t. [Elhalasztás vagy a beágyazás](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) segítségével ezeket a hálózati kérelmeket el lehet távolítani a kritikus útvonalról." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Renderelést blokkoló kérelmek megjelenítése" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ha a stílus-újraszámítási költségek magasak maradnak, a választó optimalizálása csökkentheti őket. [Optimalizálja azokat a választókat](https://developer.chrome.com/docs/devtools/performance/selector-stats), amelyek magas eltelt idővel és magas lassú útvonali százalékkal rendelkeznek. Az egyszerűbb választók, a kevesebb választó, a kisebb DOM és a sekélyebb DOM használata egyaránt csökkenti az egyezési költségeket." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS-választó költségei" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "A harmadik felektől származó kódok jelentős hatással lehetnek a betöltés teljesítményére. [Csökkentse és késleltesse a harmadik féltől származó kód betöltését](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) az oldal tartalmának előrébb sorolása érdekében." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Harmadik felek" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Az oldal megjelenítési területe nincs mobilra optimalizálva, ezért a koppintási műveleteknél [akár 300 ms késés is jelentkezhet](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "A megjelenítési terület nincs mobilra optimalizálva" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Animált tartalmak esetében csökkentheti a processzorhasználatot az [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) segítségével, amikor a tartalom nem látható a képernyőn." }, @@ -2658,55 +2718,55 @@ "message": "Fontolja meg a Component Dev Kit (CDK) `BreakpointObserver` segédprogramjának használatát a képek töréspontjainak kezeléséhez. [További információ](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Fontolja meg a(z) `GIF`-fájlok olyan szolgáltatásba való feltöltését, amely lehetővé teszi a fájlok HTML5-videóként történő beágyazását." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Vegye fontolóra a [WebP képformátumok konvertált képstílussal](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) való konfigurálását a webhelyen." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Fontolja meg késleltetett betöltésű képek konfigurálását a(z) `Drupal` szolgáltatásban. A képek mezőformázói a következőket támogatják: `lazy` vagy `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Ha az LCP elemet dinamikusan adja hozzá az oldalhoz, optimalizálja a képet az LCP javítása érdekében. [További információ](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Az átirányítások további késlekedéssel hosszabbítják meg az oldalbetöltéshez szükséges időt. Ha a [Redirect](https://www.drupal.org/project/redirect) modul telepítve van, nézze meg, hogy eltávolíthatók-e a felesleges átirányítások. [További információ](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Érdemes lehet [modult](https://www.drupal.org/project/critical_css) használnia a kritikus CSS- és JavaScript-elemek beágyazásához, a késleltetési attribútumot pedig a nem kritikus CSS- vagy JavaScript-elemekhez használnia." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Csökkentse a forgalmat a(z) `Drupal` egy vagy több gyorsítótárazó moduljával (pl. `Internal Page Cache`, `Internal Dynamic Page Cache` és `BigPipe`). A válaszidő további csökkentéséhez használjon CDN-t. Tárolószervereinek érdemes használniuk a PHP OPcache modult. Az adatbázis lekérdezési idejének csökkentése érdekében fontolja meg egy memória-gyorsítótár (pl. Redis vagy Memcached) használatát. Végül használjon jól teljesítő témákat, modulokat és gyorsabb szervereket a szerver válaszidejének csökkentéséhez." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Érdemes lehet [reszponzív képstílusokat](https://www.drupal.org/documentation/modules/responsive_image) használni, melyek csökkentik az oldalon betöltött képek méretét. Ha a(z) `Views` funkciót használja ahhoz, hogy egy oldalon több tartalmi elemet jelenítsen meg, fontolja meg az oldalak tördelését, amivel korlátozhatja az egy adott oldalon megjelenő tartalmi elemek számát." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Győződjön meg arról, hogy bekapcsolta az „Aggregate CSS files” (CSS fájlok összegyűjtése) lehetőséget az „Administration (Adminisztráció) » Configuration (Beállítás) » Development (Fejlesztés)” oldalon." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Győződjön meg arról, hogy bekapcsolta az „Aggregate JavaScript files” (JavaScript-fájlok összesítése) lehetőséget az „Administration (Adminisztráció) » Configuration (Beállítás) » Development (Fejlesztés)” oldalon." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Érdemes lehet eltávolítani a nem használt CSS-szabályokat, és csak a szükséges `Drupal`-könyvtárakat csatolni a releváns oldalhoz vagy oldalösszetevőhöz. További részleteket a(z) [`Drupal` dokumentációjában](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) talál. A felesleges CSS-t elhelyező csatolt könyvtárak azonosításában a Chrome DevTools [kódlefedettség](https://developer.chrome.com/docs/devtools/coverage) eszköze is segíthet. A felelős téma vagy modul a stíluslap URL-je alapján azonosítható, ha a CSS-összesítés ki van kapcsolva az Ön `Drupal`-webhelyén. Keressen olyan témákat vagy modulokat, amelyeknek több stíluslapjában is sok piros szín szerepel a kódlefedettségi listán. A témáknak vagy moduloknak csak az oldalon ténylegesen használt stíluslapkönyvtárakat szabadna csatolniuk." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Érdemes lehet eltávolítani a nem használt JavaScript-tartalmakat, és csak a szükséges `Drupal`-könyvtárakat csatolni a releváns oldalhoz vagy összetevőhöz. További részleteket a [Drupal dokumentációjában](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) talál. A felesleges JavaScriptet elhelyező csatolt könyvtárak azonosításában a Chrome DevTools [kódlefedettség](https://developer.chrome.com/docs/devtools/coverage) eszköze is segíthet. A felelős téma vagy modul a szkript URL-je alapján azonosítható, ha a JavaScript-összesítés ki van kapcsolva az Ön `Drupal`-webhelyén. Keressen olyan témákat vagy modulokat, amelyeknek több szkriptjében is sok piros szín szerepel a kódlefedettségi listán. A témáknak vagy moduloknak csak az oldalon ténylegesen használt szkriptkönyvtárakat szabadna csatolniuk." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Állítsa be a „Browser and proxy cache maximum age” (Böngésző és proxy gyorsítótár maximális élettartama) lehetőséget az „Administration (Adminisztráció) » Configuration (Beállítás) » Development (Fejlesztés)” oldalon. Nézzen utána a(z) [`Drupal` gyorsítótárának és a jobb teljesítmény érdekében történő optimalizálásának](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Érdemes lehet olyan [modult](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) használnia, amely minőségromlás nélkül, automatikusan optimalizálja és csökkenti a webhelyen keresztül feltöltött képek méretét. Ezenkívül győződjön meg arról, hogy azokat a natív [reszponzív képstílusokat](https://www.drupal.org/documentation/modules/responsive_image) használja a webhelyen megjelenített minden kép esetén, amelyek a(z) `Drupal` rendszeréből származnak." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Megadhat `Preconnect` vagy `dns-prefetch` jelzéseket, ha telepít és beállít egy olyan [modult](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), amely lehetővé teszi felhasználói ügynöki jelzések használatát." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Győződjön meg arról, hogy azokat a natív [reszponzív képstílusokat](https://www.drupal.org/documentation/modules/responsive_image) használja, amelyek a(z) `Drupal` rendszeréből származnak. Használja a reszponzív képstílusokat, ha megtekintési módokon, megtekintéseken vagy a WYSIWYG-szerkesztővel feltöltött képeken keresztül jeleníti meg a képmezőket." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "A szövegalapú forrásokat tömörítéssel (gzip, Deflate vagy Brotli) célszerű továbbítani a hálózati adatforgalom minimalizálása érdekében. Fontolja meg egy olyan CDN használatát, amely natívan támogatja ezt, vagy konfigurálja a webszervert a művelet végrehajtására. [További információ](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Az [Ezoic Leap](https://pubdash.ezoic.com/speed) használatával bekapcsolhatja a(z) `Optimize Fonts` beállítást, amely segítségével automatikusan bekapcsolhatja a(z) `font-display` CSS-függvényt, hogy a szöveg olvasható legyen a felhasználók számára, mialatt a webes betűtípusokat betölti a rendszer." @@ -3036,7 +3096,7 @@ "message": "Számos WordPress-bővítmény segíthet a [kritikus elemek beágyazásában](https://wordpress.org/plugins/search/critical+css/) és a [kevésbé fontos források](https://wordpress.org/plugins/search/defer+css+javascript/) késleltetésében. Fontos, hogy az ilyen jellegű bővítmények által nyújtott optimalizációk működésképtelenné tehetik a témák vagy más bővítmények funkcióit, ezért valószínűleg módosítania kell majd a meglévő kódot." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Válasszon egy kis méretű témát (ideális esetben blokktémát), és alkalmazzon teljes oldalas gyorsítótárazást vagy statikus webhelymegoldást. A felesleges beépülő modulok letiltásával csökkentheti a szerver terhelését. Fontolja meg a tárhelyszolgáltatás felügyelt vagy dedikált szolgáltatásra való frissítését." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Fontolja meg kivonatok megjelenítését a bejegyzéslistákban (pl. a more címkével), az oldalanként megjelenített bejegyzések számának csökkentését, a hosszabb bejegyzések több oldalra tördelését, valamint a hozzászólások lusta betöltését bővítmény segítségével."
diff --git a/front_end/third_party/lighthouse/locales/id.json b/front_end/third_party/lighthouse/locales/id.json index e0f5925..1ee6f24 100644 --- a/front_end/third_party/lighthouse/locales/id.json +++ b/front_end/third_party/lighthouse/locales/id.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Laporan Alur Pengguna Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Pergeseran tata letak terjadi saat elemen bergerak tanpa interaksi pengguna. [Selidiki penyebab perubahan tata letak](https://web.dev/articles/optimize-cls), seperti penambahan elemen, penghapusan elemen, atau perubahan font saat halaman dimuat." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Penyebab perubahan tata letak" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Permintaan jaringan pertama merupakan yang terpenting. Kurangi latensinya dengan menghindari pengalihan, memastikan respons server yang cepat, dan mengaktifkan kompresi teks." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latensi permintaan dokumen" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Sebaiknya setel [font-display](https://developer.chrome.com/blog/font-display) ke swap atau optional untuk memastikan teks terlihat secara konsisten. swap dapat dioptimalkan lebih lanjut untuk mengurangi perubahan tata letak dengan [penggantian metrik font](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Tampilan font" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Mulai investigasi dengan fase terpanjang. [Penundaan dapat diminimalkan](https://web.dev/articles/optimize-inp#optimize_interactions). Untuk mengurangi durasi pemrosesan, [optimalkan biaya thread utama](https://web.dev/articles/optimize-long-tasks), yang sering kali berupa JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP menurut fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimalkan LCP dengan membuat gambar LCP [dapat ditemukan](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) dari HTML secara langsung, dan [menghindari pemuatan lambat](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Penemuan permintaan LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Setiap [fase memiliki strategi peningkatan tertentu](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealnya, sebagian besar waktu LCP harus digunakan untuk memuat resource, bukan untuk penundaan." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP menurut fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Permintaan memblokir render awal halaman, yang dapat menunda LCP. [Penundaan atau penyisipan](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) dapat memindahkan permintaan jaringan ini dari jalur penting." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Permintaan pemblokiran rendering" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Jika biaya Hitung Ulang Gaya tetap tinggi, pengoptimalan pemilih dapat menguranginya. [Optimalkan pemilih](https://developer.chrome.com/docs/devtools/performance/selector-stats) dengan waktu berlalu yang tinggi dan % jalur lambat yang tinggi. Pemilih yang lebih sederhana, pemilih yang lebih sedikit, DOM yang lebih kecil, dan DOM yang lebih dangkal semuanya akan mengurangi biaya pencocokan." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Biaya Pemilih CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kode pihak ketiga dapat memberikan dampak signifikan terhadap performa pemuatan. [Kurangi dan tunda pemuatan kode pihak ketiga](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) untuk memprioritaskan konten halaman Anda." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Pihak ketiga" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Area tampilan halaman tidak dioptimalkan untuk seluler, sehingga interaksi ketuk mungkin [tertunda hingga 300 md](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Area tampilan tidak dioptimalkan untuk seluler" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Untuk konten animasi, gunakan [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) untuk meminimalkan penggunaan CPU saat konten tidak berada di layar." }, @@ -2658,55 +2718,55 @@ "message": "Pertimbangkan untuk menggunakan utilitas `BreakpointObserver` dalam Component Dev Kit (CDK) guna mengelola titik henti image sementara. [Pelajari lebih lanjut](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Sebaiknya upload `GIF` ke layanan yang akan menyediakannya untuk disematkan sebagai video HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Sebaiknya konfigurasi [format gambar WebP dengan Konversi gaya gambar](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) di situs Anda." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Sebaiknya konfigurasi gambar pemuatan lambat di `Drupal`. Pemformat kolom untuk gambar mendukung `lazy` atau `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Jika elemen LCP ditambahkan secara dinamis ke halaman, Anda harus melakukan pengoptimalan gambar untuk meningkatkan LCP. [Pelajari lebih lanjut](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Pengalihan mencakup penundaan tambahan sebelum halaman dapat dimuat. Jika modul [Pengalihan](https://www.drupal.org/project/redirect) diinstal, tinjau apakah pengalihan yang tidak perlu dapat dihapus. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Sebaiknya gunakan [modul](https://www.drupal.org/project/critical_css) untuk menyejajarkan CSS dan JavaScript penting, dan gunakan atribut tunda untuk CSS atau JavaScript yang tidak penting." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Kurangi beban traffic dengan satu atau beberapa modul cache `Drupal` seperti `Internal Page Cache`, `Internal Dynamic Page Cache`, dan `BigPipe`. Gabungkan modul cache ini dengan CDN untuk meningkatkan waktu respons. Server hosting Anda harus menggunakan PHP OPcache. Sebaiknya gunakan penyimpanan cache memori seperti Redis atau Memcached untuk mengurangi waktu kueri database. Terakhir, gunakan tema, modul, dan server yang lebih cepat untuk menurunkan waktu respons server." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Sebaiknya gunakan [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) untuk mengurangi ukuran gambar yang dimuat di halaman Anda. Jika Anda menggunakan `Views` untuk menampilkan beberapa item konten di halaman, sebaiknya implementasikan penomoran halaman guna membatasi jumlah item konten yang ditampilkan di halaman tersebut." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Pastikan Anda mengaktifkan \"Gabungkan file CSS\" di halaman \"Administrasi » Konfigurasi » Pengembangan\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Pastikan Anda mengaktifkan \"Gabungkan file CSS\" di halaman \"Administrasi » Konfigurasi » Pengembangan\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Sebaiknya hapus aturan CSS yang tidak digunakan dan hanya lampirkan library `Drupal` yang diperlukan ke halaman atau komponen yang relevan di halaman. Lihat [dokumentasi `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) untuk mengetahui detailnya. Untuk mengidentifikasi library yang dilampirkan yang menambahkan CSS tidak relevan, coba jalankan [cakupan kode](https://developer.chrome.com/docs/devtools/coverage) di Chrome DevTools. Anda dapat mengidentifikasi tema/modul yang bertanggung jawab dari URL stylesheet saat penggabungan CSS dinonaktifkan di situs `Drupal` Anda. Cari tema/modul dengan banyak stylesheet dalam daftar yang memiliki banyak warna merah dalam cakupan kode. Tema/modul sebaiknya hanya melampirkan library stylesheet jika memang benar digunakan di halaman." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Sebaiknya hapus aset JavaScript yang tidak digunakan dan hanya lampirkan library `Drupal` yang diperlukan ke halaman atau komponen yang relevan di halaman. Lihat [dokumentasi Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) untuk mengetahui detailnya. Untuk mengidentifikasi library yang dilampirkan yang menambahkan JavaScript tidak relevan, coba jalankan [cakupan kode](https://developer.chrome.com/docs/devtools/coverage) di Chrome DevTools. Anda dapat mengidentifikasi tema/modul yang bertanggung jawab dari URL skrip saat penggabungan JavaScript dinonaktifkan di situs `Drupal` Anda. Cari tema/modul dengan banyak skrip dalam daftar yang memiliki banyak warna merah dalam cakupan kode. Tema/modul sebaiknya hanya melampirkan library skrip jika memang benar digunakan di halaman." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Setel \"Usia maksimum cache proxy dan browser\" di halaman \"Administrasi » Konfigurasi » Pengembangan\". Baca [cache `Drupal` dan mengoptimalkan performa](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Sebaiknya gunakan [modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) yang otomatis mengoptimalkan dan mengurangi ukuran gambar yang diupload melalui situs dengan tetap mempertahankan kualitas. Selain itu, pastikan Anda menggunakan [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) native yang disediakan dari `Drupal` untuk semua gambar yang dirender di situs." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Petunjuk resource `Preconnect` atau `dns-prefetch` dapat ditambahkan dengan menginstal dan mengonfigurasi [modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) yang menyediakan fasilitas untuk petunjuk resource agen pengguna." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Pastikan Anda menggunakan [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) native yang disediakan oleh `Drupal`. Gunakan Responsive Image Styles saat merender kolom gambar melalui mode tampilan, tampilan, atau gambar yang diupload melalui editor WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Resource berbasis teks harus ditayangkan dengan kompresi (gzip, deflate, atau brotli) untuk meminimalkan total byte jaringan. Sebaiknya gunakan CDN yang secara native mendukung hal ini, atau konfigurasi server web untuk melakukan operasi ini. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Gunakan [Ezoic Leap](https://pubdash.ezoic.com/speed) dan aktifkan `Optimize Fonts` untuk otomatis memanfaatkan fitur CSS `font-display` guna memastikan teks dapat dilihat oleh pengguna saat font web dimuat." @@ -3036,7 +3096,7 @@ "message": "Terdapat sejumlah plugin di WordPress yang dapat membantu Anda [menyejajarkan aset penting](https://wordpress.org/plugins/search/critical+css/) atau [menunda resource yang tidak penting](https://wordpress.org/plugins/search/defer+css+javascript/). Harap berhati-hati karena pengoptimalan yang disediakan oleh plugin ini dapat merusak fitur tema atau plugin, sehingga Anda cenderung perlu mengubah kode." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Pilih tema ringan (idealnya tema blok) dan terapkan penyimpanan cache halaman penuh atau solusi situs statis. Nonaktifkan plugin yang tidak perlu untuk meminimalkan overhead server. Pertimbangkan untuk mengupgrade hosting Anda ke layanan terkelola atau khusus." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Sebaiknya tampilkan kutipan dalam daftar postingan (misalnya melalui tag lainnya), kurangi jumlah postingan yang ditampilkan pada halaman yang ada, bagi postingan panjang menjadi beberapa halaman, atau gunakan plugin untuk menunda pemuatan (lazy-load) komentar."
diff --git a/front_end/third_party/lighthouse/locales/it.json b/front_end/third_party/lighthouse/locales/it.json index 737b816..7992350 100644 --- a/front_end/third_party/lighthouse/locales/it.json +++ b/front_end/third_party/lighthouse/locales/it.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Report Lighthouse sulla procedura" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Le variazioni del layout si verificano quando gli elementi si spostano senza alcuna interazione da parte dell'utente. [Esamina le cause delle variazioni del layout](https://web.dev/articles/optimize-cls), come l'aggiunta o la rimozione di elementi o la modifica dei relativi caratteri durante il caricamento della pagina." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Responsabili delle variazioni del layout" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "La prima richiesta di rete è la più importante. Riduci la latenza evitando i reindirizzamenti, assicurando una risposta rapida del server e attivando la compressione del testo." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latenza di richiesta di download del documento" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Valuta la possibilità di impostare [font-display](https://developer.chrome.com/blog/font-display) su swap o optional per assicurarti che il testo sia visibile in modo coerente. swap può essere ulteriormente ottimizzato per ridurre gli spostamenti del layout con [override delle metriche dei caratteri](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Carattere visualizzato" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Inizia a indagare con la fase più lunga. [I ritardi possono essere ridotti al minimo](https://web.dev/articles/optimize-inp#optimize_interactions). Per ridurre la durata dell'elaborazione, [ottimizza i costi del thread principale](https://web.dev/articles/optimize-long-tasks), spesso JavaScript." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP per fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Ottimizza la metrica LCP rendendo l'immagine LCP immediatamente [rilevabile](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) dall'HTML ed [evitando il caricamento lento](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Rilevamento della richiesta LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Ogni [fase prevede strategie di miglioramento specifiche](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealmente, la maggior parte del tempo LCP dovrebbe essere impiegato per caricare le risorse, non nei ritardi." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP per fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Le richieste stanno bloccando il rendering iniziale della pagina, il che potrebbe ritardare l'LCP. [Rimandare o incorporare](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) può spostare queste richieste di rete fuori dal percorso critico." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Richieste di blocco del rendering" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Se i costi di Ricalcola stile rimangono elevati, l'ottimizzazione del selettore può ridurli. [Ottimizza i selettori](https://developer.chrome.com/docs/devtools/performance/selector-stats) con un tempo trascorso elevato e una percentuale elevata di percorsi lenti. Selettori più semplici, meno selettori, un DOM più piccolo e un DOM più basso riducono i costi di corrispondenza." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Costi del selettore CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Il codice di terze parti può incidere notevolmente sulle prestazioni del caricamento. [Riduci e posticipa il caricamento del codice di terze parti](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) per dare la priorità ai contenuti della pagina." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Terze parti" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "L'area visibile della pagina non è ottimizzata per i dispositivi mobili, pertanto le interazioni con i tocchi potrebbero essere [ritardate fino a 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Area visibile non ottimizzata per dispositivi mobili" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Per i contenuti animati, usa [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) per ridurre al minimo l'utilizzo di CPU mentre i contenuti sono fuori dallo schermo." }, @@ -2658,55 +2718,55 @@ "message": "Potresti usare l'utility `BreakpointObserver` di Component Dev Kit (CDK) per gestire i punti di interruzione delle immagini. [Ulteriori informazioni](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Potresti caricare il tuo file `GIF` su un servizio che lo renda disponibile per l'incorporamento come video HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Sul tuo sito potresti configurare [formati delle immagini WebP con uno stile per le immagini Converti](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Valuta la possibilità di configurare il caricamento lento delle immagini in `Drupal`. I formattatori di campi per le immagini supportano `lazy` o `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Se l'elemento LCP viene aggiunto alla pagina in modo dinamico, dovresti ottimizzare l'immagine per migliorarlo. [Scopri di più](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "I reindirizzamenti comportano ulteriori ritardi prima del caricamento della pagina. Se è installato il modulo [Reindirizza](https://www.drupal.org/project/redirect), controlla se è possibile rimuovere i reindirizzamenti non necessari. [Scopri di più](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Potresti usare [un modulo](https://www.drupal.org/project/critical_css) per incorporare codice JavaScript e CSS fondamentale e usare l'attributo defer per codice JavaScript e CSS non fondamentale." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Trasferisci il traffico con uno o più moduli di memorizzazione nella cache `Drupal`, come `Internal Page Cache`, `Internal Dynamic Page Cache` e `BigPipe`. Abbinali a una rete di distribuzione dei contenuti (CDN) per migliorare ulteriormente il tempo di risposta. I server hosting dovrebbero usare la memorizzazione nella OPcache PHP. Valuta la possibilità di utilizzare servizi di memorizzazione nella cache, come Redis o Memcached, per ridurre i tempi di query del database. Infine, utilizza temi e moduli ad alte prestazioni e server più veloci per ridurre il tempo di risposta del server." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Potresti usare gli [stili di immagini adattabili](https://www.drupal.org/documentation/modules/responsive_image) per ridurre le dimensioni delle immagini caricate nella tua pagina. Se usi `Views` per mostrare diversi contenuti su una pagina, potresti implementare l'impaginazione per limitare il numero di contenuti mostrati su una data pagina." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Assicurati di aver attivato l'opzione \"Aggregate CSS files\" (Aggrega file CSS) nella pagina \"Administration » Configuration » Development\" (Amministrazione » Configurazione » Sviluppo)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Assicurati di aver attivato l'opzione \"Aggregate JavaScript files\" (Aggrega file JavaScript) nella pagina \"Administration » Configuration » Development\" (Amministrazione » Configurazione » Sviluppo)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Potresti rimuovere le regole CSS inutilizzate e collegare solo le librerie `Drupal` necessarie alle pagine o ai componenti in una pagina pertinenti. Per i dettagli, consulta la [`Drupal`documentazione](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Per individuare le librerie collegate che aggiungono CSS estraneo, prova a eseguire la [copertura del codice](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. Puoi individuare il tema/modulo responsabile nell'URL del foglio di stile quando l'aggregazione CSS è disattivata sul tuo sito `Drupal`. Cerca i temi/moduli che nell'elenco hanno diversi fogli di stile con molto rosso nella copertura del codice. Un tema/modulo dovrebbe allegare una libreria di fogli di stile solo se viene effettivamente utilizzato nella pagina." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Potresti rimuovere gli asset JavaScript inutilizzati e collegare solo le librerie `Drupal` necessarie alle pagine o ai componenti in una pagina pertinenti. Per informazioni dettagliate, consulta la [documentazione di Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Per individuare le librerie collegate che aggiungono JavaScript estraneo, prova a eseguire la [copertura del codice](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. Puoi individuare il tema/modulo responsabile nell'URL dello script quando l'aggregazione JavaScript è disattivata sul tuo sito `Drupal`. Cerca i temi/moduli che nell'elenco hanno diversi script con molto rosso nella copertura del codice. Un tema/modulo dovrebbe collegare una libreria di script solo se viene effettivamente utilizzata nella pagina." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Imposta l'opzione \"Browser and proxy cache maximum age\" (Durata massima cache browser e proxy) nella pagina \"Administration » Configuration » Development\" (Amministrazione » Configurazione » Sviluppo). Leggi informazioni su [cache e ottimizzazione di `Drupal` per le prestazioni](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Potresti usare [un modulo](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) che ottimizza e riduce automaticamente le dimensioni delle immagini caricate tramite il sito preservandone la qualità. Inoltre, assicurati di stare utilizzando gli [stili di immagini adattabili](https://www.drupal.org/documentation/modules/responsive_image) nativi forniti da `Drupal` per tutte le immagini visualizzate sul sito." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Puoi aggiungere hint di risorse `Preconnect` o `dns-prefetch` installando e configurando [un modulo](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) che offre servizi per gli hint delle risorse user agent." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Assicurati di stare utilizzando gli [stili di immagini adattabili](https://www.drupal.org/documentation/modules/responsive_image) nativi forniti da `Drupal`. Usa gli stili di immagini adattabili per il rendering dei campi immagine con modalità di visualizzazione, visualizzazioni o immagini caricate tramite l'editor WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Le risorse basate sul testo dovrebbero essere pubblicate con compressione (gzip, deflate o brotli) per minimizzare il numero totale di byte di rete. Valuta la possibilità di utilizzare una rete CDN che supporta questa funzionalità in modo nativo oppure configura il server web per eseguire questa operazione. [Scopri di più](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Usa [Ezoic Leap](https://pubdash.ezoic.com/speed) e attiva `Optimize Fonts` per usare automaticamente la funzionalità CSS `font-display` in modo da garantire che il testo sia visibile all'utente mentre è in corso il caricamento dei caratteri web." @@ -3036,7 +3096,7 @@ "message": "Esistono diversi plug-in di WordPress che possono esserti utili per [incorporare le risorse di importanza critica](https://wordpress.org/plugins/search/critical+css/) o [rimandare le risorse meno importanti](https://wordpress.org/plugins/search/defer+css+javascript/). Fai attenzione perché le ottimizzazioni offerte da questi plug-in potrebbero interrompere le funzionalità del tuo tema o dei tuoi plug-in, pertanto potresti dover modificare il codice." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Scegli un tema leggero (idealmente un tema a blocchi) e implementa la memorizzazione nella cache a livello di pagina o una soluzione per siti statici. Disattiva i plug-in non necessari per ridurre al minimo l'overhead del server. Valuta la possibilità di eseguire l'upgrade dell'hosting a un servizio gestito o dedicato." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Prendi in considerazione la possibilità di mostrare degli estratti nell'elenco dei tuoi post (ad esempio utilizzando il tag more), riducendo il numero di post che vengono mostrati su una determinata pagina, spezzando i post più lunghi su più pagine o utilizzando un plug-in per il caricamento differito dei commenti."
diff --git a/front_end/third_party/lighthouse/locales/ja.json b/front_end/third_party/lighthouse/locales/ja.json index 03a56a5..f323af1 100644 --- a/front_end/third_party/lighthouse/locales/ja.json +++ b/front_end/third_party/lighthouse/locales/ja.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse ユーザーフロー レポート" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "レイアウト シフトは、ユーザーの操作なしで要素が移動する場合に発生します。[レイアウト シフトの原因を調査](https://web.dev/articles/optimize-cls)してください。たとえば、ページの読み込み時に要素が追加、削除される、フォントが変更されるなどの原因が考えられます。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "レイアウト シフトの原因" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "最初のネットワーク リクエストは最も重要です。リダイレクトを回避し、サーバー応答を高速に保ち、テキスト圧縮を有効にして、レイテンシを削減します。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "ドキュメント リクエストのレイテンシ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "テキストの表示を統一するため、[font-display](https://developer.chrome.com/blog/font-display) を swap または optional に設定することを検討してください。swap をさらに最適化して、[フォント指標のオーバーライド](https://developer.chrome.com/blog/font-fallbacks)でレイアウト シフトを軽減できます。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "フォント表示" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "最も長いフェーズから調査を開始します。[遅延を最小限に抑えることができます](https://web.dev/articles/optimize-inp#optimize_interactions)。処理期間を削減するには、[メインスレッドのコスト(通常は JS)を最適化](https://web.dev/articles/optimize-long-tasks)します。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "フェーズ別の INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "LCP 画像を HTML からすぐに[検出できる](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay)ようにし、[遅延読み込みを回避](https://web.dev/articles/lcp-lazy-loading)して、LCP を最適化します" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP リクエストの検出" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "各[フェーズには、それに適した改善戦略があります](https://web.dev/articles/optimize-lcp#lcp-breakdown)。理想的なのは、LCP 時間のほとんどがリソースの読み込みに使われ、遅延に費やされないことです。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "フェーズ別の LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "リクエストがページの最初のレンダリングをブロックしているため、LCP が遅れる可能性があります。これらのネットワーク リクエストを[遅らせるかインライン化](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)すると、クリティカル パスから移動できます。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "レンダリングをブロックしているリクエスト" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "スタイルの再計算のコストが引き続き高い場合は、セレクタの最適化によってコストを削減できます。経過時間が長く、遅いパスの割合(%)が高い[セレクタを最適化](https://developer.chrome.com/docs/devtools/performance/selector-stats)します。セレクタの複雑さや数、DOM のサイズや深さを抑えて、一致コストを削減します。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS セレクタのコスト" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "サードパーティのコードによって、読み込み速度が著しく低下する可能性があります。ページのコンテンツを優先させるには、[サードパーティのコードの読み込みを減らして遅らせ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)ます。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "サードパーティ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "ページのビューポートはモバイル向けに最適化されていないため、タップ操作が[最大 300 ミリ秒遅延](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)する可能性があります。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "ビューポートがモバイル向けに最適化されていません" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "アニメーション コンテンツの場合は、[`amp-anim`](https://amp.dev/documentation/components/amp-anim/) を使用して、コンテンツが画面外にあるときの CPU 使用量を最小限に抑えることができます。" },
diff --git a/front_end/third_party/lighthouse/locales/ko.json b/front_end/third_party/lighthouse/locales/ko.json index 3024414..a56acc3 100644 --- a/front_end/third_party/lighthouse/locales/ko.json +++ b/front_end/third_party/lighthouse/locales/ko.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse 사용자 플로우 보고서" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "레이아웃 변경은 사용자 상호작용 없이 요소가 이동할 때 발생합니다. 페이지가 로드될 때 요소가 추가되거나 삭제되거나 글꼴이 변경되는 등 [레이아웃이 변경되는 이유를 조사](https://web.dev/articles/optimize-cls)하세요." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "레이아웃 변경 원인" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "첫 번째 네트워크 요청이 가장 중요합니다. 리디렉션을 방지하고 서버 응답 속도를 높이며 텍스트 압축을 사용 설정하여 지연 시간을 줄이세요." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "문서 요청 지연 시간" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "[font-display](https://developer.chrome.com/blog/font-display)를 swap 또는 optional로 설정하여 텍스트가 일관되게 표시되도록 하세요. swap은 [글꼴 측정항목 재정의](https://developer.chrome.com/blog/font-fallbacks)를 통해 레이아웃 변화를 완화하도록 추가로 최적화할 수 있습니다." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "글꼴 표시" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "가장 긴 단계부터 조사를 시작하세요. [지연을 최소화할 수 있습니다](https://web.dev/articles/optimize-inp#optimize_interactions). 처리 시간을 줄이려면 [주 스레드 비용(JS인 경우가 많음)을 최적화](https://web.dev/articles/optimize-long-tasks)하세요." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "단계별 INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "HTML에서 LCP 이미지를 즉시 [검색 가능](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay)하게 만들고 [지연 로드](https://web.dev/articles/lcp-lazy-loading)를 방지하여 LCP를 최적화합니다." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP 요청 탐색" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "각 [단계에는 해당 단계에 맞는 개선 전략이 있습니다](https://web.dev/articles/optimize-lcp#lcp-breakdown). 이상적으로는 대부분의 LCP 시간이 지연이 아닌 리소스 로드에 소요되어야 합니다." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "단계별 LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "요청으로 인해 페이지의 초기 렌더링이 차단되어 LCP가 지연될 수 있습니다. [지연 또는 인라인 처리](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)하면 이러한 네트워크 요청이 주요 경로에서 벗어날 수 있습니다." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "렌더링 차단 요청" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "스타일 재계산 비용이 여전히 높다면 선택자 최적화를 통해 비용을 줄일 수 있습니다. 경과 시간이 길고 느린 경로 비율이 높은 경우 [선택자를 최적화](https://developer.chrome.com/docs/devtools/performance/selector-stats)하세요. 선택자가 간단하고 선택자 수가 적으며 DOM이 작고 DOM이 얕으면 일치 비용이 줄어듭니다." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS 선택자 비용" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "서드 파티 코드는 로드 성능에 크게 영향을 미칠 수 있습니다. [서드 파티 코드의 로드를 줄이고 연기](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)하여 페이지 콘텐츠에 우선순위를 지정하세요." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "서드 파티" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "페이지 표시 영역이 모바일에 최적화되어 있지 않아 탭 상호작용이 [최대 300밀리초 지연될 수 있습니다](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "표시 영역이 모바일에 최적화되지 않음" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "애니메이션 콘텐츠의 경우 [`amp-anim`](https://amp.dev/documentation/components/amp-anim/)을 사용하여 콘텐츠가 화면에 표시되지 않을 때 CPU 사용량을 최소화하세요." },
diff --git a/front_end/third_party/lighthouse/locales/lt.json b/front_end/third_party/lighthouse/locales/lt.json index 493b272..60c29ec 100644 --- a/front_end/third_party/lighthouse/locales/lt.json +++ b/front_end/third_party/lighthouse/locales/lt.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "„Lighthouse“ naudotojų srauto ataskaita" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Išdėstymo poslinkiai įvyksta, kai elementai juda be naudotojo sąveikos. [Išnagrinėkite išdėstymo poslinkių priežastis](https://web.dev/articles/optimize-cls), pvz., elementų pridėjimą, pašalinimą arba šriftų keitimą, kai puslapis įkeliamas." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Išdėstymo poslinkio priežastys" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Pirmoji tinklo užklausa yra svarbiausia. Sumažinkite delsą vengdami peradresavimų, užtikrindami spartų serverio atsaką ir įgalindami teksto glaudinimą." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Dokumento užklausos delsa" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Apsvarstykite galimybę nustatyti [font-display](https://developer.chrome.com/blog/font-display) kaip swap arba optional, kad tekstas būtų nuolat matomas. swap galima toliau optimizuoti, kad būtų sumažinti išdėstymo poslinkiai naudojant [šrifto metrikos nepaisymą](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Šrifto pateikimas" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Pradėkite tyrimą nuo ilgiausios fazės. [Galite sumažinti vėlavimą](https://web.dev/articles/optimize-inp#optimize_interactions). Kad apdorojimo trukmė būtų trumpesnė, [optimizuokite pagrindinės grupės mokesčius](https://web.dev/articles/optimize-long-tasks), dažnai JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "SKŽ pagal etapą" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimizuokite DTŽ, kad DTŽ vaizdas būtų [aptinkamas](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) iš karto iš HTML ir [išvengtumėte asinchroninio įkėlimo](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "DTŽ užklausos aptikimas" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Kiekvienai [fazei taikomos konkrečios tobulinimo strategijos](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealiu atveju didžiąją DTŽ laiko dalį turėtų sudaryti šaltinių įkėlimas, o ne vėlavimai." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "DTŽ pagal etapą" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Užklausos blokuoja pradinį puslapio pateikimą, dėl kurio DTŽ gali vėluoti. [Atidėliojant arba įterpiant](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) šias tinklo užklausas galima pašalinti iš kritinio kelio." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Pateikimo blokavimo užklausos" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Jei stiliaus perskaičiavimo mokesčiai išlieka dideli, juos galima sumažinti optimizavus parinkiklius. [Optimizuokite parinkiklius](https://developer.chrome.com/docs/devtools/performance/selector-stats), kai praėjęs laikas ir lėto kelio proc. yra dideli. Paprastesni parinkikliai, mažiau parinkiklių, mažesnis DOM ir seklesnis DOM sumažins atitikimo mokesčius." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS kalbos parinkiklio mokesčiai" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Trečiosios šalies kodas gali smarkiai paveikti įkėlimo našumą. [Sumažinkite ir atidėkite trečiosios šalies kodo įkėlimą](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), kad būtų nustatytas puslapio turinio prioritetas." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Trečiosios šalys" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Puslapio peržiūros sritis neoptimizuota mobiliesiems, todėl sąveikos su palietimais gali būti [atidėtos iki 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Peržiūros sritis neoptimizuota mobiliesiems" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Jei teikiate animuotą turinį, naudokite [„`amp-anim`“](https://amp.dev/documentation/components/amp-anim/), kad būtų naudojama mažiau centrinio procesoriaus galios, kai turinys nerodomas ekrane." }, @@ -2658,55 +2718,55 @@ "message": "Apsvarstykite galimybę naudoti komponentų kūrimo rinkinyje (CDK) esančią paslaugų priemonę „`BreakpointObserver`“ vaizdų atskaitos taškams tvarkyti. [Sužinokite daugiau](https://material.angular.io/cdk/layout/overview)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Apsvarstykite galimybę įkelti savo `GIF` į paslaugą, kuri leis jį įterpti kaip HTML5 vaizdo įrašą." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Apsvarstykite galimybę konfigūruoti [„WebP“ vaizdų formatus naudodami vaizdo stiliaus konvertavimo funkciją](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) svetainėje." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Apsvarstykite galimybę konfigūruoti asinchroninio įkėlimo vaizdus sistemoje „`Drupal`“. Vaizdų laukų formatavimo priemonės palaiko „`lazy`“ arba „`eager`“." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Jei DTŽ elementas dinamiškai pridedamas puslapyje, turėtumėte optimizuoti vaizdą, kad patobulintumėte DTŽ. [Sužinokite daugiau](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Peradresuojant puslapio įkėlimo delsos laikas dar labiau pailgėja. Jei įdiegtas [peradresavimo](https://www.drupal.org/project/redirect) modulis, peržiūrėkite, ar galima pašalinti nereikalingus peradresavimus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Apsvarstykite galimybę naudoti [modulį](https://www.drupal.org/project/critical_css), kad galėtumėte įterpti kritines CSS kalbos ir „JavaScript“ funkcijas, ir naudoti atidėjimo atributą nekritinėms CSS kalbos ar „JavaScript“ funkcijoms." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Iškelkite srautą naudodami vieną ar daugiau „`Drupal`“ talpyklos modulių, pvz., „`Internal Page Cache`“, „`Internal Dynamic Page Cache`“ ir „`BigPipe`“. Sujungę su TPT dar labiau pagerinkite atsako laiką. Prieglobos serveriai turėtų naudoti „PHP OPcache“. Apsvarstykite galimybę naudoti atminties talpyklą, pvz., „Redis“ ar „Memcached“, kad sumažintumėte duomenų bazės užklausų laiką. Galiausiai naudokite našumo temas, modulius ir spartesnius serverius, kad sumažintumėte serverio atsako laiką." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Apsvarstykite galimybę naudoti [interaktyvių vaizdų stilius](https://www.drupal.org/documentation/modules/responsive_image), kad sumažintumėte puslapyje įkeliamus vaizdus. Jei naudojate `Views` keliems turinio elementams rodyti puslapyje, apsvarstykite galimybę įdiegti puslapių numeravimą, kad apribotumėte nurodytame puslapyje rodomų turinio elementų skaičių." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Būtinai įgalinkite funkciją „Apibendrinti CSS kalbos failus“ puslapyje „Administravimas“ » „Konfigūravimas“ » „Diegimas“." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Būtinai įgalinkite funkciją „Apibendrinti „JavaScript“ failus“ puslapyje „Administravimas“ » „Konfigūravimas“ » „Diegimas“." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Apsvarstykite galimybę pašalinti nenaudojamas CSS kalbos taisykles ir pridėti tik reikalingas „`Drupal`“ bibliotekas prie atitinkamo puslapio ar komponento puslapyje. Jei reikia išsamios informacijos, žr. [„`Drupal`“ dokumentus](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Kad nustatytumėte pridėtas bibliotekas, pridedančias nesusijusios CSS kalbos, pabandykite vykdyti [naudojamą kodo dalį](https://developer.chrome.com/docs/devtools/coverage) naudodami „Chrome“ kūrėjo įrankius. Susijusią temą ir (arba) modulį galite nustatyti pagal stiliaus aprašo URL, kai CSS kalbos apibendrinimas išjungtas „`Drupal`“ svetainėje. Ieškokite temų ir (arba) modulių, kurių sąraše pateikta daug stiliaus aprašų, kurių naudojamoje kodo dalyje yra daug raudonos spalvos. Tema ir (arba) modulis turėtų pridėti stiliaus aprašų biblioteką tik tokiu atveju, jei ji tikrai naudojama puslapyje." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Apsvarstykite galimybę pašalinti nenaudojamus „JavaScript“ išteklius ir pridėti tik reikalingas „`Drupal`“ bibliotekas prie atitinkamo puslapio ar komponento puslapyje. Jei reikia išsamios informacijos, žr. [„Drupal“ dokumentus](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Kad nustatytumėte pridėtas bibliotekas, pridedančias nesusijusios „JavaScript“ kalbos, pabandykite vykdyti [naudojamą kodo dalį](https://developer.chrome.com/docs/devtools/coverage) naudodami „Chrome“ kūrėjo įrankius. Susijusią temą ir (arba) modulį galite nustatyti pagal scenarijaus URL, kai „JavaScript“ apibendrinimas išjungtas „`Drupal`“ svetainėje. Ieškokite temų ir (arba) modulių, kurių sąraše pateikta daug scenarijų, kurių naudojamoje kodo dalyje yra daug raudonos spalvos. Tema ir (arba) modulis turėtų pridėti scenarijų biblioteką tik tokiu atveju, jei ji tikrai naudojama puslapyje." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Nustatykite parinktį „Naršyklės ir tarpinio serverio talpyklos maksimalus amžius“ puslapyje „Administravimas“ » „Konfigūravimas“ » „Diegimas“. Skaitykite apie [„`Drupal`“ talpyklą ir našumo optimizavimą](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Apsvarstykite galimybę naudoti [modulį](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), kuris automatiškai optimizuoja ir sumažina svetainėje įkeltus vaizdus, išlaikydamas jų kokybę. Be to, įsitikinkite, kad naudojate „`Drupal`“ teikiamus savuosius [interaktyvių vaizdų stilius](https://www.drupal.org/documentation/modules/responsive_image) visiems svetainėje pateikiamiems vaizdams." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "„`Preconnect`“ arba „`dns-prefetch`“ šaltinio nurodymų galima pridėti įdiegiant ir konfigūruojant [modulį](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), kurį naudojant galima teikti naudotojo priemonės šaltinio nurodymus." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Įsitikinkite, kad naudojate „`Drupal`“ teikiamus savuosius [interaktyvių vaizdų stilius](https://www.drupal.org/documentation/modules/responsive_image). Naudokite interaktyvių vaizdų stilius pateikdami vaizdų failus peržiūros režimais, per rodinius ar vaizdus, įkeltus naudojant WYSIWYG redagavimo priemonę." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstinius šaltinius reikėtų suglaudinti (naudojant „Gzip“, „Deflate“ arba „Brotli“), kad bendrai būtų sunaudojama kuo mažiau tinklo baitų. Apsvarstykite galimybę naudoti TPT, kuri tai palaiko vietinėje sistemoje, arba sukonfigūruokite žiniatinklio serverį, kad atliktų šią operaciją. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Naudodami [„Ezoic Leap“](https://pubdash.ezoic.com/speed) įgalinkite nustatymą „`Optimize Fonts`“, kad automatiškai naudotumėte PAP funkciją „`font-display`“ ir užtikrintumėte, kad tekstas matomas naudotojui, kol įkeliami žiniatinklio šriftai." @@ -3036,7 +3096,7 @@ "message": "Yra įvairių „WordPress“ papildinių, kuriuos naudodami galite [įterpti svarbių išteklių](https://wordpress.org/plugins/search/critical+css/) arba [atidėti mažiau svarbius šaltinius](https://wordpress.org/plugins/search/defer+css+javascript/). Atminkite, kad dėl šių papildinių teikiamo optimizavimo gali būti pažeistos jūsų temos ar papildinių funkcijos, todėl tikriausiai turėsite atlikti kodo pakeitimų." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Pasirinkite lengvą temą (geriausia – bloko temą) ir įdiekite viso puslapio talpyklą arba statinę svetainės priemonę. Išjunkite nereikalingus papildinius, kad sumažintumėte serverio apkrovą. Apsvarstykite galimybę atnaujinti prieglobą į valdomą arba specialią paslaugą." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Apsvarstykite galimybę rodyti ištraukas įrašų sąrašuose (pvz., naudodami daugiau elementų žymą), sumažinti nurodytame puslapyje rodomų įrašų skaičių, suskaidyti ilgus įrašus į kelis puslapius arba naudoti komentarų atidėtojo įkėlimo papildinį."
diff --git a/front_end/third_party/lighthouse/locales/lv.json b/front_end/third_party/lighthouse/locales/lv.json index c984e44..d90daca 100644 --- a/front_end/third_party/lighthouse/locales/lv.json +++ b/front_end/third_party/lighthouse/locales/lv.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse lietotāju plūsmas pārskats" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Izkārtojuma nobīdes rodas, ja elementi pārvietojas bez lietotāja mijiedarbības. [Izpētiet izkārtojuma nobīdes cēloņus](https://web.dev/articles/optimize-cls), piemēram, elementu pievienošanu un noņemšanu vai to fonta izmaiņas lapas ielādes laikā." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Izkārtojuma nobīdes cēloņi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Jūsu pirmais tīkla pieprasījums ir vissvarīgākais. Samaziniet latentumu, novēršot novirzīšanu, nodrošinot ātru servera atbildi un iespējojot teksta saspiešanu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Dokumenta pieprasījuma latentums" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Lai teksts vienmēr būtu redzams, ieteicams parametram [font-display](https://developer.chrome.com/blog/font-display) iestatīt vērtību swap vai optional. Lai mazinātu izkārtojuma nobīdes, swap var optimizēt vēl vairāk, izmantojot [fonta rādītāju ignorēšanu](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Fonta attēlojums" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Vispirms izpētiet garāko posmu. [Aizkaves var samazināt](https://web.dev/articles/optimize-inp#optimize_interactions). Lai samazinātu apstrādes ilgumu, [optimizējiet galvenā pavediena izmaksas](https://web.dev/articles/optimize-long-tasks) (parasti JS)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP pēc posma" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimizējiet LCP, padarot LCP attēlu nekavējoties [atklājamu](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) HTML struktūrā un [novēršot atlikto ielādi](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP pieprasījuma atklāšana" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Katram [posmam ir noteiktas uzlabošanas stratēģijas](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideālā gadījumā lielāko daļu LCP laika ir jāveido resursu ielādei, nevis aizkavei." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP pēc fāzes" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Pieprasījumi bloķē lapas sākotnējo atveidi, un tas var aizkavēt LCP. [Atliekot vai iekļaujot](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) šos tīkla pieprasījumus, tos varat pārvietot ārpus kritiskā ceļa." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Atveidošanas bloķēšanas pieprasījumi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ja izmaksas par stila pārrēķināšanu saglabājas augstas, tās var samazināt atlasītāja optimizācija. [Optimizējiet atlasītājus](https://developer.chrome.com/docs/devtools/performance/selector-stats), iestatot augstu pagājušā laika vērtību un augstu lēna ceļa % vērtību. Atbilstības izmaksas arī var samazināt, izmantojot vienkāršāku atlasītāju, mazāku skaitu atlasītāju, mazāku DOM un DOM koku ar mazāku līmeņu skaitu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS atlasītāja izmaksas" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Trešo pušu kods var ievērojami ietekmēt ielādes veiktspēju. Lai piešķirtu prioritāti savas lapas saturam, [ierobežojiet un atlieciet trešās puses koda ielādi](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Trešās puses" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Lapas skatvieta nav optimizēta mobilajām ierīcēm, tāpēc mijiedarbība ar pieskārieniem var būt [aizkavēta līdz pat 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Skatvieta nav optimizēta mobilajām ierīcēm" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Animētam saturam izmantojiet komponentu [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), lai samazinātu centrālā procesora lietojumu, kamēr saturs nav redzams ekrānā." }, @@ -2658,55 +2718,55 @@ "message": "Lai pārvaldītu attēlu robežvērtības, varat izmantot utilītprogrammu `BreakpointObserver`, kas ir pieejama komponentu izstrādes komplektā (Component Dev Kit — CDK). [Uzziniet vairāk](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Ieteicams augšupielādēt `GIF` failu pakalpojumā, kuru varēs izmantot, lai šo failu iegultu kā HTML5 videoklipu." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Mēģiniet savā vietnē konfigurēt [attēlu stila maiņu uz attēlu formātu WebP](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Ieteicams programmatūrā `Drupal` konfigurēt attēlu atlikto ielādi. Attēlu lauku formatētāji atbalsta šāda veida ielādes: `lazy` vai `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Ja LCP elements tiek dinamiski pievienots lapai, jums ir jāoptimizē attēls, lai varētu uzlabot LCP. [Uzziniet vairāk](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Novirzīšana rada papildu aizkaves pirms lapas pilnīgas ielādes. Ja ir instalēts [novirzīšanas](https://www.drupal.org/project/redirect) modulis, pārbaudiet, vai var noņemt nevajadzīgos novirzīšanas gadījumus. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Apsveriet iespēju izmantot [moduli](https://www.drupal.org/project/critical_css), lai iekļautu būtisku CSS un JavaScript kodu, kā arī izmantojiet atribūtu “defer” mazāk svarīgam CSS vai JavaScript kodam." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Atvieglojiet datplūsmu, izmantojot vienu vai vairākus `Drupal` kešatmiņas moduļus, piemēram, `Internal Page Cache`, `Internal Dynamic Page Cache` un `BigPipe`. Lai vēl vairāk uzlabotu atbildes laiku, izmantojiet arī CDN. Mitināšanas serveros ir jāievieš PHP OPcache. Lai samazinātu datu bāzes vaicājumu apstrādei nepieciešamo laiku, ieteicams izmantot RAM kešatmiņu, piemēram, Redis vai Memcached. Visbeidzot, izmantojiet efektīvus motīvus un moduļus, kā arī ātrākus serverus, lai samazinātu servera atbildes laiku." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Ieteicams izmantot [adaptīvo attēlu stilus](https://www.drupal.org/documentation/modules/responsive_image), lai samazinātu lapā ielādēto attēlu lielumu. Ja saskarni `Views` izmantojat, lai lapā rādītu vairākus satura elementus, ieteicams ieviest lapdali, lai ierobežotu attiecīgajā lapā redzamo satura elementu skaitu." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Lapā “Administrācija » Konfigurācija » Izstrāde” jābūt iespējotai funkcijai “Apkopot CSS failus”." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Lapā “Administrācija » Konfigurācija » Izstrāde” jābūt iespējotai funkcijai “Apkopot JavaScript failus”." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Ieteicams noņemt neizmantotās CSS kārtulas un pievienot tikai vajadzīgās `Drupal` bibliotēkas atbilstošajām lapām vai komponentiem lapā. Detalizētu informāciju skatiet [`Drupal` dokumentācijā](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Lai identificētu pievienotās bibliotēkas, kas pievieno lieku CSS kodu, mēģiniet izpildīt [koda lietojumu](https://developer.chrome.com/docs/devtools/coverage), izmantojot Chrome izstrādātāja rīkus. Attiecīgo motīvu/moduli varat identificēt stilu lapas vietrādī URL, kad `Drupal` vietnē ir atspējota CSS apkopošana. Meklējiet motīvus/moduļus, kuriem sarakstā ir daudz stilu lapu ar daudz sarkanām atzīmēm koda lietojumā. Motīvam/modulim ir jāpievieno stilu lapu bibliotēka tikai tad, ja tā faktiski tiek izmantota lapā." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Ieteicams noņemt neizmantotos JavaScript līdzekļus un pievienot tikai vajadzīgās `Drupal` bibliotēkas atbilstošajām lapām vai komponentiem lapā. Lai iegūtu detalizētu informāciju, skatiet [Drupal dokumentāciju](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Lai identificētu pievienotās bibliotēkas, kas pievieno lieku JavaScript kodu, mēģiniet izpildīt [koda lietojumu](https://developer.chrome.com/docs/devtools/coverage), izmantojot Chrome izstrādātāja rīkus. Attiecīgo motīvu/moduli varat identificēt skripta vietrādī URL, kad `Drupal` vietnē ir atspējota JavaScript apkopošana. Meklējiet motīvus/moduļus, kuriem sarakstā ir daudz skriptu ar daudz sarkanām atzīmēm koda lietojumā. Motīvam/modulim ir jāpievieno skriptu bibliotēka tikai tad, ja tā faktiski tiek izmantota lapā." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Lapā “Administrācija » Konfigurācija » Izstrāde” norādiet iestatījumu “Pārlūka un starpniekservera kešatmiņas maksimālais vecums”. Uzziniet par [`Drupal` kešatmiņu un veiktspējas optimizēšanu](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Ieteicams izmantot [moduli](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), kas automātiski optimizē un samazina vietnē augšupielādēto attēlu lielumu, vienlaikus saglabājot kvalitāti. Kā arī ir jāizmanto iebūvētie [adaptīvo attēlu stili](https://www.drupal.org/documentation/modules/responsive_image), kas ir sniegti programmatūrā `Drupal` visiem vietnē renderētajiem attēliem." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Varat pievienot norādes par `Preconnect` vai `dns-prefetch` resursiem, instalējot un konfigurējot [moduli](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), kas nodrošina lietotāja aģenta resursu norādes." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Jāizmanto iebūvētie [adaptīvo attēlu stili](https://www.drupal.org/documentation/modules/responsive_image), kas ir sniegti programmatūrā `Drupal`. Lietojiet adaptīvo attēlu stilus, kad renderējat attēlu laukus skatīšanas režīmos, skatos vai attēlos, kas augšupielādēti, izmantojot WYSIWYG redaktoru." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Lai samazinātu kopējo tīkla lietojumu (baitos), vēlams izmantot tekstuālo datu saspiešanu (Gzip, Deflate vai Brotli). Ieteicams izmantot CDN, kas iebūvētā veidā atbalsta šo funkciju, vai konfigurēt tīmekļa serveri, lai veiktu šo darbību. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Izmantojiet [Ezoic Leap](https://pubdash.ezoic.com/speed) un iespējojiet opciju `Optimize Fonts`, lai automātiski izmantotu CSS funkciju `font-display` un nodrošinātu, ka tīmekļa fontu ielādes laikā teksts ir redzams lietotājiem." @@ -3036,7 +3096,7 @@ "message": "Ir vairāki WordPress spraudņi, kas var palīdzēt [iekļaut būtiskus līdzekļus](https://wordpress.org/plugins/search/critical+css/) vai [atlikt mazāk svarīgus resursus](https://wordpress.org/plugins/search/defer+css+javascript/). Ņemiet vērā, ka šo spraudņu nodrošinātā optimizācija var traucēt funkciju darbībai jūsu motīvā vai spraudņos, tādēļ, visticamāk, jums būs jāveic koda izmaiņas." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Izvēlieties vienkāršu motīvu (ideālā gadījumā — blokveida motīvu) un ieviesiet visas lapas kešatmiņas darbību vai statisku vietnes risinājumu. Atspējojiet nevajadzīgos spraudņus, lai samazinātu servera papildu slodzes apjomu. Apsveriet iespēju jaunināt mitināšanas pakalpojumu uz pārvaldītu vai individuāli piešķirtu pakalpojumu." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Apsveriet iespēju rādīt fragmentus ziņu sarakstos (piemēram, izmantojot tagu “more”), samazināt attiecīgajā lapā rādāmo ziņu skaitu, sadalīt garas ziņas vairākās lapās vai izmantot spraudni, lai atliktu komentāru ielādi."
diff --git a/front_end/third_party/lighthouse/locales/nl.json b/front_end/third_party/lighthouse/locales/nl.json index c556c19..b604f87 100644 --- a/front_end/third_party/lighthouse/locales/nl.json +++ b/front_end/third_party/lighthouse/locales/nl.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse-rapport over gebruikersstroom" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Indelingsverschuivingen komen voor als elementen bewegen zonder gebruikersinteractie. [Stel vast wat de oorzaak is van de indelingsverschuiving](https://web.dev/articles/optimize-cls), zoals elementen die worden toegevoegd of verwijderd, of het lettertype dat verandert terwijl de pagina wordt geladen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Oorzaken van indelingsverschuivingen" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Je eerste netwerkverzoek is het belangrijkst. Verminder de vertraging door omleidingen te vermijden, een snelle serverreactie te garanderen en tekstcompressie aan te zetten." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Vertraging van documentverzoek" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Overweeg [font-display](https://developer.chrome.com/blog/font-display) in te stellen op swap of optional om te zorgen dat tekst consistent zichtbaar is. swap kan verder worden geoptimaliseerd om indelingsverschuivingen te verminderen met [overschrijvingen van lettertypestatistieken](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Lettertypeweergave" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Onderzoek eerst de langste fase. [Je kunt vertraging tot een minimum beperken](https://web.dev/articles/optimize-inp#optimize_interactions). [Optimaliseer de kosten van de hoofdthread](https://web.dev/articles/optimize-long-tasks) (vaak JS) om de verwerkingsduur te verkorten." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP per fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimaliseer LCP door de LCP-afbeelding [vindbaar](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) te maken vanuit de HTML en [lazy loading te voorkomen](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP-verzoekdetectie" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Elke [fase heeft specifieke verbeteringsstrategieën](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealiter wordt het grootste deel van de LCP-tijd besteed aan het laden van de resources, niet aan vertragingen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP per fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Verzoeken blokkeren de eerste keer renderen van de pagina, waardoor LCP kan worden vertraagd. Door [verzoeken uit te stellen of in te sluiten](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) kun je deze netwerkverzoeken van de kritieke route verwijderen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Verzoeken voor renderblokkering" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Als de kosten van Stijl opnieuw berekenen hoog blijven, kun je ze verlagen met selectoroptimalisatie. [Optimaliseer de selectors](https://developer.chrome.com/docs/devtools/performance/selector-stats) met zowel een lange verstreken tijd als een hoog percentage langzame paden. Eenvoudigere selectors, minder selectors, een kleiner DOM en een minder diep DOM verlagen de kosten voor het zoeken naar overeenkomsten." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Kosten van css-kiezer" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Code van derden kan van grote invloed zijn op de laadprestaties. [Verminder het laden van code van derden en stel dit uit](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) om prioriteit te geven aan de content van je pagina." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Derden" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Het kijkvenster van de pagina is niet geoptimaliseerd voor mobiele apparaten. Tikinteracties kunnen daarom [tot 300 ms vertraagd](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) worden." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Kijkvenster niet geoptimaliseerd voor mobiel" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Gebruik in het geval van content met animatie [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) om het CPU-gebruik te minimaliseren als de content niet in beeld is." },
diff --git a/front_end/third_party/lighthouse/locales/no.json b/front_end/third_party/lighthouse/locales/no.json index bb78c19..73cdd40 100644 --- a/front_end/third_party/lighthouse/locales/no.json +++ b/front_end/third_party/lighthouse/locales/no.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse-rapport over brukerflyt" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Utseendeforskyvninger oppstår når elementer beveger seg uten at brukeren har gjort noe. [Undersøk årsakene til utseendeforskyvninger](https://web.dev/articles/optimize-cls), for eksempel elementer som legges til, fjernes eller endrer skrifttype mens siden lastes inn." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Årsaker til utseendeforskyvning" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Den første nettverksforespørselen er den viktigste. Reduser tidsforsinkelsen ved å unngå omdirigeringer, sikre rask tjenerrespons og slå på tekstkomprimering." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Tidsforsinkelse for dokumentforespørsel" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Vurder å sette [font-display](https://developer.chrome.com/blog/font-display) til swap eller optional for å sikre at teksten er synlig hele tiden. swap kan optimaliseres ytterligere for å motvirke utseendeforskyvninger med [overstyring av skrifttypeverdier](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Visning av skrifttype" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Begynn med å undersøke den lengste fasen. [Forsinkelser kan minimeres.](https://web.dev/articles/optimize-inp#optimize_interactions) For å redusere behandlingstiden må du [optimalisere kostnadene på hovedtråden](https://web.dev/articles/optimize-long-tasks). Ofte er dette JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP (tid fra interaksjon til neste opptegning) etter fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimaliser LCP (største innholdsrike opptegning) ved å gjøre LCP-bildet [synlig](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) umiddelbart i HTML-koden og [unngå bruk av utsatt innlasting](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Oppdagelse av forespørsel med LCP (største innholdsrike opptegning)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Hver [fase har spesifikke forbedringsstrategier](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ideelt sett bør mesteparten av LCP-tiden brukes på innlasting av ressurser, ikke på forsinkelser." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP (største innholdsrike opptegning) etter fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Forespørsler blokkerer den innledende gjengivelsen av siden, noe som kan forsinke LCP (største innholdsrike opptegning). [Hvis du utsetter eller fletter inn disse](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/), flyttes disse nettverksforespørslene ut av den kritiske banen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Forespørsler som blokkerer gjengivelse" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Hvis kostnadene for omberegning av stiler fortsetter å være høye, kan du senke dem ved å optimalisere velgere. [Optimaliser velgere](https://developer.chrome.com/docs/devtools/performance/selector-stats) som både har lang forløpstid og følger den langsomme banen en stor prosentandel av tiden. Både enklere velgere, færre velgere, en mindre DOM og en mindre omfattende DOM er med på å senke kostnadene ved å beregne elementsamsvar." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Kostnader for CSS-velger" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Tredjepartskode kan ha betydelig innvirkning på hvor lang tid det tar å laste inn siden. [Reduser og utsett innlasting av tredjepartskode](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) for å prioritere innholdet på siden din." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Tredjeparter" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Sidens synlige område er ikke mobiloptimalisert, så det kan [oppstå forsinkelser på opptil 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) når brukeren trykker på siden." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Det synlige området er ikke optimalisert for mobil" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "For animert innhold, bruk [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) for å minimere prosessorbruken når innholdet er utenfor skjermen." }, @@ -2658,55 +2718,55 @@ "message": "Vurder å bruke `BreakpointObserver`-verktøyet i Component Dev Kit (CDK) for å administrere stoppunkter for bilder. [Finn ut mer](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Vurder å laste opp `GIF` til en tjeneste som gjør det mulig å bygge den inn som en HTML5-video." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Vurder å konfigurere [WebP-bildeformater med bildestilen «Convert» (konverter)](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) på nettstedet ditt." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Vurder å konfigurere utsatt innlasting av bilder i `Drupal`. Feltformateringsverktøyene for bilder støtter `lazy` eller `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Hvis elementet for LCP (største innholdsrike opptegning) legges til på siden dynamisk, bør du forhåndslaste bildet for å forbedre LCP-tiden. [Finn ut mer.](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Viderekoblinger fører til flere forsinkelser før siden kan lastes inn. Hvis [Viderekobling](https://www.drupal.org/project/redirect)-modulen er installert, bør du sjekke om unødvendige viderekoblinger kan fjernes. [Finn ut mer.](https://developers.google.com/web/tools/lighthouse/audits/redirects)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Vurder å bruke [en modul](https://www.drupal.org/project/critical_css) for å bygge inn kritisk CSS- og JavaScript-kode samt å bruke «defer»-attributtet for ikke-kritisk CSS- og JavaScript-kode." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Avlast trafikken med en eller flere `Drupal`-buffermoduler, for eksempel `Internal Page Cache`, `Internal Dynamic Page Cache` og `BigPipe`. Kombiner disse med et ILN for å gjøre svartiden enda kortere. Vertstjenerne dine bør bruke PHP OPcache. Prøv å bruke minnebufring, for eksempel Redis eller Memcached, for å redusere tidsbruken for databasespørringer. Til slutt kan du bruke temaer og moduler med høy ytelse samt raskere tjenere for å redusere tjenerresponstiden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Vurder å bruke [responsive bildestiler](https://www.drupal.org/documentation/modules/responsive_image) for å redusere størrelsen på bilder som lastes inn på siden. Hvis du bruker `Views` til å vise flere innholdselementer på siden, bør du vurdere å implementere sideinndeling for å begrense antallet innholdselementer som vises på en gitt side." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Forsikre deg om at du har slått på «Aggreger CSS-filer» på siden «Administrasjon > Konfigurasjon > Utvikling»." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Forsikre deg om at du har slått på «Aggreger JavaScript-filer» på siden «Administrasjon > Konfigurasjon > Utvikling»." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Vurder å fjerne ubrukte CSS-regler og kun legge ved de nødvendige `Drupal`-bibliotekene på den relevante siden eller komponenten på siden. Du finner mer informasjon i [`Drupal`-dokumentasjonen](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). For å identifisere vedlagte bibliotek som legger til overflødig CSS, prøv å kjøre [kodedekning](https://developer.chrome.com/docs/devtools/coverage) i Chrome-utviklerverktøyene. Du kan finne temaet eller modulen som er ansvarlig, i nettadressen til stilarket når CSS-aggregering er avslått på `Drupal`-nettstedet ditt. Se opp for temaer og moduler som har mange stilark på listen, og som viser mye rødt i kodedekningen. Temaer og moduler bør bare legge ved stilarkbibliotek hvis disse faktisk brukes på siden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Vurder å fjerne ubrukte JavaScript-ressurser og kun legge ved de nødvendige `Drupal`-bibliotekene på den relevante siden eller komponenten på siden. Se [Drupal-dokumentasjonen](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for mer informasjon. For å identifisere vedlagte bibliotek som legger til overflødig JavaScript, prøv å kjøre [kodedekning](https://developer.chrome.com/docs/devtools/coverage) i Chrome-utviklerverktøyene. Du kan finne temaet eller modulen som er ansvarlig, i nettadressen til skriptet når JavaScript-aggregering er avslått på `Drupal`-nettstedet ditt. Se opp for temaer og moduler som har mange skript på listen, og som viser mye rødt i kodedekningen. Temaer og moduler bør bare legge ved skriptbiblioteker hvis disse faktisk brukes på siden." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Angi «Maksimumsalder for nettleser- og proxy-tjenerbuffer» på siden «Administrasjon > Konfigurasjon > Utvikling». Les om [`Drupal`-bufferen og optimalisering for ytelse](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Vurder å bruke [en modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) som automatisk optimaliserer og reduserer størrelsen på bilder som lastes opp via nettstedet, uten at det går ut over kvaliteten. Pass også på at du bruker de innebygde [responsive bildestilene](https://www.drupal.org/documentation/modules/responsive_image) i `Drupal` for alle bilder som gjengis på nettstedet." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Ressurshintene `Preconnect` og `dns-prefetch` kan legges til ved å installere og konfigurere [en modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) som inneholder funksjonalitet for å gi brukeragenten ressurshint." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Sørg for at du bruker de innebygde [responsive bildestilene](https://www.drupal.org/documentation/modules/responsive_image) i `Drupal`. Bruk de responsive bildestilene ved gjengivelse av bildefelt gjennom visningsmoduser, visninger eller bilder som lastes opp gjennom WYSIWYG-redigeringsverktøyet." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstbaserte ressurser bør leveres komprimert (med gzip, deflate eller brotli) for å minimere antall byte som sendes over nettverket. Vurder å bruke et ILN som støtter dette som standard, eller konfigurer netttjeneren til å utføre denne operasjonen. [Finn ut mer.](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Bruk [Ezoic Leap](https://pubdash.ezoic.com/speed) og slå på `Optimize Fonts` for å bruke CSS-funksjonen `font-display` automatisk. Dette sikrer at tekst er synlig for brukere mens skrifttyper for nettet lastes inn." @@ -3036,7 +3096,7 @@ "message": "Det finnes en rekke WordPress-programtillegg som kan hjelpe deg med å [bygge inn kritiske elementer direkte på siden](https://wordpress.org/plugins/search/critical+css/) eller [utsette innlasting av mindre viktige ressurser](https://wordpress.org/plugins/search/defer+css+javascript/). Vær obs på at optimalisering som gjøres av disse programtilleggene, kan ødelegge funksjonalitet i temaet ditt eller programtilleggene dine, så du må sannsynligvis gjøre kodeendringer." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Velg et ressurseffektivt tema (helst et blokktema), og implementer fullstendig sidebufring eller en statisk nettstedsløsning. Slå av unødvendige programtillegg for å minimere ressursbruken på tjeneren. Vurder å oppgradere vertstjenesten til en administrert eller dedikert tjeneste." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Vurder å vise utdrag på innleggslistene (f.eks. via Mer-taggen), redusere antall innlegg som vises på en gitt side, fordele lange innlegg på flere sider eller bruke et programtillegg for utsatt innlasting av kommentarer."
diff --git a/front_end/third_party/lighthouse/locales/pl.json b/front_end/third_party/lighthouse/locales/pl.json index e01387b..1baf1ad 100644 --- a/front_end/third_party/lighthouse/locales/pl.json +++ b/front_end/third_party/lighthouse/locales/pl.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Raport Lighthouse dotyczący przepływu użytkowników" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Przesunięcia układu występują, gdy elementy poruszają się bez interakcji ze strony użytkownika. [Zbadaj przyczyny przesunięć układu](https://web.dev/articles/optimize-cls) takie jak dodanie lub usunięcie elementów lub zmiana czcionek podczas wczytywania strony." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Przyczyny problemów związanych z przesunięciem układu" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Pierwsze żądanie sieciowe jest najważniejsze. Zmniejsz jego opóźnienie, unikając przekierowań, zapewniając szybką reakcję serwera i włączając kompresję tekstu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Czas oczekiwania w przypadku żądania dokumentu" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Sugerujemy ustawienie właściwości [font-display](https://developer.chrome.com/blog/font-display) na swap lub optional, aby tekst był zawsze widoczny. Element swap można dodatkowo zoptymalizować za pomocą [zastąpień danych o czcionkach](https://developer.chrome.com/blog/font-fallbacks) – pozwoli to zmniejszyć przesunięcia układu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Wyświetlanie czcionki" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Zacznij analizę od najdłuższego etapu. [Można zminimalizować opóźnienia](https://web.dev/articles/optimize-inp#optimize_interactions). Aby skrócić czas przetwarzania, [zoptymalizuj koszty wątku głównego](https://web.dev/articles/optimize-long-tasks), często JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP według etapu" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Zoptymalizuj LCP, zapewniając natychmiastową [wykrywalność](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) obrazu LCP w kodzie HTML i [unikając leniwego ładowania](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Wykrywanie żądań LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Każdy [etap ma określone strategie poprawy](https://web.dev/articles/optimize-lcp#lcp-breakdown). W idealnym przypadku większość czasu LCP powinna być poświęcona na ładowanie zasobów, a nie na opóźnienia." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP według etapu" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Żądania blokują początkowe renderowanie strony, co może opóźniać LCP. [Opóźnianie lub wstawianie](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) może skierować te żądania sieciowe poza ścieżkę krytyczną." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Prośby o zablokowanie renderowania" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Jeśli koszty ponownego obliczania stylu są wysokie, optymalizacja selektora może je obniżyć. [Zoptymalizuj selektory](https://developer.chrome.com/docs/devtools/performance/selector-stats), które mają zarówno długi czas działania, jak i wysoki odsetek ścieżek powolnych. Prostsze selektory, mniejsza ich liczba oraz mniejszy i płytszy DOM pozwolą zmniejszyć koszty dopasowywania." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Koszty selektora CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kod spoza witryny może znacznie spowalniać wczytywanie stron. [Ogranicz i opóźnij wczytywanie kodu spoza witryny](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), aby nadać priorytet treściom ze swojej strony." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Spoza witryny" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Widoczny obszar strony nie jest zoptymalizowany pod kątem urządzeń mobilnych, więc interakcje dotykowe mogą być [opóźnione nawet o 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Widoczny obszar niezoptymalizowany pod kątem urządzeń mobilnych" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "W przypadku treści animowanych stosuj atrybut [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), by zminimalizować wykorzystanie procesora, gdy te treści znajdują się poza ekranem." },
diff --git a/front_end/third_party/lighthouse/locales/pt-PT.json b/front_end/third_party/lighthouse/locales/pt-PT.json index 3c98dea..31b9937 100644 --- a/front_end/third_party/lighthouse/locales/pt-PT.json +++ b/front_end/third_party/lighthouse/locales/pt-PT.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Relatório do fluxo do utilizador do Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "As mudanças de esquema ocorrem quando os elementos se movem sem nenhuma interação do utilizador. [Investigue as causas das mudanças de esquema](https://web.dev/articles/optimize-cls), como a adição ou a remoção de elementos ou a alteração dos respetivos tipos de letra à medida que a página é carregada." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Causas da mudança de esquema" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "O primeiro pedido de rede é o mais importante. Reduza a latência evitando redirecionamentos, assegurando uma resposta rápida do servidor e ativando a compressão de texto." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latência do pedido de documento" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Considere definir [font-display](https://developer.chrome.com/blog/font-display) como swap ou optional para garantir que o texto é visível de forma consistente. É possível otimizar ainda mais o swap para mitigar as mudanças de esquema com [substituições de métricas de tipos de letra](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Apresentação do tipo de letra" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Comece a investigar com a fase mais longa. [Os atrasos podem ser minimizados](https://web.dev/articles/optimize-inp#optimize_interactions). Para reduzir a duração do processamento, [otimize os custos da thread principal](https://web.dev/articles/optimize-long-tasks), muitas vezes JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Otimize o LCP tornando a imagem do LCP [detetável](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) imediatamente a partir do HTML e [evitando o carregamento em diferido](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Deteção de pedidos de LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Cada [fase tem estratégias de melhoria específicas](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealmente, a maior parte do tempo de LCP deve ser gasto no carregamento dos recursos e não nos atrasos." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Os pedidos estão a bloquear a renderização inicial da página, o que pode atrasar o LCP. [Adiar ou colocar inline](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) pode remover estes pedidos de rede do caminho crítico." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Pedidos de bloqueio de renderização" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Se os custos de Recalcular estilo permanecerem elevados, a otimização do seletor pode reduzi-los. [Otimize os seletores](https://developer.chrome.com/docs/devtools/performance/selector-stats) com um tempo decorrido elevado e uma percentagem de caminho lento elevada. Seletores mais simples, menos seletores, um DOM menor e um DOM mais superficial reduzem os custos de correspondência." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Custos do seletor CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "O código de terceiros pode afetar significativamente o desempenho de carregamento. [Reduza e adie o carregamento de código de terceiros](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) para dar prioridade ao conteúdo da sua página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Terceiros" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "A área visível da página não está otimizada para dispositivos móveis e, por isso, as interações com toques podem ter um [atraso de até 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Área visível não otimizada para dispositivos móveis" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Para conteúdo animado, utilize [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) para minimizar a utilização da CPU quando o conteúdo não está visível." },
diff --git a/front_end/third_party/lighthouse/locales/pt.json b/front_end/third_party/lighthouse/locales/pt.json index 41fc948..45c422b 100644 --- a/front_end/third_party/lighthouse/locales/pt.json +++ b/front_end/third_party/lighthouse/locales/pt.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Relatório de fluxo de usuários do Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "As mudanças de layout ocorrem quando os elementos se movem sem qualquer interação do usuário. [Investigue as causas de mudanças no layout](https://web.dev/articles/optimize-cls), como elementos adicionados, removidos ou com fontes alteradas durante o carregamento da página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Causas da troca de layout" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "A primeira solicitação de rede é a mais importante. Reduza a latência dela evitando redirecionamentos, garantindo uma resposta rápida do servidor e ativando a compactação de texto." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latência da solicitação de documentos" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Defina [font-display](https://developer.chrome.com/blog/font-display) como swap ou optional para garantir que o texto fique visível de forma consistente. O atributo swap pode ser otimizado ainda mais para reduzir as trocas de layout com [substituições de métrica de fonte](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Exibição de fontes" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Comece a investigação pela fase mais longa. [Os atrasos podem ser minimizados](https://web.dev/articles/optimize-inp#optimize_interactions). Para reduzir a duração do processamento, [otimize os custos da linha de execução principal](https://web.dev/articles/optimize-long-tasks), geralmente JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Otimize a LCP tornando a imagem LCP [detectável](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) no HTML imediatamente e [evitando o carregamento lento](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Descoberta de solicitações de LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Cada [fase tem estratégias de melhoria específicas](https://web.dev/articles/optimize-lcp#lcp-breakdown). O ideal é que a maior parte do tempo de LCP seja gasto no carregamento dos recursos, não em atrasos." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP por fase" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "As solicitações estão bloqueando a renderização inicial da página, o que pode atrasar a LCP. Essas solicitações de rede podem ser [deferidas ou colocadas inline](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) para que fiquem fora do caminho crítico." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Renderizar solicitações de bloqueio" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Se os custos de \"Recalcular estilo\" permanecerem altos, a otimização do seletor poderá reduzir esse valor. [Otimize os seletores](https://developer.chrome.com/docs/devtools/performance/selector-stats) com muito tempo decorrido e porcentagem alta de caminhos lentos. Seletores mais simples, menos seletores, um DOM menor e um DOM com menos níveis reduzem os custos correspondentes." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Custos do seletor de CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Código de terceiros pode afetar significativamente a performance de carregamento. [Reduza e adie o carregamento de código de terceiros](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) para priorizar o conteúdo da sua página." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Terceiros" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "A janela de visualização da página não é otimizada para dispositivos móveis. Por isso, as interações por toque podem [atrasar até 300ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Janela de visualização não otimizada para dispositivos móveis" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Para conteúdo animado, use [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) para reduzir o uso da CPU quando o conteúdo estiver fora da tela." }, @@ -2658,55 +2718,55 @@ "message": "Considere usar o utilitário `BreakpointObserver` no Component Dev Kit (CDK) para gerenciar pontos de interrupção da imagem. [Saiba mais](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Faça upload do seu `GIF` em um serviço que o disponibilizará para incorporação como um vídeo HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Recomendamos que configure [formatos de imagem WebP com um estilo de imagem Convert](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) no seu site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Configure o carregamento lento de imagens no `Drupal`. Os formatadores de campo de imagens podem usar carregamentos `lazy` ou `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Se o elemento da LCP for adicionado à página de maneira dinâmica, será necessário otimizar a imagem para melhorar a métrica de LCP. [Saiba mais](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Os redirecionamentos causam mais atrasos antes do carregamento da página. Se o módulo [Redirect](https://www.drupal.org/project/redirect) estiver instalado, confira se é possível remover redirecionamentos desnecessários. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Use [um módulo](https://www.drupal.org/project/critical_css) para CSS e JavaScript inline essenciais, bem como o atributo \"defer\" para CSS ou JavaScript não essenciais." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Descarregue o tráfego com um ou mais módulos de armazenamento em cache do `Drupal`, como `Internal Page Cache`, `Internal Dynamic Page Cache` e `BigPipe`. Combine esse processo com uma CDN para melhorar ainda mais o tempo de resposta. Seus servidores de hospedagem precisam usar o PHP OPcache. Use armazenamento de memória em cache, como Redis ou Memcached, para reduzir o tempo de consulta do banco de dados. Por fim, use módulos e temas de alto desempenho, bem como servidores mais rápidos, para diminuir o tempo de resposta do servidor." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Use [Estilos de Imagem Responsiva](https://www.drupal.org/documentation/modules/responsive_image) para reduzir o tamanho das imagens carregadas na sua página. Se você estiver usando `Views` para mostrar vários itens em uma página, implemente a paginação para limitar o conteúdo mostrado em uma determinada página." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Não esqueça de ativar a opção \"Agregar documentos CSS\" na página \"Administração » Configurações » Desenvolvimento\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Não esqueça de ativar a opção \"Agregar documentos JavaScript\" na página \"Administração » Configurações » Desenvolvimento\"." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Remova as regras não usadas do CSS e anexe apenas as bibliotecas `Drupal` necessárias para a página ou o componente da página. Consulte a [documentação do `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) para saber mais. Para identificar bibliotecas anexas que estão adicionando CSS externo, execute a [cobertura de código](https://developer.chrome.com/docs/devtools/coverage) no Chrome DevTools. É possível identificar o tema/módulo responsável pelo URL da folha de estilo quando a agregação do CSS está desativada no seu site `Drupal`. Procure temas/módulos que tenham muitas folhas de estilo na lista, apresentando um nível alto de vermelho na cobertura do código. Um tema/módulo só precisa anexar uma biblioteca de folhas de estilo quando ela é realmente usada na página." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Remova os recursos não usados do JavaScript e anexe apenas as bibliotecas `Drupal` necessárias para a página ou o componente da página. Consulte a [documentação do Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) para saber mais. Para identificar bibliotecas anexas que estão adicionando JavaScript externo, execute a [cobertura de código](https://developer.chrome.com/docs/devtools/coverage) no Chrome DevTools. É possível identificar o tema/módulo responsável pelo URL do script quando a agregação do JavaScript está desativada no seu site `Drupal`. Procure temas/módulos que tenham muitos scripts na lista, apresentando um nível alto de vermelho na cobertura do código. Um tema/módulo só precisa anexar uma biblioteca de scripts quando ela é realmente usada na página." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Configure a opção \"Idade máxima para cache de navegador e proxy\" na página \"Administração » Configurações » Desenvolvimento\". Leia sobre o [cache do `Drupal` e a otimização de desempenho](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Use [um módulo](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) que automaticamente otimiza e reduz o tamanho das imagens enviadas pelo site sem afetar a qualidade. Use também os [Estilos de imagens responsivas](https://www.drupal.org/documentation/modules/responsive_image) nativos fornecido pelo `Drupal` em todas as imagens renderizadas no site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Dicas de recursos `Preconnect` ou `dns-prefetch` podem ser adicionadas instalando e configurando [um módulo](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) que fornece facilidade para as dicas de recursos do user agent." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Use [Estilos de imagens responsivas](https://www.drupal.org/documentation/modules/responsive_image) nativos fornecidos pelo `Drupal`. Use Estilos de Imagens Responsivas quando renderizar campos de imagem pelo modo de visualização, ou imagens enviadas pelo editor WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Recursos baseados em texto precisam ser veiculados com compactação (gzip, deflate ou brotli) para minimizar o total de bytes da rede. Use uma CDN que ofereça suporte nativo a esse processo ou configure o servidor da Web para fazer essa operação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Use o [Ezoic Leap](https://pubdash.ezoic.com/speed) e ative a configuração `Optimize Fonts` para aproveitar automaticamente o recurso CSS `font-display` e garantir que o texto possa ser visto pelo usuário enquanto as webfonts carregam." @@ -3036,7 +3096,7 @@ "message": "Existem vários plug-ins do WordPress que podem ajudar você a [aplicar inline a recursos essenciais](https://wordpress.org/plugins/search/critical+css/) ou [adiar recursos menos importantes](https://wordpress.org/plugins/search/defer+css+javascript/). As otimizações oferecidas por esses plug-ins podem corromper os recursos do tema ou dos seus plug-ins, então é provável que você precise fazer alterações no código." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Escolha um tema leve (de preferência um tema de bloco) e implemente o armazenamento de página inteira em cache ou uma solução de site estático. Desative plug-ins desnecessários para minimizar o overhead do servidor. Faça upgrade da sua hospedagem para um serviço gerenciado ou dedicado." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Recomendamos que você mostre trechos nas suas listas de postagem (por exemplo, por meio da tag \"mais\"), reduza o número de postagens exibidas em uma determinada página, divida suas postagens longas em várias páginas ou use um plug-in para aplicar lazy-load nos comentários."
diff --git a/front_end/third_party/lighthouse/locales/ro.json b/front_end/third_party/lighthouse/locales/ro.json index b200642..97b9835 100644 --- a/front_end/third_party/lighthouse/locales/ro.json +++ b/front_end/third_party/lighthouse/locales/ro.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Raport privind fluxul pentru utilizatori Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Schimbările de aspect apar atunci când elementele se mișcă fără nicio interacțiune a utilizatorului. [Investighează cauzele schimbărilor de aspect](https://web.dev/articles/optimize-cls), cum ar fi adăugarea, eliminarea elementelor sau schimbarea fonturilor pe măsură ce se încarcă pagina." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Principalii factori care au cauzat schimbarea aspectului" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Prima solicitare din rețea este cea mai importantă. Redu latența acesteia evitând redirecționările, asigurând un răspuns rapid al serverului și activând comprimarea textului." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latența solicitării documentului" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Îți recomandăm să setezi [font-display](https://developer.chrome.com/blog/font-display) la swap sau optional pentru a te asigura că textul este vizibil în mod constant. swap poate fi optimizat în continuare pentru a reduce schimbările de aspect prin [modificări ale valorii fontului](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Afișarea fontului" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Începe investigația cu cea mai lungă etapă. [Poți să minimizezi întârzierile](https://web.dev/articles/optimize-inp#optimize_interactions). Pentru a reduce durata procesării, [optimizează costurile asociate cu firul principal](https://web.dev/articles/optimize-long-tasks), de obicei JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP în funcție de fază" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimizează LCP făcând imediat imaginea LCP [vizibilă](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) din HTML și [evitând încărcarea asincronă](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Descoperirea solicitării LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Fiecare [etapă are strategii de îmbunătățire specifice](https://web.dev/articles/optimize-lcp#lcp-breakdown). În mod ideal, majoritatea timpului LCP ar trebui să fie petrecut cu încărcarea resurselor, nu cu întârzieri." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP în funcție de fază" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Solicitările blochează redarea inițială a paginii, ceea ce poate întârzia LCP. [Amânarea sau încorporarea](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) poate să mute aceste solicitări de rețea în afara căii critice." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Solicitări de blocare a redării" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "În cazul în care costurile pentru recalcularea stilului rămân ridicate, optimizarea selectorilor le poate scădea. [Optimizează selectorii](https://developer.chrome.com/docs/devtools/performance/selector-stats) cu un interval mare de timp scurs și un procentaj mare al căii lente. Selectorii mai simpli, numărul mai mic de selectori, un DOM mai mic și un DOM mai simplu vor scădea costurile de potrivire." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Costurile selectorului CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Codul terță parte poate influența semnificativ performanța de încărcare. [Redu și amână încărcarea codului terță parte](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) pentru a acorda prioritate conținutului din pagină." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Terțe părți" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Aria vizibilă a paginii nu este optimizată pentru dispozitive mobile, astfel că interacțiunile prin atingere pot fi [amânate cu până la 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Aria vizibilă nu este optimizată pentru mobil" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Pentru conținut animat, folosește [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) ca să minimizezi utilizarea CPU în timp ce conținutul rămâne în afara ecranului." }, @@ -2658,55 +2718,55 @@ "message": "Poți folosi utilitarul `BreakpointObserver` din Kitul pentru dezvoltatori de componente (CDK) pentru a gestiona punctele de întrerupere ale imaginilor. [Află mai multe](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Îți recomandăm să încarci `GIF` într-un serviciu care îl va pune la dispoziție pentru încorporare ca videoclip HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Configurează [formatele de imagine WebP cu un stil de imagine Convert](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) pe site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Configurează încărcarea asincronă a imaginilor în `Drupal`. Formatoarele de câmpuri pentru imagini acceptă `lazy` sau `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Dacă elementul LCP este adăugat dinamic în pagină, preîncarcă imaginea pentru a îmbunătăți LCP. [Află mai multe](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Redirecționările introduc întârzieri suplimentare înainte ca pagina să se poată încărca. Dacă modulul [Redirecționează](https://www.drupal.org/project/redirect) este instalat, verifică dacă redirecționările inutile pot fi eliminate. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Îți recomandăm să folosești [un modul](https://www.drupal.org/project/critical_css) pentru a activa inline elementele CSS și JavaScript critice și să folosești atributul defer pentru elementele CSS sau JavaScript neesențiale." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Transferă traficul cu unul sau mai multe module de stocare în cache `Drupal`, cum ar fi `Internal Page Cache`, `Internal Dynamic Page Cache` și `BigPipe`. Combină aceste elemente cu un CDN pentru a îmbunătăți și mai mult timpul de răspuns. Serverele de găzduire ar trebui să folosească PHP OPcache. Îți recomandăm să folosești stocarea în memoria cache, cum ar fi Redis sau Memcached, pentru a reduce duratele de interogare a bazei de date. În sfârșit, folosește teme, module și servere mai rapide pentru a reduce timpul de răspuns al serverului." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Îți recomandăm să folosești [Stilurile de imagini adaptabile](https://www.drupal.org/documentation/modules/responsive_image) pentru a reduce dimensiunea imaginilor încărcate în pagină. Dacă folosești `Views` pentru a afișa mai multe elemente de conținut într-o pagină, îți recomandăm să implementezi paginarea pentru a limita numărul elementelor de conținut afișate într-o anumită pagină." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Activează opțiunea „Aggregate CSS files” (Agregă fișierele CSS) în pagina „Administration » Configuration » Development” (Administrare » Configurare » Dezvoltare)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Activează opțiunea Agregă fișierele JavaScript în pagina Administrare » Configurare » Dezvoltare." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Îți recomandăm să elimini regulile CSS nefolosite și să atașezi numai bibliotecile `Drupal` necesare la pagina sau componenta relevantă dintr-o pagină. Pentru detalii, consultă [`Drupal` documentația](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Ca să identifici bibliotecile atașate care adaugă conținut CSS neesențial, rulează [acoperirea codului](https://developer.chrome.com/docs/devtools/coverage) în Chrome DevTools. Poți identifica tema/modulul responsabil din adresa URL a foii de stil dacă dezactivezi agregarea CSS pe site-ul `Drupal`. Caută teme/module care au multe foi de stil în listă cu mult roșu în bara acoperirii codului. O temă/un modul ar trebui să atașeze o arhivă de foi de stil numai dacă este într-adevăr folosită în pagină." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Îți recomandăm să elimini elementele JavaScript nefolosite și să atașezi numai bibliotecile `Drupal` necesare la pagina sau componenta relevantă dintr-o pagină. Accesează [documentația Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) pentru detalii. Ca să identifici bibliotecile atașate care adaugă conținut JavaScript neesențial, rulează [acoperirea codului](https://developer.chrome.com/docs/devtools/coverage) în Chrome DevTools. Poți identifica tema/modulul responsabil din adresa URL a scriptului dacă dezactivezi agregarea JavaScript pe site-ul `Drupal`. Caută teme/module care au multe scripturi în listă cu mult roșu în bara acoperirii codului. O temă/un modul ar trebui să atașeze o bibliotecă de scripturi numai dacă este într-adevăr folosită în pagină." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Setează Vechimea maximă a browserului și a memoriei cache de proxy în pagina Administrare » Configurare » Dezvoltare. Citește despre [memoria cache `Drupal` și optimizarea pentru performanță](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Îți recomandăm să folosești [un modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) care optimizează și reduce automat dimensiunea imaginilor încărcate pe site, păstrând calitatea. În plus, folosește [Stilurile de imagini adaptabile](https://www.drupal.org/documentation/modules/responsive_image) native oferite în `Drupal` pentru toate imaginile redate pe site." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Indiciile de resurse `Preconnect` sau `dns-prefetch` pot fi adăugate prin instalarea și configurarea [unui modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) care oferă facilități pentru indicii de resurse user agent." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Folosește [Stilurile de imagini adaptabile](https://www.drupal.org/documentation/modules/responsive_image) native oferite în `Drupal`. Folosește Stilurile de imagini adaptabile când redai câmpuri de imagine în moduri de afișare, afișări sau imagini încărcate în editorul WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Resursele bazate pe text trebuie comprimate (gzip, deflate sau brotli) pentru a minimiza numărul total de byți în rețea. Îți recomandăm să folosești un CDN care acceptă în mod nativ această opțiune sau să configurezi serverul web pentru a realiza operațiunea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Folosește [Ezoic Leap](https://pubdash.ezoic.com/speed) și activează `Optimize Fonts` ca să folosești automat funcția CSS `font-display` ca să te asiguri că textul este vizibil pentru utilizatori în timp ce fonturile web se încarcă." @@ -3036,7 +3096,7 @@ "message": "Există o serie de pluginuri Wordpress care te pot ajuta să [activezi inline elementele critice](https://wordpress.org/plugins/search/critical+css/) sau să [amâni resurse mai puțin importante](https://wordpress.org/plugins/search/defer+css+javascript/). Atenție, optimizările oferite de aceste pluginuri pot să întrerupă funcțiile temei sau pluginurilor tale, astfel încât este posibil să trebuiască să modifici codul." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Alege o temă ușoară (ideal, o temă de bloc) și implementează stocarea în cache a întregii pagini sau o soluție pentru site-uri statice. Dezactivează pluginurile inutile pentru a minimiza costurile de server. Îți recomandăm să faci upgrade la un serviciu de găzduire gestionat sau dedicat." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Îți recomandăm să afișezi extrase în listele postărilor tale (de exemplu, prin intermediul filei Mai multe), reducând numărul de postări afișate pe o anumită pagină, împărțind postările lungi pe mai multe pagini sau folosind un plugin pentru a încărca lent comentariile."
diff --git a/front_end/third_party/lighthouse/locales/ru.json b/front_end/third_party/lighthouse/locales/ru.json index 2b9e21c..8f575b3 100644 --- a/front_end/third_party/lighthouse/locales/ru.json +++ b/front_end/third_party/lighthouse/locales/ru.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Отчет Lighthouse о пути пользователя" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Смещение макета происходит, когда элементы передвигаются без взаимодействия с пользователем. Это может быть связано с добавлением и удалением элементов или изменением их шрифтов при загрузке страницы. [Выясните причины сдвигов.](https://web.dev/articles/optimize-cls)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Причины смещения макета" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Ваш первый сетевой запрос – самый важный. Уменьшайте задержку, избегая переадресации, ускоряя ответ сервера и используя сжатие текста." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Задержка при запросе документа" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Рекомендуем использовать свойство [font-display](https://developer.chrome.com/blog/font-display) со значением swap или optional, чтобы весь текст был одинаково виден. Значение swap можно дополнительно оптимизировать, чтобы с помощью [переопределения показателей шрифта](https://developer.chrome.com/blog/font-fallbacks) уменьшить смещения макета." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Используемые шрифты" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Начните анализ с самого длинного этапа. Задержки [можно уменьшить](https://web.dev/articles/optimize-inp#optimize_interactions). Чтобы сократить продолжительность обработки, [оптимизируйте затраты основного потока](https://web.dev/articles/optimize-long-tasks). Обычно они относятся к JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP по этапам" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Оптимизируйте LCP, сделав возможным [находить](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) самое крупное изображение прямо из HTML-кода. Также советуем [избегать отложенной загрузки](https://web.dev/articles/lcp-lazy-loading)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Информация об LCP и связанных запросах" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Для каждого этапа [есть стратегии улучшения](https://web.dev/articles/optimize-lcp#lcp-breakdown). В идеале большая часть времени, требуемого на полную отрисовку элементов LCP, должна тратиться на загрузку ресурсов, а не на задержки." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP по этапам" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Запросы блокируют обработку при первоначальной загрузке страницы. Это может привести к увеличению значения LCP. [Отсрочка или встраивание](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) могут избавить от негативного воздействия этих сетевых запросов." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Запросы, блокирующие отрисовку страницы" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Если затраты на повторный расчет стиля остаются высокими, оптимизация селектора может их снизить. [Оптимизируйте селекторы](https://developer.chrome.com/docs/devtools/performance/selector-stats) с большим временем выполнения и высоким процентом медленного пути. Затраты на сопоставление можно снижать, используя более простые селекторы и сокращая их количество, а также за счет более компактной структуры DOM." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Затраты на селектор CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Сторонний код может сильно замедлить загрузку страницы. [Сократите и отсрочьте загрузку стороннего кода,](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) чтобы ускорить показ своего контента." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Сторонний код" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Область просмотра страницы не оптимизирована для мобильных устройств, поэтому при касании экрана [может возникать задержка до 300 мс](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Область просмотра не оптимизирована для мобильных устройств" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Если на странице есть анимированный контент, используйте [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), чтобы уменьшить нагрузку на процессор, когда контент не отображается на экране." },
diff --git a/front_end/third_party/lighthouse/locales/sk.json b/front_end/third_party/lighthouse/locales/sk.json index 8b66b26..2fd3834 100644 --- a/front_end/third_party/lighthouse/locales/sk.json +++ b/front_end/third_party/lighthouse/locales/sk.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Prehľad cesty používateľov v službe Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Zmeny rozloženia sa vyskytujú, keď sa prvky pohnú bez interakcie používateľa. [Vyšetrite príčiny zmien rozloženia](https://web.dev/articles/optimize-cls), ako sú pridávanie, odstraňovanie prvkov alebo zmena ich písiem pri načítavaní stránky." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Príčiny zmien rozloženia" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Vaša prvá požiadavka siete je najdôležitejšia. Zabráňte presmerovaniam, zaistite rýchlu odozvu servera a povoľte kompresiou textu, aby ste znížili latenciu." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Latencia žiadosti o dokument" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Zvážte nastavenie písma [font-display](https://developer.chrome.com/blog/font-display) na swap alebo optional, aby bol text konzistentne viditeľný. swap je možné ďalej optimalizovať a zjemniť tak zmeny rozloženia [prepísaním metriky písma](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Zobrazenie písma" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Začnite skúmať najdlhšiu fázu. [Oneskorenia sa dajú minimalizovať](https://web.dev/articles/optimize-inp#optimize_interactions). Ak chcete skrátiť čas spracovania, [optimalizujte náklady hlavného vlákna](https://web.dev/articles/optimize-long-tasks), vo väčšine prípadov JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "Oneskorenie vykreslenia po interakcii podľa fázy" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimalizujte vykreslenie najväčšieho prvku tým, že jeho obrázok okamžite [zviditeľníte](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) v jazyku HTML a [zabránite lenivému načítaniu](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Nepriame vyhľadávanie žiadostí o vykreslenie najväčšieho prvku" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Každá [fáza má špecifické stratégie zlepšenia](https://web.dev/articles/optimize-lcp#lcp-breakdown). V ideálnom prípade by väčšina času vykreslenia najväčšieho prvku mala byť vynaložená na načítanie zdrojov, ktoré nie sú v rozsahu oneskorenia." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "Vykreslenie najväčšieho prvku podľa fázy" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Požiadavky blokujú počiatočné vykreslenie stránky, čo môže spôsobiť oneskorenie vykreslenia najväčšieho prvku. [Oneskorením alebo vložením](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) môžete tieto požiadavky na sieť presunúť mimo kritickej cesty." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Žiadosti o blokovanie vykreslenia" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ak sú náklady na prepočítanie štýlu stále vysoké, optimalizáciou selektora ich môžete znížiť. [Optimalizujte selektory](https://developer.chrome.com/docs/devtools/performance/selector-stats) s dlhým časom uplynutia a vysokým percentom pomalej cesty. Jednoduchšie selektory, menej selektorov, menší model DOM a plytší model DOM znížia náklady na párovanie." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Náklady selektora CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kód tretej strany môže výrazne ovplyvniť výkonnosť načítavania. [Zredukujte a odložte načítanie kódu tretej strany](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), aby sa priorizoval obsah vašej stránky." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Tretie strany" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Oblasť zobrazenia stránky nie je optimalizovaná pre mobilné zariadenia, takže interakcie klepnutím môžu byť [oneskorené až o 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Oblasť zobrazenia nie je optimalizovaná pre mobilné zariadenia" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "V prípade animovaného obsahu minimalizujete využitie procesora pomocou komponenta [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), keď je tento obsah mimo obrazovky." },
diff --git a/front_end/third_party/lighthouse/locales/sl.json b/front_end/third_party/lighthouse/locales/sl.json index dc2b5fa..29bd270 100644 --- a/front_end/third_party/lighthouse/locales/sl.json +++ b/front_end/third_party/lighthouse/locales/sl.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Poročilo o toku uporabnikov orodja Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Spremembe postavitve se pojavijo, ko se elementi premikajo brez interakcije uporabnika. [Raziščite vzroke sprememb postavitve](https://web.dev/articles/optimize-cls), kot so dodajanje ali odstranjevanje elementov ali spreminjanje pisav med nalaganjem strani." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Razlogi za težave pri spremembi postavitve" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Vaša prva omrežna zahteva je najpomembnejša. Zmanjšajte zakasnitev tako, da se izognete preusmeritvam, s čimer poskrbite za hiter odziv strežnika in omogočite stiskanje besedila." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Zakasnitev zahteve za dokument" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Razmislite o nastavitvi funkcije [font-display](https://developer.chrome.com/blog/font-display) na swap ali optional, da zagotovite, da je besedilo ves čas vidno. swap lahko dodatno optimizirate, da ublažite spremembe s [preglasitvami meritve pisav](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Prikaz pisave" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Začnite preiskavo z najdaljšo fazo. [Zamude se lahko zmanjšajo](https://web.dev/articles/optimize-inp#optimize_interactions). Če želite zmanjšati trajanje obdelave, [optimizirajte stroške glavne niti](https://web.dev/articles/optimize-long-tasks) (to je pogosto JavaScript)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP po fazah" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimizirajte LCP tako, da sliko LCP nastavite tako, da bo takoj [vidna](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) v kodi HTML, in se [izognite odloženemu nalaganju](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Odkrivanje zahteve za LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Vsaka [faza ima določene strategije za izboljšanje](https://web.dev/articles/optimize-lcp#lcp-breakdown). V idealnem primeru bi morala biti večina časa pri meritvi LCP porabljena za nalaganje sredstev, ne za zamude." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP po fazah" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Zahteve blokirajo začetno upodabljanje strani, kar lahko zakasni LCP. [Odlaganje ali vstavljanje v vrstico](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) lahko te omrežne zahteve premakne zunaj kritične poti." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Zahteve z blokiranjem upodabljanja" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Če so stroški za vnovični izračun sloga še vedno visoki, jih lahko z optimizacijo izbirnika zmanjšate. [Optimizirajte izbirnike](https://developer.chrome.com/docs/devtools/performance/selector-stats) z visokim pretečenim časom in visokim odstotkom počasnih poti. Preprostejši izbirniki, manjše število izbirnikov, manjši model DOM in plitvejša struktura modela DOM bodo zmanjšali stroške ujemanja." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Stroški izbirnika CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Koda drugega ponudnika lahko znatno vpliva na učinkovitost nalaganja. [Zmanjšajte in odložite nalaganja kode drugega ponudnika](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), da boste dali prednost vsebini strani." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Drugi ponudniki" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Vidno območje strani ni optimizirano za mobilne naprave, zato so lahko interakcije z dotikom [zakasnjene do 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Vidno območje ni optimizirano za mobilne naprave" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Za animirano vsebino uporabite [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), da zmanjšate uporabo CPE-ja, ko vsebina ni na zaslonu." }, @@ -2658,55 +2718,55 @@ "message": "Razmislite o uporabi orodja `BreakpointObserver` v kompletu Component Dev Kit (CDK) za upravljanje prekinitvenih točk posnetka. [Preberite več o tem](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Razmislite o tem, da bi `GIF` naložili v storitev, prek katere bo na voljo za vdelavo kot videoposnetek v obliki HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Razmislite o konfiguriranju [oblik zapisa slik WebP s slogom »Pretvorjena slika«](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) na spletnem mestu." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Razmislite o konfiguriranju odloženega nalaganja slik v sistemu `Drupal`. Orodja za oblikovanje polj za slike podpirajo ti dve možnosti: `lazy` ali `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Če je element LCP dinamično dodan na stran, morate za izboljšanje časa za LCP sliko optimizirati. [Več o tem](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Preusmeritve vnašajo dodatne zakasnitve nalaganja strani. Če je nameščen modul za [preusmeritve](https://www.drupal.org/project/redirect), preverite, ali lahko odstranite nepotrebne preusmeritve. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/redirects)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Razmislite o uporabi [modula](https://www.drupal.org/project/critical_css) za vstavljanje kritičnega CSS-ja in JavaScripta in uporabite atribut odlaganja CSS-ja ali JavaScripta, ki ni kritičen." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Preložite promet z enim ali več moduli za predpomnjenje za sistem `Drupal`, kot so `Internal Page Cache`, `Internal Dynamic Page Cache` in `BigPipe`. Če želite še izboljšati odzivni čas, jih kombinirajte z omrežjem za prenos vsebine. Vaši strežniki za gostovanje bi morali izkoriščati predpomnjenje PHP OPcache. Razmislite o uporabi predpomnjenja za RAM, kot sta Redis ali Memcached, da zmanjšate čase poizvedbe v zbirkah podatkov. Nazadnje uporabite učinkovite teme, module in hitrejše strežnike, da zmanjšate odzivni čas strežnika." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Razmislite o uporabi [slogov odzivnih slik](https://www.drupal.org/documentation/modules/responsive_image) za zmanjšanje velikosti slik, naloženih na strani. Če za prikaz več vsebinskih elementov na strani uporabljate funkcijo `Views`, razmislite o razdelitvi na več strani, da omejite število vsebinskih elementov, prikazanih na določeni strani." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Preverite, ali ste omogočili možnost »Združevanje datotek CSS« na strani »Skrbništvo » Konfiguracija » Razvoj«." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Preverite, ali ste omogočili možnost »Združevanje datotek JavaScript« na strani »Skrbništvo » Konfiguracija » Razvoj«." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Razmislite o tem, da bi odstranili neuporabljena pravila za CSS in potrebne knjižnice sistema `Drupal` priložili samo ustrezni strani ali komponenti na strani. Če vas zanimajo podrobnosti, si oglejte [dokumentacijo za `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Če želite ugotoviti, katere priložene knjižnice dodajo zunanji CSS, poskušajte z orodji za razvijalce v Chromu izvesti [preizkus pokritosti kode](https://developer.chrome.com/docs/devtools/coverage). Ustrezno temo/modul lahko ugotovite na podlagi URL-ja datoteke s slogi, ko je združevanje za CSS onemogočeno na vašem spletnem mestu sistema `Drupal`. Bodite pozorni na teme/module, ki imajo na seznamu mnogo datotek s slogi, ki imajo v pokritosti kode veliko rdeče obarvanega območja. Knjižnica datotek s slogi naj bo priložena temi/modulu samo, če je dejansko uporabljena na strani." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Razmislite o tem, da bi odstranili neuporabljene elemente JavaScipt in potrebne knjižnice sistema `Drupal` priložili samo ustrezni strani ali komponenti na strani. Če vas zanimajo podrobnosti, si oglejte [dokumentacijo za Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Če želite ugotoviti, katere priložene knjižnice dodajo zunanji JavaScript, poskušajte z orodji za razvijalce v Chromu izvesti [preizkus pokritosti kode](https://developer.chrome.com/docs/devtools/coverage). Ustrezno temo/modul lahko ugotovite na podlagi URL-ja skripta, ko je združevanje za JavaScript onemogočeno na vašem spletnem mestu sistema `Drupal`. Bodite pozorni na teme/module, ki imajo na seznamu mnogo skriptov, ki imajo v pokritosti kode veliko rdeče obarvanega območja. Knjižnica skriptov naj bo priložena temi/modulu samo, če je dejansko uporabljena na strani." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Nastavite možnost »Najvišja starost predpomnilnika strežnika proxy in brskalnika« na strani »Skrbništvo » Konfiguracija » Razvoj«. Preberite več o [predpomnilniku sistema `Drupal` in optimiziranju za učinkovito delovanje](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Razmislite o uporabi [modula](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), ki samodejno optimizira in zmanjša velikost slik, naloženih prek spletnega mesta, hkrati pa ohrani kakovost. Preverite tudi, ali uporabljate izvorne [sloge odzivnih slik](https://www.drupal.org/documentation/modules/responsive_image), ki jih zagotavlja sistem `Drupal` za vse slike, upodobljene na spletnem mestu." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Dodate lahko namige za vire `Preconnect` ali `dns-prefetch`, in sicer tako, da namestite in konfigurirate [modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), ki zagotavlja sredstva za namige za vire uporabnikovega posrednika." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Preverite, ali uporabljate izvorne [sloge odzivnih slik](https://www.drupal.org/documentation/modules/responsive_image), ki jih zagotavlja sistem `Drupal`. Sloge odzivnih slik uporabite pri upodabljanju slikovnih polj v načinih ogleda, ogledih ali slikah, naloženih prek urejevalnika WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Pri dostavi besedilnih sredstev uporabite stiskanje (gzip, deflate ali brotli) zaradi zmanjšanja skupnega števila omrežnih bajtov. Uporabite omrežje za prenos vsebine, ki to izvorno podpira, ali konfigurirajte spletni strežnik za to dejanje. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Uporabite [Ezoic Leap](https://pubdash.ezoic.com/speed) in omogočite, da `Optimize Fonts` samodejno uporabi funkcijo `font-display` za CSS ter tako zagotovi, da je med nalaganjem spletne pisave besedilo vidno uporabnikom." @@ -3036,7 +3096,7 @@ "message": "Na voljo je več vtičnikov za WordPress, ki vam lahko pomagajo [uvrstiti nujna sredstva](https://wordpress.org/plugins/search/critical+css/) ali [odložiti manj pomembna sredstva](https://wordpress.org/plugins/search/defer+css+javascript/). Upoštevajte, da lahko optimizacije, ki jih ponujajo ti vtičniki, pokvarijo delovanje funkcij vaših tem ali vtičnikov, zato boste verjetno morali spremeniti kodo." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Izberite lahkotno temo (idealno je tema z bloki) in uporabite predpomnjenje celotne strani ali rešitev za statično spletno mesto. Onemogočite nepotrebne vtičnike, da zmanjšate stroške strežnika. Razmislite o nadgradnji gostovanja na upravljano ali namensko storitev." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Razmislite o tem, da bi na seznamih objav prikazali izvlečke (npr. z oznako »more«), zmanjšali število objav, prikazanih na posamezni strani, daljše objave razdelili na več strani ali uporabili vtičnik za odloženo nalaganje komentarjev."
diff --git a/front_end/third_party/lighthouse/locales/sr-Latn.json b/front_end/third_party/lighthouse/locales/sr-Latn.json index 7c447a2..388835d 100644 --- a/front_end/third_party/lighthouse/locales/sr-Latn.json +++ b/front_end/third_party/lighthouse/locales/sr-Latn.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Izveštaj o korisničkom toku za Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Do promena rasporeda dolazi kada se elementi pomeraju bez ikakve interakcije korisnika. [Istražite uzroke promena rasporeda](https://web.dev/articles/optimize-cls), kao što su dodavanje i uklanjanje elemenata ili promena njihovih fontova dok se stranica učitava." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Uzroci promene rasporeda" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Prvi zahtev za mrežu je najvažniji. Smanjite kašnjenje izbegavanjem preusmeravanja, obezbeđivanjem brzog odgovora servera i omogućavanjem kompresije teksta." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Kašnjenje zahteva za dokument" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Razmislite o tome da podesite [font-display](https://developer.chrome.com/blog/font-display) na swap ili optional kako biste se uverili da je tekst uvek vidljiv. swap može da se dodatno optimizuje kako bi se ublažile promene izgleda pomoću [zamena pokazatelja fonta](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Prikaz fonta" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Počnite da istražujete sa najdužom fazom. [Kašnjenja mogu da se umanje](https://web.dev/articles/optimize-inp#optimize_interactions). Da biste smanjili trajanje obrade, [optimizujte troškove glavne niti](https://web.dev/articles/optimize-long-tasks), često JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP po fazi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimizujte LCP tako što ćete [omogućiti otkrivanje](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) LCP slike iz HTML-a odmah i [izbegavati spora učitavanja](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Otkrivanje LCP zahteva" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Svaka [faza ima specifične strategije poboljšanja](https://web.dev/articles/optimize-lcp#lcp-breakdown). Idealno bi bilo da se većina vremena LCP-a potroši na učitavanje resursa, a ne na kašnjenja." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP prema fazi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Zahtevi blokiraju prvi prikaz stranice, što može da odloži LCP. [Odlaganje ili ugrađivanje](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) može da premesti ove mrežne zahteve sa kritične putanje." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Zahtevi za blokiranje renderovanja" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ako troškovi ponovnog izračunavanja stila ostanu visoki, optimizacija birača može da ih smanji. [Optimizujte birače](https://developer.chrome.com/docs/devtools/performance/selector-stats) sa velikim proteklim vremenom i velikim % spore putanje. Jednostavni birači, manje birača, manji, kao i manje dubok DOM sadržaj; sve to će smanjiti troškove podudaranja." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Troškovi CSS birača" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kôd nezavisnog dobavljača može značajno da utiče na učinak učitavanja. [Smanjite i odložite učitavanje koda treće strane](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) da biste utvrdili prioritete sadržaja stranice." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Treće strane" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Oblast prikaza stranice nije optimizovana za mobilne uređaje, pa interakcije dodirom mogu da budu [odložene za najviše 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Oblast prikaza nije optimizovana za mobilne uređaje" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Kada je u pitanju animirani sadržaj, koristite [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) da biste smanjili korišćenje procesora kada sadržaj nije na ekranu." },
diff --git a/front_end/third_party/lighthouse/locales/sr.json b/front_end/third_party/lighthouse/locales/sr.json index 132c53d..f0981f1 100644 --- a/front_end/third_party/lighthouse/locales/sr.json +++ b/front_end/third_party/lighthouse/locales/sr.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Извештај о корисничком току за Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "До промена распореда долази када се елементи померају без икакве интеракције корисника. [Истражите узроке промена распореда](https://web.dev/articles/optimize-cls), као што су додавање и уклањање елемената или промена њихових фонтова док се страница учитава." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Узроци промене распореда" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Први захтев за мрежу је најважнији. Смањите кашњење избегавањем преусмеравања, обезбеђивањем брзог одговора сервера и омогућавањем компресије текста." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Кашњење захтева за документ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Размислите о томе да подесите [font-display](https://developer.chrome.com/blog/font-display) на swap или optional како бисте се уверили да је текст увек видљив. swap може да се додатно оптимизује како би се ублажиле промене изгледа помоћу [замена показатеља фонта](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Приказ фонта" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Почните да истражујете са најдужом фазом. [Кашњења могу да се умање](https://web.dev/articles/optimize-inp#optimize_interactions). Да бисте смањили трајање обраде, [оптимизујте трошкове главне нити](https://web.dev/articles/optimize-long-tasks), често JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP по фази" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Оптимизујте LCP тако што ћете [омогућити откривање](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) LCP слике из HTML-а одмах и [избегавати спора учитавања](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Откривање LCP захтева" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Свака [фаза има специфичне стратегије побољшања](https://web.dev/articles/optimize-lcp#lcp-breakdown). Идеално би било да се већина времена LCP-а потроши на учитавање ресурса, а не на кашњења." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP према фази" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Захтеви блокирају први приказ странице, што може да одложи LCP. [Одлагање или уграђивање](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) може да премести ове мрежне захтеве са критичне путање." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Захтеви за блокирање рендеровања" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Ако трошкови поновног израчунавања стила остану високи, оптимизација бирача може да их смањи. [Оптимизујте бираче](https://developer.chrome.com/docs/devtools/performance/selector-stats) са великим протеклим временом и великим % споре путањe. Једноставни бирачи, мање бирача, мањи, као и мање дубок DOM садржај; све то ће смањити трошкове подударања." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Трошкови CSS бирача" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Кôд независног добављача може значајно да утиче на учинак учитавања. [Смањите и одложите учитавање кода треће стране](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) да бисте утврдили приоритете садржаја странице." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Треће стране" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Област приказа странице није оптимизована за мобилне уређаје, па интеракције додиром могу да буду [одложене за највише 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Област приказа није оптимизована за мобилне уређаје" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Када је у питању анимирани садржај, користите [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) да бисте смањили коришћење процесора када садржај није на екрану." },
diff --git a/front_end/third_party/lighthouse/locales/sv.json b/front_end/third_party/lighthouse/locales/sv.json index f83aaeb..7bfe70e 100644 --- a/front_end/third_party/lighthouse/locales/sv.json +++ b/front_end/third_party/lighthouse/locales/sv.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Rapport över användarflöde i Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Layoutförskjutningar uppstår när element flyttas utan användarinteraktion. [Undersök orsakerna till layoutförändringar](https://web.dev/articles/optimize-cls), till exempel om element har lagts till, tagits bort eller om teckensnittet ändras för dem vid sidhämtningen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Orsaker till layoutförskjutningar" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Den första nätverksbegäran är den viktigaste. Minska latensen genom att undvika omdirigeringar (så att servern svarar snabbt) och aktivera textkomprimering." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Fördröjning av dokumentbegäran" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Du kan göra så att texten alltid är synlig genom att ställa in [font-display](https://developer.chrome.com/blog/font-display) på swap eller optional. swap kan optimeras ytterligare för att minska layoutförskjutningar med [åsidosättanden av teckensnittsvärden](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Teckensnittsvisning" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Börja undersöka med den längsta fasen. [Fördröjningar kan minimeras](https://web.dev/articles/optimize-inp#optimize_interactions). För att minska bearbetningstiden kan du [optimera kostnaderna för huvudtrådar](https://web.dev/articles/optimize-long-tasks), ofta JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP per fas" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Optimera LCP genom att göra LCP-bilden [synlig](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) från HTML direkt och [undvika uppskjuten inläsning](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Upptäcka LCP-begäran" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Varje [fas har specifika förbättringsstrategier](https://web.dev/articles/optimize-lcp#lcp-breakdown). LCP-tiden bör helst användas till att läsa in resurser, inte till fördröjningar." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP per fas" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Begäranden blockerar sidans första rendering, vilket kan fördröja LCP. [Använd uppskjutning eller infogning](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) för att flytta bort dessa nätverksbegäranden från den kritiska vägen." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Begäranden om renderingsblockering" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Om kostnaderna för att beräkna om stilar förblir höga kan du minska dem genom att optimera väljare. [Optimera väljare](https://developer.chrome.com/docs/devtools/performance/selector-stats) med både hög förfluten tid och hög procentandel långsam sökväg. Enklare väljare, färre väljare, en mindre DOM och en grundare DOM minskar alla matchningskostnader." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Kostnader för CSS-väljare" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Kod från tredje part kan påverka inläsningsprestandan betydligt. [Minska och skjut upp inläsningen av kod från tredje part](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) för att prioritera sidans innehåll." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Tredje part" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Sidans visningsområde är inte mobiloptimerat, så tryckinteraktioner kan [fördröjas med upp till 300 ms](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Visningsområdet är inte optimerat för mobila enheter" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "För animerat innehåll använder du [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) till att minimera CPU-användningen när innehållet inte visas på skärmen." }, @@ -2658,55 +2718,55 @@ "message": "Vi rekommenderar att du hanterar bildernas brytpunkter med hjälp av verktyget `BreakpointObserver` i Component Dev Kit (CDK). [Läs mer](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Ladda upp `GIF` till en tjänst som kan göra den tillgänglig för inbäddning som HTML5-video." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Vi rekommenderar att du konfigurerar [WebP-bildformat med ett Convert-bildformatering](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) på webbplatsen." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Du kan konfigurera uppskjuten bildinläsning i `Drupal`. Fältformaterare för bilder stöder `lazy` eller `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Om LCP-elementet läggs till på sidan dynamiskt bör du optimera bilden för att förbättra LCP. [Läs mer](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Omdirigeringar medför en ytterligare fördröjning innan sidan kan läsas in. Om modulen [Omdirigera](https://www.drupal.org/project/redirect) är installerad bör du kontrollera om onödiga omdirigeringar kan tas bort. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Du kan använda [en modul](https://www.drupal.org/project/critical_css) för att lägga till kritiska CSS- och JavaScript-tillgångar och använda attributet defer för icke-kritiska CSS- eller JavaScript-tillgångar." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Avlasta trafiken med en eller flera `Drupal`-cachemoduler, till exempel `Internal Page Cache`, `Internal Dynamic Page Cache` och `BigPipe`. Kombinera detta med ett CDN för att förbättra svarstiden ytterligare. Värdservrarna ska använda PHP OPcache. Överväg att använda minnescachelagring, t.ex. Redis eller Memcached, för att minska sökfrågetiderna för databasen. Slutligen kan du använda teman, moduler och snabbare servrar med bra prestanda för att minska serverns svarstid." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Du kan använda [responsiva bildformat](https://www.drupal.org/documentation/modules/responsive_image) för att minska storleken på bilderna som läses in på sidan. Om du använder `Views` för att visa flera innehållsobjekt på en sida kan du implementera sidnumrering om du vill begränsa antalet innehållsobjekt som visas på en viss sida." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Kontrollera att du har aktiverat Aggregate CSS files under Administration » Configuration » Development." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Kontrollera att du har aktiverat Aggregate JavaScript files under Administration » Configuration » Development." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Vi rekommenderar att du tar bort CSS-regler som inte används och endast bifogar nödvändiga `Drupal`-bibliotek till den relevanta sidan eller komponenten på en sida. Mer information finns i [`Drupal`-dokumentationen](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Testa fliken för [kodanvändning](https://developer.chrome.com/docs/devtools/coverage) i Chromes verktyg för programmerare om du vill se vilka bibliotek som lägger till överflödig CSS. Du ser på formatmallens webbadress vilket tema eller vilken modul som koden kommer från när CSS-sammanställning är inaktiverat för `Drupal`-webbplatsen. Titta efter teman eller moduler med många formatmallar på listan där en stor del av kodanvändningen är röd. Ett tema eller en modul bör bara bifoga ett formatmallsbibliotek om det faktiskt används på sidan." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Vi rekommenderar att du tar bort JavaScript-tillgångar som inte används och endast bifogar nödvändiga `Drupal`-bibliotek till den relevanta sidan eller komponenten på en sida. Mer information finns i [dokumentationen om Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Testa fliken för [kodanvändning](https://developer.chrome.com/docs/devtools/coverage) i Chromes verktyg för programmerare om du vill se vilka bifogade bibliotek som lägger till överflödig JavaScript. Du ser på skriptets webbadress vilket tema eller vilken modul som koden kommer ifrån när JavaScript-sammanställning är inaktiverat på `Drupal`-webbplatsen. Titta efter teman/moduler med många skript på listan där en stor del av kodanvändningen är röd. Ett tema eller en modul ska bara bifoga ett skriptbibliotek om det faktiskt används på sidan." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Ange Browser and proxy cache maximum age under Administration » Configuration » Development. Läs mer om [cachelagring i `Drupal` och optimering för prestanda](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Du kan använda en [modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) som automatiskt optimerar och minskar storleken på bilderna som laddas upp via webbplatsen utan att göra avkall på kvaliteten. Kontrollera även att du använder de integrerade [responsiva bildformaten](https://www.drupal.org/documentation/modules/responsive_image) från `Drupal` för alla bilder som renderas på webbplatsen." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Signaler för `Preconnect` eller `dns-prefetch` kan läggas till genom att installera och konfigurera [en modul](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) med funktioner för signaler för användaragenter." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Kontrollera att du använder de integrerade [responsiva bildformaten](https://www.drupal.org/documentation/modules/responsive_image) från `Drupal`. Använd de responsiva bildformaten när du renderar bildfält via visningslägen, vyer eller bilder som laddats upp via WYSIWYG-redigeraren." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Textresurser bör visas komprimerade (gzip, deflate eller brotli) så att färre byte skickas via nätverket. Överväg att använda ett CDN som har inbyggt stöd för detta eller konfigurera webbservern för att utföra åtgärden. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Använd [Ezoic Leap](https://pubdash.ezoic.com/speed) och aktivera `Optimize Fonts` så att du automatiskt kan dra nytta av CSS-funktionen `font-display`, som gör text synlig för användaren medan webbteckensnitten läses in." @@ -3036,7 +3096,7 @@ "message": "Det finns ett antal pluginmoduler för WordPress som kan hjälpa dig att [lägga till kritiska tillgångar direkt på sidan](https://wordpress.org/plugins/search/critical+css/) eller [skjuta upp inläsningen av mindre viktiga resurser](https://wordpress.org/plugins/search/defer+css+javascript/). Tänk på att optimeringarna som dessa pluginmoduler gör kan leda till att funktioner i teman eller andra pluginmoduler slutar fungera, så du kan behöva ändra i koden." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Välj ett enkelt tema (helst ett blocktema) och implementera fullständig sidcachelagring eller en statisk webbplatslösning. Inaktivera onödiga plugins för att minimera serveröverbelastning. Överväg att uppgradera webbhotellet till en hanterad eller dedikerad tjänst." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Du kan visa utdrag i inläggslistan (t.ex. via en more-tagg), minska antalet inlägg på sidan, dela upp långa inlägg på flera sidor eller använda en plugin som läser in kommentarer med lat inläsning."
diff --git a/front_end/third_party/lighthouse/locales/ta.json b/front_end/third_party/lighthouse/locales/ta.json index ac98f2d..603a52a 100644 --- a/front_end/third_party/lighthouse/locales/ta.json +++ b/front_end/third_party/lighthouse/locales/ta.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouseஸில் பயனர் செல்லும் பக்கங்களின் வரிசை குறித்த அறிக்கை" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "பயனரின் எந்தவொரு செயலும் இல்லாமல் எலிமெண்ட்டுகள் நகரும்போது லே-அவுட் ஷிஃப்ட்கள் நிகழும். பக்கம் ஏற்றப்படும்போது எலிமெண்ட்களின் எழுத்து வடிவங்கள் மாறுவது, எலிமெண்ட்டுகள் சேர்க்கப்படுவது, அகற்றப்படுவது போன்ற [லே-அவுட் ஷிஃப்ட்டிற்கான காரணங்களை ஆய்வு செய்யவும்](https://web.dev/articles/optimize-cls)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "லே-அவுட் ஷிஃப்ட்டுக்கான காரணங்கள்" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "உங்களின் முதல் நெட்வொர்க் கோரிக்கை மிகவும் முக்கியமானது. திசைதிருப்புதல்களைத் தவிர்த்தல், விரைவான சேவையகப் பதிலை உறுதிசெய்தல், வார்த்தையைச் சுருக்குதல் ஆகியவற்றின் மூலம் அதன் தாமதத்தைக் குறைக்கவும்." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "ஆவணக் கோரிக்கைக்கான தாமதம்" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "வார்த்தைகள் சீராகத் தெரிவதை உறுதிசெய்துகொள்ள, [font-display](https://developer.chrome.com/blog/font-display) ஐ swap அல்லது optional என்று அமைக்கவும். [எழுத்து வடிவ அளவீட்டை மீறிச் செயல்படுதல்](https://developer.chrome.com/blog/font-fallbacks) அம்சத்தின் மூலம் லே-அவுட் ஷிஃப்ட்டுகளைக் குறைக்க, swap ஐ மேலும் மேம்படுத்தலாம்." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "எழுத்து வடிவக் காட்சி" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "நீளமான நிலையில் இருந்து ஆய்வைத் தொடங்கவும். [தாமதங்களைக் குறைக்கலாம்](https://web.dev/articles/optimize-inp#optimize_interactions). செயலாக்கத்திற்கான கால அளவைக் குறைக்க, [முக்கியத் தொடரிழையின் (பெரும்பாலும் JS செயலாக்கங்கள்) செயல்திறன் பாதிப்புகளை](https://web.dev/articles/optimize-long-tasks) மேம்படுத்தவும்." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "நிலையின்படி INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "HTMLலில் உள்ள LCP படத்தை உடனடியாகக் [கண்டறியப்படும்படி](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) அமைப்பது, ['தேவையுள்ளபோது காண்பித்தல்' அம்சத்தைத் தவிர்ப்பது](https://web.dev/articles/lcp-lazy-loading) ஆகியவற்றின் மூலம் LCPயை மேம்படுத்தலாம்" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP கோரிக்கையைக் கண்டறிதல்" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "ஒவ்வொரு [நிலைக்கும் குறிப்பிட்ட மேம்பாட்டு உத்திகள் உள்ளன](https://web.dev/articles/optimize-lcp#lcp-breakdown). பொதுவாக, LCP நேரம் பெரும்பாலும் ரிசோர்ஸ்களை ஏற்றுவதற்காகச் செலவிடப்படவேண்டுமே தவிர தாமதங்களில் அல்ல." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "நிலையின்படி LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "பக்கத்தின் துவக்க ரென்டரைத் தடுக்கும் கோரிக்கைகள் LCPயைத் தாமதப்படுத்தக்கூடும். [தவிர்ப்பது அல்லது இன்லைனில்](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) வழங்குவதன் மூலம் இந்த நெட்வொர்க் கோரிக்கைகளை முக்கியக் கோரிக்கைத் தடத்தில் இருந்து வெளியேற்றலாம்." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "தடுப்புக் கோரிக்கைகளை ரென்டரிங் செய்தல்" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "ஸ்டைலை மீண்டும் கணக்கிடுதலின் செயல்திறன் பாதிப்பு அதிகமாக இருந்தால், தேர்விகளை மேம்படுத்தி அதைக் குறைக்கலாம். அதிக நேரம் எடுத்துக்கொள்ளும் தேர்விகளையும் மெதுவான தடத்தின் பொருத்தச் சதவீதம் அதிகமாக உள்ள [தேர்விகளையும் மேம்படுத்தலாம்](https://developer.chrome.com/docs/devtools/performance/selector-stats). எளிமையான தேர்விகள், குறைவான தேர்விகள், சிறிய DOM, அடுக்குகள் குறைவான DOM ஆகியவை பொருத்தச் செயல்திறனின் பாதிப்புகளைக் குறைக்கும்." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS தேர்விக்கான செயல்திறன் பாதிப்பு" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "மூன்றாம் தரப்புக் குறியீட்டால் ஏற்றுதல் செயல்திறனில் குறிப்பிடத்தக்க மாற்றம் ஏற்படலாம். உங்கள் பக்கத்தின் உள்ளடக்கத்திற்கு முன்னுரிமை வழங்க, [மூன்றாம் தரப்புக் குறியீடு ஏற்றப்படுவதைக் குறைக்கலாம் தாமதப்படுத்தலாம்](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "மூன்றாம் தரப்பினர்" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "பக்கத்தின் காட்சிப் பகுதி மொபைலுக்கு ஏற்றதாக இல்லை என்பதால் தட்டுதல் செயல்பாடுகள் [300 மிவி வரை தாமதம் ஆகக்கூடும்](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "காட்சிப் பகுதி மொபைலுக்கு ஏற்றதாக இல்லை" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "அனிமேஷன் செய்யப்பட்ட உள்ளடக்கமாக இருந்தால், உள்ளடக்கம் திரைக்கு வெளியில் இருக்கும்போது CPU உபயோகத்தைக் குறைக்கும் வகையில் [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) காம்பனென்ட்டைப் பயன்படுத்தவும்." }, @@ -2658,55 +2718,55 @@ "message": "பட பிரேக்பாயிண்ட்டுகளை நிர்வகிக்க Component Dev Kitடில் (CDK) `BreakpointObserver` உபகரணத்தைப் பயன்படுத்துவதைப் பரிசீலிக்கவும். [மேலும் அறிக](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "`GIF`ஐ HTML5 வீடியோவாக உட்பொதிக்க உதவும் சேவையில் அதைப் பதிவேற்றவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "உங்கள் தளத்தில் [‘பட வடிவமைப்பை மாற்று’ என்பதைப் பயன்படுத்தி WebP பட வடிவமைப்புகளை](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) உள்ளமைக்கவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "படங்களைத் தேவையுள்ளபோது காண்பிக்கும் முறையை `Drupal` பிளாட்ஃபார்மில் உள்ளமைக்கவும். படங்களுக்கான ஃபீல்ட் ஃபார்மேட்டர்கள் `lazy` அல்லது `eager` முறையை ஆதரிக்கின்றன." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "பக்கத்தில் LCP உறுப்பு ஒத்திசைவற்ற முறையில் சேர்க்கப்பட்டிருந்தால் LCPயை மேம்படுத்த படத்தைச் சரிசெய்ய வேண்டும். [மேலும் அறிக](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "'திசைதிருப்புதல்கள்', பக்கம் காண்பிக்கப்படும் முன்பு கூடுதல் தாமதங்களை ஏற்படுத்தும். [திசைதிருப்புதல்](https://www.drupal.org/project/redirect) மாடியூல் நிறுவப்பட்டிருந்தால், தேவையற்ற திசைதிருப்புதல்களை அகற்ற முடியுமா என்று பார்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "முக்கியமான CSS மற்றும் JavaScriptடை இன்லைன் செய்ய [மாடியூலைப்](https://www.drupal.org/project/critical_css) பயன்படுத்தவும். முக்கியமில்லாத CSS மற்றும் JavaScriptடிற்கு தாமதப் பண்புக்கூறைப் பயன்படுத்தவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "`Internal Page Cache`, `Internal Dynamic Page Cache`, `BigPipe` போன்ற ஒன்று அல்லது அதற்கு மேற்பட்ட `Drupal` தற்காலிகச் சேமிப்பு மாடியூல்கள் மூலம் டிராஃபிக்கை ஆஃப்லோட் செய்யவும். பதிலளிப்பு நேரத்தை மேம்படுத்த இவற்றை CDN உடன் ஒருங்கிணைக்கவும். உங்கள் ஹோஸ்டிங் சேவையகங்கள் PHP OPcacheஐப் பயன்படுத்த வேண்டும். தரவுத்தள வினவல் நேரத்தைக் குறைக்க Redis, Memcached போன்ற RAM தற்காலிகச் சேமிப்பைப் பயன்படுத்தவும். கடைசியாக, சேவையகப் பதிலளிப்பு நேரத்தைக் குறைக்க செயல்திறன்மிக்க தீம்கள், மாடியூல்கள், வேகமான சேவையகங்கள் ஆகியவற்றைப் பயன்படுத்தவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "உங்கள் பக்கத்தில் காண்பிக்கப்படும் படங்களின் அளவைக் குறைக்க [திரைக்கு ஏற்ப அளவு மாறும் பட ஸ்டைல்களைப்](https://www.drupal.org/documentation/modules/responsive_image) பயன்படுத்தவும். பக்கத்தில் பலவித உள்ளடக்கத்தைக் காட்ட `Views` ஐப் பயன்படுத்தினால் அந்தப் பக்கத்தில் காட்டப்படும் உள்ளடக்கத்தின் எண்ணிக்கையை வரம்பிட அதைப் பக்கங்களாகப் பிரிக்கவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "\"நிர்வாகம் » உள்ளமைவு » மேம்பாடு\" என்ற பக்கத்தில் “CSS ஃபைல்களை ஒருங்கிணை” என்பதை இயக்கியுள்ளதை உறுதிசெய்துகொள்ளவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "\"நிர்வாகம் » உள்ளமைவு » மேம்பாடு\" என்ற பக்கத்தில் “JavaScript ஃபைல்களை ஒருங்கிணை” என்பதை இயக்கியுள்ளதை உறுதிசெய்துகொள்ளவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "பயன்படுத்தப்படாத CSS விதிகளை அகற்றிவிட்டு தொடர்புடைய பக்கம்/பக்கத்தில் உள்ள காம்பனென்ட்டில் தேவையான `Drupal` லைப்ரரிகளை மட்டும் இணைக்கவும். விவரங்களுக்கு [`Drupal` ஆவணங்களைப்](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) பார்க்கவும். பொருத்தமற்ற CSSஸைச் சேர்க்கும் இணைக்கப்பட்ட லைப்ரரிகளை அடையாளம் காண, Chrome டெவெலப்பர் கருவிகளில் [குறியீட்டுக் கவரேஜை](https://developer.chrome.com/docs/devtools/coverage) இயக்கிப் பார்க்கவும். `Drupal` தளத்தில் CSS ஒருங்கிணைப்பு முடக்கப்பட்டிருக்கும்போது ஸ்டைல்ஷீட்டின் URLலில் இதற்குக் காரணமான தீம்/மாடியூலைக் கண்டறியலாம். குறியீட்டுக் கவரேஜில் அதிகளவு சிவப்பு நிறத்தில் காட்டப்படும் பல ஸ்டைல்ஷீட்களைக் கொண்ட தீம்கள்/மாடியூல்கள் எவை என்று பார்க்கவும். ஸ்டைல்ஷீட் லைப்ரரி உண்மையாகவே பக்கத்தில் பயன்படுத்தப்பட்டிருந்தால் மட்டுமே தீம்/மாடியூல் அதை இணைக்க வேண்டும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "பயன்படுத்தப்படாத JavaScript அசெட்டுகளை அகற்றிவிட்டு, தேவையான `Drupal` லைப்ரரிகளை மட்டும் தொடர்புடைய பக்கம்/பக்கத்தில் உள்ள காம்பனென்ட்டில் இணைக்கவும். விவரங்களுக்கு [Drupal ஆவணங்களைப்](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) பார்க்கவும். பொருத்தமற்ற JavaScriptடைச் சேர்க்கும் இணைக்கப்பட்ட லைப்ரரிகளை அடையாளம் காண, Chrome டெவெலப்பர் கருவிகளில் [குறியீட்டுக் கவரேஜை](https://developer.chrome.com/docs/devtools/coverage) இயக்கிப் பார்க்கவும். `Drupal` தளத்தில் JavaScript ஒருங்கிணைப்பு முடக்கப்பட்டிருக்கும்போது, இதற்குக் காரணமான தீம்/மாடியூலை ஸ்கிரிப்ட்டின் URLலில் கண்டறியலாம். குறியீட்டுக் கவரேஜில் அதிகளவு சிவப்பு நிறத்தில் காட்டப்படும் பல ஸ்கிரிப்ட்டுகளைக் கொண்ட தீம்கள்/மாடியூல்கள் எவை என்று பார்க்கவும். ஸ்கிரிப்ட் லைப்ரரி உண்மையாகவே பக்கத்தில் பயன்படுத்தப்பட்டிருந்தால் மட்டுமே தீம்/மாடியூல் அதை இணைக்க வேண்டும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "\"நிர்வாகம் » உள்ளமைவு » மேம்பாடு\" என்ற பக்கத்தில் \"பிரவுசர் & ப்ராக்ஸி தற்காலிகச் சேமிப்பின் அதிகபட்சக் கால அளவு\" என்பதை அமைக்கவும். [செயல்திறனுக்கான `Drupal` தற்காலிகச் சேமிப்பு & மேம்படுத்துதல்](https://www.drupal.org/docs/8/api/cache-api/cache-api) குறித்துத் தெரிந்துகொள்ளவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "தளத்தில் பதிவேற்றப்பட்ட படங்களின் தரம் குறையாமல் அவற்றைத் தானாகவே மேம்படுத்தி, அவற்றின் அளவைக் குறைக்கும் [ஒரு மாடியூலைப்](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) பயன்படுத்தவும். தளத்தில் ரெண்டர் செய்யப்பட்ட எல்லாப் படங்களுக்கும் `Drupal` பிளாட்ஃபார்மில் வழங்கப்பட்டுள்ள இயல்பான, [திரைக்கு ஏற்ப அளவு மாறும் பட ஸ்டைல்களைப்](https://www.drupal.org/documentation/modules/responsive_image) பயன்படுத்துவதையும் உறுதிசெய்துகொள்ளவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "பயனர் ஏஜெண்ட் ஆதாரக் குறிப்புகளுக்கான வசதிகளை வழங்கும் [மாடியூலை](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) நிறுவி உள்ளமைப்பதன் மூலம் `Preconnect` அல்லது `dns-prefetch` ஆதாரக் குறிப்புகளைச் சேர்க்கலாம்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "`Drupal` பிளாட்ஃபார்மில் இருந்து வழங்கப்பட்ட, இயல்பான [திரைக்கு ஏற்ப அளவு மாறும் பட ஸ்டைல்களை](https://www.drupal.org/documentation/modules/responsive_image) நீங்கள் பயன்படுத்துவதை உறுதிசெய்துகொள்ளவும். காட்சிப் பயன்முறைகள், காட்சிகள் ஆகியவற்றின் மூலமாகவோ WYSIWYG எடிட்டரைப் பயன்படுத்திப் பதிவேற்றப்பட்ட படங்களின் மூலமாகவோ படப் புலங்களை ரெண்டர் செய்யும்போது திரைக்கு ஏற்ப அளவு மாறும் பட ஸ்டைல்களைப் பயன்படுத்தவும்." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "மொத்த நெட்வொர்க் பைட்டுகளைக் குறைக்க, வார்த்தைகள் அடிப்படையிலான ஆதாரங்கள் சுருக்கப்பட்டு (gzip, deflate, brotli போன்றவை) வழங்கப்பட வேண்டும். இயல்பாகவே இதை ஆதரிக்கும் CDNனைப் பயன்படுத்தவும் அல்லது இந்தச் செயல்பாட்டைச் செய்ய இணையச் சேவையகத்தை உள்ளமைக்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "இணைய எழுத்துருக்கள் ஏற்றப்படும்போது பயனருக்குத் தெரியும் வகையில் வார்த்தை இருப்பதை உறுதிசெய்வதற்காக `font-display` CSS அம்சத்தைத் தானாகப் பயன்படுத்த, [Ezoic Leap](https://pubdash.ezoic.com/speed) கருவியைப் பயன்படுத்துவதுடன் `Optimize Fonts` ஐயும் இயக்கவும்." @@ -3036,7 +3096,7 @@ "message": "[முக்கியமான உடைமைகளை முன்னிலைப்படுத்தவோ](https://wordpress.org/plugins/search/critical+css/) [முக்கியத்துவம் குறைவான ஆதாரங்களைத் தவிர்க்கவோ](https://wordpress.org/plugins/search/defer+css+javascript/) உங்களுக்கு உதவக்கூடிய பல WordPress செருகுநிரல்கள் உள்ளன. இந்த செருகுநிரல்கள் வழங்கும் மேம்படுத்துதல்கள் உங்கள் தீமிலோ செருகுநிரலிலோ உள்ள அம்சத்தைப் பாதிக்கலாம். அதனால் நீங்கள் குறியீட்டில் சில மாற்றங்களை செய்ய வேண்டியிருக்கும்." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "எளிமையான தீமினை (பொதுவாக, தொகுப்பு தீம்) தேர்வுசெய்து முழுப் பக்கத்தையும் தற்காலிக நினைவகத்தில் சேமிக்கவும் அல்லது நிலையான தளத் தீர்வைச் செயல்படுத்தவும். சேவையகச் சுமையைக் குறைக்க தேவையற்ற செருகுநிரல்களை முடக்கவும். உங்கள் ஹோஸ்டிங்கை நிர்வகிக்கப்பட்ட அல்லது பிரத்தியேகச் சேவையாக மேம்படுத்தவும்." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "இடுகைப் பட்டியல்களில் முக்கியமான பகுதியை மட்டும் காட்டலாம் (உதாரணமாக மேலும் என்ற குறிச்சொல்லுடன்), பக்கத்தில் இடுகைகளின் எண்ணிக்கையைக் குறைக்கலாம், ஒரு பெரிய இடுகையைப் பல சின்ன பக்கங்களாகப் பிரிக்கலாம் அல்லது தேவையுள்ள போது மட்டும் கருத்துகளைச் செருகுநிரல்கள் மூலம் ஏற்றலாம்."
diff --git a/front_end/third_party/lighthouse/locales/te.json b/front_end/third_party/lighthouse/locales/te.json index 37cca9f..4f2e738 100644 --- a/front_end/third_party/lighthouse/locales/te.json +++ b/front_end/third_party/lighthouse/locales/te.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse యూజర్ ఫ్లో రిపోర్ట్" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "ఎలిమెంట్లు ఏవైనా యూజర్ ఇంటరాక్షన్కు దూరంగా ఉన్నప్పుడు లేఅవుట్ షిఫ్ట్లు సంభవిస్తాయి. [లేఅవుట్ షిఫ్ట్ల కారణాలను పరిశోధించండి](https://web.dev/articles/optimize-cls), ఉదాహరణకు ఎలిమెంట్స్ జోడించబడటం, తీసివేయబడటం లేదా పేజీ లోడ్ అవుతున్న కొద్దీ వాటి ఫాంట్లు మారడం వంటివి." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "లేఅవుట్ షిఫ్ట్కు కారణాలు" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "మీ మొదటి నెట్వర్క్ రిక్వెస్ట్ చాలా ముఖ్యమైనది. మళ్లింపులను నివారించడం, సర్వర్ ప్రతిస్పందన వేగంగా ఉండేలా చూసుకోవడం, అలాగే టెక్స్ట్ కంప్రెషన్ను ఎనేబుల్ చేయడం ద్వారా దాని ల్యాగ్ను తగ్గించండి." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "డాక్యుమెంట్ రిక్వెస్ట్ ల్యాగ్" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "టెక్స్ట్ స్థిరంగా కనిపించేలా చూడడానికి [font-display](https://developer.chrome.com/blog/font-display)ని swap లేదా optional సెట్ చేసి చూడండి. [ఫాంట్ మెట్రిక్ ఓవర్రైడ్ల](https://developer.chrome.com/blog/font-fallbacks)తో లేఅవుట్ షిఫ్ట్లను తగ్గించడానికి swapను మరింత ఆప్టిమైజ్ చేయవచ్చు." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "ఫాంట్ డిస్ప్లే" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "సుదీర్ఘమైన దశతో పరిశోధన ప్రారంభించండి. [ఆలస్యాలను తగ్గించుకోవచ్చు](https://web.dev/articles/optimize-inp#optimize_interactions). ప్రాసెసింగ్ వ్యవధిని తగ్గించడానికి, [మెయిన్ థ్రెడ్ ఖర్చులను ఆప్టిమైజ్ చేయండి](https://web.dev/articles/optimize-long-tasks), ఇవి సాధారణంగా JSకి చెందినవి అయి ఉంటాయి." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "దశల వారీగా INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "HTML నుంచి LCP ఇమేజ్ను తక్షణమే [కనిపించగలిగేలా](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) చేయడం, అలాగే [ప్రాధాన్యతను బట్టి లోడింగ్ పద్దతిని నివారించడం ](https://web.dev/articles/lcp-lazy-loading) ద్వారా LCPని ఆప్టిమైజ్ చేయండి" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP రిక్వెస్ట్ డిస్కవరీ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "ప్రతి [దశలో నిర్దిష్ట మెరుగుదల వ్యూహాలు ఉన్నాయి](https://web.dev/articles/optimize-lcp#lcp-breakdown). ముఖ్యంగా, LCP సమయాన్ని ఎక్కువ భాగం రిసోర్స్లను లోడ్ చేయడంలో వెచ్చించాలి, ఆలస్యంలో కాదు." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "ఫేజ్ ఆధారంగా LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "రిక్వెస్ట్లు పేజీకి సంబంధించిన ప్రారంభ రెండర్ను బ్లాక్ చేస్తున్నాయి, దీని వలన LCP ఆలస్యం కావచ్చు. [వాయిదా వేయడం లేదా ఇన్లైన్ చేయడం](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) ఈ నెట్వర్క్ రిక్వెస్ట్లను క్లిష్టమైన మార్గం నుండి తరలించగలదు." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "బ్లాకింగ్ రిక్వెస్ట్లను రెండర్ చేయండి" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "స్టయిల్ను తిరిగి లెక్కించడానికి అయ్యే ఖర్చు ఎక్కువగా ఉంటే, ఎంపిక సాధనం ఆప్టిమైజేషన్ దాన్ని తగ్గిస్తుంది. అధిక గడిచిన సమయం, అలాగే స్లో-పాత్ % రెండింటితో [ఎంపిక సాధనాలను ఆప్టిమైజ్ చేయండి](https://developer.chrome.com/docs/devtools/performance/selector-stats). సులభమైన ఎంపిక సాధనాలు, అతి తక్కువ ఎంపిక సాధనాలు, చిన్న DOM, అలాగే షాలో సైజ్ DOM ఇవన్నీ మ్యాచింగ్ ఖర్చులను తగ్గిస్తాయి." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS ఎంపిక సాధనం ఖర్చులు" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "థర్డ్-పార్టీ కోడ్ గణనీయమైన స్థాయిలో లోడ్ పనితీరుపై ప్రభావం చూపవచ్చు. మీ పేజీకి సంబంధించిన కంటెంట్కు ప్రాధాన్యత ఇవ్వడానికి[థర్డ్-పార్టీ కోడ్ను తగ్గించండి, అలాగే లోడ్ చేయడం మినహాయించండి](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "థర్డ్-పార్టీలు" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "పేజీకి సంబంధించిన వీక్షణ పోర్ట్ మొబైల్ కోసం ఆప్టిమైజ్ అవ్వలేదు, కాబట్టి ట్యాప్ ఇంటరాక్షన్లు [ 300 మి.సె వరకు ఆలస్యం](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/) అవ్వొచ్చు." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "మొబైల్ కోసం వీక్షణ పోర్ట్ ఆప్టిమైజ్ అవ్వలేదు" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "యానిమేట్ చేసిన కంటెంట్ కోసం, కంటెంట్ ఆఫ్స్క్రీన్లో ఉన్నప్పుడు CPU వినియోగాన్ని తగ్గించడానికి, [`amp-anim`](https://amp.dev/documentation/components/amp-anim/)ను ఉపయోగించండి." }, @@ -2658,28 +2718,28 @@ "message": "చిత్రం బ్రేక్ పాయింట్లను మేనేజ్ చేయడానికి, కాంపొనెంట్ డెవలపర్ కిట్ (CDK)లోని `BreakpointObserver` యుటిలిటీని ఉపయోగించడానికి ప్రయత్నించండి. [మరింత తెలుసుకోండి](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "మీ `GIF`ను HTML5 వీడియోగా పొందుపరచడానికి అందుబాటులో ఉండేలా చేసే సర్వీస్కు దానిని అప్లోడ్ చేసి చూడండి." + "message": "మీ `GIF`ను HTML5 వీడియోగా పొందుపరచడానికి (ఎంబెడ్ చేయడానికి), దానిని అందుబాటులో ఉంచే సర్వీస్కు అప్లోడ్ చేయడాన్ని పరిశీలించండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "మీ సైట్లో [ఇమేజ్ స్టయిల్ కన్వర్షన్ పద్దతిలో WebP ఇమేజ్ ఫార్మాట్ల](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)ను కాన్ఫిగర్ చేయడాన్ని పరిగణించండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "`Drupal`లో ప్రాధాన్యతను బట్టి లోడ్ ఇమేజ్లను కాన్ఫిగర్ చేసి చూడండి. ఇమేజ్ల కోసం ఫీల్డ్ ఫార్మాటర్లు `lazy` లేదా `eager`ను కలిగి ఉంటాయి." + "message": "`Drupal`లో ప్రాధాన్యత క్రమంలో లోడ్ అయ్యేలా (లేజీ లోడ్) ఇమేజ్లను కాన్ఫిగర్ చేయడాన్ని పరిశీలించండి ఇమేజ్ ఫీల్డ్ ఫార్మాటర్లు, `lazy` ను లేదా `eager`ను సపోర్ట్ చేస్తాయి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "LCP ఎలిమెంట్ డైనమిక్గా పేజీకి జోడించబడితే, LCPని మెరుగుపరచడానికి మీరు ఇమేజ్ను ఆప్టిమైజ్ చేయాలి. [మరింత తెలుసుకోండి](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "LCP ఎలిమెంట్ గనుక డైనమిక్గా పేజీకి యాడ్ అయితే, LCPని ఇంప్రూవ్ చేయడానికి మీరు ఇమేజ్ను ఆప్టిమైజ్ చేయాలి. [మరింత తెలుసుకోండి](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { "message": "మళ్లింపుల వల్ల పేజీ లోడ్ అవ్వడానికి ఇంకాస్త ఆలస్యం జరుగుతుంది. [మళ్లింపు](https://www.drupal.org/project/redirect) మాడ్యూల్ ఇన్స్టాల్ చేయబడితే, అనవసరమైన మళ్లింపులను తీసివేయవచ్చో లేదో రివ్యూ చేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "కీలకమైన CSS, JavaScriptను ఇన్లైన్లో ఉంచడానికి, [మాడ్యూల్](https://www.drupal.org/project/critical_css)ను ఉపయోగించి చూడండి కీలకం కాని CSS లేదా JavaScript కోసం వాయిదా వేసే అట్రిబ్యూట్ను ఉపయోగించండి." + "message": "కీలకమైన CSS, JavaScriptను ఇన్లైన్లో ఉంచడానికి, [మాడ్యూల్](https://www.drupal.org/project/critical_css)ఉపయోగించడాన్ని పరిశీలించండి. అలాగే నాన్-క్రిటికల్ CSS కోసం లేదా JavaScript కోసం డిఫర్ అట్రిబ్యూట్ను ఉపయోగించండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "`Internal Page Cache`, `Internal Dynamic Page Cache`, అలాగే `BigPipe` వంటి ఒకటి లేదా అంతకంటే ఎక్కువ `Drupal` కాషింగ్ మాడ్యూల్లతో ట్రాఫిక్ను ఆఫ్లోడ్ చేయండి. సమాధాన సమయాన్ని మరింత మెరుగుపరచడానికి వీటిని CDNతో జత చేయండి. మీ హోస్టింగ్ సర్వర్లు PHP OPcacheని ఉపయోగించాలి. డేటాబేస్ క్వెరీ సమయాలను తగ్గించడానికి Redis లేదా Memcached వంటి మెమరీ-కాషింగ్ను ఉపయోగించి చూడండి. చివరగా సర్వర్ సమాధాన సమయాన్ని తగ్గించడానికి పనితీరు థీమ్లు, మాడ్యూల్స్, అలాగే వేగవంతమైన సర్వర్లను ఉపయోగించండి." + "message": "`Internal Page Cache`, `Internal Dynamic Page Cache`, అలాగే `BigPipe` వంటి ఒకటి లేదా అంతకంటే ఎక్కువ `Drupal` కాషింగ్ మాడ్యూల్స్తో ట్రాఫిక్ను ఆఫ్లోడ్ చేయండి. రెస్పాన్స్ టైమ్ను మరింతగా మెరుగుపరచడానికి వీటిని CDNతో జత చేయండి. మీ హోస్టింగ్ సర్వర్లు PHP OPcacheని ఉపయోగించాలి. డేటాబేస్ క్వెరీ సమయాలను తగ్గించడానికి Redis లేదా Memcached వంటి మెమరీ-కాషింగ్ను ఉపయోగించి చూడండి. చివరగా సర్వర్ రెస్పాన్స్ టైమ్ను తగ్గించడానికి మెరుగ్గా పని చేసే థీమ్లను, మాడ్యూల్స్ను, మరింత వేగంగా పని చేసే సర్వర్లను ఉపయోగించండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "మీ పేజీలో లోడ్ చేయబడిన ఇమేజ్ల సైజ్ను తగ్గించడానికి [ఫ్లెక్సిబుల్ ఇమేజ్ స్టయిల్స్](https://www.drupal.org/documentation/modules/responsive_image)ను ఉపయోగించి చూడండి. మీరు పేజీలో అనేక కంటెంట్ ఐటెమ్లను చూపించడానికి `Views`ను ఉపయోగిస్తున్నట్లయితే, ఇవ్వబడిన పేజీలో చూపబడే కంటెంట్ ఐటెమ్ల సంఖ్యను పరిమితం చేయడానికి పేజీల రూపకల్పనను అమలు చేసి చూడండి." + "message": "మీ పేజీలో లోడ్ అయిన ఇమేజ్ల సైజ్ను తగ్గించడానికి [ఫ్లెక్సిబుల్ ఇమేజ్ స్టయిల్స్](https://www.drupal.org/documentation/modules/responsive_image)ను ఉపయోగించడాన్ని పరిశీలించండి. మీరు పేజీలో చాలా కంటెంట్ ఐటెమ్లను చూపించడానికి `Views`ను ఉపయోగిస్తుంటే, నిర్దిష్ట పేజీలో కనబడే కంటెంట్ ఐటెమ్ల సంఖ్యను పరిమితం చేయడానికి పేజీల రూపకల్పనను (పేజినేషన్ను) ఇంప్లిమెంట్ చేయండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { "message": "మీరు \"అగ్రిగేట్ CSS ఫైల్స్\"ను \"అడ్మినిస్ట్రేషన్ » కాన్ఫిగరేషన్ » డెవలప్మెంట్\" పేజీలో ఎనేబుల్ చేశారని నిర్ధారించుకోండి." @@ -2688,16 +2748,16 @@ "message": "మీరు \"అగ్రిగేట్ JavaScript ఫైల్స్\"ను \"అడ్మినిస్ట్రేషన్ » కాన్ఫిగరేషన్ » డెవలప్మెంట్\" పేజీలో ఎనేబుల్ చేశారని నిర్ధారించుకోండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "ఉపయోగించని CSS నియమాలను తీసివేసి చూడండి, సంబంధిత పేజీకి లేదా పేజీలోని భాగానికి అవసరమైన `Drupal` లైబ్రరీలను మాత్రమే అటాచ్ చేయండి. వివరాల కోసం [`Drupal` డాక్యుమెంటేషన్](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)ను చూడండి. అవసరం లేని CSSను జోడిస్తున్న 'అటాచ్ చేయబడిన' లైబ్రరీలను గుర్తించడానికి, Chrome DevToolsలో [కోడ్ కవరేజీ](https://developer.chrome.com/docs/devtools/coverage)ని రన్ చేయడానికి ట్రై చేయండి. మీ `Drupal` సైట్లో CSS అగ్రిగేషన్ డిజేబుల్ చేయబడినప్పుడు, దానికి కారణమైన థీమ్/మాడ్యూల్ను, స్టైల్షీట్కు చెందిన URL నుండి మీరు గుర్తించవచ్చు. కోడ్ కవరేజీలో ఎక్కువ ఎరుపు రంగు కలిగి ఉన్న లిస్ట్లో ఎక్కువ స్టైల్షీట్లు ఉన్న థీమ్లు/మాడ్యూల్ల కోసం చూడండి. స్టైల్షీట్ లైబ్రరీ నిజంగా పేజీలో ఉపయోగిస్తే మాత్రమే థీమ్/మాడ్యూల్ను అటాచ్ చేయాలి." + "message": "ఉపయోగించని CSS నియమాలను తీసివేసి చూడండి, సంబంధిత పేజీకి లేదా పేజీలోని భాగానికి అవసరమైన `Drupal` లైబ్రరీలను మాత్రమే అటాచ్ చేయండి. వివరాల కోసం [`Drupal` డాక్యుమెంటేషన్](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)ను చూడండి. సంబంధం లేని CSSను యాడ్ చేస్తున్న అటాచ్డ్ లైబ్రరీలను గుర్తించడానికి, Chrome DevToolsలో [కోడ్ కవరేజీ](https://developer.chrome.com/docs/devtools/coverage)ని రన్ చేయడానికి ట్రై చేయండి. మీ `Drupal` సైట్లో CSS అగ్రిగేషన్, డిజేబుల్ అయినప్పుడు, దానికి కారణమైన థీమ్ను/మాడ్యూల్ను, స్టయిల్షీట్కు చెందిన URLలో గుర్తించవచ్చు. కోడ్ కవరేజీలో, అధికంగా రెడ్ కలర్ ఉన్న లిస్ట్లో, ఎక్కువ స్టయిల్షీట్లు ఉన్న థీమ్లు/మాడ్యూల్ల కోసం చూడండి. పేజీలో యాక్టువల్గా స్టయిల్షీట్ లైబ్రరీని ఉపయోగించినప్పుడు మాత్రమే థీమ్/మాడ్యూల్ను అటాచ్ చేయాలి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "ఉపయోగించని JavaScipt అస్సెట్లను తీసివేసి చూడండి, సంబంధిత పేజీకి లేదా పేజీలోని భాగానికి అవసరమైన `Drupal` లైబ్రరీలను మాత్రమే అటాచ్ చేయండి. వివరాల కోసం [Drupal డాక్యుమెంటేషన్](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)ను చూడండి. అవసరం లేని JavaScriptను జోడిస్తున్న 'అటాచ్ చేయబడిన' లైబ్రరీలను గుర్తించడానికి, Chrome DevToolsలో [కోడ్ కవరేజీ](https://developer.chrome.com/docs/devtools/coverage)ని రన్ చేయడానికి ట్రై చేయండి. మీ `Drupal` సైట్లో JavaScript అగ్రిగేషన్ డిజేబుల్ చేయబడినప్పుడు, దానికి కారణమైన థీమ్/మాడ్యూల్ను, స్క్రిప్ట్కు చెందిన URL నుండి మీరు గుర్తించవచ్చు. కోడ్ కవరేజీలో ఎక్కువ ఎరుపు రంగు కలిగి ఉన్న లిస్ట్లో ఎక్కువ స్క్రిప్ట్లు ఉన్న థీమ్లు/మాడ్యూల్ల కోసం చూడండి. స్క్రిప్ట్ లైబ్రరీ నిజంగా పేజీలో ఉపయోగిస్తే మాత్రమే థీమ్/మాడ్యూల్ను అటాచ్ చేయాలి." + "message": "ఉపయోగించని JavaScipt అస్సెట్లను తీసివేసి చూడండి, సంబంధిత పేజీకి లేదా పేజీలోని భాగానికి అవసరమైన `Drupal` లైబ్రరీలను మాత్రమే అటాచ్ చేయండి. వివరాల కోసం [Drupal డాక్యుమెంటేషన్](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)ను చూడండి. సంబంధం లేని JavaScriptను యాడ్ చేస్తున్న 'అటాచ్డ్' లైబ్రరీలను గుర్తించడానికి, Chrome DevToolsలో [కోడ్ కవరేజీ](https://developer.chrome.com/docs/devtools/coverage)ని రన్ చేయడానికి ట్రై చేయండి. మీ `Drupal` సైట్లో JavaScript అగ్రిగేషన్ డిజేబుల్ అయినప్పుడు, దానికి కారణమైన థీమ్ను/మాడ్యూల్ను, స్క్రిప్ట్కు చెందిన URLలో గుర్తించవచ్చు. కోడ్ కవరేజీలో ఎక్కువ రెడ్ కలర్ ఉన్న లిస్ట్లో, చాలా స్క్రిప్ట్లు ఉన్న థీమ్లు/మాడ్యూల్ల కోసం చూడండి. పేజీలో యాక్టువల్గా స్క్రిప్ట్ లైబ్రరీని ఉపయోగించినప్పుడు మాత్రమే థీమ్/మాడ్యూల్ను అటాచ్ చేయాలి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "\"బ్రౌజర్, ప్రాక్సీ కాష్ గరిష్ఠ వయసు\"ను \"అడ్మినిస్ట్రేషన్ » కాన్ఫిగరేషన్ » డెవలప్మెంట్\" పేజీలో సెట్ చేయండి. [`Drupal` కాష్, పనితీరు కోసం ఆప్టిమైజ్ చేయడం](https://www.drupal.org/docs/8/api/cache-api/cache-api) గురించి చదవండి." + "message": "\"బ్రౌజర్, ప్రాక్సీ కాష్ ముగిసే గరిష్ఠ సమయం\"ను \"అడ్మినిస్ట్రేషన్ » కాన్ఫిగరేషన్ » డెవలప్మెంట్\" పేజీలో సెట్ చేయండి. [`Drupal` కాష్, పనితీరు కోసం ఆప్టిమైజ్ చేయడం](https://www.drupal.org/docs/8/api/cache-api/cache-api) గురించి చదవండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "క్వాలిటీని అలాగే కొనసాగిస్తూ సైట్ ద్వారా అప్లోడ్ చేయబడిన ఇమేజ్లను ఆటోమేటిక్గా ఆప్టిమైజ్ చేసి, సైజ్ను తగ్గించే [మాడ్యూల్](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search)ను ఉపయోగించి చూడండి. అలాగే, మీరు సైట్లో రెండర్ చేయబడే ఇమేజ్లు అన్నింటి కోసం `Drupal` నుండి అందించబడే స్థానిక [ఫ్లెక్సిబుల్ ఇమేజ్ స్టయిల్స్](https://www.drupal.org/documentation/modules/responsive_image)ను ఉపయోగిస్తున్నారని నిర్ధారించుకోండి." + "message": "సైట్ ద్వారా అప్లోడ్ అయిన ఇమేజ్లను ఆటోమేటిక్గా ఆప్టిమైజ్ చేసే[మాడ్యూల్](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search)ను ఉపయోగించడాన్ని పరిశీలించండి. ఈ మాడ్యూల్ క్వాలిటీని మెయింటైన్ చేస్తూనే సైజ్ను తగ్గించగలదు. అలాగే, సైట్లో రెండర్ అయ్యే అన్ని ఇమేజ్ల కోసం `Drupal` అందిస్తున్న నేటివ్ [ఫ్లెక్సిబుల్ ఇమేజ్ స్టయిల్స్](https://www.drupal.org/documentation/modules/responsive_image)ను ఉపయోగిస్తున్నారని నిర్ధారించుకోండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { "message": "యూజర్ ఏజెంట్ రిసోర్స్ సూచనల కోసం సౌకర్యాలను అందించే [మాడ్యూల్](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search)ను ఇన్స్టాల్ చేయడం, కాన్ఫిగర్ చేయడం ద్వారా `Preconnect` లేదా `dns-prefetch` రిసోర్స్ సూచనలను జోడించవచ్చు." @@ -2706,7 +2766,7 @@ "message": "మీరు `Drupal` నుండి అందించబడే స్థానిక [ఫ్లెక్సిబుల్ ఇమేజ్ స్టయిల్స్](https://www.drupal.org/documentation/modules/responsive_image)ను ఉపయోగిస్తున్నారని నిర్ధారించుకోండి. వీక్షణ మోడ్లు, వీక్షణల ద్వారా ఇమేజ్ ఫీల్డ్లను, లేదా WYSIWYG ఎడిటర్ ద్వారా అప్లోడ్ చేసిన ఇమేజ్లను రెండరింగ్ చేస్తున్నప్పుడు ఫ్లెక్సిబుల్ ఇమేజ్ స్టయిల్స్ను ఉపయోగించండి." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "మొత్తం నెట్వర్క్ బైట్లను వీలైనంతగా తగ్గించడానికి టెక్స్ట్-ఆధారిత రిసోర్స్లు ఖచ్చితంగా కుదింపు (gzip, deflate లేదా brotli) చేసి అందించబడాలి. స్థానికంగా దీనికి సపోర్ట్ను ఇచ్చే CDNను ఉపయోగించి చూడండి లేదా ఈ ఆపరేషన్ను అమలు చేయడానికి వెబ్ సర్వర్ను కాన్ఫిగర్ చేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "ఓవరాల్ నెట్వర్క్ డేటా సైజ్ను వీలైనంతగా తగ్గించడానికి టెక్స్ట్-బేస్డ్ రిసోర్స్లను ఖచ్చితంగా gzip, deflate, brotli వంటి ఫార్మాట్లలోకి కంప్రెస్ చేసి ప్రొవైడ్ చేయాలి. ఇప్పటికే దీనికి డిఫాల్ట్గా సపోర్ట్ ఇస్తున్న CDNను ఉపయోగించడాన్ని పరిశీలించండి, లేదా ఈ ఆపరేషన్ను పెర్ఫార్మ చేయడానికి వెబ్ సర్వర్ను కాన్ఫిగర్ చేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "[Ezoic Leap](https://pubdash.ezoic.com/speed) ఫ్రేమ్వర్క్ను ఉపయోగించండి, వెబ్ ఫాంట్లు లోడ్ అవుతున్నప్పుడు యూజర్కు టెక్స్ట్ కనిపిస్తోందని నిర్ధారించుకోవడానికి `font-display` CSS ఫీచర్ను ఆటోమేటిక్గా ప్రభావితం చేయడానికి `Optimize Fonts`ను ఎనేబుల్ చేయండి." @@ -3036,7 +3096,7 @@ "message": "[కీలకమైన ఆస్తులను ఇన్లైన్లో ఉంచడానికి](https://wordpress.org/plugins/search/critical+css/) లేదా [తక్కువ ప్రాముఖ్యత ఉన్న వనరులను మినహాయించడానికి](https://wordpress.org/plugins/search/defer+css+javascript/) మీకు సహాయపడగల అనేక WordPress ప్లగ్ఇన్లు ఉన్నాయి. ఈ ప్లగ్ఇన్ల ద్వారా అందించబడే ఆప్టిమైజేషన్లు మీ థీమ్ లేదా ప్లగ్ఇన్ల ఫీచర్లను విడగొట్టవచ్చని గుర్తుంచుకోండి, దీని వలన మీరు కోడ్కు మార్పులు చేయాల్సి రావచ్చు." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "లైట్వెయిట్ థీమ్ను ఎంచుకోండి (ముఖ్యంగా బ్లాక్ థీమ్), ఫుల్-పేజీ కాషింగ్ లేదా స్టాటిక్ సైట్ పరిష్కారాన్ని అమలు చేయండి. సర్వర్ ఓవర్హెడ్ను తగ్గించడానికి అనవసరమైన ప్లగ్ఇన్లను డిజేబుల్ చేయండి. మీ హోస్టింగ్ను మేనేజ్ చేసి లేదా డెడికేటెడ్ సర్వీస్కు అప్గ్రేడ్ చేసి చూడండి." + "message": "లైట్వెయిట్ థీమ్ను ఎంచుకోండి (బ్లాక్ థీమ్ బావుంటుంది), ఫుల్-పేజీ కాషింగ్ను లేదా స్టాటిక్ సైట్ సొల్యూషన్ను ఇంప్లిమెంట్ చేయండి. సర్వర్ ఓవర్హెడ్ను తగ్గించడానికి అనవసరమైన ప్లగ్ఇన్లను డిజేబుల్ చేయండి. మీ హోస్టింగ్ను, మేనేజ్డ్ సర్వీస్కు లేదా డెడికేటెడ్ సర్వీస్కు అప్గ్రేడ్ చేయడాన్ని పరిశీలించండి." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "ఇవ్వబడిన పేజీలో చూపబడే పోస్ట్ల సంఖ్యను తగ్గించడం, మీ పొడవైన పోస్ట్లను బహుళ పేజీలుగా విడగొట్టడం లేదా మందకొడి లోడింగ్ కామెంట్ల కోసం ప్లగ్ఇన్ను ఉపయోగించడం ద్వారా (అంటే, మరిన్ని ట్యాగ్ ద్వారా) మీ పోస్ట్ లిస్ట్లలో సారాంశాలను చూపడానికి ప్రయత్నించండి."
diff --git a/front_end/third_party/lighthouse/locales/th.json b/front_end/third_party/lighthouse/locales/th.json index 56ae7ef..c7f0dc2 100644 --- a/front_end/third_party/lighthouse/locales/th.json +++ b/front_end/third_party/lighthouse/locales/th.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "รายงานโฟลว์ผู้ใช้ Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "การเปลี่ยนแปลงเลย์เอาต์เกิดขึ้นเมื่อองค์ประกอบต่างๆ เคลื่อนที่โดยไม่มีการโต้ตอบของผู้ใช้ [ตรวจสอบสาเหตุของการเปลี่ยนแปลงเลย์เอาต์](https://web.dev/articles/optimize-cls) เช่น การเพิ่ม การนำออก หรือการเปลี่ยนแบบอักษรขององค์ประกอบต่างๆ เมื่อโหลดหน้าเว็บ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "สาเหตุของการเปลี่ยนแปลงเลย์เอาต์" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "คำขอเครือข่ายครั้งแรกเป็นสิ่งสำคัญที่สุด ลดเวลาในการตอบสนองโดยหลีกเลี่ยงการเปลี่ยนเส้นทาง ตรวจสอบการตอบกลับของเซิร์ฟเวอร์ที่รวดเร็ว และเปิดใช้การบีบอัดข้อความ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "เวลาในการตอบสนองต่อคำขอเอกสาร" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "ลองตั้งค่า [font-display](https://developer.chrome.com/blog/font-display) เป็น swap หรือ optional เพื่อให้ผู้ใช้มองเห็นข้อความได้เสมอ swap สามารถเพิ่มประสิทธิภาพเพิ่มเติมเพื่อลดการเปลี่ยนแปลงเลย์เอาต์ด้วย[การลบล้างเมตริกแบบอักษร](https://developer.chrome.com/blog/font-fallbacks)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "การแสดงแบบอักษร" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "เริ่มตรวจสอบด้วยระยะที่ยาวที่สุด [ลดการหน่วงเวลาให้น้อยที่สุด](https://web.dev/articles/optimize-inp#optimize_interactions) หากต้องการลดระยะเวลาในการประมวลผล ให้[เพิ่มประสิทธิภาพต้นทุนของเทรดหลัก](https://web.dev/articles/optimize-long-tasks) ซึ่งมักจะเป็น JS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP ตามระยะ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "เพิ่มประสิทธิภาพ LCP โดยทำให้รูปภาพ LCP [ค้นพบได้](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay)จาก HTML ทันที และ[หลีกเลี่ยงการโหลดแบบ Lazy Loading](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "การค้นพบคำขอ LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "แต่ละ[ระยะมีกลยุทธ์การปรับปรุงเฉพาะ](https://web.dev/articles/optimize-lcp#lcp-breakdown) โดยปกติแล้ว เวลาส่วนใหญ่ของ LCP ควรใช้ไปกับการโหลดทรัพยากร ไม่ใช่การหน่วงเวลา" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP ตามระยะ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "คำขอกำลังบล็อกการแสดงผลเริ่มต้นของหน้าเว็บ ซึ่งอาจทำให้ LCP ล่าช้า [การเลื่อนเวลาหรือแทรกในหน้า](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)สามารถย้ายคำขอเครือข่ายเหล่านี้ออกจากเส้นทางที่สำคัญได้" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "แสดงผลคำขอบล็อก" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "หากต้นทุนในการคำนวณรูปแบบอีกครั้งยังคงสูงอยู่ การเพิ่มประสิทธิภาพตัวเลือกจะลดต้นทุนได้ [เพิ่มประสิทธิภาพตัวเลือก](https://developer.chrome.com/docs/devtools/performance/selector-stats)ด้วยทั้งเวลาที่ผ่านไปนานและ % ของเส้นทางที่ช้าที่สูง ตัวเลือกที่เรียบง่ายขึ้น, ตัวเลือกที่น้อยลง, DOM ที่เล็กลง และ DOM ที่ตื้นขึ้นจะช่วยลดต้นทุนการจับคู่ได้ทั้งหมด" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "ต้นทุนของตัวเลือก CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "โค้ดของบุคคลที่สามอาจส่งผลกระทบที่สำคัญต่อประสิทธิภาพการโหลด [ลดและเลื่อนการโหลดโค้ดของบุคคลที่สามออกไป](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)เพื่อจัดลำดับความสำคัญของเนื้อหาในหน้าเว็บ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "บุคคลที่สาม" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "วิวพอร์ตของหน้าเว็บไม่ได้เพิ่มประสิทธิภาพสำหรับอุปกรณ์เคลื่อนที่ การโต้ตอบด้วยการแตะจึงอาจ[มีการหน่วงเวลาสูงสุด 300 มิลลิวินาที](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "วิวพอร์ตไม่เหมาะกับอุปกรณ์เคลื่อนที่" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "สำหรับเนื้อหาที่เป็นภาพเคลื่อนไหว ให้ใช้ [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) เพื่อลดการใช้ CPU ขณะที่เนื้อหาไม่ได้อยู่ในหน้าจอ" },
diff --git a/front_end/third_party/lighthouse/locales/tr.json b/front_end/third_party/lighthouse/locales/tr.json index 1381c18..4bece28 100644 --- a/front_end/third_party/lighthouse/locales/tr.json +++ b/front_end/third_party/lighthouse/locales/tr.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse Kullanıcı İşlemleri Akışıyla İlgili Rapor" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Düzen kaymaları, öğeler herhangi bir kullanıcı etkileşimi olmadan hareket ettiğinde gerçekleşir. [Öğelerin eklenmesi, kaldırılması veya sayfa yüklenirken yazı tiplerinin değişmesi gibi düzen kaymalarının nedenlerini araştırın](https://web.dev/articles/optimize-cls)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Düzen kayması sorununun nedenleri" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "İlk ağ isteğiniz en önemli isteğinizdir. Yönlendirmelerden kaçınarak, hızlı sunucu yanıtı sağlayarak ve metin sıkıştırmayı etkinleştirerek gecikmeyi azaltın." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Doküman isteğiyle ilgili gecikme" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Metnin her zaman görünmesini sağlamak için [font-display](https://developer.chrome.com/blog/font-display) özelliğini swap veya optional olarak ayarlayabilirsiniz. swap, [yazı tipi metriği geçersiz kılmalarıyla](https://developer.chrome.com/blog/font-fallbacks) düzen kaymalarını azaltmak için daha fazla optimize edilebilir." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Yazı tipi görüntüleme" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "En uzun aşamayla incelemeye başlayın. [Gecikmeler en aza indirilebilir](https://web.dev/articles/optimize-inp#optimize_interactions). İşleme süresini kısaltmak için genellikle JS'den oluşan [ana iş parçacığı maliyetlerini optimize edin](https://web.dev/articles/optimize-long-tasks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "Aşama bazında INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "LCP resmini HTML'den anında [bulunabilir](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) hale getirerek ve [geç yüklemeden](https://web.dev/articles/lcp-lazy-loading) kaçınarak LCP'yi optimize edin" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP istek keşfi" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Her [aşama için belirli iyileştirme stratejileri vardır](https://web.dev/articles/optimize-lcp#lcp-breakdown). İdeal olarak LCP süresinin çoğu gecikmeler için değil, kaynakları yüklemek için harcanmalıdır." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "Aşama bazında LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "İstekler sayfanın ilk oluşturma işlemini engelliyor. Bu durum, LCP'yi geciktirebilir. [Erteleme veya satır içine yerleştirme](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/), bu ağ isteklerini kritik yoldan uzaklaştırabilir." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Oluşturma engelleme istekleri" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "\"Stili yeniden hesapla\" maliyetleri yüksekse seçicinin optimize edilmesi bu maliyetleri azaltabilir. Hem geçen süresi hem de yavaş yol yüzdesi yüksek olan [seçicileri optimize edin](https://developer.chrome.com/docs/devtools/performance/selector-stats). Daha basit seçici, daha az sayıda seçici, daha küçük DOM ve daha sığ DOM, eşleşme maliyetlerini azaltır." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS seçici maliyetleri" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Üçüncü taraf kodu, yükleme performansını önemli ölçüde etkileyebilir. Sayfanızdaki içeriklere öncelik vermek için [üçüncü taraf kodlarının yüklenmesini azaltın ve geciktirin](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Üçüncü taraflar" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Sayfanın görüntü alanı, mobil cihazlar için optimize edilmediğinden dokunma etkileşimleri [300 ms.ye kadar gecikebilir](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Görüntü alanı, mobil cihazlar için optimize edilmemiş" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Animasyonlu içerik için içerik ekran dışındayken CPU kullanımını en aza indirmek amacıyla [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) kullanın." }, @@ -2658,55 +2718,55 @@ "message": "Görüntü ayrılma noktalarını yönetmek için Bileşen Geliştirme Kiti'nde (CDK) `BreakpointObserver` yardımcı programını kullanmayı düşünün. [Daha fazla bilgi](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "`GIF` dosyanızı, HTML5 videosu olarak yerleştirmek için kullanılabilmesini sağlayacak bir hizmete yüklemeyi düşünün." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Sitenizde [WebP resim biçimlerini Convert resim stiliyle](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) yapılandırmanız faydalı olabilir." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "`Drupal` platformunda geç yüklenen resimleri yapılandırabilirsiniz. Resimler için alan biçimlendiriciler, `lazy` veya `eager` değerlerini destekler." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "LCP öğesinin sayfaya dinamik olarak eklendiği durumlarda LCP'yi iyileştirmek için resmi optimize etmeniz gerekir. [Daha fazla bilgi edinin](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Yönlendirmeler, sayfanın yüklenmesinden önce ek gecikmelere neden olur. [Yönlendirme](https://www.drupal.org/project/redirect) modülü yüklüyse gereksiz yönlendirmelerin kaldırılıp kaldırılamayacağını inceleyin. [Daha fazla bilgi edinin](https://developers.google.com/web/tools/lighthouse/audits/redirects)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Kritik CSS ve JavaScript'leri satır içi yapmak için [modül](https://www.drupal.org/project/critical_css), kritik olmayan CSS veya JavaScript'ler için ise geciktirme özelliğini kullanabilirsiniz." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "`Internal Page Cache`, `Internal Dynamic Page Cache` ve `BigPipe` gibi bir veya daha fazla `Drupal` önbelleğe alma modülüyle trafiği azaltın. Yanıt süresini daha da iyileştirmek için bunları bir CDN ile birlikte kullanın. Barındırma sunucularınız, PHP OPcache kullanmalıdır. Veritabanı sorgu sürelerini azaltmak için Redis veya Memcached gibi belleği önbelleğe alma tekniklerini kullanabilirsiniz. Son olarak da sunucu yanıt süresini azaltmak için yüksek performanslı temalar, modüller ve daha hızlı sunucular kullanın." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Sayfanıza yüklenen resimlerin boyutunu azaltmak için [Duyarlı Resim Stilleri](https://www.drupal.org/documentation/modules/responsive_image)'ni kullanmayı değerlendirin. Bir sayfada birden çok içerik öğesini göstermek için `Views` kullanılıyorsa belirli bir sayfada gösterilen içerik öğelerinin sayısını sınırlamak üzere sayfalara ayırma işlevini uygulamayı değerlendirin." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "\"Administration (Yönetim) » Configuration (Yapılandırma) » Development (Geliştirme)\" sayfasında \"Aggregate CSS files (CSS dosyalarını topla)\" ayarını etkinleştirdiğinizden emin olun." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "\"Administration (Yönetim) » Configuration (Yapılandırma) » Development (Geliştirme)\" sayfasında \"Aggregate JavaScript files (JavaScript dosyalarını topla)\" ayarını etkinleştirdiğinizden emin olun." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Kullanılmayan CSS kurallarını kaldırmayı ve gerekli `Drupal` kitaplıklarını yalnızca alakalı sayfaya veya bir sayfadaki alakalı bileşene eklemeyi değerlendirin. Ayrıntılar için [`Drupal` belgelerini](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) inceleyin. Gereksiz CSS ilave eden ekli kitaplıkları belirlemek için Chrome Geliştirici Araçları'nda [kod kapsamını](https://developer.chrome.com/docs/devtools/coverage) çalıştırmayı deneyin. `Drupal` sitenizde CSS toplama devre dışı bırakıldığında, sorumlu temayı/modülü stil sayfasının URL'sinden belirleyebilirsiniz. Listede çok sayıda stil sayfasına sahip olan ve kod kapsamında çok sayıda kırmızı işaret taşıyan temaları/modülleri arayın. Tema/modül yalnızca sayfada gerçekten kullanılıyorsa bir stil sayfası kitaplığı eklemelidir." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Kullanılmayan JavaScript öğelerini kaldırmayı değerlendirin ve gerekli `Drupal` kitaplıklarını yalnızca alakalı sayfaya veya bir sayfadaki alakalı bileşene ekleyin. Ayrıntılar için [Drupal belgelerine ](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) bakın. Gereksiz JavaScript'ler ilave eden ekli kitaplıkları belirlemek için Chrome Geliştirici Araçları'nda [kod kapsamını](https://developer.chrome.com/docs/devtools/coverage) çalıştırmayı deneyin. `Drupal` sitenizde JavaScript toplama devre dışı bırakıldığında, sorumlu temayı/modülü komut dosyasının URL'sinden belirleyebilirsiniz. Listede çok sayıda komut dosyasına sahip olan ve kod kapsamında çok sayıda kırmızı işaret taşıyan temalar/modüller arayın. Tema/modül yalnızca sayfada gerçekten kullanılıyorsa bir komut dosyası kitaplığı eklemelidir." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "\"Administration (Yönetim) » Configuration (Yapılandırma) » Development (Geliştirme)\" sayfasında \"Browser and proxy cache maximum age (Tarayıcı ve proxy önbelleği maksimum yaşı)\" değerini ayarlayın. [`Drupal` önbelleği ve performans için optimize edilmesi](https://www.drupal.org/docs/8/api/cache-api/cache-api) ile ilgili bilgi edinin." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Site aracılığıyla yüklenen resimlerin kalitesini korurken boyutlarını otomatik olarak optimize eden ve küçülten [bir modül](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) kullanmayı değerlendirin. Ayrıca, sitede oluşturulan tüm resimler için `Drupal` tarafından sağlanan yerel [Duyarlı Resim Stilleri](https://www.drupal.org/documentation/modules/responsive_image)'ni kullandığınızdan emin olun." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "`Preconnect` veya `dns-prefetch` kaynak ipuçları, kullanıcı aracısı kaynak ipuçları için tamamlayıcı hizmetler sağlayan [bir modülü](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) yükleyerek ve yapılandırarak eklenebilir." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "`Drupal` tarafından sağlanan yerel [Duyarlı Resim Stilleri](https://www.drupal.org/documentation/modules/responsive_image)'ni kullandığınızdan emin olun. Görünüm modları, görünümler ile resim alanlarını veya WYSIWYG düzenleyicisi ile yüklenen resimleri oluştururken Duyarlı Resim Stilleri'ni kullanın." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Metne dayalı kaynaklar, toplam ağ baytı sayısını en aza indirmek için sıkıştırılarak (gizp, deflate veya brotli) yayınlanmalıdır. Bunu yerel olarak destekleyen bir CDN kullanabilir veya web sunucusunu bu işlemi gerçekleştirecek şekilde yapılandırabilirsiniz. [Daha fazla bilgi edinin](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Web yazı tipleri yüklenirken metnin kullanıcılar tarafından görülebilmesi için `font-display` CSS özelliğini otomatik olarak devreye sokmak üzere [Ezoic Leap](https://pubdash.ezoic.com/speed)'i kullanarak `Optimize Fonts` ayarını etkinleştirin." @@ -3036,7 +3096,7 @@ "message": "[Kritik öğeleri satır içi yapmanıza](https://wordpress.org/plugins/search/critical+css/) veya [daha az önemli kaynakları ertelemenize](https://wordpress.org/plugins/search/defer+css+javascript/) yardımcı olabilecek çeşitli WordPress eklentileri vardır. Bu eklentilerin sağlayacağı optimizasyonların tema veya eklentilerinizin özelliklerini bozabileceğine dikkat edin. Bunu engellemek için muhtemelen kodda değişiklik yapmanız gerekecektir." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Hafif bir tema (ideal olarak blok tema) seçip tam sayfayı önbelleğe alma veya statik site çözümü uygulayın. Sunucu yükünü en aza indirmek için gereksiz eklentileri devre dışı bırakın. Barındırma hizmetinizi, yönetilen veya özel hizmete yükseltebilirsiniz." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Yayın listelerinizde alıntılar göstermeyi (ör. daha fazla etiket kullanarak), belirli bir sayfada gösterilen yayınların sayısını azaltmayı, uzun yayınlarınızı birden fazla sayfaya bölmeyi veya yorumların geç yüklenmesi için bir eklenti kullanmayı düşünün."
diff --git a/front_end/third_party/lighthouse/locales/uk.json b/front_end/third_party/lighthouse/locales/uk.json index a399959..bd9f6d5 100644 --- a/front_end/third_party/lighthouse/locales/uk.json +++ b/front_end/third_party/lighthouse/locales/uk.json
@@ -45,7 +45,7 @@ "message": "Атрибути ARIA використовуються відповідно до ролі елемента" }, "core/audits/accessibility/aria-deprecated-role.js | description": { - "message": "Ролі ARIA, які більше не підтримуються, можуть неправильно оброблятися технологією для людей з обмеженими можливостями. [Докладніше про ролі ARIA, які більше не підтримуються.](https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role)" + "message": "Ролі ARIA, які більше не підтримуються, можуть неправильно оброблятися технологією доступності. [Докладніше про ролі ARIA, які більше не підтримуються.](https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role)" }, "core/audits/accessibility/aria-deprecated-role.js | failureTitle": { "message": "Використано ролі ARIA, які більше не підтримуються" @@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Звіт про послідовність переходів у Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Зміщення макета відбувається, коли елементи переміщуються без взаємодії з користувачем. [Дізнайтеся причини зміщення макета](https://web.dev/articles/optimize-cls), наприклад додавання або видалення елементів чи зміна шрифтів під час завантаження сторінки." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Причини зміщення макета" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Перший запит мережі найважливіший. Щоб зменшити його затримку, уникайте переспрямувань, забезпечте швидку відповідь сервера й увімкніть стиснення тексту." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Затримка запиту на документ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Щоб текст завжди був видимим, змініть значення властивості [font-display](https://developer.chrome.com/blog/font-display) на swap або optional. Щоб зменшити зміщення макета, можна додатково оптимізувати swap за допомогою [перевизначення показників шрифту](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Відображення шрифту" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Почніть аналіз із найдовшої фази. [Затримки можна зменшити.](https://web.dev/articles/optimize-inp#optimize_interactions) Щоб скоротити час обробки, [оптимізуйте витрати основного потоку](https://web.dev/articles/optimize-long-tasks), часто JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "Показник INP за етапами" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Щоб оптимізувати показник LCP, зробіть зображення LCP [видимим](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) у HTML-коді відразу й [не використовуйте відкладене завантаження](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Виявлення запитів LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Для кожного етапу передбачено [конкретні стратегії оптимізації](https://web.dev/articles/optimize-lcp#lcp-breakdown). В ідеалі більшість часу LCP має витрачатися на завантаження ресурсів, не в межах затримок." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "Показник LCP за етапами" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Запити блокують початкове відображення сторінки, що може викликати затримку завантаження елементів LCP. За допомогою [відкладання або вставки](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) можна усунути ці запити мережі з критичного шляху." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Запити, які блокують відображення" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Якщо витрати на повторне обчислення стилю залишаються високими, їх можна зменшити за допомогою оптимізації селектора. [Оптимізуйте селектори](https://developer.chrome.com/docs/devtools/performance/selector-stats), які мають і тривалий час виконання, і високий відсоток повільних шляхів. Щоб зменшити витрати на зіставлення, використовуйте менше селекторів, обирайте їх простіші варіанти, а також надавайте перевагу компактнішій і менш розгалуженій архітектурі інтерфейсу DOM." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Витрати на селектор CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Сторонній код може значно погіршити швидкість завантаження. [Зменште обсяг стороннього коду й відкладіть його завантаження](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/), щоб надати пріоритет контенту сторінки." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Сторонній код" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Область перегляду сторінки не оптимізовано для мобільних пристроїв, тому взаємодія за допомогою дотику може відбуватися із затримкою [до 300 мс](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Область перегляду не оптимізовано для мобільних пристроїв" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Для анімованого контенту застосовуйте [`amp-anim`](https://amp.dev/documentation/components/amp-anim/), щоб зменшити використання ЦП, коли контент поза межами екрана." }, @@ -2658,55 +2718,55 @@ "message": "Можете скористатись інструментом `BreakpointObserver` у Component Dev Kit (CDK), щоб керувати точками переходу зображень. [Докладніше](https://material.angular.io/cdk/layout/overview)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "Спробуйте завантажити анімацію `GIF` у сервіс, де її можна вставити як відео HTML5." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "Спробуйте змінити [стиль зображень у форматі WebP](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) на своєму сайті." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "Спробуйте налаштувати відкладене завантаження зображень у `Drupal`. Засоби форматування полів для зображень підтримують `lazy` або `eager`." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "Якщо ви динамічно додаєте елемент LCP на сторінку, вам потрібно оптимізувати зображення, щоб скоротити час його візуалізації. [Докладніше.](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Переспрямування викликають додаткові затримки під час завантаження сторінки. Якщо встановлено модуль [Redirect](https://www.drupal.org/project/redirect), перевірте, чи можна вилучити непотрібні переспрямування. [Докладніше.](https://developers.google.com/web/tools/lighthouse/audits/redirects)" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "Скористайтеся [модулем](https://www.drupal.org/project/critical_css), щоб вбудувати важливі таблиці CSS і фрагменти JavaScript, а також застосуйте атрибут defer для некритичних елементів." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "Зменште трафік за допомогою одного або кількох модулів кешування `Drupal`, таких яких `Internal Page Cache`, `Internal Dynamic Page Cache` і `BigPipe`. Щоб ще більше скоротити час відповіді, використовуйте мережу CDN. Сервери хостингу повинні використовувати PHP OPcache. Щоб зменшити час запитів до баз даних, застосовуйте системи кешування пам’яті, такі як Redis або Memcache. Нарешті, використовуйте ефективні теми й модулі, а також швидші сервери, щоб зменшити час відповіді сервера." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "Застосуйте [стилі адаптивних зображень](https://www.drupal.org/documentation/modules/responsive_image), щоб зменшити розмір зображень, що завантажуються на сторінці. Якщо для показу кількох елементів контенту на сторінці використовується опція `Views`, застосуйте поділ на сторінки, щоб обмежити їхню кількість на певній сторінці." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "Переконайтеся, що функцію \"Звести файли CSS\" на сторінці \"Керування\" » \"Налаштування\" » \"Розробка\" ввімкнено." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "Переконайтеся, що функцію \"Звести файли JavaScript\" на сторінці \"Керування\" » \"Налаштування\" » \"Розробка\" ввімкнено." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "Видаліть правила CSS, що не використовуються, і додайте лише потрібні бібліотеки `Drupal` на відповідну сторінку чи в компонент сторінки. Щоб дізнатися більше, перегляньте [документацію `Drupal`](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Щоб визначити долучені бібліотеки, які додають зайві таблиці CSS, перевірте [покриття коду](https://developer.chrome.com/docs/devtools/coverage) в Інструментах розробника Chrome. Ви можете визначити тему чи модуль через URL-адресу таблиці стилів, коли зведення CSS вимкнено на вашому сайті `Drupal`. У покритті коду знайдіть теми чи модулі з багатьма таблицями стилів за великим обсягом червоного тексту. Тема чи модуль мають додавати бібліотеку таблиць стилів, лише коли вона дійсно використовується на сторінці." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "Видаліть об’єкти JavaScript, що не використовуються, і додавайте лише потрібні бібліотеки `Drupal` на відповідну сторінку чи в компонент сторінки. Щоб дізнатися більше, перегляньте [документацію Drupal](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Щоб визначити вкладені бібліотеки, які додають зайві фрагменти JavaScript, перевірте [покриття коду](https://developer.chrome.com/docs/devtools/coverage) в Інструментах розробника Chrome. Ви можете визначити тему чи модуль через URL-адресу скрипту, коли зведення JavaScript вимкнено на вашому сайті `Drupal`. У покритті коду знайдіть теми чи модулі з багатьма скриптами за великим обсягом червоного тексту. Тема чи модуль мають додавати бібліотеку скриптів, лише коли вона дійсно використовується на сторінці." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "Укажіть \"Максимальний час зберігання кешу вебпереглядача й проксі-сервера\" на сторінці \"Керування\" » \"Налаштування\" » \"Розробка\". Докладніше про [кеш `Drupal` і оптимізацію для підвищення ефективності](https://www.drupal.org/docs/8/api/cache-api/cache-api)." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "Скористайтеся [модулем](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), який автоматично оптимізує і зменшує розмір зображень, завантажених через сайт, але зберігає їх якість. Також переконайтеся, що використовуються оригінальні [стилі адаптивних зображень](https://www.drupal.org/documentation/modules/responsive_image) від `Drupal` для всіх зображень, що обробляються на сайті." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "Щоб додати корективи ресурсів `Preconnect` або `dns-prefetch`, установіть і налаштуйте [модуль](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), який надає можливості для корективів ресурсів агента користувача." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "Переконайтеся, що використовуються оригінальні [стилі адаптивних зображень](https://www.drupal.org/documentation/modules/responsive_image) від `Drupal`. Використовуйте стилі адаптивних зображень під час обробки полів зображення в режимах перегляду, переглядах або зображеннях, завантажених через редактор WYSIWYG." }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Щоб скоротити загальний трафік даних у мережі, текстові ресурси потрібно відображати зі стисненням (Gzip, Deflate чи Brotli). Використовуйте мережу CDN, яка підтримує цю функцію, або налаштуйте вебсервер для виконання цієї операції. [Докладніше.](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "Скористайтесь [Ezoic Leap](https://pubdash.ezoic.com/speed) і ввімкніть налаштування `Optimize Fonts`, щоб автоматично застосувати функцію CSS `font-display`. Так користувачі бачитимуть текст, поки будуть завантажуватися веб-шрифти." @@ -3036,7 +3096,7 @@ "message": "Існує багато плагінів WordPress, які можуть допомогти [вбудувати важливі об'єкти](https://wordpress.org/plugins/search/critical+css/) або [відкласти менш важливі ресурси](https://wordpress.org/plugins/search/defer+css+javascript/). Зауважте, що така оптимізація може порушити функції теми або плагінів, тож доведеться змінити код." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "Виберіть легку тему (бажано блокову) і впровадьте кешування сторінок або статичні сайти. Вимкніть непотрібні плагіни, щоб зменшити навантаження на сервер. Рекомендуємо перейти на керований або виділений хостинг." }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "Спробуйте показувати витяги в списках дописів (через тег \"більше\"), зменшити кількість показаних публікацій на сторінці, розділити довгі дописи на кілька сторінок або скористатися плагіном, щоб відкласти завантаження коментарів."
diff --git a/front_end/third_party/lighthouse/locales/vi.json b/front_end/third_party/lighthouse/locales/vi.json index 86f7b13..3a10512 100644 --- a/front_end/third_party/lighthouse/locales/vi.json +++ b/front_end/third_party/lighthouse/locales/vi.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Báo cáo luồng người dùng Lighthouse" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "Bố cục thay đổi khi phần tử di chuyển mà không có sự tương tác của người dùng. [Hãy tìm hiểu nguyên nhân bố cục thay đổi](https://web.dev/articles/optimize-cls), chẳng hạn như phần tử được thêm, bị xoá hoặc phông chữ của phần tử thay đổi khi trang tải." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "Nguyên nhân làm thay đổi bố cục" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "Yêu cầu mạng đầu tiên là quan trọng nhất. Giảm độ trễ bằng cách tránh dùng đường liên kết chuyển hướng, đảm bảo máy chủ phản hồi nhanh và bật tính năng nén văn bản." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "Độ trễ khi yêu cầu tài liệu" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "Hãy cân nhắc đặt [font-display](https://developer.chrome.com/blog/font-display) thành swap hoặc optional để đảm bảo văn bản hiển thị nhất quán. Có thể tối ưu hoá swap hơn nữa để giảm thiểu thay đổi bố cục bằng thuộc tính [ghi đè chỉ số phông chữ](https://developer.chrome.com/blog/font-fallbacks)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "Hiển thị phông chữ" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "Bắt đầu kiểm tra giai đoạn dài nhất. [Có thể giảm thiểu sự chậm trễ](https://web.dev/articles/optimize-inp#optimize_interactions). Để giảm thời gian xử lý, [hãy tối ưu hoá hiệu suất của luồng chính](https://web.dev/articles/optimize-long-tasks), thường là JS." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "INP theo pha" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "Tối ưu hoá LCP (Nội dung lớn nhất hiển thị) bằng cách giúp trình duyệt [có thể tìm thấy](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) hình ảnh LCP dựa vào HTML ngay lập tức và [tránh tải từng phần](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "Phát hiện yêu cầu LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "Mỗi [giai đoạn có một chiến lược cải thiện cụ thể](https://web.dev/articles/optimize-lcp#lcp-breakdown). Tốt nhất là thời gian hiển thị LCP (Nội dung lớn nhất hiển thị) nên được dùng để tải các tài nguyên thay vì bị chậm trễ." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "LCP theo pha" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "Các yêu cầu đang chặn quá trình kết xuất ban đầu của trang, điều này có thể làm trễ LCP. [Việc hoãn hoặc dùng cùng dòng](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) có thể di chuyển các yêu cầu mạng này ra khỏi đường dẫn quan trọng." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "Yêu cầu chặn quá trình hiển thị" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "Nếu thấy chi phí của Tính toán lại kiểu vẫn cao, bạn có thể tối ưu hoá bộ chọn để giảm chi phí. [Tối ưu hoá bộ chọn](https://developer.chrome.com/docs/devtools/performance/selector-stats) có tỷ lệ phần trăm đường dẫn chậm và thời gian trôi qua đều cao. Bộ chọn đơn giản hơn, số lượng bộ chọn ít hơn, DOM nhỏ hơn và DOM nông hơn sẽ giúp giảm chi phí khớp." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "Hiệu suất của Bộ chọn CSS" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "Mã của bên thứ ba có thể tác động đáng kể đến hiệu suất tải. [Giảm và trì hoãn việc tải mã của bên thứ ba](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) để ưu tiên nội dung trên trang của bạn." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "Bên thứ ba" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "Khung nhìn của trang này chưa được tối ưu hoá cho thiết bị di động nên các tương tác nhấn có thể [bị chậm tới 300 mili giây](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)." + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "Khung nhìn chưa được tối ưu hoá cho thiết bị di động" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "Đối với nội dung động, hãy sử dụng [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) để giảm thiểu mức sử dụng CPU khi nội dung nằm ngoài màn hình." },
diff --git a/front_end/third_party/lighthouse/locales/zh-HK.json b/front_end/third_party/lighthouse/locales/zh-HK.json index 5410567..47b4961 100644 --- a/front_end/third_party/lighthouse/locales/zh-HK.json +++ b/front_end/third_party/lighthouse/locales/zh-HK.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse 用戶流程報告" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "當元素在無使用者互動下移動,就會出現版面配置轉移。請[調查版面配置轉移的原因](https://web.dev/articles/optimize-cls),例如隨頁面載入有元素加入、移除或字型變更。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "版面配置轉換起因" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "首個網絡要求至關重要。避免重新導向、確保伺服器快速回應,並啟用文字壓縮功能,都有助縮短延遲時間。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "文件要求延遲時間" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "建議將 [font-display](https://developer.chrome.com/blog/font-display) 設定為 swap 或 optional,確保文字能持續顯示。如要進一步優化 swap,你可[覆寫字型數據](https://developer.chrome.com/blog/font-fallbacks)來緩解版面配置轉換問題。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "字型顯示" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "由最長的階段開始調查,[盡量縮短延遲時間](https://web.dev/articles/optimize-inp#optimize_interactions)。要減少處理時長,建議[優化主要執行緒成本](https://web.dev/articles/optimize-long-tasks) (通常為 JavaScript)。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "按階段劃分 INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "如要提升 LCP,請讓 LCP 圖片立即[顯示](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay)在 HTML 中,[避免延遲載入](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP 要求探索" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "每個[階段都有特定的改善策略](https://web.dev/articles/optimize-lcp#lcp-breakdown)。理想狀態下,大部分的 LCP 時間應該用於載入資源,而非延遲。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "按階段劃分 LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "要求會封鎖頁面的初始輸出,可能會導致 LCP 延遲。[延遲或內嵌](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)可以將這些網絡要求移離關鍵路徑。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "輸出封鎖要求" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "如果「重新計算樣式」的成本仍然偏高,可以使用選取器優化功能降低成本。針對經過時間偏長及慢速路徑百分比偏高的[選取器作出優化](https://developer.chrome.com/docs/devtools/performance/selector-stats),例如簡化選取器和減少數量,以及縮減 DOM 大小和結構,都有助降低配對成本。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS 選取器成本" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "第三方程式碼可能會嚴重影響載入效能。建議[減少第三方程式碼和延遲載入](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/),優先載入網頁內容。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "第三方" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "頁面的檢視區並未針對流動裝置優化,因此輕按互動可能會[延遲最多 300 毫秒](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "檢視區並未針對流動裝置優化" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "當動畫內容在顯示螢幕之外時,您可以使用 [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) 標籤來節省 CPU 用量。" }, @@ -2658,55 +2718,55 @@ "message": "建議使用組件開發套件 (CDK) 中的 `BreakpointObserver` 公用程式來管理圖片中斷點。[瞭解詳情](https://material.angular.io/cdk/layout/overview)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "建議將 `GIF` 上載至可將其用作 HTML5 影片嵌入的伺服器。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "請考慮在網站上設定[含有 Convert 圖片樣式的 WebP 圖片格式](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "建議在 `Drupal` 設定延遲載入圖片。圖片的欄位格式設定工具支援 `lazy` 或 `eager`。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "如果 LCP 元素是以動態方式加入網頁,你應優化圖片來改善 LCP。[瞭解詳情](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "重新導向會導致頁面延遲載入。如果安裝 [Redirect](https://www.drupal.org/project/redirect) 模組,請檢查是否可以移除不必要的重新導向。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "建議使用[模組](https://www.drupal.org/project/critical_css)來內嵌重要的 CSS 和 JavaScipt,並為不重要的 CSS 或 JavaScript 使用延遲屬性。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "使用一個或更多 `Drupal` 快取模組 (例如 `Internal Page Cache`、`Internal Dynamic Page Cache` 和 `BigPipe`) 來卸載流量。將上述模組配搭 CDN 使用,可進一步縮短回應時間。代管伺服器應該採用 PHP OPcache。建議你使用 Redis 或 Memcache 等記憶體快取,縮短資料庫查詢時間。最後,請使用高效的主題、模組和速度更快的伺服器,縮短伺服器回應時間。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "建議使用[回應式圖片樣式](https://www.drupal.org/documentation/modules/responsive_image)來縮減頁面上載入圖片的大小。如果你使用 `Views` 在頁面上顯示多個內容項目,建議透過分頁來控制特定頁面上顯示的內容項目數量。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "請確保你已啟用「管理 » 設定 » 開發」頁面上的「彙整 CSS 檔案」。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "請確保你已啟用「管理 » 設定 » 開發」頁面上的「彙整 JavaScript 檔案」。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "建議移除未使用的 CSS 規則,並只將需要的 `Drupal` 程式庫附加至相關頁面或頁面內的組件。詳情請參閱[`Drupal`相關文件](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)。如要找出會新增多餘 CSS 的附加程式庫,請嘗試在 Chrome 開發人員工具中執行[程式碼覆蓋率](https://developer.chrome.com/docs/devtools/coverage)。你可在 `Drupal` 網站上停用 CSS 彙整時,透過樣式表網址找出有問題的主題/模組。請留意清單中包含很多樣式表,且程式碼覆蓋率中有大量紅色標示的主題/模組。主題/模組應該只附加網頁上實際使用的樣式表程式庫。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "建議移除未使用的 JavaScipt 資產,並只將需要的 `Drupal` 程式庫附加至相關頁面或頁面內的組件。詳情請參閱 [Drupal 文件](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)。如要找出會新增多餘 JavaScript 的附加程式庫,請嘗試在 Chrome 開發人員工具中執行[程式碼覆蓋率](https://developer.chrome.com/docs/devtools/coverage)。你可在 `Drupal` 網站上停用 JavaScript 彙整時,透過指令碼網址找出有問題的主題/模組。請留意清單中包含很多指令碼,且程式碼覆蓋率中有大量紅色標示的主題/模組。主題/模組應該只附加網頁上實際使用的指令碼程式庫。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "在「管理 » 設定 » 開發」頁面中設定「瀏覽器和 Proxy 快取最大期限」。瞭解有關 [`Drupal` 快取和優化效能](https://www.drupal.org/docs/8/api/cache-api/cache-api)的詳情。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "建議使用可自動優化並縮減透過網站上載的圖片大小,同時能維持品質的[模組](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search)。此外,請確保網站上所有輸出的圖片都使用 `Drupal` 內置的[回應式圖片樣式](https://www.drupal.org/documentation/modules/responsive_image)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "你可以透過安裝和設定為用戶代理程式資源提示提供設施的[模組](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search),新增 `Preconnect` 或 `dns-prefetch` 資源提示。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "確保使用 `Drupal` 內置的[回應式圖片樣式](https://www.drupal.org/documentation/modules/responsive_image)。由檢視模式、檢視畫面或透過 WYSIWYG 編輯器上載的圖片輸出圖片欄位時,請使用回應式圖片樣式。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "文字資源應經過 (gzip、deflate 或 brotli) 壓縮,以將網絡字節總數減至最少。建議使用原生支援此功能的 CDN,或設定網絡伺服器執行此操作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "使用 [Ezoic Leap](https://pubdash.ezoic.com/speed) 並啟用 `Optimize Fonts` 以自動利用 `font-display` CSS 功能,確保系統在載入網站頁字型時使用者可以看到文字。" @@ -3036,7 +3096,7 @@ "message": "部分 WordPress 外掛程式可助您[內嵌重要資產](https://wordpress.org/plugins/search/critical+css/)或[延後載入較不重要的資源](https://wordpress.org/plugins/search/defer+css+javascript/)。請注意,這些外掛程式的優化設定可能影響主題或外掛程式的功能,因此您可能需要變更程式碼。" }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "選擇輕量主題 (建議使用區塊主題),並執行全頁快取或靜態網站解決方案。停用不必要的外掛程式可以減少伺服器用量。建議將代管系統升級為受管理或專屬服務。" }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "建議在文章清單中顯示摘錄 (例如加入更多標籤)、減少特定頁面顯示的文章數量、將較長的文章分為多個頁面,或使用可延遲載入留言的外掛程式。"
diff --git a/front_end/third_party/lighthouse/locales/zh-TW.json b/front_end/third_party/lighthouse/locales/zh-TW.json index c7335f8b..7fe3d69 100644 --- a/front_end/third_party/lighthouse/locales/zh-TW.json +++ b/front_end/third_party/lighthouse/locales/zh-TW.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse 使用者流程報表" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "版面配置位移是指元素在使用者未進行任何互動時移動。[調查版面配置位移的原因](https://web.dev/articles/optimize-cls),例如在網頁載入期間新增、移除元素,或變更字型。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "版面配置位移主因" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "第一個網路要求最為重要。避免重新導向、確保伺服器快速回應,並啟用文字壓縮功能,即可縮短延遲時間。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "文件要求延遲" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "建議將 [font-display](https://developer.chrome.com/blog/font-display) 設為 swap 或 optional,確保文字始終可見。swap 可透過[字型指標覆寫](https://developer.chrome.com/blog/font-fallbacks),進一步減少版面配置位移。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "字型顯示" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "從最長的階段開始調查,[可盡量縮短延遲時間](https://web.dev/articles/optimize-inp#optimize_interactions)。如要縮短處理時間,請[盡量降低主執行緒的成本](https://web.dev/articles/optimize-long-tasks),通常是針對 JavaScript。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "依階段顯示 INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "如要提升 LCP,請讓 LCP 圖片立即[顯示](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay)在 HTML 中,[避免延遲載入](https://web.dev/articles/lcp-lazy-loading)" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "LCP 要求探索" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "每個[階段都有特定改善策略](https://web.dev/articles/optimize-lcp#lcp-breakdown)。理想狀態下,大部分的 LCP 時間應該用於載入資源,而非延遲。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "依階段顯示 LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "要求會阻礙網頁的初始轉譯作業,進而導致 LCP 延遲。你可以透過[延後或內嵌](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)的方式,將這些網路要求移出關鍵路徑。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "轉譯封鎖要求" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "如果「重新計算樣式」的成本仍然偏高,可以使用選取器最佳化功能降低成本。針對經過時間偏長及慢速路徑百分比偏高的[選取器進行最佳化](https://developer.chrome.com/docs/devtools/performance/selector-stats)。選取器越簡單、數量越少,DOM 的規模越小、結構越單純,越能降低比對成本。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS 選取器成本" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "第三方程式碼可能會嚴重影響載入效能。建議[減少第三方程式碼並延遲載入](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/),優先載入網頁內容。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "第三方" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "網頁的可視區域並未針對行動裝置最佳化,因此輕觸互動可能會[延遲最多 300 毫秒](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "可視區域未針對行動裝置完成最佳化調整" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "你可以對動畫內容使用 [`amp-anim`](https://amp.dev/documentation/components/amp-anim/),這樣一來,畫面外的內容即會盡量節省 CPU 用量。" }, @@ -2658,55 +2718,55 @@ "message": "建議你使用元件開發套件 (CDK) 中的 `BreakpointObserver` 公用程式來管理圖片中斷點。[瞭解詳情](https://material.angular.io/cdk/layout/overview)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "建議你採用能將上傳的 `GIF` 以 HTML5 影片形式嵌入的服務。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "請考慮在網站上設定[含有 Convert 圖片樣式的 WebP 圖片格式](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "建議你在 `Drupal` 中設定延遲載入圖片。圖片的欄位格式設定工具支援 `lazy` 或 `eager`。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "如果 LCP 元素是以動態方式新增到網頁,必須完成圖片最佳化才能提升 LCP。[瞭解詳情](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "重新導向會導致網頁載入的延遲時間更長。如果已安裝 [Redirect](https://www.drupal.org/project/redirect) 模組,請檢查是否可移除非必要的重新導向。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "建議你使用[模組](https://www.drupal.org/project/critical_css)來內嵌重要的 CSS 和 JavaScript,並針對重要性較低的 CSS 或 JavaScript 使用延遲屬性。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "使用 `Internal Page Cache`、`Internal Dynamic Page Cache` 和 `BigPipe` 等一或多個 `Drupal` 快取模組卸載流量。將上述模組搭配 CDN 使用,可進一步縮短回應時間。代管伺服器應採用 PHP OPcache。建議你使用 Redis 或 Memcache 等記憶體快取,縮短資料庫查詢時間。最後,請使用效能良好的主題、模組和速度更快的伺服器,縮短伺服器回應時間。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "建議你使用[回應式圖片樣式](https://www.drupal.org/documentation/modules/responsive_image)來縮減網頁載入圖片的大小。如果你使用 `Views` 在網頁上顯示多個內容項目,建議你實作分頁來限制特定網頁顯示的內容項目數量。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "確認你已啟用「Administration」»「Configuration」»「Development」頁面上的「Aggregate CSS files」。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "確認你已啟用「Administration」»「Configuration」»「Development」頁面上的「Aggregate JavaScript files」。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "建議你移除未使用的 CSS 規則,並僅將必要的 `Drupal` 程式庫附加至相關網頁或網頁上的元件。詳情請參閱 [`Drupal` 說明文件](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)。如要找出會新增多餘 CSS 的附加程式庫,請前往 Chrome 開發人員工具執行[程式碼涵蓋率](https://developer.chrome.com/docs/devtools/coverage)功能。在 `Drupal` 網站上停用 CSS 匯總功能後,你可以透過樣式表網址找出有問題的主題/模組。如果在主題/模組的清單中,有許多樣式表的程式碼涵蓋率大量標示為紅色,請特別留意。主題/模組只應附加網頁實際使用的樣式表程式庫。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "建議你移除未使用的 JavaScript 資產,並僅將必要的 `Drupal` 程式庫附加至相關網頁或網頁上的元件。詳情請參閱 [Drupal 說明文件](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)。如要找出會新增多餘 JavaScript 的附加程式庫,請前往 Chrome 開發人員工具執行[程式碼涵蓋率](https://developer.chrome.com/docs/devtools/coverage)功能。在 `Drupal` 網站上停用 JavaScript 匯總功能後,你可以透過指令碼網址找出有問題的主題/模組。如果在主題/模組的清單中,有許多指令碼的程式碼涵蓋率大量標示為紅色,請特別留意。主題/模組只應附加網頁實際使用的指令碼程式庫。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "在「Administration」»「Configuration」»「Development」頁面上設定「Browser and proxy cache maximum age」。瞭解 [`Drupal` 快取及如何提高效能](https://www.drupal.org/docs/8/api/cache-api/cache-api)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "如果圖片是透過網站上傳,建議你使用可自動最佳化及縮減圖片大小,而且不會影響畫質的[模組](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search)。此外,請確保網站上所有轉譯的圖片都採用 `Drupal` 內建的[回應式圖片樣式](https://www.drupal.org/documentation/modules/responsive_image)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "如要新增 `Preconnect` 或 `dns-prefetch` 資源提示,可以安裝並設定[模組](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search)來執行使用者代理程式資源提示的功能。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "確認你已採用 `Drupal` 內建的[回應式圖片樣式](https://www.drupal.org/documentation/modules/responsive_image)。透過檢視模式、檢視畫面或透過 WYSIWYG 編輯器上傳的圖片轉譯圖片欄位時,請採用回應式圖片樣式。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "提供的文字資源應經過 (gzip、deflate 或 brotli) 壓縮,盡量減少網路傳輸資料量。建議你使用原生支援這項功能的 CDN,或是設定網路伺服器來執行這項作業。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "使用 [Ezoic Leap](https://pubdash.ezoic.com/speed) 並啟用 `Optimize Fonts` 以自動利用 `font-display` CSS 功能,確保系統在載入網站字型時使用者可以到文字。" @@ -3036,7 +3096,7 @@ "message": "有些 WordPress 外掛程式能協助你[內嵌重要的素材資源](https://wordpress.org/plugins/search/critical+css/)或[延後載入較不重要的資源](https://wordpress.org/plugins/search/defer+css+javascript/)。請注意,這些外掛程式的最佳化設定可能會對現有主題或外掛程式的功能有不良影響,因此你可能需要變更程式碼。" }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "選擇輕量主題 (最好是區塊主題),並實作全頁快取或靜態網站解決方案。停用不必要的外掛程式,盡量減少伺服器負擔。建議你將代管作業升級為代管或專屬服務。" }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "建議你在文章清單中顯示摘錄 (例如加入更多標記)、減少特定頁面顯示的文章數量、將較長的文章分為多個頁面,或使用可延遲載入留言的外掛程式。"
diff --git a/front_end/third_party/lighthouse/locales/zh.json b/front_end/third_party/lighthouse/locales/zh.json index 74586d3..e6d9e31 100644 --- a/front_end/third_party/lighthouse/locales/zh.json +++ b/front_end/third_party/lighthouse/locales/zh.json
@@ -2621,6 +2621,66 @@ "flow-report/src/i18n/ui-strings.js | title": { "message": "Lighthouse 用户流报告" }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": { + "message": "当元素在没有任何用户互动的情况下移动时,就会发生布局偏移。[调查布局偏移的原因](https://web.dev/articles/optimize-cls),例如在网页加载时添加、移除元素或元素字体发生了变化。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": { + "message": "布局偏移原因" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": { + "message": "您的第一个网络请求最为重要。您可通过避免重定向、确保服务器快速响应以及启用文本压缩,缩短其延迟时间。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": { + "message": "文档请求延迟" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": { + "message": "建议您将 [font-display](https://developer.chrome.com/blog/font-display) 设为 swap 或 optional,确保文本始终可见。通过[替换字体指标](https://developer.chrome.com/blog/font-fallbacks)可进一步优化 swap,缓解布局偏移。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": { + "message": "字体显示" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": { + "message": "请从持续时间最长的阶段开始检查。[几处延迟可降低到最小](https://web.dev/articles/optimize-inp#optimize_interactions)。如需缩短处理时长,请[优化主线程(通常是 JS)成本](https://web.dev/articles/optimize-long-tasks)。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": { + "message": "按阶段划分的 INP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": { + "message": "使 LCP 图像能够立即从 HTML 中[被发现](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay),并[避免延迟加载](https://web.dev/articles/lcp-lazy-loading),以此优化 LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": { + "message": "发现 LCP 请求" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": { + "message": "每个[阶段都有特定的改进策略](https://web.dev/articles/optimize-lcp#lcp-breakdown)。理想情况下,大部分 LCP 时间应该花在加载资源上,而不是浪费在延迟上。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": { + "message": "按阶段划分的 LCP" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": { + "message": "请求正在屏蔽网页的初始渲染,这可能会延迟 LCP。[延迟或内嵌](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/)可以将这些网络请求移出关键路径。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": { + "message": "渲染屏蔽请求" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": { + "message": "如果“重新计算样式”的成本仍然很高,优化选择器可以降低此成本。请对用时较长及慢路径所占百分比较高的[选择器进行优化](https://developer.chrome.com/docs/devtools/performance/selector-stats)。选择器越简单、数量越少,DOM 的规模越小、结构越简单,越能降低匹配成本。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": { + "message": "CSS 选择器成本" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": { + "message": "第三方代码可能会显著影响加载性能。[请减少并推迟加载第三方代码](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/),以优先渲染您的网页内容。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": { + "message": "第三方" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": { + "message": "此网页的视口未针对移动设备进行优化,因此点按互动可能会[延迟最多 300 毫秒](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/)。" + }, + "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": { + "message": "视口未针对移动设备进行优化" + }, "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": { "message": "对于动画内容,请使用 [`amp-anim`](https://amp.dev/documentation/components/amp-anim/) 尽量减少当内容在屏幕外时的 CPU 使用量。" }, @@ -2658,55 +2718,55 @@ "message": "您不妨使用 Component Dev Kit (CDK) 中的 `BreakpointObserver` 实用程序管理映像断点。[了解详情](https://material.angular.io/cdk/layout/overview)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": { - "message": "Consider uploading your `GIF` to a service which will make it available to embed as an HTML5 video." + "message": "建议将 `GIF` 上传到可让其作为 HTML5 视频嵌入的服务。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": { "message": "不妨考虑在您的网站上配置[含 Convert 图片样式的 WebP 图片格式](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": { - "message": "Consider configuring lazy load images in `Drupal`. The field formatters for images support `lazy` or `eager`." + "message": "建议在 `Drupal` 中配置延迟加载图片。图片的字段格式设置工具支持 `lazy` 或 `eager`。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": { - "message": "If the LCP element is dynamically added to the page, you should optimize the image in order to improve LCP. [Learn more](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)." + "message": "如果向网页中动态添加 LCP 元素,您应优化图片以缩短 LCP 用时。[了解详情](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": { - "message": "Redirects introduce additional delays before the page can be loaded. If the [Redirect](https://www.drupal.org/project/redirect) module is installed, review if unnecessary redirects can be removed. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "重定向会在网页可加载前引入更多延迟。如果安装了 [Redirect](https://www.drupal.org/project/redirect) 模块,请检查是否可以移除不必要的重定向。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": { - "message": "Consider using [a module](https://www.drupal.org/project/critical_css) to inline critical CSS and JavaScript, and use the defer attribute for non-critical CSS or JavaScript." + "message": "建议使用[模块](https://www.drupal.org/project/critical_css)内嵌关键的 CSS 和 JavaScript,并为非关键的 CSS 或 JavaScript 使用 defer 属性。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": { - "message": "Offload traffic with one or more `Drupal` caching modules such as `Internal Page Cache`, `Internal Dynamic Page Cache`, and `BigPipe`. Couple these with a CDN to further improve response time. Your hosting servers should make use of PHP OPcache. Consider using memory-caching such as Redis or Memcached to reduce database query times. Lastly use performant themes, modules, and faster servers to lower server response time." + "message": "使用一个或多个 `Drupal` 缓存模块分流,例如 `Internal Page Cache`、`Internal Dynamic Page Cache` 和 `BigPipe`。将这些模块与 CDN 结合使用,以进一步缩短响应时间。您的托管服务器应使用 PHP OPcache。建议使用内存缓存(例如 Redis 或 Memcache)来缩短数据库查询时间。最后,使用高性能主题、模块和更快的服务器,以缩短服务器响应时间。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": { - "message": "Consider using [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) to reduce the size of images loaded on your page. If you are using `Views` to show multiple content items on a page, consider implementing pagination to limit the number of content items shown on a given page." + "message": "建议使用[自适应图片样式](https://www.drupal.org/documentation/modules/responsive_image)缩减在您网页上加载的图片的大小。如果您使用 `Views` 在网页上显示多个内容项,建议使用分页来限制特定网页上显示的内容项数量。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": { - "message": "Ensure you have enabled \"Aggregate CSS files\" in the \"Administration » Configuration » Development\" page." + "message": "确保您已在“管理 » 配置 » 开发”页面中启用了“聚合 CSS 文件”。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": { - "message": "Ensure you have enabled \"Aggregate JavaScript files\" in the \"Administration » Configuration » Development\" page." + "message": "确保您已在“管理 » 配置 » 开发”页面中启用了“聚合 JavaScript 文件”。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": { - "message": "Consider removing unused CSS rules and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [`Drupal` documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous CSS, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the stylesheet when CSS aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many stylesheets in the list which have a lot of red in code coverage. A theme/module should only attach a stylesheet library if it is actually used on the page." + "message": "建议移除未使用的 CSS 规则,并且仅将所需的 `Drupal` 库附加到相关网页或网页中的组件。如需了解详情,请参阅 [`Drupal` 文档](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)。若要找出添加无关 CSS 的附加库,请尝试在 Chrome 开发者工具中运行[代码覆盖率](https://developer.chrome.com/docs/devtools/coverage)测试。在 `Drupal` 网站中停用 CSS 聚合后,您可根据样式表网址找出导致问题的主题/模块。请留意列表中哪些主题/模块有大量样式表的代码覆盖率偏红。主题/模块仅应附加网页中确实用到的样式表库。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": { - "message": "Consider removing unused JavaScript assets and only attach the needed `Drupal` libraries to the relevant page or component in a page. See the [Drupal documentation](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developer.chrome.com/docs/devtools/coverage) in Chrome DevTools. You can identify the theme/module responsible from the URL of the script when JavaScript aggregation is disabled in your `Drupal` site. Look out for themes/modules that have many scripts in the list which have a lot of red in code coverage. A theme/module should only attach a script library if it is actually used on the page." + "message": "建议移除未使用的 JavaScript 资源,并且仅将所需的 `Drupal` 库附加到相关网页或网页中的组件。如需了解详情,请参阅 [Drupal 文档](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define)。若要找出添加无关 JavaScript 的附加库,请尝试在 Chrome 开发者工具中运行[代码覆盖率](https://developer.chrome.com/docs/devtools/coverage)测试。在 `Drupal` 网站中停用 JavaScript 聚合后,您可根据脚本网址找出导致问题的主题/模块。请留意列表中哪些主题/模块有大量脚本的代码覆盖率偏红。主题/模块仅应附加网页中确实用到的脚本库。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": { - "message": "Set the \"Browser and proxy cache maximum age\" in the \"Administration » Configuration » Development\" page. Read about [`Drupal` cache and optimizing for performance](https://www.drupal.org/docs/8/api/cache-api/cache-api)." + "message": "在“管理 » 配置 » 开发”页面中设置“浏览器和代理缓存最长时限”。请参阅 [`Drupal` 缓存和性能优化](https://www.drupal.org/docs/8/api/cache-api/cache-api)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": { - "message": "Consider using [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search) that automatically optimizes and reduces the size of images uploaded through the site while retaining quality. Also, ensure you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal` for all images rendered on the site." + "message": "建议使用[模块](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search)自动优化通过网站上传的图片,该模块可以在保留图片质量的同时缩减图片大小。此外,请确保网站上渲染的所有图片都使用 `Drupal` 提供的原生[自适应图片样式](https://www.drupal.org/documentation/modules/responsive_image)。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": { - "message": "`Preconnect` or `dns-prefetch` resource hints can be added by installing and configuring [a module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search) that provides facilities for user agent resource hints." + "message": "您可以通过安装和配置一个能协助创建用户代理资源提示的[模块](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search),来添加 `Preconnect` 或 `dns-prefetch` 资源提示。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": { - "message": "Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) provided from `Drupal`. Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor." + "message": "确保您使用的是 `Drupal` 提供的原生[自适应图片样式](https://www.drupal.org/documentation/modules/responsive_image)。通过视图模式、视图或借助 WYSIWYG 编辑器上传的图片渲染图片字段时,请使用自适应图片样式。" }, "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. Consider using a CDN that natively supports this, or configure the web server to perform this operation. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "文本资源应以压缩形式(gzip、deflate 或 brotli)提供,以最大限度地减少网络活动消耗的字节总数。建议使用原生支持此功能的 CDN,或配置网络服务器来执行此操作。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。" }, "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": { "message": "您只需使用 [Ezoic Leap](https://pubdash.ezoic.com/speed) 并启用“`Optimize Fonts`”设置,即可自动利用 `font-display` CSS 功能来确保用户在网页字体加载期间能看到文字。" @@ -3036,7 +3096,7 @@ "message": "有很多 WordPress 插件可帮助您[内嵌重要资源](https://wordpress.org/plugins/search/critical+css/)或[推迟加载不太重要的资源](https://wordpress.org/plugins/search/defer+css+javascript/)。请注意,这些插件提供的优化可能会导致您的主题背景或插件的功能中断,因此您可能需要更改代码。" }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": { - "message": "Choose a lightweight theme (ideally a block theme) and implement full-page caching or a static site solution. Disable unnecessary plugins to minimize server overhead. Consider upgrading your hosting to managed or dedicated service." + "message": "选择一个轻量级主题(最好是区块主题),并实现全页缓存或静态网站解决方案。停用不必要的插件,以尽量减少服务器开销。建议将托管服务升级为代管式服务或专用服务。" }, "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": { "message": "建议您在博文列表中显示摘录(例如,通过“更多”标签)、减少给定页面上显示的博文的数量、将您的长博文拆分成多个页面或者使用插件延迟加载评论。"
diff --git a/front_end/third_party/lighthouse/report-assets/report-generator.mjs b/front_end/third_party/lighthouse/report-assets/report-generator.mjs index a1549ea..ebcb1d3 100644 --- a/front_end/third_party/lighthouse/report-assets/report-generator.mjs +++ b/front_end/third_party/lighthouse/report-assets/report-generator.mjs
@@ -35,7 +35,7 @@ ReportGenerator: () => ReportGenerator }); - // replace-modules:/Users/asraine/lighthouse/report/generator/flow-report-assets.js + // replace-modules:/Users/asraine/lighthouse-pristine/report/generator/flow-report-assets.js var flowReportAssets = {}; // report/generator/report-assets.js
diff --git a/test/e2e/lighthouse/navigation_test.ts b/test/e2e/lighthouse/navigation_test.ts index fdf4658..3540667 100644 --- a/test/e2e/lighthouse/navigation_test.ts +++ b/test/e2e/lighthouse/navigation_test.ts
@@ -94,7 +94,7 @@ // 1 refresh after auditing to reset state assert.strictEqual(numNavigations, 5); - assert.strictEqual(lhr.lighthouseVersion, '12.2.2'); + assert.strictEqual(lhr.lighthouseVersion, '12.3.0'); assert.match(lhr.finalUrl, /^https:\/\/localhost:[0-9]+\/test\/e2e\/resources\/lighthouse\/hello.html/); assert.strictEqual(lhr.configSettings.throttlingMethod, 'simulate'); @@ -120,7 +120,7 @@ }); const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr, ['max-potential-fid']); - assert.strictEqual(auditResults.length, 155); + assert.strictEqual(auditResults.length, 157); assert.deepStrictEqual(erroredAudits, []); assert.deepStrictEqual(failedAudits.map(audit => audit.id), [ 'document-title', @@ -198,7 +198,7 @@ ]; const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr, flakyAudits); - assert.strictEqual(auditResults.length, 155); + assert.strictEqual(auditResults.length, 157); assert.deepStrictEqual(erroredAudits, []); assert.deepStrictEqual(failedAudits.map(audit => audit.id), [ 'document-title',